avfilter: add high-order parametric multiband equalizer filter

Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
Paul B Mahol
2015-12-20 09:50:35 +01:00
parent 80508178e1
commit 56c7d2b4da
7 changed files with 851 additions and 2 deletions

View File

@@ -992,6 +992,100 @@ stream ends. The default value is 2 seconds.
@end table
@section anequalizer
High-order parametric multiband equalizer for each channel.
It accepts the following parameters:
@table @option
@item params
This option string is in format:
"c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
Each equalizer band is separated by '|'.
@table @option
@item chn
Set channel number to which equalization will be applied.
If input doesn't have that channel the entry is ignored.
@item cf
Set central frequency for band.
If input doesn't have that frequency the entry is ignored.
@item w
Set band width in hertz.
@item g
Set band gain in dB.
@item f
Set filter type for band, optional, can be:
@table @samp
@item 0
Butterworth, this is default.
@item 1
Chebyshev type 1.
@item 2
Chebyshev type 2.
@end table
@end table
@item curves
With this option activated frequency response of anequalizer is displayed
in video stream.
@item size
Set video stream size. Only useful if curves option is activated.
@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
neighbour bands which are too close to each other and thus produce higher gain
when both are activated.
@item fscale
Set frequency scale used to draw frequency response in video output.
Can be linear or logarithmic. Default is logarithmic.
@item colors
Set color for each channel curve which is going to be displayed in video stream.
This is list of color names separated by space or by '|'.
Unrecognised or missing colors will be replaced by white color.
@end table
@subsection Examples
@itemize
@item
Lower gain by 10 of central frequency 200Hz and width 100 Hz
for first 2 channels using Chebyshev type 1 filter:
@example
anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
@end example
@end itemize
@subsection Commands
This filter supports the following commands:
@table @option
@item change
Alter existing filter parameters.
Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
@var{fN} is existing filter number, starting from 0, if no such filter is available
error is returned.
@var{freq} set new frequency parameter.
@var{width} set new width parameter in herz.
@var{gain} set new gain parameter in dB.
Full filter invocation with asendcmd may look like this:
asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
@end table
@section anull
Pass the audio source unchanged to the output.