Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 10 Dec 2011 23:40:09 +0000 (00:40 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 11 Dec 2011 00:05:33 +0000 (01:05 +0100)
* qatar/master: (21 commits)
  Warn about avserver being broken.
  avconv: drop code for special handling of avserver streams.
  rawdec: don't set codec timebase.
  lavf doxy: add muxing stuff to lavf_encoding group
  lavf doxy: add demuxing stuff to lavf_decoding group
  lavf doxy: expand/reword metadata API doxy.
  lavf doxy: add installed headers to groups.
  lavf doxy: add avio groups into the lavf_io group.
  lavf doxy: rename lavf I/O group to lavf_io.
  lavf doxy: add metadata docs to the main lavf group
  ttadec: check channel count as read from extradata.
  Add CLJR encoding and decoding regression tests
  cljr: remove unused code
  flacdec: Support for tracks in cuesheet metadata block
  ptx: fix inverted check for sufficient data
  flac muxer: fix writing of file header and STREAMINFO header from extradata
  ptx: emit a warning on insufficient picture data
  utvideo: add fate tests covering all codec variants
  doc: update to refer to avconv
  doc: remove some stale entries from the faq
  ...

Conflicts:
Changelog
avconv.c
doc/avconv.texi
doc/faq.texi
doc/ffplay.texi
doc/ffprobe.texi
doc/ffserver.texi
libavcodec/avcodec.h
libavcodec/cljr.c
libavformat/avformat.h
libavformat/riff.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
22 files changed:
1  2 
Changelog
avconv.c
doc/avconv.texi
doc/faq.texi
doc/ffserver.texi
doc/general.texi
libavcodec/Makefile
libavcodec/allcodecs.c
libavcodec/avcodec.h
libavcodec/cljr.c
libavcodec/ptx.c
libavcodec/tta.c
libavformat/avformat.h
libavformat/avio.h
libavformat/flacdec.c
libavformat/flacenc_header.c
libavformat/riff.c
libavformat/version.h
tests/codec-regression.sh
tests/fate2.mak
tests/ref/vsynth1/cljr
tests/ref/vsynth2/cljr

diff --cc Changelog
+++ b/Changelog
@@@ -121,23 -102,39 +121,24 @@@ easier to use. The changes are
  - Discworld II BMV decoding support
  - VBLE Decoder
  - OS X Video Decoder Acceleration (VDA) support
 +- compact and csv output in ffprobe
 +- pan audio filter
 +- IFF Amiga Continuous Bitmap (ACBM) decoder
 +- ass filter
  - CRI ADX audio format demuxer
  - Playstation Portable PMP format demuxer
 +- Microsoft Windows ICO demuxer
 +- life source
  - PCM format support in OMA demuxer
  - CLJR encoder
 +- new option: -report
+ - Dxtory capture format decoder
  
  
 -version 0.7:
 -
 -- E-AC-3 audio encoder
 -- ac3enc: add channel coupling support
 -- floating-point sample format support for (E-)AC-3, DCA, AAC, Vorbis decoders
 -- H.264/MPEG frame-level multithreading
 -- av_metadata_* functions renamed to av_dict_* and moved to libavutil
 -- 4:4:4 H.264 decoding support
 -- 10-bit H.264 optimizations for x86
 -- bump libswscale for recently reported ABI break
 -
 -
 -version 0.7_beta2:
 +version 0.8:
  
 -- VP8 frame-level multithreading
 -- NEON optimizations for VP8
 -- removed a lot of deprecated API cruft
 -- FFT and IMDCT optimizations for AVX (Sandy Bridge) processors
 -- DPX image encoder
 -- SMPTE 302M AES3 audio decoder
 -- ffmpeg no longer quits after the 'q' key is pressed; use 'ctrl+c' instead
 -- 9bit and 10bit per sample support in the H.264 decoder
 -
 -
 -version 0.7_beta1:
  
 +- many many things we forgot because we rather write code than changelogs
  - WebM support in Matroska de/muxer
  - low overhead Ogg muxing
  - MMS-TCP support
diff --cc avconv.c
+++ b/avconv.c
@@@ -3688,19 -3536,26 +3653,10 @@@ static void opt_output_file(void *optct
          exit_program(1);
      }
  
 -    if (o->format) {
 -        file_oformat = av_guess_format(o->format, NULL, NULL);
 -        if (!file_oformat) {
 -            av_log(NULL, AV_LOG_FATAL, "Requested output format '%s' is not a suitable output format\n", o->format);
 -            exit_program(1);
 -        }
 -    } else {
 -        file_oformat = av_guess_format(NULL, filename, NULL);
 -        if (!file_oformat) {
 -            av_log(NULL, AV_LOG_FATAL, "Unable to find a suitable output format for '%s'\n",
 -                   filename);
 -            exit_program(1);
 -        }
 -    }
 -
 -    oc->oformat = file_oformat;
 +    file_oformat= oc->oformat;
      oc->interrupt_callback = int_cb;
 -    av_strlcpy(oc->filename, filename, sizeof(oc->filename));
  
-     if (!strcmp(file_oformat->name, "ffm") &&
-         av_strstart(filename, "http:", NULL)) {
-         /* special case for files sent to ffserver: we get the stream
-            parameters from ffserver */
-         int err = read_ffserver_streams(o, oc, filename);
-         if (err < 0) {
-             print_error(filename, err);
-             exit_program(1);
-         }
-     } else if (!o->nb_stream_maps) {
+     if (!o->nb_stream_maps) {
          /* pick the "best" stream of each type */
  #define NEW_STREAM(type, index)\
          if (index >= 0) {\
diff --cc doc/avconv.texi
@@@ -1028,7 -1025,7 +1028,8 @@@ the input file in reverse order
  @settitle avconv video converter
  
  @c man begin SEEALSO
 -avplay(1), avprobe(1) and the Libav HTML documentation
 +ffplay(1), ffprobe(1), ffserver(1) and the FFmpeg HTML documentation
++
  @c man end
  
  @c man begin AUTHORS
diff --cc doc/faq.texi
  
  @chapter General Questions
  
- @section When will the next FFmpeg version be released? / Why are FFmpeg releases so few and far between?
- Like most open source projects FFmpeg suffers from a certain lack of
- manpower. For this reason the developers have to prioritize the work
- they do and putting out releases is not at the top of the list, fixing
- bugs and reviewing patches takes precedence. Please don't complain or
- request more timely and/or frequent releases unless you are willing to
- help out creating them.
- @section I have a problem with an old version of FFmpeg; where should I report it?
- Nowhere. We do not support old FFmpeg versions in any way, we simply lack
- the time, motivation and manpower to do so. If you have a problem with an
- old version of FFmpeg, upgrade to the latest git snapshot. If you
- still experience the problem, then you can report it according to the
- guidelines in @url{http://ffmpeg.org/bugreports.html}.
 -@section Why doesn't Libav support feature [xyz]?
 +@section Why doesn't FFmpeg support feature [xyz]?
  
 -Because no one has taken on that task yet. Libav development is
 +Because no one has taken on that task yet. FFmpeg development is
  driven by the tasks that are important to the individual developers.
  If there is a feature that is important to you, the best way to get
  it implemented is to undertake the task yourself or sponsor a developer.
  
 -@section Libav does not support codec XXX. Can you include a Windows DLL loader to support it?
 +@section FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it?
  
  No. Windows DLLs are not portable, bloated and often slow.
 -Moreover Libav strives to support all codecs natively.
 +Moreover FFmpeg strives to support all codecs natively.
  A DLL loader is not conducive to that goal.
  
- @section My bug report/mail to ffmpeg-devel/user has not received any replies.
- Likely reasons
- @itemize
- @item We are busy and haven't had time yet to read your report or
- investigate the issue.
- @item You didn't follow @url{http://ffmpeg.org/bugreports.html}.
- @item You didn't use git master.
- @item You reported a segmentation fault without gdb output.
- @item You describe a problem but not how to reproduce it.
- @item It's unclear if you use ffmpeg as command line tool or use
- libav* from another application.
- @item You speak about a video having problems on playback but
- not what you use to play it.
- @item We have no faint clue what you are talking about besides
- that it is related to FFmpeg.
- @end itemize
- @section Is there a forum for FFmpeg? I do not like mailing lists.
- You may view our mailing lists with a more forum-alike look here:
- @url{http://dir.gmane.org/gmane.comp.video.ffmpeg.user},
- but, if you post, please remember that our mailing list rules still apply there.
 -@section I cannot read this file although this format seems to be supported by avconv.
 +@section I cannot read this file although this format seems to be supported by ffmpeg.
  
 -Even if avconv can read the container format, it may not support all its
 -codecs. Please consult the supported codec list in the avconv
 +Even if ffmpeg can read the container format, it may not support all its
 +codecs. Please consult the supported codec list in the ffmpeg
  documentation.
  
  @section Which codecs are supported by Windows?
@@@ -183,7 -137,7 +143,7 @@@ to force the encoding
  
  Applying that to the previous example:
  @example
-   ffmpeg -i movie.mpg -f image2 -vcodec mjpeg menu%d.jpg
 -  avconv -i movie.mpg -f image2 -c:v mjpeg menu%d.jpg
++  ffmpeg -i movie.mpg -f image2 -c:v mjpeg menu%d.jpg
  @end example
  
  Beware that there is no "jpeg" codec. Use "mjpeg" instead.
@@@ -202,12 -156,12 +162,12 @@@ Use @file{-} as file name
  
  Try '-f image2 test%d.jpg'.
  
 -@section Why can I not change the framerate?
 +@section Why can I not change the frame rate?
  
 -Some codecs, like MPEG-1/2, only allow a small number of fixed framerates.
 +Some codecs, like MPEG-1/2, only allow a small number of fixed frame rates.
- Choose a different codec with the -vcodec command line option.
+ Choose a different codec with the -c:v command line option.
  
 -@section How do I encode Xvid or DivX video with avconv?
 +@section How do I encode Xvid or DivX video with ffmpeg?
  
  Both Xvid and DivX (version 4+) are implementations of the ISO MPEG-4
  standard (note that there are many other coding formats that use this
@@@ -300,13 -216,13 +222,13 @@@ equally humble @code{copy} under Window
  format of choice.
  
  @example
- ffmpeg -i input1.avi -sameq intermediate1.mpg
- ffmpeg -i input2.avi -sameq intermediate2.mpg
 -avconv -i input1.avi -same_quant intermediate1.mpg
 -avconv -i input2.avi -same_quant intermediate2.mpg
++ffmpeg -i input1.avi -same_quant intermediate1.mpg
++ffmpeg -i input2.avi -same_quant intermediate2.mpg
  cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg
- ffmpeg -i intermediate_all.mpg -sameq output.avi
 -avconv -i intermediate_all.mpg -same_quant output.avi
++ffmpeg -i intermediate_all.mpg -same_quant output.avi
  @end example
  
- Notice that you should either use @code{-sameq} or set a reasonably high
+ Notice that you should either use @code{-same_quant} or set a reasonably high
  bitrate for your intermediate and output files, if you want to preserve
  video quality.
  
@@@ -316,10 -232,10 +238,10 @@@ of named pipes, should your platform su
  @example
  mkfifo intermediate1.mpg
  mkfifo intermediate2.mpg
- ffmpeg -i input1.avi -sameq -y intermediate1.mpg < /dev/null &
- ffmpeg -i input2.avi -sameq -y intermediate2.mpg < /dev/null &
 -avconv -i input1.avi -same_quant -y intermediate1.mpg < /dev/null &
 -avconv -i input2.avi -same_quant -y intermediate2.mpg < /dev/null &
++ffmpeg -i input1.avi -same_quant -y intermediate1.mpg < /dev/null &
++ffmpeg -i input2.avi -same_quant -y intermediate2.mpg < /dev/null &
  cat intermediate1.mpg intermediate2.mpg |\
- ffmpeg -f mpeg -i - -sameq -vcodec mpeg4 -acodec libmp3lame output.avi
 -avconv -f mpeg -i - -same_quant -c:v mpeg4 -acodec libmp3lame output.avi
++ffmpeg -f mpeg -i - -same_quant -c:v mpeg4 -acodec libmp3lame output.avi
  @end example
  
  Similarly, the yuv4mpegpipe format, and the raw video, raw audio codecs also
@@@ -338,43 -254,25 +260,25 @@@ mkfifo temp2.
  mkfifo temp2.v
  mkfifo all.a
  mkfifo all.v
 -avconv -i input1.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - > temp1.a < /dev/null &
 -avconv -i input2.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - > temp2.a < /dev/null &
 -avconv -i input1.flv -an -f yuv4mpegpipe - > temp1.v < /dev/null &
 -@{ avconv -i input2.flv -an -f yuv4mpegpipe - < /dev/null | tail -n +2 > temp2.v ; @} &
 +ffmpeg -i input1.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - > temp1.a < /dev/null &
 +ffmpeg -i input2.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - > temp2.a < /dev/null &
 +ffmpeg -i input1.flv -an -f yuv4mpegpipe - > temp1.v < /dev/null &
 +@{ ffmpeg -i input2.flv -an -f yuv4mpegpipe - < /dev/null | tail -n +2 > temp2.v ; @} &
  cat temp1.a temp2.a > all.a &
  cat temp1.v temp2.v > all.v &
 -avconv -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -i all.a \
 +ffmpeg -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -i all.a \
         -f yuv4mpegpipe -i all.v \
-        -sameq -y output.flv
+        -same_quant -y output.flv
  rm temp[12].[av] all.[av]
  @end example
  
- @section The ffmpeg program does not respect the -maxrate setting, some frames are bigger than maxrate/fps.
- Read the MPEG spec about video buffer verifier.
- @section I want CBR, but no matter what I do frame sizes differ.
- You do not understand what CBR is, please read the MPEG spec.
- Read about video buffer verifier and constant bitrate.
- The one sentence summary is that there is a buffer and the input rate is
- constant, the output can vary as needed.
- @section How do I check if a stream is CBR?
- To quote the MPEG-2 spec:
- "There is no way to tell that a bitstream is constant bitrate without
- examining all of the vbv_delay values and making complicated computations."
  @chapter Development
  
 -@section Are there examples illustrating how to use the Libav libraries, particularly libavcodec and libavformat?
 +@section Are there examples illustrating how to use the FFmpeg libraries, particularly libavcodec and libavformat?
  
 -Yes. Read the Developers Guide of the Libav documentation. Alternatively,
 +Yes. Read the Developers Guide of the FFmpeg documentation. Alternatively,
  examine the source code for one of the many open source projects that
 -already incorporate Libav at (@url{projects.html}).
 +already incorporate FFmpeg at (@url{projects.html}).
  
  @section Can you support my C compiler XXX?
  
@@@ -414,9 -308,9 +318,9 @@@ the FFmpeg Windows Help Forum a
  
  No. These tools are too bloated and they complicate the build.
  
- @section Why not rewrite ffmpeg in object-oriented C++?
 -@section Why not rewrite Libav in object-oriented C++?
++@section Why not rewrite FFmpeg in object-oriented C++?
  
 -Libav is already organized in a highly modular manner and does not need to
 +FFmpeg is already organized in a highly modular manner and does not need to
  be rewritten in a formal object language. Further, many of the developers
  favor straight C; it works for them. For more arguments on this matter,
  read @uref{http://www.tux.org/lkml/#s15, "Programming Religion"}.
@@@ -430,22 -318,14 +334,14 @@@ you need the debug information, use th
  @section I do not like the LGPL, can I contribute code under the GPL instead?
  
  Yes, as long as the code is optional and can easily and cleanly be placed
 -under #if CONFIG_GPL without breaking anything. So for example a new codec
 +under #if CONFIG_GPL without breaking anything. So, for example, a new codec
  or filter would be OK under GPL while a bug fix to LGPL code would not.
  
- @section I want to compile xyz.c alone but my compiler produced many errors.
- Common code is in its own files in libav* and is used by the individual
- codecs. They will not work without the common parts, you have to compile
- the whole libav*. If you wish, disable some parts with configure switches.
- You can also try to hack it and remove more, but if you had problems fixing
- the compilation failure then you are probably not qualified for this.
- @section I'm using libavcodec from within my C++ application but the linker complains about missing symbols which seem to be available.
 -@section I'm using Libav from within my C++ application but the linker complains about missing symbols which seem to be available.
++@section I'm using FFmpeg from within my C++ application but the linker complains about missing symbols which seem to be available.
  
 -Libav is a pure C project, so to use the libraries within your C++ application
 +FFmpeg is a pure C project, so to use the libraries within your C++ application
  you need to explicitly state that you are using a C library. You can do this by
 -encompassing your Libav includes using @code{extern "C"}.
 +encompassing your FFmpeg includes using @code{extern "C"}.
  
  See @url{http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3}
  
@@@ -457,36 -337,6 +353,28 @@@ to use them you have to append -D__STDC
  @section I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat?
  
  You have to implement a URLProtocol, see @file{libavformat/file.c} in
 -Libav and @file{libmpdemux/demux_lavf.c} in MPlayer sources.
 +FFmpeg and @file{libmpdemux/demux_lavf.c} in MPlayer sources.
 +
- @section I get "No compatible shell script interpreter found." in MSys.
- The standard MSys bash (2.04) is broken. You need to install 2.05 or later.
- @section I get "./configure: line <xxx>: pr: command not found" in MSys.
- The standard MSys install doesn't come with pr. You need to get it from the coreutils package.
 +@section Where can I find libav* headers for Pascal/Delphi?
 +
 +see @url{http://www.iversenit.dk/dev/ffmpeg-headers/}
 +
 +@section Where is the documentation about ffv1, msmpeg4, asv1, 4xm?
 +
 +see @url{http://www.ffmpeg.org/~michael/}
 +
 +@section How do I feed H.263-RTP (and other codecs in RTP) to libavcodec?
 +
 +Even if peculiar since it is network oriented, RTP is a container like any
 +other. You have to @emph{demux} RTP before feeding the payload to libavcodec.
 +In this specific case please look at RFC 4629 to see how it should be done.
 +
 +@section AVStream.r_frame_rate is wrong, it is much larger than the frame rate.
 +
 +r_frame_rate is NOT the average frame rate, it is the smallest frame rate
 +that can accurately represent all timestamps. So no, it is not
 +wrong if it is larger than the average!
 +For example, if you have mixed 25 and 30 fps content, then r_frame_rate
 +will be 150.
  
  @bye
@@@ -22,12 -22,16 +22,13 @@@ ffserver [options
  @chapter Description
  @c man begin DESCRIPTION
  
 -WARNING: avserver is unmaintained, largely broken and in need of a
 -complete rewrite. It probably won't work for you. Use at your own
 -risk.
 +ffserver is a streaming server for both audio and video. It supports
 -avserver is a streaming server for both audio and video. It supports
  several live feeds, streaming from files and time shifting on live feeds
  (you can seek to positions in the past on each live feed, provided you
 -specify a big enough feed storage in avserver.conf).
 +specify a big enough feed storage in ffserver.conf).
  
 -avserver runs in daemon mode by default; that is, it puts itself in
 +ffserver runs in daemon mode by default; that is, it puts itself in
  the background and detaches from its TTY, unless it is launched in
  debug mode or a NoDaemon option is specified in the configuration
  file.
Simple merge
Simple merge
Simple merge
@@@ -247,16 -246,13 +247,17 @@@ enum CodecID 
      CODEC_ID_WMV3IMAGE,
      CODEC_ID_VC1IMAGE,
  #if LIBAVCODEC_VERSION_MAJOR == 53
 -    CODEC_ID_G723_1,
 -    CODEC_ID_G729,
 +    CODEC_ID_G723_1_DEPRECATED,
 +    CODEC_ID_G729_DEPRECATED,
  #endif
 -    CODEC_ID_UTVIDEO,
 +    CODEC_ID_UTVIDEO_DEPRECATED,
      CODEC_ID_BMV_VIDEO,
      CODEC_ID_VBLE,
+     CODEC_ID_DXTORY,
 +    CODEC_ID_UTVIDEO = 0x800,
 +    CODEC_ID_ESCAPE130  = MKBETAG('E','1','3','0'),
 +
 +    CODEC_ID_G2M        = MKBETAG( 0 ,'G','2','M'),
  
      /* various PCM "codecs" */
      CODEC_ID_FIRST_AUDIO = 0x10000,     ///< A dummy id pointing at the start of audio codecs
  #include "put_bits.h"
  
  typedef struct CLJRContext {
-     AVCodecContext *avctx;
 +    AVClass        *avclass;
      AVFrame         picture;
 +    int             dither_type;
  } CLJRContext;
  
  static av_cold int common_init(AVCodecContext *avctx)
  {
      CLJRContext * const a = avctx->priv_data;
  
 +    avcodec_get_frame_defaults(&a->picture);
      avctx->coded_frame = &a->picture;
-     a->avctx = avctx;
  
      return 0;
  }
Simple merge
@@@ -233,8 -221,12 +233,13 @@@ static av_cold int tta_decode_init(AVCo
          s->data_length = get_bits_long(&s->gb, 32);
          skip_bits(&s->gb, 32); // CRC32 of header
  
+         if (s->channels == 0) {
+             av_log(s->avctx, AV_LOG_ERROR, "Invalid number of channels\n");
+             return AVERROR_INVALIDDATA;
+         }
          switch(s->bps) {
 +        case 1: avctx->sample_fmt = AV_SAMPLE_FMT_U8; break;
          case 2:
              avctx->sample_fmt = AV_SAMPLE_FMT_S16;
              avctx->bits_per_raw_sample = 16;
@@@ -86,10 -92,17 +92,17 @@@ struct AVFormatContext
  /**
   * @defgroup metadata_api Public Metadata API
   * @{
+  * @ingroup libavf
   * The metadata API allows libavformat to export metadata tags to a client
-  * application using a sequence of key/value pairs. Like all strings in FFmpeg,
-  * metadata must be stored as UTF-8 encoded Unicode. Note that metadata
+  * application when demuxing. Conversely it allows a client application to
+  * set metadata when muxing.
+  *
+  * Metadata is exported or set as pairs of key/value strings in the 'metadata'
+  * fields of the AVFormatContext, AVStream, AVChapter and AVProgram structs
 - * using the @ref lavu_dict "AVDictionary" API. Like all strings in Libav,
++ * using the @ref lavu_dict "AVDictionary" API. Like all strings in FFmpeg,
+  * metadata is assumed to be UTF-8 encoded Unicode. Note that metadata
   * exported by demuxers isn't checked to be valid UTF-8 in most cases.
+  *
   * Important concepts to keep in mind:
   * -  Keys are unique; there can never be 2 tags with the same key. This is
   *    also meant semantically, i.e., a demuxer should not knowingly produce
@@@ -309,10 -322,11 +322,14 @@@ typedef struct AVFormatParameters 
  #define AVFMT_NOBINSEARCH   0x2000 /**< Format does not allow to fallback to binary search via read_timestamp */
  #define AVFMT_NOGENSEARCH   0x4000 /**< Format does not allow to fallback to generic search */
  #define AVFMT_NO_BYTE_SEEK  0x8000 /**< Format does not allow seeking by bytes */
 +#define AVFMT_TS_NONSTRICT  0x8000000 /**< Format does not require strictly
 +                                           increasing timestamps, but they must
 +                                           still be monotonic */
  
+ /**
+  * @addtogroup lavf_encoding
+  * @{
+  */
  typedef struct AVOutputFormat {
      const char *name;
      /**
@@@ -1281,7 -1242,17 +1308,46 @@@ enum CodecID av_codec_get_id(const stru
   */
  unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum CodecID id);
  
- /* media file input */
+ /**
+  * Allocate an AVFormatContext.
+  * avformat_free_context() can be used to free the context and everything
+  * allocated by the framework within it.
+  */
+ AVFormatContext *avformat_alloc_context(void);
++#if FF_API_ALLOC_OUTPUT_CONTEXT
++/**
++ * @deprecated deprecated in favor of avformat_alloc_output_context2()
++ */
++attribute_deprecated
++AVFormatContext *avformat_alloc_output_context(const char *format,
++                                               AVOutputFormat *oformat,
++                                               const char *filename);
++#endif
++
++/**
++ * Allocate an AVFormatContext for an output format.
++ * avformat_free_context() can be used to free the context and
++ * everything allocated by the framework within it.
++ *
++ * @param *ctx is set to the created format context, or to NULL in
++ * case of failure
++ * @param oformat format to use for allocating the context, if NULL
++ * format_name and filename are used instead
++ * @param format_name the name of output format to use for allocating the
++ * context, if NULL filename is used instead
++ * @param filename the name of the filename to use for allocating the
++ * context, may be NULL
++ * @return >= 0 in case of success, a negative AVERROR code in case of
++ * failure
++ */
++int avformat_alloc_output_context2(AVFormatContext **ctx, AVOutputFormat *oformat,
++                                   const char *format_name, const char *filename);
++
+ /**
+  * @addtogroup lavf_decoding
+  * @{
+  */
  
  /**
   * Find AVInputFormat based on the short name of the input format.
@@@ -1388,44 -1350,6 +1454,8 @@@ attribute_deprecated int av_open_input_
   */
  int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options);
  
- /**
-  * Allocate an AVFormatContext.
-  * avformat_free_context() can be used to free the context and everything
-  * allocated by the framework within it.
-  */
- AVFormatContext *avformat_alloc_context(void);
- #if FF_API_ALLOC_OUTPUT_CONTEXT
- /**
-  * @deprecated deprecated in favor of avformat_alloc_output_context2()
-  */
- attribute_deprecated
- AVFormatContext *avformat_alloc_output_context(const char *format,
-                                                AVOutputFormat *oformat,
-                                                const char *filename);
- #endif
- /**
-  * Allocate an AVFormatContext for an output format.
-  * avformat_free_context() can be used to free the context and
-  * everything allocated by the framework within it.
-  *
-  * @param *ctx is set to the created format context, or to NULL in
-  * case of failure
-  * @param oformat format to use for allocating the context, if NULL
-  * format_name and filename are used instead
-  * @param format_name the name of output format to use for allocating the
-  * context, if NULL filename is used instead
-  * @param filename the name of the filename to use for allocating the
-  * context, may be NULL
-  * @return >= 0 in case of success, a negative AVERROR code in case of
-  * failure
-  */
- int avformat_alloc_output_context2(AVFormatContext **ctx, AVOutputFormat *oformat,
-                                    const char *format_name, const char *filename);
 +int av_demuxer_open(AVFormatContext *ic, AVFormatParameters *ap);
 +
  #if FF_API_FORMAT_PARAMETERS
  /**
   * Read packets of a media file to get stream information. This
@@@ -1835,29 -1750,11 +1868,32 @@@ int av_interleave_packet_per_dts(AVForm
   * @return 0 if OK, AVERROR_xxx on error
   */
  int av_write_trailer(AVFormatContext *s);
+ /**
+  * @}
+  */
  
 +/**
 + * Get timing information for the data currently output.
 + * The exact meaning of "currently output" depends on the format.
 + * It is mostly relevant for devices that have an internal buffer and/or
 + * work in real time.
 + * @param s          media file handle
 + * @param stream     stream in the media file
 + * @param dts[out]   DTS of the last packet output for the stream, in stream
 + *                   time_base units
 + * @param wall[out]  absolute time when that packet whas output,
 + *                   in microsecond
 + * @return  0 if OK, AVERROR(ENOSYS) if the format does not support it
 + * Note: some formats or devices may not allow to measure dts and wall
 + * atomically.
 + */
 +int av_get_output_timestamp(struct AVFormatContext *s, int stream,
 +                            int64_t *dts, int64_t *wall);
 +
  #if FF_API_DUMP_FORMAT
 +/**
 + * @deprecated Deprecated in favor of av_dump_format().
 + */
  attribute_deprecated void dump_format(AVFormatContext *ic,
                                        int index,
                                        const char *url,
Simple merge
Simple merge
Simple merge
@@@ -286,7 -280,7 +286,8 @@@ const AVCodecTag ff_codec_bmp_tags[] = 
      { CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'Y', '0') },
      { CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'Y', '2') },
      { CODEC_ID_VBLE,         MKTAG('V', 'B', 'L', 'E') },
 +    { CODEC_ID_ESCAPE130,    MKTAG('E', '1', '3', '0') },
+     { CODEC_ID_DXTORY,       MKTAG('x', 't', 'o', 'r') },
      { CODEC_ID_NONE,         0 }
  };
  
Simple merge
Simple merge
diff --cc tests/fate2.mak
Simple merge
index 0000000,9865726..9a7a980
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,4 +1,4 @@@
 -d149cadc43100d8e98ff04e57fdaa31f *./tests/data/vsynth1/cljr.avi
++ff4eebcd5bd7b6470f97867cdecb0bec *./tests/data/vsynth1/cljr.avi
+  5075660 ./tests/data/vsynth1/cljr.avi
 -4debaab994c2c7273bebaa0c5733017b *./tests/data/cljr.vsynth1.out.yuv
 -stddev:   30.75 PSNR: 18.37 MAXDIFF:  225 bytes:  7603200/  7603200
++0d473eb49653a05685178dd261de861c *./tests/data/cljr.vsynth1.out.yuv
++stddev:   30.70 PSNR: 18.39 MAXDIFF:  255 bytes:  7603200/  7603200
index 0000000,6f8670c..cf3c8e1
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,4 +1,4 @@@
 -86250984790dd745a932f36cf229cef7 *./tests/data/vsynth2/cljr.avi
++8ca3f24da468f32561100d3a1a71348d *./tests/data/vsynth2/cljr.avi
+  5075660 ./tests/data/vsynth2/cljr.avi
 -3a70ba2a535ef9c7fc6478b27a2cb58a *./tests/data/cljr.vsynth2.out.yuv
 -stddev:   10.48 PSNR: 27.72 MAXDIFF:   64 bytes:  7603200/  7603200
++a0126ba9f2b2192b6b63b485e0118114 *./tests/data/cljr.vsynth2.out.yuv
++stddev:   10.26 PSNR: 27.90 MAXDIFF:   62 bytes:  7603200/  7603200