Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 24 May 2012 22:38:16 +0000 (00:38 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 24 May 2012 22:38:16 +0000 (00:38 +0200)
* qatar/master:
  rtmp: Return a proper error code instead of -1
  rtmp: Check malloc calls
  rtmp: Check ff_rtmp_packet_create calls
  lavfi: add audio mix filter
  flvdec: Make sure sample_rate is set to the updated value
  tqi: Pass errors from the MB decoder

Conflicts:
Changelog
doc/filters.texi
libavcodec/eatqi.c
libavfilter/Makefile
libavfilter/allfilters.c
libavfilter/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
Changelog
doc/filters.texi
libavcodec/eatqi.c
libavfilter/Makefile
libavfilter/allfilters.c
libavfilter/version.h
libavformat/flvdec.c
libavformat/rtmppkt.c
libavformat/rtmpproto.c
tests/fate/audio.mak

diff --cc Changelog
+++ b/Changelog
@@@ -36,56 -20,30 +36,57 @@@ version 0.11
  - audio filters support in libavfilter and avconv
  - add fps filter
  - audio split filter
 +- vorbis parser
 +- png parser
+ - audio mix filter
  
  
 -version 0.8:
 -
 +version 0.10:
 +- Fixes: CVE-2011-3929, CVE-2011-3934, CVE-2011-3935, CVE-2011-3936,
 +         CVE-2011-3937, CVE-2011-3940, CVE-2011-3941, CVE-2011-3944,
 +         CVE-2011-3945, CVE-2011-3946, CVE-2011-3947, CVE-2011-3949,
 +         CVE-2011-3950, CVE-2011-3951, CVE-2011-3952
 +- v410 Quicktime Uncompressed 4:4:4 10-bit encoder and decoder
 +- SBaGen (SBG) binaural beats script demuxer
 +- OpenMG Audio muxer
 +- Timecode extraction in DV and MOV
 +- thumbnail video filter
 +- XML output in ffprobe
 +- asplit audio filter
 +- tinterlace video filter
 +- astreamsync audio filter
 +- amerge audio filter
 +- ISMV (Smooth Streaming) muxer
  - GSM audio parser
  - SMJPEG muxer
 -
 -
 -version 0.8_beta2:
 -
 +- XWD encoder and decoder
  - Automatic thread count based on detection number of (available) CPU cores
 -- Deprecate libpostproc. If desired, the switch --enable-postproc will
 -  enable it but it may be removed in a later Libav release.
 +- y41p Brooktree Uncompressed 4:1:1 12-bit encoder and decoder
 +- ffprobe -show_error option
 +- Avid 1:1 10-bit RGB Packer codec
 +- v308 Quicktime Uncompressed 4:4:4 encoder and decoder
 +- yuv4 libquicktime packed 4:2:0 encoder and decoder
 +- ffprobe -show_frames option
 +- silencedetect audio filter
 +- ffprobe -show_program_version, -show_library_versions, -show_versions options
  - rv34: frame-level multi-threading
  - optimized iMDCT transform on x86 using SSE for for mpegaudiodec
 +- Improved PGS subtitle decoder
 +- dumpgraph option to lavfi device
 +- r210 and r10k encoders
 +- ffwavesynth decoder
 +- aviocat tool
 +- ffeval tool
  
  
 -version 0.8_beta1:
 +version 0.9:
  
 +- openal input device added
 +- boxblur filter added
  - BWF muxer
  - Flash Screen Video 2 decoder
 -- ffplay/ffprobe/ffserver renamed to avplay/avprobe/avserver
 -- ffmpeg deprecated, added avconv, which is almost the same for now, except
 +- lavfi input device added
 +- added avconv, which is almost the same for now, except
  for a few incompatible changes in the options, which will hopefully make them
  easier to use. The changes are:
      * The options placement is now strictly enforced! While in theory the
@@@ -166,56 -133,44 +166,94 @@@ For example to force the output to eith
  aformat=sample_fmts\=u8\,s16:channel_layouts\=stereo
  @end example
  
 -avconv -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
 +@section amerge
 +
 +Merge two audio streams into a single multi-channel stream.
 +
 +This filter does not need any argument.
 +
 +If the channel layouts of the inputs are disjoint, and therefore compatible,
 +the channel layout of the output will be set accordingly and the channels
 +will be reordered as necessary. If the channel layouts of the inputs are not
 +disjoint, the output will have all the channels of the first input then all
 +the channels of the second input, in that order, and the channel layout of
 +the output will be the default value corresponding to the total number of
 +channels.
 +
 +For example, if the first input is in 2.1 (FL+FR+LF) and the second input
 +is FC+BL+BR, then the output will be in 5.1, with the channels in the
 +following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
 +first input, b1 is the first channel of the second input).
 +
 +On the other hand, if both input are in stereo, the output channels will be
 +in the default order: a1, a2, b1, b2, and the channel layout will be
 +arbitrarily set to 4.0, which may or may not be the expected value.
 +
 +Both inputs must have the same sample rate, and format.
 +
 +If inputs do not have the same duration, the output will stop with the
 +shortest.
 +
 +Example: merge two mono files into a stereo stream:
 +@example
 +amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
 +@end example
 +
 +If you need to do multiple merges (for instance multiple mono audio streams in
 +a single video media), you can do:
 +@example
 +ffmpeg -f lavfi -i "
 +amovie=input.mkv:si=0 [a0];
 +amovie=input.mkv:si=1 [a1];
 +amovie=input.mkv:si=2 [a2];
 +amovie=input.mkv:si=3 [a3];
 +amovie=input.mkv:si=4 [a4];
 +amovie=input.mkv:si=5 [a5];
 +[a0][a1] amerge [x0];
 +[x0][a2] amerge [x1];
 +[x1][a3] amerge [x2];
 +[x2][a4] amerge [x3];
 +[x3][a5] amerge" -c:a pcm_s16le output.mkv
 +@end example
 +
+ @section amix
+ Mixes multiple audio inputs into a single output.
+ For example
+ @example
++ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
+ @end example
+ will mix 3 input audio streams to a single output with the same duration as the
+ first input and a dropout transition time of 3 seconds.
+ The filter accepts the following named parameters:
+ @table @option
+ @item inputs
+ Number of inputs. If unspecified, it defaults to 2.
+ @item duration
+ How to determine the end-of-stream.
+ @table @option
+ @item longest
+ Duration of longest input. (default)
+ @item shortest
+ Duration of shortest input.
+ @item first
+ Duration of first input.
+ @end table
+ @item dropout_transition
+ Transition time, in seconds, for volume renormalization when an input
+ stream ends. The default value is 2 seconds.
+ @end table
  @section anull
  
  Pass the audio source unchanged to the output.
@@@ -138,11 -138,10 +138,11 @@@ static int tqi_decode_frame(AVCodecCont
      for (s->mb_y=0; s->mb_y<(avctx->height+15)/16; s->mb_y++)
      for (s->mb_x=0; s->mb_x<(avctx->width+15)/16; s->mb_x++)
      {
-         if(tqi_decode_mb(s, t->block) < 0)
+         if (tqi_decode_mb(s, t->block) < 0)
 -            break;
 +            goto end;
          tqi_idct_put(t, t->block);
      }
 +    end:
  
      *data_size = sizeof(AVFrame);
      *(AVFrame*)data = t->frame;
@@@ -39,39 -24,19 +39,40 @@@ OBJS = allfilters.
         vf_scale.o                                                       \
         video.o                                                          \
  
 +
 +OBJS-$(CONFIG_AVCODEC)                       += avcodec.o
 +OBJS-$(CONFIG_AVFORMAT)                      += lavfutils.o
 +OBJS-$(CONFIG_SWSCALE)                       += lswsutils.o
 +
 +OBJS-$(CONFIG_ACONVERT_FILTER)               += af_aconvert.o
  OBJS-$(CONFIG_AFORMAT_FILTER)                += af_aformat.o
 +OBJS-$(CONFIG_AMERGE_FILTER)                 += af_amerge.o
+ OBJS-$(CONFIG_AMIX_FILTER)                   += af_amix.o
  OBJS-$(CONFIG_ANULL_FILTER)                  += af_anull.o
 +OBJS-$(CONFIG_ARESAMPLE_FILTER)              += af_aresample.o
 +OBJS-$(CONFIG_ASHOWINFO_FILTER)              += af_ashowinfo.o
  OBJS-$(CONFIG_ASPLIT_FILTER)                 += split.o
 +OBJS-$(CONFIG_ASTREAMSYNC_FILTER)            += af_astreamsync.o
  OBJS-$(CONFIG_ASYNCTS_FILTER)                += af_asyncts.o
 +OBJS-$(CONFIG_EARWAX_FILTER)                 += af_earwax.o
 +OBJS-$(CONFIG_PAN_FILTER)                    += af_pan.o
  OBJS-$(CONFIG_RESAMPLE_FILTER)               += af_resample.o
 +OBJS-$(CONFIG_SILENCEDETECT_FILTER)          += af_silencedetect.o
 +OBJS-$(CONFIG_VOLUME_FILTER)                 += af_volume.o
  
 +OBJS-$(CONFIG_AEVALSRC_FILTER)               += asrc_aevalsrc.o
 +OBJS-$(CONFIG_AMOVIE_FILTER)                 += src_movie.o
  OBJS-$(CONFIG_ANULLSRC_FILTER)               += asrc_anullsrc.o
  
 +OBJS-$(CONFIG_ABUFFERSINK_FILTER)            += sink_buffer.o
  OBJS-$(CONFIG_ANULLSINK_FILTER)              += asink_anullsink.o
  
 +OBJS-$(CONFIG_ASS_FILTER)                    += vf_ass.o
 +OBJS-$(CONFIG_BBOX_FILTER)                   += bbox.o vf_bbox.o
 +OBJS-$(CONFIG_BLACKDETECT_FILTER)            += vf_blackdetect.o
  OBJS-$(CONFIG_BLACKFRAME_FILTER)             += vf_blackframe.o
  OBJS-$(CONFIG_BOXBLUR_FILTER)                += vf_boxblur.o
 +OBJS-$(CONFIG_COLORMATRIX_FILTER)            += vf_colormatrix.o
  OBJS-$(CONFIG_COPY_FILTER)                   += vf_copy.o
  OBJS-$(CONFIG_CROP_FILTER)                   += vf_crop.o
  OBJS-$(CONFIG_CROPDETECT_FILTER)             += vf_cropdetect.o
@@@ -34,34 -34,19 +34,35 @@@ void avfilter_register_all(void
          return;
      initialized = 1;
  
 +    REGISTER_FILTER (ACONVERT,    aconvert,    af);
      REGISTER_FILTER (AFORMAT,     aformat,     af);
 +    REGISTER_FILTER (AMERGE,      amerge,      af);
+     REGISTER_FILTER (AMIX,        amix,        af);
      REGISTER_FILTER (ANULL,       anull,       af);
 +    REGISTER_FILTER (ARESAMPLE,   aresample,   af);
 +    REGISTER_FILTER (ASHOWINFO,   ashowinfo,   af);
      REGISTER_FILTER (ASPLIT,      asplit,      af);
 +    REGISTER_FILTER (ASTREAMSYNC, astreamsync, af);
      REGISTER_FILTER (ASYNCTS,     asyncts,     af);
 +    REGISTER_FILTER (EARWAX,      earwax,      af);
 +    REGISTER_FILTER (PAN,         pan,         af);
 +    REGISTER_FILTER (SILENCEDETECT, silencedetect, af);
 +    REGISTER_FILTER (VOLUME,      volume,      af);
      REGISTER_FILTER (RESAMPLE,    resample,    af);
  
 +    REGISTER_FILTER (AEVALSRC,    aevalsrc,    asrc);
 +    REGISTER_FILTER (AMOVIE,      amovie,      asrc);
      REGISTER_FILTER (ANULLSRC,    anullsrc,    asrc);
  
 +    REGISTER_FILTER (ABUFFERSINK, abuffersink, asink);
      REGISTER_FILTER (ANULLSINK,   anullsink,   asink);
  
 +    REGISTER_FILTER (ASS,         ass,         vf);
 +    REGISTER_FILTER (BBOX,        bbox,        vf);
 +    REGISTER_FILTER (BLACKDETECT, blackdetect, vf);
      REGISTER_FILTER (BLACKFRAME,  blackframe,  vf);
      REGISTER_FILTER (BOXBLUR,     boxblur,     vf);
 +    REGISTER_FILTER (COLORMATRIX, colormatrix, vf);
      REGISTER_FILTER (COPY,        copy,        vf);
      REGISTER_FILTER (CROP,        crop,        vf);
      REGISTER_FILTER (CROPDETECT,  cropdetect,  vf);
@@@ -29,8 -29,8 +29,8 @@@
  #include "libavutil/avutil.h"
  
  #define LIBAVFILTER_VERSION_MAJOR  2
- #define LIBAVFILTER_VERSION_MINOR 76
 -#define LIBAVFILTER_VERSION_MINOR  20
 -#define LIBAVFILTER_VERSION_MICRO  0
++#define LIBAVFILTER_VERSION_MINOR 77
 +#define LIBAVFILTER_VERSION_MICRO 100
  
  #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
                                                 LIBAVFILTER_VERSION_MINOR, \
Simple merge
Simple merge
@@@ -752,9 -858,10 +858,10 @@@ static int get_packet(URLContext *s, in
              }
          }
          rt->bytes_read += ret;
 -        if (rt->bytes_read > rt->last_bytes_read + rt->client_report_size) {
 +        if (rt->bytes_read - rt->last_bytes_read > rt->client_report_size) {
              av_log(s, AV_LOG_DEBUG, "Sending bytes read report\n");
-             gen_bytes_read(s, rt, rpkt.timestamp + 1);
+             if ((ret = gen_bytes_read(s, rt, rpkt.timestamp + 1)) < 0)
+                 return ret;
              rt->last_bytes_read = rt->bytes_read;
          }
  
@@@ -34,23 -34,11 +34,23 @@@ fate-nellymoser: CMD = pcm -i $(SAMPLES
  fate-nellymoser: CMP = oneoff
  fate-nellymoser: REF = $(SAMPLES)/nellymoser/nellymoser.pcm
  
 -FATE_SAMPLES_AVCONV += fate-sierra-vmd-audio
 +FATE_SAMPLES_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: CMP_SHIFT = -244
++fate-nellymoser-aref-encode: CMP_TARGET = 9612
 +fate-nellymoser-aref-encode: SIZE_TOLERANCE = 268
 +
 +FATE_SAMPLES_AUDIO += fate-sierra-vmd-audio
  fate-sierra-vmd-audio: CMD = framecrc -i $(SAMPLES)/vmd/12.vmd -vn
  
 -FATE_SAMPLES_AVCONV += fate-smacker-audio
 +FATE_SAMPLES_AUDIO += fate-smacker-audio
  fate-smacker-audio: CMD = framecrc -i $(SAMPLES)/smacker/wetlogo.smk -vn
  
 -FATE_SAMPLES_AVCONV += fate-ws_snd
 +FATE_SAMPLES_AUDIO += fate-ws_snd
  fate-ws_snd: CMD = md5 -i $(SAMPLES)/vqa/ws_snd.vqa -f s16le
 +
 +FATE_SAMPLES_FFMPEG += $(FATE_SAMPLES_AUDIO)
 +fate-audio: $(FATE_SAMPLES_AUDIO)