Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 10 May 2012 00:14:44 +0000 (02:14 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 10 May 2012 00:25:41 +0000 (02:25 +0200)
* qatar/master: (27 commits)
  libxvid: Give more suitable names to libxvid-related files.
  libxvid: Separate libxvid encoder from libxvid rate control code.
  jpeglsdec: Remove write-only variable in ff_jpegls_decode_lse().
  fate: cosmetics: lowercase some comments
  fate: Give more consistent names to some RealVideo/RealAudio tests.
  lavfi: add avfilter_get_audio_buffer_ref_from_arrays().
  lavfi: add extended_data to AVFilterBuffer.
  lavc: check that extended_data is properly set in avcodec_encode_audio2().
  lavc: pad last audio frame with silence when needed.
  samplefmt: add a function for filling a buffer with silence.
  samplefmt: add a function for copying audio samples.
  lavr: do not try to copy to uninitialized output audio data.
  lavr: make avresample_read() with NULL output discard samples.
  fate: split idroq audio and video into separate tests
  fate: improve dependencies
  fate: add convenient shorthands for ea-vp6, libavcodec, libavutil tests
  fate: split some combined tests into separate audio and video tests
  fate: fix dependencies for probe tests
  mips: intreadwrite: fix inline asm for gcc 4.8
  mips: intreadwrite: remove unnecessary inline asm
  ...

Conflicts:
cmdutils.h
configure
doc/APIchanges
doc/filters.texi
ffmpeg.c
ffplay.c
libavcodec/internal.h
libavcodec/jpeglsdec.c
libavcodec/libschroedingerdec.c
libavcodec/libxvid.c
libavcodec/libxvid_rc.c
libavcodec/utils.c
libavcodec/version.h
libavfilter/avfilter.c
libavfilter/avfilter.h
libavfilter/buffersink.h
tests/Makefile
tests/fate/aac.mak
tests/fate/audio.mak
tests/fate/demux.mak
tests/fate/ea.mak
tests/fate/image.mak
tests/fate/libavutil.mak
tests/fate/lossless-audio.mak
tests/fate/lossless-video.mak
tests/fate/microsoft.mak
tests/fate/qt.mak
tests/fate/real.mak
tests/fate/screen.mak
tests/fate/video.mak
tests/fate/voice.mak
tests/fate/vqf.mak
tests/ref/fate/ea-mad
tests/ref/fate/ea-tqi

Merged-by: Michael Niedermayer <michaelni@gmx.at>
59 files changed:
1  2 
cmdutils.h
configure
doc/APIchanges
doc/ffmpeg.texi
ffmpeg.c
ffplay.c
libavcodec/Makefile
libavcodec/avcodec.h
libavcodec/internal.h
libavcodec/jpeglsdec.c
libavcodec/libschroedingerdec.c
libavcodec/libxvid.c
libavcodec/libxvid.h
libavcodec/libxvid_rc.c
libavcodec/options_table.h
libavcodec/utils.c
libavcodec/version.h
libavfilter/Makefile
libavfilter/allfilters.c
libavfilter/avcodec.c
libavfilter/avcodec.h
libavfilter/avfilter.c
libavfilter/avfilter.h
libavfilter/buffersink.c
libavfilter/buffersink.h
libavfilter/defaults.c
libavformat/Makefile
libavformat/allformats.c
libavformat/options_table.h
libavformat/rtsp.c
libavformat/rtsp.h
libavresample/utils.c
libavutil/mips/intreadwrite.h
libavutil/samplefmt.c
libavutil/samplefmt.h
tests/Makefile
tests/fate/aac.mak
tests/fate/audio.mak
tests/fate/demux.mak
tests/fate/ea.mak
tests/fate/h264.mak
tests/fate/image.mak
tests/fate/lossless-audio.mak
tests/fate/lossless-video.mak
tests/fate/mapchan.mak
tests/fate/microsoft.mak
tests/fate/mpc.mak
tests/fate/probe.mak
tests/fate/prores.mak
tests/fate/qt.mak
tests/fate/real.mak
tests/fate/screen.mak
tests/fate/video.mak
tests/fate/voice.mak
tests/fate/vpx.mak
tests/fate/vqf.mak
tests/ref/fate/ea-mad
tests/ref/fate/ea-tqi
tests/ref/fate/rv40

diff --cc cmdutils.h
Simple merge
diff --cc configure
+++ b/configure
@@@ -1217,7 -1110,7 +1217,8 @@@ HAVE_LIST=
      memalign
      mkstemp
      mmap
+     netinet_sctp_h
 +    PeekNamedPipe
      poll_h
      posix_memalign
      round
@@@ -1699,16 -1538,14 +1701,16 @@@ yadif_filter_deps="gpl
  avdevice_deps="avcodec avformat"
  avfilter_deps="swscale"
  avformat_deps="avcodec"
 +postproc_deps="gpl"
  
  # programs
 -avconv_deps="avcodec avfilter avformat avresample swscale format_filter"
 -avplay_deps="avcodec avformat swscale sdl"
 -avplay_select="rdft"
 -avprobe_deps="avcodec avformat"
 -avserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer !shared"
 -avserver_extralibs='$ldl'
 +ffplay_deps="avcodec avformat swscale swresample sdl"
 +ffplay_select="buffersink_filter rdft"
 +ffprobe_deps="avcodec avformat"
 +ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
 +ffserver_extralibs='$ldl'
- ffmpeg_deps="avcodec avfilter avformat swscale swresample"
++ffmpeg_deps="avcodec avfilter avformat swscale swresample format_filter"
 +ffmpeg_select="buffersink_filter"
  
  doc_deps="texi2html"
  
diff --cc doc/APIchanges
@@@ -15,15 -13,15 +15,21 @@@ libavutil:     2011-04-1
  
  API changes, most recent first:
  
 -2012-xx-xx - xxxxxxx - lavc 54.13.0 - avcodec.h
 -  Add sample_rate and channel_layout fields to AVFrame.
 -
 +2012-04-20 - xxxxxxx - lavfi 2.70.100
 +  Add avfilter_unref_bufferp() to avfilter.h.
 +
 +2012-04-12 - xxxxxxx - lavfi 2.68.100
 +  Install libavfilter/asrc_abuffer.h public header.
 +
 +2012-03-26 - a67d9cf - lavfi 2.66.100
 +  Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions.
 +
+ 2012-xx-xx - xxxxxxx - lavc 54.13.1
+   For audio formats with fixed frame size, the last frame
+   no longer needs to be padded with silence, libavcodec
+   will handle this internally (effectively all encoders
+   behave as if they had CODEC_CAP_SMALL_LAST_FRAME set).
  2012-xx-xx - xxxxxxx - lavr 0.0.1
    Change AV_MIX_COEFF_TYPE_Q6 to AV_MIX_COEFF_TYPE_Q8.
  
diff --cc doc/ffmpeg.texi
Simple merge
diff --cc ffmpeg.c
+++ b/ffmpeg.c
@@@ -672,53 -583,24 +672,66 @@@ static void filter_release_buffer(AVFil
      unref_buffer(buf->ist, buf);
  }
  
- static const enum PixelFormat *choose_pixel_fmts(OutputStream *ost)
 +static enum PixelFormat choose_pixel_fmt(AVStream *st, AVCodec *codec, enum PixelFormat target)
 +{
 +    if (codec && codec->pix_fmts) {
 +        const enum PixelFormat *p = codec->pix_fmts;
 +        int has_alpha= av_pix_fmt_descriptors[target].nb_components % 2 == 0;
 +        enum PixelFormat best= PIX_FMT_NONE;
 +        if (st->codec->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL) {
 +            if (st->codec->codec_id == CODEC_ID_MJPEG) {
 +                p = (const enum PixelFormat[]) { PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_NONE };
 +            } else if (st->codec->codec_id == CODEC_ID_LJPEG) {
 +                p = (const enum PixelFormat[]) { PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUVJ444P, PIX_FMT_YUV420P,
 +                                                 PIX_FMT_YUV422P, PIX_FMT_YUV444P, PIX_FMT_BGRA, PIX_FMT_NONE };
 +            }
 +        }
 +        for (; *p != PIX_FMT_NONE; p++) {
 +            best= avcodec_find_best_pix_fmt2(best, *p, target, has_alpha, NULL);
 +            if (*p == target)
 +                break;
 +        }
 +        if (*p == PIX_FMT_NONE) {
 +            if (target != PIX_FMT_NONE)
 +                av_log(NULL, AV_LOG_WARNING,
 +                       "Incompatible pixel format '%s' for codec '%s', auto-selecting format '%s'\n",
 +                       av_pix_fmt_descriptors[target].name,
 +                       codec->name,
 +                       av_pix_fmt_descriptors[best].name);
 +            return best;
 +        }
 +    }
 +    return target;
 +}
 +
+ static char *choose_pixel_fmts(OutputStream *ost)
  {
      if (ost->st->codec->pix_fmt != PIX_FMT_NONE) {
-         ost->pix_fmts[0] = choose_pixel_fmt(ost->st, ost->enc, ost->st->codec->pix_fmt);
-         return ost->pix_fmts;
 -        return av_strdup(av_get_pix_fmt_name(ost->st->codec->pix_fmt));
++        return av_strdup(av_get_pix_fmt_name(choose_pixel_fmt(ost->st, ost->enc, ost->st->codec->pix_fmt)));
      } else if (ost->enc->pix_fmts) {
 -        for (p = ost->enc->pix_fmts; *p != PIX_FMT_NONE; p++)
+         const enum PixelFormat *p;
+         AVIOContext *s = NULL;
+         uint8_t *ret;
+         int len;
+         if (avio_open_dyn_buf(&s) < 0)
+             exit_program(1);
-                 return (const enum PixelFormat[]) { PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_NONE };
++        p = ost->enc->pix_fmts;
 +        if (ost->st->codec->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL) {
 +            if (ost->st->codec->codec_id == CODEC_ID_MJPEG) {
-                 return (const enum PixelFormat[]) { PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUVJ444P, PIX_FMT_YUV420P,
++                p = (const enum PixelFormat[]) { PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_NONE };
 +            } else if (ost->st->codec->codec_id == CODEC_ID_LJPEG) {
-         return ost->enc->pix_fmts;
++                p = (const enum PixelFormat[]) { PIX_FMT_YUVJ420P, PIX_FMT_YUVJ422P, PIX_FMT_YUVJ444P, PIX_FMT_YUV420P,
 +                                                    PIX_FMT_YUV422P, PIX_FMT_YUV444P, PIX_FMT_BGRA, PIX_FMT_NONE };
 +            }
 +        }
++
++        for (; *p != PIX_FMT_NONE; p++)
+             avio_printf(s, "%s:", av_get_pix_fmt_name(*p));
+         len = avio_close_dyn_buf(s, &ret);
+         ret[len - 1] = 0;
+         return ret;
      } else
          return NULL;
  }
@@@ -727,10 -609,9 +740,10 @@@ static int configure_video_filters(Filt
  {
      InputStream  *ist = fg->inputs[0]->ist;
      OutputStream *ost = fg->outputs[0]->ost;
-     AVFilterContext *last_filter, *filter;
+     AVFilterContext *in_filter, *out_filter, *filter;
      AVCodecContext *codec = ost->st->codec;
-     enum PixelFormat *pix_fmts = choose_pixel_fmts(ost);
 +    AVBufferSinkParams *buffersink_params = av_buffersink_params_alloc();
+     char *pix_fmts;
      AVRational sample_aspect_ratio;
      char args[255];
      int ret;
                                         "src", args, NULL, fg->graph);
      if (ret < 0)
          return ret;
-     ret = avfilter_graph_create_filter(&fg->outputs[0]->filter, avfilter_get_by_name("buffersink"),
-                                        "out", NULL, pix_fmts, fg->graph);
 +
 +#if FF_API_OLD_VSINK_API
-     buffersink_params->pixel_fmts = pix_fmts;
-     ret = avfilter_graph_create_filter(&fg->outputs[0]->filter, avfilter_get_by_name("buffersink"),
+     ret = avfilter_graph_create_filter(&fg->outputs[0]->filter,
+                                        avfilter_get_by_name("buffersink"),
+                                        "out", NULL, NULL, fg->graph);
 +#else
++    ret = avfilter_graph_create_filter(&fg->outputs[0]->filter,
++                                       avfilter_get_by_name("buffersink"),
 +                                       "out", NULL, buffersink_params, fg->graph);
 +#endif
 +    av_freep(&buffersink_params);
 +
      if (ret < 0)
          return ret;
-     last_filter = fg->inputs[0]->filter;
+     in_filter  = fg->inputs[0]->filter;
+     out_filter = fg->outputs[0]->filter;
  
      if (codec->width || codec->height) {
          snprintf(args, 255, "%d:%d:flags=0x%X",
          inputs->pad_idx = 0;
          inputs->next    = NULL;
  
 -        if ((ret = avfilter_graph_parse(fg->graph, ost->avfilter, inputs, outputs, NULL)) < 0)
 +        if ((ret = avfilter_graph_parse(fg->graph, ost->avfilter, &inputs, &outputs, NULL)) < 0)
              return ret;
 +        av_freep(&ost->avfilter);
      } else {
-         if ((ret = avfilter_link(last_filter, 0, fg->outputs[0]->filter, 0)) < 0)
+         if ((ret = avfilter_link(in_filter, 0, out_filter, 0)) < 0)
              return ret;
      }
  
@@@ -923,19 -808,11 +952,19 @@@ static int configure_output_filter(Filt
      AVFilterContext *last_filter = out->filter_ctx;
      int pad_idx = out->pad_idx;
      int ret;
-     enum PixelFormat *pix_fmts = choose_pixel_fmts(ofilter->ost);
 +    AVBufferSinkParams *buffersink_params = av_buffersink_params_alloc();
  
 -
 +#if FF_API_OLD_VSINK_API
-     ret = avfilter_graph_create_filter(&ofilter->filter, avfilter_get_by_name("buffersink"),
-                                        "out", NULL, pix_fmts, fg->graph);
++    ret = avfilter_graph_create_filter(&ofilter->filter,
++                                       avfilter_get_by_name("buffersink"),
++                                       "out", NULL, NULL, fg->graph);
 +#else
-     buffersink_params->pixel_fmts = pix_fmts;
-     ret = avfilter_graph_create_filter(&ofilter->filter, avfilter_get_by_name("buffersink"),
+     ret = avfilter_graph_create_filter(&ofilter->filter,
+                                        avfilter_get_by_name("buffersink"),
 -                                       "out", NULL, pix_fmts, fg->graph);
 +                                       "out", NULL, buffersink_params, fg->graph);
 +#endif
 +    av_freep(&buffersink_params);
 +
      if (ret < 0)
          return ret;
  
diff --cc ffplay.c
+++ b/ffplay.c
@@@ -1743,30 -1709,28 +1743,40 @@@ static AVFilter input_filter 
  
  static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const char *vfilters)
  {
 +    static const enum PixelFormat pix_fmts[] = { PIX_FMT_YUV420P, PIX_FMT_NONE };
      char sws_flags_str[128];
      int ret;
 -    AVFilterContext *filt_src = NULL, *filt_out = NULL, *filt_format;
 +    AVBufferSinkParams *buffersink_params = av_buffersink_params_alloc();
-     AVFilterContext *filt_src = NULL, *filt_out = NULL;
++    AVFilterContext *filt_src = NULL, *filt_out = NULL, *filt_format;;
      snprintf(sws_flags_str, sizeof(sws_flags_str), "flags=%d", sws_flags);
      graph->scale_sws_opts = av_strdup(sws_flags_str);
  
      if ((ret = avfilter_graph_create_filter(&filt_src, &input_filter, "src",
                                              NULL, is, graph)) < 0)
          return ret;
 -    if ((ret = avfilter_graph_create_filter(&filt_out,
 -                                            avfilter_get_by_name("buffersink"),
 -                                            "out", NULL, NULL, graph)) < 0)
 +
 +#if FF_API_OLD_VSINK_API
-     ret = avfilter_graph_create_filter(&filt_out, avfilter_get_by_name("buffersink"), "out",
-                                        NULL, pix_fmts, graph);
++    ret = avfilter_graph_create_filter(&filt_out,
++                                       avfilter_get_by_name("buffersink"),
++                                       "out", NULL, pix_fmts, graph);
 +#else
 +    buffersink_params->pixel_fmts = pix_fmts;
-     ret = avfilter_graph_create_filter(&filt_out, avfilter_get_by_name("buffersink"), "out",
-                                        NULL, buffersink_params, graph);
++    ret = avfilter_graph_create_filter(&filt_out,
++                                       avfilter_get_by_name("buffersink"),
++                                       "out", NULL, buffersink_params, graph);
 +#endif
 +    av_freep(&buffersink_params);
 +    if (ret < 0)
          return ret;
  
+     if ((ret = avfilter_graph_create_filter(&filt_format,
+                                             avfilter_get_by_name("format"),
+                                             "format", "yuv420p", NULL, graph)) < 0)
+         return ret;
+     if ((ret = avfilter_link(filt_format, 0, filt_out, 0)) < 0)
+         return ret;
      if (vfilters) {
          AVFilterInOut *outputs = avfilter_inout_alloc();
          AVFilterInOut *inputs  = avfilter_inout_alloc();
          inputs->pad_idx = 0;
          inputs->next    = NULL;
  
 -        if ((ret = avfilter_graph_parse(graph, vfilters, inputs, outputs, NULL)) < 0)
 +        if ((ret = avfilter_graph_parse(graph, vfilters, &inputs, &outputs, NULL)) < 0)
              return ret;
      } else {
-         if ((ret = avfilter_link(filt_src, 0, filt_out, 0)) < 0)
+         if ((ret = avfilter_link(filt_src, 0, filt_format, 0)) < 0)
              return ret;
      }
  
@@@ -1839,12 -1804,16 +1849,15 @@@ static int video_thread(void *arg
              last_w = is->video_st->codec->width;
              last_h = is->video_st->codec->height;
          }
 -        ret = av_buffersink_read(filt_out, &picref);
 +        ret = av_buffersink_get_buffer_ref(filt_out, &picref, 0);
          if (picref) {
 -            avfilter_copy_buf_props(frame, picref);
 -
 +            avfilter_fill_frame_from_video_buffer_ref(frame, picref);
              pts_int = picref->pts;
+             tb      = filt_out->inputs[0]->time_base;
              pos     = picref->pos;
              frame->opaque = picref;
+             ret = 1;
          }
  
          if (ret >= 0 && av_cmp_q(tb, is->video_st->time_base)) {
Simple merge
Simple merge
@@@ -72,10 -72,10 +72,16 @@@ typedef struct AVCodecInternal 
  #endif
  
      /**
+      * An audio frame with less than required samples has been submitted and
+      * padded with silence. Reject all subsequent frames.
+      */
+     int last_audio_frame;
++
++    /**
 +     * temporary buffer used for encoders to store their bitstream
 +     */
 +    uint8_t *byte_buffer;
 +    unsigned int byte_buffer_size;
  } AVCodecInternal;
  
  struct AVCodecDefault {
Simple merge
@@@ -170,9 -177,9 +177,9 @@@ static void libschroedinger_handle_firs
  
      p_schro_params->format = schro_decoder_get_video_format(decoder);
  
 -    /* Tell Libav about sequence details. */
 +    /* Tell FFmpeg about sequence details. */
-     if (av_image_check_size(p_schro_params->format->width, p_schro_params->format->height,
-                             0, avccontext) < 0) {
+     if (av_image_check_size(p_schro_params->format->width,
+                             p_schro_params->format->height, 0, avccontext) < 0) {
          av_log(avccontext, AV_LOG_ERROR, "invalid dimensions (%dx%d)\n",
                 p_schro_params->format->width, p_schro_params->format->height);
          avccontext->height = avccontext->width = 0;
Simple merge
Simple merge
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
+ #include "config.h"
  #include <xvid.h>
  #include <unistd.h>
 -#if !HAVE_MKSTEMP
 -#include <fcntl.h>
 -#endif
 -
 +#include "libavutil/file.h"
  #include "avcodec.h"
- #include "libxvid_internal.h"
+ #include "libxvid.h"
  //#include "dsputil.h"
  #include "mpegvideo.h"
  
Simple merge
@@@ -996,19 -857,61 +996,67 @@@ int ff_alloc_packet2(AVCodecContext *av
      }
  }
  
 +int ff_alloc_packet(AVPacket *avpkt, int size)
 +{
 +    return ff_alloc_packet2(NULL, avpkt, size);
 +}
 +
+ /**
+  * Pad last frame with silence.
+  */
+ static int pad_last_frame(AVCodecContext *s, AVFrame **dst, const AVFrame *src)
+ {
+     AVFrame *frame = NULL;
+     uint8_t *buf   = NULL;
+     int ret;
+     if (!(frame = avcodec_alloc_frame()))
+         return AVERROR(ENOMEM);
+     *frame = *src;
+     if ((ret = av_samples_get_buffer_size(&frame->linesize[0], s->channels,
+                                           s->frame_size, s->sample_fmt, 0)) < 0)
+         goto fail;
+     if (!(buf = av_malloc(ret))) {
+         ret = AVERROR(ENOMEM);
+         goto fail;
+     }
+     frame->nb_samples = s->frame_size;
+     if ((ret = avcodec_fill_audio_frame(frame, s->channels, s->sample_fmt,
+                                         buf, ret, 0)) < 0)
+         goto fail;
+     if ((ret = av_samples_copy(frame->extended_data, src->extended_data, 0, 0,
+                                src->nb_samples, s->channels, s->sample_fmt)) < 0)
+         goto fail;
+     if ((ret = av_samples_set_silence(frame->extended_data, src->nb_samples,
+                                       frame->nb_samples - src->nb_samples,
+                                       s->channels, s->sample_fmt)) < 0)
+         goto fail;
+     *dst = frame;
+     return 0;
+ fail:
+     if (frame->extended_data != frame->data)
+         av_freep(&frame->extended_data);
+     av_freep(&buf);
+     av_freep(&frame);
+     return ret;
+ }
  int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx,
                                                AVPacket *avpkt,
                                                const AVFrame *frame,
                                                int *got_packet_ptr)
  {
+     AVFrame tmp;
+     AVFrame *padded_frame = NULL;
      int ret;
 -    int user_packet = !!avpkt->data;
 +    AVPacket user_pkt = *avpkt;
 +    int needs_realloc = !user_pkt.data;
  
      *got_packet_ptr = 0;
  
@@@ -27,8 -27,8 +27,8 @@@
   */
  
  #define LIBAVCODEC_VERSION_MAJOR 54
 -#define LIBAVCODEC_VERSION_MINOR 13
 -#define LIBAVCODEC_VERSION_MICRO  1
 +#define LIBAVCODEC_VERSION_MINOR  21
- #define LIBAVCODEC_VERSION_MICRO 100
++#define LIBAVCODEC_VERSION_MICRO 101
  
  #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
                                                 LIBAVCODEC_VERSION_MINOR, \
Simple merge
Simple merge
index a63c2a3,0000000..b71cf97
mode 100644,000000..100644
--- /dev/null
@@@ -1,125 -1,0 +1,169 @@@
 +/*
 + * This file is part of FFmpeg.
 + *
 + * FFmpeg is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU Lesser General Public
 + * License as published by the Free Software Foundation; either
 + * version 2.1 of the License, or (at your option) any later version.
 + *
 + * FFmpeg is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 + * Lesser General Public License for more details.
 + *
 + * You should have received a copy of the GNU Lesser General Public
 + * License along with FFmpeg; if not, write to the Free Software
 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 + */
 +
 +/**
 + * @file
 + * libavcodec/libavfilter gluing utilities
 + */
 +
 +#include "avcodec.h"
 +#include "libavutil/opt.h"
 +
 +int avfilter_copy_frame_props(AVFilterBufferRef *dst, const AVFrame *src)
 +{
 +    dst->pts    = src->pts;
 +    dst->pos    = src->pkt_pos;
 +    dst->format = src->format;
 +
 +    switch (dst->type) {
 +    case AVMEDIA_TYPE_VIDEO:
 +        dst->video->w                   = src->width;
 +        dst->video->h                   = src->height;
 +        dst->video->sample_aspect_ratio = src->sample_aspect_ratio;
 +        dst->video->interlaced          = src->interlaced_frame;
 +        dst->video->top_field_first     = src->top_field_first;
 +        dst->video->key_frame           = src->key_frame;
 +        dst->video->pict_type           = src->pict_type;
 +        break;
 +    case AVMEDIA_TYPE_AUDIO:
 +        dst->audio->sample_rate         = src->sample_rate;
 +        dst->audio->channel_layout      = src->channel_layout;
 +        break;
 +    default:
 +        return AVERROR(EINVAL);
 +    }
 +
 +    return 0;
 +}
 +
++int avfilter_copy_buf_props(AVFrame *dst, const AVFilterBufferRef *src)
++{
++    int planes, nb_channels;
++
++    memcpy(dst->data, src->data, sizeof(dst->data));
++    memcpy(dst->linesize, src->linesize, sizeof(dst->linesize));
++
++    dst->pts     = src->pts;
++    dst->format  = src->format;
++
++    switch (src->type) {
++    case AVMEDIA_TYPE_VIDEO:
++        dst->width               = src->video->w;
++        dst->height              = src->video->h;
++        dst->sample_aspect_ratio = src->video->sample_aspect_ratio;
++        dst->interlaced_frame    = src->video->interlaced;
++        dst->top_field_first     = src->video->top_field_first;
++        dst->key_frame           = src->video->key_frame;
++        dst->pict_type           = src->video->pict_type;
++        break;
++    case AVMEDIA_TYPE_AUDIO:
++        nb_channels = av_get_channel_layout_nb_channels(src->audio->channel_layout);
++        planes      = av_sample_fmt_is_planar(src->format) ? nb_channels : 1;
++
++        if (planes > FF_ARRAY_ELEMS(dst->data)) {
++            dst->extended_data = av_mallocz(planes * sizeof(*dst->extended_data));
++            if (!dst->extended_data)
++                return AVERROR(ENOMEM);
++            memcpy(dst->extended_data, src->extended_data,
++                   planes * sizeof(dst->extended_data));
++        } else
++            dst->extended_data = dst->data;
++
++        dst->sample_rate         = src->audio->sample_rate;
++        dst->channel_layout      = src->audio->channel_layout;
++        dst->nb_samples          = src->audio->nb_samples;
++        break;
++    default:
++        return AVERROR(EINVAL);
++    }
++
++    return 0;
++}
++
 +AVFilterBufferRef *avfilter_get_video_buffer_ref_from_frame(const AVFrame *frame,
 +                                                            int perms)
 +{
 +    AVFilterBufferRef *picref =
 +        avfilter_get_video_buffer_ref_from_arrays(frame->data, frame->linesize, perms,
 +                                                  frame->width, frame->height,
 +                                                  frame->format);
 +    if (!picref)
 +        return NULL;
 +    avfilter_copy_frame_props(picref, frame);
 +    return picref;
 +}
 +
 +AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_frame(const AVFrame *frame,
 +                                                            int perms)
 +{
 +    AVFilterBufferRef *picref =
 +        avfilter_get_audio_buffer_ref_from_arrays((uint8_t **)frame->data, (int *)frame->linesize, perms,
 +                                                  frame->nb_samples, frame->format,
 +                                                  av_frame_get_channel_layout(frame),
 +                                                  av_sample_fmt_is_planar(frame->format));
 +    if (!picref)
 +        return NULL;
 +    avfilter_copy_frame_props(picref, frame);
 +    return picref;
 +}
 +
 +int avfilter_fill_frame_from_audio_buffer_ref(AVFrame *frame,
 +                                              const AVFilterBufferRef *samplesref)
 +{
 +    if (!samplesref || !samplesref->audio || !frame)
 +        return AVERROR(EINVAL);
 +
 +    memcpy(frame->data, samplesref->data, sizeof(frame->data));
 +    frame->pkt_pos    = samplesref->pos;
 +    frame->format     = samplesref->format;
 +    frame->nb_samples = samplesref->audio->nb_samples;
 +    frame->pts        = samplesref->pts;
 +
 +    return 0;
 +}
 +
 +int avfilter_fill_frame_from_video_buffer_ref(AVFrame *frame,
 +                                              const AVFilterBufferRef *picref)
 +{
 +    if (!picref || !picref->video || !frame)
 +        return AVERROR(EINVAL);
 +
 +    memcpy(frame->data,     picref->data,     sizeof(frame->data));
 +    memcpy(frame->linesize, picref->linesize, sizeof(frame->linesize));
 +    frame->pkt_pos          = picref->pos;
 +    frame->interlaced_frame = picref->video->interlaced;
 +    frame->top_field_first  = picref->video->top_field_first;
 +    frame->key_frame        = picref->video->key_frame;
 +    frame->pict_type        = picref->video->pict_type;
 +    frame->sample_aspect_ratio = picref->video->sample_aspect_ratio;
 +    frame->width            = picref->video->w;
 +    frame->height           = picref->video->h;
 +    frame->format           = picref->format;
 +    frame->pts              = picref->pts;
 +
 +    return 0;
 +}
 +
 +int avfilter_fill_frame_from_buffer_ref(AVFrame *frame,
 +                                        const AVFilterBufferRef *ref)
 +{
 +    if (!ref)
 +        return AVERROR(EINVAL);
 +    return ref->video ? avfilter_fill_frame_from_video_buffer_ref(frame, ref)
 +                      : avfilter_fill_frame_from_audio_buffer_ref(frame, ref);
 +}
index cec8471,0000000..9636cfd
mode 100644,000000..100644
--- /dev/null
@@@ -1,115 -1,0 +1,125 @@@
 +/*
 + * This file is part of FFmpeg.
 + *
 + * FFmpeg is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU Lesser General Public
 + * License as published by the Free Software Foundation; either
 + * version 2.1 of the License, or (at your option) any later version.
 + *
 + * FFmpeg is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 + * Lesser General Public License for more details.
 + *
 + * You should have received a copy of the GNU Lesser General Public
 + * License along with FFmpeg; if not, write to the Free Software
 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 + */
 +
 +#ifndef AVFILTER_AVCODEC_H
 +#define AVFILTER_AVCODEC_H
 +
 +/**
 + * @file
 + * libavcodec/libavfilter gluing utilities
 + *
 + * This should be included in an application ONLY if the installed
 + * libavfilter has been compiled with libavcodec support, otherwise
 + * symbols defined below will not be available.
 + */
 +
 +#include "libavcodec/avcodec.h" // AVFrame
 +#include "avfilter.h"
 +#include "vsrc_buffer.h"
 +
 +/**
 + * Copy the frame properties of src to dst, without copying the actual
 + * image data.
++ *
++ * @return 0 on success, a negative number on error.
 + */
 +int avfilter_copy_frame_props(AVFilterBufferRef *dst, const AVFrame *src);
 +
 +/**
++ * Copy the frame properties and data pointers of src to dst, without copying
++ * the actual data.
++ *
++ * @return 0 on success, a negative number on error.
++ */
++int avfilter_copy_buf_props(AVFrame *dst, const AVFilterBufferRef *src);
++
++/**
 + * Create and return a picref reference from the data and properties
 + * contained in frame.
 + *
 + * @param perms permissions to assign to the new buffer reference
 + */
 +AVFilterBufferRef *avfilter_get_video_buffer_ref_from_frame(const AVFrame *frame, int perms);
 +
 +
 +/**
 + * Create and return a picref reference from the data and properties
 + * contained in frame.
 + *
 + * @param perms permissions to assign to the new buffer reference
 + */
 +AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_frame(const AVFrame *frame,
 +                                                            int perms);
 +
 +/**
 + * Fill an AVFrame with the information stored in samplesref.
 + *
 + * @param frame an already allocated AVFrame
 + * @param samplesref an audio buffer reference
 + * @return 0 in case of success, a negative AVERROR code in case of
 + * failure
 + */
 +int avfilter_fill_frame_from_audio_buffer_ref(AVFrame *frame,
 +                                              const AVFilterBufferRef *samplesref);
 +
 +/**
 + * Fill an AVFrame with the information stored in picref.
 + *
 + * @param frame an already allocated AVFrame
 + * @param picref a video buffer reference
 + * @return 0 in case of success, a negative AVERROR code in case of
 + * failure
 + */
 +int avfilter_fill_frame_from_video_buffer_ref(AVFrame *frame,
 +                                              const AVFilterBufferRef *picref);
 +
 +/**
 + * Fill an AVFrame with information stored in ref.
 + *
 + * @param frame an already allocated AVFrame
 + * @param ref a video or audio buffer reference
 + * @return 0 in case of success, a negative AVERROR code in case of
 + * failure
 + */
 +int avfilter_fill_frame_from_buffer_ref(AVFrame *frame,
 +                                        const AVFilterBufferRef *ref);
 +
 +/**
 + * Add frame data to buffer_src.
 + *
 + * @param buffer_src  pointer to a buffer source context
 + * @param frame       a frame, or NULL to mark EOF
 + * @param flags       a combination of AV_BUFFERSRC_FLAG_*
 + * @return            >= 0 in case of success, a negative AVERROR code
 + *                    in case of failure
 + */
 +int av_buffersrc_add_frame(AVFilterContext *buffer_src,
 +                           const AVFrame *frame, int flags);
 +
 +/**
 + * Add frame data to buffer_src.
 + *
 + * @param buffer_src pointer to a buffer source context
 + * @param flags a combination of AV_VSRC_BUF_FLAG_* flags
 + * @return >= 0 in case of success, a negative AVERROR code in case of
 + * failure
 + */
 +int av_vsrc_buffer_add_frame(AVFilterContext *buffer_src,
 +                             const AVFrame *frame, int flags);
 +
 +#endif /* AVFILTER_AVCODEC_H */
@@@ -147,16 -88,12 +161,18 @@@ void avfilter_unref_buffer(AVFilterBuff
  {
      if (!ref)
          return;
 -    if (!(--ref->buf->refcount))
 +    av_assert0(ref->buf->refcount > 0);
 +    if (!(--ref->buf->refcount)) {
 +        if (!ref->buf->free) {
 +            store_in_pool(ref);
 +            return;
 +        }
          ref->buf->free(ref->buf);
 -    av_free(ref->video);
 -    av_free(ref->audio);
 +    }
+     if (ref->extended_data != ref->data)
+         av_freep(&ref->extended_data);
 +    av_freep(&ref->video);
 +    av_freep(&ref->audio);
      av_free(ref);
  }
  
@@@ -499,48 -385,74 +518,116 @@@ AVFilterBufferRef *avfilter_get_audio_b
      return ret;
  }
  
 -AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_arrays(uint8_t **data,
 +AVFilterBufferRef *
 +avfilter_get_audio_buffer_ref_from_arrays(uint8_t *data[8], int linesize[8], int perms,
 +                                          int nb_samples, enum AVSampleFormat sample_fmt,
 +                                          uint64_t channel_layout, int planar)
 +{
 +    AVFilterBuffer *samples = av_mallocz(sizeof(AVFilterBuffer));
 +    AVFilterBufferRef *samplesref = av_mallocz(sizeof(AVFilterBufferRef));
 +
 +    if (!samples || !samplesref)
 +        goto fail;
 +
 +    samplesref->buf = samples;
 +    samplesref->buf->free = ff_avfilter_default_free_buffer;
 +    if (!(samplesref->audio = av_mallocz(sizeof(AVFilterBufferRefAudioProps))))
 +        goto fail;
 +
 +    samplesref->audio->nb_samples     = nb_samples;
 +    samplesref->audio->channel_layout = channel_layout;
 +    samplesref->audio->planar         = planar;
 +
 +    /* make sure the buffer gets read permission or it's useless for output */
 +    samplesref->perms = perms | AV_PERM_READ;
 +
 +    samples->refcount = 1;
 +    samplesref->type = AVMEDIA_TYPE_AUDIO;
 +    samplesref->format = sample_fmt;
 +
 +    memcpy(samples->data,        data,     sizeof(samples->data));
 +    memcpy(samples->linesize,    linesize, sizeof(samples->linesize));
 +    memcpy(samplesref->data,     data,     sizeof(samplesref->data));
 +    memcpy(samplesref->linesize, linesize, sizeof(samplesref->linesize));
 +
 +    return samplesref;
 +
 +fail:
 +    if (samplesref && samplesref->audio)
 +        av_freep(&samplesref->audio);
 +    av_freep(&samplesref);
 +    av_freep(&samples);
 +    return NULL;
 +}
 +
++AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_arrays_alt(uint8_t **data,
+                                                              int linesize, int perms,
+                                                              int nb_samples,
+                                                              enum AVSampleFormat sample_fmt,
+                                                              uint64_t channel_layout)
+ {
+     int planes;
+     AVFilterBuffer    *samples    = av_mallocz(sizeof(*samples));
+     AVFilterBufferRef *samplesref = av_mallocz(sizeof(*samplesref));
+     if (!samples || !samplesref)
+         goto fail;
+     samplesref->buf         = samples;
+     samplesref->buf->free   = ff_avfilter_default_free_buffer;
+     if (!(samplesref->audio = av_mallocz(sizeof(*samplesref->audio))))
+         goto fail;
+     samplesref->audio->nb_samples     = nb_samples;
+     samplesref->audio->channel_layout = channel_layout;
+     samplesref->audio->planar         = av_sample_fmt_is_planar(sample_fmt);
+     planes = samplesref->audio->planar ? av_get_channel_layout_nb_channels(channel_layout) : 1;
+     /* make sure the buffer gets read permission or it's useless for output */
+     samplesref->perms = perms | AV_PERM_READ;
+     samples->refcount  = 1;
+     samplesref->type   = AVMEDIA_TYPE_AUDIO;
+     samplesref->format = sample_fmt;
+     memcpy(samples->data, data,
+            FFMIN(FF_ARRAY_ELEMS(samples->data), planes)*sizeof(samples->data[0]));
+     memcpy(samplesref->data, samples->data, sizeof(samples->data));
+     samples->linesize[0] = samplesref->linesize[0] = linesize;
+     if (planes > FF_ARRAY_ELEMS(samples->data)) {
+         samples->   extended_data = av_mallocz(sizeof(*samples->extended_data) *
+                                                planes);
+         samplesref->extended_data = av_mallocz(sizeof(*samplesref->extended_data) *
+                                                planes);
+         if (!samples->extended_data || !samplesref->extended_data)
+             goto fail;
+         memcpy(samples->   extended_data, data, sizeof(*data)*planes);
+         memcpy(samplesref->extended_data, data, sizeof(*data)*planes);
+     } else {
+         samples->extended_data    = samples->data;
+         samplesref->extended_data = samplesref->data;
+     }
+     return samplesref;
+ fail:
+     if (samples && samples->extended_data != samples->data)
+         av_freep(&samples->extended_data);
+     if (samplesref) {
+         av_freep(&samplesref->audio);
+         if (samplesref->extended_data != samplesref->data)
+             av_freep(&samplesref->extended_data);
+     }
+     av_freep(&samplesref);
+     av_freep(&samples);
+     return NULL;
+ }
  int avfilter_request_frame(AVFilterLink *link)
  {
      FF_DPRINTF_START(NULL, request_frame); ff_dlog_link(NULL, link, 1);
@@@ -781,12 -710,14 +813,33 @@@ AVFilterBufferRef *avfilter_get_audio_b
   * @param nb_samples     number of samples per channel
   * @param sample_fmt     the format of each sample in the buffer to allocate
   * @param channel_layout the channel layout of the buffer
 + * @param planar         audio data layout - planar or packed
   */
- AVFilterBufferRef *
- avfilter_get_audio_buffer_ref_from_arrays(uint8_t *data[8], int linesize[8], int perms,
-                                           int nb_samples, enum AVSampleFormat sample_fmt,
-                                           uint64_t channel_layout, int planar);
 -AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_arrays(uint8_t **data,
++AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_arrays(uint8_t *data[8],
++                                                             int linesize[8],
++                                                             int perms,
++                                                             int nb_samples,
++                                                             enum AVSampleFormat sample_fmt,
++                                                             uint64_t channel_layout,
++                                                             int planar);
++/**
++ * Create an audio buffer reference wrapped around an already
++ * allocated samples buffer.
++ *
++ * @param data           pointers to the samples plane buffers
++ * @param linesize       linesize for the samples plane buffers
++ * @param perms          the required access permissions
++ * @param nb_samples     number of samples per channel
++ * @param sample_fmt     the format of each sample in the buffer to allocate
++ * @param channel_layout the channel layout of the buffer
++ */
++AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_arrays_alt(uint8_t **data,
+                                                              int linesize,
+                                                              int perms,
+                                                              int nb_samples,
+                                                              enum AVSampleFormat sample_fmt,
+                                                              uint64_t channel_layout);
  /**
   * Request an input frame from the filter at the other end of the link.
   *
index 0000000,e4cbe3b..f0fcab5
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,114 +1,114 @@@
 - * This file is part of Libav.
+ /*
+  * Copyright (c) 2011 Stefano Sabatini
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2.1 of the License, or (at your option) any later version.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
 -    .name      = "buffersink",
++ * License along with FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ /**
+  * @file
+  * buffer sink
+  */
+ #include "libavutil/fifo.h"
+ #include "avfilter.h"
+ #include "buffersink.h"
+ typedef struct {
+     AVFifoBuffer *fifo;          ///< FIFO buffer of video frame references
+ } BufferSinkContext;
+ #define FIFO_INIT_SIZE 8
+ static av_cold void uninit(AVFilterContext *ctx)
+ {
+     BufferSinkContext *sink = ctx->priv;
+     while (sink->fifo && av_fifo_size(sink->fifo)) {
+         AVFilterBufferRef *buf;
+         av_fifo_generic_read(sink->fifo, &buf, sizeof(buf), NULL);
+         avfilter_unref_buffer(buf);
+     }
+     av_fifo_free(sink->fifo);
+ }
+ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
+ {
+     BufferSinkContext *sink = ctx->priv;
+     if (!(sink->fifo = av_fifo_alloc(FIFO_INIT_SIZE*sizeof(AVFilterBufferRef*)))) {
+         av_log(ctx, AV_LOG_ERROR, "Failed to allocate fifo\n");
+         return AVERROR(ENOMEM);
+     }
+     return 0;
+ }
+ static void end_frame(AVFilterLink *link)
+ {
+     AVFilterContext   *ctx = link->dst;
+     BufferSinkContext *sink = ctx->priv;
+     if (av_fifo_space(sink->fifo) < sizeof(AVFilterBufferRef *) &&
+         (av_fifo_realloc2(sink->fifo, av_fifo_size(sink->fifo) * 2) < 0)) {
+             av_log(ctx, AV_LOG_ERROR, "Error reallocating the FIFO.\n");
+             return;
+     }
+     av_fifo_generic_write(sink->fifo, &link->cur_buf, sizeof(link->cur_buf), NULL);
+     link->cur_buf = NULL;
+ }
+ int av_buffersink_read(AVFilterContext *ctx, AVFilterBufferRef **buf)
+ {
+     BufferSinkContext *sink = ctx->priv;
+     AVFilterLink      *link = ctx->inputs[0];
+     int ret;
+     if (!buf) {
+         if (av_fifo_size(sink->fifo))
+             return av_fifo_size(sink->fifo)/sizeof(*buf);
+         else
+             return avfilter_poll_frame(ctx->inputs[0]);
+     }
+     if (!av_fifo_size(sink->fifo) &&
+         (ret = avfilter_request_frame(link)) < 0)
+         return ret;
+     if (!av_fifo_size(sink->fifo))
+         return AVERROR(EINVAL);
+     av_fifo_generic_read(sink->fifo, buf, sizeof(*buf), NULL);
+     return 0;
+ }
+ AVFilter avfilter_vsink_buffer = {
++    .name      = "buffersink_old",
+     .description = NULL_IF_CONFIG_SMALL("Buffer video frames, and make them available to the end of the filter graph."),
+     .priv_size = sizeof(BufferSinkContext),
+     .init      = init,
+     .uninit    = uninit,
+     .inputs    = (AVFilterPad[]) {{ .name          = "default",
+                                     .type          = AVMEDIA_TYPE_VIDEO,
+                                     .end_frame     = end_frame,
+                                     .min_perms     = AV_PERM_READ, },
+                                   { .name = NULL }},
+     .outputs   = (AVFilterPad[]) {{ .name = NULL }},
+ };
  #include "avfilter.h"
  
  /**
 + * Struct to use for initializing a buffersink context.
 + */
 +typedef struct {
 +    const enum PixelFormat *pixel_fmts; ///< list of allowed pixel formats, terminated by PIX_FMT_NONE
 +} AVBufferSinkParams;
 +
 +/**
 + * Create an AVBufferSinkParams structure.
 + *
 + * Must be freed with av_free().
 + */
 +AVBufferSinkParams *av_buffersink_params_alloc(void);
 +
 +/**
 + * Struct to use for initializing an abuffersink context.
 + */
 +typedef struct {
 +    const enum AVSampleFormat *sample_fmts; ///< list of allowed sample formats, terminated by AV_SAMPLE_FMT_NONE
 +    const int64_t *channel_layouts;         ///< list of allowed channel layouts, terminated by -1
 +    const int *packing_fmts;                ///< list of allowed packing formats
 +} AVABufferSinkParams;
 +
 +/**
 + * Create an AVABufferSinkParams structure.
 + *
 + * Must be freed with av_free().
 + */
 +AVABufferSinkParams *av_abuffersink_params_alloc(void);
 +
 +/**
 + * Tell av_buffersink_get_buffer_ref() to read video/samples buffer
 + * reference, but not remove it from the buffer. This is useful if you
 + * need only to read a video/samples buffer, without to fetch it.
 + */
 +#define AV_BUFFERSINK_FLAG_PEEK 1
 +
 +/**
 + * Tell av_buffersink_get_buffer_ref() not to request a frame fom its input.
 + * If a frame is already buffered, it is read (and removed from the buffer),
 + * but if no frame is present, return AVERROR(EAGAIN).
 + */
 +#define AV_BUFFERSINK_FLAG_NO_REQUEST 2
 +
 +/**
 + * Get an audio/video buffer data from buffer_sink and put it in bufref.
 + *
 + * This function works with both audio and video buffer sinks.
 + *
 + * @param buffer_sink pointer to a buffersink or abuffersink context
 + * @param flags a combination of AV_BUFFERSINK_FLAG_* flags
 + * @return >= 0 in case of success, a negative AVERROR code in case of
 + * failure
 + */
 +int av_buffersink_get_buffer_ref(AVFilterContext *buffer_sink,
 +                                 AVFilterBufferRef **bufref, int flags);
 +
 +
 +/**
 + * Get the number of immediately available frames.
 + */
 +int av_buffersink_poll_frame(AVFilterContext *ctx);
 +
 +#if FF_API_OLD_VSINK_API
 +/**
 + * @deprecated Use av_buffersink_get_buffer_ref() instead.
 + */
 +attribute_deprecated
 +int av_vsink_buffer_get_video_buffer_ref(AVFilterContext *buffer_sink,
 +                                         AVFilterBufferRef **picref, int flags);
 +#endif
 +
++/**
+  * Get a buffer with filtered data from sink and put it in buf.
+  *
+  * @param sink pointer to a context of a buffersink AVFilter.
+  * @param buf pointer to the buffer will be written here if buf is non-NULL. buf
+  *            must be freed by the caller using avfilter_unref_buffer().
+  *            Buf may also be NULL to query whether a buffer is ready to be
+  *            output.
+  *
+  * @return >= 0 in case of success, a negative AVERROR code in case of
+  *         failure.
+  */
+ int av_buffersink_read(AVFilterContext *sink, AVFilterBufferRef **buf);
  #endif /* AVFILTER_BUFFERSINK_H */
  #include "avfilter.h"
  #include "internal.h"
  
 -/* TODO: buffer pool.  see comment for avfilter_default_get_video_buffer() */
  void ff_avfilter_default_free_buffer(AVFilterBuffer *ptr)
  {
+     if (ptr->extended_data != ptr->data)
+         av_freep(&ptr->extended_data);
      av_free(ptr->data[0]);
      av_free(ptr);
  }
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc tests/Makefile
@@@ -89,12 -77,17 +89,17 @@@ FATE_SEEK    = $(SEEK_TESTS:seek_%=fate
  FATE = $(FATE_ACODEC)                                                   \
         $(FATE_VCODEC)                                                   \
         $(FATE_LAVF)                                                     \
-        $(FATE_LIBAVUTIL)                                                \
         $(FATE_SEEK)                                                     \
  
 -FATE_AVCONV += $(FATE_AVCONV-yes)
++FATE_FFMPEG += $(FATE_FFMPEG-yes) $(FATE_AVCONV) $(FATE_AVCONV-yes)
+ FATE-$(CONFIG_AVCODEC)  += $(FATE_LIBAVCODEC)
  FATE-$(CONFIG_AVFILTER) += $(FATE_LAVFI)
  
  FATE += $(FATE-yes)
 -$(FATE_AVCONV): avconv$(EXESUF)
+ FATE += $(FATE_LIBAVUTIL)
++$(FATE_FFMPEG) $(FATE_LAVF_FATE): ffmpeg$(EXESUF)
  
  $(filter-out %-aref,$(FATE_ACODEC)): $(AREF)
  $(filter-out %-vref,$(FATE_VSYNTH1)): fate-vsynth1-vref
@@@ -120,13 -111,10 +125,13 @@@ fate-lavfi:  $(FATE_LAVFI
  fate-seek:   $(FATE_SEEK)
  
  ifdef SAMPLES
 -FATE += $(FATE_AVCONV)
 +FATE += $(FATE_LAVF_FATE)
- FATE += $(FATE_TESTS) $(FATE_TESTS-yes)
++FATE += $(FATE_FFMPEG)
  fate-rsync:
 -      rsync -vaLW rsync://fate-suite.libav.org/fate-suite/ $(SAMPLES)
 +      rsync -vaLW --timeout=60 --contimeout=60 rsync://fate.ffmpeg.org/fate-suite/ $(SAMPLES)
  else
 +fate::
 +      @echo "warning: only a subset of the fate tests will be run because SAMPLES is not specified"
  fate-rsync:
        @echo "use 'make fate-rsync SAMPLES=/path/to/samples' to sync the fate suite"
  $(FATE_TESTS):
@@@ -135,11 -123,9 +140,11 @@@ endi
  
  FATE_UTILS = base64 tiny_psnr
  
 -fate: $(FATE)
 +TOOL = ffmpeg
 +
 +fate:: $(FATE)
  
- $(FATE) $(FATE_TESTS-no): ffmpeg$(EXESUF) ffprobe$(EXESUF) $(FATE_UTILS:%=tests/%$(HOSTEXESUF))
 -$(FATE): $(FATE_UTILS:%=tests/%$(HOSTEXESUF))
++$(FATE) $(FATE_TESTS-no): $(FATE_UTILS:%=tests/%$(HOSTEXESUF))
        @echo "TEST    $(@:fate-%=%)"
        $(Q)$(SRC_PATH)/tests/fate-run.sh $@ "$(SAMPLES)" "$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)' '$(THREADS)' '$(THREAD_TYPE)' '$(CPUFLAGS)' '$(CMP_SHIFT)' '$(CMP_TARGET)' '$(SIZE_TOLERANCE)'
  
@@@ -71,24 -71,7 +71,25 @@@ FATE_AAC_CT = sbr_bc-ps_i.3gp  
  
  FATE_AAC += $(FATE_AAC_CT:%=fate-aac-ct-%)
  
 -FATE_AVCONV += $(FATE_AAC)
 -fate-aac: $(FATE_AAC)
 +FATE_AAC_ENCODE += fate-aac-aref-encode
 +fate-aac-aref-encode: $(AREF)
 +fate-aac-aref-encode: CMD = enc_dec_pcm adts wav s16le $(REF) -strict -2 -c:a aac -b:a 512k
 +fate-aac-aref-encode: CMP = stddev
 +fate-aac-aref-encode: REF = ./tests/data/acodec.ref.wav
 +fate-aac-aref-encode: CMP_SHIFT = -4096
 +fate-aac-aref-encode: CMP_TARGET = 1862
 +fate-aac-aref-encode: SIZE_TOLERANCE = 2464
 +
 +FATE_AAC_ENCODE += fate-aac-ln-encode
 +fate-aac-ln-encode: CMD = enc_dec_pcm adts wav s16le $(REF) -strict -2 -c:a aac -b:a 512k
 +fate-aac-ln-encode: CMP = stddev
 +fate-aac-ln-encode: REF = $(SAMPLES)/audio-reference/luckynight_2ch_44kHz_s16.wav
 +fate-aac-ln-encode: CMP_SHIFT = -4096
 +fate-aac-ln-encode: CMP_TARGET = 65
 +fate-aac-ln-encode: SIZE_TOLERANCE = 3560
 +
- FATE_TESTS += $(FATE_AAC) $(FATE_AAC_ENCODE)
++FATE_FFMPEG += $(FATE_AAC) $(FATE_AAC_ENCODE)
 +fate-aac: $(FATE_AAC) $(FATE_AAC_ENCODE)
++
  $(FATE_AAC): CMP = oneoff
  $(FATE_AAC): FUZZ = 2
@@@ -28,17 -28,5 +28,17 @@@ fate-nellymoser: CMD = pcm -i $(SAMPLES
  fate-nellymoser: CMP = oneoff
  fate-nellymoser: REF = $(SAMPLES)/nellymoser/nellymoser.pcm
  
 -FATE_AVCONV += fate-ws_snd
 +FATE_AUDIO += fate-nellymoser-aref-encode
 +fate-nellymoser-aref-encode: $(AREF)
 +fate-nellymoser-aref-encode: CMD = enc_dec_pcm flv wav s16le $(REF) -c:a nellymoser
 +fate-nellymoser-aref-encode: CMP = stddev
 +fate-nellymoser-aref-encode: REF = ./tests/data/acodec-16000-1.ref.wav
 +fate-nellymoser-aref-encode: CMP_SHIFT = -1172
 +fate-nellymoser-aref-encode: CMP_TARGET = 9617
 +fate-nellymoser-aref-encode: SIZE_TOLERANCE = 268
 +
 +FATE_AUDIO += fate-ws_snd
  fate-ws_snd: CMD = md5 -i $(SAMPLES)/vqa/ws_snd.vqa -f s16le
- FATE_TESTS += $(FATE_AUDIO)
 +
++FATE_FFMPEG += $(FATE_AUDIO)
 +fate-audio: $(FATE_AUDIO)
@@@ -1,98 -1,92 +1,98 @@@
 -FATE_AVCONV += fate-adts-demux
 +FATE_DEMUX += fate-avio-direct
 +fate-avio-direct: CMD = framecrc -avioflags direct -i $(SAMPLES)/fraps/fraps-v5-bouncing-balls-partial.avi -avioflags direct
 +
 +FATE_DEMUX += fate-adts-demux
  fate-adts-demux: CMD = crc -i $(SAMPLES)/aac/ct_faac-adts.aac -acodec copy
  
 -FATE_AVCONV += fate-aea-demux
 +FATE_DEMUX += fate-aea-demux
  fate-aea-demux: CMD = crc -i $(SAMPLES)/aea/chirp.aea -acodec copy
  
 -FATE_AVCONV += fate-bink-demux
 +FATE_DEMUX += fate-bink-demux
  fate-bink-demux: CMD = crc -i $(SAMPLES)/bink/Snd0a7d9b58.dee -vn -acodec copy
  
 -FATE_AVCONV += fate-bmv
 +FATE_DEMUX += fate-bmv
  fate-bmv: CMD = framecrc -i $(SAMPLES)/bmv/SURFING-partial.BMV -pix_fmt rgb24
  
 -FATE_AVCONV += fate-caf
 +FATE_DEMUX += fate-caf
  fate-caf: CMD = crc -i $(SAMPLES)/caf/caf-pcm16.caf
  
 -FATE_AVCONV += fate-cdxl-demux
 +FATE_DEMUX += fate-cdxl-demux
  fate-cdxl-demux: CMD = framecrc -i $(SAMPLES)/cdxl/mirage.cdxl -vcodec copy -acodec copy
  
 -FATE_AVCONV += fate-cryo-apc
 +FATE_DEMUX += fate-cryo-apc
  fate-cryo-apc: CMD = md5 -i $(SAMPLES)/cryo-apc/cine007.APC -f s16le
  
 -FATE_AVCONV += fate-d-cinema-demux
 +FATE_DEMUX += fate-d-cinema-demux
  fate-d-cinema-demux: CMD = framecrc -i $(SAMPLES)/d-cinema/THX_Science_FLT_1920-partial.302 -acodec copy -pix_fmt rgb24
  
 -FATE_AVCONV += fate-funcom-iss
 +FATE_DEMUX += fate-funcom-iss
  fate-funcom-iss: CMD = md5 -i $(SAMPLES)/funcom-iss/0004010100.iss -f s16le
  
 -FATE_AVCONV += fate-interplay-mve-16bit
 +FATE_DEMUX += fate-interplay-mve-16bit
  fate-interplay-mve-16bit: CMD = framecrc -i $(SAMPLES)/interplay-mve/descent3-level5-16bit-partial.mve -pix_fmt rgb24
  
 -FATE_AVCONV += fate-interplay-mve-8bit
 +FATE_DEMUX += fate-interplay-mve-8bit
  fate-interplay-mve-8bit: CMD = framecrc -i $(SAMPLES)/interplay-mve/interplay-logo-2MB.mve -pix_fmt rgb24
  
 -FATE_AVCONV += fate-iv8-demux
 +FATE_DEMUX += fate-iv8-demux
  fate-iv8-demux: CMD = framecrc -i $(SAMPLES)/iv8/zzz-partial.mpg -vcodec copy
  
 -FATE_AVCONV += fate-lmlm4-demux
 +FATE_DEMUX += fate-lmlm4-demux
  fate-lmlm4-demux: CMD = framecrc -i $(SAMPLES)/lmlm4/LMLM4_CIFat30fps.divx -t 3 -acodec copy -vcodec copy
  
 -FATE_AVCONV += fate-maxis-xa
 +FATE_DEMUX += fate-maxis-xa
  fate-maxis-xa: CMD = framecrc -i $(SAMPLES)/maxis-xa/SC2KBUG.XA -frames:a 30 -c:a copy
  
 -FATE_AVCONV += fate-mtv
 +FATE_DEMUX += fate-mtv
  fate-mtv: CMD = framecrc -i $(SAMPLES)/mtv/comedian_auto-partial.mtv -acodec copy -pix_fmt rgb24
  
 -FATE_AVCONV += fate-mxf-demux
 +FATE_DEMUX += fate-mxf-demux
  fate-mxf-demux: CMD = framecrc -i $(SAMPLES)/mxf/C0023S01.mxf -acodec copy -vcodec copy
  
 -FATE_AVCONV += fate-nc-demux
 +FATE_DEMUX += fate-nc-demux
  fate-nc-demux: CMD = framecrc -i $(SAMPLES)/nc-camera/nc-sample-partial -vcodec copy
  
 -FATE_AVCONV += fate-nsv-demux
 +FATE_DEMUX += fate-nsv-demux
  fate-nsv-demux: CMD = framecrc -i $(SAMPLES)/nsv/witchblade-51kbps.nsv -t 6 -vcodec copy -acodec copy
  
 -FATE_AVCONV += fate-oma-demux
 +FATE_DEMUX += fate-oma-demux
  fate-oma-demux: CMD = crc -i $(SAMPLES)/oma/01-Untitled-partial.oma -acodec copy
  
 -FATE_AVCONV += fate-psx-str
 +FATE_DEMUX += fate-psx-str
  fate-psx-str: CMD = framecrc -i $(SAMPLES)/psx-str/descent-partial.str
  
 -FATE_AVCONV += fate-psx-str-v3-mdec
 +FATE_DEMUX += fate-psx-str-v3-mdec
  fate-psx-str-v3-mdec: CMD = framecrc -i $(SAMPLES)/psx-str/abc000_cut.str -an
  
 -FATE_AVCONV += fate-pva-demux
 -fate-pva-demux: CMD = framecrc -idct simple -i $(SAMPLES)/pva/PVA_test-partial.pva -t 0.6 -acodec copy -vn
 +FATE_DEMUX += fate-pva-demux
 +fate-pva-demux: CMD = framecrc -idct simple -i $(SAMPLES)/pva/PVA_test-partial.pva -t 0.6 -acodec copy
  
 -FATE_AVCONV += fate-qcp-demux
 +FATE_DEMUX += fate-qcp-demux
  fate-qcp-demux: CMD = crc -i $(SAMPLES)/qcp/0036580847.QCP -acodec copy
  
 -FATE_AVCONV += fate-redcode-demux
 +FATE_DEMUX += fate-redcode-demux
  fate-redcode-demux: CMD = framecrc -i $(SAMPLES)/r3d/4MB-sample.r3d -vcodec copy -acodec copy
  
 -FATE_AVCONV += fate-sierra-vmd
 +FATE_DEMUX += fate-sierra-vmd
  fate-sierra-vmd: CMD = framecrc -i $(SAMPLES)/vmd/12.vmd -pix_fmt rgb24
  
 -FATE_AVCONV += fate-siff
 +FATE_DEMUX += fate-siff
  fate-siff: CMD = framecrc -i $(SAMPLES)/SIFF/INTRO_B.VB -t 3 -pix_fmt rgb24
  
 -FATE_AVCONV += fate-smjpeg
 +FATE_DEMUX += fate-smjpeg
  fate-smjpeg: CMD = framecrc -i $(SAMPLES)/smjpeg/scenwin.mjpg -vcodec copy
  
 -FATE_AVCONV += fate-westwood-aud
 +FATE_DEMUX += fate-westwood-aud
  fate-westwood-aud: CMD = md5 -i $(SAMPLES)/westwood-aud/excellent.aud -f s16le
  
 -FATE_AVCONV += fate-wtv-demux
 +FATE_DEMUX += fate-wtv-demux
  fate-wtv-demux: CMD = framecrc -i $(SAMPLES)/wtv/law-and-order-partial.wtv -vcodec copy -acodec copy
  
 -FATE_AVCONV += fate-xmv-demux
 +FATE_DEMUX += fate-xmv-demux
  fate-xmv-demux: CMD = framecrc -i $(SAMPLES)/xmv/logos1p.fmv -vcodec copy -acodec copy
  
 -FATE_AVCONV += fate-xwma-demux
 +FATE_DEMUX += fate-xwma-demux
  fate-xwma-demux: CMD = crc -i $(SAMPLES)/xwma/ergon.xwma -acodec copy
- FATE_TESTS += $(FATE_DEMUX)
 +
++FATE_FFMPEG += $(FATE_DEMUX)
 +fate-demux: $(FATE_DEMUX)
@@@ -1,20 -1,20 +1,23 @@@
 -FATE_AVCONV += fate-ea-cdata
 +FATE_EA += fate-ea-cdata
  fate-ea-cdata: CMD = md5 -i $(SAMPLES)/ea-cdata/166b084d.46410f77.0009b440.24be960c.cdata -f s16le
  
 -FATE_AVCONV += fate-ea-cmv
 +FATE_EA += fate-ea-cmv
  fate-ea-cmv: CMD = framecrc -i $(SAMPLES)/ea-cmv/TITLE.CMV -pix_fmt rgb24
  
- FATE_EA += fate-ea-dct
- fate-ea-dct: CMD = framecrc -idct simple -i $(SAMPLES)/ea-dct/NFS2Esprit-partial.dct
 -FATE_AVCONV += fate-ea-tgq
 +FATE_EA += fate-ea-tgq
  fate-ea-tgq: CMD = framecrc -i $(SAMPLES)/ea-tgq/v27.tgq -an
  
- FATE_EA += fate-ea-tgv-ima-ea-eacs
- fate-ea-tgv-ima-ea-eacs: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTRO8K-partial.TGV -pix_fmt rgb24
 -FATE_AVCONV += fate-ea-tqi
++FATE_EA += fate-ea-tqi
+ fate-ea-tqi: CMD = framecrc -i $(SAMPLES)/ea-wve/networkBackbone-partial.wve -frames:v 26 -an
 -FATE_AVCONV += fate-ea-mad
++FATE_EA += fate-ea-mad
+ fate-ea-mad: CMD = framecrc -i $(SAMPLES)/ea-mad/NFS6LogoE.mad -an
 -FATE_AVCONV += fate-ea-tgv-1
++FATE_EA += fate-ea-tgv-1
+ fate-ea-tgv-1: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTRO8K-partial.TGV -pix_fmt rgb24 -an
  
- FATE_EA += fate-ea-tgv-ima-ea-sead
- fate-ea-tgv-ima-ea-sead: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTEL_S.TGV -pix_fmt rgb24
 -FATE_AVCONV += fate-ea-tgv-2
++FATE_EA += fate-ea-tgv-2
+ fate-ea-tgv-2: CMD = framecrc -i $(SAMPLES)/ea-tgv/INTEL_S.TGV -pix_fmt rgb24 -an
 +
- FATE_TESTS += $(FATE_EA)
++FATE_FFMPEG += $(FATE_EA)
 +fate-ea: $(FATE_EA)
@@@ -188,192 -177,181 +188,192 @@@ FATE_H264  := $(FATE_H264:%=fate-h264-c
                fate-h264-extreme-plane-pred                              \
                fate-h264-bsf-mp4toannexb                                 \
  
- FATE_TESTS += $(FATE_H264)
+ FATE_AVCONV += $(FATE_H264)
  fate-h264: $(FATE_H264)
  
 -fate-h264-conformance-aud_mw_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/AUD_MW_E.264
 -fate-h264-conformance-ba1_ft_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/BA1_FT_C.264
 -fate-h264-conformance-ba1_sony_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/BA1_Sony_D.jsv
 -fate-h264-conformance-ba2_sony_f: CMD = framecrc -i $(SAMPLES)/h264-conformance/BA2_Sony_F.jsv
 -fate-h264-conformance-ba3_sva_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/BA3_SVA_C.264
 -fate-h264-conformance-ba_mw_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/BA_MW_D.264
 -fate-h264-conformance-bamq1_jvc_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/BAMQ1_JVC_C.264
 -fate-h264-conformance-bamq2_jvc_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/BAMQ2_JVC_C.264
 -fate-h264-conformance-banm_mw_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/BANM_MW_D.264
 -fate-h264-conformance-basqp1_sony_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/BASQP1_Sony_C.jsv
 -fate-h264-conformance-caba1_sony_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/CABA1_Sony_D.jsv
 -fate-h264-conformance-caba1_sva_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CABA1_SVA_B.264
 -fate-h264-conformance-caba2_sony_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CABA2_Sony_E.jsv
 -fate-h264-conformance-caba2_sva_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CABA2_SVA_B.264
 -fate-h264-conformance-caba3_sony_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CABA3_Sony_C.jsv
 -fate-h264-conformance-caba3_sva_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CABA3_SVA_B.264
 -fate-h264-conformance-caba3_toshiba_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CABA3_TOSHIBA_E.264
 -fate-h264-conformance-cabac_mot_fld0_full: CMD = framecrc -i $(SAMPLES)/h264-conformance/camp_mot_fld0_full.26l
 -fate-h264-conformance-cabac_mot_frm0_full: CMD = framecrc -i $(SAMPLES)/h264-conformance/camp_mot_frm0_full.26l
 -fate-h264-conformance-cabac_mot_mbaff0_full: CMD = framecrc -i $(SAMPLES)/h264-conformance/camp_mot_mbaff0_full.26l
 -fate-h264-conformance-cabac_mot_picaff0_full: CMD = framecrc -i $(SAMPLES)/h264-conformance/camp_mot_picaff0_full.26l
 -fate-h264-conformance-cabaci3_sony_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CABACI3_Sony_B.jsv
 -fate-h264-conformance-cabast3_sony_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CABAST3_Sony_E.jsv
 -fate-h264-conformance-cabastbr3_sony_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CABASTBR3_Sony_B.jsv
 -fate-h264-conformance-cabref3_sand_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/CABREF3_Sand_D.264
 -fate-h264-conformance-cacqp3_sony_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/CACQP3_Sony_D.jsv
 -fate-h264-conformance-cafi1_sva_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAFI1_SVA_C.264
 -fate-h264-conformance-cama1_sony_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAMA1_Sony_C.jsv
 -fate-h264-conformance-cama1_toshiba_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAMA1_TOSHIBA_B.264
 -fate-h264-conformance-cama1_vtc_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/cama1_vtc_c.avc
 -fate-h264-conformance-cama2_vtc_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/cama2_vtc_b.avc
 -fate-h264-conformance-cama3_sand_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAMA3_Sand_E.264
 -fate-h264-conformance-cama3_vtc_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/cama3_vtc_b.avc
 -fate-h264-conformance-camaci3_sony_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAMACI3_Sony_C.jsv
 -fate-h264-conformance-camanl1_toshiba_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAMANL1_TOSHIBA_B.264
 -fate-h264-conformance-camanl2_toshiba_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAMANL2_TOSHIBA_B.264
 -fate-h264-conformance-camanl3_sand_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAMANL3_Sand_E.264
 -fate-h264-conformance-camasl3_sony_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAMASL3_Sony_B.jsv
 -fate-h264-conformance-camp_mot_mbaff_l30: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAMP_MOT_MBAFF_L30.26l
 -fate-h264-conformance-camp_mot_mbaff_l31: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAMP_MOT_MBAFF_L31.26l
 -fate-h264-conformance-canl1_sony_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CANL1_Sony_E.jsv
 -fate-h264-conformance-canl1_sva_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CANL1_SVA_B.264
 -fate-h264-conformance-canl1_toshiba_g: CMD = framecrc -i $(SAMPLES)/h264-conformance/CANL1_TOSHIBA_G.264
 -fate-h264-conformance-canl2_sony_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CANL2_Sony_E.jsv
 -fate-h264-conformance-canl2_sva_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CANL2_SVA_B.264
 -fate-h264-conformance-canl3_sony_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CANL3_Sony_C.jsv
 -fate-h264-conformance-canl3_sva_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CANL3_SVA_B.264
 -fate-h264-conformance-canl4_sva_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CANL4_SVA_B.264
 -fate-h264-conformance-canlma2_sony_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CANLMA2_Sony_C.jsv
 -fate-h264-conformance-canlma3_sony_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CANLMA3_Sony_C.jsv
 -fate-h264-conformance-capa1_toshiba_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAPA1_TOSHIBA_B.264
 -fate-h264-conformance-capama3_sand_f: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAPAMA3_Sand_F.264
 -fate-h264-conformance-capcm1_sand_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAPCM1_Sand_E.264
 -fate-h264-conformance-capcmnl1_sand_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAPCMNL1_Sand_E.264
 -fate-h264-conformance-capm3_sony_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAPM3_Sony_D.jsv
 -fate-h264-conformance-caqp1_sony_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAQP1_Sony_B.jsv
 -fate-h264-conformance-cavlc_mot_fld0_full_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/cvmp_mot_fld0_full_B.26l
 -fate-h264-conformance-cavlc_mot_frm0_full_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/cvmp_mot_frm0_full_B.26l
 -fate-h264-conformance-cavlc_mot_mbaff0_full_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/cvmp_mot_mbaff0_full_B.26l
 -fate-h264-conformance-cavlc_mot_picaff0_full_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/cvmp_mot_picaff0_full_B.26l
 -fate-h264-conformance-cawp1_toshiba_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAWP1_TOSHIBA_E.264
 -fate-h264-conformance-cawp5_toshiba_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CAWP5_TOSHIBA_E.264
 -fate-h264-conformance-ci1_ft_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CI1_FT_B.264
 -fate-h264-conformance-ci_mw_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/CI_MW_D.264
 -fate-h264-conformance-cvbs3_sony_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVBS3_Sony_C.jsv
 -fate-h264-conformance-cvcanlma2_sony_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVCANLMA2_Sony_C.jsv
 -fate-h264-conformance-cvfi1_sony_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVFI1_Sony_D.jsv
 -fate-h264-conformance-cvfi1_sva_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVFI1_SVA_C.264
 -fate-h264-conformance-cvfi2_sony_h: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVFI2_Sony_H.jsv
 -fate-h264-conformance-cvfi2_sva_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVFI2_SVA_C.264
 -fate-h264-conformance-cvma1_sony_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVMA1_Sony_D.jsv
 -fate-h264-conformance-cvma1_toshiba_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVMA1_TOSHIBA_B.264
 -fate-h264-conformance-cvmanl1_toshiba_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVMANL1_TOSHIBA_B.264
 -fate-h264-conformance-cvmanl2_toshiba_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVMANL2_TOSHIBA_B.264
 -fate-h264-conformance-cvmapaqp3_sony_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVMAPAQP3_Sony_E.jsv
 -fate-h264-conformance-cvmaqp2_sony_g: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVMAQP2_Sony_G.jsv
 -fate-h264-conformance-cvmaqp3_sony_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVMAQP3_Sony_D.jsv
 -fate-h264-conformance-cvmp_mot_fld_l30_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVMP_MOT_FLD_L30_B.26l
 -fate-h264-conformance-cvmp_mot_frm_l31_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVMP_MOT_FRM_L31_B.26l
 -fate-h264-conformance-cvnlfi1_sony_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVNLFI1_Sony_C.jsv
 -fate-h264-conformance-cvnlfi2_sony_h: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVNLFI2_Sony_H.jsv
 -fate-h264-conformance-cvpa1_toshiba_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVPA1_TOSHIBA_B.264
 -fate-h264-conformance-cvpcmnl1_sva_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVPCMNL1_SVA_C.264
 -fate-h264-conformance-cvpcmnl2_sva_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVPCMNL2_SVA_C.264
 -fate-h264-conformance-cvwp1_toshiba_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVWP1_TOSHIBA_E.264
 -fate-h264-conformance-cvwp2_toshiba_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVWP2_TOSHIBA_E.264
 -fate-h264-conformance-cvwp3_toshiba_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVWP3_TOSHIBA_E.264
 -fate-h264-conformance-cvwp5_toshiba_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/CVWP5_TOSHIBA_E.264
 -fate-h264-conformance-fi1_sony_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/FI1_Sony_E.jsv
 -fate-h264-conformance-frext-alphaconformanceg: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/test8b43.264
 -fate-h264-conformance-frext-bcrm_freh10: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/freh10.264 -vsync 0
 -fate-h264-conformance-frext-brcm_freh11: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/freh11.264 -vsync 0
 -fate-h264-conformance-frext-brcm_freh3: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/freh3.264
 -fate-h264-conformance-frext-brcm_freh4: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/freh4.264 -vsync 0
 -fate-h264-conformance-frext-brcm_freh5: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/freh5.264
 -fate-h264-conformance-frext-brcm_freh8: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/freh8.264
 -fate-h264-conformance-frext-brcm_freh9: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/freh9.264
 -fate-h264-conformance-frext-freh12_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/Freh12_B.264
 -fate-h264-conformance-frext-freh1_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/Freh1_B.264
 -fate-h264-conformance-frext-freh2_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/Freh2_B.264
 -fate-h264-conformance-frext-freh6: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/freh6.264 -vsync 0
 -fate-h264-conformance-frext-freh7_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/Freh7_B.264 -vsync 0
 -fate-h264-conformance-frext-frext01_jvc_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/FREXT01_JVC_D.264
 -fate-h264-conformance-frext-frext02_jvc_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/FREXT02_JVC_C.264
 -fate-h264-conformance-frext-frext1_panasonic_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/FRExt1_Panasonic.avc
 -fate-h264-conformance-frext-frext2_panasonic_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/FRExt2_Panasonic.avc -vsync 0
 -fate-h264-conformance-frext-frext3_panasonic_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/FRExt3_Panasonic.avc
 -fate-h264-conformance-frext-frext4_panasonic_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/FRExt4_Panasonic.avc
 -fate-h264-conformance-frext-frext_mmco4_sony_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/FRExt_MMCO4_Sony_B.264
 -fate-h264-conformance-frext-hcaff1_hhi_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HCAFF1_HHI.264
 -fate-h264-conformance-frext-hcafr1_hhi_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HCAFR1_HHI.264
 -fate-h264-conformance-frext-hcafr2_hhi_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HCAFR2_HHI.264
 -fate-h264-conformance-frext-hcafr3_hhi_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HCAFR3_HHI.264
 -fate-h264-conformance-frext-hcafr4_hhi_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HCAFR4_HHI.264
 -fate-h264-conformance-frext-hcamff1_hhi_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HCAMFF1_HHI.264
 -fate-h264-conformance-frext-hpca_brcm_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCA_BRCM_C.264
 -fate-h264-conformance-frext-hpcadq_brcm_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCADQ_BRCM_B.264
 -fate-h264-conformance-frext-hpcafl_bcrm_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCAFL_BRCM_C.264 -vsync 0
 -fate-h264-conformance-frext-hpcaflnl_bcrm_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCAFLNL_BRCM_C.264 -vsync 0
 -fate-h264-conformance-frext-hpcalq_brcm_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCALQ_BRCM_B.264
 -fate-h264-conformance-frext-hpcamapalq_bcrm_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCAMAPALQ_BRCM_B.264 -vsync 0
 -fate-h264-conformance-frext-hpcamolq_brcm_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCAMOLQ_BRCM_B.264
 -fate-h264-conformance-frext-hpcanl_brcm_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCANL_BRCM_C.264
 -fate-h264-conformance-frext-hpcaq2lq_brcm_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCAQ2LQ_BRCM_B.264
 -fate-h264-conformance-frext-hpcv_brcm_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCV_BRCM_A.264
 -fate-h264-conformance-frext-hpcvfl_bcrm_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCVFL_BRCM_A.264 -vsync 0
 -fate-h264-conformance-frext-hpcvflnl_bcrm_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCVFLNL_BRCM_A.264 -vsync 0
 -fate-h264-conformance-frext-hpcvmolq_brcm_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCVMOLQ_BRCM_B.264
 -fate-h264-conformance-frext-hpcvnl_brcm_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/HPCVNL_BRCM_A.264
 -fate-h264-conformance-frext-pph10i1_panasonic_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/PPH10I1_Panasonic_A.264 -pix_fmt yuv420p10le
 -fate-h264-conformance-frext-pph10i2_panasonic_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/PPH10I2_Panasonic_A.264 -pix_fmt yuv420p10le
 -fate-h264-conformance-frext-pph10i3_panasonic_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/PPH10I3_Panasonic_A.264 -pix_fmt yuv420p10le
 -fate-h264-conformance-frext-pph10i4_panasonic_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/PPH10I4_Panasonic_A.264 -pix_fmt yuv420p10le
 -fate-h264-conformance-frext-pph10i5_panasonic_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/PPH10I5_Panasonic_A.264 -pix_fmt yuv420p10le
 -fate-h264-conformance-frext-pph10i6_panasonic_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/PPH10I6_Panasonic_A.264 -pix_fmt yuv420p10le
 -fate-h264-conformance-frext-pph10i7_panasonic_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/FRext/PPH10I7_Panasonic_A.264 -pix_fmt yuv420p10le
 -fate-h264-conformance-hcbp2_hhi_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/HCBP2_HHI_A.264
 -fate-h264-conformance-hcmp1_hhi_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/HCMP1_HHI_A.264
 -fate-h264-conformance-ls_sva_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/LS_SVA_D.264
 -fate-h264-conformance-midr_mw_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/MIDR_MW_D.264
 -fate-h264-conformance-mps_mw_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/MPS_MW_A.264
 -fate-h264-conformance-mr1_bt_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/MR1_BT_A.h264
 -fate-h264-conformance-mr1_mw_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/MR1_MW_A.264
 -fate-h264-conformance-mr2_mw_a: CMD = framecrc -i $(SAMPLES)/h264-conformance/MR2_MW_A.264
 -fate-h264-conformance-mr2_tandberg_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/MR2_TANDBERG_E.264
 -fate-h264-conformance-mr3_tandberg_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/MR3_TANDBERG_B.264
 -fate-h264-conformance-mr4_tandberg_c: CMD = framecrc -strict 1 -i $(SAMPLES)/h264-conformance/MR4_TANDBERG_C.264
 -fate-h264-conformance-mr5_tandberg_c: CMD = framecrc -strict 1 -i $(SAMPLES)/h264-conformance/MR5_TANDBERG_C.264
 -fate-h264-conformance-mr6_bt_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/MR6_BT_B.h264
 -fate-h264-conformance-mr7_bt_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/MR7_BT_B.h264
 -fate-h264-conformance-mr8_bt_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/MR8_BT_B.h264
 -fate-h264-conformance-mr9_bt_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/MR9_BT_B.h264
 -fate-h264-conformance-mv1_brcm_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/src19td.IBP.264
 -fate-h264-conformance-nl1_sony_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/NL1_Sony_D.jsv
 -fate-h264-conformance-nl2_sony_h: CMD = framecrc -i $(SAMPLES)/h264-conformance/NL2_Sony_H.jsv
 -fate-h264-conformance-nl3_sva_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/NL3_SVA_E.264
 -fate-h264-conformance-nlmq1_jvc_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/NLMQ1_JVC_C.264
 -fate-h264-conformance-nlmq2_jvc_c: CMD = framecrc -i $(SAMPLES)/h264-conformance/NLMQ2_JVC_C.264
 -fate-h264-conformance-nrf_mw_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/NRF_MW_E.264
 -fate-h264-conformance-sharp_mp_field_1_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/Sharp_MP_Field_1_B.jvt
 -fate-h264-conformance-sharp_mp_field_2_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/Sharp_MP_Field_2_B.jvt
 -fate-h264-conformance-sharp_mp_field_3_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/Sharp_MP_Field_3_B.jvt
 -fate-h264-conformance-sharp_mp_paff_1r2: CMD = framecrc -i $(SAMPLES)/h264-conformance/Sharp_MP_PAFF_1r2.jvt
 -fate-h264-conformance-sharp_mp_paff_2r: CMD = framecrc -i $(SAMPLES)/h264-conformance/Sharp_MP_PAFF_2.jvt
 -fate-h264-conformance-sl1_sva_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/SL1_SVA_B.264
 -fate-h264-conformance-sva_ba1_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/SVA_BA1_B.264
 -fate-h264-conformance-sva_ba2_d: CMD = framecrc -i $(SAMPLES)/h264-conformance/SVA_BA2_D.264
 -fate-h264-conformance-sva_base_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/SVA_Base_B.264
 -fate-h264-conformance-sva_cl1_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/SVA_CL1_E.264
 -fate-h264-conformance-sva_fm1_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/SVA_FM1_E.264
 -fate-h264-conformance-sva_nl1_b: CMD = framecrc -i $(SAMPLES)/h264-conformance/SVA_NL1_B.264
 -fate-h264-conformance-sva_nl2_e: CMD = framecrc -i $(SAMPLES)/h264-conformance/SVA_NL2_E.264
 +fate-h264-conformance-aud_mw_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/AUD_MW_E.264
 +fate-h264-conformance-ba1_ft_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/BA1_FT_C.264
 +fate-h264-conformance-ba1_sony_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/BA1_Sony_D.jsv
 +fate-h264-conformance-ba2_sony_f: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/BA2_Sony_F.jsv
 +fate-h264-conformance-ba3_sva_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/BA3_SVA_C.264
 +fate-h264-conformance-ba_mw_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/BA_MW_D.264
 +fate-h264-conformance-bamq1_jvc_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/BAMQ1_JVC_C.264
 +fate-h264-conformance-bamq2_jvc_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/BAMQ2_JVC_C.264
 +fate-h264-conformance-banm_mw_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/BANM_MW_D.264
 +fate-h264-conformance-basqp1_sony_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/BASQP1_Sony_C.jsv
 +fate-h264-conformance-caba1_sony_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CABA1_Sony_D.jsv
 +fate-h264-conformance-caba1_sva_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CABA1_SVA_B.264
 +fate-h264-conformance-caba2_sony_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CABA2_Sony_E.jsv
 +fate-h264-conformance-caba2_sva_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CABA2_SVA_B.264
 +fate-h264-conformance-caba3_sony_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CABA3_Sony_C.jsv
 +fate-h264-conformance-caba3_sva_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CABA3_SVA_B.264
 +fate-h264-conformance-caba3_toshiba_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CABA3_TOSHIBA_E.264
 +fate-h264-conformance-cabac_mot_fld0_full: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/camp_mot_fld0_full.26l
 +fate-h264-conformance-cabac_mot_frm0_full: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/camp_mot_frm0_full.26l
 +fate-h264-conformance-cabac_mot_mbaff0_full: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/camp_mot_mbaff0_full.26l
 +fate-h264-conformance-cabac_mot_picaff0_full: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/camp_mot_picaff0_full.26l
 +fate-h264-conformance-cabaci3_sony_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CABACI3_Sony_B.jsv
 +fate-h264-conformance-cabast3_sony_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CABAST3_Sony_E.jsv
 +fate-h264-conformance-cabastbr3_sony_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CABASTBR3_Sony_B.jsv
 +fate-h264-conformance-cabref3_sand_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CABREF3_Sand_D.264
 +fate-h264-conformance-cacqp3_sony_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CACQP3_Sony_D.jsv
 +fate-h264-conformance-cafi1_sva_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAFI1_SVA_C.264
 +fate-h264-conformance-cama1_sony_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAMA1_Sony_C.jsv
 +fate-h264-conformance-cama1_toshiba_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAMA1_TOSHIBA_B.264
 +fate-h264-conformance-cama1_vtc_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/cama1_vtc_c.avc
 +fate-h264-conformance-cama2_vtc_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/cama2_vtc_b.avc
 +fate-h264-conformance-cama3_sand_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAMA3_Sand_E.264
 +fate-h264-conformance-cama3_vtc_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/cama3_vtc_b.avc
 +fate-h264-conformance-camaci3_sony_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAMACI3_Sony_C.jsv
 +fate-h264-conformance-camanl1_toshiba_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAMANL1_TOSHIBA_B.264
 +fate-h264-conformance-camanl2_toshiba_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAMANL2_TOSHIBA_B.264
 +fate-h264-conformance-camanl3_sand_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAMANL3_Sand_E.264
 +fate-h264-conformance-camasl3_sony_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAMASL3_Sony_B.jsv
 +fate-h264-conformance-camp_mot_mbaff_l30: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAMP_MOT_MBAFF_L30.26l
 +fate-h264-conformance-camp_mot_mbaff_l31: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAMP_MOT_MBAFF_L31.26l
 +fate-h264-conformance-canl1_sony_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CANL1_Sony_E.jsv
 +fate-h264-conformance-canl1_sva_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CANL1_SVA_B.264
 +fate-h264-conformance-canl1_toshiba_g: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CANL1_TOSHIBA_G.264
 +fate-h264-conformance-canl2_sony_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CANL2_Sony_E.jsv
 +fate-h264-conformance-canl2_sva_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CANL2_SVA_B.264
 +fate-h264-conformance-canl3_sony_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CANL3_Sony_C.jsv
 +fate-h264-conformance-canl3_sva_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CANL3_SVA_B.264
 +fate-h264-conformance-canl4_sva_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CANL4_SVA_B.264
 +fate-h264-conformance-canlma2_sony_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CANLMA2_Sony_C.jsv
 +fate-h264-conformance-canlma3_sony_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CANLMA3_Sony_C.jsv
 +fate-h264-conformance-capa1_toshiba_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAPA1_TOSHIBA_B.264
 +fate-h264-conformance-capama3_sand_f: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAPAMA3_Sand_F.264
 +fate-h264-conformance-capcm1_sand_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAPCM1_Sand_E.264
 +fate-h264-conformance-capcmnl1_sand_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAPCMNL1_Sand_E.264
 +fate-h264-conformance-capm3_sony_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAPM3_Sony_D.jsv
 +fate-h264-conformance-caqp1_sony_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAQP1_Sony_B.jsv
 +fate-h264-conformance-cavlc_mot_fld0_full_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/cvmp_mot_fld0_full_B.26l
 +fate-h264-conformance-cavlc_mot_frm0_full_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/cvmp_mot_frm0_full_B.26l
 +fate-h264-conformance-cavlc_mot_mbaff0_full_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/cvmp_mot_mbaff0_full_B.26l
 +fate-h264-conformance-cavlc_mot_picaff0_full_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/cvmp_mot_picaff0_full_B.26l
 +fate-h264-conformance-cawp1_toshiba_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAWP1_TOSHIBA_E.264
 +fate-h264-conformance-cawp5_toshiba_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CAWP5_TOSHIBA_E.264
 +fate-h264-conformance-ci1_ft_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CI1_FT_B.264
 +fate-h264-conformance-ci_mw_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CI_MW_D.264
 +fate-h264-conformance-cvbs3_sony_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVBS3_Sony_C.jsv
 +fate-h264-conformance-cvcanlma2_sony_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVCANLMA2_Sony_C.jsv
 +fate-h264-conformance-cvfi1_sony_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVFI1_Sony_D.jsv
 +fate-h264-conformance-cvfi1_sva_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVFI1_SVA_C.264
 +fate-h264-conformance-cvfi2_sony_h: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVFI2_Sony_H.jsv
 +fate-h264-conformance-cvfi2_sva_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVFI2_SVA_C.264
 +fate-h264-conformance-cvma1_sony_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVMA1_Sony_D.jsv
 +fate-h264-conformance-cvma1_toshiba_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVMA1_TOSHIBA_B.264
 +fate-h264-conformance-cvmanl1_toshiba_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVMANL1_TOSHIBA_B.264
 +fate-h264-conformance-cvmanl2_toshiba_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVMANL2_TOSHIBA_B.264
 +fate-h264-conformance-cvmapaqp3_sony_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVMAPAQP3_Sony_E.jsv
 +fate-h264-conformance-cvmaqp2_sony_g: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVMAQP2_Sony_G.jsv
 +fate-h264-conformance-cvmaqp3_sony_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVMAQP3_Sony_D.jsv
 +fate-h264-conformance-cvmp_mot_fld_l30_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVMP_MOT_FLD_L30_B.26l
 +fate-h264-conformance-cvmp_mot_frm_l31_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVMP_MOT_FRM_L31_B.26l
 +fate-h264-conformance-cvnlfi1_sony_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVNLFI1_Sony_C.jsv
 +fate-h264-conformance-cvnlfi2_sony_h: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVNLFI2_Sony_H.jsv
 +fate-h264-conformance-cvpa1_toshiba_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVPA1_TOSHIBA_B.264
 +fate-h264-conformance-cvpcmnl1_sva_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVPCMNL1_SVA_C.264
 +fate-h264-conformance-cvpcmnl2_sva_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVPCMNL2_SVA_C.264
 +fate-h264-conformance-cvwp1_toshiba_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVWP1_TOSHIBA_E.264
 +fate-h264-conformance-cvwp2_toshiba_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVWP2_TOSHIBA_E.264
 +fate-h264-conformance-cvwp3_toshiba_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVWP3_TOSHIBA_E.264
 +fate-h264-conformance-cvwp5_toshiba_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/CVWP5_TOSHIBA_E.264
 +fate-h264-conformance-fi1_sony_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FI1_Sony_E.jsv
 +fate-h264-conformance-frext-alphaconformanceg: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/test8b43.264
 +fate-h264-conformance-frext-bcrm_freh10: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/freh10.264 -vsync drop
 +fate-h264-conformance-frext-brcm_freh11: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/freh11.264 -vsync drop
 +fate-h264-conformance-frext-brcm_freh3: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/freh3.264
 +fate-h264-conformance-frext-brcm_freh4: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/freh4.264 -vsync drop
 +fate-h264-conformance-frext-brcm_freh5: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/freh5.264
 +fate-h264-conformance-frext-brcm_freh8: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/freh8.264
 +fate-h264-conformance-frext-brcm_freh9: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/freh9.264
 +fate-h264-conformance-frext-freh12_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/Freh12_B.264
 +fate-h264-conformance-frext-freh1_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/Freh1_B.264
 +fate-h264-conformance-frext-freh2_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/Freh2_B.264
 +fate-h264-conformance-frext-freh6: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/freh6.264 -vsync drop
 +fate-h264-conformance-frext-freh7_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/Freh7_B.264 -vsync drop
 +fate-h264-conformance-frext-frext01_jvc_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/FREXT01_JVC_D.264
 +fate-h264-conformance-frext-frext02_jvc_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/FREXT02_JVC_C.264
 +fate-h264-conformance-frext-frext1_panasonic_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/FRExt1_Panasonic.avc
 +fate-h264-conformance-frext-frext2_panasonic_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/FRExt2_Panasonic.avc -vsync 0
 +fate-h264-conformance-frext-frext3_panasonic_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/FRExt3_Panasonic.avc
 +fate-h264-conformance-frext-frext4_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/FRExt4_Panasonic.avc
 +fate-h264-conformance-frext-frext_mmco4_sony_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/FRExt_MMCO4_Sony_B.264
 +fate-h264-conformance-frext-hcaff1_hhi_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HCAFF1_HHI.264
 +fate-h264-conformance-frext-hcafr1_hhi_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HCAFR1_HHI.264
 +fate-h264-conformance-frext-hcafr2_hhi_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HCAFR2_HHI.264
 +fate-h264-conformance-frext-hcafr3_hhi_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HCAFR3_HHI.264
 +fate-h264-conformance-frext-hcafr4_hhi_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HCAFR4_HHI.264
 +fate-h264-conformance-frext-hcamff1_hhi_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HCAMFF1_HHI.264
 +fate-h264-conformance-frext-hi422fr10_sony_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/Hi422FR10_SONY_B.264
 +fate-h264-conformance-frext-hi422fr13_sony_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/Hi422FR13_SONY_B.264 -pix_fmt yuv422p10le
 +fate-h264-conformance-frext-hi422fr1_sony_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/Hi422FR1_SONY_A.jsv
 +fate-h264-conformance-frext-hi422fr6_sony_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/Hi422FR6_SONY_A.jsv -pix_fmt yuv422p10le
 +fate-h264-conformance-frext-hpca_brcm_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCA_BRCM_C.264
 +fate-h264-conformance-frext-hpcadq_brcm_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCADQ_BRCM_B.264
 +fate-h264-conformance-frext-hpcafl_bcrm_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCAFL_BRCM_C.264 -vsync drop
 +fate-h264-conformance-frext-hpcaflnl_bcrm_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCAFLNL_BRCM_C.264 -vsync drop
 +fate-h264-conformance-frext-hpcalq_brcm_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCALQ_BRCM_B.264
 +fate-h264-conformance-frext-hpcamapalq_bcrm_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCAMAPALQ_BRCM_B.264 -vsync 0
 +fate-h264-conformance-frext-hpcamolq_brcm_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCAMOLQ_BRCM_B.264
 +fate-h264-conformance-frext-hpcanl_brcm_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCANL_BRCM_C.264
 +fate-h264-conformance-frext-hpcaq2lq_brcm_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCAQ2LQ_BRCM_B.264
 +fate-h264-conformance-frext-hpcv_brcm_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCV_BRCM_A.264
 +fate-h264-conformance-frext-hpcvfl_bcrm_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCVFL_BRCM_A.264 -vsync drop
 +fate-h264-conformance-frext-hpcvflnl_bcrm_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCVFLNL_BRCM_A.264 -vsync drop
 +fate-h264-conformance-frext-hpcvmolq_brcm_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCVMOLQ_BRCM_B.264
 +fate-h264-conformance-frext-hpcvnl_brcm_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/HPCVNL_BRCM_A.264
 +fate-h264-conformance-frext-pph10i1_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH10I1_Panasonic_A.264 -pix_fmt yuv420p10le
 +fate-h264-conformance-frext-pph10i2_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH10I2_Panasonic_A.264 -pix_fmt yuv420p10le
 +fate-h264-conformance-frext-pph10i3_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH10I3_Panasonic_A.264 -pix_fmt yuv420p10le
 +fate-h264-conformance-frext-pph10i4_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH10I4_Panasonic_A.264 -pix_fmt yuv420p10le
 +fate-h264-conformance-frext-pph10i5_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH10I5_Panasonic_A.264 -pix_fmt yuv420p10le
 +fate-h264-conformance-frext-pph10i6_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH10I6_Panasonic_A.264 -pix_fmt yuv420p10le
 +fate-h264-conformance-frext-pph10i7_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH10I7_Panasonic_A.264 -pix_fmt yuv420p10le
 +fate-h264-conformance-frext-pph422i1_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH422I1_Panasonic_A.264 -pix_fmt yuv422p10le
 +fate-h264-conformance-frext-pph422i2_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH422I2_Panasonic_A.264 -pix_fmt yuv422p10le
 +fate-h264-conformance-frext-pph422i3_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH422I3_Panasonic_A.264 -pix_fmt yuv422p10le
 +fate-h264-conformance-frext-pph422i4_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH422I4_Panasonic_A.264 -pix_fmt yuv422p10le
 +fate-h264-conformance-frext-pph422i5_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH422I5_Panasonic_A.264 -pix_fmt yuv422p10le
 +fate-h264-conformance-frext-pph422i6_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH422I6_Panasonic_A.264 -pix_fmt yuv422p10le
 +fate-h264-conformance-frext-pph422i7_panasonic_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/FRext/PPH422I7_Panasonic_A.264 -pix_fmt yuv422p10le
 +fate-h264-conformance-hcbp2_hhi_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/HCBP2_HHI_A.264
 +fate-h264-conformance-hcmp1_hhi_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/HCMP1_HHI_A.264
 +fate-h264-conformance-ls_sva_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/LS_SVA_D.264
 +fate-h264-conformance-midr_mw_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/MIDR_MW_D.264
 +fate-h264-conformance-mps_mw_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/MPS_MW_A.264
 +fate-h264-conformance-mr1_bt_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/MR1_BT_A.h264
 +fate-h264-conformance-mr1_mw_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/MR1_MW_A.264
 +fate-h264-conformance-mr2_mw_a: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/MR2_MW_A.264
 +fate-h264-conformance-mr2_tandberg_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/MR2_TANDBERG_E.264
 +fate-h264-conformance-mr3_tandberg_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/MR3_TANDBERG_B.264
 +fate-h264-conformance-mr4_tandberg_c: CMD = framecrc -vsync drop -strict 1 -i $(SAMPLES)/h264-conformance/MR4_TANDBERG_C.264
 +fate-h264-conformance-mr5_tandberg_c: CMD = framecrc -vsync drop -strict 1 -i $(SAMPLES)/h264-conformance/MR5_TANDBERG_C.264
 +fate-h264-conformance-mr6_bt_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/MR6_BT_B.h264
 +fate-h264-conformance-mr7_bt_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/MR7_BT_B.h264
 +fate-h264-conformance-mr8_bt_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/MR8_BT_B.h264
 +fate-h264-conformance-mr9_bt_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/MR9_BT_B.h264
 +fate-h264-conformance-mv1_brcm_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/src19td.IBP.264
 +fate-h264-conformance-nl1_sony_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/NL1_Sony_D.jsv
 +fate-h264-conformance-nl2_sony_h: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/NL2_Sony_H.jsv
 +fate-h264-conformance-nl3_sva_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/NL3_SVA_E.264
 +fate-h264-conformance-nlmq1_jvc_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/NLMQ1_JVC_C.264
 +fate-h264-conformance-nlmq2_jvc_c: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/NLMQ2_JVC_C.264
 +fate-h264-conformance-nrf_mw_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/NRF_MW_E.264
 +fate-h264-conformance-sharp_mp_field_1_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/Sharp_MP_Field_1_B.jvt
 +fate-h264-conformance-sharp_mp_field_2_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/Sharp_MP_Field_2_B.jvt
 +fate-h264-conformance-sharp_mp_field_3_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/Sharp_MP_Field_3_B.jvt
 +fate-h264-conformance-sharp_mp_paff_1r2: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/Sharp_MP_PAFF_1r2.jvt
 +fate-h264-conformance-sharp_mp_paff_2r: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/Sharp_MP_PAFF_2.jvt
 +fate-h264-conformance-sl1_sva_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/SL1_SVA_B.264
 +fate-h264-conformance-sva_ba1_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/SVA_BA1_B.264
 +fate-h264-conformance-sva_ba2_d: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/SVA_BA2_D.264
 +fate-h264-conformance-sva_base_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/SVA_Base_B.264
 +fate-h264-conformance-sva_cl1_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/SVA_CL1_E.264
 +fate-h264-conformance-sva_fm1_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/SVA_FM1_E.264
 +fate-h264-conformance-sva_nl1_b: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/SVA_NL1_B.264
 +fate-h264-conformance-sva_nl2_e: CMD = framecrc -vsync drop -i $(SAMPLES)/h264-conformance/SVA_NL2_E.264
  
  fate-h264-interlace-crop: CMD = framecrc -i $(SAMPLES)/h264/interlaced_crop.mp4 -vframes 3
  fate-h264-lossless: CMD = framecrc -i $(SAMPLES)/h264/lossless.h264
@@@ -67,9 -67,5 +67,9 @@@ fate-tiff-fax-g3: CMD = framecrc -i $(S
  FATE_TIFF += fate-tiff-fax-g3s
  fate-tiff-fax-g3s: CMD = framecrc -i $(SAMPLES)/CCITT_fax/G31DS.TIF
  
 -FATE_AVCONV += $(FATE_TIFF)
 +FATE_IMAGE += $(FATE_TIFF)
  fate-tiff: $(FATE_TIFF)
- FATE_TESTS += $(FATE_IMAGE)
 +
++FATE_FFMPEG += $(FATE_IMAGE)
 +fate-image: $(FATE_IMAGE)
 +
@@@ -1,21 -1,17 +1,21 @@@
 -FATE_AVCONV += fate-lossless-alac
 +FATE_LOSSLESS_AUDIO += fate-lossless-alac
  fate-lossless-alac: CMD = md5 -i $(SAMPLES)/lossless-audio/inside.m4a -f s16le
  
 -FATE_AVCONV += fate-lossless-meridianaudio
 +FATE_LOSSLESS_AUDIO += fate-lossless-meridianaudio
  fate-lossless-meridianaudio: CMD = md5 -i $(SAMPLES)/lossless-audio/luckynight-partial.mlp -f s16le
  
 -FATE_AVCONV += fate-lossless-monkeysaudio
 +FATE_LOSSLESS_AUDIO += fate-lossless-monkeysaudio
  fate-lossless-monkeysaudio: CMD = md5 -i $(SAMPLES)/lossless-audio/luckynight-partial.ape -f s16le
  
 -FATE_AVCONV += fate-lossless-shorten
 +FATE_LOSSLESS_AUDIO += fate-lossless-shorten
  fate-lossless-shorten: CMD = md5 -i $(SAMPLES)/lossless-audio/luckynight-partial.shn -f s16le
  
 -FATE_AVCONV += fate-lossless-tta
 +FATE_LOSSLESS_AUDIO += fate-lossless-tta
  fate-lossless-tta: CMD = crc -i $(SAMPLES)/lossless-audio/inside.tta
  
 -FATE_AVCONV += fate-lossless-wma
 +FATE_LOSSLESS_AUDIO += fate-lossless-wma
  fate-lossless-wma: CMD = md5 -i $(SAMPLES)/lossless-audio/luckynight-partial.wma -f s16le
- FATE_TESTS += $(FATE_LOSSLESS_AUDIO)
 +
++FATE_FFMPEG += $(FATE_LOSSLESS_AUDIO)
 +fate-lossless-audio: $(FATE_LOSSLESS_AUDIO)
 +
@@@ -4,24 -4,20 +4,24 @@@ fate-loco-rgb: CMD = framecrc -i $(SAMP
  FATE_LOCO += fate-loco-yuy2
  fate-loco-yuy2: CMD = framecrc -i $(SAMPLES)/loco/pig-loco-0.avi
  
 -FATE_AVCONV += $(FATE_LOCO)
 +FATE_LOSSLESS_VIDEO += $(FATE_LOCO)
  fate-loco: $(FATE_LOCO)
  
 -FATE_AVCONV += fate-msrle-8bit
 +FATE_LOSSLESS_VIDEO += fate-msrle-8bit
  fate-msrle-8bit: CMD = framecrc -i $(SAMPLES)/msrle/Search-RLE.avi -pix_fmt rgb24
  
 -FATE_AVCONV += fate-mszh
 +FATE_LOSSLESS_VIDEO += fate-mszh
  fate-mszh: CMD = framecrc -i $(SAMPLES)/lcl/mszh-1frame.avi
  
 -FATE_AVCONV += fate-vble
 +FATE_LOSSLESS_VIDEO += fate-vble
  fate-vble: CMD = framecrc -i $(SAMPLES)/vble/flowers-partial-2MB.avi
  
 -FATE_AVCONV += fate-zlib
 +FATE_LOSSLESS_VIDEO += fate-zlib
  fate-zlib: CMD = framecrc -i $(SAMPLES)/lcl/zlib-1frame.avi
  
 -FATE_AVCONV += fate-zerocodec
 +FATE_LOSSLESS_VIDEO += fate-zerocodec
  fate-zerocodec: CMD = framecrc -i $(SAMPLES)/zerocodec/sample-zeco.avi
- FATE_TESTS += $(FATE_LOSSLESS_VIDEO)
 +
++FATE_FFMPEG += $(FATE_LOSSLESS_VIDEO)
 +fate-lossless-video: $(FATE_LOSSLESS_VIDEO)
 +
index 20153b7,0000000..19c515c
mode 100644,000000..100644
--- /dev/null
@@@ -1,14 -1,0 +1,14 @@@
- FATE_TESTS += $(FATE_MAPCHAN)
 +FATE_MAPCHAN += fate-mapchan-6ch-extract-2
 +fate-mapchan-6ch-extract-2: tests/data/asynth-22050-6.wav
 +fate-mapchan-6ch-extract-2: CMD = avconv -i $(TARGET_PATH)/tests/data/asynth-22050-6.wav -map_channel 0.0.0 -f wav md5: -map_channel 0.0.1 -f wav md5:
 +
 +FATE_MAPCHAN += fate-mapchan-6ch-extract-2-downmix-mono
 +fate-mapchan-6ch-extract-2-downmix-mono: tests/data/asynth-22050-6.wav
 +fate-mapchan-6ch-extract-2-downmix-mono: CMD = md5 -i $(TARGET_PATH)/tests/data/asynth-22050-6.wav -map_channel 0.0.1 -map_channel 0.0.0 -ac 1 -f wav
 +
 +FATE_MAPCHAN += fate-mapchan-silent-mono
 +fate-mapchan-silent-mono: tests/data/asynth-22050-1.wav
 +fate-mapchan-silent-mono: CMD = md5 -i $(TARGET_PATH)/tests/data/asynth-22050-1.wav -map_channel -1 -map_channel 0.0.0 -f wav
 +
++FATE_FFMPEG += $(FATE_MAPCHAN)
 +fate-mapchan: $(FATE_MAPCHAN)
@@@ -39,8 -35,5 +39,8 @@@ fate-vc1_sa20021: CMD = framecrc -i $(S
  FATE_VC1 += fate-vc1-ism
  fate-vc1-ism: CMD = framecrc -i $(SAMPLES)/isom/vc1-wmapro.ism -an
  
 -FATE_AVCONV += $(FATE_VC1)
 +FATE_MICROSOFT += $(FATE_VC1)
  fate-vc1: $(FATE_VC1)
- FATE_TESTS += $(FATE_MICROSOFT)
 +
++FATE_FFMPEG += $(FATE_MICROSOFT)
 +fate-microsoft: $(FATE_MICROSOFT)
@@@ -10,5 -10,5 +10,5 @@@ fate-musepack7: CMP = oneof
  fate-musepack7: REF = $(SAMPLES)/musepack/inside-mp7.pcm
  fate-musepack7: FUZZ = 1
  
- FATE_TESTS += $(FATE_MPC)
 -FATE_AVCONV += $(FATE_MPC)
++FATE_FFMPEG += $(FATE_MPC)
  fate-mpc: $(FATE_MPC)
@@@ -10,8 -10,9 +10,9 @@@ fate-probe-format-roundup1414: REF = fo
  FATE_PROBE_FORMAT += fate-probe-format-roundup2015
  fate-probe-format-roundup2015: REF = format_name=dv
  
- FATE_TESTS += $(FATE_PROBE_FORMAT)
 -FATE-$(CONFIG_AVPROBE) += $(FATE_PROBE_FORMAT)
++FATE-$(CONFIG_FFPROBE) += $(FATE_PROBE_FORMAT)
  fate-probe-format: $(FATE_PROBE_FORMAT)
  
 -$(FATE_PROBE_FORMAT): avprobe$(EXESUF)
++$(FATE_PROBE_FORMAT): ffprobe$(EXESUF)
  $(FATE_PROBE_FORMAT): CMP = oneline
  fate-probe-format-%: CMD = probefmt $(SAMPLES)/probe-format/$(@:fate-probe-format-%=%)
@@@ -4,11 -4,11 +4,11 @@@ FATE_PRORES = fate-prores-42
                fate-prores-422_proxy                                     \
                fate-prores-alpha                                         \
  
- FATE_TESTS += $(FATE_PRORES)
+ FATE_AVCONV += $(FATE_PRORES)
  fate-prores: $(FATE_PRORES)
  
 -fate-prores-422:       CMD = framecrc -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422.mov -pix_fmt yuv422p10le
 -fate-prores-422_hq:    CMD = framecrc -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422_HQ.mov -pix_fmt yuv422p10le
 -fate-prores-422_lt:    CMD = framecrc -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422_LT.mov -pix_fmt yuv422p10le
 -fate-prores-422_proxy: CMD = framecrc -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422_Proxy.mov -pix_fmt yuv422p10le
 -fate-prores-alpha:     CMD = framecrc -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_with_Alpha.mov -pix_fmt yuv444p10le
 +fate-prores-422:       CMD = framecrc -flags +bitexact -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422.mov -pix_fmt yuv422p10le
 +fate-prores-422_hq:    CMD = framecrc -flags +bitexact -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422_HQ.mov -pix_fmt yuv422p10le
 +fate-prores-422_lt:    CMD = framecrc -flags +bitexact -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422_LT.mov -pix_fmt yuv422p10le
 +fate-prores-422_proxy: CMD = framecrc -flags +bitexact -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422_Proxy.mov -pix_fmt yuv422p10le
 +fate-prores-alpha:     CMD = framecrc -flags +bitexact -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_with_Alpha.mov -pix_fmt yuv444p10le
@@@ -7,47 -7,44 +7,47 @@@ fate-qdm2: CMP = oneof
  fate-qdm2: REF = $(SAMPLES)/qt-surge-suite/surge-2-16-B-QDM2.pcm
  fate-qdm2: FUZZ = 2
  
 -FATE_AVCONV += fate-qt-alaw-mono
 +FATE_QT += fate-qt-alaw-mono
  fate-qt-alaw-mono: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-1-16-B-alaw.mov -f s16le
  
 -FATE_AVCONV += fate-qt-alaw-stereo
 +FATE_QT += fate-qt-alaw-stereo
  fate-qt-alaw-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-B-alaw.mov -f s16le
  
 -FATE_AVCONV += fate-qt-ima4-mono
 +FATE_QT += fate-qt-ima4-mono
  fate-qt-ima4-mono: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-1-16-B-ima4.mov -f s16le
  
 -FATE_AVCONV += fate-qt-ima4-stereo
 +FATE_QT += fate-qt-ima4-stereo
  fate-qt-ima4-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-B-ima4.mov -f s16le
  
 -FATE_AVCONV += fate-qt-mac3-mono
 +FATE_QT += fate-qt-mac3-mono
  fate-qt-mac3-mono: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-1-8-MAC3.mov -f s16le
  
 -FATE_AVCONV += fate-qt-mac3-stereo
 +FATE_QT += fate-qt-mac3-stereo
  fate-qt-mac3-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-8-MAC3.mov -f s16le
  
 -FATE_AVCONV += fate-qt-mac6-mono
 +FATE_QT += fate-qt-mac6-mono
  fate-qt-mac6-mono: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-1-8-MAC6.mov -f s16le
  
 -FATE_AVCONV += fate-qt-mac6-stereo
 +FATE_QT += fate-qt-mac6-stereo
  fate-qt-mac6-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-8-MAC6.mov -f s16le
  
 -FATE_AVCONV += fate-qt-ulaw-mono
 +FATE_QT += fate-qt-ulaw-mono
  fate-qt-ulaw-mono: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-1-16-B-ulaw.mov -f s16le
  
 -FATE_AVCONV += fate-qt-ulaw-stereo
 +FATE_QT += fate-qt-ulaw-stereo
  fate-qt-ulaw-stereo: CMD = md5 -i $(SAMPLES)/qt-surge-suite/surge-2-16-B-ulaw.mov -f s16le
  
 -FATE_AVCONV += fate-quickdraw
 +FATE_QT += fate-quickdraw
  fate-quickdraw: CMD = framecrc -i $(SAMPLES)/quickdraw/Airplane.mov -pix_fmt rgb24
  
 -FATE_AVCONV += fate-rpza
 +FATE_QT += fate-rpza
  fate-rpza: CMD = framecrc -i $(SAMPLES)/rpza/rpza2.mov -t 2 -pix_fmt rgb24
  
 -FATE_AVCONV += fate-svq1
 +FATE_QT += fate-svq1
  fate-svq1: CMD = framecrc -i $(SAMPLES)/svq1/marymary-shackles.mov -an -t 10
  
 -FATE_AVCONV += fate-svq3
 +FATE_QT += fate-svq3
  fate-svq3: CMD = framecrc -i $(SAMPLES)/svq3/Vertical400kbit.sorenson3.mov -t 6 -an
- FATE_TESTS += $(FATE_QT)
 +
++FATE_FFMPEG += $(FATE_QT)
 +fate-qt: $(FATE_QT)
@@@ -1,7 -1,7 +1,7 @@@
- FATE_REAL += fate-real-14_4
- fate-real-14_4: CMD = md5 -i $(SAMPLES)/real/ra3_in_rm_file.rm -f s16le
 -FATE_AVCONV += fate-ra-144
++FATE_REAL += fate-ra-144
+ fate-ra-144: CMD = md5 -i $(SAMPLES)/real/ra3_in_rm_file.rm -f s16le
  
 -FATE_AVCONV += fate-ra-288
 +FATE_REAL += fate-ra-288
  fate-ra-288: CMD = pcm -i $(SAMPLES)/real/ra_288.rm
  fate-ra-288: CMP = oneoff
  fate-ra-288: REF = $(SAMPLES)/real/ra_288.pcm
@@@ -12,14 -12,14 +12,14 @@@ fate-ra-cook: CMD = pcm -i $(SAMPLES)/r
  fate-ra-cook: CMP = oneoff
  fate-ra-cook: REF = $(SAMPLES)/real/ra_cook.pcm
  
 -FATE_AVCONV += fate-ralf
 +FATE_REAL += fate-ralf
  fate-ralf: CMD = md5 -i $(SAMPLES)/lossless-audio/luckynight-partial.rmvb -vn -f s16le
  
 -FATE_AVCONV += fate-rv30
 +FATE_REAL += fate-rv30
  fate-rv30: CMD = framecrc -flags +bitexact -dct fastint -idct simple -i $(SAMPLES)/real/rv30.rm -an
  
- FATE_REAL += fate-real-rv40
- fate-real-rv40: CMD = framecrc -i $(SAMPLES)/real/spygames-2MB.rmvb -t 10 -an
 -FATE_AVCONV += fate-rv40
 -fate-rv40: CMD = framecrc -i $(SAMPLES)/real/spygames-2MB.rmvb -t 10 -an -vsync 0
++FATE_REAL += fate-rv40
++fate-rv40: CMD = framecrc -i $(SAMPLES)/real/spygames-2MB.rmvb -t 10 -an
  
  FATE_SIPR += fate-sipr-5k0
  fate-sipr-5k0: CMD = pcm -i $(SAMPLES)/sipr/sipr_5k0.rm
@@@ -41,8 -41,5 +41,8 @@@ fate-sipr-16k: CMD = pcm -i $(SAMPLES)/
  fate-sipr-16k: CMP = oneoff
  fate-sipr-16k: REF = $(SAMPLES)/sipr/sipr_16k.pcm
  
 -FATE_AVCONV += $(FATE_SIPR)
 +FATE_REAL += $(FATE_SIPR)
  fate-sipr: $(FATE_SIPR)
- FATE_TESTS += $(FATE_REAL)
 +
++FATE_FFMPEG += $(FATE_REAL)
 +fate-real: $(FATE_REAL)
@@@ -56,8 -56,5 +56,8 @@@ fate-zmbv-16bit: CMD = framecrc -i $(SA
  FATE_ZMBV += fate-zmbv-32bit
  fate-zmbv-32bit: CMD = framecrc -i $(SAMPLES)/zmbv/zmbv_32bit.avi -pix_fmt rgb24 -t 25
  
 -FATE_AVCONV += $(FATE_ZMBV)
 +FATE_SCREEN += $(FATE_ZMBV)
  fate-zmbv: $(FATE_ZMBV)
- FATE_TESTS += $(FATE_SCREEN)
 +
++FATE_FFMPEG += $(FATE_SCREEN)
 +fate-screen: $(FATE_SCREEN)
@@@ -124,55 -124,65 +124,65 @@@ fate-iff-fibonacci: CMD = md5 -i $(SAMP
  FATE_IFF += fate-iff-ilbm
  fate-iff-ilbm: CMD = framecrc -i $(SAMPLES)/iff/lms-matriks.ilbm -pix_fmt rgb24
  
 -FATE_AVCONV += $(FATE_IFF)
 +FATE_VIDEO += $(FATE_IFF)
  fate-iff: $(FATE_IFF)
  
 -FATE_AVCONV += fate-kgv1
 +FATE_VIDEO += fate-kgv1
  fate-kgv1: CMD = framecrc -i $(SAMPLES)/kega/kgv1.avi -pix_fmt rgb555le -an
  
 -FATE_AVCONV += fate-kmvc
 +FATE_VIDEO += fate-kmvc
  fate-kmvc: CMD = framecrc -i $(SAMPLES)/KMVC/LOGO1.AVI -an -t 3 -pix_fmt rgb24
  
 -FATE_AVCONV += fate-mdec
++FATE_VIDEO += fate-mdec
+ fate-mdec: CMD = framecrc -idct simple -i $(SAMPLES)/ea-dct/NFS2Esprit-partial.dct -an
 -FATE_AVCONV += fate-mimic
 +FATE_VIDEO += fate-mimic
  fate-mimic: CMD = framecrc -idct simple -i $(SAMPLES)/mimic/mimic2-womanloveffmpeg.cam
  
 -FATE_AVCONV += fate-mjpegb
 +FATE_VIDEO += fate-mjpegb
  fate-mjpegb: CMD = framecrc -idct simple -flags +bitexact -i $(SAMPLES)/mjpegb/mjpegb_part.mov -an
  
 -FATE_AVCONV += fate-motionpixels
 +FATE_VIDEO += fate-motionpixels
  fate-motionpixels: CMD = framecrc -i $(SAMPLES)/motion-pixels/INTRO-partial.MVI -an -pix_fmt rgb24 -vframes 111
  
 -FATE_AVCONV += fate-mpeg2-field-enc
 +FATE_VIDEO += fate-mpeg2-field-enc
  fate-mpeg2-field-enc: CMD = framecrc -flags +bitexact -dct fastint -idct simple -i $(SAMPLES)/mpeg2/mpeg2_field_encoding.ts -an
  
 -FATE_AVCONV += fate-nuv
+ # FIXME dropped frames in this test because of coarse timebase
 +FATE_VIDEO += fate-nuv
  fate-nuv: CMD = framecrc -idct simple -i $(SAMPLES)/nuv/Today.nuv -an
  
 -FATE_AVCONV += fate-qpeg
 +FATE_VIDEO += fate-qpeg
  fate-qpeg: CMD = framecrc -i $(SAMPLES)/qpeg/Clock.avi -an -pix_fmt rgb24
  
 -FATE_AVCONV += fate-r210
 +FATE_VIDEO += fate-r210
  fate-r210: CMD = framecrc -i $(SAMPLES)/r210/r210.avi -pix_fmt rgb48le
  
 -FATE_AVCONV += fate-rl2
 +FATE_VIDEO += fate-rl2
  fate-rl2: CMD = framecrc -i $(SAMPLES)/rl2/Z4915300.RL2 -pix_fmt rgb24 -an
  
 -FATE_AVCONV += fate-roqvideo
++FATE_VIDEO += fate-roqvideo
+ fate-roqvideo: CMD = framecrc -i $(SAMPLES)/idroq/idlogo.roq -an
 -FATE_AVCONV += fate-smacker
 +FATE_VIDEO += fate-smacker
  fate-smacker: CMD = framecrc -i $(SAMPLES)/smacker/wetlogo.smk -pix_fmt rgb24
  
 -FATE_AVCONV += fate-smc
 +FATE_VIDEO += fate-smc
  fate-smc: CMD = framecrc -i $(SAMPLES)/smc/cass_schi.qt -pix_fmt rgb24
  
 -FATE_AVCONV += fate-sp5x
 +FATE_VIDEO += fate-sp5x
  fate-sp5x: CMD = framecrc -idct simple -i $(SAMPLES)/sp5x/sp5x_problem.avi
  
 -FATE_AVCONV += fate-sub-srt
 +FATE_VIDEO += fate-sub-srt
  fate-sub-srt: CMD = md5 -i $(SAMPLES)/sub/SubRip_capability_tester.srt -f ass
  
 -FATE_AVCONV += fate-thp
++FATE_VIDEO += fate-thp
+ fate-thp: CMD = framecrc -idct simple -i $(SAMPLES)/thp/pikmin2-opening1-partial.thp -an
 -FATE_AVCONV += fate-tiertex-seq
 +FATE_VIDEO += fate-tiertex-seq
  fate-tiertex-seq: CMD = framecrc -i $(SAMPLES)/tiertex-seq/Gameover.seq -pix_fmt rgb24
  
 -FATE_AVCONV += fate-tmv
 +FATE_VIDEO += fate-tmv
  fate-tmv: CMD = framecrc -i $(SAMPLES)/tmv/pop-partial.tmv -pix_fmt rgb24
  
  FATE_TXD += fate-txd-16bpp
@@@ -197,26 -207,23 +207,26 @@@ FATE_VIDEO += fate-v410en
  fate-v410enc: tests/vsynth1/00.pgm
  fate-v410enc: CMD = md5 -f image2 -vcodec pgmyuv -i $(TARGET_PATH)/tests/vsynth1/%02d.pgm -flags +bitexact -vcodec v410 -f avi
  
 -FATE_AVCONV += fate-vcr1
 +FATE_VIDEO += fate-vcr1
  fate-vcr1: CMD = framecrc -i $(SAMPLES)/vcr1/VCR1test.avi -an
  
 -FATE_AVCONV += fate-videoxl
 +FATE_VIDEO += fate-videoxl
  fate-videoxl: CMD = framecrc -i $(SAMPLES)/vixl/pig-vixl.avi
  
 -FATE_AVCONV += fate-vqa-cc
 +FATE_VIDEO += fate-vqa-cc
  fate-vqa-cc: CMD = framecrc -i $(SAMPLES)/vqa/cc-demo1-partial.vqa -pix_fmt rgb24
  
 -FATE_AVCONV += fate-wc3movie-xan
 +FATE_VIDEO += fate-wc3movie-xan
  fate-wc3movie-xan: CMD = framecrc -i $(SAMPLES)/wc3movie/SC_32-part.MVE -pix_fmt rgb24
  
 -FATE_AVCONV += fate-wnv1
 +FATE_VIDEO += fate-wnv1
  fate-wnv1: CMD = framecrc -i $(SAMPLES)/wnv1/wnv1-codec.avi -an
  
 -FATE_AVCONV += fate-yop
 +FATE_VIDEO += fate-yop
  fate-yop: CMD = framecrc -i $(SAMPLES)/yop/test1.yop -pix_fmt rgb24 -an
  
 -FATE_AVCONV += fate-xxan-wc4
 +FATE_VIDEO += fate-xxan-wc4
  fate-xxan-wc4: CMD = framecrc -i $(SAMPLES)/wc4-xan/wc4trailer-partial.avi -an
- FATE_TESTS += $(FATE_VIDEO)
 +
++FATE_FFMPEG += $(FATE_VIDEO)
 +fate-video: $(FATE_VIDEO)
@@@ -50,6 -50,3 +50,6 @@@ FATE_VOICE += fate-truespeec
  fate-truespeech: CMD = pcm -i $(SAMPLES)/truespeech/a6.wav
  fate-truespeech: CMP = oneoff
  fate-truespeech: REF = $(SAMPLES)/truespeech/a6.pcm
- FATE_TESTS += $(FATE_VOICE)
 +
++FATE_FFMPEG += $(FATE_VOICE)
 +fate-voice: $(FATE_VOICE)
Simple merge
@@@ -3,8 -3,5 +3,8 @@@ fate-twinvq: CMD = pcm -i $(SAMPLES)/vq
  fate-twinvq: CMP = oneoff
  fate-twinvq: REF = $(SAMPLES)/vqf/achterba.pcm
  
 -FATE_AVCONV += fate-vqf-demux
 +FATE_VQF += fate-vqf-demux
  fate-vqf-demux: CMD = md5 -i $(SAMPLES)/vqf/achterba.vqf -acodec copy -f framecrc
- FATE_TESTS += $(FATE_VQF)
 +
++FATE_FFMPEG += $(FATE_VQF)
 +fate-vqf: $(FATE_VQF)
 -#tb 0: 1/90000
 -0,          0,          0,        0,   535680, 0x889c32cf
 -0,       2970,       2970,        0,   535680, 0x0b1ef044
 -0,       5940,       5940,        0,   535680, 0xa7d0818b
 -0,       8910,       8910,        0,   535680, 0xf392e4e1
 -0,      11880,      11880,        0,   535680, 0x08480c69
 -0,      14850,      14850,        0,   535680, 0x2b8af1ed
 -0,      17820,      17820,        0,   535680, 0x0d58e062
 -0,      20790,      20790,        0,   535680, 0xd140ced0
 -0,      23760,      23760,        0,   535680, 0xbd0e6652
 -0,      26730,      26730,        0,   535680, 0xdc2f2a6b
 -0,      29700,      29700,        0,   535680, 0x97c31a38
 -0,      32670,      32670,        0,   535680, 0x1a2bdf38
 -0,      35640,      35640,        0,   535680, 0xb3af3ac4
 -0,      38610,      38610,        0,   535680, 0x07a52577
 -0,      41580,      41580,        0,   535680, 0x78407368
 -0,      44550,      44550,        0,   535680, 0xd2a9efc3
 -0,      47520,      47520,        0,   535680, 0x36df2f29
 -0,      50490,      50490,        0,   535680, 0x9821d8f7
 -0,      53460,      53460,        0,   535680, 0xf64321aa
 -0,      56430,      56430,        0,   535680, 0x53e4d9aa
 -0,      59400,      59400,        0,   535680, 0xdbd6f853
 -0,      62370,      62370,        0,   535680, 0x5d40cf8b
 -0,      65340,      65340,        0,   535680, 0xe624af9d
 -0,      68310,      68310,        0,   535680, 0xd9dbb4cd
 -0,      71280,      71280,        0,   535680, 0xf14e72ec
 -0,      74250,      74250,        0,   535680, 0xb35c18f6
 -0,      77220,      77220,        0,   535680, 0xc96d7757
 -0,      80190,      80190,        0,   535680, 0xdfb937df
 -0,      83160,      83160,        0,   535680, 0x40cd71d7
 -0,      86130,      86130,        0,   535680, 0x15e176d6
 -0,      89100,      89100,        0,   535680, 0x7f891b24
 -0,      92070,      92070,        0,   535680, 0xb87a8c32
 -0,      95040,      95040,        0,   535680, 0x0c01541f
 -0,      98010,      98010,        0,   535680, 0x9eee99b3
 -0,     100980,     100980,        0,   535680, 0xd65eb689
 -0,     103950,     103950,        0,   535680, 0x6e733cfa
 -0,     106920,     106920,        0,   535680, 0xac536670
 -0,     109890,     109890,        0,   535680, 0x002275b8
 -0,     112860,     112860,        0,   535680, 0x6a5385cb
 -0,     115830,     115830,        0,   535680, 0xd129ade3
 -0,     118800,     118800,        0,   535680, 0x32cab5d7
 -0,     121770,     121770,        0,   535680, 0x08be1c8f
 -0,     124740,     124740,        0,   535680, 0x59e1fba0
 -0,     127710,     127710,        0,   535680, 0x138aee3a
 -0,     130680,     130680,        0,   535680, 0x4cfbcd5e
 -0,     133650,     133650,        0,   535680, 0xf6cf0fb4
 -0,     136620,     136620,        0,   535680, 0xb13a06de
 -0,     139590,     139590,        0,   535680, 0x59176f00
 -0,     142560,     142560,        0,   535680, 0xf84b4ca3
 -0,     145530,     145530,        0,   535680, 0x7fd09f73
 -0,     148500,     148500,        0,   535680, 0x3be383b8
 -0,     151470,     151470,        0,   535680, 0xa7118e51
 -0,     154440,     154440,        0,   535680, 0xbd83120c
 -0,     157410,     157410,        0,   535680, 0x3bc9d256
 -0,     160380,     160380,        0,   535680, 0xb6c87f87
 -0,     163350,     163350,        0,   535680, 0xe80d110a
 -0,     166320,     166320,        0,   535680, 0xb3a83362
 -0,     169290,     169290,        0,   535680, 0xfb39eb52
 -0,     172260,     172260,        0,   535680, 0xbf6e1220
 -0,     175230,     175230,        0,   535680, 0x9ecdfbae
 -0,     178200,     178200,        0,   535680, 0x069a65f5
 -0,     181170,     181170,        0,   535680, 0x206e372c
 -0,     184140,     184140,        0,   535680, 0x58c83dd4
 -0,     187110,     187110,        0,   535680, 0xc3562b03
 -0,     190080,     190080,        0,   535680, 0xd1ed85a0
 -0,     193050,     193050,        0,   535680, 0xb6205f4b
 -0,     196020,     196020,        0,   535680, 0xaedf8bfa
 -0,     198990,     198990,        0,   535680, 0xa48d5dea
 -0,     201960,     201960,        0,   535680, 0xff82e7c1
 -0,     204930,     204930,        0,   535680, 0xc9560222
 -0,     207900,     207900,        0,   535680, 0x0fafa549
 -0,     210870,     210870,        0,   535680, 0x8d556ccb
 -0,     213840,     213840,        0,   535680, 0x802aac1f
 -0,     216810,     216810,        0,   535680, 0x7d0fa168
 -0,     219780,     219780,        0,   535680, 0x1a9255c9
 -0,     222750,     222750,        0,   535680, 0xb4ec7e35
 -0,     225720,     225720,        0,   535680, 0x48fac072
 -0,     228690,     228690,        0,   535680, 0x1e260135
 -0,     231660,     231660,        0,   535680, 0xce4d5079
 -0,     234630,     234630,        0,   535680, 0x13e5e4ed
 -0,     237600,     237600,        0,   535680, 0x592305ec
 -0,     240570,     240570,        0,   535680, 0x9e227508
 -0,     243540,     243540,        0,   535680, 0x1d37e5ea
 -0,     246510,     246510,        0,   535680, 0x7eae7692
 -0,     249480,     249480,        0,   535680, 0xf452e4b9
 -0,     252450,     252450,        0,   535680, 0x1460e7e9
 -0,     255420,     255420,        0,   535680, 0xc6d8a638
 -0,     258390,     258390,        0,   535680, 0x854f5fb0
 -0,     261360,     261360,        0,   535680, 0x854f5fb0
 -0,     264330,     264330,        0,   535680, 0x70a02d87
 -0,     267300,     267300,        0,   535680, 0x9a4ad464
 -0,     270270,     270270,        0,   535680, 0x9a4ad464
 -0,     273240,     273240,        0,   535680, 0x9a4ad464
 -0,     276210,     276210,        0,   535680, 0x9a4ad464
 -0,     279180,     279180,        0,   535680, 0x9a4ad464
 -0,     282150,     282150,        0,   535680, 0x9a4ad464
 +#tb 0: 33/1000
- #tb 1: 1/48000
 +0,          0,          0,        1,   535680, 0x889c32cf
- 1,          0,          0,     1624,     6496, 0x00000000
 +0,          1,          1,        1,   535680, 0x0b1ef044
- 1,       1624,       1624,     1596,     6384, 0x00000000
 +0,          2,          2,        1,   535680, 0xa7d0818b
- 1,       3220,       3220,     1596,     6384, 0x00000000
 +0,          3,          3,        1,   535680, 0xf392e4e1
- 1,       4816,       4816,     1596,     6384, 0x00000000
 +0,          4,          4,        1,   535680, 0x08480c69
- 1,       6412,       6412,     1596,     6384, 0x00000000
 +0,          5,          5,        1,   535680, 0x2b8af1ed
- 1,       8008,       8008,     1624,     6496, 0xe2034d04
 +0,          6,          6,        1,   535680, 0x0d58e062
- 1,       9632,       9632,     1596,     6384, 0x089c9157
 +0,          7,          7,        1,   535680, 0xd140ced0
- 1,      11228,      11228,     1596,     6384, 0xeed5743c
 +0,          8,          8,        1,   535680, 0xbd0e6652
- 1,      12824,      12824,     1596,     6384, 0x71de6b34
 +0,          9,          9,        1,   535680, 0xdc2f2a6b
- 1,      14420,      14420,     1596,     6384, 0xc0d67710
 +0,         10,         10,        1,   535680, 0x97c31a38
- 1,      16016,      16016,     1624,     6496, 0x35786490
 +0,         11,         11,        1,   535680, 0x1a2bdf38
- 1,      17640,      17640,     1596,     6384, 0xdf1c99a2
 +0,         12,         12,        1,   535680, 0xb3af3ac4
- 1,      19236,      19236,     1596,     6384, 0xca9591ad
 +0,         13,         13,        1,   535680, 0x07a52577
- 1,      20832,      20832,     1596,     6384, 0x6f0d9c3d
 +0,         14,         14,        1,   535680, 0x78407368
- 1,      22428,      22428,     1596,     6384, 0xfacbbaee
 +0,         15,         15,        1,   535680, 0xd2a9efc3
- 1,      24024,      24024,     1624,     6496, 0x927fb136
 +0,         16,         16,        1,   535680, 0x36df2f29
- 1,      25648,      25648,     1596,     6384, 0x9d4f2572
 +0,         17,         17,        1,   535680, 0x9821d8f7
- 1,      27244,      27244,     1596,     6384, 0x2a3c6d08
 +0,         18,         18,        1,   535680, 0xf64321aa
- 1,      28840,      28840,     1596,     6384, 0x4282b1e0
 +0,         19,         19,        1,   535680, 0x53e4d9aa
- 1,      30436,      30436,     1596,     6384, 0xc4a77b9f
 +0,         20,         20,        1,   535680, 0xdbd6f853
- 1,      32032,      32032,     1624,     6496, 0x2af6a14f
 +0,         21,         21,        1,   535680, 0x5d40cf8b
- 1,      33656,      33656,     1596,     6384, 0x4d734169
 +0,         22,         22,        1,   535680, 0xe624af9d
- 1,      35252,      35252,     1596,     6384, 0xb91b5865
 +0,         23,         23,        1,   535680, 0xd9dbb4cd
- 1,      36848,      36848,     1596,     6384, 0x9dce2417
 +0,         24,         24,        1,   535680, 0xf14e72ec
- 1,      38444,      38444,     1596,     6384, 0xb7c4e1ce
 +0,         25,         25,        1,   535680, 0xb35c18f6
- 1,      40040,      40040,     1624,     6496, 0xef0dc07a
 +0,         26,         26,        1,   535680, 0xc96d7757
- 1,      41664,      41664,     1596,     6384, 0x4ad21d10
 +0,         27,         27,        1,   535680, 0xdfb937df
- 1,      43260,      43260,     1596,     6384, 0xcfe14682
 +0,         28,         28,        1,   535680, 0x40cd71d7
- 1,      44856,      44856,     1596,     6384, 0x07be48eb
 +0,         29,         29,        1,   535680, 0x15e176d6
- 1,      46452,      46452,     1596,     6384, 0x09de3498
 +0,         30,         30,        1,   535680, 0x7f891b24
- 1,      48048,      48048,     1624,     6496, 0xab2e9686
 +0,         31,         31,        1,   535680, 0xb87a8c32
- 1,      49672,      49672,     1596,     6384, 0x3aba3ccc
 +0,         32,         32,        1,   535680, 0x0c01541f
- 1,      51268,      51268,     1596,     6384, 0x0a905ec3
 +0,         33,         33,        1,   535680, 0x9eee99b3
- 1,      52864,      52864,     1596,     6384, 0x76a93ce4
 +0,         34,         34,        1,   535680, 0xd65eb689
- 1,      54460,      54460,     1596,     6384, 0xa99063a4
 +0,         35,         35,        1,   535680, 0x6e733cfa
- 1,      56056,      56056,     1624,     6496, 0xc16bb88d
 +0,         36,         36,        1,   535680, 0xac536670
- 1,      57680,      57680,     1596,     6384, 0x650379bf
 +0,         37,         37,        1,   535680, 0x002275b8
- 1,      59276,      59276,     1596,     6384, 0x4e0749fe
 +0,         38,         38,        1,   535680, 0x6a5385cb
- 1,      60872,      60872,     1596,     6384, 0x778e8d12
 +0,         39,         39,        1,   535680, 0xd129ade3
- 1,      62468,      62468,     1596,     6384, 0x9fa8c494
 +0,         40,         40,        1,   535680, 0x32cab5d7
- 1,      64064,      64064,     1624,     6496, 0x61d5bead
 +0,         41,         41,        1,   535680, 0x08be1c8f
- 1,      65688,      65688,     1596,     6384, 0x4da9bc3c
 +0,         42,         42,        1,   535680, 0x59e1fba0
- 1,      67284,      67284,     1596,     6384, 0xa72b6f93
 +0,         43,         43,        1,   535680, 0x138aee3a
- 1,      68880,      68880,     1596,     6384, 0x811f5f77
 +0,         44,         44,        1,   535680, 0x4cfbcd5e
- 1,      70476,      70476,     1596,     6384, 0x83ea5e3d
 +0,         45,         45,        1,   535680, 0xf6cf0fb4
- 1,      72072,      72072,     1624,     6496, 0x78bab460
 +0,         46,         46,        1,   535680, 0xb13a06de
- 1,      73696,      73696,     1596,     6384, 0xc9a07432
 +0,         47,         47,        1,   535680, 0x59176f00
- 1,      75292,      75292,     1596,     6384, 0x4b4f2a34
 +0,         48,         48,        1,   535680, 0xf84b4ca3
- 1,      76888,      76888,     1596,     6384, 0x4d707a53
 +0,         49,         49,        1,   535680, 0x7fd09f73
- 1,      78484,      78484,     1596,     6384, 0x703efb60
 +0,         50,         50,        1,   535680, 0x3be383b8
- 1,      80080,      80080,     1624,     6496, 0x319a77bb
 +0,         51,         51,        1,   535680, 0xa7118e51
- 1,      81704,      81704,     1596,     6384, 0xbdfd82ec
 +0,         52,         52,        1,   535680, 0xbd83120c
- 1,      83300,      83300,     1596,     6384, 0x413c3503
 +0,         53,         53,        1,   535680, 0x3bc9d256
- 1,      84896,      84896,     1596,     6384, 0xe6e666b3
 +0,         54,         54,        1,   535680, 0xb6c87f87
- 1,      86492,      86492,     1596,     6384, 0xa09c7342
 +0,         55,         55,        1,   535680, 0xe80d110a
- 1,      88088,      88088,     1624,     6496, 0x60cba846
 +0,         56,         56,        1,   535680, 0xb3a83362
- 1,      89712,      89712,     1596,     6384, 0x0ba34308
 +0,         57,         57,        1,   535680, 0xfb39eb52
- 1,      91308,      91308,     1596,     6384, 0xdc3a65f0
 +0,         58,         58,        1,   535680, 0xbf6e1220
- 1,      92904,      92904,     1596,     6384, 0x1ebf9dc4
 +0,         59,         59,        1,   535680, 0x9ecdfbae
- 1,      94500,      94500,     1596,     6384, 0xbbcb1449
 +0,         60,         60,        1,   535680, 0x069a65f5
- 1,      96096,      96096,     1624,     6496, 0x926574eb
 +0,         61,         61,        1,   535680, 0x206e372c
- 1,      97720,      97720,     1596,     6384, 0xb4da92f1
 +0,         62,         62,        1,   535680, 0x58c83dd4
- 1,      99316,      99316,     1596,     6384, 0xdbbd21e0
 +0,         63,         63,        1,   535680, 0xc3562b03
- 1,     100912,     100912,     1596,     6384, 0x08510eff
 +0,         64,         64,        1,   535680, 0xd1ed85a0
- 1,     102508,     102508,     1596,     6384, 0x9534b7ca
 +0,         65,         65,        1,   535680, 0xb6205f4b
- 1,     104104,     104104,     1624,     6496, 0x50a5ed30
 +0,         66,         66,        1,   535680, 0xaedf8bfa
- 1,     105728,     105728,     1596,     6384, 0xf5ac2f7c
 +0,         67,         67,        1,   535680, 0xa48d5dea
- 1,     107324,     107324,     1596,     6384, 0x4fe1fa55
 +0,         68,         68,        1,   535680, 0xff82e7c1
- 1,     108920,     108920,     1596,     6384, 0xd61c4c05
 +0,         69,         69,        1,   535680, 0xc9560222
- 1,     110516,     110516,     1596,     6384, 0x56d11b45
 +0,         70,         70,        1,   535680, 0x0fafa549
- 1,     112112,     112112,     1624,     6496, 0x3906084b
 +0,         71,         71,        1,   535680, 0x8d556ccb
- 1,     113736,     113736,     1596,     6384, 0x1ef31fed
 +0,         72,         72,        1,   535680, 0x802aac1f
- 1,     115332,     115332,     1596,     6384, 0x58ed82f5
 +0,         73,         73,        1,   535680, 0x7d0fa168
- 1,     116928,     116928,     1596,     6384, 0xb31ccd1f
 +0,         74,         74,        1,   535680, 0x1a9255c9
- 1,     118524,     118524,     1596,     6384, 0xfb648285
 +0,         75,         75,        1,   535680, 0xb4ec7e35
- 1,     120120,     120120,     1624,     6496, 0xfae2950b
 +0,         76,         76,        1,   535680, 0x48fac072
- 1,     121744,     121744,     1596,     6384, 0xe28c8357
 +0,         77,         77,        1,   535680, 0x1e260135
- 1,     123340,     123340,     1596,     6384, 0xda718e60
 +0,         78,         78,        1,   535680, 0xce4d5079
- 1,     124936,     124936,     1596,     6384, 0x27516999
 +0,         79,         79,        1,   535680, 0x13e5e4ed
- 1,     126532,     126532,     1596,     6384, 0x0ba07921
 +0,         80,         80,        1,   535680, 0x592305ec
- 1,     128128,     128128,     1624,     6496, 0xcfbecfab
 +0,         81,         81,        1,   535680, 0x9e227508
- 1,     129752,     129752,     1596,     6384, 0xae4cedcd
 +0,         82,         82,        1,   535680, 0x1d37e5ea
- 1,     131348,     131348,     1596,     6384, 0x917b4707
 +0,         83,         83,        1,   535680, 0x7eae7692
- 1,     132944,     132944,     1596,     6384, 0x8671b28e
 +0,         84,         84,        1,   535680, 0xf452e4b9
- 1,     134540,     134540,     1596,     6384, 0x9a1238fa
 +0,         85,         85,        1,   535680, 0x1460e7e9
- 1,     136136,     136136,     1624,     6496, 0x23b8f8ca
 +0,         86,         86,        1,   535680, 0xc6d8a638
- 1,     137760,     137760,     1596,     6384, 0x3903bcd6
 +0,         87,         87,        1,   535680, 0x854f5fb0
- 1,     139356,     139356,     1596,     6384, 0x0532b267
 +0,         88,         88,        1,   535680, 0x854f5fb0
- 1,     140952,     140952,     1596,     6384, 0xde931220
 +0,         89,         89,        1,   535680, 0x70a02d87
- 1,     142548,     142548,     1596,     6384, 0x4ed70a80
 +0,         90,         90,        1,   535680, 0x9a4ad464
 +0,         91,         91,        1,   535680, 0x9a4ad464
- 1,     144144,     144144,     1624,     6496, 0x4a52d5a1
 +0,         92,         92,        1,   535680, 0x9a4ad464
- 1,     145768,     145768,     1596,     6384, 0xc1be5760
 +0,         93,         93,        1,   535680, 0x9a4ad464
- 1,     147364,     147364,     1596,     6384, 0x790d69ba
 +0,         94,         94,        1,   535680, 0x9a4ad464
- 1,     148960,     148960,     1596,     6384, 0x9d73e6cf
 +0,         95,         95,        1,   535680, 0x9a4ad464
- 1,     150556,     150556,     1568,     6272, 0xbc0fc725
@@@ -1,52 -1,27 +1,27 @@@
 -#tb 0: 1/90000
 -0,          0,          0,        0,   115200, 0x375ec573
 -0,       6000,       6000,        0,   115200, 0x375ec573
 -0,      12000,      12000,        0,   115200, 0x375ec573
 -0,      18000,      18000,        0,   115200, 0x375ec573
 -0,      24000,      24000,        0,   115200, 0x375ec573
 -0,      30000,      30000,        0,   115200, 0x375ec573
 -0,      36000,      36000,        0,   115200, 0x375ec573
 -0,      42000,      42000,        0,   115200, 0x375ec573
 -0,      48000,      48000,        0,   115200, 0x0b4d31bf
 -0,      54000,      54000,        0,   115200, 0xdd724598
 -0,      60000,      60000,        0,   115200, 0xc3077e75
 -0,      66000,      66000,        0,   115200, 0xbf70778a
 -0,      72000,      72000,        0,   115200, 0x117eb766
 -0,      78000,      78000,        0,   115200, 0x4617fbad
 -0,      84000,      84000,        0,   115200, 0x5f5b02d2
 -0,      90000,      90000,        0,   115200, 0x2a9c5325
 -0,      96000,      96000,        0,   115200, 0x14a89e2a
 -0,     102000,     102000,        0,   115200, 0xe69aa994
 -0,     108000,     108000,        0,   115200, 0xfbacf589
 -0,     114000,     114000,        0,   115200, 0x1d714c6e
 -0,     120000,     120000,        0,   115200, 0x6eff66cb
 -0,     126000,     126000,        0,   115200, 0xee21c1cb
 -0,     132000,     132000,        0,   115200, 0xce714ada
 -0,     138000,     138000,        0,   115200, 0xf89d56c3
 -0,     144000,     144000,        0,   115200, 0x65fd5e60
 -0,     150000,     150000,        0,   115200, 0x0c256424
 +#tb 0: 1/15
- #tb 1: 1/22050
 +0,          0,          0,        1,   115200, 0x375ec573
- 1,          0,          0,     1484,     5936, 0x00000000
 +0,          1,          1,        1,   115200, 0x375ec573
- 1,       1484,       1484,     1456,     5824, 0x00000000
 +0,          2,          2,        1,   115200, 0x375ec573
- 1,       2940,       2940,     1484,     5936, 0x00000000
 +0,          3,          3,        1,   115200, 0x375ec573
- 1,       4424,       4424,     1456,     5824, 0x00000000
 +0,          4,          4,        1,   115200, 0x375ec573
- 1,       5880,       5880,     1484,     5936, 0x00000000
 +0,          5,          5,        1,   115200, 0x375ec573
- 1,       7364,       7364,     1456,     5824, 0x00000000
 +0,          6,          6,        1,   115200, 0x375ec573
- 1,       8820,       8820,     1484,     5936, 0x00000000
 +0,          7,          7,        1,   115200, 0x375ec573
- 1,      10304,      10304,     1456,     5824, 0x0f06f5bb
 +0,          8,          8,        1,   115200, 0x0b4d31bf
- 1,      11760,      11760,     1484,     5936, 0xb0dbfc46
 +0,          9,          9,        1,   115200, 0xdd724598
- 1,      13244,      13244,     1456,     5824, 0x9daa9f9c
 +0,         10,         10,        1,   115200, 0xc3077e75
- 1,      14700,      14700,     1484,     5936, 0x61400d2f
 +0,         11,         11,        1,   115200, 0xbf70778a
- 1,      16184,      16184,     1456,     5824, 0x34a5b0e3
 +0,         12,         12,        1,   115200, 0x117eb766
- 1,      17640,      17640,     1484,     5936, 0x6e546f72
 +0,         13,         13,        1,   115200, 0x4617fbad
- 1,      19124,      19124,     1456,     5824, 0x4f093b35
 +0,         14,         14,        1,   115200, 0x5f5b02d2
- 1,      20580,      20580,     1484,     5936, 0x95b5b599
 +0,         15,         15,        1,   115200, 0x2a9c5325
- 1,      22064,      22064,     1456,     5824, 0x75e15e60
 +0,         16,         16,        1,   115200, 0x14a89e2a
- 1,      23520,      23520,     1484,     5936, 0xd1077d39
 +0,         17,         17,        1,   115200, 0xe69aa994
- 1,      25004,      25004,     1456,     5824, 0x956e21ca
 +0,         18,         18,        1,   115200, 0xfbacf589
- 1,      26460,      26460,     1484,     5936, 0x33bac234
 +0,         19,         19,        1,   115200, 0x1d714c6e
- 1,      27944,      27944,     1456,     5824, 0x5df37824
 +0,         20,         20,        1,   115200, 0x6eff66cb
- 1,      29400,      29400,     1484,     5936, 0xc174af24
 +0,         21,         21,        1,   115200, 0xee21c1cb
- 1,      30884,      30884,     1456,     5824, 0xe5dc2159
 +0,         22,         22,        1,   115200, 0xce714ada
- 1,      32340,      32340,     1484,     5936, 0x63ffc8b1
 +0,         23,         23,        1,   115200, 0xf89d56c3
- 1,      33824,      33824,     1456,     5824, 0xefe4c365
 +0,         24,         24,        1,   115200, 0x65fd5e60
 +0,         25,         25,        1,   115200, 0x0c256424
Simple merge