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
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
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
Emitted timestamps in each stream start from 0, for the first received
RTP packet. Once an RTCP packet is received, that one is used for
sync, emitting timestamps that fit seamlessly into the earlier ones.
Originally committed as revision 26187 to svn://svn.ffmpeg.org/ffmpeg/trunk
For example MS-RTSP doesn't have RTPDemuxContexts for all streams.
This fixes issue 2448.
Originally committed as revision 26107 to svn://svn.ffmpeg.org/ffmpeg/trunk
This fixes a crash if we requested TCP interleaved transport, but the
server replies with transport data for UDP. According to the RFC, the
server isn't allowed to respond with another transport type than the
one requested.
Originally committed as revision 26077 to svn://svn.ffmpeg.org/ffmpeg/trunk
This also reverts SVN rev 26016, which incorrectly overwrote the time base
with 90 kHz for all streams, regardless of what was set by the SDP parsing.
The stream that triggered the fix in 26016 still works after this commit.
Originally committed as revision 26022 to svn://svn.ffmpeg.org/ffmpeg/trunk
This fixes cases where the RTP time base and the sample rate of the stream
differ. Previously, the AVStream time_base was unconditionally set to
the sample rate (which initially was set to one value when parsing the
rtpmap field in the SDP, but later overridden by an a=SampleRate field).
Additionally, this makes the code actually use the stream time base set
in rtpmap for video codecs, instead of hardcoding it to always be 90 kHz.
Originally committed as revision 25908 to svn://svn.ffmpeg.org/ffmpeg/trunk
This may be needed to avoid calls to implicitly defined functions
(that will be removed by dead code elimination later anyway).
Originally committed as revision 25585 to svn://svn.ffmpeg.org/ffmpeg/trunk
This allows compilation of one of them without requiring the others'
dependencies to be present.
Originally committed as revision 25535 to svn://svn.ffmpeg.org/ffmpeg/trunk
The demuxer inspects the payload type of a received RTP packet and
handles the cases where the content is fully described by the payload type.
Originally committed as revision 25527 to svn://svn.ffmpeg.org/ffmpeg/trunk
The new object file is added to the SDP demuxer in the makefile, since it
is needed in both the RTSP muxer and demuxer and in the SDP demuxer, due
to the current code coupling.
Originally committed as revision 25410 to svn://svn.ffmpeg.org/ffmpeg/trunk
This makes the code dependencies correct. Previously, the SDP demuxer
wasn't buildable on its own.
This also reverts rev 25343.
Originally committed as revision 25354 to svn://svn.ffmpeg.org/ffmpeg/trunk
They reside within a large CONFIG_RTSP_DEMUXER block and are thus pointless.
Originally committed as revision 25343 to svn://svn.ffmpeg.org/ffmpeg/trunk
It is only useful for debugging, so it doesn't have to be shown every time.
Originally committed as revision 25323 to svn://svn.ffmpeg.org/ffmpeg/trunk
Do the same change for ff_rdt_parse_packet, too, to keep the interfaces
similar.
Originally committed as revision 25289 to svn://svn.ffmpeg.org/ffmpeg/trunk
message, if available (RFC 2326, section 12.39), fixes issue 2212.
Patch by John Wimer <john at god vtic net>.
Originally committed as revision 25032 to svn://svn.ffmpeg.org/ffmpeg/trunk
This fixes a bug from rev 22917. Now RTSP streams where the individual RTCP
sender reports aren't sent at the same time actually are synced properly.
Originally committed as revision 25029 to svn://svn.ffmpeg.org/ffmpeg/trunk
this prevents a time-out which closes the TCP connection and kills our
session.
see "Re: [FFmpeg-devel] [PATCH] rtsp.c: keep-alive" thread on mailinglist.
Originally committed as revision 24785 to svn://svn.ffmpeg.org/ffmpeg/trunk
That makes easier understand what went wrong.
In debug mode the whole reply gets printed.
Originally committed as revision 24212 to svn://svn.ffmpeg.org/ffmpeg/trunk
ff_url_split() is retained as an alias, as it was used by ffserver,
to avoid breaking ABI compatibility with it.
Originally committed as revision 23822 to svn://svn.ffmpeg.org/ffmpeg/trunk
Also make the RTSP protocol use url_alloc and url_connect instead of relying
on the delay open behaviour.
Originally committed as revision 23710 to svn://svn.ffmpeg.org/ffmpeg/trunk
This removes some useless copying of handles, and simplifies error handling.
Patch by Josh Allmann, joshua dot allmann at gmail
Originally committed as revision 23648 to svn://svn.ffmpeg.org/ffmpeg/trunk
Since rtsp_hd isn't assigned to rt->rtsp_hd until after the setup phase,
the initialized URLContext could be leaked on failures.
Originally committed as revision 23643 to svn://svn.ffmpeg.org/ffmpeg/trunk
Since the parsing of Vorbis/Theora fmtp headers is handled by the
parse_sdp_a_line function pointer now, the buffer in sdp_parse_fmtp
doesn't need to be this large any longer.
Patch by Josh Allmann, joshua dot allmann at gmail
Originally committed as revision 23599 to svn://svn.ffmpeg.org/ffmpeg/trunk
Done in preparation for RTSP over HTTP.
Patch by Josh Allmann, joshua dot allmann at gmail
Originally committed as revision 23494 to svn://svn.ffmpeg.org/ffmpeg/trunk
in its place.
av_metadata_set() is going to be dropped at the next major bump.
Originally committed as revision 22961 to svn://svn.ffmpeg.org/ffmpeg/trunk
If these aren't reset, the timestamps make a huge jump when the next RTCP
is received.
Originally committed as revision 22918 to svn://svn.ffmpeg.org/ffmpeg/trunk
In order to sync RTP streams that get their initial RTCP timestamp at
different times, propagate the NTP timestamp of the first RTCP packet
to all other streams.
This makes the timestamps of returned packets start at (near) zero instead
of at any random offset.
Originally committed as revision 22917 to svn://svn.ffmpeg.org/ffmpeg/trunk
This patch also changes FF_NETERROR() to be an AVERROR(), i.e. it is always
negative, whereas it was previously positive.
Originally committed as revision 22887 to svn://svn.ffmpeg.org/ffmpeg/trunk
The status_code field is read in the fail codepath, where it could be
read uninitialized earlier. Found by clang.
Originally committed as revision 22801 to svn://svn.ffmpeg.org/ffmpeg/trunk
This helps if the URL (erroneously?) contains question marks within the path.
Originally committed as revision 22643 to svn://svn.ffmpeg.org/ffmpeg/trunk
Don't modify the user-specified s->filename at all, keep all modifications
locally and in rt->control_uri.
Originally committed as revision 22642 to svn://svn.ffmpeg.org/ffmpeg/trunk
Currently, the caller doesn't get the status_code and location for rediects,
since rtsp_setup_input_streams uses a copy of RTSPMessageHeader of its own.
Originally committed as revision 22630 to svn://svn.ffmpeg.org/ffmpeg/trunk
This makes sure that the streams get correctly synchronized when viewed,
previously the streams were out of sync by as much time as it took
between the initialization of the individual muxers.
Originally committed as revision 22545 to svn://svn.ffmpeg.org/ffmpeg/trunk
This fixes compilation on some OSes
Patch by Dave Yeo, daveryeo at telus dot net
Originally committed as revision 22426 to svn://svn.ffmpeg.org/ffmpeg/trunk
instead of using the original host name, since the RTP (and UDP) protocols
may choose another IP address if the host name resolves into several different
addresses.
Originally committed as revision 22398 to svn://svn.ffmpeg.org/ffmpeg/trunk
This ensures proper escaping of numerical IPv6 addresses.
The RTSP (de)muxer needs its own network initialization, since it isn't
a protocol and url_open hasn't been called yet.
Originally committed as revision 22226 to svn://svn.ffmpeg.org/ffmpeg/trunk
and setting up the internal RTSPStream data structures when using
the RTSP code in muxer mode.
Originally committed as revision 21965 to svn://svn.ffmpeg.org/ffmpeg/trunk
known as rtsp_connect()) can be used in the RTSP muxer.
Patch by Martin Storsjö <$firstname $firstname st>.
Originally committed as revision 21915 to svn://svn.ffmpeg.org/ffmpeg/trunk
function (rtsp_setup_input_streams()), as preparation for the upcoming
RTSP muxer.
Patch by Martin Storsjö <$firstname $firstname st>.
Originally committed as revision 21914 to svn://svn.ffmpeg.org/ffmpeg/trunk
don't send them when acting as a RTSP muxer.
Patch by Martin Storsjö <$firstname $firstname st>.
Originally committed as revision 21913 to svn://svn.ffmpeg.org/ffmpeg/trunk
argument, so we can use AVFormatContext->* here in the future.
Patch by Martin Storsjö <$firstname $firstname st>.
Originally committed as revision 21911 to svn://svn.ffmpeg.org/ffmpeg/trunk
future use of the rtsp* codebase for RTSP muxing.
Patch by Martin Storsjö <$firstname $firstname st>.
Originally committed as revision 21896 to svn://svn.ffmpeg.org/ffmpeg/trunk
be used eventually in the RTSP muxer (see thread "[PATCH] RTSP muxer, round
3" on mailinglist).
Patch by Martin Storsjö <$firstname $firstname st>.
Originally committed as revision 21862 to svn://svn.ffmpeg.org/ffmpeg/trunk
what e.g. RealPlayer does. This allows proper port forwarding setup in NAT-
based environments.
Patch by Martin Storsjö <$firstname at $firstname dot st>.
Originally committed as revision 21856 to svn://svn.ffmpeg.org/ffmpeg/trunk
not supported in FFmpeg. This will cause crashes later because the samplerate
is used to initialize the timebase.
Originally committed as revision 21741 to svn://svn.ffmpeg.org/ffmpeg/trunk
reading direct SDP files to set up UDP-based RTP-streams). Fixes
issue 1713. Patch by Jeremy Morton <ffmpeg game-point net>.
Originally committed as revision 21461 to svn://svn.ffmpeg.org/ffmpeg/trunk
if present. This fixes playback of a number of MS-RTSP streams, mostly these
for which playback contains a session key in the URI. Fixes issue 1697.
Patch by Alan Steremberg <$firstname dot $lastname () gmail com>.
Originally committed as revision 21381 to svn://svn.ffmpeg.org/ffmpeg/trunk
parts of FFmpeg. Also change a starting condition; while (condition) {
... bla = bla->next; } loop into a proper for() loop.
Originally committed as revision 21071 to svn://svn.ffmpeg.org/ffmpeg/trunk
sdp_read_packet -> rtsp_fetch_packet
This way describes slightly better what it does.
Originally committed as revision 20982 to svn://svn.ffmpeg.org/ffmpeg/trunk
All the error codes 3xx got managed the same way.
After setup/early play redirection will not be managed
REDIRECT method is yet to be supported (if somebody knows a server implementing
it please contact me)
Originally committed as revision 20369 to svn://svn.ffmpeg.org/ffmpeg/trunk
Right now rtsp demuxer receives it's ffmpeg specific params encoded in the url
That made the server receiving requests with the url ending with "?udp",
"?multicast" and "?tcp". That may or may not cause problems to servers with
overly strict or overly simple uri parsers
Patch from Armand Bendanan (name.surnameATfreeDOTfr)
Originally committed as revision 20363 to svn://svn.ffmpeg.org/ffmpeg/trunk
Transport:destination in rtsp is optional, c= line in sdp is compulsory
Patch from Armand Bendanan (name.surnameATfreeDOTfr)
Originally committed as revision 20362 to svn://svn.ffmpeg.org/ffmpeg/trunk
(philip coombes zoneminder com), see "[PATCH]RTSP Basic Authentication"
thread on mailinglist.
Originally committed as revision 19905 to svn://svn.ffmpeg.org/ffmpeg/trunk
implement RTCP/bye. See "[PATCH] rtsp.c: EOS support" thread from a few
months back.
Originally committed as revision 19517 to svn://svn.ffmpeg.org/ffmpeg/trunk
a PLAY with Range alone while in PLAY status should be interpreted
as an enqueue
a PAUSE followed by a PLAY with Range is the proper way to ask to
seek to a point.
See rfc2326
Originally committed as revision 19143 to svn://svn.ffmpeg.org/ffmpeg/trunk
Real wants OPTIONS) while the connection is idle, otherwise it will
be aborted after a short period (usually a minute). See the thread
"[PATCH] rtsp.c: keep-alive" on the mailinglist.
Originally committed as revision 18525 to svn://svn.ffmpeg.org/ffmpeg/trunk
qualification task, see "RTP/Vorbis payload implementation (GSoC qual
task)" thread on mailinglist.
Originally committed as revision 18509 to svn://svn.ffmpeg.org/ffmpeg/trunk
buffer size of the fmtp parameter buffer. For Vorbis RT(S)P, these
contain full Vorbis headers, which can be up to 12kb each, formatted
in base64, so 16kb total. Patch required for proper Vorbis/RTP playback,
submitted as GSoC qualification task in the thread "RTP/Vorbis payload
implementation (GSoC qual task)" by Colin McQuillan m.niloc googlemail
com.
Originally committed as revision 18508 to svn://svn.ffmpeg.org/ffmpeg/trunk
redir_isspace(char) to check if '\0' is a space or not. Therefore, we now
use memchr(), since then we can give the length of the string (i.e. the
length excluding the terminating '\0'). Fixes issue 919, see also the
follow-ups in the "[PATCH] rtsp.c small cleanups" mailinglist thread.
Originally committed as revision 18177 to svn://svn.ffmpeg.org/ffmpeg/trunk
statement (get_word_sep()) already does that all by itself. See summary in
"[PATCH] rtsp.c small cleanups" thread on mailinglist.
Originally committed as revision 18128 to svn://svn.ffmpeg.org/ffmpeg/trunk
same line as the if. See summary in "[PATCH] rtsp.c small cleanups" thread on
mailinglist.
Originally committed as revision 18127 to svn://svn.ffmpeg.org/ffmpeg/trunk
in a stream (e.g. malicious input, broken file, etc.). See summary in "[PATCH]
rtsp.c small cleanups" thread on mailinglist.
Originally committed as revision 18126 to svn://svn.ffmpeg.org/ffmpeg/trunk
it is '\0' rather than its content (char *p; if (p == '\0') instead of if
(*p == '\0')). See summary in "[PATCH] rtsp.c small cleanups" thread on
mailinglist.
Originally committed as revision 18125 to svn://svn.ffmpeg.org/ffmpeg/trunk
function, since they both do approximately the same thing. At the same time,
remove redir_isspace() altogether since code elsewhere (including
get_word_sep()) uses strchr() for the same purpose. See summary in "[PATCH]
rtsp.c small cleanups" thread.
Originally committed as revision 18122 to svn://svn.ffmpeg.org/ffmpeg/trunk
data packets or in addition to UDP data packets, over the RTSP/TCP connection.
See discussion in [PATCH] rtsp.c: read TCP server notifications/messages"
thread on mailinglist.
Originally committed as revision 18121 to svn://svn.ffmpeg.org/ffmpeg/trunk
command and a second, new function to read the reply to this command. This
will make it possible to read server notices that are not in response to a
command in future versions, such as EOS or interrupt notices. See "[PATCH]
rtsp.c: split rtsp_send_cmd() in a send- and a receive-function" thread.
Originally committed as revision 17797 to svn://svn.ffmpeg.org/ffmpeg/trunk
fd2) and one was just removed, so naming the other "fd1" is counter-intuitive.
See "[RFC] rtsp.c EOF support" thread.
Originally committed as revision 17780 to svn://svn.ffmpeg.org/ffmpeg/trunk
associated with the I/O handle (e.g. the fd returned by open()). See
"[RFC] rtsp.c EOF support" thread.
There were previously some URI-specific implementations of the same idea,
e.g. rtp_get_file_handles() and udp_get_file_handle(). All of these are
deprecated by this patch and will be removed at the next major API bump.
Originally committed as revision 17779 to svn://svn.ffmpeg.org/ffmpeg/trunk
RTSP-MS UDP" thread on mailinglist.
Basically, UDP setup needs to be done in a particular order (first rtx
on two UDP ports (one for RTP, one for RTCP), then the other streams over
one, single port for all of them together). Not doing this correctly results
in a "461" error (invalid transport) during setup.
Originally committed as revision 17777 to svn://svn.ffmpeg.org/ffmpeg/trunk
sessions.
This type is used in RTP/ASF (served by WMS servers), and is required to
make UDP sessions work, but breaks TCP sessions. Therefore, we disable setup
for application streams in TCP/WMS streams.
See discussion in "[PATCH] RTSP-MS 8/15: fix RTSP-MS UDP" thread.
Originally committed as revision 17776 to svn://svn.ffmpeg.org/ffmpeg/trunk
structure is meant to represent. See "[PATCH] rtsp.[ch]: RTSPHeader ->
RTSPServerResponse" and "[PATCH] document rtsp.h" threads on ML.
Originally committed as revision 17504 to svn://svn.ffmpeg.org/ffmpeg/trunk
"cur_transport_priv", as discussed in the "[PATCH] rtsp.h: rename tx
variables" thread.
Originally committed as revision 17012 to svn://svn.ffmpeg.org/ffmpeg/trunk
servers when trying to set up a session over TCP:
- add the interleave property
- add unicast, only for WMS (since it is normally only UDP, but WMS expects it
for UDP and TCP)
- add mode=play
See discussion in "[PATCH] RTSP-MS 9/15: add interleave property to the TCP
transport line of the SETUP request" thread on mailinglist.
Originally committed as revision 16913 to svn://svn.ffmpeg.org/ffmpeg/trunk
subsequent a= lines from the m= block to be applied to the previous
m= line, thus breaking otherwise functional RTP streams. See discussion in
[PATCH] RTSP-MS 7/15: parse and allow unknown m= line codes" thread on
mailinglist.
Originally committed as revision 16737 to svn://svn.ffmpeg.org/ffmpeg/trunk
come directly after each m= line if required. See "[PATCH] RTSP-MS 5-6/15:
parse only the last m= line stream per rtpmap line" thread on ML.
Originally committed as revision 16509 to svn://svn.ffmpeg.org/ffmpeg/trunk
manual, non-standard blocksize which is bigger than RTP_MAX_PACKET_LENGTH.
See "[PATCH] RTSP-MS 4/15: blocksize detection" thread on mailinglist.
Originally committed as revision 16502 to svn://svn.ffmpeg.org/ffmpeg/trunk
to is a Microsoft Windows Media Server (the field will be "WMServer/version").
See "[PATCH] RTSP-MS 3/15: Add Windows Media Server type" thread on
mailinglist.
Originally committed as revision 16472 to svn://svn.ffmpeg.org/ffmpeg/trunk
access to these structures in functions that will be located in rtp_asf.c.
See "[PATCH] RTSP-MS 2/15: export RTSPState and RTSPStream" mailinglist
thread.
Originally committed as revision 16471 to svn://svn.ffmpeg.org/ffmpeg/trunk
this RTSP/RDT session. This basically implies full RDT support, including
stream selection in ffmpeg and multi-stream backupping in ffmpeg (by mapping
each stream to an output). See "[PATCH] RTSP/RDT: subscriptions" thread on
mailinglist.
Originally committed as revision 16469 to svn://svn.ffmpeg.org/ffmpeg/trunk
streams" (a single RTSPStream / RDTDemuxContext can represent several
AVStreams, that's just how Real/RDT was designed...). This will fill in
most of the AVStream/AVCodecContext header fields, similar to reading a
RM file header would. See "[PATCH] multi-stream MDPR parsing" thread on
mailinglist.
Originally committed as revision 16468 to svn://svn.ffmpeg.org/ffmpeg/trunk
each "rule" described in the ASMRuleBook. Each rule represents a stream
of identical content compared to other streams in the same rulebook, but
with a possibly different codec/bitrate/etc. See "[PATCH] rdt.c: ASM
rulebook parsing and AVStream creation" thread on mailinglist.
Originally committed as revision 16466 to svn://svn.ffmpeg.org/ffmpeg/trunk
This function is called in rtsp.c for each a= line in the SDP of the Describe
response after m= RTSP stream descriptors. The function prototype used to
take an AVStream argument. For RDT, however, every RTSPStream represents
a set of streams of identical content, and can thus represent multiple
AVStreams. Therefore, it should not take an AVStream as argument. This
patch modifies it to accept a AVFormatContext (of the RTSP/SDP demuxer)
instead. See discussion in "[PATCH/RFC] change function prototype of
parse_sdp_a_line" thread on ML.
Originally committed as revision 16024 to svn://svn.ffmpeg.org/ffmpeg/trunk
stream itself, plus a name change to signify that there may be multiple
AVStreams per RDT set. See discussion in "[PATCH] RDT/Realmedia patches #2"
thread on ML.
Originally committed as revision 15962 to svn://svn.ffmpeg.org/ffmpeg/trunk
Don't call it for RDT, since it is unneeded and it doesn't provide a
RTPDemuxContext, leading to some memory errors. See "[PATCH] fix small
memory error in rtsp.c" thread on ML.
Originally committed as revision 15828 to svn://svn.ffmpeg.org/ffmpeg/trunk
RTPDemuxContext for RTP) for these streams where the transport protocol
is RDT (as served by Realmedia servers).
Originally committed as revision 15544 to svn://svn.ffmpeg.org/ffmpeg/trunk
and making its type a void pointer. See discussion in "RDT/Realmedia patches
#2" thread on ML.
Originally committed as revision 15543 to svn://svn.ffmpeg.org/ffmpeg/trunk
(and thus preparing for the introduction of RDTDemuxContext) in a next patch.
See discussion in "RDT/Realmedia patches #2" thread on ML.
Originally committed as revision 15542 to svn://svn.ffmpeg.org/ffmpeg/trunk
rtsp.c to detect the ID of the packet source also in case of TCP streams.
This allows proper playback of RDT streams with multiple stream types, e.g.
audio + video. Accepted by LucaB in "RDT/Realmedia patches #2" thread on ML.
Originally committed as revision 15496 to svn://svn.ffmpeg.org/ffmpeg/trunk
types and their non-standard extensions, and the data they serve. Practically,
this patch allows Real servers to serve normal non-RDT (standard RTP) data.
See discussion on ML in "Realmedia patch" thread.
Originally committed as revision 15484 to svn://svn.ffmpeg.org/ffmpeg/trunk
DynamicProtocol* context. Doing so could lead to problems if we're accessing
Real servers serving non-RDT data (or the other way around). Temporarily,
this patch adds a _subscribe2() function which will soon be removed in one
of the subsequent commits. OK'ed by Luca in "Realmedia patch" thread on ML.
Originally committed as revision 15483 to svn://svn.ffmpeg.org/ffmpeg/trunk
that it only describes the lower-level transport (TCP vs. UDP) and not the
actual data layout (e.g. RDT vs. RTP). See discussion in "Realmedia patch"
thread on ML.
Originally committed as revision 15481 to svn://svn.ffmpeg.org/ffmpeg/trunk
protocol) is not strictly related to the server type (Real servers can
stream both RDT and RTP).
Originally committed as revision 15317 to svn://svn.ffmpeg.org/ffmpeg/trunk
SDP and RTSP into a new function. See discussion on ML in "[PATCH] rtsp
cleanup part 1: remove duplicate code" thread.
Originally committed as revision 15297 to svn://svn.ffmpeg.org/ffmpeg/trunk
playback of RTSP/RDT streams should work. See discussion in "Realmedia patch"
thread on ML.
Originally committed as revision 15237 to svn://svn.ffmpeg.org/ffmpeg/trunk
first stream in a RTSP/RDT session. See discussion in "Realmedia patch"
thread on ML.
Originally committed as revision 15235 to svn://svn.ffmpeg.org/ffmpeg/trunk
multiple protocols at the same time. We now cycle protocols individually
to autodetect, making this code no longer needed, and thus the support code
for it in make_setup_request() can be removed. See "[PATCH] remove transport
concatenation dead code" on mailinglist.
Originally committed as revision 15172 to svn://svn.ffmpeg.org/ffmpeg/trunk