]> git.sesse.net Git - ffmpeg/blobdiff - doc/filters.texi
Merge commit 'd2a25c4032ce6ceabb0f51b5c1e6ca865395a793'
[ffmpeg] / doc / filters.texi
index 3334787fc708f13a866899a75521d284cb72b438..4c85d71be32b4ce9003cf888b95ecf7e84973c4e 100644 (file)
@@ -301,10 +301,14 @@ Set frequency in Hz.
 @item width_type
 Set method to specify band-width of filter.
 @table @option
-@item @var{h} (Hz)
-@item @var{q} (Q-Factor)
-@item @var{o} (octave)
-@item @var{s} (slope)
+@item h
+Hz
+@item q
+Q-Factor
+@item o
+octave
+@item s
+slope
 @end table
 
 @item width, w
@@ -332,10 +336,14 @@ Set number of poles. Default is 2.
 @item width_type
 Set method to specify band-width of filter.
 @table @option
-@item @var{h} (Hz)
-@item @var{q} (Q-Factor)
-@item @var{o} (octave)
-@item @var{s} (slope)
+@item h
+Hz
+@item q
+Q-Factor
+@item o
+octave
+@item s
+slope
 @end table
 
 @item width, w
@@ -365,10 +373,14 @@ Set number of poles. Default is 2.
 @item width_type
 Set method to specify band-width of filter.
 @table @option
-@item @var{h} (Hz)
-@item @var{q} (Q-Factor)
-@item @var{o} (octave)
-@item @var{s} (slope)
+@item h
+Hz
+@item q
+Q-Factor
+@item o
+octave
+@item s
+slope
 @end table
 
 @item width, w
@@ -402,10 +414,14 @@ The default value is @code{100} Hz.
 @item width_type
 Set method to specify band-width of filter.
 @table @option
-@item @var{h} (Hz)
-@item @var{q} (Q-Factor)
-@item @var{o} (octave)
-@item @var{s} (slope)
+@item h
+Hz
+@item q
+Q-Factor
+@item o
+octave
+@item s
+slope
 @end table
 
 @item width, w
@@ -437,10 +453,14 @@ The default value is @code{3000} Hz.
 @item width_type
 Set method to specify band-width of filter.
 @table @option
-@item @var{h} (Hz)
-@item @var{q} (Q-Factor)
-@item @var{o} (octave)
-@item @var{s} (slope)
+@item h
+Hz
+@item q
+Q-Factor
+@item o
+octave
+@item s
+slope
 @end table
 
 @item width, w
@@ -470,10 +490,14 @@ Constant skirt gain if set to 1. Defaults to 0.
 @item width_type
 Set method to specify band-width of filter.
 @table @option
-@item @var{h} (Hz)
-@item @var{q} (Q-Factor)
-@item @var{o} (octave)
-@item @var{s} (slope)
+@item h
+Hz
+@item q
+Q-Factor
+@item o
+octave
+@item s
+slope
 @end table
 
 @item width, w
@@ -498,10 +522,14 @@ Set the filter's central frequency. Default is @code{3000}.
 @item width_type
 Set method to specify band-width of filter.
 @table @option
-@item @var{h} (Hz)
-@item @var{q} (Q-Factor)
-@item @var{o} (octave)
-@item @var{s} (slope)
+@item h
+Hz
+@item q
+Q-Factor
+@item o
+octave
+@item s
+slope
 @end table
 
 @item width, w
@@ -536,10 +564,14 @@ Set the filter's central frequency in Hz.
 @item width_type
 Set method to specify band-width of filter.
 @table @option
-@item @var{h} (Hz)
-@item @var{q} (Q-Factor)
-@item @var{o} (octave)
-@item @var{s} (slope)
+@item h
+Hz
+@item q
+Q-Factor
+@item o
+octave
+@item s
+slope
 @end table
 
 @item width, w
@@ -587,18 +619,30 @@ the output audio will be silence. Default is 0.
 If set this option is used instead of @var{nb_samples} one.
 
 @item curve
-Set cuve for fade transition.
+Set curve for fade transition.
+
+It accepts the following values:
 @table @option
-@item @var{tri}  (triangular, linear slope (default))
-@item @var{qsin} (quarter of sine wave)
-@item @var{hsin} (half of sine wave)
-@item @var{esin} (exponential sine wave)
-@item @var{log}  (logarithmic)
-@item @var{par}  (inverted parabola)
-@item @var{qua}  (quadratic)
-@item @var{cub}  (cubic)
-@item @var{squ}  (square root)
-@item @var{cbr}  (cubic root)
+@item tri
+select triangular, linear slope (default)
+@item qsin
+select quarter of sine wave
+@item hsin
+select half of sine wave
+@item esin
+select exponential sine wave
+@item log
+select logarithmic
+@item par
+select inverted parabola
+@item qua
+select quadratic
+@item cub
+select cubic
+@item squ
+select square root
+@item cbr
+select cubic root
 @end table
 @end table
 
@@ -3054,6 +3098,117 @@ the histogram. Possible values are @code{none}, @code{weak} or
 @code{strong}. It defaults to @code{none}.
 @end table
 
+@section histogram
+
+Compute and draw a color distribution histogram for the input video.
+
+The computed histogram is a representation of distribution of color components
+in an image.
+
+The filter accepts the following named parameters:
+
+@table @option
+@item mode
+Set histogram mode.
+
+It accepts the following values:
+@table @samp
+@item levels
+standard histogram that display color components distribution in an image.
+Displays color graph for each color component. Shows distribution
+of the Y, U, V, A or G, B, R components, depending on input format,
+in current frame. Bellow each graph is color component scale meter.
+
+@item color
+chroma values in vectorscope, if brighter more such chroma values are
+distributed in an image.
+Displays chroma values (U/V color placement) in two dimensional graph
+(which is called a vectorscope). It can be used to read of the hue and
+saturation of the current frame. At a same time it is a histogram.
+The whiter a pixel in the vectorscope, the more pixels of the input frame
+correspond to that pixel (that is the more pixels have this chroma value).
+The V component is displayed on the horizontal (X) axis, with the leftmost
+side being V = 0 and the rightmost side being V = 255.
+The U component is displayed on the vertical (Y) axis, with the top
+representing U = 0 and the bottom representing U = 255.
+
+The position of a white pixel in the graph corresponds to the chroma value
+of a pixel of the input clip. So the graph can be used to read of the
+hue (color flavor) and the saturation (the dominance of the hue in the color).
+As the hue of a color changes, it moves around the square. At the center of
+the square, the saturation is zero, which means that the corresponding pixel
+has no color. If you increase the amount of a specific color, while leaving
+the other colors unchanged, the saturation increases, and you move towards
+the edge of the square.
+
+@item color2
+chroma values in vectorscope, similar as @code{color} but actual chroma values
+are displayed.
+
+@item waveform
+per row/column color component graph. In row mode graph in the left side represents
+color component value 0 and right side represents value = 255. In column mode top
+side represents color component value = 0 and bottom side represents value = 255.
+@end table
+Default value is @code{levels}.
+
+@item level_height
+Set height of level in @code{levels}. Default value is @code{200}.
+Allowed range is [50, 2048].
+
+@item scale_height
+Set height of color scale in @code{levels}. Default value is @code{12}.
+Allowed range is [0, 40].
+
+@item step
+Set step for @code{waveform} mode. Smaller values are useful to find out how much
+of same luminance values across input rows/columns are distributed.
+Default value is @code{10}. Allowed range is [1, 255].
+
+@item waveform_mode
+Set mode for @code{waveform}. Can be either @code{row}, or @code{column}.
+Default is @code{row}.
+
+@item display_mode
+Set display mode for @code{waveform}.
+It accepts the following values:
+@table @samp
+@item parade
+Display separate waveforms for the color components side by side in
+@code{row} mode or one below other in @code{column} mode.
+
+In this display mode it is easy to spot color casts in the highlights and
+shadows of an image, by comparing the contours of the top and the bottom
+of each waveform. Since whites, grays, and blacks are characterized by
+exactly equal amounts of red, green, and blue, neutral areas of the
+picture should display three waveforms of roughly equal height.
+If not, the correction is easy to make by making adjustments to level the
+three waveforms.
+
+@item overlay
+Presents information that's identical to that in the @code{parade}, except
+that the waveforms representing color components are superimposed directly
+over one another.
+
+This display mode can make it easier to spot the relative differences or
+similarities in overlapping areas of the color components that are supposed
+to be identical, such as neutral whites, grays, or blacks.
+@end table
+Default is @code{parade}.
+@end table
+
+@subsection Examples
+
+@itemize
+
+@item
+Calculate and draw histogram:
+@example
+ffplay -i input -vf histogram
+@end example
+
+@end itemize
+
 @section hqdn3d
 
 High precision/quality 3d denoise filter. This filter aims to reduce
@@ -3197,8 +3352,48 @@ If a parameter is omitted, it is kept at its current value.
 
 @section idet
 
-Interlaceing detect filter. This filter tries to detect if the input is
-interlaced or progressive. Top or bottom field first.
+Detect video interlacing type.
+
+This filter tries to detect if the input is interlaced or progressive,
+top or bottom field first.
+
+@section il
+
+Deinterleave or interleave fields.
+
+This filter allows to process interlaced images fields without
+deinterlacing them. Deinterleaving splits the input frame into 2
+fields (so called half pictures). Odd lines are moved to the top
+half of the output image, even lines to the bottom half.
+You can process (filter) them independently and then re-interleave them.
+
+It accepts a list of options in the form of @var{key}=@var{value} pairs
+separated by ":". A description of the accepted options follows.
+
+@table @option
+@item luma_mode, l
+@item chroma_mode, s
+@item alpha_mode, a
+Available values for @var{luma_mode}, @var{chroma_mode} and
+@var{alpha_mode} are:
+
+@table @samp
+@item none
+Do nothing.
+
+@item deinterleave, d
+Deinterleave fields, placing one above the other.
+
+@item interleave, i
+Interleave fields. Reverse the effect of deinterleaving.
+@end table
+Default value is @code{none}.
+
+@item luma_swap, ls
+@item chroma_swap, cs
+@item alpha_swap, as
+Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
+@end table
 
 @section kerndeint
 
@@ -3348,34 +3543,58 @@ expression
 
 All expressions default to "val".
 
-Some examples follow:
+@subsection Examples
+
+@itemize
+@item
+Negate input video:
 @example
-# negate input video
 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
+@end example
 
-# the above is the same as
+The above is the same as:
+@example
 lutrgb="r=negval:g=negval:b=negval"
 lutyuv="y=negval:u=negval:v=negval"
+@end example
 
-# negate luminance
+@item
+Negate luminance:
+@example
 lutyuv=y=negval
+@end example
 
-# remove chroma components, turns the video into a graytone image
+@item
+Remove chroma components, turns the video into a graytone image:
+@example
 lutyuv="u=128:v=128"
+@end example
 
-# apply a luma burning effect
+@item
+Apply a luma burning effect:
+@example
 lutyuv="y=2*val"
+@end example
 
-# remove green and blue components
+@item
+Remove green and blue components:
+@example
 lutrgb="g=0:b=0"
+@end example
 
-# set a constant alpha channel value on input
+@item
+Set a constant alpha channel value on input:
+@example
 format=rgba,lutrgb=a="maxval-minval/2"
+@end example
 
-# correct luminance gamma by a 0.5 factor
+@item
+Correct luminance gamma by a 0.5 factor:
+@example
 lutyuv=y=gammaval(0.5)
 @end example
+@end itemize
 
 @section mp
 
@@ -3402,18 +3621,15 @@ The list of the currently supported filters follows:
 @item dint
 @item divtc
 @item down3dright
-@item dsize
 @item eq2
 @item eq
 @item fil
 @item fspp
 @item harddup
-@item il
 @item ilpack
 @item ivtc
 @item kerndeint
 @item mcdeint
-@item noise
 @item ow
 @item perspective
 @item phase
@@ -3422,7 +3638,6 @@ The list of the currently supported filters follows:
 @item qp
 @item sab
 @item softpulldown
-@item softskip
 @item spp
 @item telecine
 @item tinterlace
@@ -3441,12 +3656,6 @@ Adjust gamma, brightness, contrast:
 @example
 mp=eq2=1.0:2:0.5
 @end example
-
-@item
-Add temporal noise to input video:
-@example
-mp=noise=20t
-@end example
 @end itemize
 
 See also mplayer(1), @url{http://www.mplayerhq.hu/}.
@@ -3476,6 +3685,57 @@ noformat=yuv420p,vflip
 noformat=yuv420p:yuv444p:yuv410p
 @end example
 
+@section noise
+
+Add noise on video input frame.
+
+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.
+
+@table @option
+@item all_seed
+@item c0_seed
+@item c1_seed
+@item c2_seed
+@item c3_seed
+Set noise seed for specific pixel component or all pixel components in case
+of @var{all_seed}. Default value is @code{123457}.
+
+@item all_strength, as
+@item c0_strength, c0s
+@item c1_strength, c1s
+@item c2_strength, c2s
+@item c3_strength, c3s
+Set noise strength for specific pixel component or all pixel components in case
+@var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
+
+@item all_flags, af
+@item c0_flags, c0f
+@item c1_flags, c1f
+@item c2_flags, c2f
+@item c3_flags, c3f
+Set pixel component flags or set flags for all components if @var{all_flags}.
+Available values for component flags are:
+@table @samp
+@item a
+averaged temporal noise (smoother)
+@item p
+mix random noise with a (semi)regular pattern
+@item q
+higher quality (slightly better looking, slightly slower)
+@item t
+temporal noise (noise pattern changes between frames)
+@item u
+uniform noise (gaussian otherwise)
+@end table
+@end table
+
+Some examples follow:
+@example
+Add temporal and uniform noise to input video:
+noise=alls=20:allf=t+u
+@end example
+
 @section null
 
 Pass the video source unchanged to the output.
@@ -3689,14 +3949,50 @@ testsrc=s=100x100, split=4 [in0][in1][in2][in3];
 
 @section pad
 
-Add paddings to the input image, and places the original input at the
+Add paddings to the input image, and place the original input at the
 given coordinates @var{x}, @var{y}.
 
-It accepts the following parameters:
+The filter accepts parameters as a list of @var{key}=@var{value} pairs,
+separated by ":".
+
+If the key of the first options is omitted, the arguments are
+interpreted according to the syntax
 @var{width}:@var{height}:@var{x}:@var{y}:@var{color}.
 
-The parameters @var{width}, @var{height}, @var{x}, and @var{y} are
-expressions containing the following constants:
+A description of the accepted options follows.
+
+@table @option
+@item width, w
+@item height, h
+Specify an expression for the size of the output image with the
+paddings added. If the value for @var{width} or @var{height} is 0, the
+corresponding input size is used for the output.
+
+The @var{width} expression can reference the value set by the
+@var{height} expression, and vice versa.
+
+The default value of @var{width} and @var{height} is 0.
+
+@item x
+@item y
+Specify an expression for the offsets where to place the input image
+in the padded area with respect to the top/left border of the output
+image.
+
+The @var{x} expression can reference the value set by the @var{y}
+expression, and vice versa.
+
+The default value of @var{x} and @var{y} is 0.
+
+@item color
+Specify the color of the padded area, it can be the name of a color
+(case insensitive match) or a 0xRRGGBB[AA] sequence.
+
+The default value of @var{color} is "black".
+@end table
+
+The value for the @var{width}, @var{height}, @var{x}, and @var{y}
+options are expressions containing the following constants:
 
 @table @option
 @item in_w, in_h
@@ -3730,39 +4026,6 @@ horizontal and vertical chroma subsample values. For example for the
 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
 @end table
 
-Follows the description of the accepted parameters.
-
-@table @option
-@item width, height
-
-Specify the size of the output image with the paddings added. If the
-value for @var{width} or @var{height} is 0, the corresponding input size
-is used for the output.
-
-The @var{width} expression can reference the value set by the
-@var{height} expression, and vice versa.
-
-The default value of @var{width} and @var{height} is 0.
-
-@item x, y
-
-Specify the offsets where to place the input image in the padded area
-with respect to the top/left border of the output image.
-
-The @var{x} expression can reference the value set by the @var{y}
-expression, and vice versa.
-
-The default value of @var{x} and @var{y} is 0.
-
-@item color
-
-Specify the color of the padded area, it can be the name of a color
-(case insensitive match) or a 0xRRGGBB[AA] sequence.
-
-The default value of @var{color} is "black".
-
-@end table
-
 @subsection Examples
 
 @itemize
@@ -3774,6 +4037,11 @@ column 0, row 40:
 pad=640:480:0:40:violet
 @end example
 
+The example above is equivalent to the following command:
+@example
+pad=width=640:height=480:x=0:y=40:color=violet
+@end example
+
 @item
 Pad the input to get an output with dimensions increased by 3/2,
 and put the input video at the center of the padded area:
@@ -4513,7 +4781,7 @@ Alternatively, the options can be specified as a flat string:
 
 @var{layout}[:@var{nb_frames}[:@var{margin}[:@var{padding}]]]
 
-For example, produce 8×8 PNG tiles of all keyframes (@option{-skip_frame
+For example, produce 8x8 PNG tiles of all keyframes (@option{-skip_frame
 nokey}) in a movie:
 @example
 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
@@ -4690,51 +4958,52 @@ transpose=1:portrait
 
 Sharpen or blur the input video.
 
-It accepts the following parameters:
+This filter accepts parameters as a list of @var{key}=@var{value} pairs,
+separated by ":".
+
+If the key of the first options is omitted, the arguments are
+interpreted according to the syntax:
 @var{luma_msize_x}:@var{luma_msize_y}:@var{luma_amount}:@var{chroma_msize_x}:@var{chroma_msize_y}:@var{chroma_amount}
 
-Negative values for the amount will blur the input video, while positive
-values will sharpen. All parameters are optional and default to the
-equivalent of the string '5:5:1.0:5:5:0.0'.
+A description of the accepted options follows.
 
 @table @option
-
-@item luma_msize_x
-Set the luma matrix horizontal size. It can be an integer between 3
-and 13, default value is 5.
-
-@item luma_msize_y
-Set the luma matrix vertical size. It can be an integer between 3
-and 13, default value is 5.
-
-@item luma_amount
-Set the luma effect strength. It can be a float number between -2.0
-and 5.0, default value is 1.0.
-
-@item chroma_msize_x
-Set the chroma matrix horizontal size. It can be an integer between 3
-and 13, default value is 5.
-
-@item chroma_msize_y
-Set the chroma matrix vertical size. It can be an integer between 3
-and 13, default value is 5.
-
-@item chroma_amount
-Set the chroma effect strength. It can be a float number between -2.0
-and 5.0, default value is 0.0.
-
+@item luma_msize_x, lx
+@item chroma_msize_x, cx
+Set the luma/chroma matrix horizontal size. It can be an integer
+between 3 and 63, default value is 5.
+
+@item luma_msize_y, ly
+@item chroma_msize_y, cy
+Set the luma/chroma matrix vertical size. It can be an integer between
+3 and 63, default value is 5.
+
+@item luma_amount, la
+@item chroma_amount, ca
+Set the luma/chroma effect strength. It can be a float number,
+reasonable values lay between -1.5 and 1.5.
+
+Negative values will blur the input video, while positive values will
+sharpen it, a value of zero will disable the effect.
+
+Default value is 1.0 for @option{luma_amount}, 0.0 for
+@option{chroma_amount}.
 @end table
 
+Some examples follow:
+@itemize
+@item
+Apply strong luma sharpen effect:
 @example
-# Strong luma sharpen effect parameters
 unsharp=7:7:2.5
+@end example
 
-# Strong blur of both luma and chroma parameters
+@item
+Apply strong blur of both luma and chroma parameters:
+@example
 unsharp=7:7:-2:7:7:-2
-
-# Use the default values with @command{ffmpeg}
-ffmpeg -i in.avi -vf "unsharp" out.mp4
 @end example
+@end itemize
 
 @section vflip
 
@@ -5920,7 +6189,7 @@ Activate unsafe mode: do not fail if segments have a different format.
 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
 @var{a} audio outputs.
 
-There are @var{n}×(@var{v}+@var{a}) inputs: first the inputs for the first
+There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
 segment, in the same order as the outputs, then the inputs for the second
 segment, etc.
 
@@ -5975,10 +6244,60 @@ spectrum.
 The filter accepts the following named parameters:
 @table @option
 @item size, s
-Specify the video size for the output. Default value is @code{640x480}.
+Specify the video size for the output. Default value is @code{640x512}.
+
 @item slide
 Specify if the spectrum should slide along the window. Default value is
 @code{0}.
+
+@item mode
+Specify display mode.
+
+It accepts the following values:
+@table @samp
+@item combined
+all channels are displayed in the same row
+@item separate
+all channels are displayed in separate rows
+@end table
+
+Default value is @samp{combined}.
+
+@item color
+Specify display color mode.
+
+It accepts the following values:
+@table @samp
+@item channel
+each channel is displayed in a separate color
+@item intensity
+each channel is is displayed using the same color scheme
+@end table
+
+Default value is @samp{channel}.
+
+@item scale
+Specify scale used for calculating intensity color values.
+
+It accepts the following values:
+@table @samp
+@item lin
+linear
+@item sqrt
+square root, default
+@item cbrt
+cubic root
+@item log
+logarithmic
+@end table
+
+Default value is @samp{sqrt}.
+
+@item saturation
+Set saturation modifier for displayed colors. Negative values provide
+alternative color scheme. @code{0} is no saturation at all.
+Saturation must be in [-10.0, 10.0] range.
+Default value is @code{1}.
 @end table
 
 The usage is very similar to the showwaves filter; see the examples in that