]> git.sesse.net Git - ffmpeg/commitdiff
Merge commit '0c1959b056f6ccaa2eee2c824352ba93c8e36d52'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 15 May 2014 16:51:57 +0000 (18:51 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 15 May 2014 17:16:57 +0000 (19:16 +0200)
* commit '0c1959b056f6ccaa2eee2c824352ba93c8e36d52':
  lavf: add AVFMT_FLAG_BITEXACT.

Conflicts:
doc/APIchanges
libavformat/avformat.h
libavformat/flacenc.c
libavformat/movenc.c
libavformat/oggenc.c
libavformat/options_table.h
libavformat/version.h
tests/fate/video.mak

Merged-by: Michael Niedermayer <michaelni@gmx.at>
15 files changed:
1  2 
doc/APIchanges
libavformat/avformat.h
libavformat/flacenc.c
libavformat/matroskaenc.c
libavformat/movenc.c
libavformat/mux.c
libavformat/mxfenc.c
libavformat/oggenc.c
libavformat/options_table.h
libavformat/version.h
tests/fate-run.sh
tests/fate/filter-audio.mak
tests/fate/video.mak
tests/fate/wavpack.mak
tests/regression-funcs.sh

diff --cc doc/APIchanges
index a1c501d9d868399bab3c965a3bd86f8ef0c1d51e,57ef04f422655673daf0626cfb86e49f6b830b3a..4137775fc1780a677ffef9db63f6092aab6acf59
@@@ -15,9 -13,10 +15,13 @@@ libavutil:     2012-10-2
  
  API changes, most recent first:
  
+ 2014-05-xx - xxxxxxx - lavf 55.17.0 - avformat.h
+   Add AVMFT_FLAG_BITEXACT flag. Muxers now use it instead of checking
+   CODEC_FLAG_BITEXACT on the first stream.
 +2014-05-15 - xxxxxxx - lswr 0.19.100 - swresample.h
 +  Add swr_close()
 +
  2014-xx-xx - xxxxxxx - lavu 53.14.0 - pixfmt.h
    Add AV_PIX_FMT_VDA for new-style VDA acceleration.
  
index d09745acb839394673f1b71e047c7deec2effe64,8d134a0945eb81a4ae05449587530cd06d56c17e..55a3cfbd35d300b3e05dd1ecff0eb1b72ee3916a
@@@ -1252,10 -1004,13 +1252,17 @@@ typedef struct AVFormatContext 
  #define AVFMT_FLAG_CUSTOM_IO    0x0080 ///< The caller has supplied a custom AVIOContext, don't avio_close() it.
  #define AVFMT_FLAG_DISCARD_CORRUPT  0x0100 ///< Discard frames marked corrupted
  #define AVFMT_FLAG_FLUSH_PACKETS    0x0200 ///< Flush the AVIOContext every packet.
+ /**
+  * When muxing, try to avoid writing any random/volatile data to the output.
+  * This includes any random IDs, real-time timestamps/dates, muxer version, etc.
+  *
+  * This flag is mainly intended for testing.
+  */
+ #define AVFMT_FLAG_BITEXACT         0x0400
 +#define AVFMT_FLAG_MP4A_LATM    0x8000 ///< Enable RTP MP4A-LATM payload
 +#define AVFMT_FLAG_SORT_DTS    0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down)
 +#define AVFMT_FLAG_PRIV_OPT    0x20000 ///< Enable use of private options by delaying codec open (this could be made default once all code is converted)
 +#define AVFMT_FLAG_KEEP_SIDE_DATA 0x40000 ///< Don't merge side data but keep it separate.
  
      /**
       * Maximum size of the data read from input for determining
index 0eca5aaccb78a111ae0874e435c4b963b5234434,8a2316377215d20f986a364b8160fec823a3f160..d92801807ef6d3c73e294fc686e78c288ad61a8d
@@@ -97,8 -83,8 +97,8 @@@ static int flac_write_header(struct AVF
      if (ret)
          return ret;
  
 -    ret = flac_write_block_comment(s->pb, &s->metadata, 0,
 +    ret = flac_write_block_comment(s->pb, &s->metadata, !padding,
-                                    codec->flags & CODEC_FLAG_BITEXACT);
+                                    s->flags & AVFMT_FLAG_BITEXACT);
      if (ret)
          return ret;
  
Simple merge
index b3a764945484ea270a0ad2a334f02d7676ffe156,90874389987599b9ed97dd767b30f790d8fbc350..adcbcf2c0f8a2cf45a6e237a52da53f9d1ebd5b7
@@@ -3871,10 -3298,6 +3871,10 @@@ static int mov_write_header(AVFormatCon
          else if (!strcmp("f4v", s->oformat->name)) mov->mode = MODE_F4V;
      }
  
-         if (s->streams[i]->codec->flags & CODEC_FLAG_BITEXACT)
 +    for (i = 0; i < s->nb_streams; i++)
++        if (s->flags & AVFMT_FLAG_BITEXACT)
 +            mov->exact = 1;
 +
      /* Set the FRAGMENT flag if any of the fragmentation methods are
       * enabled. */
      if (mov->max_fragment_duration || mov->max_fragment_size ||
index cbe17f5d787126822f977e6178f9e648d80a6e4a,33257ea147d3e74ec9d9a79d55ed7eff90c4f5b7..175f1577417cc2cf0ff9aa2aeebda82c0ab11f28
@@@ -231,13 -148,15 +231,18 @@@ static int init_muxer(AVFormatContext *
  
      if ((ret = av_opt_set_dict(s, &tmp)) < 0)
          goto fail;
 +    if (s->priv_data && s->oformat->priv_class && *(const AVClass**)s->priv_data==s->oformat->priv_class &&
 +        (ret = av_opt_set_dict2(s->priv_data, &tmp, AV_OPT_SEARCH_CHILDREN)) < 0)
 +        goto fail;
  
+ #if FF_API_LAVF_BITEXACT
+     if (s->nb_streams && s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT)
+         s->flags |= AVFMT_FLAG_BITEXACT;
+ #endif
      // some sanity checks
      if (s->nb_streams == 0 && !(of->flags & AVFMT_NOSTREAMS)) {
 -        av_log(s, AV_LOG_ERROR, "no streams\n");
 +        av_log(s, AV_LOG_ERROR, "No streams to mux were specified\n");
          ret = AVERROR(EINVAL);
          goto fail;
      }
      }
  
      /* set muxer identification string */
-     if (s->nb_streams && !(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT)) {
+     if (!(s->flags & AVFMT_FLAG_BITEXACT)) {
          av_dict_set(&s->metadata, "encoder", LIBAVFORMAT_IDENT, 0);
 +    } else {
 +        av_dict_set(&s->metadata, "encoder", NULL, 0);
      }
  
      if (options) {
Simple merge
index 4ba6940d1024d0a58200ac1220efee9c07b20425,c52368dde3f79dbd0d82d128d87213f06524452d..375abadd445bfd96833c591b9b2533ed67ed6f57
@@@ -427,12 -423,9 +427,12 @@@ static int ogg_write_header(AVFormatCon
              return -1;
          }
          oggstream = av_mallocz(sizeof(*oggstream));
 +        if (!oggstream)
 +            return AVERROR(ENOMEM);
 +
          oggstream->page.stream_index = i;
  
-         if (!(st->codec->flags & CODEC_FLAG_BITEXACT))
+         if (!(s->flags & AVFMT_FLAG_BITEXACT))
              do {
                  serial_num = av_get_random_seed();
                  for (j = 0; j < i; j++) {
          st->priv_data = oggstream;
          if (st->codec->codec_id == AV_CODEC_ID_FLAC) {
              int err = ogg_build_flac_headers(st->codec, oggstream,
-                                              st->codec->flags & CODEC_FLAG_BITEXACT,
+                                              s->flags & AVFMT_FLAG_BITEXACT,
 -                                             &s->metadata);
 +                                             &st->metadata);
              if (err) {
                  av_log(s, AV_LOG_ERROR, "Error writing FLAC headers\n");
                  av_freep(&st->priv_data);
              }
          } else if (st->codec->codec_id == AV_CODEC_ID_SPEEX) {
              int err = ogg_build_speex_headers(st->codec, oggstream,
-                                               st->codec->flags & CODEC_FLAG_BITEXACT,
+                                               s->flags & AVFMT_FLAG_BITEXACT,
 -                                              &s->metadata);
 +                                              &st->metadata);
              if (err) {
                  av_log(s, AV_LOG_ERROR, "Error writing Speex headers\n");
                  av_freep(&st->priv_data);
              }
          } else if (st->codec->codec_id == AV_CODEC_ID_OPUS) {
              int err = ogg_build_opus_headers(st->codec, oggstream,
-                                              st->codec->flags & CODEC_FLAG_BITEXACT,
+                                              s->flags & AVFMT_FLAG_BITEXACT,
 -                                             &s->metadata);
 +                                             &st->metadata);
              if (err) {
                  av_log(s, AV_LOG_ERROR, "Error writing Opus headers\n");
                  av_freep(&st->priv_data);
                  return -1;
              }
  
-             p = ogg_write_vorbiscomment(7, st->codec->flags & CODEC_FLAG_BITEXACT,
+             p = ogg_write_vorbiscomment(7, s->flags & AVFMT_FLAG_BITEXACT,
 -                                        &oggstream->header_len[1], &s->metadata,
 +                                        &oggstream->header_len[1], &st->metadata,
                                          framing_bit);
              oggstream->header[1] = p;
              if (!p)
index be5003403c389bffb8b604d7cb841aa3f15ac4ef,70194202d7bc2e183e223d18e6905f3435288c32..359b38483aa1d418973c7d54ce77a8e88f3680bd
@@@ -45,12 -41,9 +45,13 @@@ static const AVOption avformat_options[
  {"noparse", "disable AVParsers, this needs nofillin too", 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_NOPARSE }, INT_MIN, INT_MAX, D, "fflags"},
  {"igndts", "ignore dts", 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_IGNDTS }, INT_MIN, INT_MAX, D, "fflags"},
  {"discardcorrupt", "discard corrupted frames", 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_DISCARD_CORRUPT }, INT_MIN, INT_MAX, D, "fflags"},
 +{"sortdts", "try to interleave outputted packets by dts", 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_SORT_DTS }, INT_MIN, INT_MAX, D, "fflags"},
 +{"keepside", "don't merge side data", 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_KEEP_SIDE_DATA }, INT_MIN, INT_MAX, D, "fflags"},
 +{"latm", "enable RTP MP4A-LATM payload", 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_MP4A_LATM }, INT_MIN, INT_MAX, E, "fflags"},
  {"nobuffer", "reduce the latency introduced by optional buffering", 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_NOBUFFER }, 0, INT_MAX, D, "fflags"},
 -{"analyzeduration", "how many microseconds are analyzed to estimate duration", OFFSET(max_analyze_duration), AV_OPT_TYPE_INT, {.i64 = 5*AV_TIME_BASE }, 0, INT_MAX, D},
 +{"seek2any", "allow seeking to non-keyframes on demuxer level when supported", OFFSET(seek2any), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 1, D},
+ {"bitexact", "do not write random/volatile data", 0, AV_OPT_TYPE_CONST, { .i64 = AVFMT_FLAG_BITEXACT }, 0, 0, E, "fflags" },
 +{"analyzeduration", "specify how many microseconds are analyzed to probe the input", OFFSET(max_analyze_duration), AV_OPT_TYPE_INT, {.i64 = 5*AV_TIME_BASE }, 0, INT_MAX, D},
  {"cryptokey", "decryption key", OFFSET(key), AV_OPT_TYPE_BINARY, {.dbl = 0}, 0, 0, D},
  {"indexmem", "max memory used for timestamp index (per stream)", OFFSET(max_index_size), AV_OPT_TYPE_INT, {.i64 = 1<<20 }, 0, INT_MAX, D},
  {"rtbufsize", "max memory used for buffering real-time frames", OFFSET(max_picture_buffer), AV_OPT_TYPE_INT, {.i64 = 3041280 }, 0, INT_MAX, D}, /* defaults to 1s of 15fps 352x288 YUYV422 video */
index 8905fb5b25cf715913a5059ff7d78c9b9c1c86ea,248ecdfd6cf84ba7cd8f9ed71d39dac069ebde17..c6667ca7bfd9eac0d94bd698fb7f8e9f7d19ec4c
@@@ -30,8 -30,8 +30,8 @@@
  #include "libavutil/version.h"
  
  #define LIBAVFORMAT_VERSION_MAJOR 55
- #define LIBAVFORMAT_VERSION_MINOR 37
- #define LIBAVFORMAT_VERSION_MICRO 102
 -#define LIBAVFORMAT_VERSION_MINOR 17
 -#define LIBAVFORMAT_VERSION_MICRO  0
++#define LIBAVFORMAT_VERSION_MINOR 38
++#define LIBAVFORMAT_VERSION_MICRO 100
  
  #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
                                                 LIBAVFORMAT_VERSION_MINOR, \
  #ifndef FF_API_REFERENCE_DTS
  #define FF_API_REFERENCE_DTS            (LIBAVFORMAT_VERSION_MAJOR < 56)
  #endif
+ #ifndef FF_API_LAVF_BITEXACT
+ #define FF_API_LAVF_BITEXACT            (LIBAVFORMAT_VERSION_MAJOR < 56)
+ #endif
  
 +#ifndef FF_API_ALLOC_OUTPUT_CONTEXT
 +#define FF_API_ALLOC_OUTPUT_CONTEXT    (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_FORMAT_PARAMETERS
 +#define FF_API_FORMAT_PARAMETERS       (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_NEW_STREAM
 +#define FF_API_NEW_STREAM              (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_SET_PTS_INFO
 +#define FF_API_SET_PTS_INFO            (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_CLOSE_INPUT_FILE
 +#define FF_API_CLOSE_INPUT_FILE        (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_READ_PACKET
 +#define FF_API_READ_PACKET             (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_ASS_SSA
 +#define FF_API_ASS_SSA                 (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_R_FRAME_RATE
 +#define FF_API_R_FRAME_RATE            1
 +#endif
  #endif /* AVFORMAT_VERSION_H */
index 74f4525b9e737769e525a28f74c3bc67f1e8e171,a10a52307b4a4c054f0749788489154351fce9ac..60cb569faf81889a6ddcaa96e01e0678cfc6cf1f
@@@ -123,11 -114,11 +123,11 @@@ enc_dec_pcm()
      encfile="${outdir}/${test}.${out_fmt}"
      cleanfiles=$encfile
      encfile=$(target_path ${encfile})
 -    avconv -i $src_file "$@" -f $out_fmt -y ${encfile} || return
 -    avconv -f $out_fmt -i ${encfile} -c:a pcm_${pcm_fmt} -f ${dec_fmt} -
 +    ffmpeg -i $src_file "$@" -f $out_fmt -y ${encfile} || return
 +    ffmpeg -flags +bitexact -i ${encfile} -c:a pcm_${pcm_fmt} -f ${dec_fmt} -
  }
  
- FLAGS="-flags +bitexact -sws_flags +accurate_rnd+bitexact"
+ FLAGS="-flags +bitexact -sws_flags +accurate_rnd+bitexact -fflags +bitexact"
  DEC_OPTS="-threads $threads -idct simple $FLAGS"
  ENC_OPTS="-threads 1        -idct simple -dct fastint"
  
index 725fb7ea27137007b9b64f74479c9d7996541a7a,363ae2e317245a8a789a4420318d21aa498b4642..210b89eb077bff608f7d8ac13251687089afa7b3
@@@ -56,17 -45,17 +56,17 @@@ FATE_FILTER_CHANNELMAP += fate-filter-c
  fate-filter-channelmap-one-int: tests/data/filtergraphs/channelmap_one_int
  fate-filter-channelmap-one-int: SRC = $(TARGET_PATH)/tests/data/asynth-44100-6.wav
  fate-filter-channelmap-one-int: tests/data/asynth-44100-6.wav
- fate-filter-channelmap-one-int: CMD = md5 -i $(SRC) -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/channelmap_one_int -f wav -flags +bitexact
+ fate-filter-channelmap-one-int: CMD = md5 -i $(SRC) -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/channelmap_one_int -f wav -fflags +bitexact
  fate-filter-channelmap-one-int: CMP = oneline
 -fate-filter-channelmap-one-int: REF = 21f1977c4f9705e2057083f84764e685
 +fate-filter-channelmap-one-int: REF = 428b8f9fac6d57147069b97335019ef5
  
  FATE_FILTER_CHANNELMAP += fate-filter-channelmap-one-str
  fate-filter-channelmap-one-str: tests/data/filtergraphs/channelmap_one_str
  fate-filter-channelmap-one-str: SRC = $(TARGET_PATH)/tests/data/asynth-44100-2.wav
  fate-filter-channelmap-one-str: tests/data/asynth-44100-2.wav
- fate-filter-channelmap-one-str: CMD = md5 -i $(SRC) -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/channelmap_one_str -f wav -flags +bitexact
+ fate-filter-channelmap-one-str: CMD = md5 -i $(SRC) -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/channelmap_one_str -f wav -fflags +bitexact
  fate-filter-channelmap-one-str: CMP = oneline
 -fate-filter-channelmap-one-str: REF = 9fe9bc452282dfd94fd80e9491607a0c
 +fate-filter-channelmap-one-str: REF = e788890db6a11c2fb29d7c4229072d49
  
  FATE_AFILTER-$(call FILTERDEMDECENCMUX, CHANNELMAP, WAV, PCM_S16LE, PCM_S16LE, WAV) += $(FATE_FILTER_CHANNELMAP)
  
index fd42068eeafd213d86d00b324b0144778a56b4cc,5a48e10e8f0ae9ddd8e53c387564362bbe99a686..44c7c722606e0b64944b739767375bde800dfb10
@@@ -150,57 -145,54 +150,57 @@@ fate-iff-fibonacci: CMD = md5 -i $(TARG
  FATE_IFF-$(CONFIG_IFF_ILBM_DECODER) += fate-iff-ilbm
  fate-iff-ilbm: CMD = framecrc -i $(TARGET_SAMPLES)/iff/lms-matriks.ilbm -pix_fmt rgb24
  
 -FATE_SAMPLES_AVCONV-$(CONFIG_IFF_DEMUXER)  += $(FATE_IFF-yes)
 +FATE_VIDEO-$(CONFIG_IFF_DEMUXER)  += $(FATE_IFF-yes)
  fate-iff: $(FATE_IFF-yes)
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, IPMOVIE, INTERPLAY_VIDEO) += fate-interplay-mve-8bit
 +FATE_VIDEO-$(call DEMDEC, IPMOVIE, INTERPLAY_VIDEO) += fate-interplay-mve-8bit
  fate-interplay-mve-8bit: CMD = framecrc -i $(TARGET_SAMPLES)/interplay-mve/interplay-logo-2MB.mve -pix_fmt rgb24 -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, IPMOVIE, INTERPLAY_VIDEO) += fate-interplay-mve-16bit
 +FATE_VIDEO-$(call DEMDEC, IPMOVIE, INTERPLAY_VIDEO) += fate-interplay-mve-16bit
  fate-interplay-mve-16bit: CMD = framecrc -i $(TARGET_SAMPLES)/interplay-mve/descent3-level5-16bit-partial.mve -pix_fmt rgb24 -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, MXF, JPEG2000) += fate-jpeg2000-dcinema
 +FATE_VIDEO-$(call DEMDEC, MXF, JPEG2000) += fate-jpeg2000-dcinema
  fate-jpeg2000-dcinema: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/chiens_dcinema2K.mxf -pix_fmt xyz12le
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, JV, JV) += fate-jv
 +FATE_VIDEO-$(call DEMDEC, JV, JV) += fate-jv
  fate-jv: CMD = framecrc -i $(TARGET_SAMPLES)/jv/intro.jv -an -pix_fmt rgb24
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, KGV1) += fate-kgv1
 +FATE_VIDEO-$(call DEMDEC, AVI, KGV1) += fate-kgv1
  fate-kgv1: CMD = framecrc -i $(TARGET_SAMPLES)/kega/kgv1.avi -pix_fmt rgb555le -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, KMVC) += fate-kmvc
 +FATE_VIDEO-$(call DEMDEC, AVI, KMVC) += fate-kmvc
  fate-kmvc: CMD = framecrc -i $(TARGET_SAMPLES)/KMVC/LOGO1.AVI -an -t 3 -pix_fmt rgb24
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, EA, MDEC) += fate-mdec
 +FATE_VIDEO-$(call DEMDEC, EA, MDEC) += fate-mdec
  fate-mdec: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/ea-dct/NFS2Esprit-partial.dct -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, STR, MDEC) += fate-mdec-v3
 +FATE_VIDEO-$(call DEMDEC, STR, MDEC) += fate-mdec-v3
  fate-mdec-v3: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/psx-str/abc000_cut.str -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, MSNWC_TCP, MIMIC) += fate-mimic
 +FATE_VIDEO-$(call DEMDEC, MSNWC_TCP, MIMIC) += fate-mimic
  fate-mimic: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/mimic/mimic2-womanloveffmpeg.cam
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, MOV, MJPEGB) += fate-mjpegb
 +FATE_VIDEO-$(call DEMDEC, MOV, MJPEGB) += fate-mjpegb
- fate-mjpegb: CMD = framecrc -idct simple -flags +bitexact -i $(TARGET_SAMPLES)/mjpegb/mjpegb_part.mov -an
+ fate-mjpegb: CMD = framecrc -idct simple -fflags +bitexact -i $(TARGET_SAMPLES)/mjpegb/mjpegb_part.mov -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, MVI, MOTIONPIXELS) += fate-motionpixels
 +FATE_VIDEO-$(call DEMDEC, MVI, MOTIONPIXELS) += fate-motionpixels
  fate-motionpixels: CMD = framecrc -i $(TARGET_SAMPLES)/motion-pixels/INTRO-partial.MVI -an -pix_fmt rgb24 -vframes 111
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, MPEGTS, MPEG2VIDEO) += fate-mpeg2-field-enc
 +FATE_VIDEO-$(call DEMDEC, MPEGTS, MPEG2VIDEO) += fate-mpeg2-field-enc
  fate-mpeg2-field-enc: CMD = framecrc -flags +bitexact -idct simple -i $(TARGET_SAMPLES)/mpeg2/mpeg2_field_encoding.ts -an -vframes 30
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, MV, MVC1) += fate-mv-mvc1
 +FATE_VIDEO-$(call DEMDEC, MV, MVC1) += fate-mv-mvc1
  fate-mv-mvc1: CMD = framecrc -i $(TARGET_SAMPLES)/mv/posture.mv -an -frames 25 -pix_fmt rgb555le
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, MV, MVC2) += fate-mv-mvc2
 +FATE_VIDEO-$(call DEMDEC, MV, MVC2) += fate-mv-mvc2
  fate-mv-mvc2: CMD = framecrc -i $(TARGET_SAMPLES)/mv/12345.mv -an -frames 30 -pix_fmt bgra
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, MV, SGIRLE) += fate-mv-sgirle
 +FATE_VIDEO-$(call DEMDEC, MV, SGIRLE) += fate-mv-sgirle
  fate-mv-sgirle: CMD = framecrc -i $(TARGET_SAMPLES)/mv/pet-rle.movie -an
  
 +FATE_VIDEO-$(call DEMDEC, MXG, MXPEG) += fate-mxpeg
 +fate-mxpeg: CMD = framecrc -idct simple -flags +bitexact -i $(TARGET_SAMPLES)/mxpeg/m1.mxg -an
 +
  # FIXME dropped frames in this test because of coarse timebase
  FATE_NUV += fate-nuv-rtjpeg
  fate-nuv-rtjpeg: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/nuv/Today.nuv -an
@@@ -256,53 -251,42 +256,53 @@@ fate-txd-16bpp: CMD = framecrc -i $(TAR
  FATE_TXD += fate-txd-pal8
  fate-txd-pal8: CMD = framecrc -i $(TARGET_SAMPLES)/txd/outro.txd -pix_fmt rgb24 -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, TXD, TXD) += $(FATE_TXD)
 +FATE_VIDEO-$(call DEMDEC, TXD, TXD) += $(FATE_TXD)
  fate-txd: $(FATE_TXD)
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, ULTI) += fate-ulti
 +FATE_VIDEO-$(call DEMDEC, AVI, ULTI) += fate-ulti
  fate-ulti: CMD = framecrc -i $(TARGET_SAMPLES)/ulti/hit12w.avi -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, V210) += fate-v210
 +FATE_VIDEO-$(call DEMDEC, AVI, V210) += fate-v210
  fate-v210: CMD = framecrc -i $(TARGET_SAMPLES)/v210/v210_720p-partial.avi -pix_fmt yuv422p16be -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, MOV, V410) += fate-v410dec
 +FATE_VIDEO-$(call DEMDEC, MOV, V410) += fate-v410dec
  fate-v410dec: CMD = framecrc -i $(TARGET_SAMPLES)/v410/lenav410.mov -pix_fmt yuv444p10le
  
 -FATE_SAMPLES_AVCONV-$(call ENCDEC, V410 PGMYUV, AVI IMAGE2) += fate-v410enc
 +FATE_VIDEO-$(call ENCDEC, V410 PGMYUV, AVI IMAGE2) += fate-v410enc
  fate-v410enc: $(VREF)
- fate-v410enc: CMD = md5 -f image2 -vcodec pgmyuv -i $(TARGET_PATH)/tests/vsynth1/%02d.pgm -flags +bitexact -vcodec v410 -f avi
+ fate-v410enc: CMD = md5 -f image2 -vcodec pgmyuv -i $(TARGET_PATH)/tests/vsynth1/%02d.pgm -fflags +bitexact -vcodec v410 -f avi
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, SIFF, VB) += fate-vb
 +FATE_VIDEO-$(call DEMDEC, SIFF, VB) += fate-vb
  fate-vb: CMD = framecrc -i $(TARGET_SAMPLES)/SIFF/INTRO_B.VB -t 3 -pix_fmt rgb24 -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, VCR1) += fate-vcr1
 +FATE_VIDEO-$(call DEMDEC, AVI, VCR1) += fate-vcr1
  fate-vcr1: CMD = framecrc -i $(TARGET_SAMPLES)/vcr1/VCR1test.avi -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, XL) += fate-videoxl
 +FATE_VIDEO-$(call DEMDEC, AVI, MPEG2VIDEO) += fate-vcr2
 +fate-vcr2: CMD = framecrc -flags +bitexact -idct simple -i $(TARGET_SAMPLES)/vcr2/VCR2test.avi -an
 +
 +FATE_VIDEO-$(call DEMDEC, AVI, XL) += fate-videoxl
  fate-videoxl: CMD = framecrc -i $(TARGET_SAMPLES)/vixl/pig-vixl.avi
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, WSVQA, VQA) += fate-vqa-cc
 +FATE_VIDEO-$(call DEMDEC, WSVQA, VQA) += fate-vqa-cc
  fate-vqa-cc: CMD = framecrc -i $(TARGET_SAMPLES)/vqa/cc-demo1-partial.vqa -pix_fmt rgb24 -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, WC3, XAN_WC3) += fate-wc3movie-xan
 +FATE_VIDEO-$(call DEMDEC, WC3, XAN_WC3) += fate-wc3movie-xan
  fate-wc3movie-xan: CMD = framecrc -i $(TARGET_SAMPLES)/wc3movie/SC_32-part.MVE -pix_fmt rgb24
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, WNV1) += fate-wnv1
 +FATE_VIDEO-$(call DEMDEC, AVI, WNV1) += fate-wnv1
  fate-wnv1: CMD = framecrc -i $(TARGET_SAMPLES)/wnv1/wnv1-codec.avi -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, YOP, YOP) += fate-yop
 +FATE_VIDEO-$(call DEMDEC, YOP, YOP) += fate-yop
  fate-yop: CMD = framecrc -i $(TARGET_SAMPLES)/yop/test1.yop -pix_fmt rgb24 -an
  
 -FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, XAN_WC4) += fate-xxan-wc4
 +FATE_VIDEO-$(call DEMDEC, AVI, XAN_WC4) += fate-xxan-wc4
  fate-xxan-wc4: CMD = framecrc -i $(TARGET_SAMPLES)/wc4-xan/wc4trailer-partial.avi -an
 +
 +FATE_VIDEO-$(call DEMDEC, WAV, SMVJPEG) += fate-smvjpeg
 +fate-smvjpeg: CMD = framecrc -idct simple -flags +bitexact -i $(TARGET_SAMPLES)/smv/clock.smv -an
 +
 +FATE_VIDEO += $(FATE_VIDEO-yes)
 +
 +FATE_SAMPLES_FFMPEG += $(FATE_VIDEO)
 +fate-video: $(FATE_VIDEO)
index 98e09980f7dcad18954fbe741f79bfa2dc3fc727,3432cc6e0dba5044e8720af8606180aa312ea792..240f5ead940e91cc5ec7d0017ffc0bea33f6ba57
@@@ -89,14 -89,14 +89,14 @@@ FATE_WAVPACK-$(call DEMDEC, MATROSKA, W
  fate-wavpack-matroskamode: CMD = md5 -i $(TARGET_SAMPLES)/wavpack/special/matroska_mode.mka -f s16le
  
  FATE_WAVPACK-$(call DEMMUX, WV, MATROSKA) += fate-wavpack-matroska_mux-mono
- fate-wavpack-matroska_mux-mono: CMD = md5 -i $(TARGET_SAMPLES)/wavpack/num_channels/mono_16bit_int.wv -c copy -flags +bitexact -f matroska
+ fate-wavpack-matroska_mux-mono: CMD = md5 -i $(TARGET_SAMPLES)/wavpack/num_channels/mono_16bit_int.wv -c copy -fflags +bitexact -f matroska
  fate-wavpack-matroska_mux-mono: CMP = oneline
 -fate-wavpack-matroska_mux-mono: REF = 6bd769b3f0e9d7fa6261c3b73a53eb7d
 +fate-wavpack-matroska_mux-mono: REF = a2987e2e51e01a35e47e7da13eb47a35
  
  FATE_WAVPACK-$(call DEMMUX, WV, MATROSKA) += fate-wavpack-matroska_mux-61
- fate-wavpack-matroska_mux-61: CMD = md5 -i $(TARGET_SAMPLES)/wavpack/num_channels/eva_2.22_6.1_16bit-partial.wv -c copy -flags +bitexact -f matroska
+ fate-wavpack-matroska_mux-61: CMD = md5 -i $(TARGET_SAMPLES)/wavpack/num_channels/eva_2.22_6.1_16bit-partial.wv -c copy -fflags +bitexact -f matroska
  fate-wavpack-matroska_mux-61: CMP = oneline
 -fate-wavpack-matroska_mux-61: REF = 2d2f1e7f81a8b1983fcffc7f24de8a11
 +fate-wavpack-matroska_mux-61: REF = ffba4ddea1ba71f7a5901d9ed1a267be
  
  FATE_SAMPLES_AVCONV += $(FATE_WAVPACK-yes)
  fate-wavpack: $(FATE_WAVPACK-yes)
Simple merge