Merge commit '1c0210c7981b6a61043d9171f506b435ff5a1f5e'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 1 May 2014 12:14:10 +0000 (14:14 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 1 May 2014 12:14:10 +0000 (14:14 +0200)
* commit '1c0210c7981b6a61043d9171f506b435ff5a1f5e':
  lavfi: add Bauer stereo-to-binaural audio filter

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

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
Changelog
configure
doc/filters.texi
libavfilter/Makefile
libavfilter/af_bs2b.c
libavfilter/allfilters.c
libavfilter/version.h

diff --cc Changelog
+++ b/Changelog
@@@ -2,271 -2,139 +2,272 @@@ Entries are sorted chronologically fro
  releases are sorted from youngest to oldest.
  
  version <next>:
 -- libx265 encoder
 +- AC3 fixed-point decoding
  - shuffleplanes filter
 +- subfile protocol
 +- Phantom Cine demuxer
  - replaygain data export
 +- VP7 video decoder
  - Alias PIX image encoder and decoder
 -- BRender PIX image decoder
 -- Amazing Studio PAF playback support
 -- XBM decoder
 -- bmp standalone parser
 -- OpenEXR image decoder
 -- support encoding and decoding 4-channel SGI images
 +- Improvments to the BRender PIX image decoder
 +- Improvments to the XBM decoder
 +- QTKit input device
 +- improvments to OpenEXR image decoder
  - support decoding 16-bit RLE SGI images
 -- VP7 video decoder
 -- LucasArts SMUSH SANM video decoder
 -- LucasArts SMUSH VIMA audio decoder (ADPCM)
 -- LucasArts SMUSH demuxer
 -- MP2 encoding via TwoLAME
 -- asettb filter
 -- Silicon Graphics RLE 8-bit video decoder
 -- Silicon Graphics Motion Video Compressor 1 & 2 decoder
 -- Silicon Graphics Movie demuxer
 +- GDI screen grabbing for Windows
 +- alternative rendition support for HTTP Live Streaming
 +- AVFoundation input device
 +- Direct Stream Digital (DSD) decoder
 +- Magic Lantern Video (MLV) demuxer
  - On2 AVC (Audio for Video) decoder
 -- support for decoding through DXVA2 in avconv
 +- support for decoding through DXVA2 in ffmpeg
+ - libbs2b-based stereo-to-binaural audio filter
  
  
 -version 10:
 -- av_strnstr
 -- support ID3v2 tags in ASF files
 +version 2.2:
 +
 +- HNM version 4 demuxer and video decoder
 +- Live HDS muxer
 +- setsar/setdar filters now support variables in ratio expressions
 +- elbg filter
 +- string validation in ffprobe
 +- support for decoding through VDPAU in ffmpeg (the -hwaccel option)
 +- complete Voxware MetaSound decoder
 +- remove mp3_header_compress bitstream filter
 +- Windows resource files for shared libraries
 +- aeval filter
 +- stereoscopic 3d metadata handling
 +- WebP encoding via libwebp
 +- ATRAC3+ decoder
 +- VP8 in Ogg demuxing
 +- side & metadata support in NUT
 +- framepack filter
 +- XYZ12 rawvideo support in NUT
 +- Exif metadata support in WebP decoder
 +- OpenGL device
 +- Use metadata_header_padding to control padding in ID3 tags (currently used in
 +  MP3, AIFF, and OMA files), FLAC header, and the AVI "junk" block.
 +- Mirillis FIC video decoder
 +- Support DNx444
 +- libx265 encoder
 +- dejudder filter
 +- Autodetect VDA like all other hardware accelerations
 +
 +
 +version 2.1:
 +
 +- aecho filter
 +- perspective filter ported from libmpcodecs
 +- ffprobe -show_programs option
 +- compand filter
 +- RTMP seek support
 +- when transcoding with ffmpeg (i.e. not streamcopying), -ss is now accurate
 +  even when used as an input option. Previous behavior can be restored with
 +  the -noaccurate_seek option.
 +- ffmpeg -t option can now be used for inputs, to limit the duration of
 +  data read from an input file
 +- incomplete Voxware MetaSound decoder
 +- read EXIF metadata from JPEG
 +- DVB teletext decoder
 +- phase filter ported from libmpcodecs
 +- w3fdif filter
 +- Opus support in Matroska
 +- FFV1 version 1.3 is stable and no longer experimental
 +- FFV1: YUVA(444,422,420) 9, 10 and 16 bit support
 +- changed DTS stream id in lavf mpeg ps muxer from 0x8a to 0x88, to be
 +  more consistent with other muxers.
 +- adelay filter
 +- pullup filter ported from libmpcodecs
 +- ffprobe -read_intervals option
 +- Lossless and alpha support for WebP decoder
 +- Error Resilient AAC syntax (ER AAC LC) decoding
 +- Low Delay AAC (ER AAC LD) decoding
 +- mux chapters in ASF files
 +- SFTP protocol (via libssh)
 +- libx264: add ability to encode in YUVJ422P and YUVJ444P
 +- Fraps: use BT.709 colorspace by default for yuv, as reference fraps decoder does
 +- make decoding alpha optional for prores, ffv1 and vp6 by setting
 +  the skip_alpha flag.
 +- ladspa wrapper filter
 +- native VP9 decoder
 +- dpx parser
 +- max_error_rate parameter in ffmpeg
 +- PulseAudio output device
 +- ReplayGain scanner
 +- Enhanced Low Delay AAC (ER AAC ELD) decoding (no LD SBR support)
 +- Linux framebuffer output device
 +- HEVC decoder
 +- raw HEVC, HEVC in MOV/MP4, HEVC in Matroska, HEVC in MPEG-TS demuxing
 +- mergeplanes filter
 +
 +
 +version 2.0:
 +
 +- curves filter
  - reference-counting for AVFrame and AVPacket data
 -- avconv now fails when input options are used for output file
 +- ffmpeg now fails when input options are used for output file
    or vice versa
 -- avconv options -filter_script and -filter_complex_script, which allow a
 +- support for Monkey's Audio versions from 3.93
 +- perms and aperms filters
 +- audio filtering support in ffplay
 +- 10% faster aac encoding on x86 and MIPS
 +- sine audio filter source
 +- WebP demuxing and decoding support
 +- ffmpeg options -filter_script and -filter_complex_script, which allow a
    filtergraph description to be read from a file
 +- OpenCL support
 +- audio phaser filter
 +- separatefields filter
 +- libquvi demuxer
  - uniform options syntax across all filters
 +- telecine filter
  - interlace filter
 -- JPEG 2000 decoder
 -- asetpts filter (same as setpts, but for audio)
 +- smptehdbars source
 +- inverse telecine filters (fieldmatch and decimate)
 +- colorbalance filter
 +- colorchannelmixer filter
 +- The matroska demuxer can now output proper verbatim ASS packets. It will
 +  become the default at the next libavformat major bump.
 +- decent native animated GIF encoding
 +- asetrate filter
 +- interleave filter
 +- timeline editing with filters
 +- vidstabdetect and vidstabtransform filters for video stabilization using
 +  the vid.stab library
 +- astats filter
  - trim and atrim filters
 -- avconv -t and -ss (output-only) options are now sample-accurate when
 +- ffmpeg -t and -ss (output-only) options are now sample-accurate when
    transcoding audio
  - Matroska muxer can now put the index at the beginning of the file.
 -- avconv -deinterlace option removed, the yadif filter should be used instead
 +- extractplanes filter
 +- avectorscope filter
 +- ADPCM DTK decoder
 +- ADP demuxer
 +- RSD demuxer
 +- RedSpark demuxer
 +- ADPCM IMA Radical decoder
 +- zmq filters
 +- DCT denoiser filter (dctdnoiz)
 +- Wavelet denoiser filter ported from libmpcodecs as owdenoise (formerly "ow")
  - Apple Intermediate Codec decoder
  - Escape 130 video decoder
 +- FTP protocol support
 +- V4L2 output device
 +- 3D LUT filter (lut3d)
 +- SMPTE 302M audio encoder
  - support for slice multithreading in libavfilter
 +- Hald CLUT support (generation and filtering)
  - VC-1 interlaced B-frame support
  - support for WavPack muxing (raw and in Matroska)
 +- XVideo output device
 +- vignette filter
 +- True Audio (TTA) encoder
  - Go2Webinar decoder
 +- mcdeint filter ported from libmpcodecs
 +- sab filter ported from libmpcodecs
 +- ffprobe -show_chapters option
  - WavPack encoding through libwavpack
 -- Added the -n parameter to avconv
 -- RTMP seek support
 -- when transcoding with avconv (i.e. not streamcopying), -ss is now accurate
 -  even when used as an input option. Previous behavior can be restored with
 -  the -noaccurate_seek option.
 -- avconv -t option can now be used for inputs, to limit the duration of
 -  data read from an input file
 -- Voxware MetaSound decoder
 -- WebP decoder
 -- Error Resilient AAC syntax (ER AAC LC) decoding
 -- Low Delay AAC (ER AAC LD) decoding
 -- mux chapters in ASF files
 -- Opus in Ogg demuxing
 -- Enhanced Low Delay AAC (ER AAC ELD) decoding (no LD SBR support)
 -- F4V muxer
 -- HNM version 4 demuxer and video decoder
 -- HEVC decoder
 -- raw HEVC, HEVC in MOV/MP4, HEVC in Matroska, HEVC in MPEG-TS demuxing
 -- remove avplay -vismv option, which has not worked for a long time
 -- Live HDS muxer
 -- setsar/setdar filters now support variables in ratio expressions
 -- dar variable in the scale filter now returns the actual DAR (i.e. a * sar)
 -- VP9 decoder
 -- support for decoding through VDPAU in avconv (the -hwaccel option)
 -- remove mp3_header_(de)compress bitstream filters
 -- stereoscopic 3d metadata handling
 -- png standalone parser
 -- WebP encoding via libwebp
 -- ATRAC3+ decoder
 -- framepack filter
 -- Mirillis FIC video decoder
 -- Support DNx444
 -- compand audio filter
 +- rotate filter
 +- spp filter ported from libmpcodecs
 +- libgme support
 +- psnr filter
  
  
 -version 9:
 -- av_basename and av_dirname
 -- adobe and limelight publisher authentication in RTMP
 +version 1.2:
 +
  - VDPAU hardware acceleration through normal hwaccel
  - SRTP support
 +- Error diffusion dither in Swscale
 +- Chained Ogg support
 +- Theora Midstream reconfiguration support
 +- EVRC decoder
 +- audio fade filter
 +- filtering audio with unknown channel layout
 +- allpass, bass, bandpass, bandreject, biquad, equalizer, highpass, lowpass
 +  and treble audio filter
 +- improved showspectrum filter, with multichannel support and sox-like colors
 +- histogram filter
 +- tee muxer
 +- il filter ported from libmpcodecs
 +- support ID3v2 tags in ASF files
 +- encrypted TTA stream decoding support
 +- RF64 support in WAV muxer
 +- noise filter ported from libmpcodecs
 +- Subtitles character encoding conversion
 +- blend filter
 +- stereo3d filter ported from libmpcodecs
  
  
 -version 9_beta3:
 -- ashowinfo audio filter
 +version 1.1:
 +
 +- stream disposition information printing in ffprobe
 +- filter for loudness analysis following EBU R128
 +- Opus encoder using libopus
 +- ffprobe -select_streams option
 +- Pinnacle TARGA CineWave YUV16 decoder
 +- TAK demuxer, decoder and parser
 +- DTS-HD demuxer
 +- remove -same_quant, it hasn't worked for years
 +- FFM2 support
 +- X-Face image encoder and decoder
  - 24-bit FLAC encoding
 -- audio volume filter
 -- deprecated the avconv -vol option. the volume filter is to be used instead.
  - multi-channel ALAC encoding up to 7.1
 -- TAK demuxer, parser, and decoder
 -- adaptive frame-level multithreading for H.264
 -
 -
 -version 9_beta2:
  - metadata (INFO tag) support in WAV muxer
 +- subtitles raw text decoder
  - support for building DLLs using MSVC
 -- remove avserver daemon mode
 +- LVF demuxer
 +- ffescape tool
 +- metadata (info chunk) support in CAF muxer
 +- field filter ported from libmpcodecs
 +- AVR demuxer
 +- geq filter ported from libmpcodecs
 +- remove ffserver daemon mode
 +- AST muxer/demuxer
 +- new expansion syntax for drawtext
 +- BRender PIX image decoder
 +- ffprobe -show_entries option
 +- ffprobe -sections option
 +- ADPCM IMA Dialogic decoder
 +- BRSTM demuxer
 +- animated GIF decoder and demuxer
 +- PVF demuxer
 +- subtitles filter
 +- IRCAM muxer/demuxer
 +- Paris Audio File demuxer
 +- Virtual concatenation demuxer
 +- VobSub demuxer
 +- JSON captions for TED talks decoding support
 +- SOX Resampler support in libswresample
 +- aselect filter
 +- SGI RLE 8-bit / Silicon Graphics RLE 8-bit video decoder
 +- Silicon Graphics Motion Video Compressor 1 & 2 decoder
 +- Silicon Graphics Movie demuxer
 +- apad filter
 +- Resolution & pixel format change support with multithreading for H.264
 +- documentation split into per-component manuals
 +- pp (postproc) filter ported from MPlayer
 +- NIST Sphere demuxer
 +- MPL2, VPlayer, MPlayer, AQTitle, PJS and SubViewer v1 subtitles demuxers and decoders
 +- Sony Wave64 muxer
 +- adobe and limelight publisher authentication in RTMP
 +- data: URI scheme
  - support building on the Plan 9 operating system
 -- ffv1: support version 1.3
 +- kerndeint filter ported from MPlayer
 +- histeq filter ported from VirtualDub
 +- Megalux Frame demuxer
 +- 012v decoder
 +- Improved AVC Intra decoding support
  
  
 -version 9_beta1:
 +version 1.0:
  
 -- XWD encoder and decoder
 -- Support for fragmentation in the mov/mp4 muxer
 -- ISMV (Smooth Streaming) muxer
 -- CDXL demuxer and decoder
 -- Apple ProRes encoder
 -- Sun Rasterfile Encoder
 -- remove libpostproc
 -- ID3v2 attached pictures reading and writing
 -- WMA Lossless decoder
 -- XBM encoder
 -- RealAudio Lossless decoder
 -- ZeroCodec decoder
 -- drop support for avconv without libavfilter
 -- add libavresample audio conversion library
 -- audio filters support in libavfilter and avconv
 -- add fps filter
 -- audio split filter
 -- audio mix filter
 -- avprobe output is now standard INI or JSON. The old format can still
 -  be used with -of old.
 +- INI and flat output in ffprobe
 +- Scene detection in libavfilter
  - Indeo Audio decoder
  - channelsplit audio filter
 +- setnsamples audio filter
 +- atempo filter
 +- ffprobe -show_data option
  - RTMPT protocol support
  - iLBC encoding/decoding via libilbc
  - Microsoft Screen 1 decoder
diff --cc configure
+++ b/configure
@@@ -190,17 -175,10 +190,18 @@@ Individual component options
  
  External library support:
    --enable-avisynth        enable reading of AviSynth script files [no]
 -  --enable-bzlib           enable bzlib [autodetect]
 +  --disable-bzlib          disable bzlib [autodetect]
 +  --enable-fontconfig      enable fontconfig
    --enable-frei0r          enable frei0r video filtering
    --enable-gnutls          enable gnutls [no]
 +  --disable-iconv          disable iconv [autodetect]
 +  --enable-ladspa          enable LADSPA audio filtering
 +  --enable-libaacplus      enable AAC+ encoding via libaacplus [no]
 +  --enable-libass          enable libass subtitles rendering [no]
 +  --enable-libbluray       enable BluRay reading using libbluray [no]
+   --enable-libbs2b         enable bs2b DSP library [no]
 +  --enable-libcaca         enable textual display using libcaca
 +  --enable-libcelt         enable CELT decoding via libcelt [no]
    --enable-libcdio         enable audio CD grabbing with libcdio
    --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
                             and libraw1394 [no]
@@@ -1302,18 -1123,10 +1303,19 @@@ EXAMPLE_LIST=
  EXTERNAL_LIBRARY_LIST="
      avisynth
      bzlib
 +    crystalhd
 +    decklink
      frei0r
      gnutls
 +    iconv
 +    ladspa
 +    libaacplus
 +    libass
 +    libbluray
+     libbs2b
 +    libcaca
      libcdio
 +    libcelt
      libdc1394
      libfaac
      libfdk_aac
@@@ -2454,26 -2085,12 +2456,27 @@@ unix_protocol_deps="sys_un_h
  unix_protocol_select="network"
  
  # filters
 +aconvert_filter_deps="swresample"
 +amovie_filter_deps="avcodec avformat"
 +aresample_filter_deps="swresample"
 +ass_filter_deps="libass"
 +asyncts_filter_deps="avresample"
 +atempo_filter_deps="avcodec"
 +atempo_filter_select="rdft"
 +azmq_filter_deps="libzmq"
  blackframe_filter_deps="gpl"
  boxblur_filter_deps="gpl"
+ bs2b_filter_deps="libbs2b"
 +colormatrix_filter_deps="gpl"
  cropdetect_filter_deps="gpl"
 +dctdnoiz_filter_deps="avcodec"
 +dctdnoiz_filter_select="dct"
  delogo_filter_deps="gpl"
 +deshake_filter_deps="avcodec"
 +deshake_filter_select="dsputil"
  drawtext_filter_deps="libfreetype"
 +ebur128_filter_deps="gpl"
 +flite_filter_deps="libflite"
  frei0r_filter_deps="frei0r dlopen"
  frei0r_filter_extralibs='$ldl'
  frei0r_src_filter_deps="frei0r dlopen"
@@@ -4592,30 -4025,16 +4595,31 @@@ for func in $MATH_FUNCS; d
  done
  
  # these are off by default, so fail if requested and not available
 -enabled avisynth          && { { check_header "avisynth/avisynth_c.h" && check_lib2 "windows.h" LoadLibrary; } ||
 -                               { check_header "avxsynth/avxsynth_c.h" && check_lib2 "dlfcn.h" dlopen -ldl; } ||
 -                               die "ERROR: LoadLibrary/dlopen not found, or avisynth header not found"; }
 +enabled avfoundation_indev && { check_header_oc AVFoundation/AVFoundation.h || disable avfoundation_indev; }
 +enabled avisynth          && { { check_lib2 "windows.h" LoadLibrary; } ||
 +                               { check_lib2 "dlfcn.h" dlopen -ldl; } ||
 +                               die "ERROR: LoadLibrary/dlopen not found for avisynth"; }
 +enabled decklink          && { check_header DeckLinkAPI.h || die "ERROR: DeckLinkAPI.h header not found"; }
  enabled frei0r            && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
  enabled gnutls            && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
 +enabled ladspa            && { check_header ladspa.h || die "ERROR: ladspa.h header not found"; }
 +enabled libiec61883       && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
 +enabled libaacplus        && require "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus
 +enabled libass            && require_pkg_config libass ass/ass.h ass_library_init
 +enabled libbluray         && require_pkg_config libbluray libbluray/bluray.h bd_open
+ enabled libbs2b           && require_pkg_config libbs2b bs2b.h bs2b_open
 +enabled libcelt           && require libcelt celt/celt.h celt_decode -lcelt0 &&
 +                             { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
 +                               die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
 +enabled libcaca           && require_pkg_config caca caca.h caca_create_canvas
  enabled libfaac           && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
  enabled libfdk_aac        && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
 +flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
 +enabled libflite          && require2 libflite "flite/flite.h" flite_init $flite_libs
 +enabled fontconfig        && enable libfontconfig
  enabled libfontconfig     && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit
 -enabled libfreetype       && require_pkg_config freetype2 "ft2build.h FT_FREETYPE_H" FT_Init_FreeType
 +enabled libfreetype       && require_libfreetype
 +enabled libgme            && require  libgme gme/gme.h gme_new_emu -lgme -lstdc++
  enabled libgsm            && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
                                     check_lib "${gsm_hdr}" gsm_create -lgsm && break;
                                 done || die "ERROR: libgsm not found"; }
@@@ -808,1017 -607,72 +808,1047 @@@ aresample=async=100
  @end example
  @end itemize
  
 -@section join
 -Join multiple input streams into one multi-channel stream.
 +@section asetnsamples
  
 -It accepts the following parameters:
 -@table @option
 +Set the number of samples per each output audio frame.
  
 -@item inputs
 -The number of input streams. It defaults to 2.
 +The last output packet may contain a different number of samples, as
 +the filter will flush all the remaining samples when the input audio
 +signal its end.
  
 -@item channel_layout
 -The desired output channel layout. It defaults to stereo.
 +The filter accepts the following options:
  
 -@item map
 -Map channels from inputs to output. The argument is a '|'-separated list of
 -mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
 -form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
 -can be either the name of the input channel (e.g. FL for front left) or its
 -index in the specified input stream. @var{out_channel} is the name of the output
 -channel.
 -@end table
 +@table @option
  
 -The filter will attempt to guess the mappings when they are not specified
 -explicitly. It does so by first trying to find an unused matching input channel
 -and if that fails it picks the first unused input channel.
 +@item nb_out_samples, n
 +Set the number of frames per each output audio frame. The number is
 +intended as the number of samples @emph{per each channel}.
 +Default value is 1024.
  
 -Join 3 inputs (with properly set channel layouts):
 -@example
 -avconv -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
 -@end example
 +@item pad, p
 +If set to 1, the filter will pad the last audio frame with zeroes, so
 +that the last frame will contain the same number of samples as the
 +previous ones. Default value is 1.
 +@end table
  
 -Build a 5.1 output from 6 single-channel streams:
 +For example, to set the number of per-frame samples to 1234 and
 +disable padding for the last frame, use:
  @example
 -avconv -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
 -'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
 -out
 +asetnsamples=n=1234:p=0
  @end example
  
 -@section resample
 -Convert the audio sample format, sample rate and channel layout. It is
 -not meant to be used directly; it is inserted automatically by libavfilter
 -whenever conversion is needed. Use the @var{aformat} filter to force a specific
 -conversion.
 +@section asetrate
  
 -@section volume
 +Set the sample rate without altering the PCM data.
 +This will result in a change of speed and pitch.
  
 -Adjust the input audio volume.
 +The filter accepts the following options:
  
 -It accepts the following parameters:
  @table @option
 +@item sample_rate, r
 +Set the output sample rate. Default is 44100 Hz.
 +@end table
  
 -@item volume
 -This expresses how the audio volume will be increased or decreased.
 -
 -Output values are clipped to the maximum value.
 +@section ashowinfo
  
 -The output audio volume is given by the relation:
 -@example
 -@var{output_volume} = @var{volume} * @var{input_volume}
 -@end example
 +Show a line containing various information for each input audio frame.
 +The input audio is not modified.
  
 -The default value for @var{volume} is 1.0.
 +The shown line contains a sequence of key/value pairs of the form
 +@var{key}:@var{value}.
  
 -@item precision
 -This parameter represents the mathematical precision.
 +It accepts the following parameters:
  
 -It determines which input sample formats will be allowed, which affects the
 +@table @option
 +@item n
 +The (sequential) number of the input frame, starting from 0.
 +
 +@item pts
 +The presentation timestamp of the input frame, in time base units; the time base
 +depends on the filter input pad, and is usually 1/@var{sample_rate}.
 +
 +@item pts_time
 +The presentation timestamp of the input frame in seconds.
 +
 +@item pos
 +position of the frame in the input stream, -1 if this information in
 +unavailable and/or meaningless (for example in case of synthetic audio)
 +
 +@item fmt
 +The sample format.
 +
 +@item chlayout
 +The channel layout.
 +
 +@item rate
 +The sample rate for the audio frame.
 +
 +@item nb_samples
 +The number of samples (per channel) in the frame.
 +
 +@item checksum
 +The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
 +audio, the data is treated as if all the planes were concatenated.
 +
 +@item plane_checksums
 +A list of Adler-32 checksums for each data plane.
 +@end table
 +
 +@section astats
 +
 +Display time domain statistical information about the audio channels.
 +Statistics are calculated and displayed for each audio channel and,
 +where applicable, an overall figure is also given.
 +
 +It accepts the following option:
 +@table @option
 +@item length
 +Short window length in seconds, used for peak and trough RMS measurement.
 +Default is @code{0.05} (50 miliseconds). Allowed range is @code{[0.1 - 10]}.
 +@end table
 +
 +A description of each shown parameter follows:
 +
 +@table @option
 +@item DC offset
 +Mean amplitude displacement from zero.
 +
 +@item Min level
 +Minimal sample level.
 +
 +@item Max level
 +Maximal sample level.
 +
 +@item Peak level dB
 +@item RMS level dB
 +Standard peak and RMS level measured in dBFS.
 +
 +@item RMS peak dB
 +@item RMS trough dB
 +Peak and trough values for RMS level measured over a short window.
 +
 +@item Crest factor
 +Standard ratio of peak to RMS level (note: not in dB).
 +
 +@item Flat factor
 +Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
 +(i.e. either @var{Min level} or @var{Max level}).
 +
 +@item Peak count
 +Number of occasions (not the number of samples) that the signal attained either
 +@var{Min level} or @var{Max level}.
 +@end table
 +
 +@section astreamsync
 +
 +Forward two audio streams and control the order the buffers are forwarded.
 +
 +The filter accepts the following options:
 +
 +@table @option
 +@item expr, e
 +Set the expression deciding which stream should be
 +forwarded next: if the result is negative, the first stream is forwarded; if
 +the result is positive or zero, the second stream is forwarded. It can use
 +the following variables:
 +
 +@table @var
 +@item b1 b2
 +number of buffers forwarded so far on each stream
 +@item s1 s2
 +number of samples forwarded so far on each stream
 +@item t1 t2
 +current timestamp of each stream
 +@end table
 +
 +The default value is @code{t1-t2}, which means to always forward the stream
 +that has a smaller timestamp.
 +@end table
 +
 +@subsection Examples
 +
 +Stress-test @code{amerge} by randomly sending buffers on the wrong
 +input, while avoiding too much of a desynchronization:
 +@example
 +amovie=file.ogg [a] ; amovie=file.mp3 [b] ;
 +[a] [b] astreamsync=(2*random(1))-1+tanh(5*(t1-t2)) [a2] [b2] ;
 +[a2] [b2] amerge
 +@end example
 +
 +@section asyncts
 +
 +Synchronize audio data with timestamps by squeezing/stretching it and/or
 +dropping samples/adding silence when needed.
 +
 +This filter is not built by default, please use @ref{aresample} to do squeezing/stretching.
 +
 +It accepts the following parameters:
 +@table @option
 +
 +@item compensate
 +Enable stretching/squeezing the data to make it match the timestamps. Disabled
 +by default. When disabled, time gaps are covered with silence.
 +
 +@item min_delta
 +The minimum difference between timestamps and audio data (in seconds) to trigger
 +adding/dropping samples. The default value is 0.1. If you get an imperfect
 +sync with this filter, try setting this parameter to 0.
 +
 +@item max_comp
 +The maximum compensation in samples per second. Only relevant with compensate=1.
 +The default value is 500.
 +
 +@item first_pts
 +Assume that the first PTS should be this value. The time base is 1 / sample
 +rate. This allows for padding/trimming at the start of the stream. By default,
 +no assumption is made about the first frame's expected PTS, so no padding or
 +trimming is done. For example, this could be set to 0 to pad the beginning with
 +silence if an audio stream starts after the video stream or to trim any samples
 +with a negative PTS due to encoder delay.
 +
 +@end table
 +
 +@section atempo
 +
 +Adjust audio tempo.
 +
 +The filter accepts exactly one parameter, the audio tempo. If not
 +specified then the filter will assume nominal 1.0 tempo. Tempo must
 +be in the [0.5, 2.0] range.
 +
 +@subsection Examples
 +
 +@itemize
 +@item
 +Slow down audio to 80% tempo:
 +@example
 +atempo=0.8
 +@end example
 +
 +@item
 +To speed up audio to 125% tempo:
 +@example
 +atempo=1.25
 +@end example
 +@end itemize
 +
 +@section atrim
 +
 +Trim the input so that the output contains one continuous subpart of the input.
 +
 +It accepts the following parameters:
 +@table @option
 +@item start
 +Timestamp (in seconds) of the start of the section to keep. I.e. the audio
 +sample with the timestamp @var{start} will be the first sample in the output.
 +
 +@item end
 +Specify time of the first audio sample that will be dropped, i.e. the
 +audio sample immediately preceding the one with the timestamp @var{end} will be
 +the last sample in the output.
 +
 +@item start_pts
 +Same as @var{start}, except this option sets the start timestamp in samples
 +instead of seconds.
 +
 +@item end_pts
 +Same as @var{end}, except this option sets the end timestamp in samples instead
 +of seconds.
 +
 +@item duration
 +The maximum duration of the output in seconds.
 +
 +@item start_sample
 +The number of the first sample that should be output.
 +
 +@item end_sample
 +The number of the first sample that should be dropped.
 +@end table
 +
 +@option{start}, @option{end}, @option{duration} are expressed as time
 +duration specifications, check the "Time duration" section in the
 +ffmpeg-utils manual.
 +
 +Note that the first two sets of the start/end options and the @option{duration}
 +option look at the frame timestamp, while the _sample options simply count the
 +samples that pass through the filter. So start/end_pts and start/end_sample will
 +give different results when the timestamps are wrong, inexact or do not start at
 +zero. Also note that this filter does not modify the timestamps. If you wish
 +to have the output timestamps start at zero, insert the asetpts filter after the
 +atrim filter.
 +
 +If multiple start or end options are set, this filter tries to be greedy and
 +keep all samples that match at least one of the specified constraints. To keep
 +only the part that matches all the constraints at once, chain multiple atrim
 +filters.
 +
 +The defaults are such that all the input is kept. So it is possible to set e.g.
 +just the end values to keep everything before the specified time.
 +
 +Examples:
 +@itemize
 +@item
 +Drop everything except the second minute of input:
 +@example
 +ffmpeg -i INPUT -af atrim=60:120
 +@end example
 +
 +@item
 +Keep only the first 1000 samples:
 +@example
 +ffmpeg -i INPUT -af atrim=end_sample=1000
 +@end example
 +
 +@end itemize
 +
 +@section bandpass
 +
 +Apply a two-pole Butterworth band-pass filter with central
 +frequency @var{frequency}, and (3dB-point) band-width width.
 +The @var{csg} option selects a constant skirt gain (peak gain = Q)
 +instead of the default: constant 0dB peak gain.
 +The filter roll off at 6dB per octave (20dB per decade).
 +
 +The filter accepts the following options:
 +
 +@table @option
 +@item frequency, f
 +Set the filter's central frequency. Default is @code{3000}.
 +
 +@item csg
 +Constant skirt gain if set to 1. Defaults to 0.
 +
 +@item width_type
 +Set method to specify band-width of filter.
 +@table @option
 +@item h
 +Hz
 +@item q
 +Q-Factor
 +@item o
 +octave
 +@item s
 +slope
 +@end table
 +
 +@item width, w
 +Specify the band-width of a filter in width_type units.
 +@end table
 +
 +@section bandreject
 +
 +Apply a two-pole Butterworth band-reject filter with central
 +frequency @var{frequency}, and (3dB-point) band-width @var{width}.
 +The filter roll off at 6dB per octave (20dB per decade).
 +
 +The filter accepts the following options:
 +
 +@table @option
 +@item frequency, f
 +Set the filter's central frequency. Default is @code{3000}.
 +
 +@item width_type
 +Set method to specify band-width of filter.
 +@table @option
 +@item h
 +Hz
 +@item q
 +Q-Factor
 +@item o
 +octave
 +@item s
 +slope
 +@end table
 +
 +@item width, w
 +Specify the band-width of a filter in width_type units.
 +@end table
 +
 +@section bass
 +
 +Boost or cut the bass (lower) frequencies of the audio using a two-pole
 +shelving filter with a response similar to that of a standard
 +hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
 +
 +The filter accepts the following options:
 +
 +@table @option
 +@item gain, g
 +Give the gain at 0 Hz. Its useful range is about -20
 +(for a large cut) to +20 (for a large boost).
 +Beware of clipping when using a positive gain.
 +
 +@item frequency, f
 +Set the filter's central frequency and so can be used
 +to extend or reduce the frequency range to be boosted or cut.
 +The default value is @code{100} Hz.
 +
 +@item width_type
 +Set method to specify band-width of filter.
 +@table @option
 +@item h
 +Hz
 +@item q
 +Q-Factor
 +@item o
 +octave
 +@item s
 +slope
 +@end table
 +
 +@item width, w
 +Determine how steep is the filter's shelf transition.
 +@end table
 +
 +@section biquad
 +
 +Apply a biquad IIR filter with the given coefficients.
 +Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
 +are the numerator and denominator coefficients respectively.
 +
++@section bs2b
++Bauer stereo to binaural transformation, which improves headphone listening of
++stereo audio records.
++
++It accepts the following parameters:
++@table @option
++
++@item profile
++Pre-defined crossfeed level.
++@table @option
++
++@item default
++Default level (fcut=700, feed=50).
++
++@item cmoy
++Chu Moy circuit (fcut=700, feed=60).
++
++@item jmeier
++Jan Meier circuit (fcut=650, feed=95).
++
++@end table
++
++@item fcut
++Cut frequency (in Hz).
++
++@item feed
++Feed level (in Hz).
++
++@end table
++
 +@section channelmap
 +
 +Remap input channels to new locations.
 +
 +It accepts the following parameters:
 +@table @option
 +@item channel_layout
 +The channel layout of the output stream.
 +
 +@item map
 +Map channels from input to output. The argument is a '|'-separated list of
 +mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
 +@var{in_channel} form. @var{in_channel} can be either the name of the input
 +channel (e.g. FL for front left) or its index in the input channel layout.
 +@var{out_channel} is the name of the output channel or its index in the output
 +channel layout. If @var{out_channel} is not given then it is implicitly an
 +index, starting with zero and increasing by one for each mapping.
 +@end table
 +
 +If no mapping is present, the filter will implicitly map input channels to
 +output channels, preserving indices.
 +
 +For example, assuming a 5.1+downmix input MOV file,
 +@example
 +ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
 +@end example
 +will create an output WAV file tagged as stereo from the downmix channels of
 +the input.
 +
 +To fix a 5.1 WAV improperly encoded in AAC's native channel order
 +@example
 +ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:channel_layout=5.1' out.wav
 +@end example
 +
 +@section channelsplit
 +
 +Split each channel from an input audio stream into a separate output stream.
 +
 +It accepts the following parameters:
 +@table @option
 +@item channel_layout
 +The channel layout of the input stream. The default is "stereo".
 +@end table
 +
 +For example, assuming a stereo input MP3 file,
 +@example
 +ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
 +@end example
 +will create an output Matroska file with two audio streams, one containing only
 +the left channel and the other the right channel.
 +
 +Split a 5.1 WAV file into per-channel files:
 +@example
 +ffmpeg -i in.wav -filter_complex
 +'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
 +-map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
 +front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
 +side_right.wav
 +@end example
 +
 +@section compand
 +Compress or expand the audio's dynamic range.
 +
 +It accepts the following parameters:
 +
 +@table @option
 +
 +@item attacks
 +@item decays
 +A list of times in seconds for each channel over which the instantaneous level
 +of the input signal is averaged to determine its volume. @var{attacks} refers to
 +increase of volume and @var{decays} refers to decrease of volume. For most
 +situations, the attack time (response to the audio getting louder) should be
 +shorter than the decay time, because the human ear is more sensitive to sudden
 +loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
 +a typical value for decay is 0.8 seconds.
 +
 +@item points
 +A list of points for the transfer function, specified in dB relative to the
 +maximum possible signal amplitude. Each key points list must be defined using
 +the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
 +@code{x0/y0 x1/y1 x2/y2 ....}
 +
 +The input values must be in strictly increasing order but the transfer function
 +does not have to be monotonically rising. The point @code{0/0} is assumed but
 +may be overridden (by @code{0/out-dBn}). Typical values for the transfer
 +function are @code{-70/-70|-60/-20}.
 +
 +@item soft-knee
 +Set the curve radius in dB for all joints. It defaults to 0.01.
 +
 +@item gain
 +Set the additional gain in dB to be applied at all points on the transfer
 +function. This allows for easy adjustment of the overall gain.
 +It defaults to 0.
 +
 +@item volume
 +Set an initial volume, in dB, to be assumed for each channel when filtering
 +starts. This permits the user to supply a nominal level initially, so that, for
 +example, a very large gain is not applied to initial signal levels before the
 +companding has begun to operate. A typical value for audio which is initially
 +quiet is -90 dB. It defaults to 0.
 +
 +@item delay
 +Set a delay, in seconds. The input audio is analyzed immediately, but audio is
 +delayed before being fed to the volume adjuster. Specifying a delay
 +approximately equal to the attack/decay times allows the filter to effectively
 +operate in predictive rather than reactive mode. It defaults to 0.
 +
 +@end table
 +
 +@subsection Examples
 +
 +@itemize
 +@item
 +Make music with both quiet and loud passages suitable for listening to in a
 +noisy environment:
 +@example
 +compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
 +@end example
 +
 +@item
 +A noise gate for when the noise is at a lower level than the signal:
 +@example
 +compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
 +@end example
 +
 +@item
 +Here is another noise gate, this time for when the noise is at a higher level
 +than the signal (making it, in some ways, similar to squelch):
 +@example
 +compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
 +@end example
 +@end itemize
 +
 +@section earwax
 +
 +Make audio easier to listen to on headphones.
 +
 +This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
 +so that when listened to on headphones the stereo image is moved from
 +inside your head (standard for headphones) to outside and in front of
 +the listener (standard for speakers).
 +
 +Ported from SoX.
 +
 +@section equalizer
 +
 +Apply a two-pole peaking equalisation (EQ) filter. With this
 +filter, the signal-level at and around a selected frequency can
 +be increased or decreased, whilst (unlike bandpass and bandreject
 +filters) that at all other frequencies is unchanged.
 +
 +In order to produce complex equalisation curves, this filter can
 +be given several times, each with a different central frequency.
 +
 +The filter accepts the following options:
 +
 +@table @option
 +@item frequency, f
 +Set the filter's central frequency in Hz.
 +
 +@item width_type
 +Set method to specify band-width of filter.
 +@table @option
 +@item h
 +Hz
 +@item q
 +Q-Factor
 +@item o
 +octave
 +@item s
 +slope
 +@end table
 +
 +@item width, w
 +Specify the band-width of a filter in width_type units.
 +
 +@item gain, g
 +Set the required gain or attenuation in dB.
 +Beware of clipping when using a positive gain.
 +@end table
 +
 +@subsection Examples
 +@itemize
 +@item
 +Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
 +@example
 +equalizer=f=1000:width_type=h:width=200:g=-10
 +@end example
 +
 +@item
 +Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
 +@example
 +equalizer=f=1000:width_type=q:width=1:g=2,equalizer=f=100:width_type=q:width=2:g=-5
 +@end example
 +@end itemize
 +
 +@section highpass
 +
 +Apply a high-pass filter with 3dB point frequency.
 +The filter can be either single-pole, or double-pole (the default).
 +The filter roll off at 6dB per pole per octave (20dB per pole per decade).
 +
 +The filter accepts the following options:
 +
 +@table @option
 +@item frequency, f
 +Set frequency in Hz. Default is 3000.
 +
 +@item poles, p
 +Set number of poles. Default is 2.
 +
 +@item width_type
 +Set method to specify band-width of filter.
 +@table @option
 +@item h
 +Hz
 +@item q
 +Q-Factor
 +@item o
 +octave
 +@item s
 +slope
 +@end table
 +
 +@item width, w
 +Specify the band-width of a filter in width_type units.
 +Applies only to double-pole filter.
 +The default is 0.707q and gives a Butterworth response.
 +@end table
 +
 +@section join
 +
 +Join multiple input streams into one multi-channel stream.
 +
 +It accepts the following parameters:
 +@table @option
 +
 +@item inputs
 +The number of input streams. It defaults to 2.
 +
 +@item channel_layout
 +The desired output channel layout. It defaults to stereo.
 +
 +@item map
 +Map channels from inputs to output. The argument is a '|'-separated list of
 +mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
 +form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
 +can be either the name of the input channel (e.g. FL for front left) or its
 +index in the specified input stream. @var{out_channel} is the name of the output
 +channel.
 +@end table
 +
 +The filter will attempt to guess the mappings when they are not specified
 +explicitly. It does so by first trying to find an unused matching input channel
 +and if that fails it picks the first unused input channel.
 +
 +Join 3 inputs (with properly set channel layouts):
 +@example
 +ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
 +@end example
 +
 +Build a 5.1 output from 6 single-channel streams:
 +@example
 +ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
 +'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
 +out
 +@end example
 +
 +@section ladspa
 +
 +Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
 +
 +To enable compilation of this filter you need to configure FFmpeg with
 +@code{--enable-ladspa}.
 +
 +@table @option
 +@item file, f
 +Specifies the name of LADSPA plugin library to load. If the environment
 +variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
 +each one of the directories specified by the colon separated list in
 +@env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
 +this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
 +@file{/usr/lib/ladspa/}.
 +
 +@item plugin, p
 +Specifies the plugin within the library. Some libraries contain only
 +one plugin, but others contain many of them. If this is not set filter
 +will list all available plugins within the specified library.
 +
 +@item controls, c
 +Set the '|' separated list of controls which are zero or more floating point
 +values that determine the behavior of the loaded plugin (for example delay,
 +threshold or gain).
 +Controls need to be defined using the following syntax:
 +c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
 +@var{valuei} is the value set on the @var{i}-th control.
 +If @option{controls} is set to @code{help}, all available controls and
 +their valid ranges are printed.
 +
 +@item sample_rate, s
 +Specify the sample rate, default to 44100. Only used if plugin have
 +zero inputs.
 +
 +@item nb_samples, n
 +Set the number of samples per channel per each output frame, default
 +is 1024. Only used if plugin have zero inputs.
 +
 +@item duration, d
 +Set the minimum duration of the sourced audio. See the function
 +@code{av_parse_time()} for the accepted format, also check the "Time duration"
 +section in the ffmpeg-utils manual.
 +Note that the resulting duration may be greater than the specified duration,
 +as the generated audio is always cut at the end of a complete frame.
 +If not specified, or the expressed duration is negative, the audio is
 +supposed to be generated forever.
 +Only used if plugin have zero inputs.
 +
 +@end table
 +
 +@subsection Examples
 +
 +@itemize
 +@item
 +List all available plugins within amp (LADSPA example plugin) library:
 +@example
 +ladspa=file=amp
 +@end example
 +
 +@item
 +List all available controls and their valid ranges for @code{vcf_notch}
 +plugin from @code{VCF} library:
 +@example
 +ladspa=f=vcf:p=vcf_notch:c=help
 +@end example
 +
 +@item
 +Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
 +plugin library:
 +@example
 +ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
 +@end example
 +
 +@item
 +Add reverberation to the audio using TAP-plugins
 +(Tom's Audio Processing plugins):
 +@example
 +ladspa=file=tap_reverb:tap_reverb
 +@end example
 +
 +@item
 +Generate white noise, with 0.2 amplitude:
 +@example
 +ladspa=file=cmt:noise_source_white:c=c0=.2
 +@end example
 +
 +@item
 +Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
 +@code{C* Audio Plugin Suite} (CAPS) library:
 +@example
 +ladspa=file=caps:Click:c=c1=20'
 +@end example
 +
 +@item
 +Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
 +@example
 +ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
 +@end example
 +@end itemize
 +
 +@subsection Commands
 +
 +This filter supports the following commands:
 +@table @option
 +@item cN
 +Modify the @var{N}-th control value.
 +
 +If the specified value is not valid, it is ignored and prior one is kept.
 +@end table
 +
 +@section lowpass
 +
 +Apply a low-pass filter with 3dB point frequency.
 +The filter can be either single-pole or double-pole (the default).
 +The filter roll off at 6dB per pole per octave (20dB per pole per decade).
 +
 +The filter accepts the following options:
 +
 +@table @option
 +@item frequency, f
 +Set frequency in Hz. Default is 500.
 +
 +@item poles, p
 +Set number of poles. Default is 2.
 +
 +@item width_type
 +Set method to specify band-width of filter.
 +@table @option
 +@item h
 +Hz
 +@item q
 +Q-Factor
 +@item o
 +octave
 +@item s
 +slope
 +@end table
 +
 +@item width, w
 +Specify the band-width of a filter in width_type units.
 +Applies only to double-pole filter.
 +The default is 0.707q and gives a Butterworth response.
 +@end table
 +
 +@section pan
 +
 +Mix channels with specific gain levels. The filter accepts the output
 +channel layout followed by a set of channels definitions.
 +
 +This filter is also designed to remap efficiently the channels of an audio
 +stream.
 +
 +The filter accepts parameters of the form:
 +"@var{l}:@var{outdef}:@var{outdef}:..."
 +
 +@table @option
 +@item l
 +output channel layout or number of channels
 +
 +@item outdef
 +output channel specification, of the form:
 +"@var{out_name}=[@var{gain}*]@var{in_name}[+[@var{gain}*]@var{in_name}...]"
 +
 +@item out_name
 +output channel to define, either a channel name (FL, FR, etc.) or a channel
 +number (c0, c1, etc.)
 +
 +@item gain
 +multiplicative coefficient for the channel, 1 leaving the volume unchanged
 +
 +@item in_name
 +input channel to use, see out_name for details; it is not possible to mix
 +named and numbered input channels
 +@end table
 +
 +If the `=' in a channel specification is replaced by `<', then the gains for
 +that specification will be renormalized so that the total is 1, thus
 +avoiding clipping noise.
 +
 +@subsection Mixing examples
 +
 +For example, if you want to down-mix from stereo to mono, but with a bigger
 +factor for the left channel:
 +@example
 +pan=1:c0=0.9*c0+0.1*c1
 +@end example
 +
 +A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
 +7-channels surround:
 +@example
 +pan=stereo: FL < FL + 0.5*FC + 0.6*BL + 0.6*SL : FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
 +@end example
 +
 +Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
 +that should be preferred (see "-ac" option) unless you have very specific
 +needs.
 +
 +@subsection Remapping examples
 +
 +The channel remapping will be effective if, and only if:
 +
 +@itemize
 +@item gain coefficients are zeroes or ones,
 +@item only one input per channel output,
 +@end itemize
 +
 +If all these conditions are satisfied, the filter will notify the user ("Pure
 +channel mapping detected"), and use an optimized and lossless method to do the
 +remapping.
 +
 +For example, if you have a 5.1 source and want a stereo audio stream by
 +dropping the extra channels:
 +@example
 +pan="stereo: c0=FL : c1=FR"
 +@end example
 +
 +Given the same source, you can also switch front left and front right channels
 +and keep the input channel layout:
 +@example
 +pan="5.1: c0=c1 : c1=c0 : c2=c2 : c3=c3 : c4=c4 : c5=c5"
 +@end example
 +
 +If the input is a stereo audio stream, you can mute the front left channel (and
 +still keep the stereo channel layout) with:
 +@example
 +pan="stereo:c1=c1"
 +@end example
 +
 +Still with a stereo audio stream input, you can copy the right channel in both
 +front left and right:
 +@example
 +pan="stereo: c0=FR : c1=FR"
 +@end example
 +
 +@section replaygain
 +
 +ReplayGain scanner filter. This filter takes an audio stream as an input and
 +outputs it unchanged.
 +At end of filtering it displays @code{track_gain} and @code{track_peak}.
 +
 +@section resample
 +
 +Convert the audio sample format, sample rate and channel layout. It is
 +not meant to be used directly.
 +
 +@section silencedetect
 +
 +Detect silence in an audio stream.
 +
 +This filter logs a message when it detects that the input audio volume is less
 +or equal to a noise tolerance value for a duration greater or equal to the
 +minimum detected noise duration.
 +
 +The printed times and duration are expressed in seconds.
 +
 +The filter accepts the following options:
 +
 +@table @option
 +@item duration, d
 +Set silence duration until notification (default is 2 seconds).
 +
 +@item noise, n
 +Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
 +specified value) or amplitude ratio. Default is -60dB, or 0.001.
 +@end table
 +
 +@subsection Examples
 +
 +@itemize
 +@item
 +Detect 5 seconds of silence with -50dB noise tolerance:
 +@example
 +silencedetect=n=-50dB:d=5
 +@end example
 +
 +@item
 +Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
 +tolerance in @file{silence.mp3}:
 +@example
 +ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
 +@end example
 +@end itemize
 +
 +@section treble
 +
 +Boost or cut treble (upper) frequencies of the audio using a two-pole
 +shelving filter with a response similar to that of a standard
 +hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
 +
 +The filter accepts the following options:
 +
 +@table @option
 +@item gain, g
 +Give the gain at whichever is the lower of ~22 kHz and the
 +Nyquist frequency. Its useful range is about -20 (for a large cut)
 +to +20 (for a large boost). Beware of clipping when using a positive gain.
 +
 +@item frequency, f
 +Set the filter's central frequency and so can be used
 +to extend or reduce the frequency range to be boosted or cut.
 +The default value is @code{3000} Hz.
 +
 +@item width_type
 +Set method to specify band-width of filter.
 +@table @option
 +@item h
 +Hz
 +@item q
 +Q-Factor
 +@item o
 +octave
 +@item s
 +slope
 +@end table
 +
 +@item width, w
 +Determine how steep is the filter's shelf transition.
 +@end table
 +
 +@section volume
 +
 +Adjust the input audio volume.
 +
 +It accepts the following parameters:
 +@table @option
 +
 +@item volume
 +Set audio volume expression.
 +
 +Output values are clipped to the maximum value.
 +
 +The output audio volume is given by the relation:
 +@example
 +@var{output_volume} = @var{volume} * @var{input_volume}
 +@end example
 +
 +The default value for @var{volume} is "1.0".
 +
 +@item precision
 +This parameter represents the mathematical precision.
 +
 +It determines which input sample formats will be allowed, which affects the
  precision of the volume scaling.
  
  @table @option
@@@ -75,16 -31,9 +75,17 @@@ OBJS-$(CONFIG_ASETRATE_FILTER
  OBJS-$(CONFIG_ASETTB_FILTER)                 += settb.o
  OBJS-$(CONFIG_ASHOWINFO_FILTER)              += af_ashowinfo.o
  OBJS-$(CONFIG_ASPLIT_FILTER)                 += split.o
 +OBJS-$(CONFIG_ASTATS_FILTER)                 += af_astats.o
 +OBJS-$(CONFIG_ASTREAMSYNC_FILTER)            += af_astreamsync.o
  OBJS-$(CONFIG_ASYNCTS_FILTER)                += af_asyncts.o
 +OBJS-$(CONFIG_ATEMPO_FILTER)                 += af_atempo.o
  OBJS-$(CONFIG_ATRIM_FILTER)                  += trim.o
 +OBJS-$(CONFIG_AZMQ_FILTER)                   += f_zmq.o
 +OBJS-$(CONFIG_BANDPASS_FILTER)               += af_biquads.o
 +OBJS-$(CONFIG_BANDREJECT_FILTER)             += af_biquads.o
 +OBJS-$(CONFIG_BASS_FILTER)                   += af_biquads.o
 +OBJS-$(CONFIG_BIQUAD_FILTER)                 += af_biquads.o
+ OBJS-$(CONFIG_BS2B_FILTER)                   += af_bs2b.o
  OBJS-$(CONFIG_CHANNELMAP_FILTER)             += af_channelmap.o
  OBJS-$(CONFIG_CHANNELSPLIT_FILTER)           += af_channelsplit.o
  OBJS-$(CONFIG_COMPAND_FILTER)                += af_compand.o
index 0000000,25e7867..5c8e8e5
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,222 +1,222 @@@
 - * This file is part of Libav.
+ /*
 - * 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
++ * License along with FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ /**
+  * @file
+  * Bauer stereo-to-binaural filter
+  */
+ #include <bs2b.h>
+ #include "libavutil/channel_layout.h"
+ #include "libavutil/common.h"
+ #include "libavutil/opt.h"
+ #include "audio.h"
+ #include "avfilter.h"
+ #include "formats.h"
+ #include "internal.h"
+ typedef struct Bs2bContext {
+     const AVClass *class;
+     int profile;
+     int fcut;
+     int feed;
+     t_bs2bdp bs2bp;
+     void (*filter)(t_bs2bdp bs2bdp, uint8_t *sample, int n);
+ } Bs2bContext;
+ #define OFFSET(x) offsetof(Bs2bContext, x)
+ #define A AV_OPT_FLAG_AUDIO_PARAM
+ static const AVOption options[] = {
+     { "profile", "Apply a pre-defined crossfeed level",
+             OFFSET(profile), AV_OPT_TYPE_INT, { .i64 = BS2B_DEFAULT_CLEVEL }, 0, INT_MAX, A, "profile" },
+         { "default", "default profile", 0, AV_OPT_TYPE_CONST, { .i64 = BS2B_DEFAULT_CLEVEL }, 0, 0, A, "profile" },
+         { "cmoy",    "Chu Moy circuit", 0, AV_OPT_TYPE_CONST, { .i64 = BS2B_CMOY_CLEVEL    }, 0, 0, A, "profile" },
+         { "jmeier",  "Jan Meier circuit", 0, AV_OPT_TYPE_CONST, { .i64 = BS2B_JMEIER_CLEVEL  }, 0, 0, A, "profile" },
+     { "fcut", "Set cut frequency (in Hz)",
+             OFFSET(fcut), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, BS2B_MAXFCUT, A },
+     { "feed", "Set feed level (in Hz)",
+             OFFSET(feed), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, BS2B_MAXFEED, A },
+     { NULL },
+ };
+ static const AVClass bs2b_class = {
+     .class_name = "bs2b filter",
+     .item_name  = av_default_item_name,
+     .option     = options,
+     .version    = LIBAVUTIL_VERSION_INT,
+ };
+ static av_cold int init(AVFilterContext *ctx)
+ {
+     Bs2bContext *bs2b = ctx->priv;
+     if (!(bs2b->bs2bp = bs2b_open()))
+         return AVERROR(ENOMEM);
+     bs2b_set_level(bs2b->bs2bp, bs2b->profile);
+     if (bs2b->fcut)
+         bs2b_set_level_fcut(bs2b->bs2bp, bs2b->fcut);
+     if (bs2b->feed)
+         bs2b_set_level_feed(bs2b->bs2bp, bs2b->feed);
+     return 0;
+ }
+ static av_cold void uninit(AVFilterContext *ctx)
+ {
+     Bs2bContext *bs2b = ctx->priv;
+     if (bs2b->bs2bp)
+         bs2b_close(bs2b->bs2bp);
+ }
+ static int query_formats(AVFilterContext *ctx)
+ {
+     AVFilterFormats *formats = NULL;
+     AVFilterChannelLayouts *layouts = NULL;
+     static const enum AVSampleFormat sample_fmts[] = {
+         AV_SAMPLE_FMT_U8,
+         AV_SAMPLE_FMT_S16,
+         AV_SAMPLE_FMT_S32,
+         AV_SAMPLE_FMT_FLT,
+         AV_SAMPLE_FMT_DBL,
+         AV_SAMPLE_FMT_NONE,
+     };
+     if (ff_add_channel_layout(&layouts, AV_CH_LAYOUT_STEREO) != 0)
+         return AVERROR(ENOMEM);
+     ff_set_common_channel_layouts(ctx, layouts);
+     formats = ff_make_format_list(sample_fmts);
+     if (!formats)
+         return AVERROR(ENOMEM);
+     ff_set_common_formats(ctx, formats);
+     formats = ff_all_samplerates();
+     if (!formats)
+         return AVERROR(ENOMEM);
+     ff_set_common_samplerates(ctx, formats);
+     return 0;
+ }
+ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
+ {
+     int ret;
+     AVFrame *out_frame;
+     Bs2bContext     *bs2b = inlink->dst->priv;
+     AVFilterLink *outlink = inlink->dst->outputs[0];
+     if (av_frame_is_writable(frame)) {
+         out_frame = frame;
+     } else {
+         out_frame = ff_get_audio_buffer(inlink, frame->nb_samples);
+         if (!out_frame)
+             return AVERROR(ENOMEM);
+         av_frame_copy(out_frame, frame);
+         ret = av_frame_copy_props(out_frame, frame);
+         if (ret < 0) {
+             av_frame_free(&out_frame);
+             av_frame_free(&frame);
+             return ret;
+         }
+     }
+     bs2b->filter(bs2b->bs2bp, out_frame->extended_data[0], out_frame->nb_samples);
+     if (frame != out_frame)
+         av_frame_free(&frame);
+     return ff_filter_frame(outlink, out_frame);
+ }
+ static int config_output(AVFilterLink *outlink)
+ {
+     AVFilterContext *ctx = outlink->src;
+     Bs2bContext    *bs2b = ctx->priv;
+     AVFilterLink *inlink = ctx->inputs[0];
+     int srate = inlink->sample_rate;
+     switch (inlink->format) {
+     case AV_SAMPLE_FMT_U8:
+         bs2b->filter = bs2b_cross_feed_u8;
+         break;
+     case AV_SAMPLE_FMT_S16:
+         bs2b->filter = bs2b_cross_feed_s16;
+         break;
+     case AV_SAMPLE_FMT_S32:
+         bs2b->filter = bs2b_cross_feed_s32;
+         break;
+     case AV_SAMPLE_FMT_FLT:
+         bs2b->filter = bs2b_cross_feed_f;
+         break;
+     case AV_SAMPLE_FMT_DBL:
+         bs2b->filter = bs2b_cross_feed_d;
+         break;
+     default:
+         return AVERROR_BUG;
+     }
+     if ((srate < BS2B_MINSRATE) || (srate > BS2B_MAXSRATE))
+         return AVERROR(ENOSYS);
+     bs2b_set_srate(bs2b->bs2bp, srate);
+     return 0;
+ }
+ static const AVFilterPad bs2b_inputs[] = {
+     {
+         .name           = "default",
+         .type           = AVMEDIA_TYPE_AUDIO,
+         .filter_frame   = filter_frame,
+     },
+     { NULL }
+ };
+ static const AVFilterPad bs2b_outputs[] = {
+     {
+         .name           = "default",
+         .type           = AVMEDIA_TYPE_AUDIO,
+         .config_props   = config_output,
+     },
+     { NULL }
+ };
+ AVFilter ff_af_bs2b = {
+     .name           = "bs2b",
+     .description    = NULL_IF_CONFIG_SMALL("Bauer stereo-to-binaural filter."),
+     .query_formats  = query_formats,
+     .priv_size      = sizeof(Bs2bContext),
+     .priv_class     = &bs2b_class,
+     .init           = init,
+     .uninit         = uninit,
+     .inputs         = bs2b_inputs,
+     .outputs        = bs2b_outputs,
+ };
@@@ -70,16 -51,9 +70,17 @@@ void avfilter_register_all(void
      REGISTER_FILTER(ASETTB,         asettb,         af);
      REGISTER_FILTER(ASHOWINFO,      ashowinfo,      af);
      REGISTER_FILTER(ASPLIT,         asplit,         af);
 +    REGISTER_FILTER(ASTATS,         astats,         af);
 +    REGISTER_FILTER(ASTREAMSYNC,    astreamsync,    af);
      REGISTER_FILTER(ASYNCTS,        asyncts,        af);
 +    REGISTER_FILTER(ATEMPO,         atempo,         af);
      REGISTER_FILTER(ATRIM,          atrim,          af);
 +    REGISTER_FILTER(AZMQ,           azmq,           af);
 +    REGISTER_FILTER(BANDPASS,       bandpass,       af);
 +    REGISTER_FILTER(BANDREJECT,     bandreject,     af);
 +    REGISTER_FILTER(BASS,           bass,           af);
 +    REGISTER_FILTER(BIQUAD,         biquad,         af);
+     REGISTER_FILTER(BS2B,           bs2b,           af);
      REGISTER_FILTER(CHANNELMAP,     channelmap,     af);
      REGISTER_FILTER(CHANNELSPLIT,   channelsplit,   af);
      REGISTER_FILTER(COMPAND,        compand,        af);
@@@ -29,9 -29,9 +29,9 @@@
  
  #include "libavutil/version.h"
  
 -#define LIBAVFILTER_VERSION_MAJOR  4
 -#define LIBAVFILTER_VERSION_MINOR  5
 -#define LIBAVFILTER_VERSION_MICRO  0
 +#define LIBAVFILTER_VERSION_MAJOR   4
- #define LIBAVFILTER_VERSION_MINOR   4
++#define LIBAVFILTER_VERSION_MINOR   5
 +#define LIBAVFILTER_VERSION_MICRO 100
  
  #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
                                                 LIBAVFILTER_VERSION_MINOR, \