summaryrefslogtreecommitdiff
path: root/libavformat/rtsp.h
Commit message (Collapse)AuthorAge
* rtsp: Parse SSRC attributes in the SDPMartin Storsjö2016-05-11
| | | | | | | | | | | | | When feeding input RTP packets to the depacketizer via custom IO, it needs to pick the right stream using the payload type for RTP packets, and using the SSRC for RTCP packets. If the first packet is an RTCP packet, we don't (currently) know the SSRC yet and thus can't pick the right RTP depacketizer to handle it. By parsing the SSRC attribute in the SDP, we can map initial RTCP packets to the right stream. Signed-off-by: Martin Storsjö <martin@martin.st>
* urlprotocol: receive a list of protocols from the callerAnton Khirnov2016-02-22
| | | | | This way, the decisions about which protocols are available for use in any given situations can be delegated to the caller.
* rtsp: Log getaddrinfo failuresLuca Barbato2015-11-25
| | | | And forward the logging contexts when needed.
* rtsp: Add a buffer_size optionLuca Barbato2015-04-01
| | | | | | And forward it to rtp and udp. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* rtsp: parse lang attribute in SDPGilles Chanteperdrix2015-02-21
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Support tls-encapsulated RTSPLuca Barbato2014-10-10
|
* rtspenc: Make sure BYE packets are sent before TEARDOWNMartin Storsjö2013-11-01
| | | | | | | Also make sure the BYE packets are sent at all when using TCP interleaved transport. Signed-off-by: Martin Storsjö <martin@martin.st>
* sdp: Add an option for sending RTCP packets to the source of the last packetsMartin Storsjö2013-08-14
| | | | | | | | | | | | | | | | | | | An SDP description normally only contains the target IP address and port for the packets. This means that we don't really have any clue where to send the RTCP RR packets - previously they're sent to the destination IP written in the SDP (at the same port), which rarely is the actual peer. And if the source for the packets is on a different port than the destination, it's never correct. With a new option, we can choose to send the packets to the address that the latest packet on each socket arrived from. --- Some may even argue that this should be the default - perhaps, but I'd rather keep it optional at first. Additionally, I'm not sure if sending RTCP RR directly back to the source is desireable for e.g. multicast. Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Support RFC4570 (source specific multicast) more properly.Ed Torbett2013-07-29
| | | | | | | Add support for domain names, for multiple source addresses, for exclusions, and for session level specification of addresses. Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Support multicast source filters (RFC 4570)Ed Torbett2013-07-19
| | | | | | | | | | This supports inclusion of one single IP address for now, at the media level. Specifying the filter at the session level (instead of at the media level), multiple source addresses, exclusion, or using FQDNs instead of plain IP addresses is not supported (yet at least). Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Support decryption of SRTP signalled via RFC 4568 (SDES)Martin Storsjö2013-01-15
| | | | | | | | | | | | | | This only takes care of decrypting incoming packets; the outgoing RTCP packets are not encrypted. This is enough for some use cases, and signalling crypto keys for use with outgoing RTCP packets doesn't fit as simply into the API. If the SDP demuxer is hooked up with custom IO, the return packets can be encrypted e.g. via the SRTP protocol. If the SRTP keys aren't available within the SDP, the decryption can be handled externally as well (when using custom IO). Signed-off-by: Martin Storsjö <martin@martin.st>
* rtpdec: Support sending RTCP feedback packetsMartin Storsjö2013-01-08
| | | | | | | | | | | | | | | | | | | | | This sends NACK for missed packets and PLI (picture loss indication) if a depacketizer indicates that it needs a new keyframe, according to RFC 4585. This is only enabled if the SDP indicated that feedback is supported (via the AVPF or SAVPF profile names). The feedback packets are throttled to a certain maximum interval (currently 250 ms) to make sure the feedback packets don't eat up too much bandwidth (which might be counterproductive). The RFC specifies a more elaborate feedback packet scheduling. The feedback packets are currently sent independently from normal RTCP RR packets, which is not totally spec compliant, but works fine in the environments I've tested it in. (RFC 5506 allows this, but requires a SDP attribute for enabling it.) Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Add support for depacketizing RTP data via custom IOMartin Storsjö2013-01-03
| | | | | | | | | | | | | | | | | | To use this, set sdpflags=custom_io to the sdp demuxer. During the avformat_open_input call, the SDP is read from the AVFormatContext AVIOContext (ctx->pb) - after the avformat_open_input call, during the av_read_frame() calls, the same ctx->pb is used for reading packets (and sending back RTCP RR packets). Normally, one would use this with a read-only AVIOContext for the SDP during the avformat_open_input call, then close that one and replace it with a read-write one for the packets after the avformat_open_input call has returned. This allows using the RTP depacketizers as "pure" demuxers, without having them tied to the libavformat network IO. Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Update a comment to the current filename schemeMartin Storsjö2012-10-22
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Allow setting the reordering buffer size via an AVOptionMartin Storsjö2012-10-18
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Vertically align a constant definitionMartin Storsjö2012-10-18
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Support mpegts in raw udp packetsMartin Storsjö2012-08-09
| | | | | | | This is basically the same way as mpegts packets are parsed in rtpdec.c. Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Support receiving plain data over UDP without any RTP encapsulationMartin Storsjö2012-08-09
| | | | | | | EvoStream Media Server can serve data in this format, and VLC/live555 already supports it. Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Add listen modeJordi Ortiz2012-07-10
| | | | | | | This makes the RTSP demuxer act as a server, listening for an incoming connection. Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Make rtsp_open_transport_ctx() non-staticJordi Ortiz2012-07-10
| | | | | | This is required for the upcoming RTSP listen mode. Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Parse the mode=receive/record parameter in transport linesJordi Ortiz2012-07-10
| | | | | | | We need to support the nonstandard mode=receive, for compatibility with older libavformat clients. Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Add content-type message header parsingJordi Ortiz2012-05-08
| | | | Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* rtsp: Allow specifying the UDP port range via AVOptionsMartin Storsjö2012-01-22
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Remove extern declarations for variables that don't existMartin Storsjö2012-01-21
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* doxygen: misc consistency, spelling and wording fixesDiego Biurrun2011-12-12
|
* rtsp: add allowed_media_types optionJohn Brooks2011-11-02
| | | | | | | | Streams from RTSP or SDP that do not match an allowed type will be skipped entirely, which allows video-only or audio-only streaming from servers that provide both. Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Remove the separate filter_source variableMartin Storsjö2011-10-17
| | | | | | Read it as a flag from the flags field instead. Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Accept options via private avoptions instead of URL optionsMartin Storsjö2011-10-17
| | | | | | | | | | | | Eventually, the old way of passing options by adding stuff to the URL can be dropped. This avoids having to tamper with the user-specified URL to pass options on the transport mode. This also works better with redirects, since the options don't need to be parsed out from the URL. Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Merge the AVOption listsMartin Storsjö2011-10-17
| | | | | | | | This eases adding options that are common for both. The AV_OPT_FLAG_EN/DECODING_PARAM still indicates whether they belong to the muxer or demuxer. Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: Parse the x-Accept-Dynamic-Rate headerMartin Storsjö2011-10-12
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rtsp: remove disabled codeDiego Biurrun2011-07-18
|
* doxygen: Make sure parameter names match between .c and .h files.Diego Biurrun2011-07-14
|
* RTSP: Doxygen comment cleanupDiego Biurrun2011-07-03
| | | | | Do not use Doxygen for comments that apply to specific implementation details; merge some duplicated Doxygen comment blocks.
* rtspenc: Add RTP muxer optionsMartin Storsjö2011-06-10
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rtspdec: add initial_pause private option.Anton Khirnov2011-05-27
| | | | Deprecate corresponding AVFormatParameters field.
* rtsp: Only do keepalive using GET_PARAMETER if the server supports itMartin Storsjö2011-05-11
| | | | | | | | | | | | | | | | This is more like what VLC does. If the server doesn't mention supporting GET_PARAMETER in response to an OPTIONS request, VLC doesn't send any keepalive requests at all. After this patch, libavformat will still send OPTIONS keepalives if GET_PARAMETER isn't explicitly said to be supported. Some RTSP cameras don't support GET_PARAMETER, and will close the connection if this is sent as keepalive request (but support OPTIONS just fine, but probably don't need any keepalive at all). Some other cameras don't support using OPTIONS as keepalive, but require GET_PARAMETER instead. Signed-off-by: Martin Storsjö <martin@martin.st>
* Replace FFmpeg with Libav in licence headersMans Rullgard2011-03-19
| | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* avio: rename ByteIOContext to AVIOContext.Anton Khirnov2011-02-20
| | | | Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* os: replace select with pollLuca Barbato2011-01-28
| | | | | Select has limitations on the fd values it could accept and silently breaks when it is reached.
* Make ff_rtsp_send_cmd_with_content_async static to rtsp.c.Diego Elio Pettenò2011-01-25
| | | | Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
* rtspdec: Retry with TCP if UDP failedMartin Storsjö2011-01-24
| | | | Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
* rtsp: Split out a function undoing the setup made by ff_rtsp_make_setup_requestMartin Storsjo2011-01-24
| | | | Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
* rtsp: Make make_setup_request a nonstatic functionMartin Storsjo2011-01-24
| | | | Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
* rtsp: Allow requesting of filtering of source packetsMartin Storsjö2011-01-06
| | | | | | | | | | | | | | | | | If filtered, only packets from the right source address and port are received. To test, play back e.g. some mpeg4 video RTSP stream (where the video stream is the first stream in the presentation) over UDP. While receiving this stream, send another stream to the same port: ffmpeg -re -i <whatever> -vcodec mpeg4 -an -f rtp rtp://127.0.0.1:5000?localport=1234 Normally, the RTSP playback reports lots of errors at this point. If the RTSP stream has the ?filter_src option enabled, these interferring packets are ignored. Originally committed as revision 26246 to svn://svn.ffmpeg.org/ffmpeg/trunk
* rtsp: Store the Content-Base header value straight to the targetMartin Storsjö2011-01-02
| | | | | | | This avoids having a large temporary buffer in the struct used for storing the rtsp reply headers. Originally committed as revision 26192 to svn://svn.ffmpeg.org/ffmpeg/trunk
* rtsp: Pass the method name to ff_rtsp_parse_lineMartin Storsjö2011-01-02
| | | | Originally committed as revision 26191 to svn://svn.ffmpeg.org/ffmpeg/trunk
* rtsp: Pass RTSPState to ff_rtsp_parse_line, instead of HTTPAuthStateMartin Storsjö2011-01-02
| | | | | | | | This allows ff_rtsp_parse_line to do more changes directly in RTSPState when parsing the reply, instead of having to store large amounts of temporary data in RTSPMessageHeader. Originally committed as revision 26190 to svn://svn.ffmpeg.org/ffmpeg/trunk
* rtsp: Add a method parameter to ff_rtsp_read_replyMartin Storsjö2011-01-02
| | | | Originally committed as revision 26189 to svn://svn.ffmpeg.org/ffmpeg/trunk
* rtsp: Parse and use the Content-Base reply header, if presentMartin Storsjö2010-11-15
| | | | | | This fixes playing RTSP urls with query parameters. Originally committed as revision 25755 to svn://svn.ffmpeg.org/ffmpeg/trunk
* rtsp: Split out the RTSP demuxer functions to a separate, new fileMartin Storsjö2010-10-29
| | | | Originally committed as revision 25601 to svn://svn.ffmpeg.org/ffmpeg/trunk