summaryrefslogtreecommitdiff
path: root/libavformat/rtp.c
Commit message (Collapse)AuthorAgeFilesLines
* Merge commit '9200514ad8717c63f82101dc394f4378854325bf'Derek Buitenhuis2016-04-101-14/+14
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '9200514ad8717c63f82101dc394f4378854325bf': lavf: replace AVStream.codec with AVStream.codecpar This has been a HUGE effort from: - Derek Buitenhuis <derek.buitenhuis@gmail.com> - Hendrik Leppkes <h.leppkes@gmail.com> - wm4 <nfxjfg@googlemail.com> - Clément Bœsch <clement@stupeflix.com> - James Almer <jamrial@gmail.com> - Michael Niedermayer <michael@niedermayer.cc> - Rostislav Pehlivanov <atomnuker@gmail.com> Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
| * lavf: replace AVStream.codec with AVStream.codecparAnton Khirnov2016-02-231-14/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, AVStream contains an embedded AVCodecContext instance, which is used by demuxers to export stream parameters to the caller and by muxers to receive stream parameters from the caller. It is also used internally as the codec context that is passed to parsers. In addition, it is also widely used by the callers as the decoding (when demuxer) or encoding (when muxing) context, though this has been officially discouraged since Libav 11. There are multiple important problems with this approach: - the fields in AVCodecContext are in general one of * stream parameters * codec options * codec state However, it's not clear which ones are which. It is consequently unclear which fields are a demuxer allowed to set or a muxer allowed to read. This leads to erratic behaviour depending on whether decoding or encoding is being performed or not (and whether it uses the AVStream embedded codec context). - various synchronization issues arising from the fact that the same context is used by several different APIs (muxers/demuxers, parsers, bitstream filters and encoders/decoders) simultaneously, with there being no clear rules for who can modify what and the different processes being typically delayed with respect to each other. - avformat_find_stream_info() making it necessary to support opening and closing a single codec context multiple times, thus complicating the semantics of freeing various allocated objects in the codec context. Those problems are resolved by replacing the AVStream embedded codec context with a newly added AVCodecParameters instance, which stores only the stream parameters exported by the demuxers or read by the muxers.
* | rtp: Make ff_rtp_codec_id() case insensitiveWei-Cheng Pan2013-08-051-1/+2
| | | | | | | | | | | | Fixes handling of lower case pcmu Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2013-02-011-1/+1
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | * qatar/master: Use proper "" quotes for local header #includes ppc: fmtconvert: Drop two unused variables. bink demuxer: set framerate. Conflicts: libavcodec/kbdwin.c libavcodec/ppc/fmtconvert_altivec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * Use proper "" quotes for local header #includesDiego Biurrun2013-02-011-1/+1
| |
* | Merge commit '4a4a7e138c92901e04db46a6b05cc6948023e5f5'Michael Niedermayer2013-01-241-1/+1
|\ \ | |/ | | | | | | | | | | | | * commit '4a4a7e138c92901e04db46a6b05cc6948023e5f5': rtpenc_chain: Use the original AVFormatContext for getting payload type rtp: Make sure the output format pointer is set Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * rtp: Make sure the output format pointer is setMartin Storsjö2013-01-241-1/+1
| | | | | | | | | | | | | | | | Not sure if this actually happens, but we do the same check when checking payload_type further above in the function, so it might be needed. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '57ed8debb9b9cc565cc6e9f98c5b5cbb9f69097c'Michael Niedermayer2013-01-241-1/+1
|\ \ | |/ | | | | | | | | | | | | * commit '57ed8debb9b9cc565cc6e9f98c5b5cbb9f69097c': wmv2: Propagate the wmv2 idct permutation type to the dsputils context rtp: Make sure priv_data is set before reading it Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * rtp: Make sure priv_data is set before reading itMartin Storsjö2013-01-231-1/+1
| | | | | | | | | | | | | | This fixes crashes with muxing H263 into RTSP. CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit 'c44784c9bb9d0ddf5d39d0dfa640816a57b8f457'Michael Niedermayer2013-01-121-31/+25
|\ \ | |/ | | | | | | | | | | | | * commit 'c44784c9bb9d0ddf5d39d0dfa640816a57b8f457': rtp: Rename a static variable to normal naming conventions rtp: Cosmetic cleanup Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * rtp: Rename a static variable to normal naming conventionsMartin Storsjö2013-01-121-24/+24
| | | | | | | | Signed-off-by: Martin Storsjö <martin@martin.st>
| * rtp: Cosmetic cleanupMartin Storsjö2013-01-121-10/+4
| | | | | | | | | | | | | | Remove leftover debug comments, fix brace placement and add whitespace, remove unnecessary and weirdly placed braces. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit 'a925f723a915bc0255e2673f8817af5212131763'Michael Niedermayer2012-12-211-1/+1
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | * commit 'a925f723a915bc0255e2673f8817af5212131763': rtp: Don't read priv_data unless it is allocated flvenc: Check whether seeking back to the header succeeded sapenc: Pass the title on to the chained muxers Conflicts: libavformat/flvenc.c libavformat/sapenc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * rtp: Don't read priv_data unless it is allocatedMartin Storsjö2012-12-201-1/+1
| | | | | | | | | | | | | | This makes all users of rtpenc_chain (rtsp muxer, sapenc, mov rtp hinting) work again, broken since 8034130e0. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-11-151-2/+6
|\ \ | |/ | | | | | | | | | | | | | | | | | | * qatar/master: bgmc: Fix av_malloc checks in ff_bgmc_init() rtp: set the payload type as stream id Conflicts: libavformat/rtpenc_chain.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * rtp: set the payload type as stream idLuca Barbato2012-11-141-2/+6
| | | | | | | | | | | | | | Support multiple video/audio streams with different format in the same session. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | Merge commit '36ef5369ee9b336febc2c270f8718cec4476cb85'Michael Niedermayer2012-08-071-33/+33
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '36ef5369ee9b336febc2c270f8718cec4476cb85': Replace all CODEC_ID_* with AV_CODEC_ID_* lavc: add AV prefix to codec ids. Conflicts: doc/APIchanges doc/examples/decoding_encoding.c doc/examples/muxing.c ffmpeg.c ffprobe.c ffserver.c libavcodec/8svx.c libavcodec/avcodec.h libavcodec/dnxhd_parser.c libavcodec/dvdsubdec.c libavcodec/error_resilience.c libavcodec/h263dec.c libavcodec/libvorbisenc.c libavcodec/mjpeg_parser.c libavcodec/mjpegenc.c libavcodec/mpeg12.c libavcodec/mpeg4videodec.c libavcodec/mpegvideo.c libavcodec/mpegvideo_enc.c libavcodec/pcm.c libavcodec/r210dec.c libavcodec/utils.c libavcodec/v210dec.c libavcodec/version.h libavdevice/alsa-audio-dec.c libavdevice/bktr.c libavdevice/v4l2.c libavformat/asfdec.c libavformat/asfenc.c libavformat/avformat.h libavformat/avidec.c libavformat/caf.c libavformat/electronicarts.c libavformat/flacdec.c libavformat/flvdec.c libavformat/flvenc.c libavformat/framecrcenc.c libavformat/img2.c libavformat/img2dec.c libavformat/img2enc.c libavformat/ipmovie.c libavformat/isom.c libavformat/matroska.c libavformat/matroskadec.c libavformat/matroskaenc.c libavformat/mov.c libavformat/movenc.c libavformat/mp3dec.c libavformat/mpeg.c libavformat/mpegts.c libavformat/mxf.c libavformat/mxfdec.c libavformat/mxfenc.c libavformat/nsvdec.c libavformat/nut.c libavformat/oggenc.c libavformat/pmpdec.c libavformat/rawdec.c libavformat/rawenc.c libavformat/riff.c libavformat/sdp.c libavformat/utils.c libavformat/vocenc.c libavformat/wtv.c libavformat/xmv.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * Replace all CODEC_ID_* with AV_CODEC_ID_*Anton Khirnov2012-08-071-33/+33
| |
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-07-241-3/+11
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: rtmp: Add credit/copyright to librtmp authors for parts of the RTMPE code rtmp: Move the CONFIG_ condition into the if conditions aac: Mention abbreviation as well in long_name build: Skip compiling rtmpdh.h if ffrtmpcrypt protocol is not enabled doc: Add Git configuration section configure: Add a dependency on https for rtmpts rtp: Only choose static payload types if the sample rate and channels are right Conflicts: doc/git-howto.texi libavformat/rtmpproto.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * rtp: Only choose static payload types if the sample rate and channels are rightAdriano Pallavicino2012-07-241-3/+11
| | | | | | | | | | | | | | | | | | If using a different sample rate or number of channels, use a dynamic payload type instead, where the parameters are passed in the SDP. G722 is a special case where the normal rules don't apply. Signed-off-by: Martin Storsjö <martin@martin.st>
| * G.723.1 demuxer and decoderMohamed Naufal Basheer2012-07-221-1/+1
| | | | | | | | Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-02-241-1/+3
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: (40 commits) swf: check return values for av_get/new_packet(). wavpack: Don't shift minclip/maxclip rtpenc: Expose the max packet size via an avoption rtpenc: Move max_packet_size to a context variable rtpenc: Add an option for not sending RTCP packets lavc: drop encode() support for video. snowenc: switch to encode2(). snowenc: don't abuse input picture for storing information. a64multienc: switch to encode2(). a64multienc: don't write into output buffer when there's no output. libxvid: switch to encode2(). tiffenc: switch to encode2(). tiffenc: properly forward error codes in encode_frame(). lavc: drop libdirac encoder. gifenc: switch to encode2(). libvpxenc: switch to encode2(). flashsvenc: switch to encode2(). Remove libpostproc. lcl: don't overwrite input memory. swscale: take first/lastline over/underflows into account for MMX. ... Conflicts: .gitignore Makefile cmdutils.c configure doc/APIchanges libavcodec/Makefile libavcodec/allcodecs.c libavcodec/libdiracenc.c libavcodec/libxvidff.c libavcodec/qtrleenc.c libavcodec/tiffenc.c libavcodec/utils.c libavformat/mov.c libavformat/movenc.c libpostproc/Makefile libpostproc/postprocess.c libpostproc/postprocess.h libpostproc/postprocess_altivec_template.c libpostproc/postprocess_internal.h libpostproc/postprocess_template.c libswscale/swscale.c libswscale/utils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * rtpenc: Allow packetizing H263 according to the old RFC 2190Martin Storsjö2012-02-231-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to newer RFCs, this packetization scheme should only be used for interfacing with legacy systems. Implementing this packetization mode properly requires parsing the full H263 bitstream to find macroblock boundaries (and knowing their macroblock and gob numbers and motion vector predictors). This implementation tries to look for GOB headers (which can be inserted by using -ps <small number>), but if the GOBs aren't small enough to fit into the MTU, the packetizer blindly splits packets at any offset and claims it to be a GOB boundary (by using Mode A from the RFC). While not correct, this seems to work with some receivers. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2011-10-181-1/+2
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: avconv: add presets rtsp: Expose the flag options via private AVOptions for sdp and rtp, too rtsp: Make the rtsp flags avoptions set via a define rtpenc: Set a default video codec avoptions: Fix av_opt_flag_is_set rtp: Fix ff_rtp_get_payload_type doc: Update the documentation on setting options for RTSP rtsp: Remove the separate filter_source variable rtsp: Accept options via private avoptions instead of URL options rtsp: Simplify AVOption definitions rtsp: Merge the AVOption lists lavfi: port libmpcodecs delogo filter lavfi: port boxblur filter from libmpcodecs lavfi: add negate filter lavfi: add LUT (LookUp Table) generic filters AVOptions: don't segfault on NULL parameter in av_set_options_string() avio: Check for invalid buffer length. mpegenc/mpegtsenc: add muxrate private options. lavf: deprecate AVFormatContext.file_size mov: add support for TV metadata atoms tves, tvsn and stik Conflicts: Changelog doc/filters.texi doc/protocols.texi libavfilter/Makefile libavfilter/allfilters.c libavfilter/avfilter.h libavfilter/formats.c libavfilter/internal.h libavfilter/vf_boxblur.c libavfilter/vf_delogo.c libavfilter/vf_lut.c libavformat/mpegtsenc.c libavformat/utils.c libavformat/version.h libavutil/opt.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * rtp: Fix ff_rtp_get_payload_typeMartin Storsjö2011-10-171-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | It was broken in 3b3ea34655db02d9cd9ea1a4122e920a7fdec602 "Remove all uses of deprecated AVOptions API", where any presence of a payload_type AVOption caused its value to be returned, even if it wasn't set (and thus had the default -1 value). This caused the RTP muxer to be broken. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2011-10-131-3/+3
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: (31 commits) tiffenc: initialize forgotten avctx. avplay: free the active audio packet at exit. avplay: free rdft data used for spectrogram analysis. log.h: make AVClass a named struct fix ac3 encoder documentation vc1: more prettyprinting cosmetics vc1: prettyprint some tables vc1: K&R formatting cosmetics AVOptions: bump minor and add APIchanges entry. cmdutils/avtools: simplify show_help() by using av_opt_child_class_next() AVOptions: rename FF_OPT_TYPE_* => AV_OPT_TYPE_* Remove all uses of deprecated AVOptions API. AVOptions: add av_opt_next, deprecate av_next_option. AVOptions: add functions for evaluating option strings. AVOptions: split get_number(). AVOptions: add av_opt_get*, deprecate av_get*. AVOptions: add av_opt_set*(). AVOptions: add new API for enumerating children. rv34: move inverse transform functions to DSP context flvenc: Write the right metadata entry count ... Conflicts: avconv.c cmdutils.c doc/APIchanges ffplay.c ffprobe.c libavcodec/ac3dec.c libavcodec/h264.c libavcodec/libvpxenc.c libavcodec/libx264.c libavcodec/mpeg12enc.c libavcodec/options.c libavdevice/libdc1394.c libavdevice/v4l2.c libavfilter/vf_drawtext.c libavformat/flvdec.c libavformat/mpegtsenc.c libavformat/options.c libavutil/avutil.h libavutil/opt.c libswscale/utils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * Remove all uses of deprecated AVOptions API.Anton Khirnov2011-10-121-3/+3
| |
* | Add the G723.1 demuxer and decoderMohamed Naufal Basheer2011-09-291-1/+1
| |
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2011-09-271-9/+15
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: (21 commits) fate: allow testing with libavfilter disabled x86: XOP/FMA4 CPU detection support ws_snd: misc cosmetic clean-ups ws_snd: remove the 2-bit ADPCM table and just subtract 2 instead. ws_snd: use memcpy() and memset() instead of loops ws_snd: use samples pointer for loop termination instead of a separate iterator variable. ws_snd: make sure number of channels is 1 ws_snd: add some checks to prevent buffer overread or overwrite. ws_snd: decode to AV_SAMPLE_FMT_U8 instead of S16. flacdec: fix buffer size checking in get_metadata_size() rtp: Simplify ff_rtp_get_payload_type rtpenc: Add a payload type private option rtp: Correct ff_rtp_get_payload_type documentation avconv: replace all fprintf() by av_log(). avconv: change av_log verbosity from ERROR to FATAL for fatal errors. cmdutils: replace fprintf() by av_log() avtools: parse loglevel before all the other options. oggdec: add support for Xiph's CELT codec sol: return error if av_get_packet() fails. cosmetics: reindent and pretty-print ... Conflicts: avconv.c cmdutils.c libavcodec/avcodec.h libavcodec/version.h libavformat/oggparsecelt.c libavformat/utils.c libavutil/avutil.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * rtp: Simplify ff_rtp_get_payload_typeRafaël Carré2011-09-261-14/+11
| | | | | | | | Signed-off-by: Martin Storsjö <martin@martin.st>
| * rtpenc: Add a payload type private optionRafaël Carré2011-09-261-1/+10
| | | | | | | | | | | | | | | | Specifying the payload type is useful when the type number has already been negotiated before creating the stream, for example in SIP protocol. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2011-09-241-0/+5
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: rtp: factorize dynamic payload type fallback flvdec: Ignore the index if it's from a creator known to be different cmdutils: move grow_array out of #if CONFIG_AVFILTER avconv: actually set InputFile.rate_emu ratecontrol: update last_qscale_for sooner Fix unnecessary shift with 9/10bit vertical scaling prores: mark prores as intra-only in libavformat/utils.c:is_intra_only() prores: return more meaningful error values prores: improve error message wording prores: cosmetics: prettyprinting, drop useless parentheses prores: lowercase AVCodec name entry Conflicts: cmdutils.c libavcodec/proresdec_lgpl.c tests/ref/lavfi/pixfmts_scale Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * rtp: factorize dynamic payload type fallbackRafaël Carré2011-09-231-0/+5
| | | | | | | | | | | | | | Move the identical code in rtp_write_header() and ff_sdp_write_media() inside ff_rtp_get_payload_type() Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
| * Replace FFmpeg with Libav in licence headersMans Rullgard2011-03-191-4/+4
|/ | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* Handle G.722 in RTP, and all the exceptions mandated in RFC 3551Martin Storsjö2010-09-151-1/+1
| | | | Originally committed as revision 25125 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Define AVMediaType enum, and use it instead of enum CodecType, whichStefano Sabatini2010-03-301-29/+29
| | | | | | is deprecated and will be dropped at the next major bump. Originally committed as revision 22735 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Remove the inclusion of unneeded headersLuca Abeni2010-01-111-4/+0
| | | | Originally committed as revision 21152 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Rename bitstream.h to get_bits.h.Stefano Sabatini2009-04-131-1/+1
| | | | Originally committed as revision 18494 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Do not return payload type 34 for H.263 (it is deprecated)Luca Abeni2009-04-071-0/+2
| | | | Originally committed as revision 18346 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Remame rtp_get_codec_info() to ff_rtp_get_codec_info(), as it is notLuca Abeni2009-02-171-1/+1
| | | | | | a static function Originally committed as revision 17390 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Rename rtp_get_payload_type() to ff_rtp_get_payload_type(), as it is notLuca Abeni2009-02-161-1/+1
| | | | | | a static function Originally committed as revision 17364 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Merge rtp_internal.h in rtp.h, and remove rtp_internal.hLuca Abeni2009-01-271-1/+1
| | | | Originally committed as revision 16817 to svn://svn.ffmpeg.org/ffmpeg/trunk
* cosmetics: Remove pointless period after copyright statement non-sentences.Diego Biurrun2009-01-191-1/+1
| | | | Originally committed as revision 16684 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Do not set sample_rate = 90000 for mp2 and mp3 audio over RTPLuca Abeni2008-06-241-2/+2
| | | | Originally committed as revision 13943 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Use full path for #includes from another directory.Diego Biurrun2008-05-091-1/+2
| | | | Originally committed as revision 13098 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Add a comment about missing entriesLuca Abeni2008-03-311-0/+5
| | | | Originally committed as revision 12646 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Use the correct size for the enc_name field (removing the arbitrary "50" size)Luca Abeni2008-03-311-1/+1
| | | | Originally committed as revision 12645 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Remove useless entries from AVRtpPayloadTypesLuca Abeni2008-03-311-104/+0
| | | | Originally committed as revision 12644 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Support mp3 audio in the RTP muxerLuca Abeni2008-03-311-0/+1
| | | | Originally committed as revision 12643 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Make AVRtpPayloadTypes static and constantDiego Pettenò2008-01-061-1/+9
| | | | | | Patch by Diego 'Flameeyes' Pettenò (flameeyes AT gmail DOT com) Originally committed as revision 11432 to svn://svn.ffmpeg.org/ffmpeg/trunk