is used to audibly reduce number of bits an audio signal is sampled
with. This doesn't change the bit depth at all, it just produces the
effect. Material reduced in bit depth sounds more harsh and "digital".
-This filter is able to even round to continous values instead of discrete
+This filter is able to even round to continuous values instead of discrete
bit depths.
Additionally it has a D/C offset which results in different crushing of
the lower and the upper half of the signal.
Set bit reduction.
@item mix
-Set mixing ammount.
+Set mixing amount.
@item mode
Can be linear: @code{lin} or logarithmic: @code{log}.
processing reduces disturbing noise between useful signals.
Gating is done by detecting the volume below a chosen level @var{threshold}
-and divide it by the factor set with @var{ratio}. The bottom of the noise
+and dividing it by the factor set with @var{ratio}. The bottom of the noise
floor is set via @var{range}. Because an exact manipulation of the signal
would cause distortion of the waveform the reduction can be levelled over
time. This is done by setting @var{attack} and @var{release}.
@var{attack} determines how long the signal has to fall below the threshold
before any reduction will occur and @var{release} sets the time the signal
-has to raise above the threshold to reduce the reduction again.
+has to rise above the threshold to reduce the reduction again.
Shorter signals than the chosen attack time will be left untouched.
@table @option
Default is 0.125. Allowed range is from 0 to 1.
@item ratio
-Set a ratio about which the signal is reduced.
+Set a ratio by which the signal is reduced.
Default is 2. Allowed range is from 1 to 9000.
@item attack
@item detection
Choose if exact signal should be taken for detection or an RMS like one.
-Default is rms. Can be peak or rms.
+Default is @code{rms}. Can be @code{peak} or @code{rms}.
@item link
Choose if the average level between all channels or the louder channel affects
the reduction.
-Default is average. Can be average or maximum.
+Default is @code{average}. Can be @code{average} or @code{maximum}.
@end table
@section alimiter
-The limiter prevents input signal from raising over a desired threshold.
+The limiter prevents an input signal from rising over a desired threshold.
This limiter uses lookahead technology to prevent your signal from distorting.
-It means that there is a small delay after signal is processed. Keep in mind
+It means that there is a small delay after the signal is processed. Keep in mind
that the delay it produces is the attack time you set.
The filter accepts the following options:
@item mgain
Set max gain that will be displayed. Only useful if curves option is activated.
-Setting this to reasonable value allows to display gain which is derived from
+Setting this to a reasonable value makes it possible to display gain which is derived from
neighbour bands which are too close to each other and thus produce higher gain
when both are activated.
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.
+signals its end.
The filter accepts the following options:
@table @option
@item gain_interpolate(f)
interpolate gain on frequency f based on gain_entry
+@item cubic_interpolate(f)
+same as gain_interpolate, but smoother
@end table
This option is also available as command. Default is @code{gain_interpolate(f)}.
minimum 4-terms discontinuous nuttall (blackman-nuttall) window
@item bharris
blackman-harris window
+@item tukey
+tukey window
@end table
@item fixed
Enable multichannels evaluation on gain. Default is disabled.
@item zero_phase
-Enable zero phase mode by substracting timestamp to compensate delay.
+Enable zero phase mode by subtracting timestamp to compensate delay.
+Default is disabled.
+
+@item scale
+Set scale used by gain. Acceptable values are:
+@table @option
+@item linlin
+linear frequency, linear gain
+@item linlog
+linear frequency, logarithmic (in dB) gain (default)
+@item loglin
+logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
+@item loglog
+logarithmic frequency, logarithmic gain
+@end table
+
+@item dumpfile
+Set file for dumping, suitable for gnuplot.
+
+@item dumpscale
+Set scale for dumpfile. Acceptable values are same with scale option.
+Default is linlog.
+
+@item fft2
+Enable 2-channel convolution using complex FFT. This improves speed significantly.
Default is disabled.
@end table
Support for both single pass (livestreams, files) and double pass (files) modes.
This algorithm can target IL, LRA, and maximum true peak.
-To enable compilation of this filter you need to configure FFmpeg with
-@code{--enable-libebur128}.
-
The filter accepts the following options:
@table @option
or amplitude ratio. Default value is @code{0}.
@item leave_silence
-This indicate that @var{stop_duration} length of audio should be left intact
+This indicates that @var{stop_duration} length of audio should be left intact
at the beginning of each period of silence.
For example, if you want to remove long pauses between words but do not want
to remove the pauses completely. Default value is @code{0}.
The @code{blend} filter takes two input streams and outputs one
stream, the first input is the "top" layer and second input is
-"bottom" layer. Output terminates when shortest input terminates.
+"bottom" layer. By default, the output terminates when the longest input terminates.
The @code{tblend} (time blend) filter takes two consecutive frames
from one single stream, and outputs the result obtained by blending
@item axis
Draw rows and columns numbers on left and top of video.
+
+@item opacity
+Set background opacity.
@end table
@section dctdnoiz
@item alpha
Draw the text applying alpha blending. The value can
-be either a number between 0.0 and 1.0
-The expression accepts the same variables @var{x, y} do.
+be a number between 0.0 and 1.0.
+The expression accepts the same variables @var{x, y} as well.
The default value is 1.
-Please see fontcolor_expr
+Please see @var{fontcolor_expr}.
@item fontsize
The font size to be used for drawing text.
The backslash character @samp{\}, followed by any character, always expands to
the second character.
-Sequence of the form @code{%@{...@}} are expanded. The text between the
+Sequences of the form @code{%@{...@}} are expanded. The text between the
braces is a function name, possibly followed by arguments separated by ':'.
If the arguments contain special characters or delimiters (':' or '@}'),
they should be escaped.
@section hysteresis
Grow first stream into second stream by connecting components.
-This allows to build more robust edge masks.
+This makes it possible to build more robust edge masks.
This filter accepts the following options:
Detect video interlacing type.
-This filter tries to detect if the input frames as interlaced, progressive,
-top or bottom field first. It will also try and detect fields that are
+This filter tries to detect if the input frames are interlaced, progressive,
+top or bottom field first. It will also try to detect fields that are
repeated between adjacent frames (a sign of telecine).
Single frame detection considers only immediately adjacent frames when classifying each frame.
Threshold for repeated field detection.
@item half_life
Number of frames after which a given frame's contribution to the
-statistics is halved (i.e., it contributes only 0.5 to it's
+statistics is halved (i.e., it contributes only 0.5 to its
classification). The default of 0 means that all frames seen are given
full weight of 1.0 forever.
@item analyze_interlaced_flag
@item y
The second input value for the pixel component.
+
+@item bdx
+The first input video bit depth.
+
+@item bdy
+The second input video bit depth.
@end table
All expressions default to "x".
+@subsection Examples
+
+@itemize
+@item
+Highlight differences between two RGB video streams:
+@example
+lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1)'
+@end example
+
+@item
+Highlight differences between two YUV video streams:
+@example
+lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1)'
+@end example
+@end itemize
+
@section maskedclamp
Clamp the first input stream with the second input and third input stream.
@item none
Disable scene change detection.
@item fdiff
-Frame difference. Corresponding pixel values are compared and if it statisfies @var{scd_threshold} scene change is detected.
+Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
@end table
Default method is @samp{fdiff}.
It accepts an integer in input; if non-zero it negates the
alpha component (if available). The default value in input is 0.
+@section nlmeans
+
+Denoise frames using Non-Local Means algorithm.
+
+Each pixel is adjusted by looking for other pixels with similar contexts. This
+context similarity is defined by comparing their surrounding patches of size
+@option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
+around the pixel.
+
+Note that the research area defines centers for patches, which means some
+patches will be made of pixels outside that research area.
+
+The filter accepts the following options.
+
+@table @option
+@item s
+Set denoising strength.
+
+@item p
+Set patch size.
+
+@item pc
+Same as @option{p} but for chroma planes.
+
+The default value is @var{0} and means automatic.
+
+@item r
+Set research size.
+
+@item rc
+Same as @option{r} but for chroma planes.
+
+The default value is @var{0} and means automatic.
+@end table
+
@section nnedi
Deinterlace video using neural network edge directed interpolation.
Compute histograms only for the part that differs from previous frame. This
might be relevant to give more importance to the moving part of your input if
the background is static.
+@item single
+Compute new histogram for each frame.
@end table
Default value is @var{full}.
@end table
Default is @var{none}.
+
+@item new
+Take new palette for each output frame.
@end table
@subsection Examples
@end table
@end table
+@section prewitt
+Apply prewitt operator to input video stream.
+
+The filter accepts the following option:
+
+@table @option
+@item planes
+Set which planes will be processed, unprocessed planes will be copied.
+By default value 0xf, all planes will be processed.
+
+@item scale
+Set value which will be multiplied with filtered result.
+
+@item delta
+Set value which will be added to filtered result.
+@end table
+
@section psnr
Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
The first frame has the index 0. The default is to keep the input unchanged.
+@subsection Examples
+
+@itemize
+@item
Swap second and third frame of every three frames of the input:
@example
ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
@end example
+@item
+Swap 10th and 1st frame of every ten frames of the input:
+@example
+ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
+@end example
+@end itemize
+
@section shuffleplanes
Reorder and/or duplicate video planes.
The first plane has the index 0. The default is to keep the input unchanged.
+@subsection Examples
+
+@itemize
+@item
Swap the second and third planes of the input:
@example
ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
@end example
+@end itemize
@anchor{signalstats}
@section signalstats
@end example
@end itemize
+@section sobel
+Apply sobel operator to input video stream.
+
+The filter accepts the following option:
+
+@table @option
+@item planes
+Set which planes will be processed, unprocessed planes will be copied.
+By default value 0xf, all planes will be processed.
+
+@item scale
+Set value which will be multiplied with filtered result.
+
+@item delta
+Set value which will be added to filtered result.
+@end table
+
@anchor{spp}
@section spp
@table @option
@item luma_msize_x, lx
Set the luma matrix horizontal size. It must be an odd integer between
-3 and 63. The default value is 5.
+3 and 23. The default value is 5.
@item luma_msize_y, ly
Set the luma matrix vertical size. It must be an odd integer between 3
-and 63. The default value is 5.
+and 23. The default value is 5.
@item luma_amount, la
Set the luma effect strength. It must be a floating point number, reasonable
@item chroma_msize_x, cx
Set the chroma matrix horizontal size. It must be an odd integer
-between 3 and 63. The default value is 5.
+between 3 and 23. The default value is 5.
@item chroma_msize_y, cy
Set the chroma matrix vertical size. It must be an odd integer
-between 3 and 63. The default value is 5.
+between 3 and 23. The default value is 5.
@item chroma_amount, ca
Set the chroma effect strength. It must be a floating point number, reasonable
Create a pattern generated by an elementary cellular automaton.
The initial state of the cellular automaton can be defined through the
-@option{filename}, and @option{pattern} options. If such options are
+@option{filename} and @option{pattern} options. If such options are
not specified an initial state is created randomly.
At each new frame a new row in the video is filled with the result of
These filters read frames from several inputs and send the oldest
queued frame to the output.
-Input streams must have a well defined, monotonically increasing frame
+Input streams must have well defined, monotonically increasing frame
timestamp values.
In order to submit one frame to output, these filters need to enqueue
input is not yet terminated and will not receive incoming frames.
For example consider the case when one input is a @code{select} filter
-which always drop input frames. The @code{interleave} filter will keep
+which always drops input frames. The @code{interleave} filter will keep
reading from that input, but it will never be able to send new frames
-to output until the input will send an end-of-stream signal.
+to output until the input sends an end-of-stream signal.
Also, depending on inputs synchronization, the filters will drop
frames in case one input receives more frames than the other ones, and
@item delete
If @code{value} is set, delete only keys that have such value.
-Otherwise, delete key.
+Otherwise, delete key. If @code{key} is not set, delete all metadata values in
+the frame.
@item print
Print key and its value if metadata was found. If @code{key} is not set print all
@end table
@item key
-Set key used with all modes. Must be set for all modes except @code{print}.
+Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
@item value
Set metadata value which will be used. This option is mandatory for
Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
@code{[1, 7]}.
+@item bar_t
+Specify the bargraph transparency level. Lower value makes the bargraph sharper.
+Default value is @code{1}. Acceptable range is @code{[0, 1]}.
+
@item timeclamp, tc
Specify the transform timeclamp. At low frequency, there is trade-off between
accuracy in time domain and frequency domain. If timeclamp is lower,
implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
option instead.
+@item font
+Specify fontconfig pattern. This has lower priority than @var{fontfile}.
+The : in the pattern may be replaced by | to avoid unnecessary escaping.
+
@item fontcolor
Specify font color expression. This is arithmetic expression that should return
integer value 0xRRGGBB. It can contain variables:
the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
Default value is @code{1}.
+@item csp
+Set colorspace. The accepted values are:
+@table @samp
+@item unspecified
+Unspecified (default)
+
+@item bt709
+BT.709
+
+@item fcc
+FCC
+
+@item bt470bg
+BT.470BG or BT.601-6 625
+
+@item smpte170m
+SMPTE-170M or BT.601-6 525
+
+@item smpte240m
+SMPTE-240M
+
+@item bt2020ncl
+BT.2020 with non-constant luminance
+
+@end table
+
+@item cscheme
+Set spectrogram color scheme. This is list of floating point values with format
+@code{left_r|left_g|left_b|right_r|right_g|right_b}.
+The default is @code{1|0.5|0|0|0.5|1}.
+
@end table
@subsection Examples
fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
@end example
+@item
+Custom font using fontconfig:
+@example
+font='Courier New,Monospace,mono|bold'
+@end example
+
@item
Custom frequency range with custom axis using image file:
@example
@end example
@end itemize
+@section sidedata, asidedata
+
+Delete frame side data, or select frames based on it.
+
+This filter accepts the following options:
+
+@table @option
+@item mode
+Set mode of operation of the filter.
+
+Can be one of the following:
+
+@table @samp
+@item select
+Select every frame with side data of @code{type}.
+
+@item delete
+Delete side data of @code{type}. If @code{type} is not set, delete all side
+data in the frame.
+
+@end table
+
+@item type
+Set side data type used with all modes. Must be set for @code{select} mode. For
+the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
+in @file{libavutil/frame.h}. For example, to choose
+@code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
+
+@end table
+
@section spectrumsynth
Sythesize audio from 2 input video spectrums, first input stream represents
The filter will transform from frequency domain as displayed in videos back
to time domain as presented in audio output.
-This filter is primarly created for reversing processed @ref{showspectrum}
+This filter is primarily created for reversing processed @ref{showspectrum}
filter outputs, but can synthesize sound from other spectrograms too.
But in such case results are going to be poor if the phase data is not
available, because in such cases phase data need to be recreated, usually