avfilter/af_asoftclip: add erf soft clip type
[ffmpeg.git] / doc / filters.texi
1 @chapter Filtering Introduction
2 @c man begin FILTERING INTRODUCTION
3
4 Filtering in FFmpeg is enabled through the libavfilter library.
5
6 In libavfilter, a filter can have multiple inputs and multiple
7 outputs.
8 To illustrate the sorts of things that are possible, we consider the
9 following filtergraph.
10
11 @verbatim
12                 [main]
13 input --> split ---------------------> overlay --> output
14             |                             ^
15             |[tmp]                  [flip]|
16             +-----> crop --> vflip -------+
17 @end verbatim
18
19 This filtergraph splits the input stream in two streams, then sends one
20 stream through the crop filter and the vflip filter, before merging it
21 back with the other stream by overlaying it on top. You can use the
22 following command to achieve this:
23
24 @example
25 ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
26 @end example
27
28 The result will be that the top half of the video is mirrored
29 onto the bottom half of the output video.
30
31 Filters in the same linear chain are separated by commas, and distinct
32 linear chains of filters are separated by semicolons. In our example,
33 @var{crop,vflip} are in one linear chain, @var{split} and
34 @var{overlay} are separately in another. The points where the linear
35 chains join are labelled by names enclosed in square brackets. In the
36 example, the split filter generates two outputs that are associated to
37 the labels @var{[main]} and @var{[tmp]}.
38
39 The stream sent to the second output of @var{split}, labelled as
40 @var{[tmp]}, is processed through the @var{crop} filter, which crops
41 away the lower half part of the video, and then vertically flipped. The
42 @var{overlay} filter takes in input the first unchanged output of the
43 split filter (which was labelled as @var{[main]}), and overlay on its
44 lower half the output generated by the @var{crop,vflip} filterchain.
45
46 Some filters take in input a list of parameters: they are specified
47 after the filter name and an equal sign, and are separated from each other
48 by a colon.
49
50 There exist so-called @var{source filters} that do not have an
51 audio/video input, and @var{sink filters} that will not have audio/video
52 output.
53
54 @c man end FILTERING INTRODUCTION
55
56 @chapter graph2dot
57 @c man begin GRAPH2DOT
58
59 The @file{graph2dot} program included in the FFmpeg @file{tools}
60 directory can be used to parse a filtergraph description and issue a
61 corresponding textual representation in the dot language.
62
63 Invoke the command:
64 @example
65 graph2dot -h
66 @end example
67
68 to see how to use @file{graph2dot}.
69
70 You can then pass the dot description to the @file{dot} program (from
71 the graphviz suite of programs) and obtain a graphical representation
72 of the filtergraph.
73
74 For example the sequence of commands:
75 @example
76 echo @var{GRAPH_DESCRIPTION} | \
77 tools/graph2dot -o graph.tmp && \
78 dot -Tpng graph.tmp -o graph.png && \
79 display graph.png
80 @end example
81
82 can be used to create and display an image representing the graph
83 described by the @var{GRAPH_DESCRIPTION} string. Note that this string must be
84 a complete self-contained graph, with its inputs and outputs explicitly defined.
85 For example if your command line is of the form:
86 @example
87 ffmpeg -i infile -vf scale=640:360 outfile
88 @end example
89 your @var{GRAPH_DESCRIPTION} string will need to be of the form:
90 @example
91 nullsrc,scale=640:360,nullsink
92 @end example
93 you may also need to set the @var{nullsrc} parameters and add a @var{format}
94 filter in order to simulate a specific input file.
95
96 @c man end GRAPH2DOT
97
98 @chapter Filtergraph description
99 @c man begin FILTERGRAPH DESCRIPTION
100
101 A filtergraph is a directed graph of connected filters. It can contain
102 cycles, and there can be multiple links between a pair of
103 filters. Each link has one input pad on one side connecting it to one
104 filter from which it takes its input, and one output pad on the other
105 side connecting it to one filter accepting its output.
106
107 Each filter in a filtergraph is an instance of a filter class
108 registered in the application, which defines the features and the
109 number of input and output pads of the filter.
110
111 A filter with no input pads is called a "source", and a filter with no
112 output pads is called a "sink".
113
114 @anchor{Filtergraph syntax}
115 @section Filtergraph syntax
116
117 A filtergraph has a textual representation, which is recognized by the
118 @option{-filter}/@option{-vf}/@option{-af} and
119 @option{-filter_complex} options in @command{ffmpeg} and
120 @option{-vf}/@option{-af} in @command{ffplay}, and by the
121 @code{avfilter_graph_parse_ptr()} function defined in
122 @file{libavfilter/avfilter.h}.
123
124 A filterchain consists of a sequence of connected filters, each one
125 connected to the previous one in the sequence. A filterchain is
126 represented by a list of ","-separated filter descriptions.
127
128 A filtergraph consists of a sequence of filterchains. A sequence of
129 filterchains is represented by a list of ";"-separated filterchain
130 descriptions.
131
132 A filter is represented by a string of the form:
133 [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}@@@var{id}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
134
135 @var{filter_name} is the name of the filter class of which the
136 described filter is an instance of, and has to be the name of one of
137 the filter classes registered in the program optionally followed by "@@@var{id}".
138 The name of the filter class is optionally followed by a string
139 "=@var{arguments}".
140
141 @var{arguments} is a string which contains the parameters used to
142 initialize the filter instance. It may have one of two forms:
143 @itemize
144
145 @item
146 A ':'-separated list of @var{key=value} pairs.
147
148 @item
149 A ':'-separated list of @var{value}. In this case, the keys are assumed to be
150 the option names in the order they are declared. E.g. the @code{fade} filter
151 declares three options in this order -- @option{type}, @option{start_frame} and
152 @option{nb_frames}. Then the parameter list @var{in:0:30} means that the value
153 @var{in} is assigned to the option @option{type}, @var{0} to
154 @option{start_frame} and @var{30} to @option{nb_frames}.
155
156 @item
157 A ':'-separated list of mixed direct @var{value} and long @var{key=value}
158 pairs. The direct @var{value} must precede the @var{key=value} pairs, and
159 follow the same constraints order of the previous point. The following
160 @var{key=value} pairs can be set in any preferred order.
161
162 @end itemize
163
164 If the option value itself is a list of items (e.g. the @code{format} filter
165 takes a list of pixel formats), the items in the list are usually separated by
166 @samp{|}.
167
168 The list of arguments can be quoted using the character @samp{'} as initial
169 and ending mark, and the character @samp{\} for escaping the characters
170 within the quoted text; otherwise the argument string is considered
171 terminated when the next special character (belonging to the set
172 @samp{[]=;,}) is encountered.
173
174 The name and arguments of the filter are optionally preceded and
175 followed by a list of link labels.
176 A link label allows one to name a link and associate it to a filter output
177 or input pad. The preceding labels @var{in_link_1}
178 ... @var{in_link_N}, are associated to the filter input pads,
179 the following labels @var{out_link_1} ... @var{out_link_M}, are
180 associated to the output pads.
181
182 When two link labels with the same name are found in the
183 filtergraph, a link between the corresponding input and output pad is
184 created.
185
186 If an output pad is not labelled, it is linked by default to the first
187 unlabelled input pad of the next filter in the filterchain.
188 For example in the filterchain
189 @example
190 nullsrc, split[L1], [L2]overlay, nullsink
191 @end example
192 the split filter instance has two output pads, and the overlay filter
193 instance two input pads. The first output pad of split is labelled
194 "L1", the first input pad of overlay is labelled "L2", and the second
195 output pad of split is linked to the second input pad of overlay,
196 which are both unlabelled.
197
198 In a filter description, if the input label of the first filter is not
199 specified, "in" is assumed; if the output label of the last filter is not
200 specified, "out" is assumed.
201
202 In a complete filterchain all the unlabelled filter input and output
203 pads must be connected. A filtergraph is considered valid if all the
204 filter input and output pads of all the filterchains are connected.
205
206 Libavfilter will automatically insert @ref{scale} filters where format
207 conversion is required. It is possible to specify swscale flags
208 for those automatically inserted scalers by prepending
209 @code{sws_flags=@var{flags};}
210 to the filtergraph description.
211
212 Here is a BNF description of the filtergraph syntax:
213 @example
214 @var{NAME}             ::= sequence of alphanumeric characters and '_'
215 @var{FILTER_NAME}      ::= @var{NAME}["@@"@var{NAME}]
216 @var{LINKLABEL}        ::= "[" @var{NAME} "]"
217 @var{LINKLABELS}       ::= @var{LINKLABEL} [@var{LINKLABELS}]
218 @var{FILTER_ARGUMENTS} ::= sequence of chars (possibly quoted)
219 @var{FILTER}           ::= [@var{LINKLABELS}] @var{FILTER_NAME} ["=" @var{FILTER_ARGUMENTS}] [@var{LINKLABELS}]
220 @var{FILTERCHAIN}      ::= @var{FILTER} [,@var{FILTERCHAIN}]
221 @var{FILTERGRAPH}      ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
222 @end example
223
224 @anchor{filtergraph escaping}
225 @section Notes on filtergraph escaping
226
227 Filtergraph description composition entails several levels of
228 escaping. See @ref{quoting_and_escaping,,the "Quoting and escaping"
229 section in the ffmpeg-utils(1) manual,ffmpeg-utils} for more
230 information about the employed escaping procedure.
231
232 A first level escaping affects the content of each filter option
233 value, which may contain the special character @code{:} used to
234 separate values, or one of the escaping characters @code{\'}.
235
236 A second level escaping affects the whole filter description, which
237 may contain the escaping characters @code{\'} or the special
238 characters @code{[],;} used by the filtergraph description.
239
240 Finally, when you specify a filtergraph on a shell commandline, you
241 need to perform a third level escaping for the shell special
242 characters contained within it.
243
244 For example, consider the following string to be embedded in
245 the @ref{drawtext} filter description @option{text} value:
246 @example
247 this is a 'string': may contain one, or more, special characters
248 @end example
249
250 This string contains the @code{'} special escaping character, and the
251 @code{:} special character, so it needs to be escaped in this way:
252 @example
253 text=this is a \'string\'\: may contain one, or more, special characters
254 @end example
255
256 A second level of escaping is required when embedding the filter
257 description in a filtergraph description, in order to escape all the
258 filtergraph special characters. Thus the example above becomes:
259 @example
260 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
261 @end example
262 (note that in addition to the @code{\'} escaping special characters,
263 also @code{,} needs to be escaped).
264
265 Finally an additional level of escaping is needed when writing the
266 filtergraph description in a shell command, which depends on the
267 escaping rules of the adopted shell. For example, assuming that
268 @code{\} is special and needs to be escaped with another @code{\}, the
269 previous string will finally result in:
270 @example
271 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
272 @end example
273
274 @chapter Timeline editing
275
276 Some filters support a generic @option{enable} option. For the filters
277 supporting timeline editing, this option can be set to an expression which is
278 evaluated before sending a frame to the filter. If the evaluation is non-zero,
279 the filter will be enabled, otherwise the frame will be sent unchanged to the
280 next filter in the filtergraph.
281
282 The expression accepts the following values:
283 @table @samp
284 @item t
285 timestamp expressed in seconds, NAN if the input timestamp is unknown
286
287 @item n
288 sequential number of the input frame, starting from 0
289
290 @item pos
291 the position in the file of the input frame, NAN if unknown
292
293 @item w
294 @item h
295 width and height of the input frame if video
296 @end table
297
298 Additionally, these filters support an @option{enable} command that can be used
299 to re-define the expression.
300
301 Like any other filtering option, the @option{enable} option follows the same
302 rules.
303
304 For example, to enable a blur filter (@ref{smartblur}) from 10 seconds to 3
305 minutes, and a @ref{curves} filter starting at 3 seconds:
306 @example
307 smartblur = enable='between(t,10,3*60)',
308 curves    = enable='gte(t,3)' : preset=cross_process
309 @end example
310
311 See @code{ffmpeg -filters} to view which filters have timeline support.
312
313 @c man end FILTERGRAPH DESCRIPTION
314
315 @anchor{commands}
316 @chapter Changing options at runtime with a command
317
318 Some options can be changed during the operation of the filter using
319 a command. These options are marked 'T' on the output of
320 @command{ffmpeg} @option{-h filter=<name of filter>}.
321 The name of the command is the name of the option and the argument is
322 the new value.
323
324 @anchor{framesync}
325 @chapter Options for filters with several inputs (framesync)
326 @c man begin OPTIONS FOR FILTERS WITH SEVERAL INPUTS
327
328 Some filters with several inputs support a common set of options.
329 These options can only be set by name, not with the short notation.
330
331 @table @option
332 @item eof_action
333 The action to take when EOF is encountered on the secondary input; it accepts
334 one of the following values:
335
336 @table @option
337 @item repeat
338 Repeat the last frame (the default).
339 @item endall
340 End both streams.
341 @item pass
342 Pass the main input through.
343 @end table
344
345 @item shortest
346 If set to 1, force the output to terminate when the shortest input
347 terminates. Default value is 0.
348
349 @item repeatlast
350 If set to 1, force the filter to extend the last frame of secondary streams
351 until the end of the primary stream. A value of 0 disables this behavior.
352 Default value is 1.
353 @end table
354
355 @c man end OPTIONS FOR FILTERS WITH SEVERAL INPUTS
356
357 @chapter Audio Filters
358 @c man begin AUDIO FILTERS
359
360 When you configure your FFmpeg build, you can disable any of the
361 existing filters using @code{--disable-filters}.
362 The configure output will show the audio filters included in your
363 build.
364
365 Below is a description of the currently available audio filters.
366
367 @section acompressor
368
369 A compressor is mainly used to reduce the dynamic range of a signal.
370 Especially modern music is mostly compressed at a high ratio to
371 improve the overall loudness. It's done to get the highest attention
372 of a listener, "fatten" the sound and bring more "power" to the track.
373 If a signal is compressed too much it may sound dull or "dead"
374 afterwards or it may start to "pump" (which could be a powerful effect
375 but can also destroy a track completely).
376 The right compression is the key to reach a professional sound and is
377 the high art of mixing and mastering. Because of its complex settings
378 it may take a long time to get the right feeling for this kind of effect.
379
380 Compression is done by detecting the volume above a chosen level
381 @code{threshold} and dividing it by the factor set with @code{ratio}.
382 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
383 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
384 the signal would cause distortion of the waveform the reduction can be
385 levelled over the time. This is done by setting "Attack" and "Release".
386 @code{attack} determines how long the signal has to rise above the threshold
387 before any reduction will occur and @code{release} sets the time the signal
388 has to fall below the threshold to reduce the reduction again. Shorter signals
389 than the chosen attack time will be left untouched.
390 The overall reduction of the signal can be made up afterwards with the
391 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
392 raising the makeup to this level results in a signal twice as loud than the
393 source. To gain a softer entry in the compression the @code{knee} flattens the
394 hard edge at the threshold in the range of the chosen decibels.
395
396 The filter accepts the following options:
397
398 @table @option
399 @item level_in
400 Set input gain. Default is 1. Range is between 0.015625 and 64.
401
402 @item mode
403 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
404 Default is @code{downward}.
405
406 @item threshold
407 If a signal of stream rises above this level it will affect the gain
408 reduction.
409 By default it is 0.125. Range is between 0.00097563 and 1.
410
411 @item ratio
412 Set a ratio by which the signal is reduced. 1:2 means that if the level
413 rose 4dB above the threshold, it will be only 2dB above after the reduction.
414 Default is 2. Range is between 1 and 20.
415
416 @item attack
417 Amount of milliseconds the signal has to rise above the threshold before gain
418 reduction starts. Default is 20. Range is between 0.01 and 2000.
419
420 @item release
421 Amount of milliseconds the signal has to fall below the threshold before
422 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
423
424 @item makeup
425 Set the amount by how much signal will be amplified after processing.
426 Default is 1. Range is from 1 to 64.
427
428 @item knee
429 Curve the sharp knee around the threshold to enter gain reduction more softly.
430 Default is 2.82843. Range is between 1 and 8.
431
432 @item link
433 Choose if the @code{average} level between all channels of input stream
434 or the louder(@code{maximum}) channel of input stream affects the
435 reduction. Default is @code{average}.
436
437 @item detection
438 Should the exact signal be taken in case of @code{peak} or an RMS one in case
439 of @code{rms}. Default is @code{rms} which is mostly smoother.
440
441 @item mix
442 How much to use compressed signal in output. Default is 1.
443 Range is between 0 and 1.
444 @end table
445
446 @subsection Commands
447
448 This filter supports the all above options as @ref{commands}.
449
450 @section acontrast
451 Simple audio dynamic range compression/expansion filter.
452
453 The filter accepts the following options:
454
455 @table @option
456 @item contrast
457 Set contrast. Default is 33. Allowed range is between 0 and 100.
458 @end table
459
460 @section acopy
461
462 Copy the input audio source unchanged to the output. This is mainly useful for
463 testing purposes.
464
465 @section acrossfade
466
467 Apply cross fade from one input audio stream to another input audio stream.
468 The cross fade is applied for specified duration near the end of first stream.
469
470 The filter accepts the following options:
471
472 @table @option
473 @item nb_samples, ns
474 Specify the number of samples for which the cross fade effect has to last.
475 At the end of the cross fade effect the first input audio will be completely
476 silent. Default is 44100.
477
478 @item duration, d
479 Specify the duration of the cross fade effect. See
480 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
481 for the accepted syntax.
482 By default the duration is determined by @var{nb_samples}.
483 If set this option is used instead of @var{nb_samples}.
484
485 @item overlap, o
486 Should first stream end overlap with second stream start. Default is enabled.
487
488 @item curve1
489 Set curve for cross fade transition for first stream.
490
491 @item curve2
492 Set curve for cross fade transition for second stream.
493
494 For description of available curve types see @ref{afade} filter description.
495 @end table
496
497 @subsection Examples
498
499 @itemize
500 @item
501 Cross fade from one input to another:
502 @example
503 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
504 @end example
505
506 @item
507 Cross fade from one input to another but without overlapping:
508 @example
509 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
510 @end example
511 @end itemize
512
513 @section acrossover
514 Split audio stream into several bands.
515
516 This filter splits audio stream into two or more frequency ranges.
517 Summing all streams back will give flat output.
518
519 The filter accepts the following options:
520
521 @table @option
522 @item split
523 Set split frequencies. Those must be positive and increasing.
524
525 @item order
526 Set filter order, can be @var{2nd}, @var{4th} or @var{8th}.
527 Default is @var{4th}.
528 @end table
529
530 @section acrusher
531
532 Reduce audio bit resolution.
533
534 This filter is bit crusher with enhanced functionality. A bit crusher
535 is used to audibly reduce number of bits an audio signal is sampled
536 with. This doesn't change the bit depth at all, it just produces the
537 effect. Material reduced in bit depth sounds more harsh and "digital".
538 This filter is able to even round to continuous values instead of discrete
539 bit depths.
540 Additionally it has a D/C offset which results in different crushing of
541 the lower and the upper half of the signal.
542 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
543
544 Another feature of this filter is the logarithmic mode.
545 This setting switches from linear distances between bits to logarithmic ones.
546 The result is a much more "natural" sounding crusher which doesn't gate low
547 signals for example. The human ear has a logarithmic perception,
548 so this kind of crushing is much more pleasant.
549 Logarithmic crushing is also able to get anti-aliased.
550
551 The filter accepts the following options:
552
553 @table @option
554 @item level_in
555 Set level in.
556
557 @item level_out
558 Set level out.
559
560 @item bits
561 Set bit reduction.
562
563 @item mix
564 Set mixing amount.
565
566 @item mode
567 Can be linear: @code{lin} or logarithmic: @code{log}.
568
569 @item dc
570 Set DC.
571
572 @item aa
573 Set anti-aliasing.
574
575 @item samples
576 Set sample reduction.
577
578 @item lfo
579 Enable LFO. By default disabled.
580
581 @item lforange
582 Set LFO range.
583
584 @item lforate
585 Set LFO rate.
586 @end table
587
588 @section acue
589
590 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
591 filter.
592
593 @section adeclick
594 Remove impulsive noise from input audio.
595
596 Samples detected as impulsive noise are replaced by interpolated samples using
597 autoregressive modelling.
598
599 @table @option
600 @item w
601 Set window size, in milliseconds. Allowed range is from @code{10} to
602 @code{100}. Default value is @code{55} milliseconds.
603 This sets size of window which will be processed at once.
604
605 @item o
606 Set window overlap, in percentage of window size. Allowed range is from
607 @code{50} to @code{95}. Default value is @code{75} percent.
608 Setting this to a very high value increases impulsive noise removal but makes
609 whole process much slower.
610
611 @item a
612 Set autoregression order, in percentage of window size. Allowed range is from
613 @code{0} to @code{25}. Default value is @code{2} percent. This option also
614 controls quality of interpolated samples using neighbour good samples.
615
616 @item t
617 Set threshold value. Allowed range is from @code{1} to @code{100}.
618 Default value is @code{2}.
619 This controls the strength of impulsive noise which is going to be removed.
620 The lower value, the more samples will be detected as impulsive noise.
621
622 @item b
623 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
624 @code{10}. Default value is @code{2}.
625 If any two samples detected as noise are spaced less than this value then any
626 sample between those two samples will be also detected as noise.
627
628 @item m
629 Set overlap method.
630
631 It accepts the following values:
632 @table @option
633 @item a
634 Select overlap-add method. Even not interpolated samples are slightly
635 changed with this method.
636
637 @item s
638 Select overlap-save method. Not interpolated samples remain unchanged.
639 @end table
640
641 Default value is @code{a}.
642 @end table
643
644 @section adeclip
645 Remove clipped samples from input audio.
646
647 Samples detected as clipped are replaced by interpolated samples using
648 autoregressive modelling.
649
650 @table @option
651 @item w
652 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
653 Default value is @code{55} milliseconds.
654 This sets size of window which will be processed at once.
655
656 @item o
657 Set window overlap, in percentage of window size. Allowed range is from @code{50}
658 to @code{95}. Default value is @code{75} percent.
659
660 @item a
661 Set autoregression order, in percentage of window size. Allowed range is from
662 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
663 quality of interpolated samples using neighbour good samples.
664
665 @item t
666 Set threshold value. Allowed range is from @code{1} to @code{100}.
667 Default value is @code{10}. Higher values make clip detection less aggressive.
668
669 @item n
670 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
671 Default value is @code{1000}. Higher values make clip detection less aggressive.
672
673 @item m
674 Set overlap method.
675
676 It accepts the following values:
677 @table @option
678 @item a
679 Select overlap-add method. Even not interpolated samples are slightly changed
680 with this method.
681
682 @item s
683 Select overlap-save method. Not interpolated samples remain unchanged.
684 @end table
685
686 Default value is @code{a}.
687 @end table
688
689 @section adelay
690
691 Delay one or more audio channels.
692
693 Samples in delayed channel are filled with silence.
694
695 The filter accepts the following option:
696
697 @table @option
698 @item delays
699 Set list of delays in milliseconds for each channel separated by '|'.
700 Unused delays will be silently ignored. If number of given delays is
701 smaller than number of channels all remaining channels will not be delayed.
702 If you want to delay exact number of samples, append 'S' to number.
703 If you want instead to delay in seconds, append 's' to number.
704
705 @item all
706 Use last set delay for all remaining channels. By default is disabled.
707 This option if enabled changes how option @code{delays} is interpreted.
708 @end table
709
710 @subsection Examples
711
712 @itemize
713 @item
714 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
715 the second channel (and any other channels that may be present) unchanged.
716 @example
717 adelay=1500|0|500
718 @end example
719
720 @item
721 Delay second channel by 500 samples, the third channel by 700 samples and leave
722 the first channel (and any other channels that may be present) unchanged.
723 @example
724 adelay=0|500S|700S
725 @end example
726
727 @item
728 Delay all channels by same number of samples:
729 @example
730 adelay=delays=64S:all=1
731 @end example
732 @end itemize
733
734 @section aderivative, aintegral
735
736 Compute derivative/integral of audio stream.
737
738 Applying both filters one after another produces original audio.
739
740 @section aecho
741
742 Apply echoing to the input audio.
743
744 Echoes are reflected sound and can occur naturally amongst mountains
745 (and sometimes large buildings) when talking or shouting; digital echo
746 effects emulate this behaviour and are often used to help fill out the
747 sound of a single instrument or vocal. The time difference between the
748 original signal and the reflection is the @code{delay}, and the
749 loudness of the reflected signal is the @code{decay}.
750 Multiple echoes can have different delays and decays.
751
752 A description of the accepted parameters follows.
753
754 @table @option
755 @item in_gain
756 Set input gain of reflected signal. Default is @code{0.6}.
757
758 @item out_gain
759 Set output gain of reflected signal. Default is @code{0.3}.
760
761 @item delays
762 Set list of time intervals in milliseconds between original signal and reflections
763 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
764 Default is @code{1000}.
765
766 @item decays
767 Set list of loudness of reflected signals separated by '|'.
768 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
769 Default is @code{0.5}.
770 @end table
771
772 @subsection Examples
773
774 @itemize
775 @item
776 Make it sound as if there are twice as many instruments as are actually playing:
777 @example
778 aecho=0.8:0.88:60:0.4
779 @end example
780
781 @item
782 If delay is very short, then it sounds like a (metallic) robot playing music:
783 @example
784 aecho=0.8:0.88:6:0.4
785 @end example
786
787 @item
788 A longer delay will sound like an open air concert in the mountains:
789 @example
790 aecho=0.8:0.9:1000:0.3
791 @end example
792
793 @item
794 Same as above but with one more mountain:
795 @example
796 aecho=0.8:0.9:1000|1800:0.3|0.25
797 @end example
798 @end itemize
799
800 @section aemphasis
801 Audio emphasis filter creates or restores material directly taken from LPs or
802 emphased CDs with different filter curves. E.g. to store music on vinyl the
803 signal has to be altered by a filter first to even out the disadvantages of
804 this recording medium.
805 Once the material is played back the inverse filter has to be applied to
806 restore the distortion of the frequency response.
807
808 The filter accepts the following options:
809
810 @table @option
811 @item level_in
812 Set input gain.
813
814 @item level_out
815 Set output gain.
816
817 @item mode
818 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
819 use @code{production} mode. Default is @code{reproduction} mode.
820
821 @item type
822 Set filter type. Selects medium. Can be one of the following:
823
824 @table @option
825 @item col
826 select Columbia.
827 @item emi
828 select EMI.
829 @item bsi
830 select BSI (78RPM).
831 @item riaa
832 select RIAA.
833 @item cd
834 select Compact Disc (CD).
835 @item 50fm
836 select 50µs (FM).
837 @item 75fm
838 select 75µs (FM).
839 @item 50kf
840 select 50µs (FM-KF).
841 @item 75kf
842 select 75µs (FM-KF).
843 @end table
844 @end table
845
846 @section aeval
847
848 Modify an audio signal according to the specified expressions.
849
850 This filter accepts one or more expressions (one for each channel),
851 which are evaluated and used to modify a corresponding audio signal.
852
853 It accepts the following parameters:
854
855 @table @option
856 @item exprs
857 Set the '|'-separated expressions list for each separate channel. If
858 the number of input channels is greater than the number of
859 expressions, the last specified expression is used for the remaining
860 output channels.
861
862 @item channel_layout, c
863 Set output channel layout. If not specified, the channel layout is
864 specified by the number of expressions. If set to @samp{same}, it will
865 use by default the same input channel layout.
866 @end table
867
868 Each expression in @var{exprs} can contain the following constants and functions:
869
870 @table @option
871 @item ch
872 channel number of the current expression
873
874 @item n
875 number of the evaluated sample, starting from 0
876
877 @item s
878 sample rate
879
880 @item t
881 time of the evaluated sample expressed in seconds
882
883 @item nb_in_channels
884 @item nb_out_channels
885 input and output number of channels
886
887 @item val(CH)
888 the value of input channel with number @var{CH}
889 @end table
890
891 Note: this filter is slow. For faster processing you should use a
892 dedicated filter.
893
894 @subsection Examples
895
896 @itemize
897 @item
898 Half volume:
899 @example
900 aeval=val(ch)/2:c=same
901 @end example
902
903 @item
904 Invert phase of the second channel:
905 @example
906 aeval=val(0)|-val(1)
907 @end example
908 @end itemize
909
910 @anchor{afade}
911 @section afade
912
913 Apply fade-in/out effect to input audio.
914
915 A description of the accepted parameters follows.
916
917 @table @option
918 @item type, t
919 Specify the effect type, can be either @code{in} for fade-in, or
920 @code{out} for a fade-out effect. Default is @code{in}.
921
922 @item start_sample, ss
923 Specify the number of the start sample for starting to apply the fade
924 effect. Default is 0.
925
926 @item nb_samples, ns
927 Specify the number of samples for which the fade effect has to last. At
928 the end of the fade-in effect the output audio will have the same
929 volume as the input audio, at the end of the fade-out transition
930 the output audio will be silence. Default is 44100.
931
932 @item start_time, st
933 Specify the start time of the fade effect. Default is 0.
934 The value must be specified as a time duration; see
935 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
936 for the accepted syntax.
937 If set this option is used instead of @var{start_sample}.
938
939 @item duration, d
940 Specify the duration of the fade effect. See
941 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
942 for the accepted syntax.
943 At the end of the fade-in effect the output audio will have the same
944 volume as the input audio, at the end of the fade-out transition
945 the output audio will be silence.
946 By default the duration is determined by @var{nb_samples}.
947 If set this option is used instead of @var{nb_samples}.
948
949 @item curve
950 Set curve for fade transition.
951
952 It accepts the following values:
953 @table @option
954 @item tri
955 select triangular, linear slope (default)
956 @item qsin
957 select quarter of sine wave
958 @item hsin
959 select half of sine wave
960 @item esin
961 select exponential sine wave
962 @item log
963 select logarithmic
964 @item ipar
965 select inverted parabola
966 @item qua
967 select quadratic
968 @item cub
969 select cubic
970 @item squ
971 select square root
972 @item cbr
973 select cubic root
974 @item par
975 select parabola
976 @item exp
977 select exponential
978 @item iqsin
979 select inverted quarter of sine wave
980 @item ihsin
981 select inverted half of sine wave
982 @item dese
983 select double-exponential seat
984 @item desi
985 select double-exponential sigmoid
986 @item losi
987 select logistic sigmoid
988 @item nofade
989 no fade applied
990 @end table
991 @end table
992
993 @subsection Examples
994
995 @itemize
996 @item
997 Fade in first 15 seconds of audio:
998 @example
999 afade=t=in:ss=0:d=15
1000 @end example
1001
1002 @item
1003 Fade out last 25 seconds of a 900 seconds audio:
1004 @example
1005 afade=t=out:st=875:d=25
1006 @end example
1007 @end itemize
1008
1009 @section afftdn
1010 Denoise audio samples with FFT.
1011
1012 A description of the accepted parameters follows.
1013
1014 @table @option
1015 @item nr
1016 Set the noise reduction in dB, allowed range is 0.01 to 97.
1017 Default value is 12 dB.
1018
1019 @item nf
1020 Set the noise floor in dB, allowed range is -80 to -20.
1021 Default value is -50 dB.
1022
1023 @item nt
1024 Set the noise type.
1025
1026 It accepts the following values:
1027 @table @option
1028 @item w
1029 Select white noise.
1030
1031 @item v
1032 Select vinyl noise.
1033
1034 @item s
1035 Select shellac noise.
1036
1037 @item c
1038 Select custom noise, defined in @code{bn} option.
1039
1040 Default value is white noise.
1041 @end table
1042
1043 @item bn
1044 Set custom band noise for every one of 15 bands.
1045 Bands are separated by ' ' or '|'.
1046
1047 @item rf
1048 Set the residual floor in dB, allowed range is -80 to -20.
1049 Default value is -38 dB.
1050
1051 @item tn
1052 Enable noise tracking. By default is disabled.
1053 With this enabled, noise floor is automatically adjusted.
1054
1055 @item tr
1056 Enable residual tracking. By default is disabled.
1057
1058 @item om
1059 Set the output mode.
1060
1061 It accepts the following values:
1062 @table @option
1063 @item i
1064 Pass input unchanged.
1065
1066 @item o
1067 Pass noise filtered out.
1068
1069 @item n
1070 Pass only noise.
1071
1072 Default value is @var{o}.
1073 @end table
1074 @end table
1075
1076 @subsection Commands
1077
1078 This filter supports the following commands:
1079 @table @option
1080 @item sample_noise, sn
1081 Start or stop measuring noise profile.
1082 Syntax for the command is : "start" or "stop" string.
1083 After measuring noise profile is stopped it will be
1084 automatically applied in filtering.
1085
1086 @item noise_reduction, nr
1087 Change noise reduction. Argument is single float number.
1088 Syntax for the command is : "@var{noise_reduction}"
1089
1090 @item noise_floor, nf
1091 Change noise floor. Argument is single float number.
1092 Syntax for the command is : "@var{noise_floor}"
1093
1094 @item output_mode, om
1095 Change output mode operation.
1096 Syntax for the command is : "i", "o" or "n" string.
1097 @end table
1098
1099 @section afftfilt
1100 Apply arbitrary expressions to samples in frequency domain.
1101
1102 @table @option
1103 @item real
1104 Set frequency domain real expression for each separate channel separated
1105 by '|'. Default is "re".
1106 If the number of input channels is greater than the number of
1107 expressions, the last specified expression is used for the remaining
1108 output channels.
1109
1110 @item imag
1111 Set frequency domain imaginary expression for each separate channel
1112 separated by '|'. Default is "im".
1113
1114 Each expression in @var{real} and @var{imag} can contain the following
1115 constants and functions:
1116
1117 @table @option
1118 @item sr
1119 sample rate
1120
1121 @item b
1122 current frequency bin number
1123
1124 @item nb
1125 number of available bins
1126
1127 @item ch
1128 channel number of the current expression
1129
1130 @item chs
1131 number of channels
1132
1133 @item pts
1134 current frame pts
1135
1136 @item re
1137 current real part of frequency bin of current channel
1138
1139 @item im
1140 current imaginary part of frequency bin of current channel
1141
1142 @item real(b, ch)
1143 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1144
1145 @item imag(b, ch)
1146 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1147 @end table
1148
1149 @item win_size
1150 Set window size. Allowed range is from 16 to 131072.
1151 Default is @code{4096}
1152
1153 @item win_func
1154 Set window function. Default is @code{hann}.
1155
1156 @item overlap
1157 Set window overlap. If set to 1, the recommended overlap for selected
1158 window function will be picked. Default is @code{0.75}.
1159 @end table
1160
1161 @subsection Examples
1162
1163 @itemize
1164 @item
1165 Leave almost only low frequencies in audio:
1166 @example
1167 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1168 @end example
1169
1170 @item
1171 Apply robotize effect:
1172 @example
1173 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1174 @end example
1175
1176 @item
1177 Apply whisper effect:
1178 @example
1179 afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8"
1180 @end example
1181 @end itemize
1182
1183 @anchor{afir}
1184 @section afir
1185
1186 Apply an arbitrary Finite Impulse Response filter.
1187
1188 This filter is designed for applying long FIR filters,
1189 up to 60 seconds long.
1190
1191 It can be used as component for digital crossover filters,
1192 room equalization, cross talk cancellation, wavefield synthesis,
1193 auralization, ambiophonics, ambisonics and spatialization.
1194
1195 This filter uses the streams higher than first one as FIR coefficients.
1196 If the non-first stream holds a single channel, it will be used
1197 for all input channels in the first stream, otherwise
1198 the number of channels in the non-first stream must be same as
1199 the number of channels in the first stream.
1200
1201 It accepts the following parameters:
1202
1203 @table @option
1204 @item dry
1205 Set dry gain. This sets input gain.
1206
1207 @item wet
1208 Set wet gain. This sets final output gain.
1209
1210 @item length
1211 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1212
1213 @item gtype
1214 Enable applying gain measured from power of IR.
1215
1216 Set which approach to use for auto gain measurement.
1217
1218 @table @option
1219 @item none
1220 Do not apply any gain.
1221
1222 @item peak
1223 select peak gain, very conservative approach. This is default value.
1224
1225 @item dc
1226 select DC gain, limited application.
1227
1228 @item gn
1229 select gain to noise approach, this is most popular one.
1230 @end table
1231
1232 @item irgain
1233 Set gain to be applied to IR coefficients before filtering.
1234 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1235
1236 @item irfmt
1237 Set format of IR stream. Can be @code{mono} or @code{input}.
1238 Default is @code{input}.
1239
1240 @item maxir
1241 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1242 Allowed range is 0.1 to 60 seconds.
1243
1244 @item response
1245 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1246 By default it is disabled.
1247
1248 @item channel
1249 Set for which IR channel to display frequency response. By default is first channel
1250 displayed. This option is used only when @var{response} is enabled.
1251
1252 @item size
1253 Set video stream size. This option is used only when @var{response} is enabled.
1254
1255 @item rate
1256 Set video stream frame rate. This option is used only when @var{response} is enabled.
1257
1258 @item minp
1259 Set minimal partition size used for convolution. Default is @var{8192}.
1260 Allowed range is from @var{1} to @var{32768}.
1261 Lower values decreases latency at cost of higher CPU usage.
1262
1263 @item maxp
1264 Set maximal partition size used for convolution. Default is @var{8192}.
1265 Allowed range is from @var{8} to @var{32768}.
1266 Lower values may increase CPU usage.
1267
1268 @item nbirs
1269 Set number of input impulse responses streams which will be switchable at runtime.
1270 Allowed range is from @var{1} to @var{32}. Default is @var{1}.
1271
1272 @item ir
1273 Set IR stream which will be used for convolution, starting from @var{0}, should always be
1274 lower than supplied value by @code{nbirs} option. Default is @var{0}.
1275 This option can be changed at runtime via @ref{commands}.
1276 @end table
1277
1278 @subsection Examples
1279
1280 @itemize
1281 @item
1282 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1283 @example
1284 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1285 @end example
1286 @end itemize
1287
1288 @anchor{aformat}
1289 @section aformat
1290
1291 Set output format constraints for the input audio. The framework will
1292 negotiate the most appropriate format to minimize conversions.
1293
1294 It accepts the following parameters:
1295 @table @option
1296
1297 @item sample_fmts, f
1298 A '|'-separated list of requested sample formats.
1299
1300 @item sample_rates, r
1301 A '|'-separated list of requested sample rates.
1302
1303 @item channel_layouts, cl
1304 A '|'-separated list of requested channel layouts.
1305
1306 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1307 for the required syntax.
1308 @end table
1309
1310 If a parameter is omitted, all values are allowed.
1311
1312 Force the output to either unsigned 8-bit or signed 16-bit stereo
1313 @example
1314 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1315 @end example
1316
1317 @section afreqshift
1318 Apply frequency shift to input audio samples.
1319
1320 The filter accepts the following options:
1321
1322 @table @option
1323 @item shift
1324 Specify frequency shift. Allowed range is -INT_MAX to INT_MAX.
1325 Default value is 0.0.
1326 @end table
1327
1328 @subsection Commands
1329
1330 This filter supports the above option as @ref{commands}.
1331
1332 @section agate
1333
1334 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1335 processing reduces disturbing noise between useful signals.
1336
1337 Gating is done by detecting the volume below a chosen level @var{threshold}
1338 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1339 floor is set via @var{range}. Because an exact manipulation of the signal
1340 would cause distortion of the waveform the reduction can be levelled over
1341 time. This is done by setting @var{attack} and @var{release}.
1342
1343 @var{attack} determines how long the signal has to fall below the threshold
1344 before any reduction will occur and @var{release} sets the time the signal
1345 has to rise above the threshold to reduce the reduction again.
1346 Shorter signals than the chosen attack time will be left untouched.
1347
1348 @table @option
1349 @item level_in
1350 Set input level before filtering.
1351 Default is 1. Allowed range is from 0.015625 to 64.
1352
1353 @item mode
1354 Set the mode of operation. Can be @code{upward} or @code{downward}.
1355 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1356 will be amplified, expanding dynamic range in upward direction.
1357 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1358
1359 @item range
1360 Set the level of gain reduction when the signal is below the threshold.
1361 Default is 0.06125. Allowed range is from 0 to 1.
1362 Setting this to 0 disables reduction and then filter behaves like expander.
1363
1364 @item threshold
1365 If a signal rises above this level the gain reduction is released.
1366 Default is 0.125. Allowed range is from 0 to 1.
1367
1368 @item ratio
1369 Set a ratio by which the signal is reduced.
1370 Default is 2. Allowed range is from 1 to 9000.
1371
1372 @item attack
1373 Amount of milliseconds the signal has to rise above the threshold before gain
1374 reduction stops.
1375 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1376
1377 @item release
1378 Amount of milliseconds the signal has to fall below the threshold before the
1379 reduction is increased again. Default is 250 milliseconds.
1380 Allowed range is from 0.01 to 9000.
1381
1382 @item makeup
1383 Set amount of amplification of signal after processing.
1384 Default is 1. Allowed range is from 1 to 64.
1385
1386 @item knee
1387 Curve the sharp knee around the threshold to enter gain reduction more softly.
1388 Default is 2.828427125. Allowed range is from 1 to 8.
1389
1390 @item detection
1391 Choose if exact signal should be taken for detection or an RMS like one.
1392 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1393
1394 @item link
1395 Choose if the average level between all channels or the louder channel affects
1396 the reduction.
1397 Default is @code{average}. Can be @code{average} or @code{maximum}.
1398 @end table
1399
1400 @section aiir
1401
1402 Apply an arbitrary Infinite Impulse Response filter.
1403
1404 It accepts the following parameters:
1405
1406 @table @option
1407 @item zeros, z
1408 Set numerator/zeros coefficients.
1409
1410 @item poles, p
1411 Set denominator/poles coefficients.
1412
1413 @item gains, k
1414 Set channels gains.
1415
1416 @item dry_gain
1417 Set input gain.
1418
1419 @item wet_gain
1420 Set output gain.
1421
1422 @item format, f
1423 Set coefficients format.
1424
1425 @table @samp
1426 @item sf
1427 analog transfer function
1428 @item tf
1429 digital transfer function
1430 @item zp
1431 Z-plane zeros/poles, cartesian (default)
1432 @item pr
1433 Z-plane zeros/poles, polar radians
1434 @item pd
1435 Z-plane zeros/poles, polar degrees
1436 @item sp
1437 S-plane zeros/poles
1438 @end table
1439
1440 @item process, r
1441 Set type of processing.
1442
1443 @table @samp
1444 @item d
1445 direct processing
1446 @item s
1447 serial processing
1448 @item p
1449 parallel processing
1450 @end table
1451
1452 @item precision, e
1453 Set filtering precision.
1454
1455 @table @samp
1456 @item dbl
1457 double-precision floating-point (default)
1458 @item flt
1459 single-precision floating-point
1460 @item i32
1461 32-bit integers
1462 @item i16
1463 16-bit integers
1464 @end table
1465
1466 @item normalize, n
1467 Normalize filter coefficients, by default is enabled.
1468 Enabling it will normalize magnitude response at DC to 0dB.
1469
1470 @item mix
1471 How much to use filtered signal in output. Default is 1.
1472 Range is between 0 and 1.
1473
1474 @item response
1475 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1476 By default it is disabled.
1477
1478 @item channel
1479 Set for which IR channel to display frequency response. By default is first channel
1480 displayed. This option is used only when @var{response} is enabled.
1481
1482 @item size
1483 Set video stream size. This option is used only when @var{response} is enabled.
1484 @end table
1485
1486 Coefficients in @code{tf} and @code{sf} format are separated by spaces and are in ascending
1487 order.
1488
1489 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1490 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1491 imaginary unit.
1492
1493 Different coefficients and gains can be provided for every channel, in such case
1494 use '|' to separate coefficients or gains. Last provided coefficients will be
1495 used for all remaining channels.
1496
1497 @subsection Examples
1498
1499 @itemize
1500 @item
1501 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1502 @example
1503 aiir=k=1:z=7.957584807809675810E-1 -2.575128568908332300 3.674839853930788710 -2.57512875289799137 7.957586296317130880E-1:p=1 -2.86950072432325953 3.63022088054647218 -2.28075678147272232 6.361362326477423500E-1:f=tf:r=d
1504 @end example
1505
1506 @item
1507 Same as above but in @code{zp} format:
1508 @example
1509 aiir=k=0.79575848078096756:z=0.80918701+0.58773007i 0.80918701-0.58773007i 0.80884700+0.58784055i 0.80884700-0.58784055i:p=0.63892345+0.59951235i 0.63892345-0.59951235i 0.79582691+0.44198673i 0.79582691-0.44198673i:f=zp:r=s
1510 @end example
1511
1512 @item
1513 Apply 3-rd order analog normalized Butterworth low-pass filter, using analog transfer function format:
1514 @example
1515 aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
1516 @end example
1517 @end itemize
1518
1519 @section alimiter
1520
1521 The limiter prevents an input signal from rising over a desired threshold.
1522 This limiter uses lookahead technology to prevent your signal from distorting.
1523 It means that there is a small delay after the signal is processed. Keep in mind
1524 that the delay it produces is the attack time you set.
1525
1526 The filter accepts the following options:
1527
1528 @table @option
1529 @item level_in
1530 Set input gain. Default is 1.
1531
1532 @item level_out
1533 Set output gain. Default is 1.
1534
1535 @item limit
1536 Don't let signals above this level pass the limiter. Default is 1.
1537
1538 @item attack
1539 The limiter will reach its attenuation level in this amount of time in
1540 milliseconds. Default is 5 milliseconds.
1541
1542 @item release
1543 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1544 Default is 50 milliseconds.
1545
1546 @item asc
1547 When gain reduction is always needed ASC takes care of releasing to an
1548 average reduction level rather than reaching a reduction of 0 in the release
1549 time.
1550
1551 @item asc_level
1552 Select how much the release time is affected by ASC, 0 means nearly no changes
1553 in release time while 1 produces higher release times.
1554
1555 @item level
1556 Auto level output signal. Default is enabled.
1557 This normalizes audio back to 0dB if enabled.
1558 @end table
1559
1560 Depending on picked setting it is recommended to upsample input 2x or 4x times
1561 with @ref{aresample} before applying this filter.
1562
1563 @section allpass
1564
1565 Apply a two-pole all-pass filter with central frequency (in Hz)
1566 @var{frequency}, and filter-width @var{width}.
1567 An all-pass filter changes the audio's frequency to phase relationship
1568 without changing its frequency to amplitude relationship.
1569
1570 The filter accepts the following options:
1571
1572 @table @option
1573 @item frequency, f
1574 Set frequency in Hz.
1575
1576 @item width_type, t
1577 Set method to specify band-width of filter.
1578 @table @option
1579 @item h
1580 Hz
1581 @item q
1582 Q-Factor
1583 @item o
1584 octave
1585 @item s
1586 slope
1587 @item k
1588 kHz
1589 @end table
1590
1591 @item width, w
1592 Specify the band-width of a filter in width_type units.
1593
1594 @item mix, m
1595 How much to use filtered signal in output. Default is 1.
1596 Range is between 0 and 1.
1597
1598 @item channels, c
1599 Specify which channels to filter, by default all available are filtered.
1600
1601 @item normalize, n
1602 Normalize biquad coefficients, by default is disabled.
1603 Enabling it will normalize magnitude response at DC to 0dB.
1604
1605 @item order, o
1606 Set the filter order, can be 1 or 2. Default is 2.
1607
1608 @item transform, a
1609 Set transform type of IIR filter.
1610 @table @option
1611 @item di
1612 @item dii
1613 @item tdii
1614 @item latt
1615 @end table
1616 @end table
1617
1618 @subsection Commands
1619
1620 This filter supports the following commands:
1621 @table @option
1622 @item frequency, f
1623 Change allpass frequency.
1624 Syntax for the command is : "@var{frequency}"
1625
1626 @item width_type, t
1627 Change allpass width_type.
1628 Syntax for the command is : "@var{width_type}"
1629
1630 @item width, w
1631 Change allpass width.
1632 Syntax for the command is : "@var{width}"
1633
1634 @item mix, m
1635 Change allpass mix.
1636 Syntax for the command is : "@var{mix}"
1637 @end table
1638
1639 @section aloop
1640
1641 Loop audio samples.
1642
1643 The filter accepts the following options:
1644
1645 @table @option
1646 @item loop
1647 Set the number of loops. Setting this value to -1 will result in infinite loops.
1648 Default is 0.
1649
1650 @item size
1651 Set maximal number of samples. Default is 0.
1652
1653 @item start
1654 Set first sample of loop. Default is 0.
1655 @end table
1656
1657 @anchor{amerge}
1658 @section amerge
1659
1660 Merge two or more audio streams into a single multi-channel stream.
1661
1662 The filter accepts the following options:
1663
1664 @table @option
1665
1666 @item inputs
1667 Set the number of inputs. Default is 2.
1668
1669 @end table
1670
1671 If the channel layouts of the inputs are disjoint, and therefore compatible,
1672 the channel layout of the output will be set accordingly and the channels
1673 will be reordered as necessary. If the channel layouts of the inputs are not
1674 disjoint, the output will have all the channels of the first input then all
1675 the channels of the second input, in that order, and the channel layout of
1676 the output will be the default value corresponding to the total number of
1677 channels.
1678
1679 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1680 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1681 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1682 first input, b1 is the first channel of the second input).
1683
1684 On the other hand, if both input are in stereo, the output channels will be
1685 in the default order: a1, a2, b1, b2, and the channel layout will be
1686 arbitrarily set to 4.0, which may or may not be the expected value.
1687
1688 All inputs must have the same sample rate, and format.
1689
1690 If inputs do not have the same duration, the output will stop with the
1691 shortest.
1692
1693 @subsection Examples
1694
1695 @itemize
1696 @item
1697 Merge two mono files into a stereo stream:
1698 @example
1699 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1700 @end example
1701
1702 @item
1703 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1704 @example
1705 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
1706 @end example
1707 @end itemize
1708
1709 @section amix
1710
1711 Mixes multiple audio inputs into a single output.
1712
1713 Note that this filter only supports float samples (the @var{amerge}
1714 and @var{pan} audio filters support many formats). If the @var{amix}
1715 input has integer samples then @ref{aresample} will be automatically
1716 inserted to perform the conversion to float samples.
1717
1718 For example
1719 @example
1720 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1721 @end example
1722 will mix 3 input audio streams to a single output with the same duration as the
1723 first input and a dropout transition time of 3 seconds.
1724
1725 It accepts the following parameters:
1726 @table @option
1727
1728 @item inputs
1729 The number of inputs. If unspecified, it defaults to 2.
1730
1731 @item duration
1732 How to determine the end-of-stream.
1733 @table @option
1734
1735 @item longest
1736 The duration of the longest input. (default)
1737
1738 @item shortest
1739 The duration of the shortest input.
1740
1741 @item first
1742 The duration of the first input.
1743
1744 @end table
1745
1746 @item dropout_transition
1747 The transition time, in seconds, for volume renormalization when an input
1748 stream ends. The default value is 2 seconds.
1749
1750 @item weights
1751 Specify weight of each input audio stream as sequence.
1752 Each weight is separated by space. By default all inputs have same weight.
1753 @end table
1754
1755 @subsection Commands
1756
1757 This filter supports the following commands:
1758 @table @option
1759 @item weights
1760 Syntax is same as option with same name.
1761 @end table
1762
1763 @section amultiply
1764
1765 Multiply first audio stream with second audio stream and store result
1766 in output audio stream. Multiplication is done by multiplying each
1767 sample from first stream with sample at same position from second stream.
1768
1769 With this element-wise multiplication one can create amplitude fades and
1770 amplitude modulations.
1771
1772 @section anequalizer
1773
1774 High-order parametric multiband equalizer for each channel.
1775
1776 It accepts the following parameters:
1777 @table @option
1778 @item params
1779
1780 This option string is in format:
1781 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1782 Each equalizer band is separated by '|'.
1783
1784 @table @option
1785 @item chn
1786 Set channel number to which equalization will be applied.
1787 If input doesn't have that channel the entry is ignored.
1788
1789 @item f
1790 Set central frequency for band.
1791 If input doesn't have that frequency the entry is ignored.
1792
1793 @item w
1794 Set band width in hertz.
1795
1796 @item g
1797 Set band gain in dB.
1798
1799 @item t
1800 Set filter type for band, optional, can be:
1801
1802 @table @samp
1803 @item 0
1804 Butterworth, this is default.
1805
1806 @item 1
1807 Chebyshev type 1.
1808
1809 @item 2
1810 Chebyshev type 2.
1811 @end table
1812 @end table
1813
1814 @item curves
1815 With this option activated frequency response of anequalizer is displayed
1816 in video stream.
1817
1818 @item size
1819 Set video stream size. Only useful if curves option is activated.
1820
1821 @item mgain
1822 Set max gain that will be displayed. Only useful if curves option is activated.
1823 Setting this to a reasonable value makes it possible to display gain which is derived from
1824 neighbour bands which are too close to each other and thus produce higher gain
1825 when both are activated.
1826
1827 @item fscale
1828 Set frequency scale used to draw frequency response in video output.
1829 Can be linear or logarithmic. Default is logarithmic.
1830
1831 @item colors
1832 Set color for each channel curve which is going to be displayed in video stream.
1833 This is list of color names separated by space or by '|'.
1834 Unrecognised or missing colors will be replaced by white color.
1835 @end table
1836
1837 @subsection Examples
1838
1839 @itemize
1840 @item
1841 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1842 for first 2 channels using Chebyshev type 1 filter:
1843 @example
1844 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1845 @end example
1846 @end itemize
1847
1848 @subsection Commands
1849
1850 This filter supports the following commands:
1851 @table @option
1852 @item change
1853 Alter existing filter parameters.
1854 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1855
1856 @var{fN} is existing filter number, starting from 0, if no such filter is available
1857 error is returned.
1858 @var{freq} set new frequency parameter.
1859 @var{width} set new width parameter in herz.
1860 @var{gain} set new gain parameter in dB.
1861
1862 Full filter invocation with asendcmd may look like this:
1863 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1864 @end table
1865
1866 @section anlmdn
1867
1868 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1869
1870 Each sample is adjusted by looking for other samples with similar contexts. This
1871 context similarity is defined by comparing their surrounding patches of size
1872 @option{p}. Patches are searched in an area of @option{r} around the sample.
1873
1874 The filter accepts the following options:
1875
1876 @table @option
1877 @item s
1878 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1879
1880 @item p
1881 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1882 Default value is 2 milliseconds.
1883
1884 @item r
1885 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1886 Default value is 6 milliseconds.
1887
1888 @item o
1889 Set the output mode.
1890
1891 It accepts the following values:
1892 @table @option
1893 @item i
1894 Pass input unchanged.
1895
1896 @item o
1897 Pass noise filtered out.
1898
1899 @item n
1900 Pass only noise.
1901
1902 Default value is @var{o}.
1903 @end table
1904
1905 @item m
1906 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
1907 @end table
1908
1909 @subsection Commands
1910
1911 This filter supports the following commands:
1912 @table @option
1913 @item s
1914 Change denoise strength. Argument is single float number.
1915 Syntax for the command is : "@var{s}"
1916
1917 @item o
1918 Change output mode.
1919 Syntax for the command is : "i", "o" or "n" string.
1920 @end table
1921
1922 @section anlms
1923 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
1924
1925 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
1926 relate to producing the least mean square of the error signal (difference between the desired,
1927 2nd input audio stream and the actual signal, the 1st input audio stream).
1928
1929 A description of the accepted options follows.
1930
1931 @table @option
1932 @item order
1933 Set filter order.
1934
1935 @item mu
1936 Set filter mu.
1937
1938 @item eps
1939 Set the filter eps.
1940
1941 @item leakage
1942 Set the filter leakage.
1943
1944 @item out_mode
1945 It accepts the following values:
1946 @table @option
1947 @item i
1948 Pass the 1st input.
1949
1950 @item d
1951 Pass the 2nd input.
1952
1953 @item o
1954 Pass filtered samples.
1955
1956 @item n
1957 Pass difference between desired and filtered samples.
1958
1959 Default value is @var{o}.
1960 @end table
1961 @end table
1962
1963 @subsection Examples
1964
1965 @itemize
1966 @item
1967 One of many usages of this filter is noise reduction, input audio is filtered
1968 with same samples that are delayed by fixed amount, one such example for stereo audio is:
1969 @example
1970 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
1971 @end example
1972 @end itemize
1973
1974 @subsection Commands
1975
1976 This filter supports the same commands as options, excluding option @code{order}.
1977
1978 @section anull
1979
1980 Pass the audio source unchanged to the output.
1981
1982 @section apad
1983
1984 Pad the end of an audio stream with silence.
1985
1986 This can be used together with @command{ffmpeg} @option{-shortest} to
1987 extend audio streams to the same length as the video stream.
1988
1989 A description of the accepted options follows.
1990
1991 @table @option
1992 @item packet_size
1993 Set silence packet size. Default value is 4096.
1994
1995 @item pad_len
1996 Set the number of samples of silence to add to the end. After the
1997 value is reached, the stream is terminated. This option is mutually
1998 exclusive with @option{whole_len}.
1999
2000 @item whole_len
2001 Set the minimum total number of samples in the output audio stream. If
2002 the value is longer than the input audio length, silence is added to
2003 the end, until the value is reached. This option is mutually exclusive
2004 with @option{pad_len}.
2005
2006 @item pad_dur
2007 Specify the duration of samples of silence to add. See
2008 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2009 for the accepted syntax. Used only if set to non-zero value.
2010
2011 @item whole_dur
2012 Specify the minimum total duration in the output audio stream. See
2013 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2014 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
2015 the input audio length, silence is added to the end, until the value is reached.
2016 This option is mutually exclusive with @option{pad_dur}
2017 @end table
2018
2019 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
2020 nor @option{whole_dur} option is set, the filter will add silence to the end of
2021 the input stream indefinitely.
2022
2023 @subsection Examples
2024
2025 @itemize
2026 @item
2027 Add 1024 samples of silence to the end of the input:
2028 @example
2029 apad=pad_len=1024
2030 @end example
2031
2032 @item
2033 Make sure the audio output will contain at least 10000 samples, pad
2034 the input with silence if required:
2035 @example
2036 apad=whole_len=10000
2037 @end example
2038
2039 @item
2040 Use @command{ffmpeg} to pad the audio input with silence, so that the
2041 video stream will always result the shortest and will be converted
2042 until the end in the output file when using the @option{shortest}
2043 option:
2044 @example
2045 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
2046 @end example
2047 @end itemize
2048
2049 @section aphaser
2050 Add a phasing effect to the input audio.
2051
2052 A phaser filter creates series of peaks and troughs in the frequency spectrum.
2053 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
2054
2055 A description of the accepted parameters follows.
2056
2057 @table @option
2058 @item in_gain
2059 Set input gain. Default is 0.4.
2060
2061 @item out_gain
2062 Set output gain. Default is 0.74
2063
2064 @item delay
2065 Set delay in milliseconds. Default is 3.0.
2066
2067 @item decay
2068 Set decay. Default is 0.4.
2069
2070 @item speed
2071 Set modulation speed in Hz. Default is 0.5.
2072
2073 @item type
2074 Set modulation type. Default is triangular.
2075
2076 It accepts the following values:
2077 @table @samp
2078 @item triangular, t
2079 @item sinusoidal, s
2080 @end table
2081 @end table
2082
2083 @section aphaseshift
2084 Apply phase shift to input audio samples.
2085
2086 The filter accepts the following options:
2087
2088 @table @option
2089 @item shift
2090 Specify phase shift. Allowed range is from -1.0 to 1.0.
2091 Default value is 0.0.
2092 @end table
2093
2094 @subsection Commands
2095
2096 This filter supports the above option as @ref{commands}.
2097
2098 @section apulsator
2099
2100 Audio pulsator is something between an autopanner and a tremolo.
2101 But it can produce funny stereo effects as well. Pulsator changes the volume
2102 of the left and right channel based on a LFO (low frequency oscillator) with
2103 different waveforms and shifted phases.
2104 This filter have the ability to define an offset between left and right
2105 channel. An offset of 0 means that both LFO shapes match each other.
2106 The left and right channel are altered equally - a conventional tremolo.
2107 An offset of 50% means that the shape of the right channel is exactly shifted
2108 in phase (or moved backwards about half of the frequency) - pulsator acts as
2109 an autopanner. At 1 both curves match again. Every setting in between moves the
2110 phase shift gapless between all stages and produces some "bypassing" sounds with
2111 sine and triangle waveforms. The more you set the offset near 1 (starting from
2112 the 0.5) the faster the signal passes from the left to the right speaker.
2113
2114 The filter accepts the following options:
2115
2116 @table @option
2117 @item level_in
2118 Set input gain. By default it is 1. Range is [0.015625 - 64].
2119
2120 @item level_out
2121 Set output gain. By default it is 1. Range is [0.015625 - 64].
2122
2123 @item mode
2124 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2125 sawup or sawdown. Default is sine.
2126
2127 @item amount
2128 Set modulation. Define how much of original signal is affected by the LFO.
2129
2130 @item offset_l
2131 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2132
2133 @item offset_r
2134 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2135
2136 @item width
2137 Set pulse width. Default is 1. Allowed range is [0 - 2].
2138
2139 @item timing
2140 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2141
2142 @item bpm
2143 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2144 is set to bpm.
2145
2146 @item ms
2147 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2148 is set to ms.
2149
2150 @item hz
2151 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2152 if timing is set to hz.
2153 @end table
2154
2155 @anchor{aresample}
2156 @section aresample
2157
2158 Resample the input audio to the specified parameters, using the
2159 libswresample library. If none are specified then the filter will
2160 automatically convert between its input and output.
2161
2162 This filter is also able to stretch/squeeze the audio data to make it match
2163 the timestamps or to inject silence / cut out audio to make it match the
2164 timestamps, do a combination of both or do neither.
2165
2166 The filter accepts the syntax
2167 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2168 expresses a sample rate and @var{resampler_options} is a list of
2169 @var{key}=@var{value} pairs, separated by ":". See the
2170 @ref{Resampler Options,,"Resampler Options" section in the
2171 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2172 for the complete list of supported options.
2173
2174 @subsection Examples
2175
2176 @itemize
2177 @item
2178 Resample the input audio to 44100Hz:
2179 @example
2180 aresample=44100
2181 @end example
2182
2183 @item
2184 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2185 samples per second compensation:
2186 @example
2187 aresample=async=1000
2188 @end example
2189 @end itemize
2190
2191 @section areverse
2192
2193 Reverse an audio clip.
2194
2195 Warning: This filter requires memory to buffer the entire clip, so trimming
2196 is suggested.
2197
2198 @subsection Examples
2199
2200 @itemize
2201 @item
2202 Take the first 5 seconds of a clip, and reverse it.
2203 @example
2204 atrim=end=5,areverse
2205 @end example
2206 @end itemize
2207
2208 @section arnndn
2209
2210 Reduce noise from speech using Recurrent Neural Networks.
2211
2212 This filter accepts the following options:
2213
2214 @table @option
2215 @item model, m
2216 Set train model file to load. This option is always required.
2217 @end table
2218
2219 @section asetnsamples
2220
2221 Set the number of samples per each output audio frame.
2222
2223 The last output packet may contain a different number of samples, as
2224 the filter will flush all the remaining samples when the input audio
2225 signals its end.
2226
2227 The filter accepts the following options:
2228
2229 @table @option
2230
2231 @item nb_out_samples, n
2232 Set the number of frames per each output audio frame. The number is
2233 intended as the number of samples @emph{per each channel}.
2234 Default value is 1024.
2235
2236 @item pad, p
2237 If set to 1, the filter will pad the last audio frame with zeroes, so
2238 that the last frame will contain the same number of samples as the
2239 previous ones. Default value is 1.
2240 @end table
2241
2242 For example, to set the number of per-frame samples to 1234 and
2243 disable padding for the last frame, use:
2244 @example
2245 asetnsamples=n=1234:p=0
2246 @end example
2247
2248 @section asetrate
2249
2250 Set the sample rate without altering the PCM data.
2251 This will result in a change of speed and pitch.
2252
2253 The filter accepts the following options:
2254
2255 @table @option
2256 @item sample_rate, r
2257 Set the output sample rate. Default is 44100 Hz.
2258 @end table
2259
2260 @section ashowinfo
2261
2262 Show a line containing various information for each input audio frame.
2263 The input audio is not modified.
2264
2265 The shown line contains a sequence of key/value pairs of the form
2266 @var{key}:@var{value}.
2267
2268 The following values are shown in the output:
2269
2270 @table @option
2271 @item n
2272 The (sequential) number of the input frame, starting from 0.
2273
2274 @item pts
2275 The presentation timestamp of the input frame, in time base units; the time base
2276 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2277
2278 @item pts_time
2279 The presentation timestamp of the input frame in seconds.
2280
2281 @item pos
2282 position of the frame in the input stream, -1 if this information in
2283 unavailable and/or meaningless (for example in case of synthetic audio)
2284
2285 @item fmt
2286 The sample format.
2287
2288 @item chlayout
2289 The channel layout.
2290
2291 @item rate
2292 The sample rate for the audio frame.
2293
2294 @item nb_samples
2295 The number of samples (per channel) in the frame.
2296
2297 @item checksum
2298 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2299 audio, the data is treated as if all the planes were concatenated.
2300
2301 @item plane_checksums
2302 A list of Adler-32 checksums for each data plane.
2303 @end table
2304
2305 @section asoftclip
2306 Apply audio soft clipping.
2307
2308 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2309 along a smooth curve, rather than the abrupt shape of hard-clipping.
2310
2311 This filter accepts the following options:
2312
2313 @table @option
2314 @item type
2315 Set type of soft-clipping.
2316
2317 It accepts the following values:
2318 @table @option
2319 @item tanh
2320 @item atan
2321 @item cubic
2322 @item exp
2323 @item alg
2324 @item quintic
2325 @item sin
2326 @item erf
2327 @end table
2328
2329 @item param
2330 Set additional parameter which controls sigmoid function.
2331 @end table
2332
2333 @subsection Commands
2334
2335 This filter supports the all above options as @ref{commands}.
2336
2337 @section asr
2338 Automatic Speech Recognition
2339
2340 This filter uses PocketSphinx for speech recognition. To enable
2341 compilation of this filter, you need to configure FFmpeg with
2342 @code{--enable-pocketsphinx}.
2343
2344 It accepts the following options:
2345
2346 @table @option
2347 @item rate
2348 Set sampling rate of input audio. Defaults is @code{16000}.
2349 This need to match speech models, otherwise one will get poor results.
2350
2351 @item hmm
2352 Set dictionary containing acoustic model files.
2353
2354 @item dict
2355 Set pronunciation dictionary.
2356
2357 @item lm
2358 Set language model file.
2359
2360 @item lmctl
2361 Set language model set.
2362
2363 @item lmname
2364 Set which language model to use.
2365
2366 @item logfn
2367 Set output for log messages.
2368 @end table
2369
2370 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2371
2372 @anchor{astats}
2373 @section astats
2374
2375 Display time domain statistical information about the audio channels.
2376 Statistics are calculated and displayed for each audio channel and,
2377 where applicable, an overall figure is also given.
2378
2379 It accepts the following option:
2380 @table @option
2381 @item length
2382 Short window length in seconds, used for peak and trough RMS measurement.
2383 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2384
2385 @item metadata
2386
2387 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2388 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2389 disabled.
2390
2391 Available keys for each channel are:
2392 DC_offset
2393 Min_level
2394 Max_level
2395 Min_difference
2396 Max_difference
2397 Mean_difference
2398 RMS_difference
2399 Peak_level
2400 RMS_peak
2401 RMS_trough
2402 Crest_factor
2403 Flat_factor
2404 Peak_count
2405 Noise_floor
2406 Noise_floor_count
2407 Bit_depth
2408 Dynamic_range
2409 Zero_crossings
2410 Zero_crossings_rate
2411 Number_of_NaNs
2412 Number_of_Infs
2413 Number_of_denormals
2414
2415 and for Overall:
2416 DC_offset
2417 Min_level
2418 Max_level
2419 Min_difference
2420 Max_difference
2421 Mean_difference
2422 RMS_difference
2423 Peak_level
2424 RMS_level
2425 RMS_peak
2426 RMS_trough
2427 Flat_factor
2428 Peak_count
2429 Noise_floor
2430 Noise_floor_count
2431 Bit_depth
2432 Number_of_samples
2433 Number_of_NaNs
2434 Number_of_Infs
2435 Number_of_denormals
2436
2437 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2438 this @code{lavfi.astats.Overall.Peak_count}.
2439
2440 For description what each key means read below.
2441
2442 @item reset
2443 Set number of frame after which stats are going to be recalculated.
2444 Default is disabled.
2445
2446 @item measure_perchannel
2447 Select the entries which need to be measured per channel. The metadata keys can
2448 be used as flags, default is @option{all} which measures everything.
2449 @option{none} disables all per channel measurement.
2450
2451 @item measure_overall
2452 Select the entries which need to be measured overall. The metadata keys can
2453 be used as flags, default is @option{all} which measures everything.
2454 @option{none} disables all overall measurement.
2455
2456 @end table
2457
2458 A description of each shown parameter follows:
2459
2460 @table @option
2461 @item DC offset
2462 Mean amplitude displacement from zero.
2463
2464 @item Min level
2465 Minimal sample level.
2466
2467 @item Max level
2468 Maximal sample level.
2469
2470 @item Min difference
2471 Minimal difference between two consecutive samples.
2472
2473 @item Max difference
2474 Maximal difference between two consecutive samples.
2475
2476 @item Mean difference
2477 Mean difference between two consecutive samples.
2478 The average of each difference between two consecutive samples.
2479
2480 @item RMS difference
2481 Root Mean Square difference between two consecutive samples.
2482
2483 @item Peak level dB
2484 @item RMS level dB
2485 Standard peak and RMS level measured in dBFS.
2486
2487 @item RMS peak dB
2488 @item RMS trough dB
2489 Peak and trough values for RMS level measured over a short window.
2490
2491 @item Crest factor
2492 Standard ratio of peak to RMS level (note: not in dB).
2493
2494 @item Flat factor
2495 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2496 (i.e. either @var{Min level} or @var{Max level}).
2497
2498 @item Peak count
2499 Number of occasions (not the number of samples) that the signal attained either
2500 @var{Min level} or @var{Max level}.
2501
2502 @item Noise floor dB
2503 Minimum local peak measured in dBFS over a short window.
2504
2505 @item Noise floor count
2506 Number of occasions (not the number of samples) that the signal attained
2507 @var{Noise floor}.
2508
2509 @item Bit depth
2510 Overall bit depth of audio. Number of bits used for each sample.
2511
2512 @item Dynamic range
2513 Measured dynamic range of audio in dB.
2514
2515 @item Zero crossings
2516 Number of points where the waveform crosses the zero level axis.
2517
2518 @item Zero crossings rate
2519 Rate of Zero crossings and number of audio samples.
2520 @end table
2521
2522 @section asubboost
2523 Boost subwoofer frequencies.
2524
2525 The filter accepts the following options:
2526
2527 @table @option
2528 @item dry
2529 Set dry gain, how much of original signal is kept. Allowed range is from 0 to 1.
2530 Default value is 0.5.
2531
2532 @item wet
2533 Set wet gain, how much of filtered signal is kept. Allowed range is from 0 to 1.
2534 Default value is 0.8.
2535
2536 @item decay
2537 Set delay line decay gain value. Allowed range is from 0 to 1.
2538 Default value is 0.7.
2539
2540 @item feedback
2541 Set delay line feedback gain value. Allowed range is from 0 to 1.
2542 Default value is 0.5.
2543
2544 @item cutoff
2545 Set cutoff frequency in herz. Allowed range is 50 to 900.
2546 Default value is 100.
2547
2548 @item slope
2549 Set slope amount for cutoff frequency. Allowed range is 0.0001 to 1.
2550 Default value is 0.5.
2551
2552 @item delay
2553 Set delay. Allowed range is from 1 to 100.
2554 Default value is 20.
2555 @end table
2556
2557 @subsection Commands
2558
2559 This filter supports the all above options as @ref{commands}.
2560
2561 @section atempo
2562
2563 Adjust audio tempo.
2564
2565 The filter accepts exactly one parameter, the audio tempo. If not
2566 specified then the filter will assume nominal 1.0 tempo. Tempo must
2567 be in the [0.5, 100.0] range.
2568
2569 Note that tempo greater than 2 will skip some samples rather than
2570 blend them in.  If for any reason this is a concern it is always
2571 possible to daisy-chain several instances of atempo to achieve the
2572 desired product tempo.
2573
2574 @subsection Examples
2575
2576 @itemize
2577 @item
2578 Slow down audio to 80% tempo:
2579 @example
2580 atempo=0.8
2581 @end example
2582
2583 @item
2584 To speed up audio to 300% tempo:
2585 @example
2586 atempo=3
2587 @end example
2588
2589 @item
2590 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2591 @example
2592 atempo=sqrt(3),atempo=sqrt(3)
2593 @end example
2594 @end itemize
2595
2596 @subsection Commands
2597
2598 This filter supports the following commands:
2599 @table @option
2600 @item tempo
2601 Change filter tempo scale factor.
2602 Syntax for the command is : "@var{tempo}"
2603 @end table
2604
2605 @section atrim
2606
2607 Trim the input so that the output contains one continuous subpart of the input.
2608
2609 It accepts the following parameters:
2610 @table @option
2611 @item start
2612 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2613 sample with the timestamp @var{start} will be the first sample in the output.
2614
2615 @item end
2616 Specify time of the first audio sample that will be dropped, i.e. the
2617 audio sample immediately preceding the one with the timestamp @var{end} will be
2618 the last sample in the output.
2619
2620 @item start_pts
2621 Same as @var{start}, except this option sets the start timestamp in samples
2622 instead of seconds.
2623
2624 @item end_pts
2625 Same as @var{end}, except this option sets the end timestamp in samples instead
2626 of seconds.
2627
2628 @item duration
2629 The maximum duration of the output in seconds.
2630
2631 @item start_sample
2632 The number of the first sample that should be output.
2633
2634 @item end_sample
2635 The number of the first sample that should be dropped.
2636 @end table
2637
2638 @option{start}, @option{end}, and @option{duration} are expressed as time
2639 duration specifications; see
2640 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2641
2642 Note that the first two sets of the start/end options and the @option{duration}
2643 option look at the frame timestamp, while the _sample options simply count the
2644 samples that pass through the filter. So start/end_pts and start/end_sample will
2645 give different results when the timestamps are wrong, inexact or do not start at
2646 zero. Also note that this filter does not modify the timestamps. If you wish
2647 to have the output timestamps start at zero, insert the asetpts filter after the
2648 atrim filter.
2649
2650 If multiple start or end options are set, this filter tries to be greedy and
2651 keep all samples that match at least one of the specified constraints. To keep
2652 only the part that matches all the constraints at once, chain multiple atrim
2653 filters.
2654
2655 The defaults are such that all the input is kept. So it is possible to set e.g.
2656 just the end values to keep everything before the specified time.
2657
2658 Examples:
2659 @itemize
2660 @item
2661 Drop everything except the second minute of input:
2662 @example
2663 ffmpeg -i INPUT -af atrim=60:120
2664 @end example
2665
2666 @item
2667 Keep only the first 1000 samples:
2668 @example
2669 ffmpeg -i INPUT -af atrim=end_sample=1000
2670 @end example
2671
2672 @end itemize
2673
2674 @section axcorrelate
2675 Calculate normalized cross-correlation between two input audio streams.
2676
2677 Resulted samples are always between -1 and 1 inclusive.
2678 If result is 1 it means two input samples are highly correlated in that selected segment.
2679 Result 0 means they are not correlated at all.
2680 If result is -1 it means two input samples are out of phase, which means they cancel each
2681 other.
2682
2683 The filter accepts the following options:
2684
2685 @table @option
2686 @item size
2687 Set size of segment over which cross-correlation is calculated.
2688 Default is 256. Allowed range is from 2 to 131072.
2689
2690 @item algo
2691 Set algorithm for cross-correlation. Can be @code{slow} or @code{fast}.
2692 Default is @code{slow}. Fast algorithm assumes mean values over any given segment
2693 are always zero and thus need much less calculations to make.
2694 This is generally not true, but is valid for typical audio streams.
2695 @end table
2696
2697 @subsection Examples
2698
2699 @itemize
2700 @item
2701 Calculate correlation between channels in stereo audio stream:
2702 @example
2703 ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
2704 @end example
2705 @end itemize
2706
2707 @section bandpass
2708
2709 Apply a two-pole Butterworth band-pass filter with central
2710 frequency @var{frequency}, and (3dB-point) band-width width.
2711 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2712 instead of the default: constant 0dB peak gain.
2713 The filter roll off at 6dB per octave (20dB per decade).
2714
2715 The filter accepts the following options:
2716
2717 @table @option
2718 @item frequency, f
2719 Set the filter's central frequency. Default is @code{3000}.
2720
2721 @item csg
2722 Constant skirt gain if set to 1. Defaults to 0.
2723
2724 @item width_type, t
2725 Set method to specify band-width of filter.
2726 @table @option
2727 @item h
2728 Hz
2729 @item q
2730 Q-Factor
2731 @item o
2732 octave
2733 @item s
2734 slope
2735 @item k
2736 kHz
2737 @end table
2738
2739 @item width, w
2740 Specify the band-width of a filter in width_type units.
2741
2742 @item mix, m
2743 How much to use filtered signal in output. Default is 1.
2744 Range is between 0 and 1.
2745
2746 @item channels, c
2747 Specify which channels to filter, by default all available are filtered.
2748
2749 @item normalize, n
2750 Normalize biquad coefficients, by default is disabled.
2751 Enabling it will normalize magnitude response at DC to 0dB.
2752
2753 @item transform, a
2754 Set transform type of IIR filter.
2755 @table @option
2756 @item di
2757 @item dii
2758 @item tdii
2759 @item latt
2760 @end table
2761 @end table
2762
2763 @subsection Commands
2764
2765 This filter supports the following commands:
2766 @table @option
2767 @item frequency, f
2768 Change bandpass frequency.
2769 Syntax for the command is : "@var{frequency}"
2770
2771 @item width_type, t
2772 Change bandpass width_type.
2773 Syntax for the command is : "@var{width_type}"
2774
2775 @item width, w
2776 Change bandpass width.
2777 Syntax for the command is : "@var{width}"
2778
2779 @item mix, m
2780 Change bandpass mix.
2781 Syntax for the command is : "@var{mix}"
2782 @end table
2783
2784 @section bandreject
2785
2786 Apply a two-pole Butterworth band-reject filter with central
2787 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2788 The filter roll off at 6dB per octave (20dB per decade).
2789
2790 The filter accepts the following options:
2791
2792 @table @option
2793 @item frequency, f
2794 Set the filter's central frequency. Default is @code{3000}.
2795
2796 @item width_type, t
2797 Set method to specify band-width of filter.
2798 @table @option
2799 @item h
2800 Hz
2801 @item q
2802 Q-Factor
2803 @item o
2804 octave
2805 @item s
2806 slope
2807 @item k
2808 kHz
2809 @end table
2810
2811 @item width, w
2812 Specify the band-width of a filter in width_type units.
2813
2814 @item mix, m
2815 How much to use filtered signal in output. Default is 1.
2816 Range is between 0 and 1.
2817
2818 @item channels, c
2819 Specify which channels to filter, by default all available are filtered.
2820
2821 @item normalize, n
2822 Normalize biquad coefficients, by default is disabled.
2823 Enabling it will normalize magnitude response at DC to 0dB.
2824
2825 @item transform, a
2826 Set transform type of IIR filter.
2827 @table @option
2828 @item di
2829 @item dii
2830 @item tdii
2831 @item latt
2832 @end table
2833 @end table
2834
2835 @subsection Commands
2836
2837 This filter supports the following commands:
2838 @table @option
2839 @item frequency, f
2840 Change bandreject frequency.
2841 Syntax for the command is : "@var{frequency}"
2842
2843 @item width_type, t
2844 Change bandreject width_type.
2845 Syntax for the command is : "@var{width_type}"
2846
2847 @item width, w
2848 Change bandreject width.
2849 Syntax for the command is : "@var{width}"
2850
2851 @item mix, m
2852 Change bandreject mix.
2853 Syntax for the command is : "@var{mix}"
2854 @end table
2855
2856 @section bass, lowshelf
2857
2858 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2859 shelving filter with a response similar to that of a standard
2860 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2861
2862 The filter accepts the following options:
2863
2864 @table @option
2865 @item gain, g
2866 Give the gain at 0 Hz. Its useful range is about -20
2867 (for a large cut) to +20 (for a large boost).
2868 Beware of clipping when using a positive gain.
2869
2870 @item frequency, f
2871 Set the filter's central frequency and so can be used
2872 to extend or reduce the frequency range to be boosted or cut.
2873 The default value is @code{100} Hz.
2874
2875 @item width_type, t
2876 Set method to specify band-width of filter.
2877 @table @option
2878 @item h
2879 Hz
2880 @item q
2881 Q-Factor
2882 @item o
2883 octave
2884 @item s
2885 slope
2886 @item k
2887 kHz
2888 @end table
2889
2890 @item width, w
2891 Determine how steep is the filter's shelf transition.
2892
2893 @item mix, m
2894 How much to use filtered signal in output. Default is 1.
2895 Range is between 0 and 1.
2896
2897 @item channels, c
2898 Specify which channels to filter, by default all available are filtered.
2899
2900 @item normalize, n
2901 Normalize biquad coefficients, by default is disabled.
2902 Enabling it will normalize magnitude response at DC to 0dB.
2903
2904 @item transform, a
2905 Set transform type of IIR filter.
2906 @table @option
2907 @item di
2908 @item dii
2909 @item tdii
2910 @item latt
2911 @end table
2912 @end table
2913
2914 @subsection Commands
2915
2916 This filter supports the following commands:
2917 @table @option
2918 @item frequency, f
2919 Change bass frequency.
2920 Syntax for the command is : "@var{frequency}"
2921
2922 @item width_type, t
2923 Change bass width_type.
2924 Syntax for the command is : "@var{width_type}"
2925
2926 @item width, w
2927 Change bass width.
2928 Syntax for the command is : "@var{width}"
2929
2930 @item gain, g
2931 Change bass gain.
2932 Syntax for the command is : "@var{gain}"
2933
2934 @item mix, m
2935 Change bass mix.
2936 Syntax for the command is : "@var{mix}"
2937 @end table
2938
2939 @section biquad
2940
2941 Apply a biquad IIR filter with the given coefficients.
2942 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2943 are the numerator and denominator coefficients respectively.
2944 and @var{channels}, @var{c} specify which channels to filter, by default all
2945 available are filtered.
2946
2947 @subsection Commands
2948
2949 This filter supports the following commands:
2950 @table @option
2951 @item a0
2952 @item a1
2953 @item a2
2954 @item b0
2955 @item b1
2956 @item b2
2957 Change biquad parameter.
2958 Syntax for the command is : "@var{value}"
2959
2960 @item mix, m
2961 How much to use filtered signal in output. Default is 1.
2962 Range is between 0 and 1.
2963
2964 @item channels, c
2965 Specify which channels to filter, by default all available are filtered.
2966
2967 @item normalize, n
2968 Normalize biquad coefficients, by default is disabled.
2969 Enabling it will normalize magnitude response at DC to 0dB.
2970
2971 @item transform, a
2972 Set transform type of IIR filter.
2973 @table @option
2974 @item di
2975 @item dii
2976 @item tdii
2977 @item latt
2978 @end table
2979 @end table
2980
2981 @section bs2b
2982 Bauer stereo to binaural transformation, which improves headphone listening of
2983 stereo audio records.
2984
2985 To enable compilation of this filter you need to configure FFmpeg with
2986 @code{--enable-libbs2b}.
2987
2988 It accepts the following parameters:
2989 @table @option
2990
2991 @item profile
2992 Pre-defined crossfeed level.
2993 @table @option
2994
2995 @item default
2996 Default level (fcut=700, feed=50).
2997
2998 @item cmoy
2999 Chu Moy circuit (fcut=700, feed=60).
3000
3001 @item jmeier
3002 Jan Meier circuit (fcut=650, feed=95).
3003
3004 @end table
3005
3006 @item fcut
3007 Cut frequency (in Hz).
3008
3009 @item feed
3010 Feed level (in Hz).
3011
3012 @end table
3013
3014 @section channelmap
3015
3016 Remap input channels to new locations.
3017
3018 It accepts the following parameters:
3019 @table @option
3020 @item map
3021 Map channels from input to output. The argument is a '|'-separated list of
3022 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
3023 @var{in_channel} form. @var{in_channel} can be either the name of the input
3024 channel (e.g. FL for front left) or its index in the input channel layout.
3025 @var{out_channel} is the name of the output channel or its index in the output
3026 channel layout. If @var{out_channel} is not given then it is implicitly an
3027 index, starting with zero and increasing by one for each mapping.
3028
3029 @item channel_layout
3030 The channel layout of the output stream.
3031 @end table
3032
3033 If no mapping is present, the filter will implicitly map input channels to
3034 output channels, preserving indices.
3035
3036 @subsection Examples
3037
3038 @itemize
3039 @item
3040 For example, assuming a 5.1+downmix input MOV file,
3041 @example
3042 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
3043 @end example
3044 will create an output WAV file tagged as stereo from the downmix channels of
3045 the input.
3046
3047 @item
3048 To fix a 5.1 WAV improperly encoded in AAC's native channel order
3049 @example
3050 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
3051 @end example
3052 @end itemize
3053
3054 @section channelsplit
3055
3056 Split each channel from an input audio stream into a separate output stream.
3057
3058 It accepts the following parameters:
3059 @table @option
3060 @item channel_layout
3061 The channel layout of the input stream. The default is "stereo".
3062 @item channels
3063 A channel layout describing the channels to be extracted as separate output streams
3064 or "all" to extract each input channel as a separate stream. The default is "all".
3065
3066 Choosing channels not present in channel layout in the input will result in an error.
3067 @end table
3068
3069 @subsection Examples
3070
3071 @itemize
3072 @item
3073 For example, assuming a stereo input MP3 file,
3074 @example
3075 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
3076 @end example
3077 will create an output Matroska file with two audio streams, one containing only
3078 the left channel and the other the right channel.
3079
3080 @item
3081 Split a 5.1 WAV file into per-channel files:
3082 @example
3083 ffmpeg -i in.wav -filter_complex
3084 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
3085 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
3086 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
3087 side_right.wav
3088 @end example
3089
3090 @item
3091 Extract only LFE from a 5.1 WAV file:
3092 @example
3093 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
3094 -map '[LFE]' lfe.wav
3095 @end example
3096 @end itemize
3097
3098 @section chorus
3099 Add a chorus effect to the audio.
3100
3101 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
3102
3103 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
3104 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
3105 The modulation depth defines the range the modulated delay is played before or after
3106 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
3107 sound tuned around the original one, like in a chorus where some vocals are slightly
3108 off key.
3109
3110 It accepts the following parameters:
3111 @table @option
3112 @item in_gain
3113 Set input gain. Default is 0.4.
3114
3115 @item out_gain
3116 Set output gain. Default is 0.4.
3117
3118 @item delays
3119 Set delays. A typical delay is around 40ms to 60ms.
3120
3121 @item decays
3122 Set decays.
3123
3124 @item speeds
3125 Set speeds.
3126
3127 @item depths
3128 Set depths.
3129 @end table
3130
3131 @subsection Examples
3132
3133 @itemize
3134 @item
3135 A single delay:
3136 @example
3137 chorus=0.7:0.9:55:0.4:0.25:2
3138 @end example
3139
3140 @item
3141 Two delays:
3142 @example
3143 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
3144 @end example
3145
3146 @item
3147 Fuller sounding chorus with three delays:
3148 @example
3149 chorus=0.5:0.9:50|60|40:0.4|0.32|0.3:0.25|0.4|0.3:2|2.3|1.3
3150 @end example
3151 @end itemize
3152
3153 @section compand
3154 Compress or expand the audio's dynamic range.
3155
3156 It accepts the following parameters:
3157
3158 @table @option
3159
3160 @item attacks
3161 @item decays
3162 A list of times in seconds for each channel over which the instantaneous level
3163 of the input signal is averaged to determine its volume. @var{attacks} refers to
3164 increase of volume and @var{decays} refers to decrease of volume. For most
3165 situations, the attack time (response to the audio getting louder) should be
3166 shorter than the decay time, because the human ear is more sensitive to sudden
3167 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
3168 a typical value for decay is 0.8 seconds.
3169 If specified number of attacks & decays is lower than number of channels, the last
3170 set attack/decay will be used for all remaining channels.
3171
3172 @item points
3173 A list of points for the transfer function, specified in dB relative to the
3174 maximum possible signal amplitude. Each key points list must be defined using
3175 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
3176 @code{x0/y0 x1/y1 x2/y2 ....}
3177
3178 The input values must be in strictly increasing order but the transfer function
3179 does not have to be monotonically rising. The point @code{0/0} is assumed but
3180 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
3181 function are @code{-70/-70|-60/-20|1/0}.
3182
3183 @item soft-knee
3184 Set the curve radius in dB for all joints. It defaults to 0.01.
3185
3186 @item gain
3187 Set the additional gain in dB to be applied at all points on the transfer
3188 function. This allows for easy adjustment of the overall gain.
3189 It defaults to 0.
3190
3191 @item volume
3192 Set an initial volume, in dB, to be assumed for each channel when filtering
3193 starts. This permits the user to supply a nominal level initially, so that, for
3194 example, a very large gain is not applied to initial signal levels before the
3195 companding has begun to operate. A typical value for audio which is initially
3196 quiet is -90 dB. It defaults to 0.
3197
3198 @item delay
3199 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
3200 delayed before being fed to the volume adjuster. Specifying a delay
3201 approximately equal to the attack/decay times allows the filter to effectively
3202 operate in predictive rather than reactive mode. It defaults to 0.
3203
3204 @end table
3205
3206 @subsection Examples
3207
3208 @itemize
3209 @item
3210 Make music with both quiet and loud passages suitable for listening to in a
3211 noisy environment:
3212 @example
3213 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
3214 @end example
3215
3216 Another example for audio with whisper and explosion parts:
3217 @example
3218 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
3219 @end example
3220
3221 @item
3222 A noise gate for when the noise is at a lower level than the signal:
3223 @example
3224 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
3225 @end example
3226
3227 @item
3228 Here is another noise gate, this time for when the noise is at a higher level
3229 than the signal (making it, in some ways, similar to squelch):
3230 @example
3231 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3232 @end example
3233
3234 @item
3235 2:1 compression starting at -6dB:
3236 @example
3237 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3238 @end example
3239
3240 @item
3241 2:1 compression starting at -9dB:
3242 @example
3243 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3244 @end example
3245
3246 @item
3247 2:1 compression starting at -12dB:
3248 @example
3249 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3250 @end example
3251
3252 @item
3253 2:1 compression starting at -18dB:
3254 @example
3255 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3256 @end example
3257
3258 @item
3259 3:1 compression starting at -15dB:
3260 @example
3261 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3262 @end example
3263
3264 @item
3265 Compressor/Gate:
3266 @example
3267 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3268 @end example
3269
3270 @item
3271 Expander:
3272 @example
3273 compand=attacks=0:points=-80/-169|-54/-80|-49.5/-64.6|-41.1/-41.1|-25.8/-15|-10.8/-4.5|0/0|20/8.3
3274 @end example
3275
3276 @item
3277 Hard limiter at -6dB:
3278 @example
3279 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3280 @end example
3281
3282 @item
3283 Hard limiter at -12dB:
3284 @example
3285 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3286 @end example
3287
3288 @item
3289 Hard noise gate at -35 dB:
3290 @example
3291 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3292 @end example
3293
3294 @item
3295 Soft limiter:
3296 @example
3297 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3298 @end example
3299 @end itemize
3300
3301 @section compensationdelay
3302
3303 Compensation Delay Line is a metric based delay to compensate differing
3304 positions of microphones or speakers.
3305
3306 For example, you have recorded guitar with two microphones placed in
3307 different locations. Because the front of sound wave has fixed speed in
3308 normal conditions, the phasing of microphones can vary and depends on
3309 their location and interposition. The best sound mix can be achieved when
3310 these microphones are in phase (synchronized). Note that a distance of
3311 ~30 cm between microphones makes one microphone capture the signal in
3312 antiphase to the other microphone. That makes the final mix sound moody.
3313 This filter helps to solve phasing problems by adding different delays
3314 to each microphone track and make them synchronized.
3315
3316 The best result can be reached when you take one track as base and
3317 synchronize other tracks one by one with it.
3318 Remember that synchronization/delay tolerance depends on sample rate, too.
3319 Higher sample rates will give more tolerance.
3320
3321 The filter accepts the following parameters:
3322
3323 @table @option
3324 @item mm
3325 Set millimeters distance. This is compensation distance for fine tuning.
3326 Default is 0.
3327
3328 @item cm
3329 Set cm distance. This is compensation distance for tightening distance setup.
3330 Default is 0.
3331
3332 @item m
3333 Set meters distance. This is compensation distance for hard distance setup.
3334 Default is 0.
3335
3336 @item dry
3337 Set dry amount. Amount of unprocessed (dry) signal.
3338 Default is 0.
3339
3340 @item wet
3341 Set wet amount. Amount of processed (wet) signal.
3342 Default is 1.
3343
3344 @item temp
3345 Set temperature in degrees Celsius. This is the temperature of the environment.
3346 Default is 20.
3347 @end table
3348
3349 @section crossfeed
3350 Apply headphone crossfeed filter.
3351
3352 Crossfeed is the process of blending the left and right channels of stereo
3353 audio recording.
3354 It is mainly used to reduce extreme stereo separation of low frequencies.
3355
3356 The intent is to produce more speaker like sound to the listener.
3357
3358 The filter accepts the following options:
3359
3360 @table @option
3361 @item strength
3362 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3363 This sets gain of low shelf filter for side part of stereo image.
3364 Default is -6dB. Max allowed is -30db when strength is set to 1.
3365
3366 @item range
3367 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3368 This sets cut off frequency of low shelf filter. Default is cut off near
3369 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3370
3371 @item slope
3372 Set curve slope of low shelf filter. Default is 0.5.
3373 Allowed range is from 0.01 to 1.
3374
3375 @item level_in
3376 Set input gain. Default is 0.9.
3377
3378 @item level_out
3379 Set output gain. Default is 1.
3380 @end table
3381
3382 @subsection Commands
3383
3384 This filter supports the all above options as @ref{commands}.
3385
3386 @section crystalizer
3387 Simple algorithm to expand audio dynamic range.
3388
3389 The filter accepts the following options:
3390
3391 @table @option
3392 @item i
3393 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3394 (unchanged sound) to 10.0 (maximum effect).
3395
3396 @item c
3397 Enable clipping. By default is enabled.
3398 @end table
3399
3400 @subsection Commands
3401
3402 This filter supports the all above options as @ref{commands}.
3403
3404 @section dcshift
3405 Apply a DC shift to the audio.
3406
3407 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3408 in the recording chain) from the audio. The effect of a DC offset is reduced
3409 headroom and hence volume. The @ref{astats} filter can be used to determine if
3410 a signal has a DC offset.
3411
3412 @table @option
3413 @item shift
3414 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3415 the audio.
3416
3417 @item limitergain
3418 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3419 used to prevent clipping.
3420 @end table
3421
3422 @section deesser
3423
3424 Apply de-essing to the audio samples.
3425
3426 @table @option
3427 @item i
3428 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3429 Default is 0.
3430
3431 @item m
3432 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3433 Default is 0.5.
3434
3435 @item f
3436 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3437 Default is 0.5.
3438
3439 @item s
3440 Set the output mode.
3441
3442 It accepts the following values:
3443 @table @option
3444 @item i
3445 Pass input unchanged.
3446
3447 @item o
3448 Pass ess filtered out.
3449
3450 @item e
3451 Pass only ess.
3452
3453 Default value is @var{o}.
3454 @end table
3455
3456 @end table
3457
3458 @section drmeter
3459 Measure audio dynamic range.
3460
3461 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3462 is found in transition material. And anything less that 8 have very poor dynamics
3463 and is very compressed.
3464
3465 The filter accepts the following options:
3466
3467 @table @option
3468 @item length
3469 Set window length in seconds used to split audio into segments of equal length.
3470 Default is 3 seconds.
3471 @end table
3472
3473 @section dynaudnorm
3474 Dynamic Audio Normalizer.
3475
3476 This filter applies a certain amount of gain to the input audio in order
3477 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3478 contrast to more "simple" normalization algorithms, the Dynamic Audio
3479 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3480 This allows for applying extra gain to the "quiet" sections of the audio
3481 while avoiding distortions or clipping the "loud" sections. In other words:
3482 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3483 sections, in the sense that the volume of each section is brought to the
3484 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3485 this goal *without* applying "dynamic range compressing". It will retain 100%
3486 of the dynamic range *within* each section of the audio file.
3487
3488 @table @option
3489 @item framelen, f
3490 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3491 Default is 500 milliseconds.
3492 The Dynamic Audio Normalizer processes the input audio in small chunks,
3493 referred to as frames. This is required, because a peak magnitude has no
3494 meaning for just a single sample value. Instead, we need to determine the
3495 peak magnitude for a contiguous sequence of sample values. While a "standard"
3496 normalizer would simply use the peak magnitude of the complete file, the
3497 Dynamic Audio Normalizer determines the peak magnitude individually for each
3498 frame. The length of a frame is specified in milliseconds. By default, the
3499 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3500 been found to give good results with most files.
3501 Note that the exact frame length, in number of samples, will be determined
3502 automatically, based on the sampling rate of the individual input audio file.
3503
3504 @item gausssize, g
3505 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3506 number. Default is 31.
3507 Probably the most important parameter of the Dynamic Audio Normalizer is the
3508 @code{window size} of the Gaussian smoothing filter. The filter's window size
3509 is specified in frames, centered around the current frame. For the sake of
3510 simplicity, this must be an odd number. Consequently, the default value of 31
3511 takes into account the current frame, as well as the 15 preceding frames and
3512 the 15 subsequent frames. Using a larger window results in a stronger
3513 smoothing effect and thus in less gain variation, i.e. slower gain
3514 adaptation. Conversely, using a smaller window results in a weaker smoothing
3515 effect and thus in more gain variation, i.e. faster gain adaptation.
3516 In other words, the more you increase this value, the more the Dynamic Audio
3517 Normalizer will behave like a "traditional" normalization filter. On the
3518 contrary, the more you decrease this value, the more the Dynamic Audio
3519 Normalizer will behave like a dynamic range compressor.
3520
3521 @item peak, p
3522 Set the target peak value. This specifies the highest permissible magnitude
3523 level for the normalized audio input. This filter will try to approach the
3524 target peak magnitude as closely as possible, but at the same time it also
3525 makes sure that the normalized signal will never exceed the peak magnitude.
3526 A frame's maximum local gain factor is imposed directly by the target peak
3527 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3528 It is not recommended to go above this value.
3529
3530 @item maxgain, m
3531 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3532 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3533 factor for each input frame, i.e. the maximum gain factor that does not
3534 result in clipping or distortion. The maximum gain factor is determined by
3535 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3536 additionally bounds the frame's maximum gain factor by a predetermined
3537 (global) maximum gain factor. This is done in order to avoid excessive gain
3538 factors in "silent" or almost silent frames. By default, the maximum gain
3539 factor is 10.0, For most inputs the default value should be sufficient and
3540 it usually is not recommended to increase this value. Though, for input
3541 with an extremely low overall volume level, it may be necessary to allow even
3542 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3543 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3544 Instead, a "sigmoid" threshold function will be applied. This way, the
3545 gain factors will smoothly approach the threshold value, but never exceed that
3546 value.
3547
3548 @item targetrms, r
3549 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3550 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3551 This means that the maximum local gain factor for each frame is defined
3552 (only) by the frame's highest magnitude sample. This way, the samples can
3553 be amplified as much as possible without exceeding the maximum signal
3554 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3555 Normalizer can also take into account the frame's root mean square,
3556 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3557 determine the power of a time-varying signal. It is therefore considered
3558 that the RMS is a better approximation of the "perceived loudness" than
3559 just looking at the signal's peak magnitude. Consequently, by adjusting all
3560 frames to a constant RMS value, a uniform "perceived loudness" can be
3561 established. If a target RMS value has been specified, a frame's local gain
3562 factor is defined as the factor that would result in exactly that RMS value.
3563 Note, however, that the maximum local gain factor is still restricted by the
3564 frame's highest magnitude sample, in order to prevent clipping.
3565
3566 @item coupling, n
3567 Enable channels coupling. By default is enabled.
3568 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3569 amount. This means the same gain factor will be applied to all channels, i.e.
3570 the maximum possible gain factor is determined by the "loudest" channel.
3571 However, in some recordings, it may happen that the volume of the different
3572 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3573 In this case, this option can be used to disable the channel coupling. This way,
3574 the gain factor will be determined independently for each channel, depending
3575 only on the individual channel's highest magnitude sample. This allows for
3576 harmonizing the volume of the different channels.
3577
3578 @item correctdc, c
3579 Enable DC bias correction. By default is disabled.
3580 An audio signal (in the time domain) is a sequence of sample values.
3581 In the Dynamic Audio Normalizer these sample values are represented in the
3582 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3583 audio signal, or "waveform", should be centered around the zero point.
3584 That means if we calculate the mean value of all samples in a file, or in a
3585 single frame, then the result should be 0.0 or at least very close to that
3586 value. If, however, there is a significant deviation of the mean value from
3587 0.0, in either positive or negative direction, this is referred to as a
3588 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3589 Audio Normalizer provides optional DC bias correction.
3590 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3591 the mean value, or "DC correction" offset, of each input frame and subtract
3592 that value from all of the frame's sample values which ensures those samples
3593 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3594 boundaries, the DC correction offset values will be interpolated smoothly
3595 between neighbouring frames.
3596
3597 @item altboundary, b
3598 Enable alternative boundary mode. By default is disabled.
3599 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3600 around each frame. This includes the preceding frames as well as the
3601 subsequent frames. However, for the "boundary" frames, located at the very
3602 beginning and at the very end of the audio file, not all neighbouring
3603 frames are available. In particular, for the first few frames in the audio
3604 file, the preceding frames are not known. And, similarly, for the last few
3605 frames in the audio file, the subsequent frames are not known. Thus, the
3606 question arises which gain factors should be assumed for the missing frames
3607 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3608 to deal with this situation. The default boundary mode assumes a gain factor
3609 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3610 "fade out" at the beginning and at the end of the input, respectively.
3611
3612 @item compress, s
3613 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3614 By default, the Dynamic Audio Normalizer does not apply "traditional"
3615 compression. This means that signal peaks will not be pruned and thus the
3616 full dynamic range will be retained within each local neighbourhood. However,
3617 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3618 normalization algorithm with a more "traditional" compression.
3619 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3620 (thresholding) function. If (and only if) the compression feature is enabled,
3621 all input frames will be processed by a soft knee thresholding function prior
3622 to the actual normalization process. Put simply, the thresholding function is
3623 going to prune all samples whose magnitude exceeds a certain threshold value.
3624 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3625 value. Instead, the threshold value will be adjusted for each individual
3626 frame.
3627 In general, smaller parameters result in stronger compression, and vice versa.
3628 Values below 3.0 are not recommended, because audible distortion may appear.
3629
3630 @item threshold, t
3631 Set the target threshold value. This specifies the lowest permissible
3632 magnitude level for the audio input which will be normalized.
3633 If input frame volume is above this value frame will be normalized.
3634 Otherwise frame may not be normalized at all. The default value is set
3635 to 0, which means all input frames will be normalized.
3636 This option is mostly useful if digital noise is not wanted to be amplified.
3637 @end table
3638
3639 @subsection Commands
3640
3641 This filter supports the all above options as @ref{commands}.
3642
3643 @section earwax
3644
3645 Make audio easier to listen to on headphones.
3646
3647 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3648 so that when listened to on headphones the stereo image is moved from
3649 inside your head (standard for headphones) to outside and in front of
3650 the listener (standard for speakers).
3651
3652 Ported from SoX.
3653
3654 @section equalizer
3655
3656 Apply a two-pole peaking equalisation (EQ) filter. With this
3657 filter, the signal-level at and around a selected frequency can
3658 be increased or decreased, whilst (unlike bandpass and bandreject
3659 filters) that at all other frequencies is unchanged.
3660
3661 In order to produce complex equalisation curves, this filter can
3662 be given several times, each with a different central frequency.
3663
3664 The filter accepts the following options:
3665
3666 @table @option
3667 @item frequency, f
3668 Set the filter's central frequency in Hz.
3669
3670 @item width_type, t
3671 Set method to specify band-width of filter.
3672 @table @option
3673 @item h
3674 Hz
3675 @item q
3676 Q-Factor
3677 @item o
3678 octave
3679 @item s
3680 slope
3681 @item k
3682 kHz
3683 @end table
3684
3685 @item width, w
3686 Specify the band-width of a filter in width_type units.
3687
3688 @item gain, g
3689 Set the required gain or attenuation in dB.
3690 Beware of clipping when using a positive gain.
3691
3692 @item mix, m
3693 How much to use filtered signal in output. Default is 1.
3694 Range is between 0 and 1.
3695
3696 @item channels, c
3697 Specify which channels to filter, by default all available are filtered.
3698
3699 @item normalize, n
3700 Normalize biquad coefficients, by default is disabled.
3701 Enabling it will normalize magnitude response at DC to 0dB.
3702
3703 @item transform, a
3704 Set transform type of IIR filter.
3705 @table @option
3706 @item di
3707 @item dii
3708 @item tdii
3709 @item latt
3710 @end table
3711 @end table
3712
3713 @subsection Examples
3714 @itemize
3715 @item
3716 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3717 @example
3718 equalizer=f=1000:t=h:width=200:g=-10
3719 @end example
3720
3721 @item
3722 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3723 @example
3724 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3725 @end example
3726 @end itemize
3727
3728 @subsection Commands
3729
3730 This filter supports the following commands:
3731 @table @option
3732 @item frequency, f
3733 Change equalizer frequency.
3734 Syntax for the command is : "@var{frequency}"
3735
3736 @item width_type, t
3737 Change equalizer width_type.
3738 Syntax for the command is : "@var{width_type}"
3739
3740 @item width, w
3741 Change equalizer width.
3742 Syntax for the command is : "@var{width}"
3743
3744 @item gain, g
3745 Change equalizer gain.
3746 Syntax for the command is : "@var{gain}"
3747
3748 @item mix, m
3749 Change equalizer mix.
3750 Syntax for the command is : "@var{mix}"
3751 @end table
3752
3753 @section extrastereo
3754
3755 Linearly increases the difference between left and right channels which
3756 adds some sort of "live" effect to playback.
3757
3758 The filter accepts the following options:
3759
3760 @table @option
3761 @item m
3762 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3763 (average of both channels), with 1.0 sound will be unchanged, with
3764 -1.0 left and right channels will be swapped.
3765
3766 @item c
3767 Enable clipping. By default is enabled.
3768 @end table
3769
3770 @subsection Commands
3771
3772 This filter supports the all above options as @ref{commands}.
3773
3774 @section firequalizer
3775 Apply FIR Equalization using arbitrary frequency response.
3776
3777 The filter accepts the following option:
3778
3779 @table @option
3780 @item gain
3781 Set gain curve equation (in dB). The expression can contain variables:
3782 @table @option
3783 @item f
3784 the evaluated frequency
3785 @item sr
3786 sample rate
3787 @item ch
3788 channel number, set to 0 when multichannels evaluation is disabled
3789 @item chid
3790 channel id, see libavutil/channel_layout.h, set to the first channel id when
3791 multichannels evaluation is disabled
3792 @item chs
3793 number of channels
3794 @item chlayout
3795 channel_layout, see libavutil/channel_layout.h
3796
3797 @end table
3798 and functions:
3799 @table @option
3800 @item gain_interpolate(f)
3801 interpolate gain on frequency f based on gain_entry
3802 @item cubic_interpolate(f)
3803 same as gain_interpolate, but smoother
3804 @end table
3805 This option is also available as command. Default is @code{gain_interpolate(f)}.
3806
3807 @item gain_entry
3808 Set gain entry for gain_interpolate function. The expression can
3809 contain functions:
3810 @table @option
3811 @item entry(f, g)
3812 store gain entry at frequency f with value g
3813 @end table
3814 This option is also available as command.
3815
3816 @item delay
3817 Set filter delay in seconds. Higher value means more accurate.
3818 Default is @code{0.01}.
3819
3820 @item accuracy
3821 Set filter accuracy in Hz. Lower value means more accurate.
3822 Default is @code{5}.
3823
3824 @item wfunc
3825 Set window function. Acceptable values are:
3826 @table @option
3827 @item rectangular
3828 rectangular window, useful when gain curve is already smooth
3829 @item hann
3830 hann window (default)
3831 @item hamming
3832 hamming window
3833 @item blackman
3834 blackman window
3835 @item nuttall3
3836 3-terms continuous 1st derivative nuttall window
3837 @item mnuttall3
3838 minimum 3-terms discontinuous nuttall window
3839 @item nuttall
3840 4-terms continuous 1st derivative nuttall window
3841 @item bnuttall
3842 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3843 @item bharris
3844 blackman-harris window
3845 @item tukey
3846 tukey window
3847 @end table
3848
3849 @item fixed
3850 If enabled, use fixed number of audio samples. This improves speed when
3851 filtering with large delay. Default is disabled.
3852
3853 @item multi
3854 Enable multichannels evaluation on gain. Default is disabled.
3855
3856 @item zero_phase
3857 Enable zero phase mode by subtracting timestamp to compensate delay.
3858 Default is disabled.
3859
3860 @item scale
3861 Set scale used by gain. Acceptable values are:
3862 @table @option
3863 @item linlin
3864 linear frequency, linear gain
3865 @item linlog
3866 linear frequency, logarithmic (in dB) gain (default)
3867 @item loglin
3868 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3869 @item loglog
3870 logarithmic frequency, logarithmic gain
3871 @end table
3872
3873 @item dumpfile
3874 Set file for dumping, suitable for gnuplot.
3875
3876 @item dumpscale
3877 Set scale for dumpfile. Acceptable values are same with scale option.
3878 Default is linlog.
3879
3880 @item fft2
3881 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3882 Default is disabled.
3883
3884 @item min_phase
3885 Enable minimum phase impulse response. Default is disabled.
3886 @end table
3887
3888 @subsection Examples
3889 @itemize
3890 @item
3891 lowpass at 1000 Hz:
3892 @example
3893 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3894 @end example
3895 @item
3896 lowpass at 1000 Hz with gain_entry:
3897 @example
3898 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3899 @end example
3900 @item
3901 custom equalization:
3902 @example
3903 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3904 @end example
3905 @item
3906 higher delay with zero phase to compensate delay:
3907 @example
3908 firequalizer=delay=0.1:fixed=on:zero_phase=on
3909 @end example
3910 @item
3911 lowpass on left channel, highpass on right channel:
3912 @example
3913 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3914 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3915 @end example
3916 @end itemize
3917
3918 @section flanger
3919 Apply a flanging effect to the audio.
3920
3921 The filter accepts the following options:
3922
3923 @table @option
3924 @item delay
3925 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3926
3927 @item depth
3928 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3929
3930 @item regen
3931 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3932 Default value is 0.
3933
3934 @item width
3935 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3936 Default value is 71.
3937
3938 @item speed
3939 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3940
3941 @item shape
3942 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3943 Default value is @var{sinusoidal}.
3944
3945 @item phase
3946 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3947 Default value is 25.
3948
3949 @item interp
3950 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3951 Default is @var{linear}.
3952 @end table
3953
3954 @section haas
3955 Apply Haas effect to audio.
3956
3957 Note that this makes most sense to apply on mono signals.
3958 With this filter applied to mono signals it give some directionality and
3959 stretches its stereo image.
3960
3961 The filter accepts the following options:
3962
3963 @table @option
3964 @item level_in
3965 Set input level. By default is @var{1}, or 0dB
3966
3967 @item level_out
3968 Set output level. By default is @var{1}, or 0dB.
3969
3970 @item side_gain
3971 Set gain applied to side part of signal. By default is @var{1}.
3972
3973 @item middle_source
3974 Set kind of middle source. Can be one of the following:
3975
3976 @table @samp
3977 @item left
3978 Pick left channel.
3979
3980 @item right
3981 Pick right channel.
3982
3983 @item mid
3984 Pick middle part signal of stereo image.
3985
3986 @item side
3987 Pick side part signal of stereo image.
3988 @end table
3989
3990 @item middle_phase
3991 Change middle phase. By default is disabled.
3992
3993 @item left_delay
3994 Set left channel delay. By default is @var{2.05} milliseconds.
3995
3996 @item left_balance
3997 Set left channel balance. By default is @var{-1}.
3998
3999 @item left_gain
4000 Set left channel gain. By default is @var{1}.
4001
4002 @item left_phase
4003 Change left phase. By default is disabled.
4004
4005 @item right_delay
4006 Set right channel delay. By defaults is @var{2.12} milliseconds.
4007
4008 @item right_balance
4009 Set right channel balance. By default is @var{1}.
4010
4011 @item right_gain
4012 Set right channel gain. By default is @var{1}.
4013
4014 @item right_phase
4015 Change right phase. By default is enabled.
4016 @end table
4017
4018 @section hdcd
4019
4020 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
4021 embedded HDCD codes is expanded into a 20-bit PCM stream.
4022
4023 The filter supports the Peak Extend and Low-level Gain Adjustment features
4024 of HDCD, and detects the Transient Filter flag.
4025
4026 @example
4027 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
4028 @end example
4029
4030 When using the filter with wav, note the default encoding for wav is 16-bit,
4031 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
4032 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
4033 @example
4034 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
4035 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
4036 @end example
4037
4038 The filter accepts the following options:
4039
4040 @table @option
4041 @item disable_autoconvert
4042 Disable any automatic format conversion or resampling in the filter graph.
4043
4044 @item process_stereo
4045 Process the stereo channels together. If target_gain does not match between
4046 channels, consider it invalid and use the last valid target_gain.
4047
4048 @item cdt_ms
4049 Set the code detect timer period in ms.
4050
4051 @item force_pe
4052 Always extend peaks above -3dBFS even if PE isn't signaled.
4053
4054 @item analyze_mode
4055 Replace audio with a solid tone and adjust the amplitude to signal some
4056 specific aspect of the decoding process. The output file can be loaded in
4057 an audio editor alongside the original to aid analysis.
4058
4059 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
4060
4061 Modes are:
4062 @table @samp
4063 @item 0, off
4064 Disabled
4065 @item 1, lle
4066 Gain adjustment level at each sample
4067 @item 2, pe
4068 Samples where peak extend occurs
4069 @item 3, cdt
4070 Samples where the code detect timer is active
4071 @item 4, tgm
4072 Samples where the target gain does not match between channels
4073 @end table
4074 @end table
4075
4076 @section headphone
4077
4078 Apply head-related transfer functions (HRTFs) to create virtual
4079 loudspeakers around the user for binaural listening via headphones.
4080 The HRIRs are provided via additional streams, for each channel
4081 one stereo input stream is needed.
4082
4083 The filter accepts the following options:
4084
4085 @table @option
4086 @item map
4087 Set mapping of input streams for convolution.
4088 The argument is a '|'-separated list of channel names in order as they
4089 are given as additional stream inputs for filter.
4090 This also specify number of input streams. Number of input streams
4091 must be not less than number of channels in first stream plus one.
4092
4093 @item gain
4094 Set gain applied to audio. Value is in dB. Default is 0.
4095
4096 @item type
4097 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4098 processing audio in time domain which is slow.
4099 @var{freq} is processing audio in frequency domain which is fast.
4100 Default is @var{freq}.
4101
4102 @item lfe
4103 Set custom gain for LFE channels. Value is in dB. Default is 0.
4104
4105 @item size
4106 Set size of frame in number of samples which will be processed at once.
4107 Default value is @var{1024}. Allowed range is from 1024 to 96000.
4108
4109 @item hrir
4110 Set format of hrir stream.
4111 Default value is @var{stereo}. Alternative value is @var{multich}.
4112 If value is set to @var{stereo}, number of additional streams should
4113 be greater or equal to number of input channels in first input stream.
4114 Also each additional stream should have stereo number of channels.
4115 If value is set to @var{multich}, number of additional streams should
4116 be exactly one. Also number of input channels of additional stream
4117 should be equal or greater than twice number of channels of first input
4118 stream.
4119 @end table
4120
4121 @subsection Examples
4122
4123 @itemize
4124 @item
4125 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4126 each amovie filter use stereo file with IR coefficients as input.
4127 The files give coefficients for each position of virtual loudspeaker:
4128 @example
4129 ffmpeg -i input.wav
4130 -filter_complex "amovie=azi_270_ele_0_DFC.wav[sr];amovie=azi_90_ele_0_DFC.wav[sl];amovie=azi_225_ele_0_DFC.wav[br];amovie=azi_135_ele_0_DFC.wav[bl];amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe];amovie=azi_35_ele_0_DFC.wav[fl];amovie=azi_325_ele_0_DFC.wav[fr];[0:a][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
4131 output.wav
4132 @end example
4133
4134 @item
4135 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4136 but now in @var{multich} @var{hrir} format.
4137 @example
4138 ffmpeg -i input.wav -filter_complex "amovie=minp.wav[hrirs];[0:a][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich"
4139 output.wav
4140 @end example
4141 @end itemize
4142
4143 @section highpass
4144
4145 Apply a high-pass filter with 3dB point frequency.
4146 The filter can be either single-pole, or double-pole (the default).
4147 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4148
4149 The filter accepts the following options:
4150
4151 @table @option
4152 @item frequency, f
4153 Set frequency in Hz. Default is 3000.
4154
4155 @item poles, p
4156 Set number of poles. Default is 2.
4157
4158 @item width_type, t
4159 Set method to specify band-width of filter.
4160 @table @option
4161 @item h
4162 Hz
4163 @item q
4164 Q-Factor
4165 @item o
4166 octave
4167 @item s
4168 slope
4169 @item k
4170 kHz
4171 @end table
4172
4173 @item width, w
4174 Specify the band-width of a filter in width_type units.
4175 Applies only to double-pole filter.
4176 The default is 0.707q and gives a Butterworth response.
4177
4178 @item mix, m
4179 How much to use filtered signal in output. Default is 1.
4180 Range is between 0 and 1.
4181
4182 @item channels, c
4183 Specify which channels to filter, by default all available are filtered.
4184
4185 @item normalize, n
4186 Normalize biquad coefficients, by default is disabled.
4187 Enabling it will normalize magnitude response at DC to 0dB.
4188
4189 @item transform, a
4190 Set transform type of IIR filter.
4191 @table @option
4192 @item di
4193 @item dii
4194 @item tdii
4195 @item latt
4196 @end ta