]> git.sesse.net Git - ffmpeg/blobdiff - doc/filters.texi
Merge commit '38f0c0781a6e099f11c0acec07f9b8be742190c4'
[ffmpeg] / doc / filters.texi
index 94518d1514bcaed7280cdeb7429f6717e41ce6a4..d3777efc4f2f1e72f61bf57591fc6012027e05e9 100644 (file)
@@ -117,7 +117,7 @@ A filtergraph can be represented using a textual representation, which is
 recognized by the @option{-filter}/@option{-vf} and @option{-filter_complex}
 options in @command{ffmpeg} and @option{-vf} in @command{ffplay}, and by the
 @code{avfilter_graph_parse()}/@code{avfilter_graph_parse2()} function defined in
-@file{libavfilter/avfiltergraph.h}.
+@file{libavfilter/avfilter.h}.
 
 A filterchain consists of a sequence of connected filters, each one
 connected to the previous one in the sequence. A filterchain is
@@ -283,6 +283,8 @@ Below is a description of the currently available audio filters.
 
 Convert the input audio format to the specified formats.
 
+@emph{This filter is deprecated. Use @ref{aformat} instead.}
+
 The filter accepts a string of the form:
 "@var{sample_format}:@var{channel_layout}".
 
@@ -458,6 +460,45 @@ slope
 Determine how steep is the filter's shelf transition.
 @end table
 
+@section telecine
+
+Apply telecine process to the video.
+
+This filter accepts the following options:
+
+@table @option
+@item first_field
+@table @samp
+@item top, t
+top field first
+@item bottom, b
+bottom field first
+The default value is @code{top}.
+@end table
+
+@item pattern
+A string of numbers representing the pulldown pattern you wish to apply.
+The default value is @code{23}.
+@end table
+
+@example
+Some typical patterns:
+
+NTSC output (30i):
+27.5p: 32222
+24p: 23 (classic)
+24p: 2332 (preferred)
+20p: 33
+18p: 334
+16p: 3444
+
+PAL output (25i):
+27.5p: 12222
+24p: 222222222223 ("Euro pulldown")
+16.67p: 33
+16p: 33333334
+@end example
+
 @section treble
 
 Boost or cut treble (upper) frequencies of the audio using a two-pole
@@ -720,7 +761,7 @@ aformat=sample_fmts=u8|s16:channel_layouts=stereo
 
 Merge two or more audio streams into a single multi-channel stream.
 
-The filter accepts the following named options:
+The filter accepts the following options:
 
 @table @option
 
@@ -761,16 +802,9 @@ amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
 @end example
 
 @item
-Multiple merges:
+Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
 @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][a2][a3][a4][a5] amerge=inputs=6" -c:a pcm_s16le output.mkv
+ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
 @end example
 @end itemize
 
@@ -863,8 +897,7 @@ 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.
 
-The filter accepts parameters as a list of @var{key}=@var{value} pairs,
-separated by ":".
+The filter accepts the following options:
 
 @table @option
 
@@ -960,7 +993,11 @@ will create 5 copies of the input audio.
 
 Forward two audio streams and control the order the buffers are forwarded.
 
-The argument to the filter is an expression deciding which stream should be
+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:
@@ -976,8 +1013,11 @@ current timestamp of each stream
 
 The default value is @code{t1-t2}, which means to always forward the stream
 that has a smaller timestamp.
+@end table
+
+@subsection Examples
 
-Example: stress-test @code{amerge} by randomly sending buffers on the wrong
+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] ;
@@ -1144,7 +1184,7 @@ silencedetect=n=-50dB:d=5
 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
 tolerance in @file{silence.mp3}:
 @example
-ffmpeg -f lavfi -i amovie=silence.mp3,silencedetect=noise=0.0001 -f null -
+ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
 @end example
 @end itemize
 
@@ -1400,11 +1440,14 @@ Buffer audio frames, and make them available to the filter chain.
 This source is mainly intended for a programmatic use, in particular
 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
 
-It accepts the following mandatory parameters:
-@var{sample_rate}:@var{sample_fmt}:@var{channel_layout}
+It accepts the following named parameters:
 
 @table @option
 
+@item time_base
+Timebase which will be used for timestamps of submitted frames. It must be
+either a floating-point number or in @var{numerator}/@var{denominator} form.
+
 @item sample_rate
 The sample rate of the incoming audio buffers.
 
@@ -1429,7 +1472,7 @@ must be consistent.
 @subsection Examples
 
 @example
-abuffer=44100:s16p:stereo
+abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
 @end example
 
 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
@@ -1437,7 +1480,7 @@ Since the sample format with name "s16p" corresponds to the number
 6 and the "stereo" channel layout corresponds to the value 0x3, this is
 equivalent to:
 @example
-abuffer=44100:6:0x3
+abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
 @end example
 
 @section aevalsrc
@@ -1448,18 +1491,13 @@ This source accepts in input one or more expressions (one for each
 channel), which are evaluated and used to generate a corresponding
 audio signal.
 
-It accepts the syntax: @var{exprs}[::@var{options}].
-@var{exprs} is a list of expressions separated by ":", one for each
-separate channel. In case the @var{channel_layout} is not
-specified, the selected channel layout depends on the number of
-provided expressions.
-
-@var{options} is an optional sequence of @var{key}=@var{value} pairs,
-separated by ":".
-
-The description of the accepted options follows.
+This source accepts the following options:
 
 @table @option
+@item exprs
+Set the '|'-separated expressions list for each separate channel. In case the
+@option{channel_layout} option is not specified, the selected channel layout
+depends on the number of provided expressions.
 
 @item channel_layout, c
 Set the channel layout. The number of channels in the specified layout
@@ -1510,14 +1548,14 @@ aevalsrc=0
 Generate a sin signal with frequency of 440 Hz, set sample rate to
 8000 Hz:
 @example
-aevalsrc="sin(440*2*PI*t)::s=8000"
+aevalsrc="sin(440*2*PI*t):s=8000"
 @end example
 
 @item
 Generate a two channels signal, specify the channel layout (Front
 Center + Back Center) explicitly:
 @example
-aevalsrc="sin(420*2*PI*t):cos(430*2*PI*t)::c=FC|BC"
+aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
 @end example
 
 @item
@@ -1535,7 +1573,7 @@ aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
 @item
 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
 @example
-aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) : 0.1*sin(2*PI*(360+2.5/2)*t)"
+aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
 @end example
 
 @end itemize
@@ -1547,16 +1585,10 @@ as a template and to be employed in analysis / debugging tools, or as
 the source for filters which ignore the input data (for example the sox
 synth filter).
 
-It accepts an optional sequence of @var{key}=@var{value} pairs,
-separated by ":".
-
-The description of the accepted options follows.
+This source accepts the following options:
 
 @table @option
 
-@item sample_rate, s
-Specify the sample rate, and defaults to 44100.
-
 @item channel_layout, cl
 
 Specify the channel layout, and can be either an integer or a string
@@ -1567,6 +1599,9 @@ Check the channel_layout_map definition in
 @file{libavutil/channel_layout.c} for the mapping between strings and
 channel layout values.
 
+@item sample_rate, r
+Specify the sample rate, and defaults to 44100.
+
 @item nb_samples, n
 Set the number of samples per requested frames.
 
@@ -1624,10 +1659,7 @@ To enable compilation of this filter you need to configure FFmpeg with
 
 Note that the flite library is not thread-safe.
 
-The source accepts parameters as a list of @var{key}=@var{value} pairs,
-separated by ":".
-
-The description of the accepted parameters follows.
+The filter accepts the following options:
 
 @table @option
 
@@ -1823,9 +1855,7 @@ duration of the detected black interval expressed in seconds.
 In order to display the output lines, you need to set the loglevel at
 least to the AV_LOG_INFO value.
 
-This filter accepts a list of options in the form of
-@var{key}=@var{value} pairs separated by ":". A description of the
-accepted options follows.
+The filter accepts the following options:
 
 @table @option
 @item black_min_duration, d
@@ -2371,8 +2401,9 @@ The filter accepts the following options:
 
 @table @option
 @item preset
-Select one of the available color presets. This option can not be used in
-addition to the @option{r}, @option{g}, @option{b} parameters.
+Select one of the available color presets. This option can be used in addition
+to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
+options takes priority on the preset values.
 Available presets are:
 @table @samp
 @item none
@@ -3096,7 +3127,8 @@ Extract a single field from an interlaced image using stride
 arithmetic to avoid wasting CPU time. The output frames are marked as
 non-interlaced.
 
-This filter accepts the following named options:
+The filter accepts the following options:
+
 @table @option
 @item type
 Specify whether to extract the top (if the value is @code{0} or
@@ -3613,24 +3645,27 @@ a float number which specifies chroma temporal strength, defaults to
 
 Modify the hue and/or the saturation of the input.
 
-This filter accepts the following optional named options:
+This filter accepts the following options:
 
 @table @option
 @item h
-Specify the hue angle as a number of degrees. It accepts a float
-number or an expression, and defaults to 0.0.
-
-@item H
-Specify the hue angle as a number of radians. It accepts a float
-number or an expression, and defaults to 0.0.
+Specify the hue angle as a number of degrees. It accepts an expression,
+and defaults to "0".
 
 @item s
 Specify the saturation in the [-10,10] range. It accepts a float number and
-defaults to 1.0.
+defaults to "1".
+
+@item H
+Specify the hue angle as a number of radians. It accepts a float
+number or an expression, and defaults to "0".
 @end table
 
-The @var{h}, @var{H} and @var{s} parameters are expressions containing the
-following constants:
+@option{h} and @option{H} are mutually exclusive, and can't be
+specified at the same time.
+
+The @option{h}, @option{H} and @option{s} option values are
+expressions containing the following constants:
 
 @table @option
 @item n
@@ -3649,10 +3684,6 @@ timestamp expressed in seconds, NAN if the input timestamp is unknown
 time base of the input video
 @end table
 
-The options can also be set using the syntax: @var{hue}:@var{saturation}
-
-In this case @var{hue} is expressed in degrees.
-
 @subsection Examples
 
 @itemize
@@ -3668,19 +3699,6 @@ Same command but expressing the hue in radians:
 hue=H=PI/2:s=1
 @end example
 
-@item
-Same command without named options, hue must be expressed in degrees:
-@example
-hue=90:1
-@end example
-
-@item
-Note that "h:s" syntax does not support expressions for the values of
-h and s, so the following example will issue an error:
-@example
-hue=PI/2:1
-@end example
-
 @item
 Rotate hue and make the saturation swing between 0
 and 2 over a period of 1 second:
@@ -3716,12 +3734,15 @@ hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
 
 This filter supports the following command:
 @table @option
-@item reinit
+@item s
+@item h
+@item H
 Modify the hue and/or the saturation of the input video.
-The command accepts the same named options and syntax than when calling the
-filter from the command-line.
+The command accepts the same options and syntax of the corresponding
+options.
 
-If a parameter is omitted, it is kept at its current value.
+If the specified expression is not valid, it is kept at its current
+value.
 @end table
 
 @section idet
@@ -4760,10 +4781,14 @@ Suppress a TV station logo, using an image file to determine which
 pixels comprise the logo. It works by filling in the pixels that
 comprise the logo with neighboring pixels.
 
-This filter requires one argument which specifies the filter bitmap
-file, which can be any image format supported by libavformat. The
-width and height of the image file must match those of the video
-stream being processed.
+The filters accept the following options:
+
+@table @option
+@item filename, f
+Set the filter bitmap file, which can be any image format supported by
+libavformat. The width and height of the image file must match those of the
+video stream being processed.
+@end table
 
 Pixels in the provided bitmap image with a value of zero are not
 considered part of the logo, non-zero pixels are considered part of
@@ -5000,18 +5025,10 @@ Keep in mind that the sample aspect ratio set by the @code{setsar}
 filter may be changed by later filters in the filterchain, e.g. if
 another "setsar" or a "setdar" filter is applied.
 
-The @code{setdar} and @code{setsar} filters accept a string in the
-form @var{num}:@var{den} expressing an aspect ratio, or the following
-named options, expressed as a sequence of @var{key}=@var{value} pairs,
-separated by ":".
+The filters accept the following options:
 
 @table @option
-@item max
-Set the maximum integer value to use for expressing numerator and
-denominator when reducing the expressed aspect ratio to a rational.
-Default value is @code{100}.
-
-@item r, ratio, dar, sar:
+@item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
 Set the aspect ratio used by the filter.
 
 The parameter can be a floating point number string, an expression, or
@@ -5020,33 +5037,41 @@ a string of the form @var{num}:@var{den}, where @var{num} and
 the parameter is not specified, it is assumed the value "0".
 In case the form "@var{num}:@var{den}" the @code{:} character should
 be escaped.
+
+@item max
+Set the maximum integer value to use for expressing numerator and
+denominator when reducing the expressed aspect ratio to a rational.
+Default value is @code{100}.
+
 @end table
 
-If the keys are omitted in the named options list, the specifed values
-are assumed to be @var{ratio} and @var{max} in that order.
+@subsection Examples
 
-For example to change the display aspect ratio to 16:9, specify:
+@itemize
+
+@item
+To change the display aspect ratio to 16:9, specify one of the following:
 @example
-setdar='16:9'
-# the above is equivalent to
-setdar=1.77777
+setdar=dar=1.77777
 setdar=dar=16/9
 setdar=dar=1.77777
 @end example
 
+@item
 To change the sample aspect ratio to 10:11, specify:
 @example
-setsar='10:11'
-# the above is equivalent to
-setsar='sar=10/11'
+setsar=sar=10/11
 @end example
 
+@item
 To set a display aspect ratio of 16:9, and specify a maximum integer value of
 1000 in the aspect ratio reduction, use the command:
 @example
-setdar=ratio='16:9':max=1000
+setdar=ratio=16/9:max=1000
 @end example
 
+@end itemize
+
 @anchor{setfield}
 @section setfield
 
@@ -5057,9 +5082,12 @@ output frames. It does not change the input frame, but only sets the
 corresponding property, which affects how the frame is treated by
 following filters (e.g. @code{fieldorder} or @code{yadif}).
 
-This filter accepts a single option @option{mode}, which can be
-specified either by setting @code{mode=VALUE} or setting the value
-alone. Available values are:
+The filter accepts the following options:
+
+@table @option
+
+@item mode
+Available values are:
 
 @table @samp
 @item auto
@@ -5074,6 +5102,7 @@ Mark the frame as top-field-first.
 @item prog
 Mark the frame as progressive.
 @end table
+@end table
 
 @section showinfo
 
@@ -5138,7 +5167,7 @@ expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]"
 
 Blur the input video without impacting the outlines.
 
-A description of the accepted options follows.
+The filter accepts the following options:
 
 @table @option
 @item luma_radius, lr
@@ -5737,6 +5766,12 @@ separated by ":". A description of the accepted options follows.
 @item video_size
 Specify the size (width and height) of the buffered video frames.
 
+@item width
+Input video width.
+
+@item height
+Input video height.
+
 @item pix_fmt
 A string representing the pixel format of the buffered video frames.
 It may be a number corresponding to a pixel format, or a pixel format
@@ -5745,10 +5780,10 @@ name.
 @item time_base
 Specify the timebase assumed by the timestamps of the buffered frames.
 
-@item time_base
+@item frame_rate
 Specify the frame rate expected for the video stream.
 
-@item pixel_aspect
+@item pixel_aspect, sar
 Specify the sample aspect ratio assumed by the video frames.
 
 @item sws_param
@@ -5759,7 +5794,7 @@ input size or format.
 
 For example:
 @example
-buffer=size=320x240:pix_fmt=yuv410p:time_base=1/24:pixel_aspect=1/1
+buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
 @end example
 
 will instruct the source to accept video frames with size 320x240 and
@@ -6651,13 +6686,13 @@ Specify a list of drawtext and hue commands in a file.
          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
 
 # desaturate the image in the interval 15-20
-15.0-20.0 [enter] hue reinit s=0,
+15.0-20.0 [enter] hue 0,
           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
-          [leave] hue reinit s=1,
+          [leave] hue 1,
           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
 
 # apply an exponential saturation fade-out effect, starting from time 25
-25 [enter] hue s=exp(t-25)
+25 [enter] hue s exp(25-t)
 @end example
 
 A filtergraph allowing to read and process the above command list
@@ -7086,8 +7121,12 @@ ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
 
 Convert input audio to a video output, representing the samples waves.
 
-The filter accepts the following named parameters:
+The filter accepts the following options:
+
 @table @option
+@item size, s
+Specify the video size for the output. Default value is "600x240".
+
 @item mode
 Set display mode.
 
@@ -7112,8 +7151,6 @@ is not explicitly specified.
 Set the (approximate) output frame rate. This is done by setting the
 option @var{n}. Default value is "25".
 
-@item size, s
-Specify the video size for the output. Default value is "600x240".
 @end table
 
 @subsection Examples