]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avfilter/af_acrossover: document roll-off of each filter order
[ffmpeg] / 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 for each band split. This controls filter roll-off or steepness
527 of filter transfer function.
528 Available values are:
529
530 @table @samp
531 @item 2nd
532 12 dB per octave.
533 @item 4th
534 24 dB per octave.
535 @item 6th
536 36 dB per octave.
537 @item 8th
538 48 dB per octave.
539 @item 10th
540 60 dB per octave.
541 @item 12th
542 72 dB per octave.
543 @item 14th
544 84 dB per octave.
545 @item 16th
546 96 dB per octave.
547 @item 18th
548 108 dB per octave.
549 @item 20th
550 120 dB per octave.
551 @end table
552
553 Default is @var{4th}.
554
555 @item level
556 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
557 @end table
558
559 @subsection Examples
560
561 @itemize
562 @item
563 Split input audio stream into two bands (low and high) with split frequency of 1500 Hz,
564 each band will be in separate stream:
565 @example
566 ffmpeg -i in.flac -filter_complex 'acrossover=split=1500[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
567 @end example
568
569 @item
570 Same as above, but with higher filter order:
571 @example
572 ffmpeg -i in.flac -filter_complex 'acrossover=split=1500:order=8th[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
573 @end example
574
575 @item
576 Same as above, but also with additional middle band (frequencies between 1500 and 8000):
577 @example
578 ffmpeg -i in.flac -filter_complex 'acrossover=split=1500 8000:order=8th[LOW][MID][HIGH]' -map '[LOW]' low.wav -map '[MID]' mid.wav -map '[HIGH]' high.wav
579 @end example
580 @end itemize
581
582 @section acrusher
583
584 Reduce audio bit resolution.
585
586 This filter is bit crusher with enhanced functionality. A bit crusher
587 is used to audibly reduce number of bits an audio signal is sampled
588 with. This doesn't change the bit depth at all, it just produces the
589 effect. Material reduced in bit depth sounds more harsh and "digital".
590 This filter is able to even round to continuous values instead of discrete
591 bit depths.
592 Additionally it has a D/C offset which results in different crushing of
593 the lower and the upper half of the signal.
594 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
595
596 Another feature of this filter is the logarithmic mode.
597 This setting switches from linear distances between bits to logarithmic ones.
598 The result is a much more "natural" sounding crusher which doesn't gate low
599 signals for example. The human ear has a logarithmic perception,
600 so this kind of crushing is much more pleasant.
601 Logarithmic crushing is also able to get anti-aliased.
602
603 The filter accepts the following options:
604
605 @table @option
606 @item level_in
607 Set level in.
608
609 @item level_out
610 Set level out.
611
612 @item bits
613 Set bit reduction.
614
615 @item mix
616 Set mixing amount.
617
618 @item mode
619 Can be linear: @code{lin} or logarithmic: @code{log}.
620
621 @item dc
622 Set DC.
623
624 @item aa
625 Set anti-aliasing.
626
627 @item samples
628 Set sample reduction.
629
630 @item lfo
631 Enable LFO. By default disabled.
632
633 @item lforange
634 Set LFO range.
635
636 @item lforate
637 Set LFO rate.
638 @end table
639
640 @section acue
641
642 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
643 filter.
644
645 @section adeclick
646 Remove impulsive noise from input audio.
647
648 Samples detected as impulsive noise are replaced by interpolated samples using
649 autoregressive modelling.
650
651 @table @option
652 @item w
653 Set window size, in milliseconds. Allowed range is from @code{10} to
654 @code{100}. Default value is @code{55} milliseconds.
655 This sets size of window which will be processed at once.
656
657 @item o
658 Set window overlap, in percentage of window size. Allowed range is from
659 @code{50} to @code{95}. Default value is @code{75} percent.
660 Setting this to a very high value increases impulsive noise removal but makes
661 whole process much slower.
662
663 @item a
664 Set autoregression order, in percentage of window size. Allowed range is from
665 @code{0} to @code{25}. Default value is @code{2} percent. This option also
666 controls quality of interpolated samples using neighbour good samples.
667
668 @item t
669 Set threshold value. Allowed range is from @code{1} to @code{100}.
670 Default value is @code{2}.
671 This controls the strength of impulsive noise which is going to be removed.
672 The lower value, the more samples will be detected as impulsive noise.
673
674 @item b
675 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
676 @code{10}. Default value is @code{2}.
677 If any two samples detected as noise are spaced less than this value then any
678 sample between those two samples will be also detected as noise.
679
680 @item m
681 Set overlap method.
682
683 It accepts the following values:
684 @table @option
685 @item a
686 Select overlap-add method. Even not interpolated samples are slightly
687 changed with this method.
688
689 @item s
690 Select overlap-save method. Not interpolated samples remain unchanged.
691 @end table
692
693 Default value is @code{a}.
694 @end table
695
696 @section adeclip
697 Remove clipped samples from input audio.
698
699 Samples detected as clipped are replaced by interpolated samples using
700 autoregressive modelling.
701
702 @table @option
703 @item w
704 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
705 Default value is @code{55} milliseconds.
706 This sets size of window which will be processed at once.
707
708 @item o
709 Set window overlap, in percentage of window size. Allowed range is from @code{50}
710 to @code{95}. Default value is @code{75} percent.
711
712 @item a
713 Set autoregression order, in percentage of window size. Allowed range is from
714 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
715 quality of interpolated samples using neighbour good samples.
716
717 @item t
718 Set threshold value. Allowed range is from @code{1} to @code{100}.
719 Default value is @code{10}. Higher values make clip detection less aggressive.
720
721 @item n
722 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
723 Default value is @code{1000}. Higher values make clip detection less aggressive.
724
725 @item m
726 Set overlap method.
727
728 It accepts the following values:
729 @table @option
730 @item a
731 Select overlap-add method. Even not interpolated samples are slightly changed
732 with this method.
733
734 @item s
735 Select overlap-save method. Not interpolated samples remain unchanged.
736 @end table
737
738 Default value is @code{a}.
739 @end table
740
741 @section adelay
742
743 Delay one or more audio channels.
744
745 Samples in delayed channel are filled with silence.
746
747 The filter accepts the following option:
748
749 @table @option
750 @item delays
751 Set list of delays in milliseconds for each channel separated by '|'.
752 Unused delays will be silently ignored. If number of given delays is
753 smaller than number of channels all remaining channels will not be delayed.
754 If you want to delay exact number of samples, append 'S' to number.
755 If you want instead to delay in seconds, append 's' to number.
756
757 @item all
758 Use last set delay for all remaining channels. By default is disabled.
759 This option if enabled changes how option @code{delays} is interpreted.
760 @end table
761
762 @subsection Examples
763
764 @itemize
765 @item
766 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
767 the second channel (and any other channels that may be present) unchanged.
768 @example
769 adelay=1500|0|500
770 @end example
771
772 @item
773 Delay second channel by 500 samples, the third channel by 700 samples and leave
774 the first channel (and any other channels that may be present) unchanged.
775 @example
776 adelay=0|500S|700S
777 @end example
778
779 @item
780 Delay all channels by same number of samples:
781 @example
782 adelay=delays=64S:all=1
783 @end example
784 @end itemize
785
786 @section adenorm
787 Remedy denormals in audio by adding extremely low-level noise.
788
789 This filter shall be placed before any filter that can produce denormals.
790
791 A description of the accepted parameters follows.
792
793 @table @option
794 @item level
795 Set level of added noise in dB. Default is @code{-351}.
796 Allowed range is from -451 to -90.
797
798 @item type
799 Set type of added noise.
800
801 @table @option
802 @item dc
803 Add DC signal.
804 @item ac
805 Add AC signal.
806 @item square
807 Add square signal.
808 @item pulse
809 Add pulse signal.
810 @end table
811
812 Default is @code{dc}.
813 @end table
814
815 @subsection Commands
816
817 This filter supports the all above options as @ref{commands}.
818
819 @section aderivative, aintegral
820
821 Compute derivative/integral of audio stream.
822
823 Applying both filters one after another produces original audio.
824
825 @section aecho
826
827 Apply echoing to the input audio.
828
829 Echoes are reflected sound and can occur naturally amongst mountains
830 (and sometimes large buildings) when talking or shouting; digital echo
831 effects emulate this behaviour and are often used to help fill out the
832 sound of a single instrument or vocal. The time difference between the
833 original signal and the reflection is the @code{delay}, and the
834 loudness of the reflected signal is the @code{decay}.
835 Multiple echoes can have different delays and decays.
836
837 A description of the accepted parameters follows.
838
839 @table @option
840 @item in_gain
841 Set input gain of reflected signal. Default is @code{0.6}.
842
843 @item out_gain
844 Set output gain of reflected signal. Default is @code{0.3}.
845
846 @item delays
847 Set list of time intervals in milliseconds between original signal and reflections
848 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
849 Default is @code{1000}.
850
851 @item decays
852 Set list of loudness of reflected signals separated by '|'.
853 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
854 Default is @code{0.5}.
855 @end table
856
857 @subsection Examples
858
859 @itemize
860 @item
861 Make it sound as if there are twice as many instruments as are actually playing:
862 @example
863 aecho=0.8:0.88:60:0.4
864 @end example
865
866 @item
867 If delay is very short, then it sounds like a (metallic) robot playing music:
868 @example
869 aecho=0.8:0.88:6:0.4
870 @end example
871
872 @item
873 A longer delay will sound like an open air concert in the mountains:
874 @example
875 aecho=0.8:0.9:1000:0.3
876 @end example
877
878 @item
879 Same as above but with one more mountain:
880 @example
881 aecho=0.8:0.9:1000|1800:0.3|0.25
882 @end example
883 @end itemize
884
885 @section aemphasis
886 Audio emphasis filter creates or restores material directly taken from LPs or
887 emphased CDs with different filter curves. E.g. to store music on vinyl the
888 signal has to be altered by a filter first to even out the disadvantages of
889 this recording medium.
890 Once the material is played back the inverse filter has to be applied to
891 restore the distortion of the frequency response.
892
893 The filter accepts the following options:
894
895 @table @option
896 @item level_in
897 Set input gain.
898
899 @item level_out
900 Set output gain.
901
902 @item mode
903 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
904 use @code{production} mode. Default is @code{reproduction} mode.
905
906 @item type
907 Set filter type. Selects medium. Can be one of the following:
908
909 @table @option
910 @item col
911 select Columbia.
912 @item emi
913 select EMI.
914 @item bsi
915 select BSI (78RPM).
916 @item riaa
917 select RIAA.
918 @item cd
919 select Compact Disc (CD).
920 @item 50fm
921 select 50µs (FM).
922 @item 75fm
923 select 75µs (FM).
924 @item 50kf
925 select 50µs (FM-KF).
926 @item 75kf
927 select 75µs (FM-KF).
928 @end table
929 @end table
930
931 @subsection Commands
932
933 This filter supports the all above options as @ref{commands}.
934
935 @section aeval
936
937 Modify an audio signal according to the specified expressions.
938
939 This filter accepts one or more expressions (one for each channel),
940 which are evaluated and used to modify a corresponding audio signal.
941
942 It accepts the following parameters:
943
944 @table @option
945 @item exprs
946 Set the '|'-separated expressions list for each separate channel. If
947 the number of input channels is greater than the number of
948 expressions, the last specified expression is used for the remaining
949 output channels.
950
951 @item channel_layout, c
952 Set output channel layout. If not specified, the channel layout is
953 specified by the number of expressions. If set to @samp{same}, it will
954 use by default the same input channel layout.
955 @end table
956
957 Each expression in @var{exprs} can contain the following constants and functions:
958
959 @table @option
960 @item ch
961 channel number of the current expression
962
963 @item n
964 number of the evaluated sample, starting from 0
965
966 @item s
967 sample rate
968
969 @item t
970 time of the evaluated sample expressed in seconds
971
972 @item nb_in_channels
973 @item nb_out_channels
974 input and output number of channels
975
976 @item val(CH)
977 the value of input channel with number @var{CH}
978 @end table
979
980 Note: this filter is slow. For faster processing you should use a
981 dedicated filter.
982
983 @subsection Examples
984
985 @itemize
986 @item
987 Half volume:
988 @example
989 aeval=val(ch)/2:c=same
990 @end example
991
992 @item
993 Invert phase of the second channel:
994 @example
995 aeval=val(0)|-val(1)
996 @end example
997 @end itemize
998
999 @anchor{afade}
1000 @section afade
1001
1002 Apply fade-in/out effect to input audio.
1003
1004 A description of the accepted parameters follows.
1005
1006 @table @option
1007 @item type, t
1008 Specify the effect type, can be either @code{in} for fade-in, or
1009 @code{out} for a fade-out effect. Default is @code{in}.
1010
1011 @item start_sample, ss
1012 Specify the number of the start sample for starting to apply the fade
1013 effect. Default is 0.
1014
1015 @item nb_samples, ns
1016 Specify the number of samples for which the fade effect has to last. At
1017 the end of the fade-in effect the output audio will have the same
1018 volume as the input audio, at the end of the fade-out transition
1019 the output audio will be silence. Default is 44100.
1020
1021 @item start_time, st
1022 Specify the start time of the fade effect. Default is 0.
1023 The value must be specified as a time duration; see
1024 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1025 for the accepted syntax.
1026 If set this option is used instead of @var{start_sample}.
1027
1028 @item duration, d
1029 Specify the duration of the fade effect. See
1030 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1031 for the accepted syntax.
1032 At the end of the fade-in effect the output audio will have the same
1033 volume as the input audio, at the end of the fade-out transition
1034 the output audio will be silence.
1035 By default the duration is determined by @var{nb_samples}.
1036 If set this option is used instead of @var{nb_samples}.
1037
1038 @item curve
1039 Set curve for fade transition.
1040
1041 It accepts the following values:
1042 @table @option
1043 @item tri
1044 select triangular, linear slope (default)
1045 @item qsin
1046 select quarter of sine wave
1047 @item hsin
1048 select half of sine wave
1049 @item esin
1050 select exponential sine wave
1051 @item log
1052 select logarithmic
1053 @item ipar
1054 select inverted parabola
1055 @item qua
1056 select quadratic
1057 @item cub
1058 select cubic
1059 @item squ
1060 select square root
1061 @item cbr
1062 select cubic root
1063 @item par
1064 select parabola
1065 @item exp
1066 select exponential
1067 @item iqsin
1068 select inverted quarter of sine wave
1069 @item ihsin
1070 select inverted half of sine wave
1071 @item dese
1072 select double-exponential seat
1073 @item desi
1074 select double-exponential sigmoid
1075 @item losi
1076 select logistic sigmoid
1077 @item sinc
1078 select sine cardinal function
1079 @item isinc
1080 select inverted sine cardinal function
1081 @item nofade
1082 no fade applied
1083 @end table
1084 @end table
1085
1086 @subsection Examples
1087
1088 @itemize
1089 @item
1090 Fade in first 15 seconds of audio:
1091 @example
1092 afade=t=in:ss=0:d=15
1093 @end example
1094
1095 @item
1096 Fade out last 25 seconds of a 900 seconds audio:
1097 @example
1098 afade=t=out:st=875:d=25
1099 @end example
1100 @end itemize
1101
1102 @section afftdn
1103 Denoise audio samples with FFT.
1104
1105 A description of the accepted parameters follows.
1106
1107 @table @option
1108 @item nr
1109 Set the noise reduction in dB, allowed range is 0.01 to 97.
1110 Default value is 12 dB.
1111
1112 @item nf
1113 Set the noise floor in dB, allowed range is -80 to -20.
1114 Default value is -50 dB.
1115
1116 @item nt
1117 Set the noise type.
1118
1119 It accepts the following values:
1120 @table @option
1121 @item w
1122 Select white noise.
1123
1124 @item v
1125 Select vinyl noise.
1126
1127 @item s
1128 Select shellac noise.
1129
1130 @item c
1131 Select custom noise, defined in @code{bn} option.
1132
1133 Default value is white noise.
1134 @end table
1135
1136 @item bn
1137 Set custom band noise for every one of 15 bands.
1138 Bands are separated by ' ' or '|'.
1139
1140 @item rf
1141 Set the residual floor in dB, allowed range is -80 to -20.
1142 Default value is -38 dB.
1143
1144 @item tn
1145 Enable noise tracking. By default is disabled.
1146 With this enabled, noise floor is automatically adjusted.
1147
1148 @item tr
1149 Enable residual tracking. By default is disabled.
1150
1151 @item om
1152 Set the output mode.
1153
1154 It accepts the following values:
1155 @table @option
1156 @item i
1157 Pass input unchanged.
1158
1159 @item o
1160 Pass noise filtered out.
1161
1162 @item n
1163 Pass only noise.
1164
1165 Default value is @var{o}.
1166 @end table
1167 @end table
1168
1169 @subsection Commands
1170
1171 This filter supports the following commands:
1172 @table @option
1173 @item sample_noise, sn
1174 Start or stop measuring noise profile.
1175 Syntax for the command is : "start" or "stop" string.
1176 After measuring noise profile is stopped it will be
1177 automatically applied in filtering.
1178
1179 @item noise_reduction, nr
1180 Change noise reduction. Argument is single float number.
1181 Syntax for the command is : "@var{noise_reduction}"
1182
1183 @item noise_floor, nf
1184 Change noise floor. Argument is single float number.
1185 Syntax for the command is : "@var{noise_floor}"
1186
1187 @item output_mode, om
1188 Change output mode operation.
1189 Syntax for the command is : "i", "o" or "n" string.
1190 @end table
1191
1192 @section afftfilt
1193 Apply arbitrary expressions to samples in frequency domain.
1194
1195 @table @option
1196 @item real
1197 Set frequency domain real expression for each separate channel separated
1198 by '|'. Default is "re".
1199 If the number of input channels is greater than the number of
1200 expressions, the last specified expression is used for the remaining
1201 output channels.
1202
1203 @item imag
1204 Set frequency domain imaginary expression for each separate channel
1205 separated by '|'. Default is "im".
1206
1207 Each expression in @var{real} and @var{imag} can contain the following
1208 constants and functions:
1209
1210 @table @option
1211 @item sr
1212 sample rate
1213
1214 @item b
1215 current frequency bin number
1216
1217 @item nb
1218 number of available bins
1219
1220 @item ch
1221 channel number of the current expression
1222
1223 @item chs
1224 number of channels
1225
1226 @item pts
1227 current frame pts
1228
1229 @item re
1230 current real part of frequency bin of current channel
1231
1232 @item im
1233 current imaginary part of frequency bin of current channel
1234
1235 @item real(b, ch)
1236 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1237
1238 @item imag(b, ch)
1239 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1240 @end table
1241
1242 @item win_size
1243 Set window size. Allowed range is from 16 to 131072.
1244 Default is @code{4096}
1245
1246 @item win_func
1247 Set window function. Default is @code{hann}.
1248
1249 @item overlap
1250 Set window overlap. If set to 1, the recommended overlap for selected
1251 window function will be picked. Default is @code{0.75}.
1252 @end table
1253
1254 @subsection Examples
1255
1256 @itemize
1257 @item
1258 Leave almost only low frequencies in audio:
1259 @example
1260 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1261 @end example
1262
1263 @item
1264 Apply robotize effect:
1265 @example
1266 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1267 @end example
1268
1269 @item
1270 Apply whisper effect:
1271 @example
1272 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"
1273 @end example
1274 @end itemize
1275
1276 @anchor{afir}
1277 @section afir
1278
1279 Apply an arbitrary Finite Impulse Response filter.
1280
1281 This filter is designed for applying long FIR filters,
1282 up to 60 seconds long.
1283
1284 It can be used as component for digital crossover filters,
1285 room equalization, cross talk cancellation, wavefield synthesis,
1286 auralization, ambiophonics, ambisonics and spatialization.
1287
1288 This filter uses the streams higher than first one as FIR coefficients.
1289 If the non-first stream holds a single channel, it will be used
1290 for all input channels in the first stream, otherwise
1291 the number of channels in the non-first stream must be same as
1292 the number of channels in the first stream.
1293
1294 It accepts the following parameters:
1295
1296 @table @option
1297 @item dry
1298 Set dry gain. This sets input gain.
1299
1300 @item wet
1301 Set wet gain. This sets final output gain.
1302
1303 @item length
1304 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1305
1306 @item gtype
1307 Enable applying gain measured from power of IR.
1308
1309 Set which approach to use for auto gain measurement.
1310
1311 @table @option
1312 @item none
1313 Do not apply any gain.
1314
1315 @item peak
1316 select peak gain, very conservative approach. This is default value.
1317
1318 @item dc
1319 select DC gain, limited application.
1320
1321 @item gn
1322 select gain to noise approach, this is most popular one.
1323 @end table
1324
1325 @item irgain
1326 Set gain to be applied to IR coefficients before filtering.
1327 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1328
1329 @item irfmt
1330 Set format of IR stream. Can be @code{mono} or @code{input}.
1331 Default is @code{input}.
1332
1333 @item maxir
1334 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1335 Allowed range is 0.1 to 60 seconds.
1336
1337 @item response
1338 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1339 By default it is disabled.
1340
1341 @item channel
1342 Set for which IR channel to display frequency response. By default is first channel
1343 displayed. This option is used only when @var{response} is enabled.
1344
1345 @item size
1346 Set video stream size. This option is used only when @var{response} is enabled.
1347
1348 @item rate
1349 Set video stream frame rate. This option is used only when @var{response} is enabled.
1350
1351 @item minp
1352 Set minimal partition size used for convolution. Default is @var{8192}.
1353 Allowed range is from @var{1} to @var{32768}.
1354 Lower values decreases latency at cost of higher CPU usage.
1355
1356 @item maxp
1357 Set maximal partition size used for convolution. Default is @var{8192}.
1358 Allowed range is from @var{8} to @var{32768}.
1359 Lower values may increase CPU usage.
1360
1361 @item nbirs
1362 Set number of input impulse responses streams which will be switchable at runtime.
1363 Allowed range is from @var{1} to @var{32}. Default is @var{1}.
1364
1365 @item ir
1366 Set IR stream which will be used for convolution, starting from @var{0}, should always be
1367 lower than supplied value by @code{nbirs} option. Default is @var{0}.
1368 This option can be changed at runtime via @ref{commands}.
1369 @end table
1370
1371 @subsection Examples
1372
1373 @itemize
1374 @item
1375 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1376 @example
1377 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1378 @end example
1379 @end itemize
1380
1381 @anchor{aformat}
1382 @section aformat
1383
1384 Set output format constraints for the input audio. The framework will
1385 negotiate the most appropriate format to minimize conversions.
1386
1387 It accepts the following parameters:
1388 @table @option
1389
1390 @item sample_fmts, f
1391 A '|'-separated list of requested sample formats.
1392
1393 @item sample_rates, r
1394 A '|'-separated list of requested sample rates.
1395
1396 @item channel_layouts, cl
1397 A '|'-separated list of requested channel layouts.
1398
1399 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1400 for the required syntax.
1401 @end table
1402
1403 If a parameter is omitted, all values are allowed.
1404
1405 Force the output to either unsigned 8-bit or signed 16-bit stereo
1406 @example
1407 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1408 @end example
1409
1410 @section afreqshift
1411 Apply frequency shift to input audio samples.
1412
1413 The filter accepts the following options:
1414
1415 @table @option
1416 @item shift
1417 Specify frequency shift. Allowed range is -INT_MAX to INT_MAX.
1418 Default value is 0.0.
1419 @end table
1420
1421 @subsection Commands
1422
1423 This filter supports the above option as @ref{commands}.
1424
1425 @section agate
1426
1427 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1428 processing reduces disturbing noise between useful signals.
1429
1430 Gating is done by detecting the volume below a chosen level @var{threshold}
1431 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1432 floor is set via @var{range}. Because an exact manipulation of the signal
1433 would cause distortion of the waveform the reduction can be levelled over
1434 time. This is done by setting @var{attack} and @var{release}.
1435
1436 @var{attack} determines how long the signal has to fall below the threshold
1437 before any reduction will occur and @var{release} sets the time the signal
1438 has to rise above the threshold to reduce the reduction again.
1439 Shorter signals than the chosen attack time will be left untouched.
1440
1441 @table @option
1442 @item level_in
1443 Set input level before filtering.
1444 Default is 1. Allowed range is from 0.015625 to 64.
1445
1446 @item mode
1447 Set the mode of operation. Can be @code{upward} or @code{downward}.
1448 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1449 will be amplified, expanding dynamic range in upward direction.
1450 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1451
1452 @item range
1453 Set the level of gain reduction when the signal is below the threshold.
1454 Default is 0.06125. Allowed range is from 0 to 1.
1455 Setting this to 0 disables reduction and then filter behaves like expander.
1456
1457 @item threshold
1458 If a signal rises above this level the gain reduction is released.
1459 Default is 0.125. Allowed range is from 0 to 1.
1460
1461 @item ratio
1462 Set a ratio by which the signal is reduced.
1463 Default is 2. Allowed range is from 1 to 9000.
1464
1465 @item attack
1466 Amount of milliseconds the signal has to rise above the threshold before gain
1467 reduction stops.
1468 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1469
1470 @item release
1471 Amount of milliseconds the signal has to fall below the threshold before the
1472 reduction is increased again. Default is 250 milliseconds.
1473 Allowed range is from 0.01 to 9000.
1474
1475 @item makeup
1476 Set amount of amplification of signal after processing.
1477 Default is 1. Allowed range is from 1 to 64.
1478
1479 @item knee
1480 Curve the sharp knee around the threshold to enter gain reduction more softly.
1481 Default is 2.828427125. Allowed range is from 1 to 8.
1482
1483 @item detection
1484 Choose if exact signal should be taken for detection or an RMS like one.
1485 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1486
1487 @item link
1488 Choose if the average level between all channels or the louder channel affects
1489 the reduction.
1490 Default is @code{average}. Can be @code{average} or @code{maximum}.
1491 @end table
1492
1493 @subsection Commands
1494
1495 This filter supports the all above options as @ref{commands}.
1496
1497 @section aiir
1498
1499 Apply an arbitrary Infinite Impulse Response filter.
1500
1501 It accepts the following parameters:
1502
1503 @table @option
1504 @item zeros, z
1505 Set B/numerator/zeros/reflection coefficients.
1506
1507 @item poles, p
1508 Set A/denominator/poles/ladder coefficients.
1509
1510 @item gains, k
1511 Set channels gains.
1512
1513 @item dry_gain
1514 Set input gain.
1515
1516 @item wet_gain
1517 Set output gain.
1518
1519 @item format, f
1520 Set coefficients format.
1521
1522 @table @samp
1523 @item ll
1524 lattice-ladder function
1525 @item sf
1526 analog transfer function
1527 @item tf
1528 digital transfer function
1529 @item zp
1530 Z-plane zeros/poles, cartesian (default)
1531 @item pr
1532 Z-plane zeros/poles, polar radians
1533 @item pd
1534 Z-plane zeros/poles, polar degrees
1535 @item sp
1536 S-plane zeros/poles
1537 @end table
1538
1539 @item process, r
1540 Set type of processing.
1541
1542 @table @samp
1543 @item d
1544 direct processing
1545 @item s
1546 serial processing
1547 @item p
1548 parallel processing
1549 @end table
1550
1551 @item precision, e
1552 Set filtering precision.
1553
1554 @table @samp
1555 @item dbl
1556 double-precision floating-point (default)
1557 @item flt
1558 single-precision floating-point
1559 @item i32
1560 32-bit integers
1561 @item i16
1562 16-bit integers
1563 @end table
1564
1565 @item normalize, n
1566 Normalize filter coefficients, by default is enabled.
1567 Enabling it will normalize magnitude response at DC to 0dB.
1568
1569 @item mix
1570 How much to use filtered signal in output. Default is 1.
1571 Range is between 0 and 1.
1572
1573 @item response
1574 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1575 By default it is disabled.
1576
1577 @item channel
1578 Set for which IR channel to display frequency response. By default is first channel
1579 displayed. This option is used only when @var{response} is enabled.
1580
1581 @item size
1582 Set video stream size. This option is used only when @var{response} is enabled.
1583 @end table
1584
1585 Coefficients in @code{tf} and @code{sf} format are separated by spaces and are in ascending
1586 order.
1587
1588 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1589 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1590 imaginary unit.
1591
1592 Different coefficients and gains can be provided for every channel, in such case
1593 use '|' to separate coefficients or gains. Last provided coefficients will be
1594 used for all remaining channels.
1595
1596 @subsection Examples
1597
1598 @itemize
1599 @item
1600 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1601 @example
1602 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
1603 @end example
1604
1605 @item
1606 Same as above but in @code{zp} format:
1607 @example
1608 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
1609 @end example
1610
1611 @item
1612 Apply 3-rd order analog normalized Butterworth low-pass filter, using analog transfer function format:
1613 @example
1614 aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
1615 @end example
1616 @end itemize
1617
1618 @section alimiter
1619
1620 The limiter prevents an input signal from rising over a desired threshold.
1621 This limiter uses lookahead technology to prevent your signal from distorting.
1622 It means that there is a small delay after the signal is processed. Keep in mind
1623 that the delay it produces is the attack time you set.
1624
1625 The filter accepts the following options:
1626
1627 @table @option
1628 @item level_in
1629 Set input gain. Default is 1.
1630
1631 @item level_out
1632 Set output gain. Default is 1.
1633
1634 @item limit
1635 Don't let signals above this level pass the limiter. Default is 1.
1636
1637 @item attack
1638 The limiter will reach its attenuation level in this amount of time in
1639 milliseconds. Default is 5 milliseconds.
1640
1641 @item release
1642 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1643 Default is 50 milliseconds.
1644
1645 @item asc
1646 When gain reduction is always needed ASC takes care of releasing to an
1647 average reduction level rather than reaching a reduction of 0 in the release
1648 time.
1649
1650 @item asc_level
1651 Select how much the release time is affected by ASC, 0 means nearly no changes
1652 in release time while 1 produces higher release times.
1653
1654 @item level
1655 Auto level output signal. Default is enabled.
1656 This normalizes audio back to 0dB if enabled.
1657 @end table
1658
1659 Depending on picked setting it is recommended to upsample input 2x or 4x times
1660 with @ref{aresample} before applying this filter.
1661
1662 @section allpass
1663
1664 Apply a two-pole all-pass filter with central frequency (in Hz)
1665 @var{frequency}, and filter-width @var{width}.
1666 An all-pass filter changes the audio's frequency to phase relationship
1667 without changing its frequency to amplitude relationship.
1668
1669 The filter accepts the following options:
1670
1671 @table @option
1672 @item frequency, f
1673 Set frequency in Hz.
1674
1675 @item width_type, t
1676 Set method to specify band-width of filter.
1677 @table @option
1678 @item h
1679 Hz
1680 @item q
1681 Q-Factor
1682 @item o
1683 octave
1684 @item s
1685 slope
1686 @item k
1687 kHz
1688 @end table
1689
1690 @item width, w
1691 Specify the band-width of a filter in width_type units.
1692
1693 @item mix, m
1694 How much to use filtered signal in output. Default is 1.
1695 Range is between 0 and 1.
1696
1697 @item channels, c
1698 Specify which channels to filter, by default all available are filtered.
1699
1700 @item normalize, n
1701 Normalize biquad coefficients, by default is disabled.
1702 Enabling it will normalize magnitude response at DC to 0dB.
1703
1704 @item order, o
1705 Set the filter order, can be 1 or 2. Default is 2.
1706
1707 @item transform, a
1708 Set transform type of IIR filter.
1709 @table @option
1710 @item di
1711 @item dii
1712 @item tdii
1713 @item latt
1714 @end table
1715 @end table
1716
1717 @subsection Commands
1718
1719 This filter supports the following commands:
1720 @table @option
1721 @item frequency, f
1722 Change allpass frequency.
1723 Syntax for the command is : "@var{frequency}"
1724
1725 @item width_type, t
1726 Change allpass width_type.
1727 Syntax for the command is : "@var{width_type}"
1728
1729 @item width, w
1730 Change allpass width.
1731 Syntax for the command is : "@var{width}"
1732
1733 @item mix, m
1734 Change allpass mix.
1735 Syntax for the command is : "@var{mix}"
1736 @end table
1737
1738 @section aloop
1739
1740 Loop audio samples.
1741
1742 The filter accepts the following options:
1743
1744 @table @option
1745 @item loop
1746 Set the number of loops. Setting this value to -1 will result in infinite loops.
1747 Default is 0.
1748
1749 @item size
1750 Set maximal number of samples. Default is 0.
1751
1752 @item start
1753 Set first sample of loop. Default is 0.
1754 @end table
1755
1756 @anchor{amerge}
1757 @section amerge
1758
1759 Merge two or more audio streams into a single multi-channel stream.
1760
1761 The filter accepts the following options:
1762
1763 @table @option
1764
1765 @item inputs
1766 Set the number of inputs. Default is 2.
1767
1768 @end table
1769
1770 If the channel layouts of the inputs are disjoint, and therefore compatible,
1771 the channel layout of the output will be set accordingly and the channels
1772 will be reordered as necessary. If the channel layouts of the inputs are not
1773 disjoint, the output will have all the channels of the first input then all
1774 the channels of the second input, in that order, and the channel layout of
1775 the output will be the default value corresponding to the total number of
1776 channels.
1777
1778 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1779 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1780 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1781 first input, b1 is the first channel of the second input).
1782
1783 On the other hand, if both input are in stereo, the output channels will be
1784 in the default order: a1, a2, b1, b2, and the channel layout will be
1785 arbitrarily set to 4.0, which may or may not be the expected value.
1786
1787 All inputs must have the same sample rate, and format.
1788
1789 If inputs do not have the same duration, the output will stop with the
1790 shortest.
1791
1792 @subsection Examples
1793
1794 @itemize
1795 @item
1796 Merge two mono files into a stereo stream:
1797 @example
1798 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1799 @end example
1800
1801 @item
1802 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1803 @example
1804 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
1805 @end example
1806 @end itemize
1807
1808 @section amix
1809
1810 Mixes multiple audio inputs into a single output.
1811
1812 Note that this filter only supports float samples (the @var{amerge}
1813 and @var{pan} audio filters support many formats). If the @var{amix}
1814 input has integer samples then @ref{aresample} will be automatically
1815 inserted to perform the conversion to float samples.
1816
1817 For example
1818 @example
1819 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1820 @end example
1821 will mix 3 input audio streams to a single output with the same duration as the
1822 first input and a dropout transition time of 3 seconds.
1823
1824 It accepts the following parameters:
1825 @table @option
1826
1827 @item inputs
1828 The number of inputs. If unspecified, it defaults to 2.
1829
1830 @item duration
1831 How to determine the end-of-stream.
1832 @table @option
1833
1834 @item longest
1835 The duration of the longest input. (default)
1836
1837 @item shortest
1838 The duration of the shortest input.
1839
1840 @item first
1841 The duration of the first input.
1842
1843 @end table
1844
1845 @item dropout_transition
1846 The transition time, in seconds, for volume renormalization when an input
1847 stream ends. The default value is 2 seconds.
1848
1849 @item weights
1850 Specify weight of each input audio stream as sequence.
1851 Each weight is separated by space. By default all inputs have same weight.
1852 @end table
1853
1854 @subsection Commands
1855
1856 This filter supports the following commands:
1857 @table @option
1858 @item weights
1859 Syntax is same as option with same name.
1860 @end table
1861
1862 @section amultiply
1863
1864 Multiply first audio stream with second audio stream and store result
1865 in output audio stream. Multiplication is done by multiplying each
1866 sample from first stream with sample at same position from second stream.
1867
1868 With this element-wise multiplication one can create amplitude fades and
1869 amplitude modulations.
1870
1871 @section anequalizer
1872
1873 High-order parametric multiband equalizer for each channel.
1874
1875 It accepts the following parameters:
1876 @table @option
1877 @item params
1878
1879 This option string is in format:
1880 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1881 Each equalizer band is separated by '|'.
1882
1883 @table @option
1884 @item chn
1885 Set channel number to which equalization will be applied.
1886 If input doesn't have that channel the entry is ignored.
1887
1888 @item f
1889 Set central frequency for band.
1890 If input doesn't have that frequency the entry is ignored.
1891
1892 @item w
1893 Set band width in Hertz.
1894
1895 @item g
1896 Set band gain in dB.
1897
1898 @item t
1899 Set filter type for band, optional, can be:
1900
1901 @table @samp
1902 @item 0
1903 Butterworth, this is default.
1904
1905 @item 1
1906 Chebyshev type 1.
1907
1908 @item 2
1909 Chebyshev type 2.
1910 @end table
1911 @end table
1912
1913 @item curves
1914 With this option activated frequency response of anequalizer is displayed
1915 in video stream.
1916
1917 @item size
1918 Set video stream size. Only useful if curves option is activated.
1919
1920 @item mgain
1921 Set max gain that will be displayed. Only useful if curves option is activated.
1922 Setting this to a reasonable value makes it possible to display gain which is derived from
1923 neighbour bands which are too close to each other and thus produce higher gain
1924 when both are activated.
1925
1926 @item fscale
1927 Set frequency scale used to draw frequency response in video output.
1928 Can be linear or logarithmic. Default is logarithmic.
1929
1930 @item colors
1931 Set color for each channel curve which is going to be displayed in video stream.
1932 This is list of color names separated by space or by '|'.
1933 Unrecognised or missing colors will be replaced by white color.
1934 @end table
1935
1936 @subsection Examples
1937
1938 @itemize
1939 @item
1940 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1941 for first 2 channels using Chebyshev type 1 filter:
1942 @example
1943 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1944 @end example
1945 @end itemize
1946
1947 @subsection Commands
1948
1949 This filter supports the following commands:
1950 @table @option
1951 @item change
1952 Alter existing filter parameters.
1953 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1954
1955 @var{fN} is existing filter number, starting from 0, if no such filter is available
1956 error is returned.
1957 @var{freq} set new frequency parameter.
1958 @var{width} set new width parameter in Hertz.
1959 @var{gain} set new gain parameter in dB.
1960
1961 Full filter invocation with asendcmd may look like this:
1962 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1963 @end table
1964
1965 @section anlmdn
1966
1967 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1968
1969 Each sample is adjusted by looking for other samples with similar contexts. This
1970 context similarity is defined by comparing their surrounding patches of size
1971 @option{p}. Patches are searched in an area of @option{r} around the sample.
1972
1973 The filter accepts the following options:
1974
1975 @table @option
1976 @item s
1977 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1978
1979 @item p
1980 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1981 Default value is 2 milliseconds.
1982
1983 @item r
1984 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1985 Default value is 6 milliseconds.
1986
1987 @item o
1988 Set the output mode.
1989
1990 It accepts the following values:
1991 @table @option
1992 @item i
1993 Pass input unchanged.
1994
1995 @item o
1996 Pass noise filtered out.
1997
1998 @item n
1999 Pass only noise.
2000
2001 Default value is @var{o}.
2002 @end table
2003
2004 @item m
2005 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
2006 @end table
2007
2008 @subsection Commands
2009
2010 This filter supports the all above options as @ref{commands}.
2011
2012 @section anlms
2013 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
2014
2015 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
2016 relate to producing the least mean square of the error signal (difference between the desired,
2017 2nd input audio stream and the actual signal, the 1st input audio stream).
2018
2019 A description of the accepted options follows.
2020
2021 @table @option
2022 @item order
2023 Set filter order.
2024
2025 @item mu
2026 Set filter mu.
2027
2028 @item eps
2029 Set the filter eps.
2030
2031 @item leakage
2032 Set the filter leakage.
2033
2034 @item out_mode
2035 It accepts the following values:
2036 @table @option
2037 @item i
2038 Pass the 1st input.
2039
2040 @item d
2041 Pass the 2nd input.
2042
2043 @item o
2044 Pass filtered samples.
2045
2046 @item n
2047 Pass difference between desired and filtered samples.
2048
2049 Default value is @var{o}.
2050 @end table
2051 @end table
2052
2053 @subsection Examples
2054
2055 @itemize
2056 @item
2057 One of many usages of this filter is noise reduction, input audio is filtered
2058 with same samples that are delayed by fixed amount, one such example for stereo audio is:
2059 @example
2060 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
2061 @end example
2062 @end itemize
2063
2064 @subsection Commands
2065
2066 This filter supports the same commands as options, excluding option @code{order}.
2067
2068 @section anull
2069
2070 Pass the audio source unchanged to the output.
2071
2072 @section apad
2073
2074 Pad the end of an audio stream with silence.
2075
2076 This can be used together with @command{ffmpeg} @option{-shortest} to
2077 extend audio streams to the same length as the video stream.
2078
2079 A description of the accepted options follows.
2080
2081 @table @option
2082 @item packet_size
2083 Set silence packet size. Default value is 4096.
2084
2085 @item pad_len
2086 Set the number of samples of silence to add to the end. After the
2087 value is reached, the stream is terminated. This option is mutually
2088 exclusive with @option{whole_len}.
2089
2090 @item whole_len
2091 Set the minimum total number of samples in the output audio stream. If
2092 the value is longer than the input audio length, silence is added to
2093 the end, until the value is reached. This option is mutually exclusive
2094 with @option{pad_len}.
2095
2096 @item pad_dur
2097 Specify the duration of samples of silence to add. See
2098 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2099 for the accepted syntax. Used only if set to non-zero value.
2100
2101 @item whole_dur
2102 Specify the minimum total duration in the output audio stream. See
2103 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2104 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
2105 the input audio length, silence is added to the end, until the value is reached.
2106 This option is mutually exclusive with @option{pad_dur}
2107 @end table
2108
2109 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
2110 nor @option{whole_dur} option is set, the filter will add silence to the end of
2111 the input stream indefinitely.
2112
2113 @subsection Examples
2114
2115 @itemize
2116 @item
2117 Add 1024 samples of silence to the end of the input:
2118 @example
2119 apad=pad_len=1024
2120 @end example
2121
2122 @item
2123 Make sure the audio output will contain at least 10000 samples, pad
2124 the input with silence if required:
2125 @example
2126 apad=whole_len=10000
2127 @end example
2128
2129 @item
2130 Use @command{ffmpeg} to pad the audio input with silence, so that the
2131 video stream will always result the shortest and will be converted
2132 until the end in the output file when using the @option{shortest}
2133 option:
2134 @example
2135 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
2136 @end example
2137 @end itemize
2138
2139 @section aphaser
2140 Add a phasing effect to the input audio.
2141
2142 A phaser filter creates series of peaks and troughs in the frequency spectrum.
2143 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
2144
2145 A description of the accepted parameters follows.
2146
2147 @table @option
2148 @item in_gain
2149 Set input gain. Default is 0.4.
2150
2151 @item out_gain
2152 Set output gain. Default is 0.74
2153
2154 @item delay
2155 Set delay in milliseconds. Default is 3.0.
2156
2157 @item decay
2158 Set decay. Default is 0.4.
2159
2160 @item speed
2161 Set modulation speed in Hz. Default is 0.5.
2162
2163 @item type
2164 Set modulation type. Default is triangular.
2165
2166 It accepts the following values:
2167 @table @samp
2168 @item triangular, t
2169 @item sinusoidal, s
2170 @end table
2171 @end table
2172
2173 @section aphaseshift
2174 Apply phase shift to input audio samples.
2175
2176 The filter accepts the following options:
2177
2178 @table @option
2179 @item shift
2180 Specify phase shift. Allowed range is from -1.0 to 1.0.
2181 Default value is 0.0.
2182 @end table
2183
2184 @subsection Commands
2185
2186 This filter supports the above option as @ref{commands}.
2187
2188 @section apulsator
2189
2190 Audio pulsator is something between an autopanner and a tremolo.
2191 But it can produce funny stereo effects as well. Pulsator changes the volume
2192 of the left and right channel based on a LFO (low frequency oscillator) with
2193 different waveforms and shifted phases.
2194 This filter have the ability to define an offset between left and right
2195 channel. An offset of 0 means that both LFO shapes match each other.
2196 The left and right channel are altered equally - a conventional tremolo.
2197 An offset of 50% means that the shape of the right channel is exactly shifted
2198 in phase (or moved backwards about half of the frequency) - pulsator acts as
2199 an autopanner. At 1 both curves match again. Every setting in between moves the
2200 phase shift gapless between all stages and produces some "bypassing" sounds with
2201 sine and triangle waveforms. The more you set the offset near 1 (starting from
2202 the 0.5) the faster the signal passes from the left to the right speaker.
2203
2204 The filter accepts the following options:
2205
2206 @table @option
2207 @item level_in
2208 Set input gain. By default it is 1. Range is [0.015625 - 64].
2209
2210 @item level_out
2211 Set output gain. By default it is 1. Range is [0.015625 - 64].
2212
2213 @item mode
2214 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2215 sawup or sawdown. Default is sine.
2216
2217 @item amount
2218 Set modulation. Define how much of original signal is affected by the LFO.
2219
2220 @item offset_l
2221 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2222
2223 @item offset_r
2224 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2225
2226 @item width
2227 Set pulse width. Default is 1. Allowed range is [0 - 2].
2228
2229 @item timing
2230 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2231
2232 @item bpm
2233 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2234 is set to bpm.
2235
2236 @item ms
2237 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2238 is set to ms.
2239
2240 @item hz
2241 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2242 if timing is set to hz.
2243 @end table
2244
2245 @anchor{aresample}
2246 @section aresample
2247
2248 Resample the input audio to the specified parameters, using the
2249 libswresample library. If none are specified then the filter will
2250 automatically convert between its input and output.
2251
2252 This filter is also able to stretch/squeeze the audio data to make it match
2253 the timestamps or to inject silence / cut out audio to make it match the
2254 timestamps, do a combination of both or do neither.
2255
2256 The filter accepts the syntax
2257 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2258 expresses a sample rate and @var{resampler_options} is a list of
2259 @var{key}=@var{value} pairs, separated by ":". See the
2260 @ref{Resampler Options,,"Resampler Options" section in the
2261 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2262 for the complete list of supported options.
2263
2264 @subsection Examples
2265
2266 @itemize
2267 @item
2268 Resample the input audio to 44100Hz:
2269 @example
2270 aresample=44100
2271 @end example
2272
2273 @item
2274 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2275 samples per second compensation:
2276 @example
2277 aresample=async=1000
2278 @end example
2279 @end itemize
2280
2281 @section areverse
2282
2283 Reverse an audio clip.
2284
2285 Warning: This filter requires memory to buffer the entire clip, so trimming
2286 is suggested.
2287
2288 @subsection Examples
2289
2290 @itemize
2291 @item
2292 Take the first 5 seconds of a clip, and reverse it.
2293 @example
2294 atrim=end=5,areverse
2295 @end example
2296 @end itemize
2297
2298 @section arnndn
2299
2300 Reduce noise from speech using Recurrent Neural Networks.
2301
2302 This filter accepts the following options:
2303
2304 @table @option
2305 @item model, m
2306 Set train model file to load. This option is always required.
2307 @end table
2308
2309 @section asetnsamples
2310
2311 Set the number of samples per each output audio frame.
2312
2313 The last output packet may contain a different number of samples, as
2314 the filter will flush all the remaining samples when the input audio
2315 signals its end.
2316
2317 The filter accepts the following options:
2318
2319 @table @option
2320
2321 @item nb_out_samples, n
2322 Set the number of frames per each output audio frame. The number is
2323 intended as the number of samples @emph{per each channel}.
2324 Default value is 1024.
2325
2326 @item pad, p
2327 If set to 1, the filter will pad the last audio frame with zeroes, so
2328 that the last frame will contain the same number of samples as the
2329 previous ones. Default value is 1.
2330 @end table
2331
2332 For example, to set the number of per-frame samples to 1234 and
2333 disable padding for the last frame, use:
2334 @example
2335 asetnsamples=n=1234:p=0
2336 @end example
2337
2338 @section asetrate
2339
2340 Set the sample rate without altering the PCM data.
2341 This will result in a change of speed and pitch.
2342
2343 The filter accepts the following options:
2344
2345 @table @option
2346 @item sample_rate, r
2347 Set the output sample rate. Default is 44100 Hz.
2348 @end table
2349
2350 @section ashowinfo
2351
2352 Show a line containing various information for each input audio frame.
2353 The input audio is not modified.
2354
2355 The shown line contains a sequence of key/value pairs of the form
2356 @var{key}:@var{value}.
2357
2358 The following values are shown in the output:
2359
2360 @table @option
2361 @item n
2362 The (sequential) number of the input frame, starting from 0.
2363
2364 @item pts
2365 The presentation timestamp of the input frame, in time base units; the time base
2366 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2367
2368 @item pts_time
2369 The presentation timestamp of the input frame in seconds.
2370
2371 @item pos
2372 position of the frame in the input stream, -1 if this information in
2373 unavailable and/or meaningless (for example in case of synthetic audio)
2374
2375 @item fmt
2376 The sample format.
2377
2378 @item chlayout
2379 The channel layout.
2380
2381 @item rate
2382 The sample rate for the audio frame.
2383
2384 @item nb_samples
2385 The number of samples (per channel) in the frame.
2386
2387 @item checksum
2388 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2389 audio, the data is treated as if all the planes were concatenated.
2390
2391 @item plane_checksums
2392 A list of Adler-32 checksums for each data plane.
2393 @end table
2394
2395 @section asoftclip
2396 Apply audio soft clipping.
2397
2398 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2399 along a smooth curve, rather than the abrupt shape of hard-clipping.
2400
2401 This filter accepts the following options:
2402
2403 @table @option
2404 @item type
2405 Set type of soft-clipping.
2406
2407 It accepts the following values:
2408 @table @option
2409 @item hard
2410 @item tanh
2411 @item atan
2412 @item cubic
2413 @item exp
2414 @item alg
2415 @item quintic
2416 @item sin
2417 @item erf
2418 @end table
2419
2420 @item param
2421 Set additional parameter which controls sigmoid function.
2422
2423 @item oversample
2424 Set oversampling factor.
2425 @end table
2426
2427 @subsection Commands
2428
2429 This filter supports the all above options as @ref{commands}.
2430
2431 @section asr
2432 Automatic Speech Recognition
2433
2434 This filter uses PocketSphinx for speech recognition. To enable
2435 compilation of this filter, you need to configure FFmpeg with
2436 @code{--enable-pocketsphinx}.
2437
2438 It accepts the following options:
2439
2440 @table @option
2441 @item rate
2442 Set sampling rate of input audio. Defaults is @code{16000}.
2443 This need to match speech models, otherwise one will get poor results.
2444
2445 @item hmm
2446 Set dictionary containing acoustic model files.
2447
2448 @item dict
2449 Set pronunciation dictionary.
2450
2451 @item lm
2452 Set language model file.
2453
2454 @item lmctl
2455 Set language model set.
2456
2457 @item lmname
2458 Set which language model to use.
2459
2460 @item logfn
2461 Set output for log messages.
2462 @end table
2463
2464 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2465
2466 @anchor{astats}
2467 @section astats
2468
2469 Display time domain statistical information about the audio channels.
2470 Statistics are calculated and displayed for each audio channel and,
2471 where applicable, an overall figure is also given.
2472
2473 It accepts the following option:
2474 @table @option
2475 @item length
2476 Short window length in seconds, used for peak and trough RMS measurement.
2477 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2478
2479 @item metadata
2480
2481 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2482 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2483 disabled.
2484
2485 Available keys for each channel are:
2486 DC_offset
2487 Min_level
2488 Max_level
2489 Min_difference
2490 Max_difference
2491 Mean_difference
2492 RMS_difference
2493 Peak_level
2494 RMS_peak
2495 RMS_trough
2496 Crest_factor
2497 Flat_factor
2498 Peak_count
2499 Noise_floor
2500 Noise_floor_count
2501 Bit_depth
2502 Dynamic_range
2503 Zero_crossings
2504 Zero_crossings_rate
2505 Number_of_NaNs
2506 Number_of_Infs
2507 Number_of_denormals
2508
2509 and for Overall:
2510 DC_offset
2511 Min_level
2512 Max_level
2513 Min_difference
2514 Max_difference
2515 Mean_difference
2516 RMS_difference
2517 Peak_level
2518 RMS_level
2519 RMS_peak
2520 RMS_trough
2521 Flat_factor
2522 Peak_count
2523 Noise_floor
2524 Noise_floor_count
2525 Bit_depth
2526 Number_of_samples
2527 Number_of_NaNs
2528 Number_of_Infs
2529 Number_of_denormals
2530
2531 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2532 this @code{lavfi.astats.Overall.Peak_count}.
2533
2534 For description what each key means read below.
2535
2536 @item reset
2537 Set number of frame after which stats are going to be recalculated.
2538 Default is disabled.
2539
2540 @item measure_perchannel
2541 Select the entries which need to be measured per channel. The metadata keys can
2542 be used as flags, default is @option{all} which measures everything.
2543 @option{none} disables all per channel measurement.
2544
2545 @item measure_overall
2546 Select the entries which need to be measured overall. The metadata keys can
2547 be used as flags, default is @option{all} which measures everything.
2548 @option{none} disables all overall measurement.
2549
2550 @end table
2551
2552 A description of each shown parameter follows:
2553
2554 @table @option
2555 @item DC offset
2556 Mean amplitude displacement from zero.
2557
2558 @item Min level
2559 Minimal sample level.
2560
2561 @item Max level
2562 Maximal sample level.
2563
2564 @item Min difference
2565 Minimal difference between two consecutive samples.
2566
2567 @item Max difference
2568 Maximal difference between two consecutive samples.
2569
2570 @item Mean difference
2571 Mean difference between two consecutive samples.
2572 The average of each difference between two consecutive samples.
2573
2574 @item RMS difference
2575 Root Mean Square difference between two consecutive samples.
2576
2577 @item Peak level dB
2578 @item RMS level dB
2579 Standard peak and RMS level measured in dBFS.
2580
2581 @item RMS peak dB
2582 @item RMS trough dB
2583 Peak and trough values for RMS level measured over a short window.
2584
2585 @item Crest factor
2586 Standard ratio of peak to RMS level (note: not in dB).
2587
2588 @item Flat factor
2589 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2590 (i.e. either @var{Min level} or @var{Max level}).
2591
2592 @item Peak count
2593 Number of occasions (not the number of samples) that the signal attained either
2594 @var{Min level} or @var{Max level}.
2595
2596 @item Noise floor dB
2597 Minimum local peak measured in dBFS over a short window.
2598
2599 @item Noise floor count
2600 Number of occasions (not the number of samples) that the signal attained
2601 @var{Noise floor}.
2602
2603 @item Bit depth
2604 Overall bit depth of audio. Number of bits used for each sample.
2605
2606 @item Dynamic range
2607 Measured dynamic range of audio in dB.
2608
2609 @item Zero crossings
2610 Number of points where the waveform crosses the zero level axis.
2611
2612 @item Zero crossings rate
2613 Rate of Zero crossings and number of audio samples.
2614 @end table
2615
2616 @section asubboost
2617 Boost subwoofer frequencies.
2618
2619 The filter accepts the following options:
2620
2621 @table @option
2622 @item dry
2623 Set dry gain, how much of original signal is kept. Allowed range is from 0 to 1.
2624 Default value is 0.7.
2625
2626 @item wet
2627 Set wet gain, how much of filtered signal is kept. Allowed range is from 0 to 1.
2628 Default value is 0.7.
2629
2630 @item decay
2631 Set delay line decay gain value. Allowed range is from 0 to 1.
2632 Default value is 0.7.
2633
2634 @item feedback
2635 Set delay line feedback gain value. Allowed range is from 0 to 1.
2636 Default value is 0.9.
2637
2638 @item cutoff
2639 Set cutoff frequency in Hertz. Allowed range is 50 to 900.
2640 Default value is 100.
2641
2642 @item slope
2643 Set slope amount for cutoff frequency. Allowed range is 0.0001 to 1.
2644 Default value is 0.5.
2645
2646 @item delay
2647 Set delay. Allowed range is from 1 to 100.
2648 Default value is 20.
2649 @end table
2650
2651 @subsection Commands
2652
2653 This filter supports the all above options as @ref{commands}.
2654
2655 @section asupercut
2656 Cut super frequencies.
2657
2658 The filter accepts the following options:
2659
2660 @table @option
2661 @item cutoff
2662 Set cutoff frequency in Hertz. Allowed range is 20000 to 192000.
2663 Default value is 20000.
2664
2665 @item order
2666 Set filter order. Available values are from 3 to 20.
2667 Default value is 10.
2668 @end table
2669
2670 @subsection Commands
2671
2672 This filter supports the all above options as @ref{commands}.
2673
2674 @section atempo
2675
2676 Adjust audio tempo.
2677
2678 The filter accepts exactly one parameter, the audio tempo. If not
2679 specified then the filter will assume nominal 1.0 tempo. Tempo must
2680 be in the [0.5, 100.0] range.
2681
2682 Note that tempo greater than 2 will skip some samples rather than
2683 blend them in.  If for any reason this is a concern it is always
2684 possible to daisy-chain several instances of atempo to achieve the
2685 desired product tempo.
2686
2687 @subsection Examples
2688
2689 @itemize
2690 @item
2691 Slow down audio to 80% tempo:
2692 @example
2693 atempo=0.8
2694 @end example
2695
2696 @item
2697 To speed up audio to 300% tempo:
2698 @example
2699 atempo=3
2700 @end example
2701
2702 @item
2703 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2704 @example
2705 atempo=sqrt(3),atempo=sqrt(3)
2706 @end example
2707 @end itemize
2708
2709 @subsection Commands
2710
2711 This filter supports the following commands:
2712 @table @option
2713 @item tempo
2714 Change filter tempo scale factor.
2715 Syntax for the command is : "@var{tempo}"
2716 @end table
2717
2718 @section atrim
2719
2720 Trim the input so that the output contains one continuous subpart of the input.
2721
2722 It accepts the following parameters:
2723 @table @option
2724 @item start
2725 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2726 sample with the timestamp @var{start} will be the first sample in the output.
2727
2728 @item end
2729 Specify time of the first audio sample that will be dropped, i.e. the
2730 audio sample immediately preceding the one with the timestamp @var{end} will be
2731 the last sample in the output.
2732
2733 @item start_pts
2734 Same as @var{start}, except this option sets the start timestamp in samples
2735 instead of seconds.
2736
2737 @item end_pts
2738 Same as @var{end}, except this option sets the end timestamp in samples instead
2739 of seconds.
2740
2741 @item duration
2742 The maximum duration of the output in seconds.
2743
2744 @item start_sample
2745 The number of the first sample that should be output.
2746
2747 @item end_sample
2748 The number of the first sample that should be dropped.
2749 @end table
2750
2751 @option{start}, @option{end}, and @option{duration} are expressed as time
2752 duration specifications; see
2753 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2754
2755 Note that the first two sets of the start/end options and the @option{duration}
2756 option look at the frame timestamp, while the _sample options simply count the
2757 samples that pass through the filter. So start/end_pts and start/end_sample will
2758 give different results when the timestamps are wrong, inexact or do not start at
2759 zero. Also note that this filter does not modify the timestamps. If you wish
2760 to have the output timestamps start at zero, insert the asetpts filter after the
2761 atrim filter.
2762
2763 If multiple start or end options are set, this filter tries to be greedy and
2764 keep all samples that match at least one of the specified constraints. To keep
2765 only the part that matches all the constraints at once, chain multiple atrim
2766 filters.
2767
2768 The defaults are such that all the input is kept. So it is possible to set e.g.
2769 just the end values to keep everything before the specified time.
2770
2771 Examples:
2772 @itemize
2773 @item
2774 Drop everything except the second minute of input:
2775 @example
2776 ffmpeg -i INPUT -af atrim=60:120
2777 @end example
2778
2779 @item
2780 Keep only the first 1000 samples:
2781 @example
2782 ffmpeg -i INPUT -af atrim=end_sample=1000
2783 @end example
2784
2785 @end itemize
2786
2787 @section axcorrelate
2788 Calculate normalized cross-correlation between two input audio streams.
2789
2790 Resulted samples are always between -1 and 1 inclusive.
2791 If result is 1 it means two input samples are highly correlated in that selected segment.
2792 Result 0 means they are not correlated at all.
2793 If result is -1 it means two input samples are out of phase, which means they cancel each
2794 other.
2795
2796 The filter accepts the following options:
2797
2798 @table @option
2799 @item size
2800 Set size of segment over which cross-correlation is calculated.
2801 Default is 256. Allowed range is from 2 to 131072.
2802
2803 @item algo
2804 Set algorithm for cross-correlation. Can be @code{slow} or @code{fast}.
2805 Default is @code{slow}. Fast algorithm assumes mean values over any given segment
2806 are always zero and thus need much less calculations to make.
2807 This is generally not true, but is valid for typical audio streams.
2808 @end table
2809
2810 @subsection Examples
2811
2812 @itemize
2813 @item
2814 Calculate correlation between channels in stereo audio stream:
2815 @example
2816 ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
2817 @end example
2818 @end itemize
2819
2820 @section bandpass
2821
2822 Apply a two-pole Butterworth band-pass filter with central
2823 frequency @var{frequency}, and (3dB-point) band-width width.
2824 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2825 instead of the default: constant 0dB peak gain.
2826 The filter roll off at 6dB per octave (20dB per decade).
2827
2828 The filter accepts the following options:
2829
2830 @table @option
2831 @item frequency, f
2832 Set the filter's central frequency. Default is @code{3000}.
2833
2834 @item csg
2835 Constant skirt gain if set to 1. Defaults to 0.
2836
2837 @item width_type, t
2838 Set method to specify band-width of filter.
2839 @table @option
2840 @item h
2841 Hz
2842 @item q
2843 Q-Factor
2844 @item o
2845 octave
2846 @item s
2847 slope
2848 @item k
2849 kHz
2850 @end table
2851
2852 @item width, w
2853 Specify the band-width of a filter in width_type units.
2854
2855 @item mix, m
2856 How much to use filtered signal in output. Default is 1.
2857 Range is between 0 and 1.
2858
2859 @item channels, c
2860 Specify which channels to filter, by default all available are filtered.
2861
2862 @item normalize, n
2863 Normalize biquad coefficients, by default is disabled.
2864 Enabling it will normalize magnitude response at DC to 0dB.
2865
2866 @item transform, a
2867 Set transform type of IIR filter.
2868 @table @option
2869 @item di
2870 @item dii
2871 @item tdii
2872 @item latt
2873 @end table
2874 @end table
2875
2876 @subsection Commands
2877
2878 This filter supports the following commands:
2879 @table @option
2880 @item frequency, f
2881 Change bandpass frequency.
2882 Syntax for the command is : "@var{frequency}"
2883
2884 @item width_type, t
2885 Change bandpass width_type.
2886 Syntax for the command is : "@var{width_type}"
2887
2888 @item width, w
2889 Change bandpass width.
2890 Syntax for the command is : "@var{width}"
2891
2892 @item mix, m
2893 Change bandpass mix.
2894 Syntax for the command is : "@var{mix}"
2895 @end table
2896
2897 @section bandreject
2898
2899 Apply a two-pole Butterworth band-reject filter with central
2900 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2901 The filter roll off at 6dB per octave (20dB per decade).
2902
2903 The filter accepts the following options:
2904
2905 @table @option
2906 @item frequency, f
2907 Set the filter's central frequency. Default is @code{3000}.
2908
2909 @item width_type, t
2910 Set method to specify band-width of filter.
2911 @table @option
2912 @item h
2913 Hz
2914 @item q
2915 Q-Factor
2916 @item o
2917 octave
2918 @item s
2919 slope
2920 @item k
2921 kHz
2922 @end table
2923
2924 @item width, w
2925 Specify the band-width of a filter in width_type units.
2926
2927 @item mix, m
2928 How much to use filtered signal in output. Default is 1.
2929 Range is between 0 and 1.
2930
2931 @item channels, c
2932 Specify which channels to filter, by default all available are filtered.
2933
2934 @item normalize, n
2935 Normalize biquad coefficients, by default is disabled.
2936 Enabling it will normalize magnitude response at DC to 0dB.
2937
2938 @item transform, a
2939 Set transform type of IIR filter.
2940 @table @option
2941 @item di
2942 @item dii
2943 @item tdii
2944 @item latt
2945 @end table
2946 @end table
2947
2948 @subsection Commands
2949
2950 This filter supports the following commands:
2951 @table @option
2952 @item frequency, f
2953 Change bandreject frequency.
2954 Syntax for the command is : "@var{frequency}"
2955
2956 @item width_type, t
2957 Change bandreject width_type.
2958 Syntax for the command is : "@var{width_type}"
2959
2960 @item width, w
2961 Change bandreject width.
2962 Syntax for the command is : "@var{width}"
2963
2964 @item mix, m
2965 Change bandreject mix.
2966 Syntax for the command is : "@var{mix}"
2967 @end table
2968
2969 @section bass, lowshelf
2970
2971 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2972 shelving filter with a response similar to that of a standard
2973 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2974
2975 The filter accepts the following options:
2976
2977 @table @option
2978 @item gain, g
2979 Give the gain at 0 Hz. Its useful range is about -20
2980 (for a large cut) to +20 (for a large boost).
2981 Beware of clipping when using a positive gain.
2982
2983 @item frequency, f
2984 Set the filter's central frequency and so can be used
2985 to extend or reduce the frequency range to be boosted or cut.
2986 The default value is @code{100} Hz.
2987
2988 @item width_type, t
2989 Set method to specify band-width of filter.
2990 @table @option
2991 @item h
2992 Hz
2993 @item q
2994 Q-Factor
2995 @item o
2996 octave
2997 @item s
2998 slope
2999 @item k
3000 kHz
3001 @end table
3002
3003 @item width, w
3004 Determine how steep is the filter's shelf transition.
3005
3006 @item mix, m
3007 How much to use filtered signal in output. Default is 1.
3008 Range is between 0 and 1.
3009
3010 @item channels, c
3011 Specify which channels to filter, by default all available are filtered.
3012
3013 @item normalize, n
3014 Normalize biquad coefficients, by default is disabled.
3015 Enabling it will normalize magnitude response at DC to 0dB.
3016
3017 @item transform, a
3018 Set transform type of IIR filter.
3019 @table @option
3020 @item di
3021 @item dii
3022 @item tdii
3023 @item latt
3024 @end table
3025 @end table
3026
3027 @subsection Commands
3028
3029 This filter supports the following commands:
3030 @table @option
3031 @item frequency, f
3032 Change bass frequency.
3033 Syntax for the command is : "@var{frequency}"
3034
3035 @item width_type, t
3036 Change bass width_type.
3037 Syntax for the command is : "@var{width_type}"
3038
3039 @item width, w
3040 Change bass width.
3041 Syntax for the command is : "@var{width}"
3042
3043 @item gain, g
3044 Change bass gain.
3045 Syntax for the command is : "@var{gain}"
3046
3047 @item mix, m
3048 Change bass mix.
3049 Syntax for the command is : "@var{mix}"
3050 @end table
3051
3052 @section biquad
3053
3054 Apply a biquad IIR filter with the given coefficients.
3055 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
3056 are the numerator and denominator coefficients respectively.
3057 and @var{channels}, @var{c} specify which channels to filter, by default all
3058 available are filtered.
3059
3060 @subsection Commands
3061
3062 This filter supports the following commands:
3063 @table @option
3064 @item a0
3065 @item a1
3066 @item a2
3067 @item b0
3068 @item b1
3069 @item b2
3070 Change biquad parameter.
3071 Syntax for the command is : "@var{value}"
3072
3073 @item mix, m
3074 How much to use filtered signal in output. Default is 1.
3075 Range is between 0 and 1.
3076
3077 @item channels, c
3078 Specify which channels to filter, by default all available are filtered.
3079
3080 @item normalize, n
3081 Normalize biquad coefficients, by default is disabled.
3082 Enabling it will normalize magnitude response at DC to 0dB.
3083
3084 @item transform, a
3085 Set transform type of IIR filter.
3086 @table @option
3087 @item di
3088 @item dii
3089 @item tdii
3090 @item latt
3091 @end table
3092 @end table
3093
3094 @section bs2b
3095 Bauer stereo to binaural transformation, which improves headphone listening of
3096 stereo audio records.
3097
3098 To enable compilation of this filter you need to configure FFmpeg with
3099 @code{--enable-libbs2b}.
3100
3101 It accepts the following parameters:
3102 @table @option
3103
3104 @item profile
3105 Pre-defined crossfeed level.
3106 @table @option
3107
3108 @item default
3109 Default level (fcut=700, feed=50).
3110
3111 @item cmoy
3112 Chu Moy circuit (fcut=700, feed=60).
3113
3114 @item jmeier
3115 Jan Meier circuit (fcut=650, feed=95).
3116
3117 @end table
3118
3119 @item fcut
3120 Cut frequency (in Hz).
3121
3122 @item feed
3123 Feed level (in Hz).
3124
3125 @end table
3126
3127 @section channelmap
3128
3129 Remap input channels to new locations.
3130
3131 It accepts the following parameters:
3132 @table @option
3133 @item map
3134 Map channels from input to output. The argument is a '|'-separated list of
3135 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
3136 @var{in_channel} form. @var{in_channel} can be either the name of the input
3137 channel (e.g. FL for front left) or its index in the input channel layout.
3138 @var{out_channel} is the name of the output channel or its index in the output
3139 channel layout. If @var{out_channel} is not given then it is implicitly an
3140 index, starting with zero and increasing by one for each mapping.
3141
3142 @item channel_layout
3143 The channel layout of the output stream.
3144 @end table
3145
3146 If no mapping is present, the filter will implicitly map input channels to
3147 output channels, preserving indices.
3148
3149 @subsection Examples
3150
3151 @itemize
3152 @item
3153 For example, assuming a 5.1+downmix input MOV file,
3154 @example
3155 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
3156 @end example
3157 will create an output WAV file tagged as stereo from the downmix channels of
3158 the input.
3159
3160 @item
3161 To fix a 5.1 WAV improperly encoded in AAC's native channel order
3162 @example
3163 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
3164 @end example
3165 @end itemize
3166
3167 @section channelsplit
3168
3169 Split each channel from an input audio stream into a separate output stream.
3170
3171 It accepts the following parameters:
3172 @table @option
3173 @item channel_layout
3174 The channel layout of the input stream. The default is "stereo".
3175 @item channels
3176 A channel layout describing the channels to be extracted as separate output streams
3177 or "all" to extract each input channel as a separate stream. The default is "all".
3178
3179 Choosing channels not present in channel layout in the input will result in an error.
3180 @end table
3181
3182 @subsection Examples
3183
3184 @itemize
3185 @item
3186 For example, assuming a stereo input MP3 file,
3187 @example
3188 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
3189 @end example
3190 will create an output Matroska file with two audio streams, one containing only
3191 the left channel and the other the right channel.
3192
3193 @item
3194 Split a 5.1 WAV file into per-channel files:
3195 @example
3196 ffmpeg -i in.wav -filter_complex
3197 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
3198 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
3199 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
3200 side_right.wav
3201 @end example
3202
3203 @item
3204 Extract only LFE from a 5.1 WAV file:
3205 @example
3206 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
3207 -map '[LFE]' lfe.wav
3208 @end example
3209 @end itemize
3210
3211 @section chorus
3212 Add a chorus effect to the audio.
3213
3214 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
3215
3216 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
3217 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
3218 The modulation depth defines the range the modulated delay is played before or after
3219 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
3220 sound tuned around the original one, like in a chorus where some vocals are slightly
3221 off key.
3222
3223 It accepts the following parameters:
3224 @table @option
3225 @item in_gain
3226 Set input gain. Default is 0.4.
3227
3228 @item out_gain
3229 Set output gain. Default is 0.4.
3230
3231 @item delays
3232 Set delays. A typical delay is around 40ms to 60ms.
3233
3234 @item decays
3235 Set decays.
3236
3237 @item speeds
3238 Set speeds.
3239
3240 @item depths
3241 Set depths.
3242 @end table
3243
3244 @subsection Examples
3245
3246 @itemize
3247 @item
3248 A single delay:
3249 @example
3250 chorus=0.7:0.9:55:0.4:0.25:2
3251 @end example
3252
3253 @item
3254 Two delays:
3255 @example
3256 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
3257 @end example
3258
3259 @item
3260 Fuller sounding chorus with three delays:
3261 @example
3262 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
3263 @end example
3264 @end itemize
3265
3266 @section compand
3267 Compress or expand the audio's dynamic range.
3268
3269 It accepts the following parameters:
3270
3271 @table @option
3272
3273 @item attacks
3274 @item decays
3275 A list of times in seconds for each channel over which the instantaneous level
3276 of the input signal is averaged to determine its volume. @var{attacks} refers to
3277 increase of volume and @var{decays} refers to decrease of volume. For most
3278 situations, the attack time (response to the audio getting louder) should be
3279 shorter than the decay time, because the human ear is more sensitive to sudden
3280 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
3281 a typical value for decay is 0.8 seconds.
3282 If specified number of attacks & decays is lower than number of channels, the last
3283 set attack/decay will be used for all remaining channels.
3284
3285 @item points
3286 A list of points for the transfer function, specified in dB relative to the
3287 maximum possible signal amplitude. Each key points list must be defined using
3288 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
3289 @code{x0/y0 x1/y1 x2/y2 ....}
3290
3291 The input values must be in strictly increasing order but the transfer function
3292 does not have to be monotonically rising. The point @code{0/0} is assumed but
3293 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
3294 function are @code{-70/-70|-60/-20|1/0}.
3295
3296 @item soft-knee
3297 Set the curve radius in dB for all joints. It defaults to 0.01.
3298
3299 @item gain
3300 Set the additional gain in dB to be applied at all points on the transfer
3301 function. This allows for easy adjustment of the overall gain.
3302 It defaults to 0.
3303
3304 @item volume
3305 Set an initial volume, in dB, to be assumed for each channel when filtering
3306 starts. This permits the user to supply a nominal level initially, so that, for
3307 example, a very large gain is not applied to initial signal levels before the
3308 companding has begun to operate. A typical value for audio which is initially
3309 quiet is -90 dB. It defaults to 0.
3310
3311 @item delay
3312 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
3313 delayed before being fed to the volume adjuster. Specifying a delay
3314 approximately equal to the attack/decay times allows the filter to effectively
3315 operate in predictive rather than reactive mode. It defaults to 0.
3316
3317 @end table
3318
3319 @subsection Examples
3320
3321 @itemize
3322 @item
3323 Make music with both quiet and loud passages suitable for listening to in a
3324 noisy environment:
3325 @example
3326 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
3327 @end example
3328
3329 Another example for audio with whisper and explosion parts:
3330 @example
3331 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
3332 @end example
3333
3334 @item
3335 A noise gate for when the noise is at a lower level than the signal:
3336 @example
3337 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
3338 @end example
3339
3340 @item
3341 Here is another noise gate, this time for when the noise is at a higher level
3342 than the signal (making it, in some ways, similar to squelch):
3343 @example
3344 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3345 @end example
3346
3347 @item
3348 2:1 compression starting at -6dB:
3349 @example
3350 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3351 @end example
3352
3353 @item
3354 2:1 compression starting at -9dB:
3355 @example
3356 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3357 @end example
3358
3359 @item
3360 2:1 compression starting at -12dB:
3361 @example
3362 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3363 @end example
3364
3365 @item
3366 2:1 compression starting at -18dB:
3367 @example
3368 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3369 @end example
3370
3371 @item
3372 3:1 compression starting at -15dB:
3373 @example
3374 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3375 @end example
3376
3377 @item
3378 Compressor/Gate:
3379 @example
3380 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3381 @end example
3382
3383 @item
3384 Expander:
3385 @example
3386 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
3387 @end example
3388
3389 @item
3390 Hard limiter at -6dB:
3391 @example
3392 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3393 @end example
3394
3395 @item
3396 Hard limiter at -12dB:
3397 @example
3398 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3399 @end example
3400
3401 @item
3402 Hard noise gate at -35 dB:
3403 @example
3404 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3405 @end example
3406
3407 @item
3408 Soft limiter:
3409 @example
3410 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3411 @end example
3412 @end itemize
3413
3414 @section compensationdelay
3415
3416 Compensation Delay Line is a metric based delay to compensate differing
3417 positions of microphones or speakers.
3418
3419 For example, you have recorded guitar with two microphones placed in
3420 different locations. Because the front of sound wave has fixed speed in
3421 normal conditions, the phasing of microphones can vary and depends on
3422 their location and interposition. The best sound mix can be achieved when
3423 these microphones are in phase (synchronized). Note that a distance of
3424 ~30 cm between microphones makes one microphone capture the signal in
3425 antiphase to the other microphone. That makes the final mix sound moody.
3426 This filter helps to solve phasing problems by adding different delays
3427 to each microphone track and make them synchronized.
3428
3429 The best result can be reached when you take one track as base and
3430 synchronize other tracks one by one with it.
3431 Remember that synchronization/delay tolerance depends on sample rate, too.
3432 Higher sample rates will give more tolerance.
3433
3434 The filter accepts the following parameters:
3435
3436 @table @option
3437 @item mm
3438 Set millimeters distance. This is compensation distance for fine tuning.
3439 Default is 0.
3440
3441 @item cm
3442 Set cm distance. This is compensation distance for tightening distance setup.
3443 Default is 0.
3444
3445 @item m
3446 Set meters distance. This is compensation distance for hard distance setup.
3447 Default is 0.
3448
3449 @item dry
3450 Set dry amount. Amount of unprocessed (dry) signal.
3451 Default is 0.
3452
3453 @item wet
3454 Set wet amount. Amount of processed (wet) signal.
3455 Default is 1.
3456
3457 @item temp
3458 Set temperature in degrees Celsius. This is the temperature of the environment.
3459 Default is 20.
3460 @end table
3461
3462 @section crossfeed
3463 Apply headphone crossfeed filter.
3464
3465 Crossfeed is the process of blending the left and right channels of stereo
3466 audio recording.
3467 It is mainly used to reduce extreme stereo separation of low frequencies.
3468
3469 The intent is to produce more speaker like sound to the listener.
3470
3471 The filter accepts the following options:
3472
3473 @table @option
3474 @item strength
3475 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3476 This sets gain of low shelf filter for side part of stereo image.
3477 Default is -6dB. Max allowed is -30db when strength is set to 1.
3478
3479 @item range
3480 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3481 This sets cut off frequency of low shelf filter. Default is cut off near
3482 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3483
3484 @item slope
3485 Set curve slope of low shelf filter. Default is 0.5.
3486 Allowed range is from 0.01 to 1.
3487
3488 @item level_in
3489 Set input gain. Default is 0.9.
3490
3491 @item level_out
3492 Set output gain. Default is 1.
3493 @end table
3494
3495 @subsection Commands
3496
3497 This filter supports the all above options as @ref{commands}.
3498
3499 @section crystalizer
3500 Simple algorithm to expand audio dynamic range.
3501
3502 The filter accepts the following options:
3503
3504 @table @option
3505 @item i
3506 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3507 (unchanged sound) to 10.0 (maximum effect).
3508
3509 @item c
3510 Enable clipping. By default is enabled.
3511 @end table
3512
3513 @subsection Commands
3514
3515 This filter supports the all above options as @ref{commands}.
3516
3517 @section dcshift
3518 Apply a DC shift to the audio.
3519
3520 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3521 in the recording chain) from the audio. The effect of a DC offset is reduced
3522 headroom and hence volume. The @ref{astats} filter can be used to determine if
3523 a signal has a DC offset.
3524
3525 @table @option
3526 @item shift
3527 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3528 the audio.
3529
3530 @item limitergain
3531 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3532 used to prevent clipping.
3533 @end table
3534
3535 @section deesser
3536
3537 Apply de-essing to the audio samples.
3538
3539 @table @option
3540 @item i
3541 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3542 Default is 0.
3543
3544 @item m
3545 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3546 Default is 0.5.
3547
3548 @item f
3549 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3550 Default is 0.5.
3551
3552 @item s
3553 Set the output mode.
3554
3555 It accepts the following values:
3556 @table @option
3557 @item i
3558 Pass input unchanged.
3559
3560 @item o
3561 Pass ess filtered out.
3562
3563 @item e
3564 Pass only ess.
3565
3566 Default value is @var{o}.
3567 @end table
3568
3569 @end table
3570
3571 @section drmeter
3572 Measure audio dynamic range.
3573
3574 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3575 is found in transition material. And anything less that 8 have very poor dynamics
3576 and is very compressed.
3577
3578 The filter accepts the following options:
3579
3580 @table @option
3581 @item length
3582 Set window length in seconds used to split audio into segments of equal length.
3583 Default is 3 seconds.
3584 @end table
3585
3586 @section dynaudnorm
3587 Dynamic Audio Normalizer.
3588
3589 This filter applies a certain amount of gain to the input audio in order
3590 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3591 contrast to more "simple" normalization algorithms, the Dynamic Audio
3592 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3593 This allows for applying extra gain to the "quiet" sections of the audio
3594 while avoiding distortions or clipping the "loud" sections. In other words:
3595 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3596 sections, in the sense that the volume of each section is brought to the
3597 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3598 this goal *without* applying "dynamic range compressing". It will retain 100%
3599 of the dynamic range *within* each section of the audio file.
3600
3601 @table @option
3602 @item framelen, f
3603 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3604 Default is 500 milliseconds.
3605 The Dynamic Audio Normalizer processes the input audio in small chunks,
3606 referred to as frames. This is required, because a peak magnitude has no
3607 meaning for just a single sample value. Instead, we need to determine the
3608 peak magnitude for a contiguous sequence of sample values. While a "standard"
3609 normalizer would simply use the peak magnitude of the complete file, the
3610 Dynamic Audio Normalizer determines the peak magnitude individually for each
3611 frame. The length of a frame is specified in milliseconds. By default, the
3612 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3613 been found to give good results with most files.
3614 Note that the exact frame length, in number of samples, will be determined
3615 automatically, based on the sampling rate of the individual input audio file.
3616
3617 @item gausssize, g
3618 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3619 number. Default is 31.
3620 Probably the most important parameter of the Dynamic Audio Normalizer is the
3621 @code{window size} of the Gaussian smoothing filter. The filter's window size
3622 is specified in frames, centered around the current frame. For the sake of
3623 simplicity, this must be an odd number. Consequently, the default value of 31
3624 takes into account the current frame, as well as the 15 preceding frames and
3625 the 15 subsequent frames. Using a larger window results in a stronger
3626 smoothing effect and thus in less gain variation, i.e. slower gain
3627 adaptation. Conversely, using a smaller window results in a weaker smoothing
3628 effect and thus in more gain variation, i.e. faster gain adaptation.
3629 In other words, the more you increase this value, the more the Dynamic Audio
3630 Normalizer will behave like a "traditional" normalization filter. On the
3631 contrary, the more you decrease this value, the more the Dynamic Audio
3632 Normalizer will behave like a dynamic range compressor.
3633
3634 @item peak, p
3635 Set the target peak value. This specifies the highest permissible magnitude
3636 level for the normalized audio input. This filter will try to approach the
3637 target peak magnitude as closely as possible, but at the same time it also
3638 makes sure that the normalized signal will never exceed the peak magnitude.
3639 A frame's maximum local gain factor is imposed directly by the target peak
3640 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3641 It is not recommended to go above this value.
3642
3643 @item maxgain, m
3644 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3645 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3646 factor for each input frame, i.e. the maximum gain factor that does not
3647 result in clipping or distortion. The maximum gain factor is determined by
3648 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3649 additionally bounds the frame's maximum gain factor by a predetermined
3650 (global) maximum gain factor. This is done in order to avoid excessive gain
3651 factors in "silent" or almost silent frames. By default, the maximum gain
3652 factor is 10.0, For most inputs the default value should be sufficient and
3653 it usually is not recommended to increase this value. Though, for input
3654 with an extremely low overall volume level, it may be necessary to allow even
3655 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3656 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3657 Instead, a "sigmoid" threshold function will be applied. This way, the
3658 gain factors will smoothly approach the threshold value, but never exceed that
3659 value.
3660
3661 @item targetrms, r
3662 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3663 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3664 This means that the maximum local gain factor for each frame is defined
3665 (only) by the frame's highest magnitude sample. This way, the samples can
3666 be amplified as much as possible without exceeding the maximum signal
3667 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3668 Normalizer can also take into account the frame's root mean square,
3669 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3670 determine the power of a time-varying signal. It is therefore considered
3671 that the RMS is a better approximation of the "perceived loudness" than
3672 just looking at the signal's peak magnitude. Consequently, by adjusting all
3673 frames to a constant RMS value, a uniform "perceived loudness" can be
3674 established. If a target RMS value has been specified, a frame's local gain
3675 factor is defined as the factor that would result in exactly that RMS value.
3676 Note, however, that the maximum local gain factor is still restricted by the
3677 frame's highest magnitude sample, in order to prevent clipping.
3678
3679 @item coupling, n
3680 Enable channels coupling. By default is enabled.
3681 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3682 amount. This means the same gain factor will be applied to all channels, i.e.
3683 the maximum possible gain factor is determined by the "loudest" channel.
3684 However, in some recordings, it may happen that the volume of the different
3685 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3686 In this case, this option can be used to disable the channel coupling. This way,
3687 the gain factor will be determined independently for each channel, depending
3688 only on the individual channel's highest magnitude sample. This allows for
3689 harmonizing the volume of the different channels.
3690
3691 @item correctdc, c
3692 Enable DC bias correction. By default is disabled.
3693 An audio signal (in the time domain) is a sequence of sample values.
3694 In the Dynamic Audio Normalizer these sample values are represented in the
3695 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3696 audio signal, or "waveform", should be centered around the zero point.
3697 That means if we calculate the mean value of all samples in a file, or in a
3698 single frame, then the result should be 0.0 or at least very close to that
3699 value. If, however, there is a significant deviation of the mean value from
3700 0.0, in either positive or negative direction, this is referred to as a
3701 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3702 Audio Normalizer provides optional DC bias correction.
3703 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3704 the mean value, or "DC correction" offset, of each input frame and subtract
3705 that value from all of the frame's sample values which ensures those samples
3706 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3707 boundaries, the DC correction offset values will be interpolated smoothly
3708 between neighbouring frames.
3709
3710 @item altboundary, b
3711 Enable alternative boundary mode. By default is disabled.
3712 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3713 around each frame. This includes the preceding frames as well as the
3714 subsequent frames. However, for the "boundary" frames, located at the very
3715 beginning and at the very end of the audio file, not all neighbouring
3716 frames are available. In particular, for the first few frames in the audio
3717 file, the preceding frames are not known. And, similarly, for the last few
3718 frames in the audio file, the subsequent frames are not known. Thus, the
3719 question arises which gain factors should be assumed for the missing frames
3720 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3721 to deal with this situation. The default boundary mode assumes a gain factor
3722 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3723 "fade out" at the beginning and at the end of the input, respectively.
3724
3725 @item compress, s
3726 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3727 By default, the Dynamic Audio Normalizer does not apply "traditional"
3728 compression. This means that signal peaks will not be pruned and thus the
3729 full dynamic range will be retained within each local neighbourhood. However,
3730 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3731 normalization algorithm with a more "traditional" compression.
3732 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3733 (thresholding) function. If (and only if) the compression feature is enabled,
3734 all input frames will be processed by a soft knee thresholding function prior
3735 to the actual normalization process. Put simply, the thresholding function is
3736 going to prune all samples whose magnitude exceeds a certain threshold value.
3737 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3738 value. Instead, the threshold value will be adjusted for each individual
3739 frame.
3740 In general, smaller parameters result in stronger compression, and vice versa.
3741 Values below 3.0 are not recommended, because audible distortion may appear.
3742
3743 @item threshold, t
3744 Set the target threshold value. This specifies the lowest permissible
3745 magnitude level for the audio input which will be normalized.
3746 If input frame volume is above this value frame will be normalized.
3747 Otherwise frame may not be normalized at all. The default value is set
3748 to 0, which means all input frames will be normalized.
3749 This option is mostly useful if digital noise is not wanted to be amplified.
3750 @end table
3751
3752 @subsection Commands
3753
3754 This filter supports the all above options as @ref{commands}.
3755
3756 @section earwax
3757
3758 Make audio easier to listen to on headphones.
3759
3760 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3761 so that when listened to on headphones the stereo image is moved from
3762 inside your head (standard for headphones) to outside and in front of
3763 the listener (standard for speakers).
3764
3765 Ported from SoX.
3766
3767 @section equalizer
3768
3769 Apply a two-pole peaking equalisation (EQ) filter. With this
3770 filter, the signal-level at and around a selected frequency can
3771 be increased or decreased, whilst (unlike bandpass and bandreject
3772 filters) that at all other frequencies is unchanged.
3773
3774 In order to produce complex equalisation curves, this filter can
3775 be given several times, each with a different central frequency.
3776
3777 The filter accepts the following options:
3778
3779 @table @option
3780 @item frequency, f
3781 Set the filter's central frequency in Hz.
3782
3783 @item width_type, t
3784 Set method to specify band-width of filter.
3785 @table @option
3786 @item h
3787 Hz
3788 @item q
3789 Q-Factor
3790 @item o
3791 octave
3792 @item s
3793 slope
3794 @item k
3795 kHz
3796 @end table
3797
3798 @item width, w
3799 Specify the band-width of a filter in width_type units.
3800
3801 @item gain, g
3802 Set the required gain or attenuation in dB.
3803 Beware of clipping when using a positive gain.
3804
3805 @item mix, m
3806 How much to use filtered signal in output. Default is 1.
3807 Range is between 0 and 1.
3808
3809 @item channels, c
3810 Specify which channels to filter, by default all available are filtered.
3811
3812 @item normalize, n
3813 Normalize biquad coefficients, by default is disabled.
3814 Enabling it will normalize magnitude response at DC to 0dB.
3815
3816 @item transform, a
3817 Set transform type of IIR filter.
3818 @table @option
3819 @item di
3820 @item dii
3821 @item tdii
3822 @item latt
3823 @end table
3824 @end table
3825
3826 @subsection Examples
3827 @itemize
3828 @item
3829 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3830 @example
3831 equalizer=f=1000:t=h:width=200:g=-10
3832 @end example
3833
3834 @item
3835 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3836 @example
3837 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3838 @end example
3839 @end itemize
3840
3841 @subsection Commands
3842
3843 This filter supports the following commands:
3844 @table @option
3845 @item frequency, f
3846 Change equalizer frequency.
3847 Syntax for the command is : "@var{frequency}"
3848
3849 @item width_type, t
3850 Change equalizer width_type.
3851 Syntax for the command is : "@var{width_type}"
3852
3853 @item width, w
3854 Change equalizer width.
3855 Syntax for the command is : "@var{width}"
3856
3857 @item gain, g
3858 Change equalizer gain.
3859 Syntax for the command is : "@var{gain}"
3860
3861 @item mix, m
3862 Change equalizer mix.
3863 Syntax for the command is : "@var{mix}"
3864 @end table
3865
3866 @section extrastereo
3867
3868 Linearly increases the difference between left and right channels which
3869 adds some sort of "live" effect to playback.
3870
3871 The filter accepts the following options:
3872
3873 @table @option
3874 @item m
3875 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3876 (average of both channels), with 1.0 sound will be unchanged, with
3877 -1.0 left and right channels will be swapped.
3878
3879 @item c
3880 Enable clipping. By default is enabled.
3881 @end table
3882
3883 @subsection Commands
3884
3885 This filter supports the all above options as @ref{commands}.
3886
3887 @section firequalizer
3888 Apply FIR Equalization using arbitrary frequency response.
3889
3890 The filter accepts the following option:
3891
3892 @table @option
3893 @item gain
3894 Set gain curve equation (in dB). The expression can contain variables:
3895 @table @option
3896 @item f
3897 the evaluated frequency
3898 @item sr
3899 sample rate
3900 @item ch
3901 channel number, set to 0 when multichannels evaluation is disabled
3902 @item chid
3903 channel id, see libavutil/channel_layout.h, set to the first channel id when
3904 multichannels evaluation is disabled
3905 @item chs
3906 number of channels
3907 @item chlayout
3908 channel_layout, see libavutil/channel_layout.h
3909
3910 @end table
3911 and functions:
3912 @table @option
3913 @item gain_interpolate(f)
3914 interpolate gain on frequency f based on gain_entry
3915 @item cubic_interpolate(f)
3916 same as gain_interpolate, but smoother
3917 @end table
3918 This option is also available as command. Default is @code{gain_interpolate(f)}.
3919
3920 @item gain_entry
3921 Set gain entry for gain_interpolate function. The expression can
3922 contain functions:
3923 @table @option
3924 @item entry(f, g)
3925 store gain entry at frequency f with value g
3926 @end table
3927 This option is also available as command.
3928
3929 @item delay
3930 Set filter delay in seconds. Higher value means more accurate.
3931 Default is @code{0.01}.
3932
3933 @item accuracy
3934 Set filter accuracy in Hz. Lower value means more accurate.
3935 Default is @code{5}.
3936
3937 @item wfunc
3938 Set window function. Acceptable values are:
3939 @table @option
3940 @item rectangular
3941 rectangular window, useful when gain curve is already smooth
3942 @item hann
3943 hann window (default)
3944 @item hamming
3945 hamming window
3946 @item blackman
3947 blackman window
3948 @item nuttall3
3949 3-terms continuous 1st derivative nuttall window
3950 @item mnuttall3
3951 minimum 3-terms discontinuous nuttall window
3952 @item nuttall
3953 4-terms continuous 1st derivative nuttall window
3954 @item bnuttall
3955 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3956 @item bharris
3957 blackman-harris window
3958 @item tukey
3959 tukey window
3960 @end table
3961
3962 @item fixed
3963 If enabled, use fixed number of audio samples. This improves speed when
3964 filtering with large delay. Default is disabled.
3965
3966 @item multi
3967 Enable multichannels evaluation on gain. Default is disabled.
3968
3969 @item zero_phase
3970 Enable zero phase mode by subtracting timestamp to compensate delay.
3971 Default is disabled.
3972
3973 @item scale
3974 Set scale used by gain. Acceptable values are:
3975 @table @option
3976 @item linlin
3977 linear frequency, linear gain
3978 @item linlog
3979 linear frequency, logarithmic (in dB) gain (default)
3980 @item loglin
3981 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3982 @item loglog
3983 logarithmic frequency, logarithmic gain
3984 @end table
3985
3986 @item dumpfile
3987 Set file for dumping, suitable for gnuplot.
3988
3989 @item dumpscale
3990 Set scale for dumpfile. Acceptable values are same with scale option.
3991 Default is linlog.
3992
3993 @item fft2
3994 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3995 Default is disabled.
3996
3997 @item min_phase
3998 Enable minimum phase impulse response. Default is disabled.
3999 @end table
4000
4001 @subsection Examples
4002 @itemize
4003 @item
4004 lowpass at 1000 Hz:
4005 @example
4006 firequalizer=gain='if(lt(f,1000), 0, -INF)'
4007 @end example
4008 @item
4009 lowpass at 1000 Hz with gain_entry:
4010 @example
4011 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
4012 @end example
4013 @item
4014 custom equalization:
4015 @example
4016 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
4017 @end example
4018 @item
4019 higher delay with zero phase to compensate delay:
4020 @example
4021 firequalizer=delay=0.1:fixed=on:zero_phase=on
4022 @end example
4023 @item
4024 lowpass on left channel, highpass on right channel:
4025 @example
4026 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
4027 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
4028 @end example
4029 @end itemize
4030
4031 @section flanger
4032 Apply a flanging effect to the audio.
4033
4034 The filter accepts the following options:
4035
4036 @table @option
4037 @item delay
4038 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
4039
4040 @item depth
4041 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
4042
4043 @item regen
4044 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
4045 Default value is 0.
4046
4047 @item width
4048 Set percentage of delayed signal mixed with original. Range from 0 to 100.
4049 Default value is 71.
4050
4051 @item speed
4052 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
4053
4054 @item shape
4055 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
4056 Default value is @var{sinusoidal}.
4057
4058 @item phase
4059 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
4060 Default value is 25.
4061
4062 @item interp
4063 Set delay-line interpolation, @var{linear} or @var{quadratic}.
4064 Default is @var{linear}.
4065 @end table
4066
4067 @section haas
4068 Apply Haas effect to audio.
4069
4070 Note that this makes most sense to apply on mono signals.
4071 With this filter applied to mono signals it give some directionality and
4072 stretches its stereo image.
4073
4074 The filter accepts the following options:
4075
4076 @table @option
4077 @item level_in
4078 Set input level. By default is @var{1}, or 0dB
4079
4080 @item level_out
4081 Set output level. By default is @var{1}, or 0dB.
4082
4083 @item side_gain
4084 Set gain applied to side part of signal. By default is @var{1}.
4085
4086 @item middle_source
4087 Set kind of middle source. Can be one of the following:
4088
4089 @table @samp
4090 @item left
4091 Pick left channel.
4092
4093 @item right
4094 Pick right channel.
4095
4096 @item mid
4097 Pick middle part signal of stereo image.
4098
4099 @item side
4100 Pick side part signal of stereo image.
4101 @end table
4102
4103 @item middle_phase
4104 Change middle phase. By default is disabled.
4105
4106 @item left_delay
4107 Set left channel delay. By default is @var{2.05} milliseconds.
4108
4109 @item left_balance
4110 Set left channel balance. By default is @var{-1}.
4111
4112 @item left_gain
4113 Set left channel gain. By default is @var{1}.
4114
4115 @item left_phase
4116 Change left phase. By default is disabled.
4117
4118 @item right_delay
4119 Set right channel delay. By defaults is @var{2.12} milliseconds.
4120
4121 @item right_balance
4122 Set right channel balance. By default is @var{1}.
4123
4124 @item right_gain
4125 Set right channel gain. By default is @var{1}.
4126
4127 @item right_phase
4128 Change right phase. By default is enabled.
4129 @end table
4130
4131 @section hdcd
4132
4133 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
4134 embedded HDCD codes is expanded into a 20-bit PCM stream.
4135
4136 The filter supports the Peak Extend and Low-level Gain Adjustment features
4137 of HDCD, and detects the Transient Filter flag.
4138
4139 @example
4140 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
4141 @end example
4142
4143 When using the filter with wav, note the default encoding for wav is 16-bit,
4144 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
4145 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
4146 @example
4147 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
4148 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
4149 @end example
4150
4151 The filter accepts the following options:
4152
4153 @table @option
4154 @item disable_autoconvert
4155 Disable any automatic format conversion or resampling in the filter graph.
4156
4157 @item process_stereo
4158 Process the stereo channels together. If target_gain does not match between
4159 channels, consider it invalid and use the last valid target_gain.
4160
4161 @item cdt_ms
4162 Set the code detect timer period in ms.
4163
4164 @item force_pe
4165 Always extend peaks above -3dBFS even if PE isn't signaled.
4166
4167 @item analyze_mode
4168 Replace audio with a solid tone and adjust the amplitude to signal some
4169 specific aspect of the decoding process. The output file can be loaded in
4170 an audio editor alongside the original to aid analysis.
4171
4172 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
4173
4174 Modes are:
4175 @table @samp
4176 @item 0, off
4177 Disabled
4178 @item 1, lle
4179 Gain adjustment level at each sample
4180 @item 2, pe
4181 Samples where peak extend occurs
4182 @item 3, cdt
4183 Samples where the code detect timer is active
4184 @item 4, tgm
4185 Samples where the target gain does not match between channels
4186 @end table
4187 @end table
4188
4189 @section headphone
4190
4191 Apply head-related transfer functions (HRTFs) to create virtual
4192 loudspeakers around the user for binaural listening via headphones.
4193 The HRIRs are provided via additional streams, for each channel
4194 one stereo input stream is needed.
4195
4196 The filter accepts the following options:
4197
4198 @table @option
4199 @item map
4200 Set mapping of input streams for convolution.
4201 The argument is a '|'-separated list of channel names in order as they
4202 are given as additional stream inputs for filter.
4203 This also specify number of input streams. Number of input streams
4204 must be not less than number of channels in first stream plus one.
4205
4206 @item gain
4207 Set gain applied to audio. Value is in dB. Default is 0.
4208
4209 @item type
4210 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4211 processing audio in time domain which is slow.
4212 @var{freq} is processing audio in frequency domain which is fast.
4213 Default is @var{freq}.
4214
4215 @item lfe
4216 Set custom gain for LFE channels. Value is in dB. Default is 0.
4217
4218 @item size
4219 Set size of frame in number of samples which will be processed at once.
4220 Default value is @var{1024}. Allowed range is from 1024 to 96000.
4221
4222 @item hrir
4223 Set format of hrir stream.
4224 Default value is @var{stereo}. Alternative value is @var{multich}.
4225 If value is set to @var{stereo}, number of additional streams should
4226 be greater or equal to number of input channels in first input stream.
4227 Also each additional stream should have stereo number of channels.
4228 If value is set to @var{multich}, number of additional streams should
4229 be exactly one. Also number of input channels of additional stream
4230 should be equal or greater than twice number of channels of first input
4231 stream.
4232 @end table
4233
4234 @subsection Examples
4235
4236 @itemize
4237 @item
4238 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4239 each amovie filter use stereo file with IR coefficients as input.
4240 The files give coefficients for each position of virtual loudspeaker:
4241 @example
4242 ffmpeg -i input.wav
4243 -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"
4244 output.wav
4245 @end example
4246
4247 @item
4248 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4249 but now in @var{multich} @var{hrir} format.
4250 @example
4251 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"
4252 output.wav
4253 @end example
4254 @end itemize
4255
4256 @section highpass
4257
4258 Apply a high-pass filter with 3dB point frequency.
4259 The filter can be either single-pole, or double-pole (the default).
4260 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4261
4262 The filter accepts the following options:
4263
4264 @table @option
4265 @item frequency, f
4266 Set frequency in Hz. Default is 3000.
4267
4268 @item poles, p
4269 Set number of poles. Default is 2.
4270
4271 @item width_type, t
4272 Set method to specify band-width of filter.
4273 @table @option
4274 @item h
4275 Hz
4276 @item q
4277 Q-Factor
4278 @item o
4279 octave
4280 @item s
4281 slope
4282 @item k
4283 kHz
4284 @end table
4285
4286 @item width, w
4287 Specify the band-width of a filter in width_type units.
4288 Applies only to double-pole filter.
4289 The default is 0.707q and gives a Butterworth response.
4290
4291 @item mix, m
4292 How much to use filtered signal in output. Default is 1.
4293 Range is between 0 and 1.
4294
4295 @item channels, c
4296 Specify which channels to filter, by default all available are filtered.
4297
4298 @item normalize, n
4299 Normalize biquad coefficients, by default is disabled.
4300 Enabling it will normalize magnitude response at DC to 0dB.
4301
4302 @item transform, a
4303 Set transform type of IIR filter.
4304 @table @option
4305 @item di
4306 @item dii
4307 @item tdii
4308 @item latt
4309 @end table
4310 @end table
4311
4312 @subsection Commands
4313
4314 This filter supports the following commands:
4315 @table @option
4316 @item frequency, f
4317 Change highpass frequency.
4318 Syntax for the command is : "@var{frequency}"
4319
4320 @item width_type, t
4321 Change highpass width_type.
4322 Syntax for the command is : "@var{width_type}"
4323
4324 @item width, w
4325 Change highpass width.
4326 Syntax for the command is : "@var{width}"
4327
4328 @item mix, m
4329 Change highpass mix.
4330 Syntax for the command is : "@var{mix}"
4331 @end table
4332
4333 @section join
4334
4335 Join multiple input streams into one multi-channel stream.
4336
4337 It accepts the following parameters:
4338 @table @option
4339
4340 @item inputs
4341 The number of input streams. It defaults to 2.
4342
4343 @item channel_layout
4344 The desired output channel layout. It defaults to stereo.
4345
4346 @item map
4347 Map channels from inputs to output. The argument is a '|'-separated list of
4348 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
4349 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
4350 can be either the name of the input channel (e.g. FL for front left) or its
4351 index in the specified input stream. @var{out_channel} is the name of the output
4352 channel.
4353 @end table
4354
4355 The filter will attempt to guess the mappings when they are not specified
4356 explicitly. It does so by first trying to find an unused matching input channel
4357 and if that fails it picks the first unused input channel.
4358
4359 Join 3 inputs (with properly set channel layouts):
4360 @example
4361 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
4362 @end example
4363
4364 Build a 5.1 output from 6 single-channel streams:
4365 @example
4366 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
4367 'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
4368 out
4369 @end example
4370
4371 @section ladspa
4372
4373 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
4374
4375 To enable compilation of this filter you need to configure FFmpeg with
4376 @code{--enable-ladspa}.
4377
4378 @table @option
4379 @item file, f
4380 Specifies the name of LADSPA plugin library to load. If the environment
4381 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
4382 each one of the directories specified by the colon separated list in
4383 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
4384 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
4385 @file{/usr/lib/ladspa/}.
4386
4387 @item plugin, p
4388 Specifies the plugin within the library. Some libraries contain only
4389 one plugin, but others contain many of them. If this is not set filter
4390 will list all available plugins within the specified library.
4391
4392 @item controls, c
4393 Set the '|' separated list of controls which are zero or more floating point
4394 values that determine the behavior of the loaded plugin (for example delay,
4395 threshold or gain).
4396 Controls need to be defined using the following syntax:
4397 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
4398 @var{valuei} is the value set on the @var{i}-th control.
4399 Alternatively they can be also defined using the following syntax:
4400 @var{value0}|@var{value1}|@var{value2}|..., where
4401 @var{valuei} is the value set on the @var{i}-th control.
4402 If @option{controls} is set to @code{help}, all available controls and
4403 their valid ranges are printed.
4404
4405 @item sample_rate, s
4406 Specify the sample rate, default to 44100. Only used if plugin have
4407 zero inputs.
4408
4409 @item nb_samples, n
4410 Set the number of samples per channel per each output frame, default
4411 is 1024. Only used if plugin have zero inputs.
4412
4413 @item duration, d
4414 Set the minimum duration of the sourced audio. See
4415 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4416 for the accepted syntax.
4417 Note that the resulting duration may be greater than the specified duration,
4418 as the generated audio is always cut at the end of a complete frame.
4419 If not specified, or the expressed duration is negative, the audio is
4420 supposed to be generated forever.
4421 Only used if plugin have zero inputs.
4422
4423 @item latency, l
4424 Enable latency compensation, by default is disabled.
4425 Only used if plugin have inputs.
4426 @end table
4427
4428 @subsection Examples
4429
4430 @itemize
4431 @item
4432 List all available plugins within amp (LADSPA example plugin) library:
4433 @example
4434 ladspa=file=amp
4435 @end example
4436
4437 @item
4438 List all available controls and their valid ranges for @code{vcf_notch}
4439 plugin from @code{VCF} library:
4440 @example
4441 ladspa=f=vcf:p=vcf_notch:c=help
4442 @end example
4443
4444 @item
4445 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4446 plugin library:
4447 @example
4448 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4449 @end example
4450
4451 @item
4452 Add reverberation to the audio using TAP-plugins
4453 (Tom's Audio Processing plugins):
4454 @example
4455 ladspa=file=tap_reverb:tap_reverb
4456 @end example
4457
4458 @item
4459 Generate white noise, with 0.2 amplitude:
4460 @example
4461 ladspa=file=cmt:noise_source_white:c=c0=.2
4462 @end example
4463
4464 @item
4465 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4466 @code{C* Audio Plugin Suite} (CAPS) library:
4467 @example
4468 ladspa=file=caps:Click:c=c1=20'
4469 @end example
4470
4471 @item
4472 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4473 @example
4474 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4475 @end example
4476
4477 @item
4478 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4479 @code{SWH Plugins} collection:
4480 @example
4481 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4482 @end example
4483
4484 @item
4485 Attenuate low frequencies using Multiband EQ from Steve Harris
4486 @code{SWH Plugins} collection:
4487 @example
4488 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4489 @end example
4490
4491 @item
4492 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4493 (CAPS) library:
4494 @example
4495 ladspa=caps:Narrower
4496 @end example
4497
4498 @item
4499 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4500 @example
4501 ladspa=caps:White:.2
4502 @end example
4503
4504 @item
4505 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4506 @example
4507 ladspa=caps:Fractal:c=c1=1
4508 @end example
4509
4510 @item
4511 Dynamic volume normalization using @code{VLevel} plugin:
4512 @example
4513 ladspa=vlevel-ladspa:vlevel_mono
4514 @end example
4515 @end itemize
4516
4517 @subsection Commands
4518
4519 This filter supports the following commands:
4520 @table @option
4521 @item cN
4522 Modify the @var{N}-th control value.
4523
4524 If the specified value is not valid, it is ignored and prior one is kept.
4525 @end table
4526
4527 @section loudnorm
4528
4529 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4530 Support for both single pass (livestreams, files) and double pass (files) modes.
4531 This algorithm can target IL, LRA, and maximum true peak. In dynamic mode, to accurately
4532 detect true peaks, the audio stream will be upsampled to 192 kHz.
4533 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4534
4535 The filter accepts the following options:
4536
4537 @table @option
4538 @item I, i
4539 Set integrated loudness target.
4540 Range is -70.0 - -5.0. Default value is -24.0.
4541
4542 @item LRA, lra
4543 Set loudness range target.
4544 Range is 1.0 - 20.0. Default value is 7.0.
4545
4546 @item TP, tp
4547 Set maximum true peak.
4548 Range is -9.0 - +0.0. Default value is -2.0.
4549
4550 @item measured_I, measured_i
4551 Measured IL of input file.
4552 Range is -99.0 - +0.0.
4553
4554 @item measured_LRA, measured_lra
4555 Measured LRA of input file.
4556 Range is  0.0 - 99.0.
4557
4558 @item measured_TP, measured_tp
4559 Measured true peak of input file.
4560 Range is  -99.0 - +99.0.
4561
4562 @item measured_thresh
4563 Measured threshold of input file.
4564 Range is -99.0 - +0.0.
4565
4566 @item offset
4567 Set offset gain. Gain is applied before the true-peak limiter.
4568 Range is  -99.0 - +99.0. Default is +0.0.
4569
4570 @item linear
4571 Normalize by linearly scaling the source audio.
4572 @code{measured_I}, @code{measured_LRA}, @code{measured_TP},
4573 and @code{measured_thresh} must all be specified. Target LRA shouldn't
4574 be lower than source LRA and the change in integrated loudness shouldn't
4575 result in a true peak which exceeds the target TP. If any of these
4576 conditions aren't met, normalization mode will revert to @var{dynamic}.
4577 Options are @code{true} or @code{false}. Default is @code{true}.
4578
4579 @item dual_mono
4580 Treat mono input files as "dual-mono". If a mono file is intended for playback
4581 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4582 If set to @code{true}, this option will compensate for this effect.
4583 Multi-channel input files are not affected by this option.
4584 Options are true or false. Default is false.
4585
4586 @item print_format
4587 Set print format for stats. Options are summary, json, or none.
4588 Default value is none.
4589 @end table
4590
4591 @section lowpass
4592
4593 Apply a low-pass filter with 3dB point frequency.
4594 The filter can be either single-pole or double-pole (the default).
4595 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4596
4597 The filter accepts the following options:
4598
4599 @table @option
4600 @item frequency, f
4601 Set frequency in Hz. Default is 500.
4602
4603 @item poles, p
4604 Set number of poles. Default is 2.
4605
4606 @item width_type, t
4607 Set method to specify band-width of filter.
4608 @table @option
4609 @item h
4610 Hz
4611 @item q
4612 Q-Factor
4613 @item o
4614 octave
4615 @item s
4616 slope
4617 @item k
4618 kHz
4619 @end table
4620
4621 @item width, w
4622 Specify the band-width of a filter in width_type units.
4623 Applies only to double-pole filter.
4624 The default is 0.707q and gives a Butterworth response.
4625
4626 @item mix, m
4627 How much to use filtered signal in output. Default is 1.
4628 Range is between 0 and 1.
4629
4630 @item channels, c
4631 Specify which channels to filter, by default all available are filtered.
4632
4633 @item normalize, n
4634 Normalize biquad coefficients, by default is disabled.
4635 Enabling it will normalize magnitude response at DC to 0dB.
4636
4637 @item transform, a
4638 Set transform type of IIR filter.
4639 @table @option
4640 @item di
4641 @item dii
4642 @item tdii
4643 @item latt
4644 @end table
4645 @end table
4646
4647 @subsection Examples
4648 @itemize
4649 @item
4650 Lowpass only LFE channel, it LFE is not present it does nothing:
4651 @example
4652 lowpass=c=LFE
4653 @end example
4654 @end itemize
4655
4656 @subsection Commands
4657
4658 This filter supports the following commands:
4659 @table @option
4660 @item frequency, f
4661 Change lowpass frequency.
4662 Syntax for the command is : "@var{frequency}"
4663
4664 @item width_type, t
4665 Change lowpass width_type.
4666 Syntax for the command is : "@var{width_type}"
4667
4668 @item width, w
4669 Change lowpass width.
4670 Syntax for the command is : "@var{width}"
4671
4672 @item mix, m
4673 Change lowpass mix.
4674 Syntax for the command is : "@var{mix}"
4675 @end table
4676
4677 @section lv2
4678
4679 Load a LV2 (LADSPA Version 2) plugin.
4680
4681 To enable compilation of this filter you need to configure FFmpeg with
4682 @code{--enable-lv2}.
4683
4684 @table @option
4685 @item plugin, p
4686 Specifies the plugin URI. You may need to escape ':'.
4687
4688 @item controls, c
4689 Set the '|' separated list of controls which are zero or more floating point
4690 values that determine the behavior of the loaded plugin (for example delay,
4691 threshold or gain).
4692 If @option{controls} is set to @code{help}, all available controls and
4693 their valid ranges are printed.
4694
4695 @item sample_rate, s
4696 Specify the sample rate, default to 44100. Only used if plugin have
4697 zero inputs.
4698
4699 @item nb_samples, n
4700 Set the number of samples per channel per each output frame, default
4701 is 1024. Only used if plugin have zero inputs.
4702
4703 @item duration, d
4704 Set the minimum duration of the sourced audio. See
4705 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4706 for the accepted syntax.
4707 Note that the resulting duration may be greater than the specified duration,
4708 as the generated audio is always cut at the end of a complete frame.
4709 If not specified, or the expressed duration is negative, the audio is
4710 supposed to be generated forever.
4711 Only used if plugin have zero inputs.
4712 @end table
4713
4714 @subsection Examples
4715
4716 @itemize
4717 @item
4718 Apply bass enhancer plugin from Calf:
4719 @example
4720 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4721 @end example
4722
4723 @item
4724 Apply vinyl plugin from Calf:
4725 @example
4726 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4727 @end example
4728
4729 @item
4730 Apply bit crusher plugin from ArtyFX:
4731 @example
4732 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4733 @end example
4734 @end itemize
4735
4736 @section mcompand
4737 Multiband Compress or expand the audio's dynamic range.
4738
4739 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4740 This is akin to the crossover of a loudspeaker, and results in flat frequency
4741 response when absent compander action.
4742
4743 It accepts the following parameters:
4744
4745 @table @option
4746 @item args
4747 This option syntax is:
4748 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4749 For explanation of each item refer to compand filter documentation.
4750 @end table
4751
4752 @anchor{pan}
4753 @section pan
4754
4755 Mix channels with specific gain levels. The filter accepts the output
4756 channel layout followed by a set of channels definitions.
4757
4758 This filter is also designed to efficiently remap the channels of an audio
4759 stream.
4760
4761 The filter accepts parameters of the form:
4762 "@var{l}|@var{outdef}|@var{outdef}|..."
4763
4764 @table @option
4765 @item l
4766 output channel layout or number of channels
4767
4768 @item outdef
4769 output channel specification, of the form:
4770 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4771
4772 @item out_name
4773 output channel to define, either a channel name (FL, FR, etc.) or a channel
4774 number (c0, c1, etc.)
4775
4776 @item gain
4777 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4778
4779 @item in_name
4780 input channel to use, see out_name for details; it is not possible to mix
4781 named and numbered input channels
4782 @end table
4783
4784 If the `=' in a channel specification is replaced by `<', then the gains for
4785 that specification will be renormalized so that the total is 1, thus
4786 avoiding clipping noise.
4787
4788 @subsection Mixing examples
4789
4790 For example, if you want to down-mix from stereo to mono, but with a bigger
4791 factor for the left channel:
4792 @example
4793 pan=1c|c0=0.9*c0+0.1*c1
4794 @end example
4795
4796 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4797 7-channels surround:
4798 @example
4799 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4800 @end example
4801
4802 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4803 that should be preferred (see "-ac" option) unless you have very specific
4804 needs.
4805
4806 @subsection Remapping examples
4807
4808 The channel remapping will be effective if, and only if:
4809
4810 @itemize
4811 @item gain coefficients are zeroes or ones,
4812 @item only one input per channel output,
4813 @end itemize
4814
4815 If all these conditions are satisfied, the filter will notify the user ("Pure
4816 channel mapping detected"), and use an optimized and lossless method to do the
4817 remapping.
4818
4819 For example, if you have a 5.1 source and want a stereo audio stream by
4820 dropping the extra channels:
4821 @example
4822 pan="stereo| c0=FL | c1=FR"
4823 @end example
4824
4825 Given the same source, you can also switch front left and front right channels
4826 and keep the input channel layout:
4827 @example
4828 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4829 @end example
4830
4831 If the input is a stereo audio stream, you can mute the front left channel (and
4832 still keep the stereo channel layout) with:
4833 @example
4834 pan="stereo|c1=c1"
4835 @end example
4836
4837 Still with a stereo audio stream input, you can copy the right channel in both
4838 front left and right:
4839 @example
4840 pan="stereo| c0=FR | c1=FR"
4841 @end example
4842
4843 @section replaygain
4844
4845 ReplayGain scanner filter. This filter takes an audio stream as an input and
4846 outputs it unchanged.
4847 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4848
4849 @section resample
4850
4851 Convert the audio sample format, sample rate and channel layout. It is
4852 not meant to be used directly.
4853
4854 @section rubberband
4855 Apply time-stretching and pitch-shifting with librubberband.
4856
4857 To enable compilation of this filter, you need to configure FFmpeg with
4858 @code{--enable-librubberband}.
4859
4860 The filter accepts the following options:
4861
4862 @table @option
4863 @item tempo
4864 Set tempo scale factor.
4865
4866 @item pitch
4867 Set pitch scale factor.
4868
4869 @item transients
4870 Set transients detector.
4871 Possible values are:
4872 @table @var
4873 @item crisp
4874 @item mixed
4875 @item smooth
4876 @end table
4877
4878 @item detector
4879 Set detector.
4880 Possible values are:
4881 @table @var
4882 @item compound
4883 @item percussive
4884 @item soft
4885 @end table
4886
4887 @item phase
4888 Set phase.
4889 Possible values are:
4890 @table @var
4891 @item laminar
4892 @item independent
4893 @end table
4894
4895 @item window
4896 Set processing window size.
4897 Possible values are:
4898 @table @var
4899 @item standard
4900 @item short
4901 @item long
4902 @end table
4903
4904 @item smoothing
4905 Set smoothing.
4906 Possible values are:
4907 @table @var
4908 @item off
4909 @item on
4910 @end table
4911
4912 @item formant
4913 Enable formant preservation when shift pitching.
4914 Possible values are:
4915 @table @var
4916 @item shifted
4917 @item preserved
4918 @end table
4919
4920 @item pitchq
4921 Set pitch quality.
4922 Possible values are:
4923 @table @var
4924 @item quality
4925 @item speed
4926 @item consistency
4927 @end table
4928
4929 @item channels
4930 Set channels.
4931 Possible values are:
4932 @table @var
4933 @item apart
4934 @item together
4935 @end table
4936 @end table
4937
4938 @subsection Commands
4939
4940 This filter supports the following commands:
4941 @table @option
4942 @item tempo
4943 Change filter tempo scale factor.
4944 Syntax for the command is : "@var{tempo}"
4945
4946 @item pitch
4947 Change filter pitch scale factor.
4948 Syntax for the command is : "@var{pitch}"
4949 @end table
4950
4951 @section sidechaincompress
4952
4953 This filter acts like normal compressor but has the ability to compress
4954 detected signal using second input signal.
4955 It needs two input streams and returns one output stream.
4956 First input stream will be processed depending on second stream signal.
4957 The filtered signal then can be filtered with other filters in later stages of
4958 processing. See @ref{pan} and @ref{amerge} filter.
4959
4960 The filter accepts the following options:
4961
4962 @table @option
4963 @item level_in
4964 Set input gain. Default is 1. Range is between 0.015625 and 64.
4965
4966 @item mode
4967 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
4968 Default is @code{downward}.
4969
4970 @item threshold
4971 If a signal of second stream raises above this level it will affect the gain
4972 reduction of first stream.
4973 By default is 0.125. Range is between 0.00097563 and 1.
4974
4975 @item ratio
4976 Set a ratio about which the signal is reduced. 1:2 means that if the level
4977 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4978 Default is 2. Range is between 1 and 20.
4979
4980 @item attack
4981 Amount of milliseconds the signal has to rise above the threshold before gain
4982 reduction starts. Default is 20. Range is between 0.01 and 2000.
4983
4984 @item release
4985 Amount of milliseconds the signal has to fall below the threshold before
4986 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4987
4988 @item makeup
4989 Set the amount by how much signal will be amplified after processing.
4990 Default is 1. Range is from 1 to 64.
4991
4992 @item knee
4993 Curve the sharp knee around the threshold to enter gain reduction more softly.
4994 Default is 2.82843. Range is between 1 and 8.
4995
4996 @item link
4997 Choose if the @code{average} level between all channels of side-chain stream
4998 or the louder(@code{maximum}) channel of side-chain stream affects the
4999 reduction. Default is @code{average}.
5000
5001 @item detection
5002 Should the exact signal be taken in case of @code{peak} or an RMS one in case
5003 of @code{rms}. Default is @code{rms} which is mainly smoother.
5004
5005 @item level_sc
5006 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
5007
5008 @item mix
5009 How much to use compressed signal in output. Default is 1.
5010 Range is between 0 and 1.
5011 @end table
5012
5013 @subsection Commands
5014
5015 This filter supports the all above options as @ref{commands}.
5016
5017 @subsection Examples
5018
5019 @itemize
5020 @item
5021 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
5022 depending on the signal of 2nd input and later compressed signal to be
5023 merged with 2nd input:
5024 @example
5025 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
5026 @end example
5027 @end itemize
5028
5029 @section sidechaingate
5030
5031 A sidechain gate acts like a normal (wideband) gate but has the ability to
5032 filter the detected signal before sending it to the gain reduction stage.
5033 Normally a gate uses the full range signal to detect a level above the
5034 threshold.
5035 For example: If you cut all lower frequencies from your sidechain signal
5036 the gate will decrease the volume of your track only if not enough highs
5037 appear. With this technique you are able to reduce the resonation of a
5038 natural drum or remove "rumbling" of muted strokes from a heavily distorted
5039 guitar.
5040 It needs two input streams and returns one output stream.
5041 First input stream will be processed depending on second stream signal.
5042
5043 The filter accepts the following options:
5044
5045 @table @option
5046 @item level_in
5047 Set input level before filtering.
5048 Default is 1. Allowed range is from 0.015625 to 64.
5049
5050 @item mode
5051 Set the mode of operation. Can be @code{upward} or @code{downward}.
5052 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
5053 will be amplified, expanding dynamic range in upward direction.
5054 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
5055
5056 @item range
5057 Set the level of gain reduction when the signal is below the threshold.
5058 Default is 0.06125. Allowed range is from 0 to 1.
5059 Setting this to 0 disables reduction and then filter behaves like expander.
5060
5061 @item threshold
5062 If a signal rises above this level the gain reduction is released.
5063 Default is 0.125. Allowed range is from 0 to 1.
5064
5065 @item ratio
5066 Set a ratio about which the signal is reduced.
5067 Default is 2. Allowed range is from 1 to 9000.
5068
5069 @item attack
5070 Amount of milliseconds the signal has to rise above the threshold before gain
5071 reduction stops.
5072 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
5073
5074 @item release
5075 Amount of milliseconds the signal has to fall below the threshold before the
5076 reduction is increased again. Default is 250 milliseconds.
5077 Allowed range is from 0.01 to 9000.
5078
5079 @item makeup
5080 Set amount of amplification of signal after processing.
5081 Default is 1. Allowed range is from 1 to 64.
5082
5083 @item knee
5084 Curve the sharp knee around the threshold to enter gain reduction more softly.
5085 Default is 2.828427125. Allowed range is from 1 to 8.
5086
5087 @item detection
5088 Choose if exact signal should be taken for detection or an RMS like one.
5089 Default is rms. Can be peak or rms.
5090
5091 @item link
5092 Choose if the average level between all channels or the louder channel affects
5093 the reduction.
5094 Default is average. Can be average or maximum.
5095
5096 @item level_sc
5097 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
5098 @end table
5099
5100 @subsection Commands
5101
5102 This filter supports the all above options as @ref{commands}.
5103
5104 @section silencedetect
5105
5106 Detect silence in an audio stream.
5107
5108 This filter logs a message when it detects that the input audio volume is less
5109 or equal to a noise tolerance value for a duration greater or equal to the
5110 minimum detected noise duration.
5111
5112 The printed times and duration are expressed in seconds. The
5113 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
5114 is set on the first frame whose timestamp equals or exceeds the detection
5115 duration and it contains the timestamp of the first frame of the silence.
5116
5117 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
5118 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
5119 keys are set on the first frame after the silence. If @option{mono} is
5120 enabled, and each channel is evaluated separately, the @code{.X}
5121 suffixed keys are used, and @code{X} corresponds to the channel number.
5122
5123 The filter accepts the following options:
5124
5125 @table @option
5126 @item noise, n
5127 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
5128 specified value) or amplitude ratio. Default is -60dB, or 0.001.
5129
5130 @item duration, d
5131 Set silence duration until notification (default is 2 seconds). See
5132 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5133 for the accepted syntax.
5134
5135 @item mono, m
5136 Process each channel separately, instead of combined. By default is disabled.
5137 @end table
5138
5139 @subsection Examples
5140
5141 @itemize
5142 @item
5143 Detect 5 seconds of silence with -50dB noise tolerance:
5144 @example
5145 silencedetect=n=-50dB:d=5
5146 @end example
5147
5148 @item
5149 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
5150 tolerance in @file{silence.mp3}:
5151 @example
5152 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
5153 @end example
5154 @end itemize
5155
5156 @section silenceremove
5157
5158 Remove silence from the beginning, middle or end of the audio.
5159
5160 The filter accepts the following options:
5161
5162 @table @option
5163 @item start_periods
5164 This value is used to indicate if audio should be trimmed at beginning of
5165 the audio. A value of zero indicates no silence should be trimmed from the
5166 beginning. When specifying a non-zero value, it trims audio up until it
5167 finds non-silence. Normally, when trimming silence from beginning of audio
5168 the @var{start_periods} will be @code{1} but it can be increased to higher
5169 values to trim all audio up to specific count of non-silence periods.
5170 Default value is @code{0}.
5171
5172 @item start_duration
5173 Specify the amount of time that non-silence must be detected before it stops
5174 trimming audio. By increasing the duration, bursts of noises can be treated
5175 as silence and trimmed off. Default value is @code{0}.
5176
5177 @item start_threshold
5178 This indicates what sample value should be treated as silence. For digital
5179 audio, a value of @code{0} may be fine but for audio recorded from analog,
5180 you may wish to increase the value to account for background noise.
5181 Can be specified in dB (in case "dB" is appended to the specified value)
5182 or amplitude ratio. Default value is @code{0}.
5183
5184 @item start_silence
5185 Specify max duration of silence at beginning that will be kept after
5186 trimming. Default is 0, which is equal to trimming all samples detected
5187 as silence.
5188
5189 @item start_mode
5190 Specify mode of detection of silence end in start of multi-channel audio.
5191 Can be @var{any} or @var{all}. Default is @var{any}.
5192 With @var{any}, any sample that is detected as non-silence will cause
5193 stopped trimming of silence.
5194 With @var{all}, only if all channels are detected as non-silence will cause
5195 stopped trimming of silence.
5196
5197 @item stop_periods
5198 Set the count for trimming silence from the end of audio.
5199 To remove silence from the middle of a file, specify a @var{stop_periods}
5200 that is negative. This value is then treated as a positive value and is
5201 used to indicate the effect should restart processing as specified by
5202 @var{start_periods}, making it suitable for removing periods of silence
5203 in the middle of the audio.
5204 Default value is @code{0}.
5205
5206 @item stop_duration
5207 Specify a duration of silence that must exist before audio is not copied any
5208 more. By specifying a higher duration, silence that is wanted can be left in
5209 the audio.
5210 Default value is @code{0}.
5211
5212 @item stop_threshold
5213 This is the same as @option{start_threshold} but for trimming silence from
5214 the end of audio.
5215 Can be specified in dB (in case "dB" is appended to the specified value)
5216 or amplitude ratio. Default value is @code{0}.
5217
5218 @item stop_silence
5219 Specify max duration of silence at end that will be kept after
5220 trimming. Default is 0, which is equal to trimming all samples detected
5221 as silence.
5222
5223 @item stop_mode
5224 Specify mode of detection of silence start in end of multi-channel audio.
5225 Can be @var{any} or @var{all}. Default is @var{any}.
5226 With @var{any}, any sample that is detected as non-silence will cause
5227 stopped trimming of silence.
5228 With @var{all}, only if all channels are detected as non-silence will cause
5229 stopped trimming of silence.
5230
5231 @item detection
5232 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
5233 and works better with digital silence which is exactly 0.
5234 Default value is @code{rms}.
5235
5236 @item window
5237 Set duration in number of seconds used to calculate size of window in number
5238 of samples for detecting silence.
5239 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
5240 @end table
5241
5242 @subsection Examples
5243
5244 @itemize
5245 @item
5246 The following example shows how this filter can be used to start a recording
5247 that does not contain the delay at the start which usually occurs between
5248 pressing the record button and the start of the performance:
5249 @example
5250 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
5251 @end example
5252
5253 @item
5254 Trim all silence encountered from beginning to end where there is more than 1
5255 second of silence in audio:
5256 @example
5257 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
5258 @end example
5259
5260 @item
5261 Trim all digital silence samples, using peak detection, from beginning to end
5262 where there is more than 0 samples of digital silence in audio and digital
5263 silence is detected in all channels at same positions in stream:
5264 @example
5265 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
5266 @end example
5267 @end itemize
5268
5269 @section sofalizer
5270
5271 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
5272 loudspeakers around the user for binaural listening via headphones (audio
5273 formats up to 9 channels supported).
5274 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
5275 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
5276 Austrian Academy of Sciences.
5277
5278 To enable compilation of this filter you need to configure FFmpeg with
5279 @code{--enable-libmysofa}.
5280
5281 The filter accepts the following options:
5282
5283 @table @option
5284 @item sofa
5285 Set the SOFA file used for rendering.
5286
5287 @item gain
5288 Set gain applied to audio. Value is in dB. Default is 0.
5289
5290 @item rotation
5291 Set rotation of virtual loudspeakers in deg. Default is 0.
5292
5293 @item elevation
5294 Set elevation of virtual speakers in deg. Default is 0.
5295
5296 @item radius
5297 Set distance in meters between loudspeakers and the listener with near-field
5298 HRTFs. Default is 1.
5299
5300 @item type
5301 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
5302 processing audio in time domain which is slow.
5303 @var{freq} is processing audio in frequency domain which is fast.
5304 Default is @var{freq}.
5305
5306 @item speakers
5307 Set custom positions of virtual loudspeakers. Syntax for this option is:
5308 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
5309 Each virtual loudspeaker is described with short channel name following with
5310 azimuth and elevation in degrees.
5311 Each virtual loudspeaker description is separated by '|'.
5312 For example to override front left and front right channel positions use:
5313 'speakers=FL 45 15|FR 345 15'.
5314 Descriptions with unrecognised channel names are ignored.
5315
5316 @item lfegain
5317 Set custom gain for LFE channels. Value is in dB. Default is 0.
5318
5319 @item framesize
5320 Set custom frame size in number of samples. Default is 1024.
5321 Allowed range is from 1024 to 96000. Only used if option @samp{type}
5322 is set to @var{freq}.
5323
5324 @item normalize
5325 Should all IRs be normalized upon importing SOFA file.
5326 By default is enabled.
5327
5328 @item interpolate
5329 Should nearest IRs be interpolated with neighbor IRs if exact position
5330 does not match. By default is disabled.
5331
5332 @item minphase
5333 Minphase all IRs upon loading of SOFA file. By default is disabled.
5334
5335 @item anglestep
5336 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
5337
5338 @item radstep
5339 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
5340 @end table
5341
5342 @subsection Examples
5343
5344 @itemize
5345 @item
5346 Using ClubFritz6 sofa file:
5347 @example
5348 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
5349 @end example
5350
5351 @item
5352 Using ClubFritz12 sofa file and bigger radius with small rotation:
5353 @example
5354 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
5355 @end example
5356
5357 @item
5358 Similar as above but with custom speaker positions for front left, front right, back left and back right
5359 and also with custom gain:
5360 @example
5361 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
5362 @end example
5363 @end itemize
5364
5365 @section speechnorm
5366 Speech Normalizer.
5367
5368 This filter expands or compresses each half-cycle of audio samples
5369 (local set of samples all above or all below zero and between two nearest zero crossings) depending
5370 on threshold value, so audio reaches target peak value under conditions controlled by below options.
5371
5372 The filter accepts the following options:
5373
5374 @table @option
5375 @item peak, p
5376 Set the expansion target peak value. This specifies the highest allowed absolute amplitude
5377 level for the normalized audio input. Default value is 0.95. Allowed range is from 0.0 to 1.0.
5378
5379 @item expansion, e
5380 Set the maximum expansion factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5381 This option controls maximum local half-cycle of samples expansion. The maximum expansion
5382 would be such that local peak value reaches target peak value but never to surpass it and that
5383 ratio between new and previous peak value does not surpass this option value.
5384
5385 @item compression, c
5386 Set the maximum compression factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5387 This option controls maximum local half-cycle of samples compression. This option is used
5388 only if @option{threshold} option is set to value greater than 0.0, then in such cases
5389 when local peak is lower or same as value set by @option{threshold} all samples belonging to
5390 that peak's half-cycle will be compressed by current compression factor.
5391
5392 @item threshold, t
5393 Set the threshold value. Default value is 0.0. Allowed range is from 0.0 to 1.0.
5394 This option specifies which half-cycles of samples will be compressed and which will be expanded.
5395 Any half-cycle samples with their local peak value below or same as this option value will be
5396 compressed by current compression factor, otherwise, if greater than threshold value they will be
5397 expanded with expansion factor so that it could reach peak target value but never surpass it.
5398
5399 @item raise, r
5400 Set the expansion raising amount per each half-cycle of samples. Default value is 0.001.
5401 Allowed range is from 0.0 to 1.0. This controls how fast expansion factor is raised per
5402 each new half-cycle until it reaches @option{expansion} value.
5403 Setting this options too high may lead to distortions.
5404
5405 @item fall, f
5406 Set the compression raising amount per each half-cycle of samples. Default value is 0.001.
5407 Allowed range is from 0.0 to 1.0. This controls how fast compression factor is raised per
5408 each new half-cycle until it reaches @option{compression} value.
5409
5410 @item channels, h
5411 Specify which channels to filter, by default all available channels are filtered.
5412
5413 @item invert, i
5414 Enable inverted filtering, by default is disabled. This inverts interpretation of @option{threshold}
5415 option. When enabled any half-cycle of samples with their local peak value below or same as
5416 @option{threshold} option will be expanded otherwise it will be compressed.
5417
5418 @item link, l
5419 Link channels when calculating gain applied to each filtered channel sample, by default is disabled.
5420 When disabled each filtered channel gain calculation is independent, otherwise when this option
5421 is enabled the minimum of all possible gains for each filtered channel is used.
5422 @end table
5423
5424 @subsection Commands
5425
5426 This filter supports the all above options as @ref{commands}.
5427
5428 @section stereotools
5429
5430 This filter has some handy utilities to manage stereo signals, for converting
5431 M/S stereo recordings to L/R signal while having control over the parameters
5432 or spreading the stereo image of master track.
5433
5434 The filter accepts the following options:
5435
5436 @table @option
5437 @item level_in
5438 Set input level before filtering for both channels. Defaults is 1.
5439 Allowed range is from 0.015625 to 64.
5440
5441 @item level_out
5442 Set output level after filtering for both channels. Defaults is 1.
5443 Allowed range is from 0.015625 to 64.
5444
5445 @item balance_in
5446 Set input balance between both channels. Default is 0.
5447 Allowed range is from -1 to 1.
5448
5449 @item balance_out
5450 Set output balance between both channels. Default is 0.
5451 Allowed range is from -1 to 1.
5452
5453 @item softclip
5454 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
5455 clipping. Disabled by default.
5456
5457 @item mutel
5458 Mute the left channel. Disabled by default.
5459
5460 @item muter
5461 Mute the right channel. Disabled by default.
5462
5463 @item phasel
5464 Change the phase of the left channel. Disabled by default.
5465
5466 @item phaser
5467 Change the phase of the right channel. Disabled by default.
5468
5469 @item mode
5470 Set stereo mode. Available values are:
5471
5472 @table @samp
5473 @item lr>lr
5474 Left/Right to Left/Right, this is default.
5475
5476 @item lr>ms
5477 Left/Right to Mid/Side.
5478
5479 @item ms>lr
5480 Mid/Side to Left/Right.
5481
5482 @item lr>ll
5483 Left/Right to Left/Left.
5484
5485 @item lr>rr
5486 Left/Right to Right/Right.
5487
5488 @item lr>l+r
5489 Left/Right to Left + Right.
5490
5491 @item lr>rl
5492 Left/Right to Right/Left.
5493
5494 @item ms>ll
5495 Mid/Side to Left/Left.
5496
5497 @item ms>rr
5498 Mid/Side to Right/Right.
5499 @end table
5500
5501 @item slev
5502 Set level of side signal. Default is 1.
5503 Allowed range is from 0.015625 to 64.
5504
5505 @item sbal
5506 Set balance of side signal. Default is 0.
5507 Allowed range is from -1 to 1.
5508
5509 @item mlev
5510 Set level of the middle signal. Default is 1.
5511 Allowed range is from 0.015625 to 64.
5512
5513 @item mpan
5514 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5515
5516 @item base
5517 Set stereo base between mono and inversed channels. Default is 0.
5518 Allowed range is from -1 to 1.
5519
5520 @item delay
5521 Set delay in milliseconds how much to delay left from right channel and
5522 vice versa. Default is 0. Allowed range is from -20 to 20.
5523
5524 @item sclevel
5525 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5526
5527 @item phase
5528 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5529
5530 @item bmode_in, bmode_out
5531 Set balance mode for balance_in/balance_out option.
5532
5533 Can be one of the following:
5534
5535 @table @samp
5536 @item balance
5537 Classic balance mode. Attenuate one channel at time.
5538 Gain is raised up to 1.
5539
5540 @item amplitude
5541 Similar as classic mode above but gain is raised up to 2.
5542
5543 @item power
5544 Equal power distribution, from -6dB to +6dB range.
5545 @end table
5546 @end table
5547
5548 @subsection Examples
5549
5550 @itemize
5551 @item
5552 Apply karaoke like effect:
5553 @example
5554 stereotools=mlev=0.015625
5555 @end example
5556
5557 @item
5558 Convert M/S signal to L/R:
5559 @example
5560 "stereotools=mode=ms>lr"
5561 @end example
5562 @end itemize
5563
5564 @section stereowiden
5565
5566 This filter enhance the stereo effect by suppressing signal common to both
5567 channels and by delaying the signal of left into right and vice versa,
5568 thereby widening the stereo effect.
5569
5570 The filter accepts the following options:
5571
5572 @table @option
5573 @item delay
5574 Time in milliseconds of the delay of left signal into right and vice versa.
5575 Default is 20 milliseconds.
5576
5577 @item feedback
5578 Amount of gain in delayed signal into right and vice versa. Gives a delay
5579 effect of left signal in right output and vice versa which gives widening
5580 effect. Default is 0.3.
5581
5582 @item crossfeed
5583 Cross feed of left into right with inverted phase. This helps in suppressing
5584 the mono. If the value is 1 it will cancel all the signal common to both
5585 channels. Default is 0.3.
5586
5587 @item drymix
5588 Set level of input signal of original channel. Default is 0.8.
5589 @end table
5590
5591 @subsection Commands
5592
5593 This filter supports the all above options except @code{delay} as @ref{commands}.
5594
5595 @section superequalizer
5596 Apply 18 band equalizer.
5597
5598 The filter accepts the following options:
5599 @table @option
5600 @item 1b
5601 Set 65Hz band gain.
5602 @item 2b
5603 Set 92Hz band gain.
5604 @item 3b
5605 Set 131Hz band gain.
5606 @item 4b
5607 Set 185Hz band gain.
5608 @item 5b
5609 Set 262Hz band gain.
5610 @item 6b
5611 Set 370Hz band gain.
5612 @item 7b
5613 Set 523Hz band gain.
5614 @item 8b
5615 Set 740Hz band gain.
5616 @item 9b
5617 Set 1047Hz band gain.
5618 @item 10b
5619 Set 1480Hz band gain.
5620 @item 11b
5621 Set 2093Hz band gain.
5622 @item 12b
5623 Set 2960Hz band gain.
5624 @item 13b
5625 Set 4186Hz band gain.
5626 @item 14b
5627 Set 5920Hz band gain.
5628 @item 15b
5629 Set 8372Hz band gain.
5630 @item 16b
5631 Set 11840Hz band gain.
5632 @item 17b
5633 Set 16744Hz band gain.
5634 @item 18b
5635 Set 20000Hz band gain.
5636 @end table
5637
5638 @section surround
5639 Apply audio surround upmix filter.
5640
5641 This filter allows to produce multichannel output from audio stream.
5642
5643 The filter accepts the following options:
5644
5645 @table @option
5646 @item chl_out
5647 Set output channel layout. By default, this is @var{5.1}.
5648
5649 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5650 for the required syntax.
5651
5652 @item chl_in
5653 Set input channel layout. By default, this is @var{stereo}.
5654
5655 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5656 for the required syntax.
5657
5658 @item level_in
5659 Set input volume level. By default, this is @var{1}.
5660
5661 @item level_out
5662 Set output volume level. By default, this is @var{1}.
5663
5664 @item lfe
5665 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5666
5667 @item lfe_low
5668 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5669
5670 @item lfe_high
5671 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5672
5673 @item lfe_mode
5674 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5675 In @var{add} mode, LFE channel is created from input audio and added to output.
5676 In @var{sub} mode, LFE channel is created from input audio and added to output but
5677 also all non-LFE output channels are subtracted with output LFE channel.
5678
5679 @item angle
5680 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5681 Default is @var{90}.
5682
5683 @item fc_in
5684 Set front center input volume. By default, this is @var{1}.
5685
5686 @item fc_out
5687 Set front center output volume. By default, this is @var{1}.
5688
5689 @item fl_in
5690 Set front left input volume. By default, this is @var{1}.
5691
5692 @item fl_out
5693 Set front left output volume. By default, this is @var{1}.
5694
5695 @item fr_in
5696 Set front right input volume. By default, this is @var{1}.
5697
5698 @item fr_out
5699 Set front right output volume. By default, this is @var{1}.
5700
5701 @item sl_in
5702 Set side left input volume. By default, this is @var{1}.
5703
5704 @item sl_out
5705 Set side left output volume. By default, this is @var{1}.
5706
5707 @item sr_in
5708 Set side right input volume. By default, this is @var{1}.
5709
5710 @item sr_out
5711 Set side right output volume. By default, this is @var{1}.
5712
5713 @item bl_in
5714 Set back left input volume. By default, this is @var{1}.
5715
5716 @item bl_out
5717 Set back left output volume. By default, this is @var{1}.
5718
5719 @item br_in
5720 Set back right input volume. By default, this is @var{1}.
5721
5722 @item br_out
5723 Set back right output volume. By default, this is @var{1}.
5724
5725 @item bc_in
5726 Set back center input volume. By default, this is @var{1}.
5727
5728 @item bc_out
5729 Set back center output volume. By default, this is @var{1}.
5730
5731 @item lfe_in
5732 Set LFE input volume. By default, this is @var{1}.
5733
5734 @item lfe_out
5735 Set LFE output volume. By default, this is @var{1}.
5736
5737 @item allx
5738 Set spread usage of stereo image across X axis for all channels.
5739
5740 @item ally
5741 Set spread usage of stereo image across Y axis for all channels.
5742
5743 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5744 Set spread usage of stereo image across X axis for each channel.
5745
5746 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5747 Set spread usage of stereo image across Y axis for each channel.
5748
5749 @item win_size
5750 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5751
5752 @item win_func
5753 Set window function.
5754
5755 It accepts the following values:
5756 @table @samp
5757 @item rect
5758 @item bartlett
5759 @item hann, hanning
5760 @item hamming
5761 @item blackman
5762 @item welch
5763 @item flattop
5764 @item bharris
5765 @item bnuttall
5766 @item bhann
5767 @item sine
5768 @item nuttall
5769 @item lanczos
5770 @item gauss
5771 @item tukey
5772 @item dolph
5773 @item cauchy
5774 @item parzen
5775 @item poisson
5776 @item bohman
5777 @end table
5778 Default is @code{hann}.
5779
5780 @item overlap
5781 Set window overlap. If set to 1, the recommended overlap for selected
5782 window function will be picked. Default is @code{0.5}.
5783 @end table
5784
5785 @section treble, highshelf
5786
5787 Boost or cut treble (upper) frequencies of the audio using a two-pole
5788 shelving filter with a response similar to that of a standard
5789 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
5790
5791 The filter accepts the following options:
5792
5793 @table @option
5794 @item gain, g
5795 Give the gain at whichever is the lower of ~22 kHz and the
5796 Nyquist frequency. Its useful range is about -20 (for a large cut)
5797 to +20 (for a large boost). Beware of clipping when using a positive gain.
5798
5799 @item frequency, f
5800 Set the filter's central frequency and so can be used
5801 to extend or reduce the frequency range to be boosted or cut.
5802 The default value is @code{3000} Hz.
5803
5804 @item width_type, t
5805 Set method to specify band-width of filter.
5806 @table @option
5807 @item h
5808 Hz
5809 @item q
5810 Q-Factor
5811 @item o
5812 octave
5813 @item s
5814 slope
5815 @item k
5816 kHz
5817 @end table
5818
5819 @item width, w
5820 Determine how steep is the filter's shelf transition.
5821
5822 @item mix, m
5823 How much to use filtered signal in output. Default is 1.
5824 Range is between 0 and 1.
5825
5826 @item channels, c
5827 Specify which channels to filter, by default all available are filtered.
5828
5829 @item normalize, n
5830 Normalize biquad coefficients, by default is disabled.
5831 Enabling it will normalize magnitude response at DC to 0dB.
5832
5833 @item transform, a
5834 Set transform type of IIR filter.
5835 @table @option
5836 @item di
5837 @item dii
5838 @item tdii
5839 @item latt
5840 @end table
5841 @end table
5842
5843 @subsection Commands
5844
5845 This filter supports the following commands:
5846 @table @option
5847 @item frequency, f
5848 Change treble frequency.
5849 Syntax for the command is : "@var{frequency}"
5850
5851 @item width_type, t
5852 Change treble width_type.
5853 Syntax for the command is : "@var{width_type}"
5854
5855 @item width, w
5856 Change treble width.
5857 Syntax for the command is : "@var{width}"
5858
5859 @item gain, g
5860 Change treble gain.
5861 Syntax for the command is : "@var{gain}"
5862
5863 @item mix, m
5864 Change treble mix.
5865 Syntax for the command is : "@var{mix}"
5866 @end table
5867
5868 @section tremolo
5869
5870 Sinusoidal amplitude modulation.
5871
5872 The filter accepts the following options:
5873
5874 @table @option
5875 @item f
5876 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
5877 (20 Hz or lower) will result in a tremolo effect.
5878 This filter may also be used as a ring modulator by specifying
5879 a modulation frequency higher than 20 Hz.
5880 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5881
5882 @item d
5883 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5884 Default value is 0.5.
5885 @end table
5886
5887 @section vibrato
5888
5889 Sinusoidal phase modulation.
5890
5891 The filter accepts the following options:
5892
5893 @table @option
5894 @item f
5895 Modulation frequency in Hertz.
5896 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5897
5898 @item d
5899 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5900 Default value is 0.5.
5901 @end table
5902
5903 @section volume
5904
5905 Adjust the input audio volume.
5906
5907 It accepts the following parameters:
5908 @table @option
5909
5910 @item volume
5911 Set audio volume expression.
5912
5913 Output values are clipped to the maximum value.
5914
5915 The output audio volume is given by the relation:
5916 @example
5917 @var{output_volume} = @var{volume} * @var{input_volume}
5918 @end example
5919
5920 The default value for @var{volume} is "1.0".
5921
5922 @item precision
5923 This parameter represents the mathematical precision.
5924
5925 It determines which input sample formats will be allowed, which affects the
5926 precision of the volume scaling.
5927
5928 @table @option
5929 @item fixed
5930 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
5931 @item float
5932 32-bit floating-point; this limits input sample format to FLT. (default)
5933 @item double
5934 64-bit floating-point; this limits input sample format to DBL.
5935 @end table
5936
5937 @item replaygain
5938 Choose the behaviour on encountering ReplayGain side data in input frames.
5939
5940 @table @option
5941 @item drop
5942 Remove ReplayGain side data, ignoring its contents (the default).
5943
5944 @item ignore
5945 Ignore ReplayGain side data, but leave it in the frame.
5946
5947 @item track
5948 Prefer the track gain, if present.
5949
5950 @item album
5951 Prefer the album gain, if present.
5952 @end table
5953
5954 @item replaygain_preamp
5955 Pre-amplification gain in dB to apply to the selected replaygain gain.
5956
5957 Default value for @var{replaygain_preamp} is 0.0.
5958
5959 @item replaygain_noclip
5960 Prevent clipping by limiting the gain applied.
5961
5962 Default value for @var{replaygain_noclip} is 1.
5963
5964 @item eval
5965 Set when the volume expression is evaluated.
5966
5967 It accepts the following values:
5968 @table @samp
5969 @item once
5970 only evaluate expression once during the filter initialization, or
5971 when the @samp{volume} command is sent
5972
5973 @item frame
5974 evaluate expression for each incoming frame
5975 @end table
5976
5977 Default value is @samp{once}.
5978 @end table
5979
5980 The volume expression can contain the following parameters.
5981
5982 @table @option
5983 @item n
5984 frame number (starting at zero)
5985 @item nb_channels
5986 number of channels
5987 @item nb_consumed_samples
5988 number of samples consumed by the filter
5989 @item nb_samples
5990 number of samples in the current frame
5991 @item pos
5992 original frame position in the file
5993 @item pts
5994 frame PTS
5995 @item sample_rate
5996 sample rate
5997 @item startpts
5998 PTS at start of stream
5999 @item startt
6000 time at start of stream
6001 @item t
6002 frame time
6003 @item tb
6004 timestamp timebase
6005 @item volume
6006 last set volume value
6007 @end table
6008
6009 Note that when @option{eval} is set to @samp{once} only the
6010 @var{sample_rate} and @var{tb} variables are available, all other
6011 variables will evaluate to NAN.
6012
6013 @subsection Commands
6014
6015 This filter supports the following commands:
6016 @table @option
6017 @item volume
6018 Modify the volume expression.
6019 The command accepts the same syntax of the corresponding option.
6020
6021 If the specified expression is not valid, it is kept at its current
6022 value.
6023 @end table
6024
6025 @subsection Examples
6026
6027 @itemize
6028 @item
6029 Halve the input audio volume:
6030 @example
6031 volume=volume=0.5
6032 volume=volume=1/2
6033 volume=volume=-6.0206dB
6034 @end example
6035
6036 In all the above example the named key for @option{volume} can be
6037 omitted, for example like in:
6038 @example
6039 volume=0.5
6040 @end example
6041
6042 @item
6043 Increase input audio power by 6 decibels using fixed-point precision:
6044 @example
6045 volume=volume=6dB:precision=fixed
6046 @end example
6047
6048 @item
6049 Fade volume after time 10 with an annihilation period of 5 seconds:
6050 @example
6051 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
6052 @end example
6053 @end itemize
6054
6055 @section volumedetect
6056
6057 Detect the volume of the input video.
6058
6059 The filter has no parameters. The input is not modified. Statistics about
6060 the volume will be printed in the log when the input stream end is reached.
6061
6062 In particular it will show the mean volume (root mean square), maximum
6063 volume (on a per-sample basis), and the beginning of a histogram of the
6064 registered volume values (from the maximum value to a cumulated 1/1000 of
6065 the samples).
6066
6067 All volumes are in decibels relative to the maximum PCM value.
6068
6069 @subsection Examples
6070
6071 Here is an excerpt of the output:
6072 @example
6073 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
6074 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
6075 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
6076 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
6077 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
6078 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
6079 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
6080 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
6081 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
6082 @end example
6083
6084 It means that:
6085 @itemize
6086 @item
6087 The mean square energy is approximately -27 dB, or 10^-2.7.
6088 @item
6089 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
6090 @item
6091 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
6092 @end itemize
6093
6094 In other words, raising the volume by +4 dB does not cause any clipping,
6095 raising it by +5 dB causes clipping for 6 samples, etc.
6096
6097 @c man end AUDIO FILTERS
6098
6099 @chapter Audio Sources
6100 @c man begin AUDIO SOURCES
6101
6102 Below is a description of the currently available audio sources.
6103
6104 @section abuffer
6105
6106 Buffer audio frames, and make them available to the filter chain.
6107
6108 This source is mainly intended for a programmatic use, in particular
6109 through the interface defined in @file{libavfilter/buffersrc.h}.
6110
6111 It accepts the following parameters:
6112 @table @option
6113
6114 @item time_base
6115 The timebase which will be used for timestamps of submitted frames. It must be
6116 either a floating-point number or in @var{numerator}/@var{denominator} form.
6117
6118 @item sample_rate
6119 The sample rate of the incoming audio buffers.
6120
6121 @item sample_fmt
6122 The sample format of the incoming audio buffers.
6123 Either a sample format name or its corresponding integer representation from
6124 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
6125
6126 @item channel_layout
6127 The channel layout of the incoming audio buffers.
6128 Either a channel layout name from channel_layout_map in
6129 @file{libavutil/channel_layout.c} or its corresponding integer representation
6130 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
6131
6132 @item channels
6133 The number of channels of the incoming audio buffers.
6134 If both @var{channels} and @var{channel_layout} are specified, then they
6135 must be consistent.
6136
6137 @end table
6138
6139 @subsection Examples
6140
6141 @example
6142 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
6143 @end example
6144
6145 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
6146 Since the sample format with name "s16p" corresponds to the number
6147 6 and the "stereo" channel layout corresponds to the value 0x3, this is
6148 equivalent to:
6149 @example
6150 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
6151 @end example
6152
6153 @section aevalsrc
6154
6155 Generate an audio signal specified by an expression.
6156
6157 This source accepts in input one or more expressions (one for each
6158 channel), which are evaluated and used to generate a corresponding
6159 audio signal.
6160
6161 This source accepts the following options:
6162
6163 @table @option
6164 @item exprs
6165 Set the '|'-separated expressions list for each separate channel. In case the
6166 @option{channel_layout} option is not specified, the selected channel layout
6167 depends on the number of provided expressions. Otherwise the last
6168 specified expression is applied to the remaining output channels.
6169
6170 @item channel_layout, c
6171 Set the channel layout. The number of channels in the specified layout
6172 must be equal to the number of specified expressions.
6173
6174 @item duration, d
6175 Set the minimum duration of the sourced audio. See
6176 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6177 for the accepted syntax.
6178 Note that the resulting duration may be greater than the specified
6179 duration, as the generated audio is always cut at the end of a
6180 complete frame.
6181
6182 If not specified, or the expressed duration is negative, the audio is
6183 supposed to be generated forever.
6184
6185 @item nb_samples, n
6186 Set the number of samples per channel per each output frame,
6187 default to 1024.
6188
6189 @item sample_rate, s
6190 Specify the sample rate, default to 44100.
6191 @end table
6192
6193 Each expression in @var{exprs} can contain the following constants:
6194
6195 @table @option
6196 @item n
6197 number of the evaluated sample, starting from 0
6198
6199 @item t
6200 time of the evaluated sample expressed in seconds, starting from 0
6201
6202 @item s
6203 sample rate
6204
6205 @end table
6206
6207 @subsection Examples
6208
6209 @itemize
6210 @item
6211 Generate silence:
6212 @example
6213 aevalsrc=0
6214 @end example
6215
6216 @item
6217 Generate a sin signal with frequency of 440 Hz, set sample rate to
6218 8000 Hz:
6219 @example
6220 aevalsrc="sin(440*2*PI*t):s=8000"
6221 @end example
6222
6223 @item
6224 Generate a two channels signal, specify the channel layout (Front
6225 Center + Back Center) explicitly:
6226 @example
6227 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
6228 @end example
6229
6230 @item
6231 Generate white noise:
6232 @example
6233 aevalsrc="-2+random(0)"
6234 @end example
6235
6236 @item
6237 Generate an amplitude modulated signal:
6238 @example
6239 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
6240 @end example
6241
6242 @item
6243 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
6244 @example
6245 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
6246 @end example
6247
6248 @end itemize
6249
6250 @section afirsrc
6251
6252 Generate a FIR coefficients using frequency sampling method.
6253
6254 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6255
6256 The filter accepts the following options:
6257
6258 @table @option
6259 @item taps, t
6260 Set number of filter coefficents in output audio stream.
6261 Default value is 1025.
6262
6263 @item frequency, f
6264 Set frequency points from where magnitude and phase are set.
6265 This must be in non decreasing order, and first element must be 0, while last element
6266 must be 1. Elements are separated by white spaces.
6267
6268 @item magnitude, m
6269 Set magnitude value for every frequency point set by @option{frequency}.
6270 Number of values must be same as number of frequency points.
6271 Values are separated by white spaces.
6272
6273 @item phase, p
6274 Set phase value for every frequency point set by @option{frequency}.
6275 Number of values must be same as number of frequency points.
6276 Values are separated by white spaces.
6277
6278 @item sample_rate, r
6279 Set sample rate, default is 44100.
6280
6281 @item nb_samples, n
6282 Set number of samples per each frame. Default is 1024.
6283
6284 @item win_func, w
6285 Set window function. Default is blackman.
6286 @end table
6287
6288 @section anullsrc
6289
6290 The null audio source, return unprocessed audio frames. It is mainly useful
6291 as a template and to be employed in analysis / debugging tools, or as
6292 the source for filters which ignore the input data (for example the sox
6293 synth filter).
6294
6295 This source accepts the following options:
6296
6297 @table @option
6298
6299 @item channel_layout, cl
6300
6301 Specifies the channel layout, and can be either an integer or a string
6302 representing a channel layout. The default value of @var{channel_layout}
6303 is "stereo".
6304
6305 Check the channel_layout_map definition in
6306 @file{libavutil/channel_layout.c} for the mapping between strings and
6307 channel layout values.
6308
6309 @item sample_rate, r
6310 Specifies the sample rate, and defaults to 44100.
6311
6312 @item nb_samples, n
6313 Set the number of samples per requested frames.
6314
6315 @item duration, d
6316 Set the duration of the sourced audio. See
6317 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6318 for the accepted syntax.
6319
6320 If not specified, or the expressed duration is negative, the audio is
6321 supposed to be generated forever.
6322 @end table
6323
6324 @subsection Examples
6325
6326 @itemize
6327 @item
6328 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
6329 @example
6330 anullsrc=r=48000:cl=4
6331 @end example
6332
6333 @item
6334 Do the same operation with a more obvious syntax:
6335 @example
6336 anullsrc=r=48000:cl=mono
6337 @end example
6338 @end itemize
6339
6340 All the parameters need to be explicitly defined.
6341
6342 @section flite
6343
6344 Synthesize a voice utterance using the libflite library.
6345
6346 To enable compilation of this filter you need to configure FFmpeg with
6347 @code{--enable-libflite}.
6348
6349 Note that versions of the flite library prior to 2.0 are not thread-safe.
6350
6351 The filter accepts the following options:
6352
6353 @table @option
6354
6355 @item list_voices
6356 If set to 1, list the names of the available voices and exit
6357 immediately. Default value is 0.
6358
6359 @item nb_samples, n
6360 Set the maximum number of samples per frame. Default value is 512.
6361
6362 @item textfile
6363 Set the filename containing the text to speak.
6364
6365 @item text
6366 Set the text to speak.
6367
6368 @item voice, v
6369 Set the voice to use for the speech synthesis. Default value is
6370 @code{kal}. See also the @var{list_voices} option.
6371 @end table
6372
6373 @subsection Examples
6374
6375 @itemize
6376 @item
6377 Read from file @file{speech.txt}, and synthesize the text using the
6378 standard flite voice:
6379 @example
6380 flite=textfile=speech.txt
6381 @end example
6382
6383 @item
6384 Read the specified text selecting the @code{slt} voice:
6385 @example
6386 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6387 @end example
6388
6389 @item
6390 Input text to ffmpeg:
6391 @example
6392 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6393 @end example
6394
6395 @item
6396 Make @file{ffplay} speak the specified text, using @code{flite} and
6397 the @code{lavfi} device:
6398 @example
6399 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
6400 @end example
6401 @end itemize
6402
6403 For more information about libflite, check:
6404 @url{http://www.festvox.org/flite/}
6405
6406 @section anoisesrc
6407
6408 Generate a noise audio signal.
6409
6410 The filter accepts the following options:
6411
6412 @table @option
6413 @item sample_rate, r
6414 Specify the sample rate. Default value is 48000 Hz.
6415
6416 @item amplitude, a
6417 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
6418 is 1.0.
6419
6420 @item duration, d
6421 Specify the duration of the generated audio stream. Not specifying this option
6422 results in noise with an infinite length.
6423
6424 @item color, colour, c
6425 Specify the color of noise. Available noise colors are white, pink, brown,
6426 blue, violet and velvet. Default color is white.
6427
6428 @item seed, s
6429 Specify a value used to seed the PRNG.
6430
6431 @item nb_samples, n
6432 Set the number of samples per each output frame, default is 1024.
6433 @end table
6434
6435 @subsection Examples
6436
6437 @itemize
6438
6439 @item
6440 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
6441 @example
6442 anoisesrc=d=60:c=pink:r=44100:a=0.5
6443 @end example
6444 @end itemize
6445
6446 @section hilbert
6447
6448 Generate odd-tap Hilbert transform FIR coefficients.
6449
6450 The resulting stream can be used with @ref{afir} filter for phase-shifting
6451 the signal by 90 degrees.
6452
6453 This is used in many matrix coding schemes and for analytic signal generation.
6454 The process is often written as a multiplication by i (or j), the imaginary unit.
6455
6456 The filter accepts the following options:
6457
6458 @table @option
6459
6460 @item sample_rate, s
6461 Set sample rate, default is 44100.
6462
6463 @item taps, t
6464 Set length of FIR filter, default is 22051.
6465
6466 @item nb_samples, n
6467 Set number of samples per each frame.
6468
6469 @item win_func, w
6470 Set window function to be used when generating FIR coefficients.
6471 @end table
6472
6473 @section sinc
6474
6475 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
6476
6477 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6478
6479 The filter accepts the following options:
6480
6481 @table @option
6482 @item sample_rate, r
6483 Set sample rate, default is 44100.
6484
6485 @item nb_samples, n
6486 Set number of samples per each frame. Default is 1024.
6487
6488 @item hp
6489 Set high-pass frequency. Default is 0.
6490
6491 @item lp
6492 Set low-pass frequency. Default is 0.
6493 If high-pass frequency is lower than low-pass frequency and low-pass frequency
6494 is higher than 0 then filter will create band-pass filter coefficients,
6495 otherwise band-reject filter coefficients.
6496
6497 @item phase
6498 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
6499
6500 @item beta
6501 Set Kaiser window beta.
6502
6503 @item att
6504 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
6505
6506 @item round
6507 Enable rounding, by default is disabled.
6508
6509 @item hptaps
6510 Set number of taps for high-pass filter.
6511
6512 @item lptaps
6513 Set number of taps for low-pass filter.
6514 @end table
6515
6516 @section sine
6517
6518 Generate an audio signal made of a sine wave with amplitude 1/8.
6519
6520 The audio signal is bit-exact.
6521
6522 The filter accepts the following options:
6523
6524 @table @option
6525
6526 @item frequency, f
6527 Set the carrier frequency. Default is 440 Hz.
6528
6529 @item beep_factor, b
6530 Enable a periodic beep every second with frequency @var{beep_factor} times
6531 the carrier frequency. Default is 0, meaning the beep is disabled.
6532
6533 @item sample_rate, r
6534 Specify the sample rate, default is 44100.
6535
6536 @item duration, d
6537 Specify the duration of the generated audio stream.
6538
6539 @item samples_per_frame
6540 Set the number of samples per output frame.
6541
6542 The expression can contain the following constants:
6543
6544 @table @option
6545 @item n
6546 The (sequential) number of the output audio frame, starting from 0.
6547
6548 @item pts
6549 The PTS (Presentation TimeStamp) of the output audio frame,
6550 expressed in @var{TB} units.
6551
6552 @item t
6553 The PTS of the output audio frame, expressed in seconds.
6554
6555 @item TB
6556 The timebase of the output audio frames.
6557 @end table
6558
6559 Default is @code{1024}.
6560 @end table
6561
6562 @subsection Examples
6563
6564 @itemize
6565
6566 @item
6567 Generate a simple 440 Hz sine wave:
6568 @example
6569 sine
6570 @end example
6571
6572 @item
6573 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6574 @example
6575 sine=220:4:d=5
6576 sine=f=220:b=4:d=5
6577 sine=frequency=220:beep_factor=4:duration=5
6578 @end example
6579
6580 @item
6581 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6582 pattern:
6583 @example
6584 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6585 @end example
6586 @end itemize
6587
6588 @c man end AUDIO SOURCES
6589
6590 @chapter Audio Sinks
6591 @c man begin AUDIO SINKS
6592
6593 Below is a description of the currently available audio sinks.
6594
6595 @section abuffersink
6596
6597 Buffer audio frames, and make them available to the end of filter chain.
6598
6599 This sink is mainly intended for programmatic use, in particular
6600 through the interface defined in @file{libavfilter/buffersink.h}
6601 or the options system.
6602
6603 It accepts a pointer to an AVABufferSinkContext structure, which
6604 defines the incoming buffers' formats, to be passed as the opaque
6605 parameter to @code{avfilter_init_filter} for initialization.
6606 @section anullsink
6607
6608 Null audio sink; do absolutely nothing with the input audio. It is
6609 mainly useful as a template and for use in analysis / debugging
6610 tools.
6611
6612 @c man end AUDIO SINKS
6613
6614 @chapter Video Filters
6615 @c man begin VIDEO FILTERS
6616
6617 When you configure your FFmpeg build, you can disable any of the
6618 existing filters using @code{--disable-filters}.
6619 The configure output will show the video filters included in your
6620 build.
6621
6622 Below is a description of the currently available video filters.
6623
6624 @section addroi
6625
6626 Mark a region of interest in a video frame.
6627
6628 The frame data is passed through unchanged, but metadata is attached
6629 to the frame indicating regions of interest which can affect the
6630 behaviour of later encoding.  Multiple regions can be marked by
6631 applying the filter multiple times.
6632
6633 @table @option
6634 @item x
6635 Region distance in pixels from the left edge of the frame.
6636 @item y
6637 Region distance in pixels from the top edge of the frame.
6638 @item w
6639 Region width in pixels.
6640 @item h
6641 Region height in pixels.
6642
6643 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6644 and may contain the following variables:
6645 @table @option
6646 @item iw
6647 Width of the input frame.
6648 @item ih
6649 Height of the input frame.
6650 @end table
6651
6652 @item qoffset
6653 Quantisation offset to apply within the region.
6654
6655 This must be a real value in the range -1 to +1.  A value of zero
6656 indicates no quality change.  A negative value asks for better quality
6657 (less quantisation), while a positive value asks for worse quality
6658 (greater quantisation).
6659
6660 The range is calibrated so that the extreme values indicate the
6661 largest possible offset - if the rest of the frame is encoded with the
6662 worst possible quality, an offset of -1 indicates that this region
6663 should be encoded with the best possible quality anyway.  Intermediate
6664 values are then interpolated in some codec-dependent way.
6665
6666 For example, in 10-bit H.264 the quantisation parameter varies between
6667 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6668 this region should be encoded with a QP around one-tenth of the full
6669 range better than the rest of the frame.  So, if most of the frame
6670 were to be encoded with a QP of around 30, this region would get a QP
6671 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6672 An extreme value of -1 would indicate that this region should be
6673 encoded with the best possible quality regardless of the treatment of
6674 the rest of the frame - that is, should be encoded at a QP of -12.
6675 @item clear
6676 If set to true, remove any existing regions of interest marked on the
6677 frame before adding the new one.
6678 @end table
6679
6680 @subsection Examples
6681
6682 @itemize
6683 @item
6684 Mark the centre quarter of the frame as interesting.
6685 @example
6686 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6687 @end example
6688 @item
6689 Mark the 100-pixel-wide region on the left edge of the frame as very
6690 uninteresting (to be encoded at much lower quality than the rest of
6691 the frame).
6692 @example
6693 addroi=0:0:100:ih:+1/5
6694 @end example
6695 @end itemize
6696
6697 @section alphaextract
6698
6699 Extract the alpha component from the input as a grayscale video. This
6700 is especially useful with the @var{alphamerge} filter.
6701
6702 @section alphamerge
6703
6704 Add or replace the alpha component of the primary input with the
6705 grayscale value of a second input. This is intended for use with
6706 @var{alphaextract} to allow the transmission or storage of frame
6707 sequences that have alpha in a format that doesn't support an alpha
6708 channel.
6709
6710 For example, to reconstruct full frames from a normal YUV-encoded video
6711 and a separate video created with @var{alphaextract}, you might use:
6712 @example
6713 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6714 @end example
6715
6716 @section amplify
6717
6718 Amplify differences between current pixel and pixels of adjacent frames in
6719 same pixel location.
6720
6721 This filter accepts the following options:
6722
6723 @table @option
6724 @item radius
6725 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6726 For example radius of 3 will instruct filter to calculate average of 7 frames.
6727
6728 @item factor
6729 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6730
6731 @item threshold
6732 Set threshold for difference amplification. Any difference greater or equal to
6733 this value will not alter source pixel. Default is 10.
6734 Allowed range is from 0 to 65535.
6735
6736 @item tolerance
6737 Set tolerance for difference amplification. Any difference lower to
6738 this value will not alter source pixel. Default is 0.
6739 Allowed range is from 0 to 65535.
6740
6741 @item low
6742 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6743 This option controls maximum possible value that will decrease source pixel value.
6744
6745 @item high
6746 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6747 This option controls maximum possible value that will increase source pixel value.
6748
6749 @item planes
6750 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
6751 @end table
6752
6753 @subsection Commands
6754
6755 This filter supports the following @ref{commands} that corresponds to option of same name:
6756 @table @option
6757 @item factor
6758 @item threshold
6759 @item tolerance
6760 @item low
6761 @item high
6762 @item planes
6763 @end table
6764
6765 @section ass
6766
6767 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
6768 and libavformat to work. On the other hand, it is limited to ASS (Advanced
6769 Substation Alpha) subtitles files.
6770
6771 This filter accepts the following option in addition to the common options from
6772 the @ref{subtitles} filter:
6773
6774 @table @option
6775 @item shaping
6776 Set the shaping engine
6777
6778 Available values are:
6779 @table @samp
6780 @item auto
6781 The default libass shaping engine, which is the best available.
6782 @item simple
6783 Fast, font-agnostic shaper that can do only substitutions
6784 @item complex
6785 Slower shaper using OpenType for substitutions and positioning
6786 @end table
6787
6788 The default is @code{auto}.
6789 @end table
6790
6791 @section atadenoise
6792 Apply an Adaptive Temporal Averaging Denoiser to the video input.
6793
6794 The filter accepts the following options:
6795
6796 @table @option
6797 @item 0a
6798 Set threshold A for 1st plane. Default is 0.02.
6799 Valid range is 0 to 0.3.
6800
6801 @item 0b
6802 Set threshold B for 1st plane. Default is 0.04.
6803 Valid range is 0 to 5.
6804
6805 @item 1a
6806 Set threshold A for 2nd plane. Default is 0.02.
6807 Valid range is 0 to 0.3.
6808
6809 @item 1b
6810 Set threshold B for 2nd plane. Default is 0.04.
6811 Valid range is 0 to 5.
6812
6813 @item 2a
6814 Set threshold A for 3rd plane. Default is 0.02.
6815 Valid range is 0 to 0.3.
6816
6817 @item 2b
6818 Set threshold B for 3rd plane. Default is 0.04.
6819 Valid range is 0 to 5.
6820
6821 Threshold A is designed to react on abrupt changes in the input signal and
6822 threshold B is designed to react on continuous changes in the input signal.
6823
6824 @item s
6825 Set number of frames filter will use for averaging. Default is 9. Must be odd
6826 number in range [5, 129].
6827
6828 @item p
6829 Set what planes of frame filter will use for averaging. Default is all.
6830
6831 @item a
6832 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
6833 Alternatively can be set to @code{s} serial.
6834
6835 Parallel can be faster then serial, while other way around is never true.
6836 Parallel will abort early on first change being greater then thresholds, while serial
6837 will continue processing other side of frames if they are equal or below thresholds.
6838 @end table
6839
6840 @subsection Commands
6841 This filter supports same @ref{commands} as options except option @code{s}.
6842 The command accepts the same syntax of the corresponding option.
6843
6844 @section avgblur
6845
6846 Apply average blur filter.
6847
6848 The filter accepts the following options:
6849
6850 @table @option
6851 @item sizeX
6852 Set horizontal radius size.
6853
6854 @item planes
6855 Set which planes to filter. By default all planes are filtered.
6856
6857 @item sizeY
6858 Set vertical radius size, if zero it will be same as @code{sizeX}.
6859 Default is @code{0}.
6860 @end table
6861
6862 @subsection Commands
6863 This filter supports same commands as options.
6864 The command accepts the same syntax of the corresponding option.
6865
6866 If the specified expression is not valid, it is kept at its current
6867 value.
6868
6869 @section bbox
6870
6871 Compute the bounding box for the non-black pixels in the input frame
6872 luminance plane.
6873
6874 This filter computes the bounding box containing all the pixels with a
6875 luminance value greater than the minimum allowed value.
6876 The parameters describing the bounding box are printed on the filter
6877 log.
6878
6879 The filter accepts the following option:
6880
6881 @table @option
6882 @item min_val
6883 Set the minimal luminance value. Default is @code{16}.
6884 @end table
6885
6886 @section bilateral
6887 Apply bilateral filter, spatial smoothing while preserving edges.
6888
6889 The filter accepts the following options:
6890 @table @option
6891 @item sigmaS
6892 Set sigma of gaussian function to calculate spatial weight.
6893 Allowed range is 0 to 512. Default is 0.1.
6894
6895 @item sigmaR
6896 Set sigma of gaussian function to calculate range weight.
6897 Allowed range is 0 to 1. Default is 0.1.
6898
6899 @item planes
6900 Set planes to filter. Default is first only.
6901 @end table
6902
6903 @section bitplanenoise
6904
6905 Show and measure bit plane noise.
6906
6907 The filter accepts the following options:
6908
6909 @table @option
6910 @item bitplane
6911 Set which plane to analyze. Default is @code{1}.
6912
6913 @item filter
6914 Filter out noisy pixels from @code{bitplane} set above.
6915 Default is disabled.
6916 @end table
6917
6918 @section blackdetect
6919
6920 Detect video intervals that are (almost) completely black. Can be
6921 useful to detect chapter transitions, commercials, or invalid
6922 recordings.
6923
6924 The filter outputs its detection analysis to both the log as well as
6925 frame metadata. If a black segment of at least the specified minimum
6926 duration is found, a line with the start and end timestamps as well
6927 as duration is printed to the log with level @code{info}. In addition,
6928 a log line with level @code{debug} is printed per frame showing the
6929 black amount detected for that frame.
6930
6931 The filter also attaches metadata to the first frame of a black
6932 segment with key @code{lavfi.black_start} and to the first frame
6933 after the black segment ends with key @code{lavfi.black_end}. The
6934 value is the frame's timestamp. This metadata is added regardless
6935 of the minimum duration specified.
6936
6937 The filter accepts the following options:
6938
6939 @table @option
6940 @item black_min_duration, d
6941 Set the minimum detected black duration expressed in seconds. It must
6942 be a non-negative floating point number.
6943
6944 Default value is 2.0.
6945
6946 @item picture_black_ratio_th, pic_th
6947 Set the threshold for considering a picture "black".
6948 Express the minimum value for the ratio:
6949 @example
6950 @var{nb_black_pixels} / @var{nb_pixels}
6951 @end example
6952
6953 for which a picture is considered black.
6954 Default value is 0.98.
6955
6956 @item pixel_black_th, pix_th
6957 Set the threshold for considering a pixel "black".
6958
6959 The threshold expresses the maximum pixel luminance value for which a
6960 pixel is considered "black". The provided value is scaled according to
6961 the following equation:
6962 @example
6963 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
6964 @end example
6965
6966 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
6967 the input video format, the range is [0-255] for YUV full-range
6968 formats and [16-235] for YUV non full-range formats.
6969
6970 Default value is 0.10.
6971 @end table
6972
6973 The following example sets the maximum pixel threshold to the minimum
6974 value, and detects only black intervals of 2 or more seconds:
6975 @example
6976 blackdetect=d=2:pix_th=0.00
6977 @end example
6978
6979 @section blackframe
6980
6981 Detect frames that are (almost) completely black. Can be useful to
6982 detect chapter transitions or commercials. Output lines consist of
6983 the frame number of the detected frame, the percentage of blackness,
6984 the position in the file if known or -1 and the timestamp in seconds.
6985
6986 In order to display the output lines, you need to set the loglevel at
6987 least to the AV_LOG_INFO value.
6988
6989 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
6990 The value represents the percentage of pixels in the picture that
6991 are below the threshold value.
6992
6993 It accepts the following parameters:
6994
6995 @table @option
6996
6997 @item amount
6998 The percentage of the pixels that have to be below the threshold; it defaults to
6999 @code{98}.
7000
7001 @item threshold, thresh
7002 The threshold below which a pixel value is considered black; it defaults to
7003 @code{32}.
7004
7005 @end table
7006
7007 @anchor{blend}
7008 @section blend
7009
7010 Blend two video frames into each other.
7011
7012 The @code{blend} filter takes two input streams and outputs one
7013 stream, the first input is the "top" layer and second input is
7014 "bottom" layer.  By default, the output terminates when the longest input terminates.
7015
7016 The @code{tblend} (time blend) filter takes two consecutive frames
7017 from one single stream, and outputs the result obtained by blending
7018 the new frame on top of the old frame.
7019
7020 A description of the accepted options follows.
7021
7022 @table @option
7023 @item c0_mode
7024 @item c1_mode
7025 @item c2_mode
7026 @item c3_mode
7027 @item all_mode
7028 Set blend mode for specific pixel component or all pixel components in case
7029 of @var{all_mode}. Default value is @code{normal}.
7030
7031 Available values for component modes are:
7032 @table @samp
7033 @item addition
7034 @item grainmerge
7035 @item and
7036 @item average
7037 @item burn
7038 @item darken
7039 @item difference
7040 @item grainextract
7041 @item divide
7042 @item dodge
7043 @item freeze
7044 @item exclusion
7045 @item extremity
7046 @item glow
7047 @item hardlight
7048 @item hardmix
7049 @item heat
7050 @item lighten
7051 @item linearlight
7052 @item multiply
7053 @item multiply128
7054 @item negation
7055 @item normal
7056 @item or
7057 @item overlay
7058 @item phoenix
7059 @item pinlight
7060 @item reflect
7061 @item screen
7062 @item softlight
7063 @item subtract
7064 @item vividlight
7065 @item xor
7066 @end table
7067
7068 @item c0_opacity
7069 @item c1_opacity
7070 @item c2_opacity
7071 @item c3_opacity
7072 @item all_opacity
7073 Set blend opacity for specific pixel component or all pixel components in case
7074 of @var{all_opacity}. Only used in combination with pixel component blend modes.
7075
7076 @item c0_expr
7077 @item c1_expr
7078 @item c2_expr
7079 @item c3_expr
7080 @item all_expr
7081 Set blend expression for specific pixel component or all pixel components in case
7082 of @var{all_expr}. Note that related mode options will be ignored if those are set.
7083
7084 The expressions can use the following variables:
7085
7086 @table @option
7087 @item N
7088 The sequential number of the filtered frame, starting from @code{0}.
7089
7090 @item X
7091 @item Y
7092 the coordinates of the current sample
7093
7094 @item W
7095 @item H
7096 the width and height of currently filtered plane
7097
7098 @item SW
7099 @item SH
7100 Width and height scale for the plane being filtered. It is the
7101 ratio between the dimensions of the current plane to the luma plane,
7102 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
7103 the luma plane and @code{0.5,0.5} for the chroma planes.
7104
7105 @item T
7106 Time of the current frame, expressed in seconds.
7107
7108 @item TOP, A
7109 Value of pixel component at current location for first video frame (top layer).
7110
7111 @item BOTTOM, B
7112 Value of pixel component at current location for second video frame (bottom layer).
7113 @end table
7114 @end table
7115
7116 The @code{blend} filter also supports the @ref{framesync} options.
7117
7118 @subsection Examples
7119
7120 @itemize
7121 @item
7122 Apply transition from bottom layer to top layer in first 10 seconds:
7123 @example
7124 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
7125 @end example
7126
7127 @item
7128 Apply linear horizontal transition from top layer to bottom layer:
7129 @example
7130 blend=all_expr='A*(X/W)+B*(1-X/W)'
7131 @end example
7132
7133 @item
7134 Apply 1x1 checkerboard effect:
7135 @example
7136 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
7137 @end example
7138
7139 @item
7140 Apply uncover left effect:
7141 @example
7142 blend=all_expr='if(gte(N*SW+X,W),A,B)'
7143 @end example
7144
7145 @item
7146 Apply uncover down effect:
7147 @example
7148 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
7149 @end example
7150
7151 @item
7152 Apply uncover up-left effect:
7153 @example
7154 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
7155 @end example
7156
7157 @item
7158 Split diagonally video and shows top and bottom layer on each side:
7159 @example
7160 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
7161 @end example
7162
7163 @item
7164 Display differences between the current and the previous frame:
7165 @example
7166 tblend=all_mode=grainextract
7167 @end example
7168 @end itemize
7169
7170 @section bm3d
7171
7172 Denoise frames using Block-Matching 3D algorithm.
7173
7174 The filter accepts the following options.
7175
7176 @table @option
7177 @item sigma
7178 Set denoising strength. Default value is 1.
7179 Allowed range is from 0 to 999.9.
7180 The denoising algorithm is very sensitive to sigma, so adjust it
7181 according to the source.
7182
7183 @item block
7184 Set local patch size. This sets dimensions in 2D.
7185
7186 @item bstep
7187 Set sliding step for processing blocks. Default value is 4.
7188 Allowed range is from 1 to 64.
7189 Smaller values allows processing more reference blocks and is slower.
7190
7191 @item group
7192 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
7193 When set to 1, no block matching is done. Larger values allows more blocks
7194 in single group.
7195 Allowed range is from 1 to 256.
7196
7197 @item range
7198 Set radius for search block matching. Default is 9.
7199 Allowed range is from 1 to INT32_MAX.
7200
7201 @item mstep
7202 Set step between two search locations for block matching. Default is 1.
7203 Allowed range is from 1 to 64. Smaller is slower.
7204
7205 @item thmse
7206 Set threshold of mean square error for block matching. Valid range is 0 to
7207 INT32_MAX.
7208
7209 @item hdthr
7210 Set thresholding parameter for hard thresholding in 3D transformed domain.
7211 Larger values results in stronger hard-thresholding filtering in frequency
7212 domain.
7213
7214 @item estim
7215 Set filtering estimation mode. Can be @code{basic} or @code{final}.
7216 Default is @code{basic}.
7217
7218 @item ref
7219 If enabled, filter will use 2nd stream for block matching.
7220 Default is disabled for @code{basic} value of @var{estim} option,
7221 and always enabled if value of @var{estim} is @code{final}.
7222
7223 @item planes
7224 Set planes to filter. Default is all available except alpha.
7225 @end table
7226
7227 @subsection Examples
7228
7229 @itemize
7230 @item
7231 Basic filtering with bm3d:
7232 @example
7233 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
7234 @end example
7235
7236 @item
7237 Same as above, but filtering only luma:
7238 @example
7239 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
7240 @end example
7241
7242 @item
7243 Same as above, but with both estimation modes:
7244 @example
7245 split[a][b],[a]bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
7246 @end example
7247
7248 @item
7249 Same as above, but prefilter with @ref{nlmeans} filter instead:
7250 @example
7251 split[a][b],[a]nlmeans=s=3:r=7:p=3[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
7252 @end example
7253 @end itemize
7254
7255 @section boxblur
7256
7257 Apply a boxblur algorithm to the input video.
7258
7259 It accepts the following parameters:
7260
7261 @table @option
7262
7263 @item luma_radius, lr
7264 @item luma_power, lp
7265 @item chroma_radius, cr
7266 @item chroma_power, cp
7267 @item alpha_radius, ar
7268 @item alpha_power, ap
7269
7270 @end table
7271
7272 A description of the accepted options follows.
7273
7274 @table @option
7275 @item luma_radius, lr
7276 @item chroma_radius, cr
7277 @item alpha_radius, ar
7278 Set an expression for the box radius in pixels used for blurring the
7279 corresponding input plane.
7280
7281 The radius value must be a non-negative number, and must not be
7282 greater than the value of the expression @code{min(w,h)/2} for the
7283 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
7284 planes.
7285
7286 Default value for @option{luma_radius} is "2". If not specified,
7287 @option{chroma_radius} and @option{alpha_radius} default to the
7288 corresponding value set for @option{luma_radius}.
7289
7290 The expressions can contain the following constants:
7291 @table @option
7292 @item w
7293 @item h
7294 The input width and height in pixels.
7295
7296 @item cw
7297 @item ch
7298 The input chroma image width and height in pixels.
7299
7300 @item hsub
7301 @item vsub
7302 The horizontal and vertical chroma subsample values. For example, for the
7303 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
7304 @end table
7305
7306 @item luma_power, lp
7307 @item chroma_power, cp
7308 @item alpha_power, ap
7309 Specify how many times the boxblur filter is applied to the
7310 corresponding plane.
7311
7312 Default value for @option{luma_power} is 2. If not specified,
7313 @option{chroma_power} and @option{alpha_power} default to the
7314 corresponding value set for @option{luma_power}.
7315
7316 A value of 0 will disable the effect.
7317 @end table
7318
7319 @subsection Examples
7320
7321 @itemize
7322 @item
7323 Apply a boxblur filter with the luma, chroma, and alpha radii
7324 set to 2:
7325 @example
7326 boxblur=luma_radius=2:luma_power=1
7327 boxblur=2:1
7328 @end example
7329
7330 @item
7331 Set the luma radius to 2, and alpha and chroma radius to 0:
7332 @example
7333 boxblur=2:1:cr=0:ar=0
7334 @end example
7335
7336 @item
7337 Set the luma and chroma radii to a fraction of the video dimension:
7338 @example
7339 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
7340 @end example
7341 @end itemize
7342
7343 @section bwdif
7344
7345 Deinterlace the input video ("bwdif" stands for "Bob Weaver
7346 Deinterlacing Filter").
7347
7348 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
7349 interpolation algorithms.
7350 It accepts the following parameters:
7351
7352 @table @option
7353 @item mode
7354 The interlacing mode to adopt. It accepts one of the following values:
7355
7356 @table @option
7357 @item 0, send_frame
7358 Output one frame for each frame.
7359 @item 1, send_field
7360 Output one frame for each field.
7361 @end table
7362
7363 The default value is @code{send_field}.
7364
7365 @item parity
7366 The picture field parity assumed for the input interlaced video. It accepts one
7367 of the following values:
7368
7369 @table @option
7370 @item 0, tff
7371 Assume the top field is first.
7372 @item 1, bff
7373 Assume the bottom field is first.
7374 @item -1, auto
7375 Enable automatic detection of field parity.
7376 @end table
7377
7378 The default value is @code{auto}.
7379 If the interlacing is unknown or the decoder does not export this information,
7380 top field first will be assumed.
7381
7382 @item deint
7383 Specify which frames to deinterlace. Accepts one of the following
7384 values:
7385
7386 @table @option
7387 @item 0, all
7388 Deinterlace all frames.
7389 @item 1, interlaced
7390 Only deinterlace frames marked as interlaced.
7391 @end table
7392
7393 The default value is @code{all}.
7394 @end table
7395
7396 @section cas
7397
7398 Apply Contrast Adaptive Sharpen filter to video stream.
7399
7400 The filter accepts the following options:
7401
7402 @table @option
7403 @item strength
7404 Set the sharpening strength. Default value is 0.
7405
7406 @item planes
7407 Set planes to filter. Default value is to filter all
7408 planes except alpha plane.
7409 @end table
7410
7411 @section chromahold
7412 Remove all color information for all colors except for certain one.
7413
7414 The filter accepts the following options:
7415
7416 @table @option
7417 @item color
7418 The color which will not be replaced with neutral chroma.
7419
7420 @item similarity
7421 Similarity percentage with the above color.
7422 0.01 matches only the exact key color, while 1.0 matches everything.
7423
7424 @item blend
7425 Blend percentage.
7426 0.0 makes pixels either fully gray, or not gray at all.
7427 Higher values result in more preserved color.
7428
7429 @item yuv
7430 Signals that the color passed is already in YUV instead of RGB.
7431
7432 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7433 This can be used to pass exact YUV values as hexadecimal numbers.
7434 @end table
7435
7436 @subsection Commands
7437 This filter supports same @ref{commands} as options.
7438 The command accepts the same syntax of the corresponding option.
7439
7440 If the specified expression is not valid, it is kept at its current
7441 value.
7442
7443 @section chromakey
7444 YUV colorspace color/chroma keying.
7445
7446 The filter accepts the following options:
7447
7448 @table @option
7449 @item color
7450 The color which will be replaced with transparency.
7451
7452 @item similarity
7453 Similarity percentage with the key color.
7454
7455 0.01 matches only the exact key color, while 1.0 matches everything.
7456
7457 @item blend
7458 Blend percentage.
7459
7460 0.0 makes pixels either fully transparent, or not transparent at all.
7461
7462 Higher values result in semi-transparent pixels, with a higher transparency
7463 the more similar the pixels color is to the key color.
7464
7465 @item yuv
7466 Signals that the color passed is already in YUV instead of RGB.
7467
7468 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7469 This can be used to pass exact YUV values as hexadecimal numbers.
7470 @end table
7471
7472 @subsection Commands
7473 This filter supports same @ref{commands} as options.
7474 The command accepts the same syntax of the corresponding option.
7475
7476 If the specified expression is not valid, it is kept at its current
7477 value.
7478
7479 @subsection Examples
7480
7481 @itemize
7482 @item
7483 Make every green pixel in the input image transparent:
7484 @example
7485 ffmpeg -i input.png -vf chromakey=green out.png
7486 @end example
7487
7488 @item
7489 Overlay a greenscreen-video on top of a static black background.
7490 @example
7491 ffmpeg -f lavfi -i color=c=black:s=1280x720 -i video.mp4 -shortest -filter_complex "[1:v]chromakey=0x70de77:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.mkv
7492 @end example
7493 @end itemize
7494
7495 @section chromanr
7496 Reduce chrominance noise.
7497
7498 The filter accepts the following options:
7499
7500 @table @option
7501 @item thres
7502 Set threshold for averaging chrominance values.
7503 Sum of absolute difference of U and V pixel components or current
7504 pixel and neighbour pixels lower than this threshold will be used in
7505 averaging. Luma component is left unchanged and is copied to output.
7506 Default value is 30. Allowed range is from 1 to 200.
7507
7508 @item sizew
7509 Set horizontal radius of rectangle used for averaging.
7510 Allowed range is from 1 to 100. Default value is 5.
7511
7512 @item sizeh
7513 Set vertical radius of rectangle used for averaging.
7514 Allowed range is from 1 to 100. Default value is 5.
7515
7516 @item stepw
7517 Set horizontal step when averaging. Default value is 1.
7518 Allowed range is from 1 to 50.
7519 Mostly useful to speed-up filtering.
7520
7521 @item steph
7522 Set vertical step when averaging. Default value is 1.
7523 Allowed range is from 1 to 50.
7524 Mostly useful to speed-up filtering.
7525 @end table
7526
7527 @subsection Commands
7528 This filter supports same @ref{commands} as options.
7529 The command accepts the same syntax of the corresponding option.
7530
7531 @section chromashift
7532 Shift chroma pixels horizontally and/or vertically.
7533
7534 The filter accepts the following options:
7535 @table @option
7536 @item cbh
7537 Set amount to shift chroma-blue horizontally.
7538 @item cbv
7539 Set amount to shift chroma-blue vertically.
7540 @item crh
7541 Set amount to shift chroma-red horizontally.
7542 @item crv
7543 Set amount to shift chroma-red vertically.
7544 @item edge
7545 Set edge mode, can be @var{smear}, default, or @var{warp}.
7546 @end table
7547
7548 @subsection Commands
7549
7550 This filter supports the all above options as @ref{commands}.
7551
7552 @section ciescope
7553
7554 Display CIE color diagram with pixels overlaid onto it.
7555
7556 The filter accepts the following options:
7557
7558 @table @option
7559 @item system
7560 Set color system.
7561
7562 @table @samp
7563 @item ntsc, 470m
7564 @item ebu, 470bg
7565 @item smpte
7566 @item 240m
7567 @item apple
7568 @item widergb
7569 @item cie1931
7570 @item rec709, hdtv
7571 @item uhdtv, rec2020
7572 @item dcip3
7573 @end table
7574
7575 @item cie
7576 Set CIE system.
7577
7578 @table @samp
7579 @item xyy
7580 @item ucs
7581 @item luv
7582 @end table
7583
7584 @item gamuts
7585 Set what gamuts to draw.
7586
7587 See @code{system} option for available values.
7588
7589 @item size, s
7590 Set ciescope size, by default set to 512.
7591
7592 @item intensity, i
7593 Set intensity used to map input pixel values to CIE diagram.
7594
7595 @item contrast
7596 Set contrast used to draw tongue colors that are out of active color system gamut.
7597
7598 @item corrgamma
7599 Correct gamma displayed on scope, by default enabled.
7600
7601 @item showwhite
7602 Show white point on CIE diagram, by default disabled.
7603
7604 @item gamma
7605 Set input gamma. Used only with XYZ input color space.
7606 @end table
7607
7608 @section codecview
7609
7610 Visualize information exported by some codecs.
7611
7612 Some codecs can export information through frames using side-data or other
7613 means. For example, some MPEG based codecs export motion vectors through the
7614 @var{export_mvs} flag in the codec @option{flags2} option.
7615
7616 The filter accepts the following option:
7617
7618 @table @option
7619 @item mv
7620 Set motion vectors to visualize.
7621
7622 Available flags for @var{mv} are:
7623
7624 @table @samp
7625 @item pf
7626 forward predicted MVs of P-frames
7627 @item bf
7628 forward predicted MVs of B-frames
7629 @item bb
7630 backward predicted MVs of B-frames
7631 @end table
7632
7633 @item qp
7634 Display quantization parameters using the chroma planes.
7635
7636 @item mv_type, mvt
7637 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7638
7639 Available flags for @var{mv_type} are:
7640
7641 @table @samp
7642 @item fp
7643 forward predicted MVs
7644 @item bp
7645 backward predicted MVs
7646 @end table
7647
7648 @item frame_type, ft
7649 Set frame type to visualize motion vectors of.
7650
7651 Available flags for @var{frame_type} are:
7652
7653 @table @samp
7654 @item if
7655 intra-coded frames (I-frames)
7656 @item pf
7657 predicted frames (P-frames)
7658 @item bf
7659 bi-directionally predicted frames (B-frames)
7660 @end table
7661 @end table
7662
7663 @subsection Examples
7664
7665 @itemize
7666 @item
7667 Visualize forward predicted MVs of all frames using @command{ffplay}:
7668 @example
7669 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7670 @end example
7671
7672 @item
7673 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7674 @example
7675 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7676 @end example
7677 @end itemize
7678
7679 @section colorbalance
7680 Modify intensity of primary colors (red, green and blue) of input frames.
7681
7682 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7683 regions for the red-cyan, green-magenta or blue-yellow balance.
7684
7685 A positive adjustment value shifts the balance towards the primary color, a negative
7686 value towards the complementary color.
7687
7688 The filter accepts the following options:
7689
7690 @table @option
7691 @item rs
7692 @item gs
7693 @item bs
7694 Adjust red, green and blue shadows (darkest pixels).
7695
7696 @item rm
7697 @item gm
7698 @item bm
7699 Adjust red, green and blue midtones (medium pixels).
7700
7701 @item rh
7702 @item gh
7703 @item bh
7704 Adjust red, green and blue highlights (brightest pixels).
7705
7706 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7707
7708 @item pl
7709 Preserve lightness when changing color balance. Default is disabled.
7710 @end table
7711
7712 @subsection Examples
7713
7714 @itemize
7715 @item
7716 Add red color cast to shadows:
7717 @example
7718 colorbalance=rs=.3
7719 @end example
7720 @end itemize
7721
7722 @subsection Commands
7723
7724 This filter supports the all above options as @ref{commands}.
7725
7726 @section colorchannelmixer
7727
7728 Adjust video input frames by re-mixing color channels.
7729
7730 This filter modifies a color channel by adding the values associated to
7731 the other channels of the same pixels. For example if the value to
7732 modify is red, the output value will be:
7733 @example
7734 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7735 @end example
7736
7737 The filter accepts the following options:
7738
7739 @table @option
7740 @item rr
7741 @item rg
7742 @item rb
7743 @item ra
7744 Adjust contribution of input red, green, blue and alpha channels for output red channel.
7745 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
7746
7747 @item gr
7748 @item gg
7749 @item gb
7750 @item ga
7751 Adjust contribution of input red, green, blue and alpha channels for output green channel.
7752 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
7753
7754 @item br
7755 @item bg
7756 @item bb
7757 @item ba
7758 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
7759 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
7760
7761 @item ar
7762 @item ag
7763 @item ab
7764 @item aa
7765 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
7766 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
7767
7768 Allowed ranges for options are @code{[-2.0, 2.0]}.
7769 @end table
7770
7771 @subsection Examples
7772
7773 @itemize
7774 @item
7775 Convert source to grayscale:
7776 @example
7777 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
7778 @end example
7779 @item
7780 Simulate sepia tones:
7781 @example
7782 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
7783 @end example
7784 @end itemize
7785
7786 @subsection Commands
7787
7788 This filter supports the all above options as @ref{commands}.
7789
7790 @section colorkey
7791 RGB colorspace color keying.
7792
7793 The filter accepts the following options:
7794
7795 @table @option
7796 @item color
7797 The color which will be replaced with transparency.
7798
7799 @item similarity
7800 Similarity percentage with the key color.
7801
7802 0.01 matches only the exact key color, while 1.0 matches everything.
7803
7804 @item blend
7805 Blend percentage.
7806
7807 0.0 makes pixels either fully transparent, or not transparent at all.
7808
7809 Higher values result in semi-transparent pixels, with a higher transparency
7810 the more similar the pixels color is to the key color.
7811 @end table
7812
7813 @subsection Examples
7814
7815 @itemize
7816 @item
7817 Make every green pixel in the input image transparent:
7818 @example
7819 ffmpeg -i input.png -vf colorkey=green out.png
7820 @end example
7821
7822 @item
7823 Overlay a greenscreen-video on top of a static background image.
7824 @example
7825 ffmpeg -i background.png -i video.mp4 -filter_complex "[1:v]colorkey=0x3BBD1E:0.3:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.flv
7826 @end example
7827 @end itemize
7828
7829 @subsection Commands
7830 This filter supports same @ref{commands} as options.
7831 The command accepts the same syntax of the corresponding option.
7832
7833 If the specified expression is not valid, it is kept at its current
7834 value.
7835
7836 @section colorhold
7837 Remove all color information for all RGB colors except for certain one.
7838
7839 The filter accepts the following options:
7840
7841 @table @option
7842 @item color
7843 The color which will not be replaced with neutral gray.
7844
7845 @item similarity
7846 Similarity percentage with the above color.
7847 0.01 matches only the exact key color, while 1.0 matches everything.
7848
7849 @item blend
7850 Blend percentage. 0.0 makes pixels fully gray.
7851 Higher values result in more preserved color.
7852 @end table
7853
7854 @subsection Commands
7855 This filter supports same @ref{commands} as options.
7856 The command accepts the same syntax of the corresponding option.
7857
7858 If the specified expression is not valid, it is kept at its current
7859 value.
7860
7861 @section colorlevels
7862
7863 Adjust video input frames using levels.
7864
7865 The filter accepts the following options:
7866
7867 @table @option
7868 @item rimin
7869 @item gimin
7870 @item bimin
7871 @item aimin
7872 Adjust red, green, blue and alpha input black point.
7873 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7874
7875 @item rimax
7876 @item gimax
7877 @item bimax
7878 @item aimax
7879 Adjust red, green, blue and alpha input white point.
7880 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
7881
7882 Input levels are used to lighten highlights (bright tones), darken shadows
7883 (dark tones), change the balance of bright and dark tones.
7884
7885 @item romin
7886 @item gomin
7887 @item bomin
7888 @item aomin
7889 Adjust red, green, blue and alpha output black point.
7890 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
7891
7892 @item romax
7893 @item gomax
7894 @item bomax
7895 @item aomax
7896 Adjust red, green, blue and alpha output white point.
7897 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
7898
7899 Output levels allows manual selection of a constrained output level range.
7900 @end table
7901
7902 @subsection Examples
7903
7904 @itemize
7905 @item
7906 Make video output darker:
7907 @example
7908 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
7909 @end example
7910
7911 @item
7912 Increase contrast:
7913 @example
7914 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
7915 @end example
7916
7917 @item
7918 Make video output lighter:
7919 @example
7920 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
7921 @end example
7922
7923 @item
7924 Increase brightness:
7925 @example
7926 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
7927 @end example
7928 @end itemize
7929
7930 @subsection Commands
7931
7932 This filter supports the all above options as @ref{commands}.
7933
7934 @section colormatrix
7935
7936 Convert color matrix.
7937
7938 The filter accepts the following options:
7939
7940 @table @option
7941 @item src
7942 @item dst
7943 Specify the source and destination color matrix. Both values must be
7944 specified.
7945
7946 The accepted values are:
7947 @table @samp
7948 @item bt709
7949 BT.709
7950
7951 @item fcc
7952 FCC
7953
7954 @item bt601
7955 BT.601
7956
7957 @item bt470
7958 BT.470
7959
7960 @item bt470bg
7961 BT.470BG
7962
7963 @item smpte170m
7964 SMPTE-170M
7965
7966 @item smpte240m
7967 SMPTE-240M
7968
7969 @item bt2020
7970 BT.2020
7971 @end table
7972 @end table
7973
7974 For example to convert from BT.601 to SMPTE-240M, use the command:
7975 @example
7976 colormatrix=bt601:smpte240m
7977 @end example
7978
7979 @section colorspace
7980
7981 Convert colorspace, transfer characteristics or color primaries.
7982 Input video needs to have an even size.
7983
7984 The filter accepts the following options:
7985
7986 @table @option
7987 @anchor{all}
7988 @item all
7989 Specify all color properties at once.
7990
7991 The accepted values are:
7992 @table @samp
7993 @item bt470m
7994 BT.470M
7995
7996 @item bt470bg
7997 BT.470BG
7998
7999 @item bt601-6-525
8000 BT.601-6 525
8001
8002 @item bt601-6-625
8003 BT.601-6 625
8004
8005 @item bt709
8006 BT.709
8007
8008 @item smpte170m
8009 SMPTE-170M
8010
8011 @item smpte240m
8012 SMPTE-240M
8013
8014 @item bt2020
8015 BT.2020
8016
8017 @end table
8018
8019 @anchor{space}
8020 @item space
8021 Specify output colorspace.
8022
8023 The accepted values are:
8024 @table @samp
8025 @item bt709
8026 BT.709
8027
8028 @item fcc
8029 FCC
8030
8031 @item bt470bg
8032 BT.470BG or BT.601-6 625
8033
8034 @item smpte170m
8035 SMPTE-170M or BT.601-6 525
8036
8037 @item smpte240m
8038 SMPTE-240M
8039
8040 @item ycgco
8041 YCgCo
8042
8043 @item bt2020ncl
8044 BT.2020 with non-constant luminance
8045
8046 @end table
8047
8048 @anchor{trc}
8049 @item trc
8050 Specify output transfer characteristics.
8051
8052 The accepted values are:
8053 @table @samp
8054 @item bt709
8055 BT.709
8056
8057 @item bt470m
8058 BT.470M
8059
8060 @item bt470bg
8061 BT.470BG
8062
8063 @item gamma22
8064 Constant gamma of 2.2
8065
8066 @item gamma28
8067 Constant gamma of 2.8
8068
8069 @item smpte170m
8070 SMPTE-170M, BT.601-6 625 or BT.601-6 525
8071
8072 @item smpte240m
8073 SMPTE-240M
8074
8075 @item srgb
8076 SRGB
8077
8078 @item iec61966-2-1
8079 iec61966-2-1
8080
8081 @item iec61966-2-4
8082 iec61966-2-4
8083
8084 @item xvycc
8085 xvycc
8086
8087 @item bt2020-10
8088 BT.2020 for 10-bits content
8089
8090 @item bt2020-12
8091 BT.2020 for 12-bits content
8092
8093 @end table
8094
8095 @anchor{primaries}
8096 @item primaries
8097 Specify output color primaries.
8098
8099 The accepted values are:
8100 @table @samp
8101 @item bt709
8102 BT.709
8103
8104 @item bt470m
8105 BT.470M
8106
8107 @item bt470bg
8108 BT.470BG or BT.601-6 625
8109
8110 @item smpte170m
8111 SMPTE-170M or BT.601-6 525
8112
8113 @item smpte240m
8114 SMPTE-240M
8115
8116 @item film
8117 film
8118
8119 @item smpte431
8120 SMPTE-431
8121
8122 @item smpte432
8123 SMPTE-432
8124
8125 @item bt2020
8126 BT.2020
8127
8128 @item jedec-p22
8129 JEDEC P22 phosphors
8130
8131 @end table
8132
8133 @anchor{range}
8134 @item range
8135 Specify output color range.
8136
8137 The accepted values are:
8138 @table @samp
8139 @item tv
8140 TV (restricted) range
8141
8142 @item mpeg
8143 MPEG (restricted) range
8144
8145 @item pc
8146 PC (full) range
8147
8148 @item jpeg
8149 JPEG (full) range
8150
8151 @end table
8152
8153 @item format
8154 Specify output color format.
8155
8156 The accepted values are:
8157 @table @samp
8158 @item yuv420p
8159 YUV 4:2:0 planar 8-bits
8160
8161 @item yuv420p10
8162 YUV 4:2:0 planar 10-bits
8163
8164 @item yuv420p12
8165 YUV 4:2:0 planar 12-bits
8166
8167 @item yuv422p
8168 YUV 4:2:2 planar 8-bits
8169
8170 @item yuv422p10
8171 YUV 4:2:2 planar 10-bits
8172
8173 @item yuv422p12
8174 YUV 4:2:2 planar 12-bits
8175
8176 @item yuv444p
8177 YUV 4:4:4 planar 8-bits
8178
8179 @item yuv444p10
8180 YUV 4:4:4 planar 10-bits
8181
8182 @item yuv444p12
8183 YUV 4:4:4 planar 12-bits
8184
8185 @end table
8186
8187 @item fast
8188 Do a fast conversion, which skips gamma/primary correction. This will take
8189 significantly less CPU, but will be mathematically incorrect. To get output
8190 compatible with that produced by the colormatrix filter, use fast=1.
8191
8192 @item dither
8193 Specify dithering mode.
8194
8195 The accepted values are:
8196 @table @samp
8197 @item none
8198 No dithering
8199
8200 @item fsb
8201 Floyd-Steinberg dithering
8202 @end table
8203
8204 @item wpadapt
8205 Whitepoint adaptation mode.
8206
8207 The accepted values are:
8208 @table @samp
8209 @item bradford
8210 Bradford whitepoint adaptation
8211
8212 @item vonkries
8213 von Kries whitepoint adaptation
8214
8215 @item identity
8216 identity whitepoint adaptation (i.e. no whitepoint adaptation)
8217 @end table
8218
8219 @item iall
8220 Override all input properties at once. Same accepted values as @ref{all}.
8221
8222 @item ispace
8223 Override input colorspace. Same accepted values as @ref{space}.
8224
8225 @item iprimaries
8226 Override input color primaries. Same accepted values as @ref{primaries}.
8227
8228 @item itrc
8229 Override input transfer characteristics. Same accepted values as @ref{trc}.
8230
8231 @item irange
8232 Override input color range. Same accepted values as @ref{range}.
8233
8234 @end table
8235
8236 The filter converts the transfer characteristics, color space and color
8237 primaries to the specified user values. The output value, if not specified,
8238 is set to a default value based on the "all" property. If that property is
8239 also not specified, the filter will log an error. The output color range and
8240 format default to the same value as the input color range and format. The
8241 input transfer characteristics, color space, color primaries and color range
8242 should be set on the input data. If any of these are missing, the filter will
8243 log an error and no conversion will take place.
8244
8245 For example to convert the input to SMPTE-240M, use the command:
8246 @example
8247 colorspace=smpte240m
8248 @end example
8249
8250 @section convolution
8251
8252 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
8253
8254 The filter accepts the following options:
8255
8256 @table @option
8257 @item 0m
8258 @item 1m
8259 @item 2m
8260 @item 3m
8261 Set matrix for each plane.
8262 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
8263 and from 1 to 49 odd number of signed integers in @var{row} mode.
8264
8265 @item 0rdiv
8266 @item 1rdiv
8267 @item 2rdiv
8268 @item 3rdiv
8269 Set multiplier for calculated value for each plane.
8270 If unset or 0, it will be sum of all matrix elements.
8271
8272 @item 0bias
8273 @item 1bias
8274 @item 2bias
8275 @item 3bias
8276 Set bias for each plane. This value is added to the result of the multiplication.
8277 Useful for making the overall image brighter or darker. Default is 0.0.
8278
8279 @item 0mode
8280 @item 1mode
8281 @item 2mode
8282 @item 3mode
8283 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
8284 Default is @var{square}.
8285 @end table
8286
8287 @subsection Examples
8288
8289 @itemize
8290 @item
8291 Apply sharpen:
8292 @example
8293 convolution="0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0"
8294 @end example
8295
8296 @item
8297 Apply blur:
8298 @example
8299 convolution="1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9"
8300 @end example
8301
8302 @item
8303 Apply edge enhance:
8304 @example
8305 convolution="0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128"
8306 @end example
8307
8308 @item
8309 Apply edge detect:
8310 @example
8311 convolution="0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128"
8312 @end example
8313
8314 @item
8315 Apply laplacian edge detector which includes diagonals:
8316 @example
8317 convolution="1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0"
8318 @end example
8319
8320 @item
8321 Apply emboss:
8322 @example
8323 convolution="-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2"
8324 @end example
8325 @end itemize
8326
8327 @section convolve
8328
8329 Apply 2D convolution of video stream in frequency domain using second stream
8330 as impulse.
8331
8332 The filter accepts the following options:
8333
8334 @table @option
8335 @item planes
8336 Set which planes to process.
8337
8338 @item impulse
8339 Set which impulse video frames will be processed, can be @var{first}
8340 or @var{all}. Default is @var{all}.
8341 @end table
8342
8343 The @code{convolve} filter also supports the @ref{framesync} options.
8344
8345 @section copy
8346
8347 Copy the input video source unchanged to the output. This is mainly useful for
8348 testing purposes.
8349
8350 @anchor{coreimage}
8351 @section coreimage
8352 Video filtering on GPU using Apple's CoreImage API on OSX.
8353
8354 Hardware acceleration is based on an OpenGL context. Usually, this means it is
8355 processed by video hardware. However, software-based OpenGL implementations
8356 exist which means there is no guarantee for hardware processing. It depends on
8357 the respective OSX.
8358
8359 There are many filters and image generators provided by Apple that come with a
8360 large variety of options. The filter has to be referenced by its name along
8361 with its options.
8362
8363 The coreimage filter accepts the following options:
8364 @table @option
8365 @item list_filters
8366 List all available filters and generators along with all their respective
8367 options as well as possible minimum and maximum values along with the default
8368 values.
8369 @example
8370 list_filters=true
8371 @end example
8372
8373 @item filter
8374 Specify all filters by their respective name and options.
8375 Use @var{list_filters} to determine all valid filter names and options.
8376 Numerical options are specified by a float value and are automatically clamped
8377 to their respective value range.  Vector and color options have to be specified
8378 by a list of space separated float values. Character escaping has to be done.
8379 A special option name @code{default} is available to use default options for a
8380 filter.
8381
8382 It is required to specify either @code{default} or at least one of the filter options.
8383 All omitted options are used with their default values.
8384 The syntax of the filter string is as follows:
8385 @example
8386 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
8387 @end example
8388
8389 @item output_rect
8390 Specify a rectangle where the output of the filter chain is copied into the
8391 input image. It is given by a list of space separated float values:
8392 @example
8393 output_rect=x\ y\ width\ height
8394 @end example
8395 If not given, the output rectangle equals the dimensions of the input image.
8396 The output rectangle is automatically cropped at the borders of the input
8397 image. Negative values are valid for each component.
8398 @example
8399 output_rect=25\ 25\ 100\ 100
8400 @end example
8401 @end table
8402
8403 Several filters can be chained for successive processing without GPU-HOST
8404 transfers allowing for fast processing of complex filter chains.
8405 Currently, only filters with zero (generators) or exactly one (filters) input
8406 image and one output image are supported. Also, transition filters are not yet
8407 usable as intended.
8408
8409 Some filters generate output images with additional padding depending on the
8410 respective filter kernel. The padding is automatically removed to ensure the
8411 filter output has the same size as the input image.
8412
8413 For image generators, the size of the output image is determined by the
8414 previous output image of the filter chain or the input image of the whole
8415 filterchain, respectively. The generators do not use the pixel information of
8416 this image to generate their output. However, the generated output is
8417 blended onto this image, resulting in partial or complete coverage of the
8418 output image.
8419
8420 The @ref{coreimagesrc} video source can be used for generating input images
8421 which are directly fed into the filter chain. By using it, providing input
8422 images by another video source or an input video is not required.
8423
8424 @subsection Examples
8425
8426 @itemize
8427
8428 @item
8429 List all filters available:
8430 @example
8431 coreimage=list_filters=true
8432 @end example
8433
8434 @item
8435 Use the CIBoxBlur filter with default options to blur an image:
8436 @example
8437 coreimage=filter=CIBoxBlur@@default
8438 @end example
8439
8440 @item
8441 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
8442 its center at 100x100 and a radius of 50 pixels:
8443 @example
8444 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
8445 @end example
8446
8447 @item
8448 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
8449 given as complete and escaped command-line for Apple's standard bash shell:
8450 @example
8451 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
8452 @end example
8453 @end itemize
8454
8455 @section cover_rect
8456
8457 Cover a rectangular object
8458
8459 It accepts the following options:
8460
8461 @table @option
8462 @item cover
8463 Filepath of the optional cover image, needs to be in yuv420.
8464
8465 @item mode
8466 Set covering mode.
8467
8468 It accepts the following values:
8469 @table @samp
8470 @item cover
8471 cover it by the supplied image
8472 @item blur
8473 cover it by interpolating the surrounding pixels
8474 @end table
8475
8476 Default value is @var{blur}.
8477 @end table
8478
8479 @subsection Examples
8480
8481 @itemize
8482 @item
8483 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
8484 @example
8485 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8486 @end example
8487 @end itemize
8488
8489 @section crop
8490
8491 Crop the input video to given dimensions.
8492
8493 It accepts the following parameters:
8494
8495 @table @option
8496 @item w, out_w
8497 The width of the output video. It defaults to @code{iw}.
8498 This expression is evaluated only once during the filter
8499 configuration, or when the @samp{w} or @samp{out_w} command is sent.
8500
8501 @item h, out_h
8502 The height of the output video. It defaults to @code{ih}.
8503 This expression is evaluated only once during the filter
8504 configuration, or when the @samp{h} or @samp{out_h} command is sent.
8505
8506 @item x
8507 The horizontal position, in the input video, of the left edge of the output
8508 video. It defaults to @code{(in_w-out_w)/2}.
8509 This expression is evaluated per-frame.
8510
8511 @item y
8512 The vertical position, in the input video, of the top edge of the output video.
8513 It defaults to @code{(in_h-out_h)/2}.
8514 This expression is evaluated per-frame.
8515
8516 @item keep_aspect
8517 If set to 1 will force the output display aspect ratio
8518 to be the same of the input, by changing the output sample aspect
8519 ratio. It defaults to 0.
8520
8521 @item exact
8522 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
8523 width/height/x/y as specified and will not be rounded to nearest smaller value.
8524 It defaults to 0.
8525 @end table
8526
8527 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
8528 expressions containing the following constants:
8529
8530 @table @option
8531 @item x
8532 @item y
8533 The computed values for @var{x} and @var{y}. They are evaluated for
8534 each new frame.
8535
8536 @item in_w
8537 @item in_h
8538 The input width and height.
8539
8540 @item iw
8541 @item ih
8542 These are the same as @var{in_w} and @var{in_h}.
8543
8544 @item out_w
8545 @item out_h
8546 The output (cropped) width and height.
8547
8548 @item ow
8549 @item oh
8550 These are the same as @var{out_w} and @var{out_h}.
8551
8552 @item a
8553 same as @var{iw} / @var{ih}
8554
8555 @item sar
8556 input sample aspect ratio
8557
8558 @item dar
8559 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8560
8561 @item hsub
8562 @item vsub
8563 horizontal and vertical chroma subsample values. For example for the
8564 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8565
8566 @item n
8567 The number of the input frame, starting from 0.
8568
8569 @item pos
8570 the position in the file of the input frame, NAN if unknown
8571
8572 @item t
8573 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
8574
8575 @end table
8576
8577 The expression for @var{out_w} may depend on the value of @var{out_h},
8578 and the expression for @var{out_h} may depend on @var{out_w}, but they
8579 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
8580 evaluated after @var{out_w} and @var{out_h}.
8581
8582 The @var{x} and @var{y} parameters specify the expressions for the
8583 position of the top-left corner of the output (non-cropped) area. They
8584 are evaluated for each frame. If the evaluated value is not valid, it
8585 is approximated to the nearest valid value.
8586
8587 The expression for @var{x} may depend on @var{y}, and the expression
8588 for @var{y} may depend on @var{x}.
8589
8590 @subsection Examples
8591
8592 @itemize
8593 @item
8594 Crop area with size 100x100 at position (12,34).
8595 @example
8596 crop=100:100:12:34
8597 @end example
8598
8599 Using named options, the example above becomes:
8600 @example
8601 crop=w=100:h=100:x=12:y=34
8602 @end example
8603
8604 @item
8605 Crop the central input area with size 100x100:
8606 @example
8607 crop=100:100
8608 @end example
8609
8610 @item
8611 Crop the central input area with size 2/3 of the input video:
8612 @example
8613 crop=2/3*in_w:2/3*in_h
8614 @end example
8615
8616 @item
8617 Crop the input video central square:
8618 @example
8619 crop=out_w=in_h
8620 crop=in_h
8621 @end example
8622
8623 @item
8624 Delimit the rectangle with the top-left corner placed at position
8625 100:100 and the right-bottom corner corresponding to the right-bottom
8626 corner of the input image.
8627 @example
8628 crop=in_w-100:in_h-100:100:100
8629 @end example
8630
8631 @item
8632 Crop 10 pixels from the left and right borders, and 20 pixels from
8633 the top and bottom borders
8634 @example
8635 crop=in_w-2*10:in_h-2*20
8636 @end example
8637
8638 @item
8639 Keep only the bottom right quarter of the input image:
8640 @example
8641 crop=in_w/2:in_h/2:in_w/2:in_h/2
8642 @end example
8643
8644 @item
8645 Crop height for getting Greek harmony:
8646 @example
8647 crop=in_w:1/PHI*in_w
8648 @end example
8649
8650 @item
8651 Apply trembling effect:
8652 @example
8653 crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
8654 @end example
8655
8656 @item
8657 Apply erratic camera effect depending on timestamp:
8658 @example
8659 crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)"
8660 @end example
8661
8662 @item
8663 Set x depending on the value of y:
8664 @example
8665 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
8666 @end example
8667 @end itemize
8668
8669 @subsection Commands
8670
8671 This filter supports the following commands:
8672 @table @option
8673 @item w, out_w
8674 @item h, out_h
8675 @item x
8676 @item y
8677 Set width/height of the output video and the horizontal/vertical position
8678 in the input video.
8679 The command accepts the same syntax of the corresponding option.
8680
8681 If the specified expression is not valid, it is kept at its current
8682 value.
8683 @end table
8684
8685 @section cropdetect
8686
8687 Auto-detect the crop size.
8688
8689 It calculates the necessary cropping parameters and prints the
8690 recommended parameters via the logging system. The detected dimensions
8691 correspond to the non-black area of the input video.
8692
8693 It accepts the following parameters:
8694
8695 @table @option
8696
8697 @item limit
8698 Set higher black value threshold, which can be optionally specified
8699 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8700 value greater to the set value is considered non-black. It defaults to 24.
8701 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8702 on the bitdepth of the pixel format.
8703
8704 @item round
8705 The value which the width/height should be divisible by. It defaults to
8706 16. The offset is automatically adjusted to center the video. Use 2 to
8707 get only even dimensions (needed for 4:2:2 video). 16 is best when
8708 encoding to most video codecs.
8709
8710 @item reset_count, reset
8711 Set the counter that determines after how many frames cropdetect will
8712 reset the previously detected largest video area and start over to
8713 detect the current optimal crop area. Default value is 0.
8714
8715 This can be useful when channel logos distort the video area. 0
8716 indicates 'never reset', and returns the largest area encountered during
8717 playback.
8718 @end table
8719
8720 @anchor{cue}
8721 @section cue
8722
8723 Delay video filtering until a given wallclock timestamp. The filter first
8724 passes on @option{preroll} amount of frames, then it buffers at most
8725 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8726 it forwards the buffered frames and also any subsequent frames coming in its
8727 input.
8728
8729 The filter can be used synchronize the output of multiple ffmpeg processes for
8730 realtime output devices like decklink. By putting the delay in the filtering
8731 chain and pre-buffering frames the process can pass on data to output almost
8732 immediately after the target wallclock timestamp is reached.
8733
8734 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
8735 some use cases.
8736
8737 @table @option
8738
8739 @item cue
8740 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
8741
8742 @item preroll
8743 The duration of content to pass on as preroll expressed in seconds. Default is 0.
8744
8745 @item buffer
8746 The maximum duration of content to buffer before waiting for the cue expressed
8747 in seconds. Default is 0.
8748
8749 @end table
8750
8751 @anchor{curves}
8752 @section curves
8753
8754 Apply color adjustments using curves.
8755
8756 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
8757 component (red, green and blue) has its values defined by @var{N} key points
8758 tied from each other using a smooth curve. The x-axis represents the pixel
8759 values from the input frame, and the y-axis the new pixel values to be set for
8760 the output frame.
8761
8762 By default, a component curve is defined by the two points @var{(0;0)} and
8763 @var{(1;1)}. This creates a straight line where each original pixel value is
8764 "adjusted" to its own value, which means no change to the image.
8765
8766 The filter allows you to redefine these two points and add some more. A new
8767 curve (using a natural cubic spline interpolation) will be define to pass
8768 smoothly through all these new coordinates. The new defined points needs to be
8769 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
8770 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
8771 the vector spaces, the values will be clipped accordingly.
8772
8773 The filter accepts the following options:
8774
8775 @table @option
8776 @item preset
8777 Select one of the available color presets. This option can be used in addition
8778 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
8779 options takes priority on the preset values.
8780 Available presets are:
8781 @table @samp
8782 @item none
8783 @item color_negative
8784 @item cross_process
8785 @item darker
8786 @item increase_contrast
8787 @item lighter
8788 @item linear_contrast
8789 @item medium_contrast
8790 @item negative
8791 @item strong_contrast
8792 @item vintage
8793 @end table
8794 Default is @code{none}.
8795 @item master, m
8796 Set the master key points. These points will define a second pass mapping. It
8797 is sometimes called a "luminance" or "value" mapping. It can be used with
8798 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
8799 post-processing LUT.
8800 @item red, r
8801 Set the key points for the red component.
8802 @item green, g
8803 Set the key points for the green component.
8804 @item blue, b
8805 Set the key points for the blue component.
8806 @item all
8807 Set the key points for all components (not including master).
8808 Can be used in addition to the other key points component
8809 options. In this case, the unset component(s) will fallback on this
8810 @option{all} setting.
8811 @item psfile
8812 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
8813 @item plot
8814 Save Gnuplot script of the curves in specified file.
8815 @end table
8816
8817 To avoid some filtergraph syntax conflicts, each key points list need to be
8818 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
8819
8820 @subsection Examples
8821
8822 @itemize
8823 @item
8824 Increase slightly the middle level of blue:
8825 @example
8826 curves=blue='0/0 0.5/0.58 1/1'
8827 @end example
8828
8829 @item
8830 Vintage effect:
8831 @example
8832 curves=r='0/0.11 .42/.51 1/0.95':g='0/0 0.50/0.48 1/1':b='0/0.22 .49/.44 1/0.8'
8833 @end example
8834 Here we obtain the following coordinates for each components:
8835 @table @var
8836 @item red
8837 @code{(0;0.11) (0.42;0.51) (1;0.95)}
8838 @item green
8839 @code{(0;0) (0.50;0.48) (1;1)}
8840 @item blue
8841 @code{(0;0.22) (0.49;0.44) (1;0.80)}
8842 @end table
8843
8844 @item
8845 The previous example can also be achieved with the associated built-in preset:
8846 @example
8847 curves=preset=vintage
8848 @end example
8849
8850 @item
8851 Or simply:
8852 @example
8853 curves=vintage
8854 @end example
8855
8856 @item
8857 Use a Photoshop preset and redefine the points of the green component:
8858 @example
8859 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
8860 @end example
8861
8862 @item
8863 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
8864 and @command{gnuplot}:
8865 @example
8866 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
8867 gnuplot -p /tmp/curves.plt
8868 @end example
8869 @end itemize
8870
8871 @section datascope
8872
8873 Video data analysis filter.
8874
8875 This filter shows hexadecimal pixel values of part of video.
8876
8877 The filter accepts the following options:
8878
8879 @table @option
8880 @item size, s
8881 Set output video size.
8882
8883 @item x
8884 Set x offset from where to pick pixels.
8885
8886 @item y
8887 Set y offset from where to pick pixels.
8888
8889 @item mode
8890 Set scope mode, can be one of the following:
8891 @table @samp
8892 @item mono
8893 Draw hexadecimal pixel values with white color on black background.
8894
8895 @item color
8896 Draw hexadecimal pixel values with input video pixel color on black
8897 background.
8898
8899 @item color2
8900 Draw hexadecimal pixel values on color background picked from input video,
8901 the text color is picked in such way so its always visible.
8902 @end table
8903
8904 @item axis
8905 Draw rows and columns numbers on left and top of video.
8906
8907 @item opacity
8908 Set background opacity.
8909
8910 @item format
8911 Set display number format. Can be @code{hex}, or @code{dec}. Default is @code{hex}.
8912 @end table
8913
8914 @section dblur
8915 Apply Directional blur filter.
8916
8917 The filter accepts the following options:
8918
8919 @table @option
8920 @item angle
8921 Set angle of directional blur. Default is @code{45}.
8922
8923 @item radius
8924 Set radius of directional blur. Default is @code{5}.
8925
8926 @item planes
8927 Set which planes to filter. By default all planes are filtered.
8928 @end table
8929
8930 @subsection Commands
8931 This filter supports same @ref{commands} as options.
8932 The command accepts the same syntax of the corresponding option.
8933
8934 If the specified expression is not valid, it is kept at its current
8935 value.
8936
8937 @section dctdnoiz
8938
8939 Denoise frames using 2D DCT (frequency domain filtering).
8940
8941 This filter is not designed for real time.
8942
8943 The filter accepts the following options:
8944
8945 @table @option
8946 @item sigma, s
8947 Set the noise sigma constant.
8948
8949 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
8950 coefficient (absolute value) below this threshold with be dropped.
8951
8952 If you need a more advanced filtering, see @option{expr}.
8953
8954 Default is @code{0}.
8955
8956 @item overlap
8957 Set number overlapping pixels for each block. Since the filter can be slow, you
8958 may want to reduce this value, at the cost of a less effective filter and the
8959 risk of various artefacts.
8960
8961 If the overlapping value doesn't permit processing the whole input width or
8962 height, a warning will be displayed and according borders won't be denoised.
8963
8964 Default value is @var{blocksize}-1, which is the best possible setting.
8965
8966 @item expr, e
8967 Set the coefficient factor expression.
8968
8969 For each coefficient of a DCT block, this expression will be evaluated as a
8970 multiplier value for the coefficient.
8971
8972 If this is option is set, the @option{sigma} option will be ignored.
8973
8974 The absolute value of the coefficient can be accessed through the @var{c}
8975 variable.
8976
8977 @item n
8978 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
8979 @var{blocksize}, which is the width and height of the processed blocks.
8980
8981 The default value is @var{3} (8x8) and can be raised to @var{4} for a
8982 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
8983 on the speed processing. Also, a larger block size does not necessarily means a
8984 better de-noising.
8985 @end table
8986
8987 @subsection Examples
8988
8989 Apply a denoise with a @option{sigma} of @code{4.5}:
8990 @example
8991 dctdnoiz=4.5
8992 @end example
8993
8994 The same operation can be achieved using the expression system:
8995 @example
8996 dctdnoiz=e='gte(c, 4.5*3)'
8997 @end example
8998
8999 Violent denoise using a block size of @code{16x16}:
9000 @example
9001 dctdnoiz=15:n=4
9002 @end example
9003
9004 @section deband
9005
9006 Remove banding artifacts from input video.
9007 It works by replacing banded pixels with average value of referenced pixels.
9008
9009 The filter accepts the following options:
9010
9011 @table @option
9012 @item 1thr
9013 @item 2thr
9014 @item 3thr
9015 @item 4thr
9016 Set banding detection threshold for each plane. Default is 0.02.
9017 Valid range is 0.00003 to 0.5.
9018 If difference between current pixel and reference pixel is less than threshold,
9019 it will be considered as banded.
9020
9021 @item range, r
9022 Banding detection range in pixels. Default is 16. If positive, random number
9023 in range 0 to set value will be used. If negative, exact absolute value
9024 will be used.
9025 The range defines square of four pixels around current pixel.
9026
9027 @item direction, d
9028 Set direction in radians from which four pixel will be compared. If positive,
9029 random direction from 0 to set direction will be picked. If negative, exact of
9030 absolute value will be picked. For example direction 0, -PI or -2*PI radians
9031 will pick only pixels on same row and -PI/2 will pick only pixels on same
9032 column.
9033
9034 @item blur, b
9035 If enabled, current pixel is compared with average value of all four
9036 surrounding pixels. The default is enabled. If disabled current pixel is
9037 compared with all four surrounding pixels. The pixel is considered banded
9038 if only all four differences with surrounding pixels are less than threshold.
9039
9040 @item coupling, c
9041 If enabled, current pixel is changed if and only if all pixel components are banded,
9042 e.g. banding detection threshold is triggered for all color components.
9043 The default is disabled.
9044 @end table
9045
9046 @section deblock
9047
9048 Remove blocking artifacts from input video.
9049
9050 The filter accepts the following options:
9051
9052 @table @option
9053 @item filter
9054 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
9055 This controls what kind of deblocking is applied.
9056
9057 @item block
9058 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
9059
9060 @item alpha
9061 @item beta
9062 @item gamma
9063 @item delta
9064 Set blocking detection thresholds. Allowed range is 0 to 1.
9065 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
9066 Using higher threshold gives more deblocking strength.
9067 Setting @var{alpha} controls threshold detection at exact edge of block.
9068 Remaining options controls threshold detection near the edge. Each one for
9069 below/above or left/right. Setting any of those to @var{0} disables
9070 deblocking.
9071
9072 @item planes
9073 Set planes to filter. Default is to filter all available planes.
9074 @end table
9075
9076 @subsection Examples
9077
9078 @itemize
9079 @item
9080 Deblock using weak filter and block size of 4 pixels.
9081 @example
9082 deblock=filter=weak:block=4
9083 @end example
9084
9085 @item
9086 Deblock using strong filter, block size of 4 pixels and custom thresholds for
9087 deblocking more edges.
9088 @example
9089 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
9090 @end example
9091
9092 @item
9093 Similar as above, but filter only first plane.
9094 @example
9095 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
9096 @end example
9097
9098 @item
9099 Similar as above, but filter only second and third plane.
9100 @example
9101 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
9102 @end example
9103 @end itemize
9104
9105 @anchor{decimate}
9106 @section decimate
9107
9108 Drop duplicated frames at regular intervals.
9109
9110 The filter accepts the following options:
9111
9112 @table @option
9113 @item cycle
9114 Set the number of frames from which one will be dropped. Setting this to
9115 @var{N} means one frame in every batch of @var{N} frames will be dropped.
9116 Default is @code{5}.
9117
9118 @item dupthresh
9119 Set the threshold for duplicate detection. If the difference metric for a frame
9120 is less than or equal to this value, then it is declared as duplicate. Default
9121 is @code{1.1}
9122
9123 @item scthresh
9124 Set scene change threshold. Default is @code{15}.
9125
9126 @item blockx
9127 @item blocky
9128 Set the size of the x and y-axis blocks used during metric calculations.
9129 Larger blocks give better noise suppression, but also give worse detection of
9130 small movements. Must be a power of two. Default is @code{32}.
9131
9132 @item ppsrc
9133 Mark main input as a pre-processed input and activate clean source input
9134 stream. This allows the input to be pre-processed with various filters to help
9135 the metrics calculation while keeping the frame selection lossless. When set to
9136 @code{1}, the first stream is for the pre-processed input, and the second
9137 stream is the clean source from where the kept frames are chosen. Default is
9138 @code{0}.
9139
9140 @item chroma
9141 Set whether or not chroma is considered in the metric calculations. Default is
9142 @code{1}.
9143 @end table
9144
9145 @section deconvolve
9146
9147 Apply 2D deconvolution of video stream in frequency domain using second stream
9148 as impulse.
9149
9150 The filter accepts the following options:
9151
9152 @table @option
9153 @item planes
9154 Set which planes to process.
9155
9156 @item impulse
9157 Set which impulse video frames will be processed, can be @var{first}
9158 or @var{all}. Default is @var{all}.
9159
9160 @item noise
9161 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
9162 and height are not same and not power of 2 or if stream prior to convolving
9163 had noise.
9164 @end table
9165
9166 The @code{deconvolve} filter also supports the @ref{framesync} options.
9167
9168 @section dedot
9169
9170 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
9171
9172 It accepts the following options:
9173
9174 @table @option
9175 @item m
9176 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
9177 @var{rainbows} for cross-color reduction.
9178
9179 @item lt
9180 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
9181
9182 @item tl
9183 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
9184
9185 @item tc
9186 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
9187
9188 @item ct
9189 Set temporal chroma threshold. Lower values increases reduction of cross-color.
9190 @end table
9191
9192 @section deflate
9193
9194 Apply deflate effect to the video.
9195
9196 This filter replaces the pixel by the local(3x3) average by taking into account
9197 only values lower than the pixel.
9198
9199 It accepts the following options:
9200
9201 @table @option
9202 @item threshold0
9203 @item threshold1
9204 @item threshold2
9205 @item threshold3
9206 Limit the maximum change for each plane, default is 65535.
9207 If 0, plane will remain unchanged.
9208 @end table
9209
9210 @subsection Commands
9211
9212 This filter supports the all above options as @ref{commands}.
9213
9214 @section deflicker
9215
9216 Remove temporal frame luminance variations.
9217
9218 It accepts the following options:
9219
9220 @table @option
9221 @item size, s
9222 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
9223
9224 @item mode, m
9225 Set averaging mode to smooth temporal luminance variations.
9226
9227 Available values are:
9228 @table @samp
9229 @item am
9230 Arithmetic mean
9231
9232 @item gm
9233 Geometric mean
9234
9235 @item hm
9236 Harmonic mean
9237
9238 @item qm
9239 Quadratic mean
9240
9241 @item cm
9242 Cubic mean
9243
9244 @item pm
9245 Power mean
9246
9247 @item median
9248 Median
9249 @end table
9250
9251 @item bypass
9252 Do not actually modify frame. Useful when one only wants metadata.
9253 @end table
9254
9255 @section dejudder
9256
9257 Remove judder produced by partially interlaced telecined content.
9258
9259 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
9260 source was partially telecined content then the output of @code{pullup,dejudder}
9261 will have a variable frame rate. May change the recorded frame rate of the
9262 container. Aside from that change, this filter will not affect constant frame
9263 rate video.
9264
9265 The option available in this filter is:
9266 @table @option
9267
9268 @item cycle
9269 Specify the length of the window over which the judder repeats.
9270
9271 Accepts any integer greater than 1. Useful values are:
9272 @table @samp
9273
9274 @item 4
9275 If the original was telecined from 24 to 30 fps (Film to NTSC).
9276
9277 @item 5
9278 If the original was telecined from 25 to 30 fps (PAL to NTSC).
9279
9280 @item 20
9281 If a mixture of the two.
9282 @end table
9283
9284 The default is @samp{4}.
9285 @end table
9286
9287 @section delogo
9288
9289 Suppress a TV station logo by a simple interpolation of the surrounding
9290 pixels. Just set a rectangle covering the logo and watch it disappear
9291 (and sometimes something even uglier appear - your mileage may vary).
9292
9293 It accepts the following parameters:
9294 @table @option
9295
9296 @item x
9297 @item y
9298 Specify the top left corner coordinates of the logo. They must be
9299 specified.
9300
9301 @item w
9302 @item h
9303 Specify the width and height of the logo to clear. They must be
9304 specified.
9305
9306 @item band, t
9307 Specify the thickness of the fuzzy edge of the rectangle (added to
9308 @var{w} and @var{h}). The default value is 1. This option is
9309 deprecated, setting higher values should no longer be necessary and
9310 is not recommended.
9311
9312 @item show
9313 When set to 1, a green rectangle is drawn on the screen to simplify
9314 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
9315 The default value is 0.
9316
9317 The rectangle is drawn on the outermost pixels which will be (partly)
9318 replaced with interpolated values. The values of the next pixels
9319 immediately outside this rectangle in each direction will be used to
9320 compute the interpolated pixel values inside the rectangle.
9321
9322 @end table
9323
9324 @subsection Examples
9325
9326 @itemize
9327 @item
9328 Set a rectangle covering the area with top left corner coordinates 0,0
9329 and size 100x77, and a band of size 10:
9330 @example
9331 delogo=x=0:y=0:w=100:h=77:band=10
9332 @end example
9333
9334 @end itemize
9335
9336 @anchor{derain}
9337 @section derain
9338
9339 Remove the rain in the input image/video by applying the derain methods based on
9340 convolutional neural networks. Supported models:
9341
9342 @itemize
9343 @item
9344 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
9345 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
9346 @end itemize
9347
9348 Training as well as model generation scripts are provided in
9349 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
9350
9351 Native model files (.model) can be generated from TensorFlow model
9352 files (.pb) by using tools/python/convert.py
9353
9354 The filter accepts the following options:
9355
9356 @table @option
9357 @item filter_type
9358 Specify which filter to use. This option accepts the following values:
9359
9360 @table @samp
9361 @item derain
9362 Derain filter. To conduct derain filter, you need to use a derain model.
9363
9364 @item dehaze
9365 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
9366 @end table
9367 Default value is @samp{derain}.
9368
9369 @item dnn_backend
9370 Specify which DNN backend to use for model loading and execution. This option accepts
9371 the following values:
9372
9373 @table @samp
9374 @item native
9375 Native implementation of DNN loading and execution.
9376
9377 @item tensorflow
9378 TensorFlow backend. To enable this backend you
9379 need to install the TensorFlow for C library (see
9380 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9381 @code{--enable-libtensorflow}
9382 @end table
9383 Default value is @samp{native}.
9384
9385 @item model
9386 Set path to model file specifying network architecture and its parameters.
9387 Note that different backends use different file formats. TensorFlow and native
9388 backend can load files for only its format.
9389 @end table
9390
9391 It can also be finished with @ref{dnn_processing} filter.
9392
9393 @section deshake
9394
9395 Attempt to fix small changes in horizontal and/or vertical shift. This
9396 filter helps remove camera shake from hand-holding a camera, bumping a
9397 tripod, moving on a vehicle, etc.
9398
9399 The filter accepts the following options:
9400
9401 @table @option
9402
9403 @item x
9404 @item y
9405 @item w
9406 @item h
9407 Specify a rectangular area where to limit the search for motion
9408 vectors.
9409 If desired the search for motion vectors can be limited to a
9410 rectangular area of the frame defined by its top left corner, width
9411 and height. These parameters have the same meaning as the drawbox
9412 filter which can be used to visualise the position of the bounding
9413 box.
9414
9415 This is useful when simultaneous movement of subjects within the frame
9416 might be confused for camera motion by the motion vector search.
9417
9418 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
9419 then the full frame is used. This allows later options to be set
9420 without specifying the bounding box for the motion vector search.
9421
9422 Default - search the whole frame.
9423
9424 @item rx
9425 @item ry
9426 Specify the maximum extent of movement in x and y directions in the
9427 range 0-64 pixels. Default 16.
9428
9429 @item edge
9430 Specify how to generate pixels to fill blanks at the edge of the
9431 frame. Available values are:
9432 @table @samp
9433 @item blank, 0
9434 Fill zeroes at blank locations
9435 @item original, 1
9436 Original image at blank locations
9437 @item clamp, 2
9438 Extruded edge value at blank locations
9439 @item mirror, 3
9440 Mirrored edge at blank locations
9441 @end table
9442 Default value is @samp{mirror}.
9443
9444 @item blocksize
9445 Specify the blocksize to use for motion search. Range 4-128 pixels,
9446 default 8.
9447
9448 @item contrast
9449 Specify the contrast threshold for blocks. Only blocks with more than
9450 the specified contrast (difference between darkest and lightest
9451 pixels) will be considered. Range 1-255, default 125.
9452
9453 @item search
9454 Specify the search strategy. Available values are:
9455 @table @samp
9456 @item exhaustive, 0
9457 Set exhaustive search
9458 @item less, 1
9459 Set less exhaustive search.
9460 @end table
9461 Default value is @samp{exhaustive}.
9462
9463 @item filename
9464 If set then a detailed log of the motion search is written to the
9465 specified file.
9466
9467 @end table
9468
9469 @section despill
9470
9471 Remove unwanted contamination of foreground colors, caused by reflected color of
9472 greenscreen or bluescreen.
9473
9474 This filter accepts the following options:
9475
9476 @table @option
9477 @item type
9478 Set what type of despill to use.
9479
9480 @item mix
9481 Set how spillmap will be generated.
9482
9483 @item expand
9484 Set how much to get rid of still remaining spill.
9485
9486 @item red
9487 Controls amount of red in spill area.
9488
9489 @item green
9490 Controls amount of green in spill area.
9491 Should be -1 for greenscreen.
9492
9493 @item blue
9494 Controls amount of blue in spill area.
9495 Should be -1 for bluescreen.
9496
9497 @item brightness
9498 Controls brightness of spill area, preserving colors.
9499
9500 @item alpha
9501 Modify alpha from generated spillmap.
9502 @end table
9503
9504 @subsection Commands
9505
9506 This filter supports the all above options as @ref{commands}.
9507
9508 @section detelecine
9509
9510 Apply an exact inverse of the telecine operation. It requires a predefined
9511 pattern specified using the pattern option which must be the same as that passed
9512 to the telecine filter.
9513
9514 This filter accepts the following options:
9515
9516 @table @option
9517 @item first_field
9518 @table @samp
9519 @item top, t
9520 top field first
9521 @item bottom, b
9522 bottom field first
9523 The default value is @code{top}.
9524 @end table
9525
9526 @item pattern
9527 A string of numbers representing the pulldown pattern you wish to apply.
9528 The default value is @code{23}.
9529
9530 @item start_frame
9531 A number representing position of the first frame with respect to the telecine
9532 pattern. This is to be used if the stream is cut. The default value is @code{0}.
9533 @end table
9534
9535 @section dilation
9536
9537 Apply dilation effect to the video.
9538
9539 This filter replaces the pixel by the local(3x3) maximum.
9540
9541 It accepts the following options:
9542
9543 @table @option
9544 @item threshold0
9545 @item threshold1
9546 @item threshold2
9547 @item threshold3
9548 Limit the maximum change for each plane, default is 65535.
9549 If 0, plane will remain unchanged.
9550
9551 @item coordinates
9552 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9553 pixels are used.
9554
9555 Flags to local 3x3 coordinates maps like this:
9556
9557     1 2 3
9558     4   5
9559     6 7 8
9560 @end table
9561
9562 @subsection Commands
9563
9564 This filter supports the all above options as @ref{commands}.
9565
9566 @section displace
9567
9568 Displace pixels as indicated by second and third input stream.
9569
9570 It takes three input streams and outputs one stream, the first input is the
9571 source, and second and third input are displacement maps.
9572
9573 The second input specifies how much to displace pixels along the
9574 x-axis, while the third input specifies how much to displace pixels
9575 along the y-axis.
9576 If one of displacement map streams terminates, last frame from that
9577 displacement map will be used.
9578
9579 Note that once generated, displacements maps can be reused over and over again.
9580
9581 A description of the accepted options follows.
9582
9583 @table @option
9584 @item edge
9585 Set displace behavior for pixels that are out of range.
9586
9587 Available values are:
9588 @table @samp
9589 @item blank
9590 Missing pixels are replaced by black pixels.
9591
9592 @item smear
9593 Adjacent pixels will spread out to replace missing pixels.
9594
9595 @item wrap
9596 Out of range pixels are wrapped so they point to pixels of other side.
9597
9598 @item mirror
9599 Out of range pixels will be replaced with mirrored pixels.
9600 @end table
9601 Default is @samp{smear}.
9602
9603 @end table
9604
9605 @subsection Examples
9606
9607 @itemize
9608 @item
9609 Add ripple effect to rgb input of video size hd720:
9610 @example
9611 ffmpeg -i INPUT -f lavfi -i nullsrc=s=hd720,lutrgb=128:128:128 -f lavfi -i nullsrc=s=hd720,geq='r=128+30*sin(2*PI*X/400+T):g=128+30*sin(2*PI*X/400+T):b=128+30*sin(2*PI*X/400+T)' -lavfi '[0][1][2]displace' OUTPUT
9612 @end example
9613
9614 @item
9615 Add wave effect to rgb input of video size hd720:
9616 @example
9617 ffmpeg -i INPUT -f lavfi -i nullsrc=hd720,geq='r=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):g=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):b=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T))' -lavfi '[1]split[x][y],[0][x][y]displace' OUTPUT
9618 @end example
9619 @end itemize
9620
9621 @anchor{dnn_processing}
9622 @section dnn_processing
9623
9624 Do image processing with deep neural networks. It works together with another filter
9625 which converts the pixel format of the Frame to what the dnn network requires.
9626
9627 The filter accepts the following options:
9628
9629 @table @option
9630 @item dnn_backend
9631 Specify which DNN backend to use for model loading and execution. This option accepts
9632 the following values:
9633
9634 @table @samp
9635 @item native
9636 Native implementation of DNN loading and execution.
9637
9638 @item tensorflow
9639 TensorFlow backend. To enable this backend you
9640 need to install the TensorFlow for C library (see
9641 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9642 @code{--enable-libtensorflow}
9643
9644 @item openvino
9645 OpenVINO backend. To enable this backend you
9646 need to build and install the OpenVINO for C library (see
9647 @url{https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md}) and configure FFmpeg with
9648 @code{--enable-libopenvino} (--extra-cflags=-I... --extra-ldflags=-L... might
9649 be needed if the header files and libraries are not installed into system path)
9650
9651 @end table
9652
9653 Default value is @samp{native}.
9654
9655 @item model
9656 Set path to model file specifying network architecture and its parameters.
9657 Note that different backends use different file formats. TensorFlow, OpenVINO and native
9658 backend can load files for only its format.
9659
9660 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
9661
9662 @item input
9663 Set the input name of the dnn network.
9664
9665 @item output
9666 Set the output name of the dnn network.
9667
9668 @end table
9669
9670 @subsection Examples
9671
9672 @itemize
9673 @item
9674 Remove rain in rgb24 frame with can.pb (see @ref{derain} filter):
9675 @example
9676 ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
9677 @end example
9678
9679 @item
9680 Halve the pixel value of the frame with format gray32f:
9681 @example
9682 ffmpeg -i input.jpg -vf format=grayf32,dnn_processing=model=halve_gray_float.model:input=dnn_in:output=dnn_out:dnn_backend=native -y out.native.png
9683 @end example
9684
9685 @item
9686 Handle the Y channel with srcnn.pb (see @ref{sr} filter) for frame with yuv420p (planar YUV formats supported):
9687 @example
9688 ./ffmpeg -i 480p.jpg -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=tensorflow:model=srcnn.pb:input=x:output=y -y srcnn.jpg
9689 @end example
9690
9691 @item
9692 Handle the Y channel with espcn.pb (see @ref{sr} filter), which changes frame size, for format yuv420p (planar YUV formats supported):
9693 @example
9694 ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y -y tmp.espcn.jpg
9695 @end example
9696
9697 @end itemize
9698
9699 @section drawbox
9700
9701 Draw a colored box on the input image.
9702
9703 It accepts the following parameters:
9704
9705 @table @option
9706 @item x
9707 @item y
9708 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
9709
9710 @item width, w
9711 @item height, h
9712 The expressions which specify the width and height of the box; if 0 they are interpreted as
9713 the input width and height. It defaults to 0.
9714
9715 @item color, c
9716 Specify the color of the box to write. For the general syntax of this option,
9717 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9718 value @code{invert} is used, the box edge color is the same as the
9719 video with inverted luma.
9720
9721 @item thickness, t
9722 The expression which sets the thickness of the box edge.
9723 A value of @code{fill} will create a filled box. Default value is @code{3}.
9724
9725 See below for the list of accepted constants.
9726
9727 @item replace
9728 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
9729 will overwrite the video's color and alpha pixels.
9730 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
9731 @end table
9732
9733 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9734 following constants:
9735
9736 @table @option
9737 @item dar
9738 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9739
9740 @item hsub
9741 @item vsub
9742 horizontal and vertical chroma subsample values. For example for the
9743 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9744
9745 @item in_h, ih
9746 @item in_w, iw
9747 The input width and height.
9748
9749 @item sar
9750 The input sample aspect ratio.
9751
9752 @item x
9753 @item y
9754 The x and y offset coordinates where the box is drawn.
9755
9756 @item w
9757 @item h
9758 The width and height of the drawn box.
9759
9760 @item t
9761 The thickness of the drawn box.
9762
9763 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9764 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9765
9766 @end table
9767
9768 @subsection Examples
9769
9770 @itemize
9771 @item
9772 Draw a black box around the edge of the input image:
9773 @example
9774 drawbox
9775 @end example
9776
9777 @item
9778 Draw a box with color red and an opacity of 50%:
9779 @example
9780 drawbox=10:20:200:60:red@@0.5
9781 @end example
9782
9783 The previous example can be specified as:
9784 @example
9785 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
9786 @end example
9787
9788 @item
9789 Fill the box with pink color:
9790 @example
9791 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
9792 @end example
9793
9794 @item
9795 Draw a 2-pixel red 2.40:1 mask:
9796 @example
9797 drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
9798 @end example
9799 @end itemize
9800
9801 @subsection Commands
9802 This filter supports same commands as options.
9803 The command accepts the same syntax of the corresponding option.
9804
9805 If the specified expression is not valid, it is kept at its current
9806 value.
9807
9808 @anchor{drawgraph}
9809 @section drawgraph
9810 Draw a graph using input video metadata.
9811
9812 It accepts the following parameters:
9813
9814 @table @option
9815 @item m1
9816 Set 1st frame metadata key from which metadata values will be used to draw a graph.
9817
9818 @item fg1
9819 Set 1st foreground color expression.
9820
9821 @item m2
9822 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
9823
9824 @item fg2
9825 Set 2nd foreground color expression.
9826
9827 @item m3
9828 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
9829
9830 @item fg3
9831 Set 3rd foreground color expression.
9832
9833 @item m4
9834 Set 4th frame metadata key from which metadata values will be used to draw a graph.
9835
9836 @item fg4
9837 Set 4th foreground color expression.
9838
9839 @item min
9840 Set minimal value of metadata value.
9841
9842 @item max
9843 Set maximal value of metadata value.
9844
9845 @item bg
9846 Set graph background color. Default is white.
9847
9848 @item mode
9849 Set graph mode.
9850
9851 Available values for mode is:
9852 @table @samp
9853 @item bar
9854 @item dot
9855 @item line
9856 @end table
9857
9858 Default is @code{line}.
9859
9860 @item slide
9861 Set slide mode.
9862
9863 Available values for slide is:
9864 @table @samp
9865 @item frame
9866 Draw new frame when right border is reached.
9867
9868 @item replace
9869 Replace old columns with new ones.
9870
9871 @item scroll
9872 Scroll from right to left.
9873
9874 @item rscroll
9875 Scroll from left to right.
9876
9877 @item picture
9878 Draw single picture.
9879 @end table
9880
9881 Default is @code{frame}.
9882
9883 @item size
9884 Set size of graph video. For the syntax of this option, check the
9885 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
9886 The default value is @code{900x256}.
9887
9888 @item rate, r
9889 Set the output frame rate. Default value is @code{25}.
9890
9891 The foreground color expressions can use the following variables:
9892 @table @option
9893 @item MIN
9894 Minimal value of metadata value.
9895
9896 @item MAX
9897 Maximal value of metadata value.
9898
9899 @item VAL
9900 Current metadata key value.
9901 @end table
9902
9903 The color is defined as 0xAABBGGRR.
9904 @end table
9905
9906 Example using metadata from @ref{signalstats} filter:
9907 @example
9908 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
9909 @end example
9910
9911 Example using metadata from @ref{ebur128} filter:
9912 @example
9913 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
9914 @end example
9915
9916 @section drawgrid
9917
9918 Draw a grid on the input image.
9919
9920 It accepts the following parameters:
9921
9922 @table @option
9923 @item x
9924 @item y
9925 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
9926
9927 @item width, w
9928 @item height, h
9929 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
9930 input width and height, respectively, minus @code{thickness}, so image gets
9931 framed. Default to 0.
9932
9933 @item color, c
9934 Specify the color of the grid. For the general syntax of this option,
9935 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9936 value @code{invert} is used, the grid color is the same as the
9937 video with inverted luma.
9938
9939 @item thickness, t
9940 The expression which sets the thickness of the grid line. Default value is @code{1}.
9941
9942 See below for the list of accepted constants.
9943
9944 @item replace
9945 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
9946 will overwrite the video's color and alpha pixels.
9947 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
9948 @end table
9949
9950 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9951 following constants:
9952
9953 @table @option
9954 @item dar
9955 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9956
9957 @item hsub
9958 @item vsub
9959 horizontal and vertical chroma subsample values. For example for the
9960 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9961
9962 @item in_h, ih
9963 @item in_w, iw
9964 The input grid cell width and height.
9965
9966 @item sar
9967 The input sample aspect ratio.
9968
9969 @item x
9970 @item y
9971 The x and y coordinates of some point of grid intersection (meant to configure offset).
9972
9973 @item w
9974 @item h
9975 The width and height of the drawn cell.
9976
9977 @item t
9978 The thickness of the drawn cell.
9979
9980 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9981 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9982
9983 @end table
9984
9985 @subsection Examples
9986
9987 @itemize
9988 @item
9989 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
9990 @example
9991 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
9992 @end example
9993
9994 @item
9995 Draw a white 3x3 grid with an opacity of 50%:
9996 @example
9997 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
9998 @end example
9999 @end itemize
10000
10001 @subsection Commands
10002 This filter supports same commands as options.
10003 The command accepts the same syntax of the corresponding option.
10004
10005 If the specified expression is not valid, it is kept at its current
10006 value.
10007
10008 @anchor{drawtext}
10009 @section drawtext
10010
10011 Draw a text string or text from a specified file on top of a video, using the
10012 libfreetype library.
10013
10014 To enable compilation of this filter, you need to configure FFmpeg with
10015 @code{--enable-libfreetype}.
10016 To enable default font fallback and the @var{font} option you need to
10017 configure FFmpeg with @code{--enable-libfontconfig}.
10018 To enable the @var{text_shaping} option, you need to configure FFmpeg with
10019 @code{--enable-libfribidi}.
10020
10021 @subsection Syntax
10022
10023 It accepts the following parameters:
10024
10025 @table @option
10026
10027 @item box
10028 Used to draw a box around text using the background color.
10029 The value must be either 1 (enable) or 0 (disable).
10030 The default value of @var{box} is 0.
10031
10032 @item boxborderw
10033 Set the width of the border to be drawn around the box using @var{boxcolor}.
10034 The default value of @var{boxborderw} is 0.
10035
10036 @item boxcolor
10037 The color to be used for drawing box around text. For the syntax of this
10038 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10039
10040 The default value of @var{boxcolor} is "white".
10041
10042 @item line_spacing
10043 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
10044 The default value of @var{line_spacing} is 0.
10045
10046 @item borderw
10047 Set the width of the border to be drawn around the text using @var{bordercolor}.
10048 The default value of @var{borderw} is 0.
10049
10050 @item bordercolor
10051 Set the color to be used for drawing border around text. For the syntax of this
10052 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10053
10054 The default value of @var{bordercolor} is "black".
10055
10056 @item expansion
10057 Select how the @var{text} is expanded. Can be either @code{none},
10058 @code{strftime} (deprecated) or
10059 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
10060 below for details.
10061
10062 @item basetime
10063 Set a start time for the count. Value is in microseconds. Only applied
10064 in the deprecated strftime expansion mode. To emulate in normal expansion
10065 mode use the @code{pts} function, supplying the start time (in seconds)
10066 as the second argument.
10067
10068 @item fix_bounds
10069 If true, check and fix text coords to avoid clipping.
10070
10071 @item fontcolor
10072 The color to be used for drawing fonts. For the syntax of this option, check
10073 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10074
10075 The default value of @var{fontcolor} is "black".
10076
10077 @item fontcolor_expr
10078 String which is expanded the same way as @var{text} to obtain dynamic
10079 @var{fontcolor} value. By default this option has empty value and is not
10080 processed. When this option is set, it overrides @var{fontcolor} option.
10081
10082 @item font
10083 The font family to be used for drawing text. By default Sans.
10084
10085 @item fontfile
10086 The font file to be used for drawing text. The path must be included.
10087 This parameter is mandatory if the fontconfig support is disabled.
10088
10089 @item alpha
10090 Draw the text applying alpha blending. The value can
10091 be a number between 0.0 and 1.0.
10092 The expression accepts the same variables @var{x, y} as well.
10093 The default value is 1.
10094 Please see @var{fontcolor_expr}.
10095
10096 @item fontsize
10097 The font size to be used for drawing text.
10098 The default value of @var{fontsize} is 16.
10099
10100 @item text_shaping
10101 If set to 1, attempt to shape the text (for example, reverse the order of
10102 right-to-left text and join Arabic characters) before drawing it.
10103 Otherwise, just draw the text exactly as given.
10104 By default 1 (if supported).
10105
10106 @item ft_load_flags
10107 The flags to be used for loading the fonts.
10108
10109 The flags map the corresponding flags supported by libfreetype, and are
10110 a combination of the following values:
10111 @table @var
10112 @item default
10113 @item no_scale
10114 @item no_hinting
10115 @item render
10116 @item no_bitmap
10117 @item vertical_layout
10118 @item force_autohint
10119 @item crop_bitmap
10120 @item pedantic
10121 @item ignore_global_advance_width
10122 @item no_recurse
10123 @item ignore_transform
10124 @item monochrome
10125 @item linear_design
10126 @item no_autohint
10127 @end table
10128
10129 Default value is "default".
10130
10131 For more information consult the documentation for the FT_LOAD_*
10132 libfreetype flags.
10133
10134 @item shadowcolor
10135 The color to be used for drawing a shadow behind the drawn text. For the
10136 syntax of this option, check the @ref{color syntax,,"Color" section in the
10137 ffmpeg-utils manual,ffmpeg-utils}.
10138
10139 The default value of @var{shadowcolor} is "black".
10140
10141 @item shadowx
10142 @item shadowy
10143 The x and y offsets for the text shadow position with respect to the
10144 position of the text. They can be either positive or negative
10145 values. The default value for both is "0".
10146
10147 @item start_number
10148 The starting frame number for the n/frame_num variable. The default value
10149 is "0".
10150
10151 @item tabsize
10152 The size in number of spaces to use for rendering the tab.
10153 Default value is 4.
10154
10155 @item timecode
10156 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
10157 format. It can be used with or without text parameter. @var{timecode_rate}
10158 option must be specified.
10159
10160 @item timecode_rate, rate, r
10161 Set the timecode frame rate (timecode only). Value will be rounded to nearest
10162 integer. Minimum value is "1".
10163 Drop-frame timecode is supported for frame rates 30 & 60.
10164
10165 @item tc24hmax
10166 If set to 1, the output of the timecode option will wrap around at 24 hours.
10167 Default is 0 (disabled).
10168
10169 @item text
10170 The text string to be drawn. The text must be a sequence of UTF-8
10171 encoded characters.
10172 This parameter is mandatory if no file is specified with the parameter
10173 @var{textfile}.
10174
10175 @item textfile
10176 A text file containing text to be drawn. The text must be a sequence
10177 of UTF-8 encoded characters.
10178
10179 This parameter is mandatory if no text string is specified with the
10180 parameter @var{text}.
10181
10182 If both @var{text} and @var{textfile} are specified, an error is thrown.
10183
10184 @item reload
10185 If set to 1, the @var{textfile} will be reloaded before each frame.
10186 Be sure to update it atomically, or it may be read partially, or even fail.
10187
10188 @item x
10189 @item y
10190 The expressions which specify the offsets where text will be drawn
10191 within the video frame. They are relative to the top/left border of the
10192 output image.
10193
10194 The default value of @var{x} and @var{y} is "0".
10195
10196 See below for the list of accepted constants and functions.
10197 @end table
10198
10199 The parameters for @var{x} and @var{y} are expressions containing the
10200 following constants and functions:
10201
10202 @table @option
10203 @item dar
10204 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
10205
10206 @item hsub
10207 @item vsub
10208 horizontal and vertical chroma subsample values. For example for the
10209 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10210
10211 @item line_h, lh
10212 the height of each text line
10213
10214 @item main_h, h, H
10215 the input height
10216
10217 @item main_w, w, W
10218 the input width
10219
10220 @item max_glyph_a, ascent
10221 the maximum distance from the baseline to the highest/upper grid
10222 coordinate used to place a glyph outline point, for all the rendered
10223 glyphs.
10224 It is a positive value, due to the grid's orientation with the Y axis
10225 upwards.
10226
10227 @item max_glyph_d, descent
10228 the maximum distance from the baseline to the lowest grid coordinate
10229 used to place a glyph outline point, for all the rendered glyphs.
10230 This is a negative value, due to the grid's orientation, with the Y axis
10231 upwards.
10232
10233 @item max_glyph_h
10234 maximum glyph height, that is the maximum height for all the glyphs
10235 contained in the rendered text, it is equivalent to @var{ascent} -
10236 @var{descent}.
10237
10238 @item max_glyph_w
10239 maximum glyph width, that is the maximum width for all the glyphs
10240 contained in the rendered text
10241
10242 @item n
10243 the number of input frame, starting from 0
10244
10245 @item rand(min, max)
10246 return a random number included between @var{min} and @var{max}
10247
10248 @item sar
10249 The input sample aspect ratio.
10250
10251 @item t
10252 timestamp expressed in seconds, NAN if the input timestamp is unknown
10253
10254 @item text_h, th
10255 the height of the rendered text
10256
10257 @item text_w, tw
10258 the width of the rendered text
10259
10260 @item x
10261 @item y
10262 the x and y offset coordinates where the text is drawn.
10263
10264 These parameters allow the @var{x} and @var{y} expressions to refer
10265 to each other, so you can for example specify @code{y=x/dar}.
10266
10267 @item pict_type
10268 A one character description of the current frame's picture type.
10269
10270 @item pkt_pos
10271 The current packet's position in the input file or stream
10272 (in bytes, from the start of the input). A value of -1 indicates
10273 this info is not available.
10274
10275 @item pkt_duration
10276 The current packet's duration, in seconds.
10277
10278 @item pkt_size
10279 The current packet's size (in bytes).
10280 @end table
10281
10282 @anchor{drawtext_expansion}
10283 @subsection Text expansion
10284
10285 If @option{expansion} is set to @code{strftime},
10286 the filter recognizes strftime() sequences in the provided text and
10287 expands them accordingly. Check the documentation of strftime(). This
10288 feature is deprecated.
10289
10290 If @option{expansion} is set to @code{none}, the text is printed verbatim.
10291
10292 If @option{expansion} is set to @code{normal} (which is the default),
10293 the following expansion mechanism is used.
10294
10295 The backslash character @samp{\}, followed by any character, always expands to
10296 the second character.
10297
10298 Sequences of the form @code{%@{...@}} are expanded. The text between the
10299 braces is a function name, possibly followed by arguments separated by ':'.
10300 If the arguments contain special characters or delimiters (':' or '@}'),
10301 they should be escaped.
10302
10303 Note that they probably must also be escaped as the value for the
10304 @option{text} option in the filter argument string and as the filter
10305 argument in the filtergraph description, and possibly also for the shell,
10306 that makes up to four levels of escaping; using a text file avoids these
10307 problems.
10308
10309 The following functions are available:
10310
10311 @table @command
10312
10313 @item expr, e
10314 The expression evaluation result.
10315
10316 It must take one argument specifying the expression to be evaluated,
10317 which accepts the same constants and functions as the @var{x} and
10318 @var{y} values. Note that not all constants should be used, for
10319 example the text size is not known when evaluating the expression, so
10320 the constants @var{text_w} and @var{text_h} will have an undefined
10321 value.
10322
10323 @item expr_int_format, eif
10324 Evaluate the expression's value and output as formatted integer.
10325
10326 The first argument is the expression to be evaluated, just as for the @var{expr} function.
10327 The second argument specifies the output format. Allowed values are @samp{x},
10328 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
10329 @code{printf} function.
10330 The third parameter is optional and sets the number of positions taken by the output.
10331 It can be used to add padding with zeros from the left.
10332
10333 @item gmtime
10334 The time at which the filter is running, expressed in UTC.
10335 It can accept an argument: a strftime() format string.
10336
10337 @item localtime
10338 The time at which the filter is running, expressed in the local time zone.
10339 It can accept an argument: a strftime() format string.
10340
10341 @item metadata
10342 Frame metadata. Takes one or two arguments.
10343
10344 The first argument is mandatory and specifies the metadata key.
10345
10346 The second argument is optional and specifies a default value, used when the
10347 metadata key is not found or empty.
10348
10349 Available metadata can be identified by inspecting entries
10350 starting with TAG included within each frame section
10351 printed by running @code{ffprobe -show_frames}.
10352
10353 String metadata generated in filters leading to
10354 the drawtext filter are also available.
10355
10356 @item n, frame_num
10357 The frame number, starting from 0.
10358
10359 @item pict_type
10360 A one character description of the current picture type.
10361
10362 @item pts
10363 The timestamp of the current frame.
10364 It can take up to three arguments.
10365
10366 The first argument is the format of the timestamp; it defaults to @code{flt}
10367 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
10368 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
10369 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
10370 @code{localtime} stands for the timestamp of the frame formatted as
10371 local time zone time.
10372
10373 The second argument is an offset added to the timestamp.
10374
10375 If the format is set to @code{hms}, a third argument @code{24HH} may be
10376 supplied to present the hour part of the formatted timestamp in 24h format
10377 (00-23).
10378
10379 If the format is set to @code{localtime} or @code{gmtime},
10380 a third argument may be supplied: a strftime() format string.
10381 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
10382 @end table
10383
10384 @subsection Commands
10385
10386 This filter supports altering parameters via commands:
10387 @table @option
10388 @item reinit
10389 Alter existing filter parameters.
10390
10391 Syntax for the argument is the same as for filter invocation, e.g.
10392
10393 @example
10394 fontsize=56:fontcolor=green:text='Hello World'
10395 @end example
10396
10397 Full filter invocation with sendcmd would look like this:
10398
10399 @example
10400 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
10401 @end example
10402 @end table
10403
10404 If the entire argument can't be parsed or applied as valid values then the filter will
10405 continue with its existing parameters.
10406
10407 @subsection Examples
10408
10409 @itemize
10410 @item
10411 Draw "Test Text" with font FreeSerif, using the default values for the
10412 optional parameters.
10413
10414 @example
10415 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
10416 @end example
10417
10418 @item
10419 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
10420 and y=50 (counting from the top-left corner of the screen), text is
10421 yellow with a red box around it. Both the text and the box have an
10422 opacity of 20%.
10423
10424 @example
10425 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
10426           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
10427 @end example
10428
10429 Note that the double quotes are not necessary if spaces are not used
10430 within the parameter list.
10431
10432 @item
10433 Show the text at the center of the video frame:
10434 @example
10435 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
10436 @end example
10437
10438 @item
10439 Show the text at a random position, switching to a new position every 30 seconds:
10440 @example
10441 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=if(eq(mod(t\,30)\,0)\,rand(0\,(w-text_w))\,x):y=if(eq(mod(t\,30)\,0)\,rand(0\,(h-text_h))\,y)"
10442 @end example
10443
10444 @item
10445 Show a text line sliding from right to left in the last row of the video
10446 frame. The file @file{LONG_LINE} is assumed to contain a single line
10447 with no newlines.
10448 @example
10449 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
10450 @end example
10451
10452 @item
10453 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
10454 @example
10455 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
10456 @end example
10457
10458 @item
10459 Draw a single green letter "g", at the center of the input video.
10460 The glyph baseline is placed at half screen height.
10461 @example
10462 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
10463 @end example
10464
10465 @item
10466 Show text for 1 second every 3 seconds:
10467 @example
10468 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
10469 @end example
10470
10471 @item
10472 Use fontconfig to set the font. Note that the colons need to be escaped.
10473 @example
10474 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
10475 @end example
10476
10477 @item
10478 Draw "Test Text" with font size dependent on height of the video.
10479 @example
10480 drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
10481 @end example
10482
10483 @item
10484 Print the date of a real-time encoding (see strftime(3)):
10485 @example
10486 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
10487 @end example
10488
10489 @item
10490 Show text fading in and out (appearing/disappearing):
10491 @example
10492 #!/bin/sh
10493 DS=1.0 # display start
10494 DE=10.0 # display end
10495 FID=1.5 # fade in duration
10496 FOD=5 # fade out duration
10497 ffplay -f lavfi "color,drawtext=text=TEST:fontsize=50:fontfile=FreeSerif.ttf:fontcolor_expr=ff0000%@{eif\\\\: clip(255*(1*between(t\\, $DS + $FID\\, $DE - $FOD) + ((t - $DS)/$FID)*between(t\\, $DS\\, $DS + $FID) + (-(t - $DE)/$FOD)*between(t\\, $DE - $FOD\\, $DE) )\\, 0\\, 255) \\\\: x\\\\: 2 @}"
10498 @end example
10499
10500 @item
10501 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
10502 and the @option{fontsize} value are included in the @option{y} offset.
10503 @example
10504 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
10505 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
10506 @end example
10507
10508 @item
10509 Plot special @var{lavf.image2dec.source_basename} metadata onto each frame if
10510 such metadata exists. Otherwise, plot the string "NA". Note that image2 demuxer
10511 must have option @option{-export_path_metadata 1} for the special metadata fields
10512 to be available for filters.
10513 @example
10514 drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%@{metadata\:lavf.image2dec.source_basename\:NA@}':x=10:y=10"
10515 @end example
10516
10517 @end itemize
10518
10519 For more information about libfreetype, check:
10520 @url{http://www.freetype.org/}.
10521
10522 For more information about fontconfig, check:
10523 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
10524
10525 For more information about libfribidi, check:
10526 @url{http://fribidi.org/}.
10527
10528 @section edgedetect
10529
10530 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
10531
10532 The filter accepts the following options:
10533
10534 @table @option
10535 @item low
10536 @item high
10537 Set low and high threshold values used by the Canny thresholding
10538 algorithm.
10539
10540 The high threshold selects the "strong" edge pixels, which are then
10541 connected through 8-connectivity with the "weak" edge pixels selected
10542 by the low threshold.
10543
10544 @var{low} and @var{high} threshold values must be chosen in the range
10545 [0,1], and @var{low} should be lesser or equal to @var{high}.
10546
10547 Default value for @var{low} is @code{20/255}, and default value for @var{high}
10548 is @code{50/255}.
10549
10550 @item mode
10551 Define the drawing mode.
10552
10553 @table @samp
10554 @item wires
10555 Draw white/gray wires on black background.
10556
10557 @item colormix
10558 Mix the colors to create a paint/cartoon effect.
10559
10560 @item canny
10561 Apply Canny edge detector on all selected planes.
10562 @end table
10563 Default value is @var{wires}.
10564
10565 @item planes
10566 Select planes for filtering. By default all available planes are filtered.
10567 @end table
10568
10569 @subsection Examples
10570
10571 @itemize
10572 @item
10573 Standard edge detection with custom values for the hysteresis thresholding:
10574 @example
10575 edgedetect=low=0.1:high=0.4
10576 @end example
10577
10578 @item
10579 Painting effect without thresholding:
10580 @example
10581 edgedetect=mode=colormix:high=0
10582 @end example
10583 @end itemize
10584
10585 @section elbg
10586
10587 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
10588
10589 For each input image, the filter will compute the optimal mapping from
10590 the input to the output given the codebook length, that is the number
10591 of distinct output colors.
10592
10593 This filter accepts the following options.
10594
10595 @table @option
10596 @item codebook_length, l
10597 Set codebook length. The value must be a positive integer, and
10598 represents the number of distinct output colors. Default value is 256.
10599
10600 @item nb_steps, n
10601 Set the maximum number of iterations to apply for computing the optimal
10602 mapping. The higher the value the better the result and the higher the
10603 computation time. Default value is 1.
10604
10605 @item seed, s
10606 Set a random seed, must be an integer included between 0 and
10607 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
10608 will try to use a good random seed on a best effort basis.
10609
10610 @item pal8
10611 Set pal8 output pixel format. This option does not work with codebook
10612 length greater than 256.
10613 @end table
10614
10615 @section entropy
10616
10617 Measure graylevel entropy in histogram of color channels of video frames.
10618
10619 It accepts the following parameters:
10620
10621 @table @option
10622 @item mode
10623 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
10624
10625 @var{diff} mode measures entropy of histogram delta values, absolute differences
10626 between neighbour histogram values.
10627 @end table
10628
10629 @section eq
10630 Set brightness, contrast, saturation and approximate gamma adjustment.
10631
10632 The filter accepts the following options:
10633
10634 @table @option
10635 @item contrast
10636 Set the contrast expression. The value must be a float value in range
10637 @code{-1000.0} to @code{1000.0}. The default value is "1".
10638
10639 @item brightness
10640 Set the brightness expression. The value must be a float value in
10641 range @code{-1.0} to @code{1.0}. The default value is "0".
10642
10643 @item saturation
10644 Set the saturation expression. The value must be a float in
10645 range @code{0.0} to @code{3.0}. The default value is "1".
10646
10647 @item gamma
10648 Set the gamma expression. The value must be a float in range
10649 @code{0.1} to @code{10.0}.  The default value is "1".
10650
10651 @item gamma_r
10652 Set the gamma expression for red. The value must be a float in
10653 range @code{0.1} to @code{10.0}. The default value is "1".
10654
10655 @item gamma_g
10656 Set the gamma expression for green. The value must be a float in range
10657 @code{0.1} to @code{10.0}. The default value is "1".
10658
10659 @item gamma_b
10660 Set the gamma expression for blue. The value must be a float in range
10661 @code{0.1} to @code{10.0}. The default value is "1".
10662
10663 @item gamma_weight
10664 Set the gamma weight expression. It can be used to reduce the effect
10665 of a high gamma value on bright image areas, e.g. keep them from
10666 getting overamplified and just plain white. The value must be a float
10667 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
10668 gamma correction all the way down while @code{1.0} leaves it at its
10669 full strength. Default is "1".
10670
10671 @item eval
10672 Set when the expressions for brightness, contrast, saturation and
10673 gamma expressions are evaluated.
10674
10675 It accepts the following values:
10676 @table @samp
10677 @item init
10678 only evaluate expressions once during the filter initialization or
10679 when a command is processed
10680
10681 @item frame
10682 evaluate expressions for each incoming frame
10683 @end table
10684
10685 Default value is @samp{init}.
10686 @end table
10687
10688 The expressions accept the following parameters:
10689 @table @option
10690 @item n
10691 frame count of the input frame starting from 0
10692
10693 @item pos
10694 byte position of the corresponding packet in the input file, NAN if
10695 unspecified
10696
10697 @item r
10698 frame rate of the input video, NAN if the input frame rate is unknown
10699
10700 @item t
10701 timestamp expressed in seconds, NAN if the input timestamp is unknown
10702 @end table
10703
10704 @subsection Commands
10705 The filter supports the following commands:
10706
10707 @table @option
10708 @item contrast
10709 Set the contrast expression.
10710
10711 @item brightness
10712 Set the brightness expression.
10713
10714 @item saturation
10715 Set the saturation expression.
10716
10717 @item gamma
10718 Set the gamma expression.
10719
10720 @item gamma_r
10721 Set the gamma_r expression.
10722
10723 @item gamma_g
10724 Set gamma_g expression.
10725
10726 @item gamma_b
10727 Set gamma_b expression.
10728
10729 @item gamma_weight
10730 Set gamma_weight expression.
10731
10732 The command accepts the same syntax of the corresponding option.
10733
10734 If the specified expression is not valid, it is kept at its current
10735 value.
10736
10737 @end table
10738
10739 @section erosion
10740
10741 Apply erosion effect to the video.
10742
10743 This filter replaces the pixel by the local(3x3) minimum.
10744
10745 It accepts the following options:
10746
10747 @table @option
10748 @item threshold0
10749 @item threshold1
10750 @item threshold2
10751 @item threshold3
10752 Limit the maximum change for each plane, default is 65535.
10753 If 0, plane will remain unchanged.
10754
10755 @item coordinates
10756 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
10757 pixels are used.
10758
10759 Flags to local 3x3 coordinates maps like this:
10760
10761     1 2 3
10762     4   5
10763     6 7 8
10764 @end table
10765
10766 @subsection Commands
10767
10768 This filter supports the all above options as @ref{commands}.
10769
10770 @section extractplanes
10771
10772 Extract color channel components from input video stream into
10773 separate grayscale video streams.
10774
10775 The filter accepts the following option:
10776
10777 @table @option
10778 @item planes
10779 Set plane(s) to extract.
10780
10781 Available values for planes are:
10782 @table @samp
10783 @item y
10784 @item u
10785 @item v
10786 @item a
10787 @item r
10788 @item g
10789 @item b
10790 @end table
10791
10792 Choosing planes not available in the input will result in an error.
10793 That means you cannot select @code{r}, @code{g}, @code{b} planes
10794 with @code{y}, @code{u}, @code{v} planes at same time.
10795 @end table
10796
10797 @subsection Examples
10798
10799 @itemize
10800 @item
10801 Extract luma, u and v color channel component from input video frame
10802 into 3 grayscale outputs:
10803 @example
10804 ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
10805 @end example
10806 @end itemize
10807
10808 @section fade
10809
10810 Apply a fade-in/out effect to the input video.
10811
10812 It accepts the following parameters:
10813
10814 @table @option
10815 @item type, t
10816 The effect type can be either "in" for a fade-in, or "out" for a fade-out
10817 effect.
10818 Default is @code{in}.
10819
10820 @item start_frame, s
10821 Specify the number of the frame to start applying the fade
10822 effect at. Default is 0.
10823
10824 @item nb_frames, n
10825 The number of frames that the fade effect lasts. At the end of the
10826 fade-in effect, the output video will have the same intensity as the input video.
10827 At the end of the fade-out transition, the output video will be filled with the
10828 selected @option{color}.
10829 Default is 25.
10830
10831 @item alpha
10832 If set to 1, fade only alpha channel, if one exists on the input.
10833 Default value is 0.
10834
10835 @item start_time, st
10836 Specify the timestamp (in seconds) of the frame to start to apply the fade
10837 effect. If both start_frame and start_time are specified, the fade will start at
10838 whichever comes last.  Default is 0.
10839
10840 @item duration, d
10841 The number of seconds for which the fade effect has to last. At the end of the
10842 fade-in effect the output video will have the same intensity as the input video,
10843 at the end of the fade-out transition the output video will be filled with the
10844 selected @option{color}.
10845 If both duration and nb_frames are specified, duration is used. Default is 0
10846 (nb_frames is used by default).
10847
10848 @item color, c
10849 Specify the color of the fade. Default is "black".
10850 @end table
10851
10852 @subsection Examples
10853
10854 @itemize
10855 @item
10856 Fade in the first 30 frames of video:
10857 @example
10858 fade=in:0:30
10859 @end example
10860
10861 The command above is equivalent to:
10862 @example
10863 fade=t=in:s=0:n=30
10864 @end example
10865
10866 @item
10867 Fade out the last 45 frames of a 200-frame video:
10868 @example
10869 fade=out:155:45
10870 fade=type=out:start_frame=155:nb_frames=45
10871 @end example
10872
10873 @item
10874 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
10875 @example
10876 fade=in:0:25, fade=out:975:25
10877 @end example
10878
10879 @item
10880 Make the first 5 frames yellow, then fade in from frame 5-24:
10881 @example
10882 fade=in:5:20:color=yellow
10883 @end example
10884
10885 @item
10886 Fade in alpha over first 25 frames of video:
10887 @example
10888 fade=in:0:25:alpha=1
10889 @end example
10890
10891 @item
10892 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
10893 @example
10894 fade=t=in:st=5.5:d=0.5
10895 @end example
10896
10897 @end itemize
10898
10899 @section fftdnoiz
10900 Denoise frames using 3D FFT (frequency domain filtering).
10901
10902 The filter accepts the following options:
10903
10904 @table @option
10905 @item sigma
10906 Set the noise sigma constant. This sets denoising strength.
10907 Default value is 1. Allowed range is from 0 to 30.
10908 Using very high sigma with low overlap may give blocking artifacts.
10909
10910 @item amount
10911 Set amount of denoising. By default all detected noise is reduced.
10912 Default value is 1. Allowed range is from 0 to 1.
10913
10914 @item block
10915 Set size of block, Default is 4, can be 3, 4, 5 or 6.
10916 Actual size of block in pixels is 2 to power of @var{block}, so by default
10917 block size in pixels is 2^4 which is 16.
10918
10919 @item overlap
10920 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
10921
10922 @item prev
10923 Set number of previous frames to use for denoising. By default is set to 0.
10924
10925 @item next
10926 Set number of next frames to to use for denoising. By default is set to 0.
10927
10928 @item planes
10929 Set planes which will be filtered, by default are all available filtered
10930 except alpha.
10931 @end table
10932
10933 @section fftfilt
10934 Apply arbitrary expressions to samples in frequency domain
10935
10936 @table @option
10937 @item dc_Y
10938 Adjust the dc value (gain) of the luma plane of the image. The filter
10939 accepts an integer value in range @code{0} to @code{1000}. The default
10940 value is set to @code{0}.
10941
10942 @item dc_U
10943 Adjust the dc value (gain) of the 1st chroma plane of the image. The
10944 filter accepts an integer value in range @code{0} to @code{1000}. The
10945 default value is set to @code{0}.
10946
10947 @item dc_V
10948 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
10949 filter accepts an integer value in range @code{0} to @code{1000}. The
10950 default value is set to @code{0}.
10951
10952 @item weight_Y
10953 Set the frequency domain weight expression for the luma plane.
10954
10955 @item weight_U
10956 Set the frequency domain weight expression for the 1st chroma plane.
10957
10958 @item weight_V
10959 Set the frequency domain weight expression for the 2nd chroma plane.
10960
10961 @item eval
10962 Set when the expressions are evaluated.
10963
10964 It accepts the following values:
10965 @table @samp
10966 @item init
10967 Only evaluate expressions once during the filter initialization.
10968
10969 @item frame
10970 Evaluate expressions for each incoming frame.
10971 @end table
10972
10973 Default value is @samp{init}.
10974
10975 The filter accepts the following variables:
10976 @item X
10977 @item Y
10978 The coordinates of the current sample.
10979
10980 @item W
10981 @item H
10982 The width and height of the image.
10983
10984 @item N
10985 The number of input frame, starting from 0.
10986 @end table
10987
10988 @subsection Examples
10989
10990 @itemize
10991 @item
10992 High-pass:
10993 @example
10994 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
10995 @end example
10996
10997 @item
10998 Low-pass:
10999 @example
11000 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
11001 @end example
11002
11003 @item
11004 Sharpen:
11005 @example
11006 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
11007 @end example
11008
11009 @item
11010 Blur:
11011 @example
11012 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
11013 @end example
11014
11015 @end itemize
11016
11017 @section field
11018
11019 Extract a single field from an interlaced image using stride
11020 arithmetic to avoid wasting CPU time. The output frames are marked as
11021 non-interlaced.
11022
11023 The filter accepts the following options:
11024
11025 @table @option
11026 @item type
11027 Specify whether to extract the top (if the value is @code{0} or
11028 @code{top}) or the bottom field (if the value is @code{1} or
11029 @code{bottom}).
11030 @end table
11031
11032 @section fieldhint
11033
11034 Create new frames by copying the top and bottom fields from surrounding frames
11035 supplied as numbers by the hint file.
11036
11037 @table @option
11038 @item hint
11039 Set file containing hints: absolute/relative frame numbers.
11040
11041 There must be one line for each frame in a clip. Each line must contain two
11042 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
11043 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
11044 is current frame number for @code{absolute} mode or out of [-1, 1] range
11045 for @code{relative} mode. First number tells from which frame to pick up top
11046 field and second number tells from which frame to pick up bottom field.
11047
11048 If optionally followed by @code{+} output frame will be marked as interlaced,
11049 else if followed by @code{-} output frame will be marked as progressive, else
11050 it will be marked same as input frame.
11051 If optionally followed by @code{t} output frame will use only top field, or in
11052 case of @code{b} it will use only bottom field.
11053 If line starts with @code{#} or @code{;} that line is skipped.
11054
11055 @item mode
11056 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
11057 @end table
11058
11059 Example of first several lines of @code{hint} file for @code{relative} mode:
11060 @example
11061 0,0 - # first frame
11062 1,0 - # second frame, use third's frame top field and second's frame bottom field
11063 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
11064 1,0 -
11065 0,0 -
11066 0,0 -
11067 1,0 -
11068 1,0 -
11069 1,0 -
11070 0,0 -
11071 0,0 -
11072 1,0 -
11073 1,0 -
11074 1,0 -
11075 0,0 -
11076 @end example
11077
11078 @section fieldmatch
11079
11080 Field matching filter for inverse telecine. It is meant to reconstruct the
11081 progressive frames from a telecined stream. The filter does not drop duplicated
11082 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
11083 followed by a decimation filter such as @ref{decimate} in the filtergraph.
11084
11085 The separation of the field matching and the decimation is notably motivated by
11086 the possibility of inserting a de-interlacing filter fallback between the two.
11087 If the source has mixed telecined and real interlaced content,
11088 @code{fieldmatch} will not be able to match fields for the interlaced parts.
11089 But these remaining combed frames will be marked as interlaced, and thus can be
11090 de-interlaced by a later filter such as @ref{yadif} before decimation.
11091
11092 In addition to the various configuration options, @code{fieldmatch} can take an
11093 optional second stream, activated through the @option{ppsrc} option. If
11094 enabled, the frames reconstruction will be based on the fields and frames from
11095 this second stream. This allows the first input to be pre-processed in order to
11096 help the various algorithms of the filter, while keeping the output lossless
11097 (assuming the fields are matched properly). Typically, a field-aware denoiser,
11098 or brightness/contrast adjustments can help.
11099
11100 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
11101 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
11102 which @code{fieldmatch} is based on. While the semantic and usage are very
11103 close, some behaviour and options names can differ.
11104
11105 The @ref{decimate} filter currently only works for constant frame rate input.
11106 If your input has mixed telecined (30fps) and progressive content with a lower
11107 framerate like 24fps use the following filterchain to produce the necessary cfr
11108 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
11109
11110 The filter accepts the following options:
11111
11112 @table @option
11113 @item order
11114 Specify the assumed field order of the input stream. Available values are:
11115
11116 @table @samp
11117 @item auto
11118 Auto detect parity (use FFmpeg's internal parity value).
11119 @item bff
11120 Assume bottom field first.
11121 @item tff
11122 Assume top field first.
11123 @end table
11124
11125 Note that it is sometimes recommended not to trust the parity announced by the
11126 stream.
11127
11128 Default value is @var{auto}.
11129
11130 @item mode
11131 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
11132 sense that it won't risk creating jerkiness due to duplicate frames when
11133 possible, but if there are bad edits or blended fields it will end up
11134 outputting combed frames when a good match might actually exist. On the other
11135 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
11136 but will almost always find a good frame if there is one. The other values are
11137 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
11138 jerkiness and creating duplicate frames versus finding good matches in sections
11139 with bad edits, orphaned fields, blended fields, etc.
11140
11141 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
11142
11143 Available values are:
11144
11145 @table @samp
11146 @item pc
11147 2-way matching (p/c)
11148 @item pc_n
11149 2-way matching, and trying 3rd match if still combed (p/c + n)
11150 @item pc_u
11151 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
11152 @item pc_n_ub
11153 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
11154 still combed (p/c + n + u/b)
11155 @item pcn
11156 3-way matching (p/c/n)
11157 @item pcn_ub
11158 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
11159 detected as combed (p/c/n + u/b)
11160 @end table
11161
11162 The parenthesis at the end indicate the matches that would be used for that
11163 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
11164 @var{top}).
11165
11166 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
11167 the slowest.
11168
11169 Default value is @var{pc_n}.
11170
11171 @item ppsrc
11172 Mark the main input stream as a pre-processed input, and enable the secondary
11173 input stream as the clean source to pick the fields from. See the filter
11174 introduction for more details. It is similar to the @option{clip2} feature from
11175 VFM/TFM.
11176
11177 Default value is @code{0} (disabled).
11178
11179 @item field
11180 Set the field to match from. It is recommended to set this to the same value as
11181 @option{order} unless you experience matching failures with that setting. In
11182 certain circumstances changing the field that is used to match from can have a
11183 large impact on matching performance. Available values are:
11184
11185 @table @samp
11186 @item auto
11187 Automatic (same value as @option{order}).
11188 @item bottom
11189 Match from the bottom field.
11190 @item top
11191 Match from the top field.
11192 @end table
11193
11194 Default value is @var{auto}.
11195
11196 @item mchroma
11197 Set whether or not chroma is included during the match comparisons. In most
11198 cases it is recommended to leave this enabled. You should set this to @code{0}
11199 only if your clip has bad chroma problems such as heavy rainbowing or other
11200 artifacts. Setting this to @code{0} could also be used to speed things up at
11201 the cost of some accuracy.
11202
11203 Default value is @code{1}.
11204
11205 @item y0
11206 @item y1
11207 These define an exclusion band which excludes the lines between @option{y0} and
11208 @option{y1} from being included in the field matching decision. An exclusion
11209 band can be used to ignore subtitles, a logo, or other things that may
11210 interfere with the matching. @option{y0} sets the starting scan line and
11211 @option{y1} sets the ending line; all lines in between @option{y0} and
11212 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
11213 @option{y0} and @option{y1} to the same value will disable the feature.
11214 @option{y0} and @option{y1} defaults to @code{0}.
11215
11216 @item scthresh
11217 Set the scene change detection threshold as a percentage of maximum change on
11218 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
11219 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
11220 @option{scthresh} is @code{[0.0, 100.0]}.
11221
11222 Default value is @code{12.0}.
11223
11224 @item combmatch
11225 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
11226 account the combed scores of matches when deciding what match to use as the
11227 final match. Available values are:
11228
11229 @table @samp
11230 @item none
11231 No final matching based on combed scores.
11232 @item sc
11233 Combed scores are only used when a scene change is detected.
11234 @item full
11235 Use combed scores all the time.
11236 @end table
11237
11238 Default is @var{sc}.
11239
11240 @item combdbg
11241 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
11242 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
11243 Available values are:
11244
11245 @table @samp
11246 @item none
11247 No forced calculation.
11248 @item pcn
11249 Force p/c/n calculations.
11250 @item pcnub
11251 Force p/c/n/u/b calculations.
11252 @end table
11253
11254 Default value is @var{none}.
11255
11256 @item cthresh
11257 This is the area combing threshold used for combed frame detection. This
11258 essentially controls how "strong" or "visible" combing must be to be detected.
11259 Larger values mean combing must be more visible and smaller values mean combing
11260 can be less visible or strong and still be detected. Valid settings are from
11261 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
11262 be detected as combed). This is basically a pixel difference value. A good
11263 range is @code{[8, 12]}.
11264
11265 Default value is @code{9}.
11266
11267 @item chroma
11268 Sets whether or not chroma is considered in the combed frame decision.  Only
11269 disable this if your source has chroma problems (rainbowing, etc.) that are
11270 causing problems for the combed frame detection with chroma enabled. Actually,
11271 using @option{chroma}=@var{0} is usually more reliable, except for the case
11272 where there is chroma only combing in the source.
11273
11274 Default value is @code{0}.
11275
11276 @item blockx
11277 @item blocky
11278 Respectively set the x-axis and y-axis size of the window used during combed
11279 frame detection. This has to do with the size of the area in which
11280 @option{combpel} pixels are required to be detected as combed for a frame to be
11281 declared combed. See the @option{combpel} parameter description for more info.
11282 Possible values are any number that is a power of 2 starting at 4 and going up
11283 to 512.
11284
11285 Default value is @code{16}.
11286
11287 @item combpel
11288 The number of combed pixels inside any of the @option{blocky} by
11289 @option{blockx} size blocks on the frame for the frame to be detected as
11290 combed. While @option{cthresh} controls how "visible" the combing must be, this
11291 setting controls "how much" combing there must be in any localized area (a
11292 window defined by the @option{blockx} and @option{blocky} settings) on the
11293 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
11294 which point no frames will ever be detected as combed). This setting is known
11295 as @option{MI} in TFM/VFM vocabulary.
11296
11297 Default value is @code{80}.
11298 @end table
11299
11300 @anchor{p/c/n/u/b meaning}
11301 @subsection p/c/n/u/b meaning
11302
11303 @subsubsection p/c/n
11304
11305 We assume the following telecined stream:
11306
11307 @example
11308 Top fields:     1 2 2 3 4
11309 Bottom fields:  1 2 3 4 4
11310 @end example
11311
11312 The numbers correspond to the progressive frame the fields relate to. Here, the
11313 first two frames are progressive, the 3rd and 4th are combed, and so on.
11314
11315 When @code{fieldmatch} is configured to run a matching from bottom
11316 (@option{field}=@var{bottom}) this is how this input stream get transformed:
11317
11318 @example
11319 Input stream:
11320                 T     1 2 2 3 4
11321                 B     1 2 3 4 4   <-- matching reference
11322
11323 Matches:              c c n n c
11324
11325 Output stream:
11326                 T     1 2 3 4 4
11327                 B     1 2 3 4 4
11328 @end example
11329
11330 As a result of the field matching, we can see that some frames get duplicated.
11331 To perform a complete inverse telecine, you need to rely on a decimation filter
11332 after this operation. See for instance the @ref{decimate} filter.
11333
11334 The same operation now matching from top fields (@option{field}=@var{top})
11335 looks like this:
11336
11337 @example
11338 Input stream:
11339                 T     1 2 2 3 4   <-- matching reference
11340                 B     1 2 3 4 4
11341
11342 Matches:              c c p p c
11343
11344 Output stream:
11345                 T     1 2 2 3 4
11346                 B     1 2 2 3 4
11347 @end example
11348
11349 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
11350 basically, they refer to the frame and field of the opposite parity:
11351
11352 @itemize
11353 @item @var{p} matches the field of the opposite parity in the previous frame
11354 @item @var{c} matches the field of the opposite parity in the current frame
11355 @item @var{n} matches the field of the opposite parity in the next frame
11356 @end itemize
11357
11358 @subsubsection u/b
11359
11360 The @var{u} and @var{b} matching are a bit special in the sense that they match
11361 from the opposite parity flag. In the following examples, we assume that we are
11362 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
11363 'x' is placed above and below each matched fields.
11364
11365 With bottom matching (@option{field}=@var{bottom}):
11366 @example
11367 Match:           c         p           n          b          u
11368
11369                  x       x               x        x          x
11370   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11371   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11372                  x         x           x        x              x
11373
11374 Output frames:
11375                  2          1          2          2          2
11376                  2          2          2          1          3
11377 @end example
11378
11379 With top matching (@option{field}=@var{top}):
11380 @example
11381 Match:           c         p           n          b          u
11382
11383                  x         x           x        x              x
11384   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11385   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11386                  x       x               x        x          x
11387
11388 Output frames:
11389                  2          2          2          1          2
11390                  2          1          3          2          2
11391 @end example
11392
11393 @subsection Examples
11394
11395 Simple IVTC of a top field first telecined stream:
11396 @example
11397 fieldmatch=order=tff:combmatch=none, decimate
11398 @end example
11399
11400 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
11401 @example
11402 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11403 @end example
11404
11405 @section fieldorder
11406
11407 Transform the field order of the input video.
11408
11409 It accepts the following parameters:
11410
11411 @table @option
11412
11413 @item order
11414 The output field order. Valid values are @var{tff} for top field first or @var{bff}
11415 for bottom field first.
11416 @end table
11417
11418 The default value is @samp{tff}.
11419
11420 The transformation is done by shifting the picture content up or down
11421 by one line, and filling the remaining line with appropriate picture content.
11422 This method is consistent with most broadcast field order converters.
11423
11424 If the input video is not flagged as being interlaced, or it is already
11425 flagged as being of the required output field order, then this filter does
11426 not alter the incoming video.
11427
11428 It is very useful when converting to or from PAL DV material,
11429 which is bottom field first.
11430
11431 For example:
11432 @example
11433 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11434 @end example
11435
11436 @section fifo, afifo
11437
11438 Buffer input images and send them when they are requested.
11439
11440 It is mainly useful when auto-inserted by the libavfilter
11441 framework.
11442
11443 It does not take parameters.
11444
11445 @section fillborders
11446
11447 Fill borders of the input video, without changing video stream dimensions.
11448 Sometimes video can have garbage at the four edges and you may not want to
11449 crop video input to keep size multiple of some number.
11450
11451 This filter accepts the following options:
11452
11453 @table @option
11454 @item left
11455 Number of pixels to fill from left border.
11456
11457 @item right
11458 Number of pixels to fill from right border.
11459
11460 @item top
11461 Number of pixels to fill from top border.
11462
11463 @item bottom
11464 Number of pixels to fill from bottom border.
11465
11466 @item mode
11467 Set fill mode.
11468
11469 It accepts the following values:
11470 @table @samp
11471 @item smear
11472 fill pixels using outermost pixels
11473
11474 @item mirror
11475 fill pixels using mirroring
11476
11477 @item fixed
11478 fill pixels with constant value
11479 @end table
11480
11481 Default is @var{smear}.
11482
11483 @item color
11484 Set color for pixels in fixed mode. Default is @var{black}.
11485 @end table
11486
11487 @subsection Commands
11488 This filter supports same @ref{commands} as options.
11489 The command accepts the same syntax of the corresponding option.
11490
11491 If the specified expression is not valid, it is kept at its current
11492 value.
11493
11494 @section find_rect
11495
11496 Find a rectangular object
11497
11498 It accepts the following options:
11499
11500 @table @option
11501 @item object
11502 Filepath of the object image, needs to be in gray8.
11503
11504 @item threshold
11505 Detection threshold, default is 0.5.
11506
11507 @item mipmaps
11508 Number of mipmaps, default is 3.
11509
11510 @item xmin, ymin, xmax, ymax
11511 Specifies the rectangle in which to search.
11512 @end table
11513
11514 @subsection Examples
11515
11516 @itemize
11517 @item
11518 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
11519 @example
11520 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
11521 @end example
11522 @end itemize
11523
11524 @section floodfill
11525
11526 Flood area with values of same pixel components with another values.
11527
11528 It accepts the following options:
11529 @table @option
11530 @item x
11531 Set pixel x coordinate.
11532
11533 @item y
11534 Set pixel y coordinate.
11535
11536 @item s0
11537 Set source #0 component value.
11538
11539 @item s1
11540 Set source #1 component value.
11541
11542 @item s2
11543 Set source #2 component value.
11544
11545 @item s3
11546 Set source #3 component value.
11547
11548 @item d0
11549 Set destination #0 component value.
11550
11551 @item d1
11552 Set destination #1 component value.
11553
11554 @item d2
11555 Set destination #2 component value.
11556
11557 @item d3
11558 Set destination #3 component value.
11559 @end table
11560
11561 @anchor{format}
11562 @section format
11563
11564 Convert the input video to one of the specified pixel formats.
11565 Libavfilter will try to pick one that is suitable as input to
11566 the next filter.
11567
11568 It accepts the following parameters:
11569 @table @option
11570
11571 @item pix_fmts
11572 A '|'-separated list of pixel format names, such as
11573 "pix_fmts=yuv420p|monow|rgb24".
11574
11575 @end table
11576
11577 @subsection Examples
11578
11579 @itemize
11580 @item
11581 Convert the input video to the @var{yuv420p} format
11582 @example
11583 format=pix_fmts=yuv420p
11584 @end example
11585
11586 Convert the input video to any of the formats in the list
11587 @example
11588 format=pix_fmts=yuv420p|yuv444p|yuv410p
11589 @end example
11590 @end itemize
11591
11592 @anchor{fps}
11593 @section fps
11594
11595 Convert the video to specified constant frame rate by duplicating or dropping
11596 frames as necessary.
11597
11598 It accepts the following parameters:
11599 @table @option
11600
11601 @item fps
11602 The desired output frame rate. The default is @code{25}.
11603
11604 @item start_time
11605 Assume the first PTS should be the given value, in seconds. This allows for
11606 padding/trimming at the start of stream. By default, no assumption is made
11607 about the first frame's expected PTS, so no padding or trimming is done.
11608 For example, this could be set to 0 to pad the beginning with duplicates of
11609 the first frame if a video stream starts after the audio stream or to trim any
11610 frames with a negative PTS.
11611
11612 @item round
11613 Timestamp (PTS) rounding method.
11614
11615 Possible values are:
11616 @table @option
11617 @item zero
11618 round towards 0
11619 @item inf
11620 round away from 0
11621 @item down
11622 round towards -infinity
11623 @item up
11624 round towards +infinity
11625 @item near
11626 round to nearest
11627 @end table
11628 The default is @code{near}.
11629
11630 @item eof_action
11631 Action performed when reading the last frame.
11632
11633 Possible values are:
11634 @table @option
11635 @item round
11636 Use same timestamp rounding method as used for other frames.
11637 @item pass
11638 Pass through last frame if input duration has not been reached yet.
11639 @end table
11640 The default is @code{round}.
11641
11642 @end table
11643
11644 Alternatively, the options can be specified as a flat string:
11645 @var{fps}[:@var{start_time}[:@var{round}]].
11646
11647 See also the @ref{setpts} filter.
11648
11649 @subsection Examples
11650
11651 @itemize
11652 @item
11653 A typical usage in order to set the fps to 25:
11654 @example
11655 fps=fps=25
11656 @end example
11657
11658 @item
11659 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
11660 @example
11661 fps=fps=film:round=near
11662 @end example
11663 @end itemize
11664
11665 @section framepack
11666
11667 Pack two different video streams into a stereoscopic video, setting proper
11668 metadata on supported codecs. The two views should have the same size and
11669 framerate and processing will stop when the shorter video ends. Please note
11670 that you may conveniently adjust view properties with the @ref{scale} and
11671 @ref{fps} filters.
11672
11673 It accepts the following parameters:
11674 @table @option
11675
11676 @item format
11677 The desired packing format. Supported values are:
11678
11679 @table @option
11680
11681 @item sbs
11682 The views are next to each other (default).
11683
11684 @item tab
11685 The views are on top of each other.
11686
11687 @item lines
11688 The views are packed by line.
11689
11690 @item columns
11691 The views are packed by column.
11692
11693 @item frameseq
11694 The views are temporally interleaved.
11695
11696 @end table
11697
11698 @end table
11699
11700 Some examples:
11701
11702 @example
11703 # Convert left and right views into a frame-sequential video
11704 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
11705
11706 # Convert views into a side-by-side video with the same output resolution as the input
11707 ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT
11708 @end example
11709
11710 @section framerate
11711
11712 Change the frame rate by interpolating new video output frames from the source
11713 frames.
11714
11715 This filter is not designed to function correctly with interlaced media. If
11716 you wish to change the frame rate of interlaced media then you are required
11717 to deinterlace before this filter and re-interlace after this filter.
11718
11719 A description of the accepted options follows.
11720
11721 @table @option
11722 @item fps
11723 Specify the output frames per second. This option can also be specified
11724 as a value alone. The default is @code{50}.
11725
11726 @item interp_start
11727 Specify the start of a range where the output frame will be created as a
11728 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11729 the default is @code{15}.
11730
11731 @item interp_end
11732 Specify the end of a range where the output frame will be created as a
11733 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11734 the default is @code{240}.
11735
11736 @item scene
11737 Specify the level at which a scene change is detected as a value between
11738 0 and 100 to indicate a new scene; a low value reflects a low
11739 probability for the current frame to introduce a new scene, while a higher
11740 value means the current frame is more likely to be one.
11741 The default is @code{8.2}.
11742
11743 @item flags
11744 Specify flags influencing the filter process.
11745
11746 Available value for @var{flags} is:
11747
11748 @table @option
11749 @item scene_change_detect, scd
11750 Enable scene change detection using the value of the option @var{scene}.
11751 This flag is enabled by default.
11752 @end table
11753 @end table
11754
11755 @section framestep
11756
11757 Select one frame every N-th frame.
11758
11759 This filter accepts the following option:
11760 @table @option
11761 @item step
11762 Select frame after every @code{step} frames.
11763 Allowed values are positive integers higher than 0. Default value is @code{1}.
11764 @end table
11765
11766 @section freezedetect
11767
11768 Detect frozen video.
11769
11770 This filter logs a message and sets frame metadata when it detects that the
11771 input video has no significant change in content during a specified duration.
11772 Video freeze detection calculates the mean average absolute difference of all
11773 the components of video frames and compares it to a noise floor.
11774
11775 The printed times and duration are expressed in seconds. The
11776 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
11777 whose timestamp equals or exceeds the detection duration and it contains the
11778 timestamp of the first frame of the freeze. The
11779 @code{lavfi.freezedetect.freeze_duration} and
11780 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
11781 after the freeze.
11782
11783 The filter accepts the following options:
11784
11785 @table @option
11786 @item noise, n
11787 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
11788 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
11789 0.001.
11790
11791 @item duration, d
11792 Set freeze duration until notification (default is 2 seconds).
11793 @end table
11794
11795 @section freezeframes
11796
11797 Freeze video frames.
11798
11799 This filter freezes video frames using frame from 2nd input.
11800
11801 The filter accepts the following options:
11802
11803 @table @option
11804 @item first
11805 Set number of first frame from which to start freeze.
11806
11807 @item last
11808 Set number of last frame from which to end freeze.
11809
11810 @item replace
11811 Set number of frame from 2nd input which will be used instead of replaced frames.
11812 @end table
11813
11814 @anchor{frei0r}
11815 @section frei0r
11816
11817 Apply a frei0r effect to the input video.
11818
11819 To enable the compilation of this filter, you need to install the frei0r
11820 header and configure FFmpeg with @code{--enable-frei0r}.
11821
11822 It accepts the following parameters:
11823
11824 @table @option
11825
11826 @item filter_name
11827 The name of the frei0r effect to load. If the environment variable
11828 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
11829 directories specified by the colon-separated list in @env{FREI0R_PATH}.
11830 Otherwise, the standard frei0r paths are searched, in this order:
11831 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
11832 @file{/usr/lib/frei0r-1/}.
11833
11834 @item filter_params
11835 A '|'-separated list of parameters to pass to the frei0r effect.
11836
11837 @end table
11838
11839 A frei0r effect parameter can be a boolean (its value is either
11840 "y" or "n"), a double, a color (specified as
11841 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
11842 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
11843 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
11844 a position (specified as @var{X}/@var{Y}, where
11845 @var{X} and @var{Y} are floating point numbers) and/or a string.
11846
11847 The number and types of parameters depend on the loaded effect. If an
11848 effect parameter is not specified, the default value is set.
11849
11850 @subsection Examples
11851
11852 @itemize
11853 @item
11854 Apply the distort0r effect, setting the first two double parameters:
11855 @example
11856 frei0r=filter_name=distort0r:filter_params=0.5|0.01
11857 @end example
11858
11859 @item
11860 Apply the colordistance effect, taking a color as the first parameter:
11861 @example
11862 frei0r=colordistance:0.2/0.3/0.4
11863 frei0r=colordistance:violet
11864 frei0r=colordistance:0x112233
11865 @end example
11866
11867 @item
11868 Apply the perspective effect, specifying the top left and top right image
11869 positions:
11870 @example
11871 frei0r=perspective:0.2/0.2|0.8/0.2
11872 @end example
11873 @end itemize
11874
11875 For more information, see
11876 @url{http://frei0r.dyne.org}
11877
11878 @subsection Commands
11879
11880 This filter supports the @option{filter_params} option as @ref{commands}.
11881
11882 @section fspp
11883
11884 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
11885
11886 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
11887 processing filter, one of them is performed once per block, not per pixel.
11888 This allows for much higher speed.
11889
11890 The filter accepts the following options:
11891
11892 @table @option
11893 @item quality
11894 Set quality. This option defines the number of levels for averaging. It accepts
11895 an integer in the range 4-5. Default value is @code{4}.
11896
11897 @item qp
11898 Force a constant quantization parameter. It accepts an integer in range 0-63.
11899 If not set, the filter will use the QP from the video stream (if available).
11900
11901 @item strength
11902 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
11903 more details but also more artifacts, while higher values make the image smoother
11904 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
11905
11906 @item use_bframe_qp
11907 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
11908 option may cause flicker since the B-Frames have often larger QP. Default is
11909 @code{0} (not enabled).
11910
11911 @end table
11912
11913 @section gblur
11914
11915 Apply Gaussian blur filter.
11916
11917 The filter accepts the following options:
11918
11919 @table @option
11920 @item sigma
11921 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
11922
11923 @item steps
11924 Set number of steps for Gaussian approximation. Default is @code{1}.
11925
11926 @item planes
11927 Set which planes to filter. By default all planes are filtered.
11928
11929 @item sigmaV
11930 Set vertical sigma, if negative it will be same as @code{sigma}.
11931 Default is @code{-1}.
11932 @end table
11933
11934 @subsection Commands
11935 This filter supports same commands as options.
11936 The command accepts the same syntax of the corresponding option.
11937
11938 If the specified expression is not valid, it is kept at its current
11939 value.
11940
11941 @section geq
11942
11943 Apply generic equation to each pixel.
11944
11945 The filter accepts the following options:
11946
11947 @table @option
11948 @item lum_expr, lum
11949 Set the luminance expression.
11950 @item cb_expr, cb
11951 Set the chrominance blue expression.
11952 @item cr_expr, cr
11953 Set the chrominance red expression.
11954 @item alpha_expr, a
11955 Set the alpha expression.
11956 @item red_expr, r
11957 Set the red expression.
11958 @item green_expr, g
11959 Set the green expression.
11960 @item blue_expr, b
11961 Set the blue expression.
11962 @end table
11963
11964 The colorspace is selected according to the specified options. If one
11965 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
11966 options is specified, the filter will automatically select a YCbCr
11967 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
11968 @option{blue_expr} options is specified, it will select an RGB
11969 colorspace.
11970
11971 If one of the chrominance expression is not defined, it falls back on the other
11972 one. If no alpha expression is specified it will evaluate to opaque value.
11973 If none of chrominance expressions are specified, they will evaluate
11974 to the luminance expression.
11975
11976 The expressions can use the following variables and functions:
11977
11978 @table @option
11979 @item N
11980 The sequential number of the filtered frame, starting from @code{0}.
11981
11982 @item X
11983 @item Y
11984 The coordinates of the current sample.
11985
11986 @item W
11987 @item H
11988 The width and height of the image.
11989
11990 @item SW
11991 @item SH
11992 Width and height scale depending on the currently filtered plane. It is the
11993 ratio between the corresponding luma plane number of pixels and the current
11994 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
11995 @code{0.5,0.5} for chroma planes.
11996
11997 @item T
11998 Time of the current frame, expressed in seconds.
11999
12000 @item p(x, y)
12001 Return the value of the pixel at location (@var{x},@var{y}) of the current
12002 plane.
12003
12004 @item lum(x, y)
12005 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
12006 plane.
12007
12008 @item cb(x, y)
12009 Return the value of the pixel at location (@var{x},@var{y}) of the
12010 blue-difference chroma plane. Return 0 if there is no such plane.
12011
12012 @item cr(x, y)
12013 Return the value of the pixel at location (@var{x},@var{y}) of the
12014 red-difference chroma plane. Return 0 if there is no such plane.
12015
12016 @item r(x, y)
12017 @item g(x, y)
12018 @item b(x, y)
12019 Return the value of the pixel at location (@var{x},@var{y}) of the
12020 red/green/blue component. Return 0 if there is no such component.
12021
12022 @item alpha(x, y)
12023 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
12024 plane. Return 0 if there is no such plane.
12025
12026 @item psum(x,y), lumsum(x, y), cbsum(x,y), crsum(x,y), rsum(x,y), gsum(x,y), bsum(x,y), alphasum(x,y)
12027 Sum of sample values in the rectangle from (0,0) to (x,y), this allows obtaining
12028 sums of samples within a rectangle. See the functions without the sum postfix.
12029
12030 @item interpolation
12031 Set one of interpolation methods:
12032 @table @option
12033 @item nearest, n
12034 @item bilinear, b
12035 @end table
12036 Default is bilinear.
12037 @end table
12038
12039 For functions, if @var{x} and @var{y} are outside the area, the value will be
12040 automatically clipped to the closer edge.
12041
12042 Please note that this filter can use multiple threads in which case each slice
12043 will have its own expression state. If you want to use only a single expression
12044 state because your expressions depend on previous state then you should limit
12045 the number of filter threads to 1.
12046
12047 @subsection Examples
12048
12049 @itemize
12050 @item
12051 Flip the image horizontally:
12052 @example
12053 geq=p(W-X\,Y)
12054 @end example
12055
12056 @item
12057 Generate a bidimensional sine wave, with angle @code{PI/3} and a
12058 wavelength of 100 pixels:
12059 @example
12060 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
12061 @end example
12062
12063 @item
12064 Generate a fancy enigmatic moving light:
12065 @example
12066 nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
12067 @end example
12068
12069 @item
12070 Generate a quick emboss effect:
12071 @example
12072 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
12073 @end example
12074
12075 @item
12076 Modify RGB components depending on pixel position:
12077 @example
12078 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
12079 @end example
12080
12081 @item
12082 Create a radial gradient that is the same size as the input (also see
12083 the @ref{vignette} filter):
12084 @example
12085 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
12086 @end example
12087 @end itemize
12088
12089 @section gradfun
12090
12091 Fix the banding artifacts that are sometimes introduced into nearly flat
12092 regions by truncation to 8-bit color depth.
12093 Interpolate the gradients that should go where the bands are, and
12094 dither them.
12095
12096 It is designed for playback only.  Do not use it prior to
12097 lossy compression, because compression tends to lose the dither and
12098 bring back the bands.
12099
12100 It accepts the following parameters:
12101
12102 @table @option
12103
12104 @item strength
12105 The maximum amount by which the filter will change any one pixel. This is also
12106 the threshold for detecting nearly flat regions. Acceptable values range from
12107 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
12108 valid range.
12109
12110 @item radius
12111 The neighborhood to fit the gradient to. A larger radius makes for smoother
12112 gradients, but also prevents the filter from modifying the pixels near detailed
12113 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
12114 values will be clipped to the valid range.
12115
12116 @end table
12117
12118 Alternatively, the options can be specified as a flat string:
12119 @var{strength}[:@var{radius}]
12120
12121 @subsection Examples
12122
12123 @itemize
12124 @item
12125 Apply the filter with a @code{3.5} strength and radius of @code{8}:
12126 @example
12127 gradfun=3.5:8
12128 @end example
12129
12130 @item
12131 Specify radius, omitting the strength (which will fall-back to the default
12132 value):
12133 @example
12134 gradfun=radius=8
12135 @end example
12136
12137 @end itemize
12138
12139 @anchor{graphmonitor}
12140 @section graphmonitor
12141 Show various filtergraph stats.
12142
12143 With this filter one can debug complete filtergraph.
12144 Especially issues with links filling with queued frames.
12145
12146 The filter accepts the following options:
12147
12148 @table @option
12149 @item size, s
12150 Set video output size. Default is @var{hd720}.
12151
12152 @item opacity, o
12153 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
12154
12155 @item mode, m
12156 Set output mode, can be @var{fulll} or @var{compact}.
12157 In @var{compact} mode only filters with some queued frames have displayed stats.
12158
12159 @item flags, f
12160 Set flags which enable which stats are shown in video.
12161
12162 Available values for flags are:
12163 @table @samp
12164 @item queue
12165 Display number of queued frames in each link.
12166
12167 @item frame_count_in
12168 Display number of frames taken from filter.
12169
12170 @item frame_count_out
12171 Display number of frames given out from filter.
12172
12173 @item pts
12174 Display current filtered frame pts.
12175
12176 @item time
12177 Display current filtered frame time.
12178
12179 @item timebase
12180 Display time base for filter link.
12181
12182 @item format
12183 Display used format for filter link.
12184
12185 @item size
12186 Display video size or number of audio channels in case of audio used by filter link.
12187
12188 @item rate
12189 Display video frame rate or sample rate in case of audio used by filter link.
12190
12191 @item eof
12192 Display link output status.
12193 @end table
12194
12195 @item rate, r
12196 Set upper limit for video rate of output stream, Default value is @var{25}.
12197 This guarantee that output video frame rate will not be higher than this value.
12198 @end table
12199
12200 @section greyedge
12201 A color constancy variation filter which estimates scene illumination via grey edge algorithm
12202 and corrects the scene colors accordingly.
12203
12204 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
12205
12206 The filter accepts the following options:
12207
12208 @table @option
12209 @item difford
12210 The order of differentiation to be applied on the scene. Must be chosen in the range
12211 [0,2] and default value is 1.
12212
12213 @item minknorm
12214 The Minkowski parameter to be used for calculating the Minkowski distance. Must
12215 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
12216 max value instead of calculating Minkowski distance.
12217
12218 @item sigma
12219 The standard deviation of Gaussian blur to be applied on the scene. Must be
12220 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
12221 can't be equal to 0 if @var{difford} is greater than 0.
12222 @end table
12223
12224 @subsection Examples
12225 @itemize
12226
12227 @item
12228 Grey Edge:
12229 @example
12230 greyedge=difford=1:minknorm=5:sigma=2
12231 @end example
12232
12233 @item
12234 Max Edge:
12235 @example
12236 greyedge=difford=1:minknorm=0:sigma=2
12237 @end example
12238
12239 @end itemize
12240
12241 @anchor{haldclut}
12242 @section haldclut
12243
12244 Apply a Hald CLUT to a video stream.
12245
12246 First input is the video stream to process, and second one is the Hald CLUT.
12247 The Hald CLUT input can be a simple picture or a complete video stream.
12248
12249 The filter accepts the following options:
12250
12251 @table @option
12252 @item shortest
12253 Force termination when the shortest input terminates. Default is @code{0}.
12254 @item repeatlast
12255 Continue applying the last CLUT after the end of the stream. A value of
12256 @code{0} disable the filter after the last frame of the CLUT is reached.
12257 Default is @code{1}.
12258 @end table
12259
12260 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
12261 filters share the same internals).
12262
12263 This filter also supports the @ref{framesync} options.
12264
12265 More information about the Hald CLUT can be found on Eskil Steenberg's website
12266 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
12267
12268 @subsection Workflow examples
12269
12270 @subsubsection Hald CLUT video stream
12271
12272 Generate an identity Hald CLUT stream altered with various effects:
12273 @example
12274 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -t 10 -c:v ffv1 clut.nut
12275 @end example
12276
12277 Note: make sure you use a lossless codec.
12278
12279 Then use it with @code{haldclut} to apply it on some random stream:
12280 @example
12281 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
12282 @end example
12283
12284 The Hald CLUT will be applied to the 10 first seconds (duration of
12285 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
12286 to the remaining frames of the @code{mandelbrot} stream.
12287
12288 @subsubsection Hald CLUT with preview
12289
12290 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
12291 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
12292 biggest possible square starting at the top left of the picture. The remaining
12293 padding pixels (bottom or right) will be ignored. This area can be used to add
12294 a preview of the Hald CLUT.
12295
12296 Typically, the following generated Hald CLUT will be supported by the
12297 @code{haldclut} filter:
12298
12299 @example
12300 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
12301    pad=iw+320 [padded_clut];
12302    smptebars=s=320x256, split [a][b];
12303    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
12304    [main][b] overlay=W-320" -frames:v 1 clut.png
12305 @end example
12306
12307 It contains the original and a preview of the effect of the CLUT: SMPTE color
12308 bars are displayed on the right-top, and below the same color bars processed by
12309 the color changes.
12310
12311 Then, the effect of this Hald CLUT can be visualized with:
12312 @example
12313 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
12314 @end example
12315
12316 @section hflip
12317
12318 Flip the input video horizontally.
12319
12320 For example, to horizontally flip the input video with @command{ffmpeg}:
12321 @example
12322 ffmpeg -i in.avi -vf "hflip" out.avi
12323 @end example
12324
12325 @section histeq
12326 This filter applies a global color histogram equalization on a
12327 per-frame basis.
12328
12329 It can be used to correct video that has a compressed range of pixel
12330 intensities.  The filter redistributes the pixel intensities to
12331 equalize their distribution across the intensity range. It may be
12332 viewed as an "automatically adjusting contrast filter". This filter is
12333 useful only for correcting degraded or poorly captured source
12334 video.
12335
12336 The filter accepts the following options:
12337
12338 @table @option
12339 @item strength
12340 Determine the amount of equalization to be applied.  As the strength
12341 is reduced, the distribution of pixel intensities more-and-more
12342 approaches that of the input frame. The value must be a float number
12343 in the range [0,1] and defaults to 0.200.
12344
12345 @item intensity
12346 Set the maximum intensity that can generated and scale the output
12347 values appropriately.  The strength should be set as desired and then
12348 the intensity can be limited if needed to avoid washing-out. The value
12349 must be a float number in the range [0,1] and defaults to 0.210.
12350
12351 @item antibanding
12352 Set the antibanding level. If enabled the filter will randomly vary
12353 the luminance of output pixels by a small amount to avoid banding of
12354 the histogram. Possible values are @code{none}, @code{weak} or
12355 @code{strong}. It defaults to @code{none}.
12356 @end table
12357
12358 @anchor{histogram}
12359 @section histogram
12360
12361 Compute and draw a color distribution histogram for the input video.
12362
12363 The computed histogram is a representation of the color component
12364 distribution in an image.
12365
12366 Standard histogram displays the color components distribution in an image.
12367 Displays color graph for each color component. Shows distribution of
12368 the Y, U, V, A or R, G, B components, depending on input format, in the
12369 current frame. Below each graph a color component scale meter is shown.
12370
12371 The filter accepts the following options:
12372
12373 @table @option
12374 @item level_height
12375 Set height of level. Default value is @code{200}.
12376 Allowed range is [50, 2048].
12377
12378 @item scale_height
12379 Set height of color scale. Default value is @code{12}.
12380 Allowed range is [0, 40].
12381
12382 @item display_mode
12383 Set display mode.
12384 It accepts the following values:
12385 @table @samp
12386 @item stack
12387 Per color component graphs are placed below each other.
12388
12389 @item parade
12390 Per color component graphs are placed side by side.
12391
12392 @item overlay
12393 Presents information identical to that in the @code{parade}, except
12394 that the graphs representing color components are superimposed directly
12395 over one another.
12396 @end table
12397 Default is @code{stack}.
12398
12399 @item levels_mode
12400 Set mode. Can be either @code{linear}, or @code{logarithmic}.
12401 Default is @code{linear}.
12402
12403 @item components
12404 Set what color components to display.
12405 Default is @code{7}.
12406
12407 @item fgopacity
12408 Set foreground opacity. Default is @code{0.7}.
12409
12410 @item bgopacity
12411 Set background opacity. Default is @code{0.5}.
12412 @end table
12413
12414 @subsection Examples
12415
12416 @itemize
12417
12418 @item
12419 Calculate and draw histogram:
12420 @example
12421 ffplay -i input -vf histogram
12422 @end example
12423
12424 @end itemize
12425
12426 @anchor{hqdn3d}
12427 @section hqdn3d
12428
12429 This is a high precision/quality 3d denoise filter. It aims to reduce
12430 image noise, producing smooth images and making still images really
12431 still. It should enhance compressibility.
12432
12433 It accepts the following optional parameters:
12434
12435 @table @option
12436 @item luma_spatial
12437 A non-negative floating point number which specifies spatial luma strength.
12438 It defaults to 4.0.
12439
12440 @item chroma_spatial
12441 A non-negative floating point number which specifies spatial chroma strength.
12442 It defaults to 3.0*@var{luma_spatial}/4.0.
12443
12444 @item luma_tmp
12445 A floating point number which specifies luma temporal strength. It defaults to
12446 6.0*@var{luma_spatial}/4.0.
12447
12448 @item chroma_tmp
12449 A floating point number which specifies chroma temporal strength. It defaults to
12450 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
12451 @end table
12452
12453 @subsection Commands
12454 This filter supports same @ref{commands} as options.
12455 The command accepts the same syntax of the corresponding option.
12456
12457 If the specified expression is not valid, it is kept at its current
12458 value.
12459
12460 @anchor{hwdownload}
12461 @section hwdownload
12462
12463 Download hardware frames to system memory.
12464
12465 The input must be in hardware frames, and the output a non-hardware format.
12466 Not all formats will be supported on the output - it may be necessary to insert
12467 an additional @option{format} filter immediately following in the graph to get
12468 the output in a supported format.
12469
12470 @section hwmap
12471
12472 Map hardware frames to system memory or to another device.
12473
12474 This filter has several different modes of operation; which one is used depends
12475 on the input and output formats:
12476 @itemize
12477 @item
12478 Hardware frame input, normal frame output
12479
12480 Map the input frames to system memory and pass them to the output.  If the
12481 original hardware frame is later required (for example, after overlaying
12482 something else on part of it), the @option{hwmap} filter can be used again
12483 in the next mode to retrieve it.
12484 @item
12485 Normal frame input, hardware frame output
12486
12487 If the input is actually a software-mapped hardware frame, then unmap it -
12488 that is, return the original hardware frame.
12489
12490 Otherwise, a device must be provided.  Create new hardware surfaces on that
12491 device for the output, then map them back to the software format at the input
12492 and give those frames to the preceding filter.  This will then act like the
12493 @option{hwupload} filter, but may be able to avoid an additional copy when
12494 the input is already in a compatible format.
12495 @item
12496 Hardware frame input and output
12497
12498 A device must be supplied for the output, either directly or with the
12499 @option{derive_device} option.  The input and output devices must be of
12500 different types and compatible - the exact meaning of this is
12501 system-dependent, but typically it means that they must refer to the same
12502 underlying hardware context (for example, refer to the same graphics card).
12503
12504 If the input frames were originally created on the output device, then unmap
12505 to retrieve the original frames.
12506
12507 Otherwise, map the frames to the output device - create new hardware frames
12508 on the output corresponding to the frames on the input.
12509 @end itemize
12510
12511 The following additional parameters are accepted:
12512
12513 @table @option
12514 @item mode
12515 Set the frame mapping mode.  Some combination of:
12516 @table @var
12517 @item read
12518 The mapped frame should be readable.
12519 @item write
12520 The mapped frame should be writeable.
12521 @item overwrite
12522 The mapping will always overwrite the entire frame.
12523
12524 This may improve performance in some cases, as the original contents of the
12525 frame need not be loaded.
12526 @item direct
12527 The mapping must not involve any copying.
12528
12529 Indirect mappings to copies of frames are created in some cases where either
12530 direct mapping is not possible or it would have unexpected properties.
12531 Setting this flag ensures that the mapping is direct and will fail if that is
12532 not possible.
12533 @end table
12534 Defaults to @var{read+write} if not specified.
12535
12536 @item derive_device @var{type}
12537 Rather than using the device supplied at initialisation, instead derive a new
12538 device of type @var{type} from the device the input frames exist on.
12539
12540 @item reverse
12541 In a hardware to hardware mapping, map in reverse - create frames in the sink
12542 and map them back to the source.  This may be necessary in some cases where
12543 a mapping in one direction is required but only the opposite direction is
12544 supported by the devices being used.
12545
12546 This option is dangerous - it may break the preceding filter in undefined
12547 ways if there are any additional constraints on that filter's output.
12548 Do not use it without fully understanding the implications of its use.
12549 @end table
12550
12551 @anchor{hwupload}
12552 @section hwupload
12553
12554 Upload system memory frames to hardware surfaces.
12555
12556 The device to upload to must be supplied when the filter is initialised.  If
12557 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
12558 option or with the @option{derive_device} option.  The input and output devices
12559 must be of different types and compatible - the exact meaning of this is
12560 system-dependent, but typically it means that they must refer to the same
12561 underlying hardware context (for example, refer to the same graphics card).
12562
12563 The following additional parameters are accepted:
12564
12565 @table @option
12566 @item derive_device @var{type}
12567 Rather than using the device supplied at initialisation, instead derive a new
12568 device of type @var{type} from the device the input frames exist on.
12569 @end table
12570
12571 @anchor{hwupload_cuda}
12572 @section hwupload_cuda
12573
12574 Upload system memory frames to a CUDA device.
12575
12576 It accepts the following optional parameters:
12577
12578 @table @option
12579 @item device
12580 The number of the CUDA device to use
12581 @end table
12582
12583 @section hqx
12584
12585 Apply a high-quality magnification filter designed for pixel art. This filter
12586 was originally created by Maxim Stepin.
12587
12588 It accepts the following option:
12589
12590 @table @option
12591 @item n
12592 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
12593 @code{hq3x} and @code{4} for @code{hq4x}.
12594 Default is @code{3}.
12595 @end table
12596
12597 @section hstack
12598 Stack input videos horizontally.
12599
12600 All streams must be of same pixel format and of same height.
12601
12602 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
12603 to create same output.
12604
12605 The filter accepts the following option:
12606
12607 @table @option
12608 @item inputs
12609 Set number of input streams. Default is 2.
12610
12611 @item shortest
12612 If set to 1, force the output to terminate when the shortest input
12613 terminates. Default value is 0.
12614 @end table
12615
12616 @section hue
12617
12618 Modify the hue and/or the saturation of the input.
12619
12620 It accepts the following parameters:
12621
12622 @table @option
12623 @item h
12624 Specify the hue angle as a number of degrees. It accepts an expression,
12625 and defaults to "0".
12626
12627 @item s
12628 Specify the saturation in the [-10,10] range. It accepts an expression and
12629 defaults to "1".
12630
12631 @item H
12632 Specify the hue angle as a number of radians. It accepts an
12633 expression, and defaults to "0".
12634
12635 @item b
12636 Specify the brightness in the [-10,10] range. It accepts an expression and
12637 defaults to "0".
12638 @end table
12639
12640 @option{h} and @option{H} are mutually exclusive, and can't be
12641 specified at the same time.
12642
12643 The @option{b}, @option{h}, @option{H} and @option{s} option values are
12644 expressions containing the following constants:
12645
12646 @table @option
12647 @item n
12648 frame count of the input frame starting from 0
12649
12650 @item pts
12651 presentation timestamp of the input frame expressed in time base units
12652
12653 @item r
12654 frame rate of the input video, NAN if the input frame rate is unknown
12655
12656 @item t
12657 timestamp expressed in seconds, NAN if the input timestamp is unknown
12658
12659 @item tb
12660 time base of the input video
12661 @end table
12662
12663 @subsection Examples
12664
12665 @itemize
12666 @item
12667 Set the hue to 90 degrees and the saturation to 1.0:
12668 @example
12669 hue=h=90:s=1
12670 @end example
12671
12672 @item
12673 Same command but expressing the hue in radians:
12674 @example
12675 hue=H=PI/2:s=1
12676 @end example
12677
12678 @item
12679 Rotate hue and make the saturation swing between 0
12680 and 2 over a period of 1 second:
12681 @example
12682 hue="H=2*PI*t: s=sin(2*PI*t)+1"
12683 @end example
12684
12685 @item
12686 Apply a 3 seconds saturation fade-in effect starting at 0:
12687 @example
12688 hue="s=min(t/3\,1)"
12689 @end example
12690
12691 The general fade-in expression can be written as:
12692 @example
12693 hue="s=min(0\, max((t-START)/DURATION\, 1))"
12694 @end example
12695
12696 @item
12697 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
12698 @example
12699 hue="s=max(0\, min(1\, (8-t)/3))"
12700 @end example
12701
12702 The general fade-out expression can be written as:
12703 @example
12704 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
12705 @end example
12706
12707 @end itemize
12708
12709 @subsection Commands
12710
12711 This filter supports the following commands:
12712 @table @option
12713 @item b
12714 @item s
12715 @item h
12716 @item H
12717 Modify the hue and/or the saturation and/or brightness of the input video.
12718 The command accepts the same syntax of the corresponding option.
12719
12720 If the specified expression is not valid, it is kept at its current
12721 value.
12722 @end table
12723
12724 @section hysteresis
12725
12726 Grow first stream into second stream by connecting components.
12727 This makes it possible to build more robust edge masks.
12728
12729 This filter accepts the following options:
12730
12731 @table @option
12732 @item planes
12733 Set which planes will be processed as bitmap, unprocessed planes will be
12734 copied from first stream.
12735 By default value 0xf, all planes will be processed.
12736
12737 @item threshold
12738 Set threshold which is used in filtering. If pixel component value is higher than
12739 this value filter algorithm for connecting components is activated.
12740 By default value is 0.
12741 @end table
12742
12743 The @code{hysteresis} filter also supports the @ref{framesync} options.
12744
12745 @section idet
12746
12747 Detect video interlacing type.
12748
12749 This filter tries to detect if the input frames are interlaced, progressive,
12750 top or bottom field first. It will also try to detect fields that are
12751 repeated between adjacent frames (a sign of telecine).
12752
12753 Single frame detection considers only immediately adjacent frames when classifying each frame.
12754 Multiple frame detection incorporates the classification history of previous frames.
12755
12756 The filter will log these metadata values:
12757
12758 @table @option
12759 @item single.current_frame
12760 Detected type of current frame using single-frame detection. One of:
12761 ``tff'' (top field first), ``bff'' (bottom field first),
12762 ``progressive'', or ``undetermined''
12763
12764 @item single.tff
12765 Cumulative number of frames detected as top field first using single-frame detection.
12766
12767 @item multiple.tff
12768 Cumulative number of frames detected as top field first using multiple-frame detection.
12769
12770 @item single.bff
12771 Cumulative number of frames detected as bottom field first using single-frame detection.
12772
12773 @item multiple.current_frame
12774 Detected type of current frame using multiple-frame detection. One of:
12775 ``tff'' (top field first), ``bff'' (bottom field first),
12776 ``progressive'', or ``undetermined''
12777
12778 @item multiple.bff
12779 Cumulative number of frames detected as bottom field first using multiple-frame detection.
12780
12781 @item single.progressive
12782 Cumulative number of frames detected as progressive using single-frame detection.
12783
12784 @item multiple.progressive
12785 Cumulative number of frames detected as progressive using multiple-frame detection.
12786
12787 @item single.undetermined
12788 Cumulative number of frames that could not be classified using single-frame detection.
12789
12790 @item multiple.undetermined
12791 Cumulative number of frames that could not be classified using multiple-frame detection.
12792
12793 @item repeated.current_frame
12794 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
12795
12796 @item repeated.neither
12797 Cumulative number of frames with no repeated field.
12798
12799 @item repeated.top
12800 Cumulative number of frames with the top field repeated from the previous frame's top field.
12801
12802 @item repeated.bottom
12803 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
12804 @end table
12805
12806 The filter accepts the following options:
12807
12808 @table @option
12809 @item intl_thres
12810 Set interlacing threshold.
12811 @item prog_thres
12812 Set progressive threshold.
12813 @item rep_thres
12814 Threshold for repeated field detection.
12815 @item half_life
12816 Number of frames after which a given frame's contribution to the
12817 statistics is halved (i.e., it contributes only 0.5 to its
12818 classification). The default of 0 means that all frames seen are given
12819 full weight of 1.0 forever.
12820 @item analyze_interlaced_flag
12821 When this is not 0 then idet will use the specified number of frames to determine
12822 if the interlaced flag is accurate, it will not count undetermined frames.
12823 If the flag is found to be accurate it will be used without any further
12824 computations, if it is found to be inaccurate it will be cleared without any
12825 further computations. This allows inserting the idet filter as a low computational
12826 method to clean up the interlaced flag
12827 @end table
12828
12829 @section il
12830
12831 Deinterleave or interleave fields.
12832
12833 This filter allows one to process interlaced images fields without
12834 deinterlacing them. Deinterleaving splits the input frame into 2
12835 fields (so called half pictures). Odd lines are moved to the top
12836 half of the output image, even lines to the bottom half.
12837 You can process (filter) them independently and then re-interleave them.
12838
12839 The filter accepts the following options:
12840
12841 @table @option
12842 @item luma_mode, l
12843 @item chroma_mode, c
12844 @item alpha_mode, a
12845 Available values for @var{luma_mode}, @var{chroma_mode} and
12846 @var{alpha_mode} are:
12847
12848 @table @samp
12849 @item none
12850 Do nothing.
12851
12852 @item deinterleave, d
12853 Deinterleave fields, placing one above the other.
12854
12855 @item interleave, i
12856 Interleave fields. Reverse the effect of deinterleaving.
12857 @end table
12858 Default value is @code{none}.
12859
12860 @item luma_swap, ls
12861 @item chroma_swap, cs
12862 @item alpha_swap, as
12863 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
12864 @end table
12865
12866 @subsection Commands
12867
12868 This filter supports the all above options as @ref{commands}.
12869
12870 @section inflate
12871
12872 Apply inflate effect to the video.
12873
12874 This filter replaces the pixel by the local(3x3) average by taking into account
12875 only values higher than the pixel.
12876
12877 It accepts the following options:
12878
12879 @table @option
12880 @item threshold0
12881 @item threshold1
12882 @item threshold2
12883 @item threshold3
12884 Limit the maximum change for each plane, default is 65535.
12885 If 0, plane will remain unchanged.
12886 @end table
12887
12888 @subsection Commands
12889
12890 This filter supports the all above options as @ref{commands}.
12891
12892 @section interlace
12893
12894 Simple interlacing filter from progressive contents. This interleaves upper (or
12895 lower) lines from odd frames with lower (or upper) lines from even frames,
12896 halving the frame rate and preserving image height.
12897
12898 @example
12899    Original        Original             New Frame
12900    Frame 'j'      Frame 'j+1'             (tff)
12901   ==========      ===========       ==================
12902     Line 0  -------------------->    Frame 'j' Line 0
12903     Line 1          Line 1  ---->   Frame 'j+1' Line 1
12904     Line 2 --------------------->    Frame 'j' Line 2
12905     Line 3          Line 3  ---->   Frame 'j+1' Line 3
12906      ...             ...                   ...
12907 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
12908 @end example
12909
12910 It accepts the following optional parameters:
12911
12912 @table @option
12913 @item scan
12914 This determines whether the interlaced frame is taken from the even
12915 (tff - default) or odd (bff) lines of the progressive frame.
12916
12917 @item lowpass
12918 Vertical lowpass filter to avoid twitter interlacing and
12919 reduce moire patterns.
12920
12921 @table @samp
12922 @item 0, off
12923 Disable vertical lowpass filter
12924
12925 @item 1, linear
12926 Enable linear filter (default)
12927
12928 @item 2, complex
12929 Enable complex filter. This will slightly less reduce twitter and moire
12930 but better retain detail and subjective sharpness impression.
12931
12932 @end table
12933 @end table
12934
12935 @section kerndeint
12936
12937 Deinterlace input video by applying Donald Graft's adaptive kernel
12938 deinterling. Work on interlaced parts of a video to produce
12939 progressive frames.
12940
12941 The description of the accepted parameters follows.
12942
12943 @table @option
12944 @item thresh
12945 Set the threshold which affects the filter's tolerance when
12946 determining if a pixel line must be processed. It must be an integer
12947 in the range [0,255] and defaults to 10. A value of 0 will result in
12948 applying the process on every pixels.
12949
12950 @item map
12951 Paint pixels exceeding the threshold value to white if set to 1.
12952 Default is 0.
12953
12954 @item order
12955 Set the fields order. Swap fields if set to 1, leave fields alone if
12956 0. Default is 0.
12957
12958 @item sharp
12959 Enable additional sharpening if set to 1. Default is 0.
12960
12961 @item twoway
12962 Enable twoway sharpening if set to 1. Default is 0.
12963 @end table
12964
12965 @subsection Examples
12966
12967 @itemize
12968 @item
12969 Apply default values:
12970 @example
12971 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
12972 @end example
12973
12974 @item
12975 Enable additional sharpening:
12976 @example
12977 kerndeint=sharp=1
12978 @end example
12979
12980 @item
12981 Paint processed pixels in white:
12982 @example
12983 kerndeint=map=1
12984 @end example
12985 @end itemize
12986
12987 @section lagfun
12988
12989 Slowly update darker pixels.
12990
12991 This filter makes short flashes of light appear longer.
12992 This filter accepts the following options:
12993
12994 @table @option
12995 @item decay
12996 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
12997
12998 @item planes
12999 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
13000 @end table
13001
13002 @section lenscorrection
13003
13004 Correct radial lens distortion
13005
13006 This filter can be used to correct for radial distortion as can result from the use
13007 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
13008 one can use tools available for example as part of opencv or simply trial-and-error.
13009 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
13010 and extract the k1 and k2 coefficients from the resulting matrix.
13011
13012 Note that effectively the same filter is available in the open-source tools Krita and
13013 Digikam from the KDE project.
13014
13015 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
13016 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
13017 brightness distribution, so you may want to use both filters together in certain
13018 cases, though you will have to take care of ordering, i.e. whether vignetting should
13019 be applied before or after lens correction.
13020
13021 @subsection Options
13022
13023 The filter accepts the following options:
13024
13025 @table @option
13026 @item cx
13027 Relative x-coordinate of the focal point of the image, and thereby the center of the
13028 distortion. This value has a range [0,1] and is expressed as fractions of the image
13029 width. Default is 0.5.
13030 @item cy
13031 Relative y-coordinate of the focal point of the image, and thereby the center of the
13032 distortion. This value has a range [0,1] and is expressed as fractions of the image
13033 height. Default is 0.5.
13034 @item k1
13035 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
13036 no correction. Default is 0.
13037 @item k2
13038 Coefficient of the double quadratic correction term. This value has a range [-1,1].
13039 0 means no correction. Default is 0.
13040 @end table
13041
13042 The formula that generates the correction is:
13043
13044 @var{r_src} = @var{r_tgt} * (1 + @var{k1} * (@var{r_tgt} / @var{r_0})^2 + @var{k2} * (@var{r_tgt} / @var{r_0})^4)
13045
13046 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
13047 distances from the focal point in the source and target images, respectively.
13048
13049 @section lensfun
13050
13051 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
13052
13053 The @code{lensfun} filter requires the camera make, camera model, and lens model
13054 to apply the lens correction. The filter will load the lensfun database and
13055 query it to find the corresponding camera and lens entries in the database. As
13056 long as these entries can be found with the given options, the filter can
13057 perform corrections on frames. Note that incomplete strings will result in the
13058 filter choosing the best match with the given options, and the filter will
13059 output the chosen camera and lens models (logged with level "info"). You must
13060 provide the make, camera model, and lens model as they are required.
13061
13062 The filter accepts the following options:
13063
13064 @table @option
13065 @item make
13066 The make of the camera (for example, "Canon"). This option is required.
13067
13068 @item model
13069 The model of the camera (for example, "Canon EOS 100D"). This option is
13070 required.
13071
13072 @item lens_model
13073 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
13074 option is required.
13075
13076 @item mode
13077 The type of correction to apply. The following values are valid options:
13078
13079 @table @samp
13080 @item vignetting
13081 Enables fixing lens vignetting.
13082
13083 @item geometry
13084 Enables fixing lens geometry. This is the default.
13085
13086 @item subpixel
13087 Enables fixing chromatic aberrations.
13088
13089 @item vig_geo
13090 Enables fixing lens vignetting and lens geometry.
13091
13092 @item vig_subpixel
13093 Enables fixing lens vignetting and chromatic aberrations.
13094
13095 @item distortion
13096 Enables fixing both lens geometry and chromatic aberrations.
13097
13098 @item all
13099 Enables all possible corrections.
13100
13101 @end table
13102 @item focal_length
13103 The focal length of the image/video (zoom; expected constant for video). For
13104 example, a 18--55mm lens has focal length range of [18--55], so a value in that
13105 range should be chosen when using that lens. Default 18.
13106
13107 @item aperture
13108 The aperture of the image/video (expected constant for video). Note that
13109 aperture is only used for vignetting correction. Default 3.5.
13110
13111 @item focus_distance
13112 The focus distance of the image/video (expected constant for video). Note that
13113 focus distance is only used for vignetting and only slightly affects the
13114 vignetting correction process. If unknown, leave it at the default value (which
13115 is 1000).
13116
13117 @item scale
13118 The scale factor which is applied after transformation. After correction the
13119 video is no longer necessarily rectangular. This parameter controls how much of
13120 the resulting image is visible. The value 0 means that a value will be chosen
13121 automatically such that there is little or no unmapped area in the output
13122 image. 1.0 means that no additional scaling is done. Lower values may result
13123 in more of the corrected image being visible, while higher values may avoid
13124 unmapped areas in the output.
13125
13126 @item target_geometry
13127 The target geometry of the output image/video. The following values are valid
13128 options:
13129
13130 @table @samp
13131 @item rectilinear (default)
13132 @item fisheye
13133 @item panoramic
13134 @item equirectangular
13135 @item fisheye_orthographic
13136 @item fisheye_stereographic
13137 @item fisheye_equisolid
13138 @item fisheye_thoby
13139 @end table
13140 @item reverse
13141 Apply the reverse of image correction (instead of correcting distortion, apply
13142 it).
13143
13144 @item interpolation
13145 The type of interpolation used when correcting distortion. The following values
13146 are valid options:
13147
13148 @table @samp
13149 @item nearest
13150 @item linear (default)
13151 @item lanczos
13152 @end table
13153 @end table
13154
13155 @subsection Examples
13156
13157 @itemize
13158 @item
13159 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
13160 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
13161 aperture of "8.0".
13162
13163 @example
13164 ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8 -c:v h264 -b:v 8000k output.mov
13165 @end example
13166
13167 @item
13168 Apply the same as before, but only for the first 5 seconds of video.
13169
13170 @example
13171 ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8:enable='lte(t\,5)' -c:v h264 -b:v 8000k output.mov
13172 @end example
13173
13174 @end itemize
13175
13176 @section libvmaf
13177
13178 Obtain the VMAF (Video Multi-Method Assessment Fusion)
13179 score between two input videos.
13180
13181 The obtained VMAF score is printed through the logging system.
13182
13183 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
13184 After installing the library it can be enabled using:
13185 @code{./configure --enable-libvmaf}.
13186 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
13187
13188 The filter has following options:
13189
13190 @table @option
13191 @item model_path
13192 Set the model path which is to be used for SVM.
13193 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
13194
13195 @item log_path
13196 Set the file path to be used to store logs.
13197
13198 @item log_fmt
13199 Set the format of the log file (csv, json or xml).
13200
13201 @item enable_transform
13202 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
13203 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
13204 Default value: @code{false}
13205
13206 @item phone_model
13207 Invokes the phone model which will generate VMAF scores higher than in the
13208 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
13209 Default value: @code{false}
13210
13211 @item psnr
13212 Enables computing psnr along with vmaf.
13213 Default value: @code{false}
13214
13215 @item ssim
13216 Enables computing ssim along with vmaf.
13217 Default value: @code{false}
13218
13219 @item ms_ssim
13220 Enables computing ms_ssim along with vmaf.
13221 Default value: @code{false}
13222
13223 @item pool
13224 Set the pool method to be used for computing vmaf.
13225 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
13226
13227 @item n_threads
13228 Set number of threads to be used when computing vmaf.
13229 Default value: @code{0}, which makes use of all available logical processors.
13230
13231 @item n_subsample
13232 Set interval for frame subsampling used when computing vmaf.
13233 Default value: @code{1}
13234
13235 @item enable_conf_interval
13236 Enables confidence interval.
13237 Default value: @code{false}
13238 @end table
13239
13240 This filter also supports the @ref{framesync} options.
13241
13242 @subsection Examples
13243 @itemize
13244 @item
13245 On the below examples the input file @file{main.mpg} being processed is
13246 compared with the reference file @file{ref.mpg}.
13247
13248 @example
13249 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
13250 @end example
13251
13252 @item
13253 Example with options:
13254 @example
13255 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
13256 @end example
13257
13258 @item
13259 Example with options and different containers:
13260 @example
13261 ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=psnr=1:log_fmt=json" -f null -
13262 @end example
13263 @end itemize
13264
13265 @section limiter
13266
13267 Limits the pixel components values to the specified range [min, max].
13268
13269 The filter accepts the following options:
13270
13271 @table @option
13272 @item min
13273 Lower bound. Defaults to the lowest allowed value for the input.
13274
13275 @item max
13276 Upper bound. Defaults to the highest allowed value for the input.
13277
13278 @item planes
13279 Specify which planes will be processed. Defaults to all available.
13280 @end table
13281
13282 @section loop
13283
13284 Loop video frames.
13285
13286 The filter accepts the following options:
13287
13288 @table @option
13289 @item loop
13290 Set the number of loops. Setting this value to -1 will result in infinite loops.
13291 Default is 0.
13292
13293 @item size
13294 Set maximal size in number of frames. Default is 0.
13295
13296 @item start
13297 Set first frame of loop. Default is 0.
13298 @end table
13299
13300 @subsection Examples
13301
13302 @itemize
13303 @item
13304 Loop single first frame infinitely:
13305 @example
13306 loop=loop=-1:size=1:start=0
13307 @end example
13308
13309 @item
13310 Loop single first frame 10 times:
13311 @example
13312 loop=loop=10:size=1:start=0
13313 @end example
13314
13315 @item
13316 Loop 10 first frames 5 times:
13317 @example
13318 loop=loop=5:size=10:start=0
13319 @end example
13320 @end itemize
13321
13322 @section lut1d
13323
13324 Apply a 1D LUT to an input video.
13325
13326 The filter accepts the following options:
13327
13328 @table @option
13329 @item file
13330 Set the 1D LUT file name.
13331
13332 Currently supported formats:
13333 @table @samp
13334 @item cube
13335 Iridas
13336 @item csp
13337 cineSpace
13338 @end table
13339
13340 @item interp
13341 Select interpolation mode.
13342
13343 Available values are:
13344
13345 @table @samp
13346 @item nearest
13347 Use values from the nearest defined point.
13348 @item linear
13349 Interpolate values using the linear interpolation.
13350 @item cosine
13351 Interpolate values using the cosine interpolation.
13352 @item cubic
13353 Interpolate values using the cubic interpolation.
13354 @item spline
13355 Interpolate values using the spline interpolation.
13356 @end table
13357 @end table
13358
13359 @anchor{lut3d}
13360 @section lut3d
13361
13362 Apply a 3D LUT to an input video.
13363
13364 The filter accepts the following options:
13365
13366 @table @option
13367 @item file
13368 Set the 3D LUT file name.
13369
13370 Currently supported formats:
13371 @table @samp
13372 @item 3dl
13373 AfterEffects
13374 @item cube
13375 Iridas
13376 @item dat
13377 DaVinci
13378 @item m3d
13379 Pandora
13380 @item csp
13381 cineSpace
13382 @end table
13383 @item interp
13384 Select interpolation mode.
13385
13386 Available values are:
13387
13388 @table @samp
13389 @item nearest
13390 Use values from the nearest defined point.
13391 @item trilinear
13392 Interpolate values using the 8 points defining a cube.
13393 @item tetrahedral
13394 Interpolate values using a tetrahedron.
13395 @end table
13396 @end table
13397
13398 @section lumakey
13399
13400 Turn certain luma values into transparency.
13401
13402 The filter accepts the following options:
13403
13404 @table @option
13405 @item threshold
13406 Set the luma which will be used as base for transparency.
13407 Default value is @code{0}.
13408
13409 @item tolerance
13410 Set the range of luma values to be keyed out.
13411 Default value is @code{0.01}.
13412
13413 @item softness
13414 Set the range of softness. Default value is @code{0}.
13415 Use this to control gradual transition from zero to full transparency.
13416 @end table
13417
13418 @subsection Commands
13419 This filter supports same @ref{commands} as options.
13420 The command accepts the same syntax of the corresponding option.
13421
13422 If the specified expression is not valid, it is kept at its current
13423 value.
13424
13425 @section lut, lutrgb, lutyuv
13426
13427 Compute a look-up table for binding each pixel component input value
13428 to an output value, and apply it to the input video.
13429
13430 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
13431 to an RGB input video.
13432
13433 These filters accept the following parameters:
13434 @table @option
13435 @item c0
13436 set first pixel component expression
13437 @item c1
13438 set second pixel component expression
13439 @item c2
13440 set third pixel component expression
13441 @item c3
13442 set fourth pixel component expression, corresponds to the alpha component
13443
13444 @item r
13445 set red component expression
13446 @item g
13447 set green component expression
13448 @item b
13449 set blue component expression
13450 @item a
13451 alpha component expression
13452
13453 @item y
13454 set Y/luminance component expression
13455 @item u
13456 set U/Cb component expression
13457 @item v
13458 set V/Cr component expression
13459 @end table
13460
13461 Each of them specifies the expression to use for computing the lookup table for
13462 the corresponding pixel component values.
13463
13464 The exact component associated to each of the @var{c*} options depends on the
13465 format in input.
13466
13467 The @var{lut} filter requires either YUV or RGB pixel formats in input,
13468 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
13469
13470 The expressions can contain the following constants and functions:
13471
13472 @table @option
13473 @item w
13474 @item h
13475 The input width and height.
13476
13477 @item val
13478 The input value for the pixel component.
13479
13480 @item clipval
13481 The input value, clipped to the @var{minval}-@var{maxval} range.
13482
13483 @item maxval
13484 The maximum value for the pixel component.
13485
13486 @item minval
13487 The minimum value for the pixel component.
13488
13489 @item negval
13490 The negated value for the pixel component value, clipped to the
13491 @var{minval}-@var{maxval} range; it corresponds to the expression
13492 "maxval-clipval+minval".
13493
13494 @item clip(val)
13495 The computed value in @var{val}, clipped to the
13496 @var{minval}-@var{maxval} range.
13497
13498 @item gammaval(gamma)
13499 The computed gamma correction value of the pixel component value,
13500 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
13501 expression
13502 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
13503
13504 @end table
13505
13506 All expressions default to "val".
13507
13508 @subsection Examples
13509
13510 @itemize
13511 @item
13512 Negate input video:
13513 @example
13514 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
13515 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
13516 @end example
13517
13518 The above is the same as:
13519 @example
13520 lutrgb="r=negval:g=negval:b=negval"
13521 lutyuv="y=negval:u=negval:v=negval"
13522 @end example
13523
13524 @item
13525 Negate luminance:
13526 @example
13527 lutyuv=y=negval
13528 @end example
13529
13530 @item
13531 Remove chroma components, turning the video into a graytone image:
13532 @example
13533 lutyuv="u=128:v=128"
13534 @end example
13535
13536 @item
13537 Apply a luma burning effect:
13538 @example
13539 lutyuv="y=2*val"
13540 @end example
13541
13542 @item
13543 Remove green and blue components:
13544 @example
13545 lutrgb="g=0:b=0"
13546 @end example
13547
13548 @item
13549 Set a constant alpha channel value on input:
13550 @example
13551 format=rgba,lutrgb=a="maxval-minval/2"
13552 @end example
13553
13554 @item
13555 Correct luminance gamma by a factor of 0.5:
13556 @example
13557 lutyuv=y=gammaval(0.5)
13558 @end example
13559
13560 @item
13561 Discard least significant bits of luma:
13562 @example
13563 lutyuv=y='bitand(val, 128+64+32)'
13564 @end example
13565
13566 @item
13567 Technicolor like effect:
13568 @example
13569 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
13570 @end example
13571 @end itemize
13572
13573 @section lut2, tlut2
13574
13575 The @code{lut2} filter takes two input streams and outputs one
13576 stream.
13577
13578 The @code{tlut2} (time lut2) filter takes two consecutive frames
13579 from one single stream.
13580
13581 This filter accepts the following parameters:
13582 @table @option
13583 @item c0
13584 set first pixel component expression
13585 @item c1
13586 set second pixel component expression
13587 @item c2
13588 set third pixel component expression
13589 @item c3
13590 set fourth pixel component expression, corresponds to the alpha component
13591
13592 @item d
13593 set output bit depth, only available for @code{lut2} filter. By default is 0,
13594 which means bit depth is automatically picked from first input format.
13595 @end table
13596
13597 The @code{lut2} filter also supports the @ref{framesync} options.
13598
13599 Each of them specifies the expression to use for computing the lookup table for
13600 the corresponding pixel component values.
13601
13602 The exact component associated to each of the @var{c*} options depends on the
13603 format in inputs.
13604
13605 The expressions can contain the following constants:
13606
13607 @table @option
13608 @item w
13609 @item h
13610 The input width and height.
13611
13612 @item x
13613 The first input value for the pixel component.
13614
13615 @item y
13616 The second input value for the pixel component.
13617
13618 @item bdx
13619 The first input video bit depth.
13620
13621 @item bdy
13622 The second input video bit depth.
13623 @end table
13624
13625 All expressions default to "x".
13626
13627 @subsection Examples
13628
13629 @itemize
13630 @item
13631 Highlight differences between two RGB video streams:
13632 @example
13633 lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1)'
13634 @end example
13635
13636 @item
13637 Highlight differences between two YUV video streams:
13638 @example
13639 lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1)'
13640 @end example
13641
13642 @item
13643 Show max difference between two video streams:
13644 @example
13645 lut2='if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1)))'
13646 @end example
13647 @end itemize
13648
13649 @section maskedclamp
13650
13651 Clamp the first input stream with the second input and third input stream.
13652
13653 Returns the value of first stream to be between second input
13654 stream - @code{undershoot} and third input stream + @code{overshoot}.
13655
13656 This filter accepts the following options:
13657 @table @option
13658 @item undershoot
13659 Default value is @code{0}.
13660
13661 @item overshoot
13662 Default value is @code{0}.
13663
13664 @item planes
13665 Set which planes will be processed as bitmap, unprocessed planes will be
13666 copied from first stream.
13667 By default value 0xf, all planes will be processed.
13668 @end table
13669
13670 @section maskedmax
13671
13672 Merge the second and third input stream into output stream using absolute differences
13673 between second input stream and first input stream and absolute difference between
13674 third input stream and first input stream. The picked value will be from second input
13675 stream if second absolute difference is greater than first one or from third input stream
13676 otherwise.
13677
13678 This filter accepts the following options:
13679 @table @option
13680 @item planes
13681 Set which planes will be processed as bitmap, unprocessed planes will be
13682 copied from first stream.
13683 By default value 0xf, all planes will be processed.
13684 @end table
13685
13686 @section maskedmerge
13687
13688 Merge the first input stream with the second input stream using per pixel
13689 weights in the third input stream.
13690
13691 A value of 0 in the third stream pixel component means that pixel component
13692 from first stream is returned unchanged, while maximum value (eg. 255 for
13693 8-bit videos) means that pixel component from second stream is returned
13694 unchanged. Intermediate values define the amount of merging between both
13695 input stream's pixel components.
13696
13697 This filter accepts the following options:
13698 @table @option
13699 @item planes
13700 Set which planes will be processed as bitmap, unprocessed planes will be
13701 copied from first stream.
13702 By default value 0xf, all planes will be processed.
13703 @end table
13704
13705 @section maskedmin
13706
13707 Merge the second and third input stream into output stream using absolute differences
13708 between second input stream and first input stream and absolute difference between
13709 third input stream and first input stream. The picked value will be from second input
13710 stream if second absolute difference is less than first one or from third input stream
13711 otherwise.
13712
13713 This filter accepts the following options:
13714 @table @option
13715 @item planes
13716 Set which planes will be processed as bitmap, unprocessed planes will be
13717 copied from first stream.
13718 By default value 0xf, all planes will be processed.
13719 @end table
13720
13721 @section maskedthreshold
13722 Pick pixels comparing absolute difference of two video streams with fixed
13723 threshold.
13724
13725 If absolute difference between pixel component of first and second video
13726 stream is equal or lower than user supplied threshold than pixel component
13727 from first video stream is picked, otherwise pixel component from second
13728 video stream is picked.
13729
13730 This filter accepts the following options:
13731 @table @option
13732 @item threshold
13733 Set threshold used when picking pixels from absolute difference from two input
13734 video streams.
13735
13736 @item planes
13737 Set which planes will be processed as bitmap, unprocessed planes will be
13738 copied from second stream.
13739 By default value 0xf, all planes will be processed.
13740 @end table
13741
13742 @section maskfun
13743 Create mask from input video.
13744
13745 For example it is useful to create motion masks after @code{tblend} filter.
13746
13747 This filter accepts the following options:
13748
13749 @table @option
13750 @item low
13751 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
13752
13753 @item high
13754 Set high threshold. Any pixel component higher than this value will be set to max value
13755 allowed for current pixel format.
13756
13757 @item planes
13758 Set planes to filter, by default all available planes are filtered.
13759
13760 @item fill
13761 Fill all frame pixels with this value.
13762
13763 @item sum
13764 Set max average pixel value for frame. If sum of all pixel components is higher that this
13765 average, output frame will be completely filled with value set by @var{fill} option.
13766 Typically useful for scene changes when used in combination with @code{tblend} filter.
13767 @end table
13768
13769 @section mcdeint
13770
13771 Apply motion-compensation deinterlacing.
13772
13773 It needs one field per frame as input and must thus be used together
13774 with yadif=1/3 or equivalent.
13775
13776 This filter accepts the following options:
13777 @table @option
13778 @item mode
13779 Set the deinterlacing mode.
13780
13781 It accepts one of the following values:
13782 @table @samp
13783 @item fast
13784 @item medium
13785 @item slow
13786 use iterative motion estimation
13787 @item extra_slow
13788 like @samp{slow}, but use multiple reference frames.
13789 @end table
13790 Default value is @samp{fast}.
13791
13792 @item parity
13793 Set the picture field parity assumed for the input video. It must be
13794 one of the following values:
13795
13796 @table @samp
13797 @item 0, tff
13798 assume top field first
13799 @item 1, bff
13800 assume bottom field first
13801 @end table
13802
13803 Default value is @samp{bff}.
13804
13805 @item qp
13806 Set per-block quantization parameter (QP) used by the internal
13807 encoder.
13808
13809 Higher values should result in a smoother motion vector field but less
13810 optimal individual vectors. Default value is 1.
13811 @end table
13812
13813 @section median
13814
13815 Pick median pixel from certain rectangle defined by radius.
13816
13817 This filter accepts the following options:
13818
13819 @table @option
13820 @item radius
13821 Set horizontal radius size. Default value is @code{1}.
13822 Allowed range is integer from 1 to 127.
13823
13824 @item planes
13825 Set which planes to process. Default is @code{15}, which is all available planes.
13826
13827 @item radiusV
13828 Set vertical radius size. Default value is @code{0}.
13829 Allowed range is integer from 0 to 127.
13830 If it is 0, value will be picked from horizontal @code{radius} option.
13831
13832 @item percentile
13833 Set median percentile. Default value is @code{0.5}.
13834 Default value of @code{0.5} will pick always median values, while @code{0} will pick
13835 minimum values, and @code{1} maximum values.
13836 @end table
13837
13838 @subsection Commands
13839 This filter supports same @ref{commands} as options.
13840 The command accepts the same syntax of the corresponding option.
13841
13842 If the specified expression is not valid, it is kept at its current
13843 value.
13844
13845 @section mergeplanes
13846
13847 Merge color channel components from several video streams.
13848
13849 The filter accepts up to 4 input streams, and merge selected input
13850 planes to the output video.
13851
13852 This filter accepts the following options:
13853 @table @option
13854 @item mapping
13855 Set input to output plane mapping. Default is @code{0}.
13856
13857 The mappings is specified as a bitmap. It should be specified as a
13858 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
13859 mapping for the first plane of the output stream. 'A' sets the number of
13860 the input stream to use (from 0 to 3), and 'a' the plane number of the
13861 corresponding input to use (from 0 to 3). The rest of the mappings is
13862 similar, 'Bb' describes the mapping for the output stream second
13863 plane, 'Cc' describes the mapping for the output stream third plane and
13864 'Dd' describes the mapping for the output stream fourth plane.
13865
13866 @item format
13867 Set output pixel format. Default is @code{yuva444p}.
13868 @end table
13869
13870 @subsection Examples
13871
13872 @itemize
13873 @item
13874 Merge three gray video streams of same width and height into single video stream:
13875 @example
13876 [a0][a1][a2]mergeplanes=0x001020:yuv444p
13877 @end example
13878
13879 @item
13880 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
13881 @example
13882 [a0][a1]mergeplanes=0x00010210:yuva444p
13883 @end example
13884
13885 @item
13886 Swap Y and A plane in yuva444p stream:
13887 @example
13888 format=yuva444p,mergeplanes=0x03010200:yuva444p
13889 @end example
13890
13891 @item
13892 Swap U and V plane in yuv420p stream:
13893 @example
13894 format=yuv420p,mergeplanes=0x000201:yuv420p
13895 @end example
13896
13897 @item
13898 Cast a rgb24 clip to yuv444p:
13899 @example
13900 format=rgb24,mergeplanes=0x000102:yuv444p
13901 @end example
13902 @end itemize
13903
13904 @section mestimate
13905
13906 Estimate and export motion vectors using block matching algorithms.
13907 Motion vectors are stored in frame side data to be used by other filters.
13908
13909 This filter accepts the following options:
13910 @table @option
13911 @item method
13912 Specify the motion estimation method. Accepts one of the following values:
13913
13914 @table @samp
13915 @item esa
13916 Exhaustive search algorithm.
13917 @item tss
13918 Three step search algorithm.
13919 @item tdls
13920 Two dimensional logarithmic search algorithm.
13921 @item ntss
13922 New three step search algorithm.
13923 @item fss
13924 Four step search algorithm.
13925 @item ds
13926 Diamond search algorithm.
13927 @item hexbs
13928 Hexagon-based search algorithm.
13929 @item epzs
13930 Enhanced predictive zonal search algorithm.
13931 @item umh
13932 Uneven multi-hexagon search algorithm.
13933 @end table
13934 Default value is @samp{esa}.
13935
13936 @item mb_size
13937 Macroblock size. Default @code{16}.
13938
13939 @item search_param
13940 Search parameter. Default @code{7}.
13941 @end table
13942
13943 @section midequalizer
13944
13945 Apply Midway Image Equalization effect using two video streams.
13946
13947 Midway Image Equalization adjusts a pair of images to have the same
13948 histogram, while maintaining their dynamics as much as possible. It's
13949 useful for e.g. matching exposures from a pair of stereo cameras.
13950
13951 This filter has two inputs and one output, which must be of same pixel format, but
13952 may be of different sizes. The output of filter is first input adjusted with
13953 midway histogram of both inputs.
13954
13955 This filter accepts the following option:
13956
13957 @table @option
13958 @item planes
13959 Set which planes to process. Default is @code{15}, which is all available planes.
13960 @end table
13961
13962 @section minterpolate
13963
13964 Convert the video to specified frame rate using motion interpolation.
13965
13966 This filter accepts the following options:
13967 @table @option
13968 @item fps
13969 Specify the output frame rate. This can be rational e.g. @code{60000/1001}. Frames are dropped if @var{fps} is lower than source fps. Default @code{60}.
13970
13971 @item mi_mode
13972 Motion interpolation mode. Following values are accepted:
13973 @table @samp
13974 @item dup
13975 Duplicate previous or next frame for interpolating new ones.
13976 @item blend
13977 Blend source frames. Interpolated frame is mean of previous and next frames.
13978 @item mci
13979 Motion compensated interpolation. Following options are effective when this mode is selected:
13980
13981 @table @samp
13982 @item mc_mode
13983 Motion compensation mode. Following values are accepted:
13984 @table @samp
13985 @item obmc
13986 Overlapped block motion compensation.
13987 @item aobmc
13988 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
13989 @end table
13990 Default mode is @samp{obmc}.
13991
13992 @item me_mode
13993 Motion estimation mode. Following values are accepted:
13994 @table @samp
13995 @item bidir
13996 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
13997 @item bilat
13998 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
13999 @end table
14000 Default mode is @samp{bilat}.
14001
14002 @item me
14003 The algorithm to be used for motion estimation. Following values are accepted:
14004 @table @samp
14005 @item esa
14006 Exhaustive search algorithm.
14007 @item tss
14008 Three step search algorithm.
14009 @item tdls
14010 Two dimensional logarithmic search algorithm.
14011 @item ntss
14012 New three step search algorithm.
14013 @item fss
14014 Four step search algorithm.
14015 @item ds
14016 Diamond search algorithm.
14017 @item hexbs
14018 Hexagon-based search algorithm.
14019 @item epzs
14020 Enhanced predictive zonal search algorithm.
14021 @item umh
14022 Uneven multi-hexagon search algorithm.
14023 @end table
14024 Default algorithm is @samp{epzs}.
14025
14026 @item mb_size
14027 Macroblock size. Default @code{16}.
14028
14029 @item search_param
14030 Motion estimation search parameter. Default @code{32}.
14031
14032 @item vsbmc
14033 Enable variable-size block motion compensation. Motion estimation is applied with smaller block sizes at object boundaries in order to make the them less blur. Default is @code{0} (disabled).
14034 @end table
14035 @end table
14036
14037 @item scd
14038 Scene change detection method. Scene change leads motion vectors to be in random direction. Scene change detection replace interpolated frames by duplicate ones. May not be needed for other modes. Following values are accepted:
14039 @table @samp
14040 @item none
14041 Disable scene change detection.
14042 @item fdiff
14043 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
14044 @end table
14045 Default method is @samp{fdiff}.
14046
14047 @item scd_threshold
14048 Scene change detection threshold. Default is @code{10.}.
14049 @end table
14050
14051 @section mix
14052
14053 Mix several video input streams into one video stream.
14054
14055 A description of the accepted options follows.
14056
14057 @table @option
14058 @item nb_inputs
14059 The number of inputs. If unspecified, it defaults to 2.
14060
14061 @item weights
14062 Specify weight of each input video stream as sequence.
14063 Each weight is separated by space. If number of weights
14064 is smaller than number of @var{frames} last specified
14065 weight will be used for all remaining unset weights.
14066
14067 @item scale
14068 Specify scale, if it is set it will be multiplied with sum
14069 of each weight multiplied with pixel values to give final destination
14070 pixel value. By default @var{scale} is auto scaled to sum of weights.
14071
14072 @item duration
14073 Specify how end of stream is determined.
14074 @table @samp
14075 @item longest
14076 The duration of the longest input. (default)
14077
14078 @item shortest
14079 The duration of the shortest input.
14080
14081 @item first
14082 The duration of the first input.
14083 @end table
14084 @end table
14085
14086 @section mpdecimate
14087
14088 Drop frames that do not differ greatly from the previous frame in
14089 order to reduce frame rate.
14090
14091 The main use of this filter is for very-low-bitrate encoding
14092 (e.g. streaming over dialup modem), but it could in theory be used for
14093 fixing movies that were inverse-telecined incorrectly.
14094
14095 A description of the accepted options follows.
14096
14097 @table @option
14098 @item max
14099 Set the maximum number of consecutive frames which can be dropped (if
14100 positive), or the minimum interval between dropped frames (if
14101 negative). If the value is 0, the frame is dropped disregarding the
14102 number of previous sequentially dropped frames.
14103
14104 Default value is 0.
14105
14106 @item hi
14107 @item lo
14108 @item frac
14109 Set the dropping threshold values.
14110
14111 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
14112 represent actual pixel value differences, so a threshold of 64
14113 corresponds to 1 unit of difference for each pixel, or the same spread
14114 out differently over the block.
14115
14116 A frame is a candidate for dropping if no 8x8 blocks differ by more
14117 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
14118 meaning the whole image) differ by more than a threshold of @option{lo}.
14119
14120 Default value for @option{hi} is 64*12, default value for @option{lo} is
14121 64*5, and default value for @option{frac} is 0.33.
14122 @end table
14123
14124
14125 @section negate
14126
14127 Negate (invert) the input video.
14128
14129 It accepts the following option:
14130
14131 @table @option
14132
14133 @item negate_alpha
14134 With value 1, it negates the alpha component, if present. Default value is 0.
14135 @end table
14136
14137 @anchor{nlmeans}
14138 @section nlmeans
14139
14140 Denoise frames using Non-Local Means algorithm.
14141
14142 Each pixel is adjusted by looking for other pixels with similar contexts. This
14143 context similarity is defined by comparing their surrounding patches of size
14144 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
14145 around the pixel.
14146
14147 Note that the research area defines centers for patches, which means some
14148 patches will be made of pixels outside that research area.
14149
14150 The filter accepts the following options.
14151
14152 @table @option
14153 @item s
14154 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
14155
14156 @item p
14157 Set patch size. Default is 7. Must be odd number in range [0, 99].
14158
14159 @item pc
14160 Same as @option{p} but for chroma planes.
14161
14162 The default value is @var{0} and means automatic.
14163
14164 @item r
14165 Set research size. Default is 15. Must be odd number in range [0, 99].
14166
14167 @item rc
14168 Same as @option{r} but for chroma planes.
14169
14170 The default value is @var{0} and means automatic.
14171 @end table
14172
14173 @section nnedi
14174
14175 Deinterlace video using neural network edge directed interpolation.
14176
14177 This filter accepts the following options:
14178
14179 @table @option
14180 @item weights
14181 Mandatory option, without binary file filter can not work.
14182 Currently file can be found here:
14183 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
14184
14185 @item deint
14186 Set which frames to deinterlace, by default it is @code{all}.
14187 Can be @code{all} or @code{interlaced}.
14188
14189 @item field
14190 Set mode of operation.
14191
14192 Can be one of the following:
14193
14194 @table @samp
14195 @item af
14196 Use frame flags, both fields.
14197 @item a
14198 Use frame flags, single field.
14199 @item t
14200 Use top field only.
14201 @item b
14202 Use bottom field only.
14203 @item tf
14204 Use both fields, top first.
14205 @item bf
14206 Use both fields, bottom first.
14207 @end table
14208
14209 @item planes
14210 Set which planes to process, by default filter process all frames.
14211
14212 @item nsize
14213 Set size of local neighborhood around each pixel, used by the predictor neural
14214 network.
14215
14216 Can be one of the following:
14217
14218 @table @samp
14219 @item s8x6
14220 @item s16x6
14221 @item s32x6
14222 @item s48x6
14223 @item s8x4
14224 @item s16x4
14225 @item s32x4
14226 @end table
14227
14228 @item nns
14229 Set the number of neurons in predictor neural network.
14230 Can be one of the following:
14231
14232 @table @samp
14233 @item n16
14234 @item n32
14235 @item n64
14236 @item n128
14237 @item n256
14238 @end table
14239
14240 @item qual
14241 Controls the number of different neural network predictions that are blended
14242 together to compute the final output value. Can be @code{fast}, default or
14243 @code{slow}.
14244
14245 @item etype
14246 Set which set of weights to use in the predictor.
14247 Can be one of the following:
14248
14249 @table @samp
14250 @item a
14251 weights trained to minimize absolute error
14252 @item s
14253 weights trained to minimize squared error
14254 @end table
14255
14256 @item pscrn
14257 Controls whether or not the prescreener neural network is used to decide
14258 which pixels should be processed by the predictor neural network and which
14259 can be handled by simple cubic interpolation.
14260 The prescreener is trained to know whether cubic interpolation will be
14261 sufficient for a pixel or whether it should be predicted by the predictor nn.
14262 The computational complexity of the prescreener nn is much less than that of
14263 the predictor nn. Since most pixels can be handled by cubic interpolation,
14264 using the prescreener generally results in much faster processing.
14265 The prescreener is pretty accurate, so the difference between using it and not
14266 using it is almost always unnoticeable.
14267
14268 Can be one of the following:
14269
14270 @table @samp
14271 @item none
14272 @item original
14273 @item new
14274 @end table
14275
14276 Default is @code{new}.
14277
14278 @item fapprox
14279 Set various debugging flags.
14280 @end table
14281
14282 @section noformat
14283
14284 Force libavfilter not to use any of the specified pixel formats for the
14285 input to the next filter.
14286
14287 It accepts the following parameters:
14288 @table @option
14289
14290 @item pix_fmts
14291 A '|'-separated list of pixel format names, such as
14292 pix_fmts=yuv420p|monow|rgb24".
14293
14294 @end table
14295
14296 @subsection Examples
14297
14298 @itemize
14299 @item
14300 Force libavfilter to use a format different from @var{yuv420p} for the
14301 input to the vflip filter:
14302 @example
14303 noformat=pix_fmts=yuv420p,vflip
14304 @end example
14305
14306 @item
14307 Convert the input video to any of the formats not contained in the list:
14308 @example
14309 noformat=yuv420p|yuv444p|yuv410p
14310 @end example
14311 @end itemize
14312
14313 @section noise
14314
14315 Add noise on video input frame.
14316
14317 The filter accepts the following options:
14318
14319 @table @option
14320 @item all_seed
14321 @item c0_seed
14322 @item c1_seed
14323 @item c2_seed
14324 @item c3_seed
14325 Set noise seed for specific pixel component or all pixel components in case
14326 of @var{all_seed}. Default value is @code{123457}.
14327
14328 @item all_strength, alls
14329 @item c0_strength, c0s
14330 @item c1_strength, c1s
14331 @item c2_strength, c2s
14332 @item c3_strength, c3s
14333 Set noise strength for specific pixel component or all pixel components in case
14334 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
14335
14336 @item all_flags, allf
14337 @item c0_flags, c0f
14338 @item c1_flags, c1f
14339 @item c2_flags, c2f
14340 @item c3_flags, c3f
14341 Set pixel component flags or set flags for all components if @var{all_flags}.
14342 Available values for component flags are:
14343 @table @samp
14344 @item a
14345 averaged temporal noise (smoother)
14346 @item p
14347 mix random noise with a (semi)regular pattern
14348 @item t
14349 temporal noise (noise pattern changes between frames)
14350 @item u
14351 uniform noise (gaussian otherwise)
14352 @end table
14353 @end table
14354
14355 @subsection Examples
14356
14357 Add temporal and uniform noise to input video:
14358 @example
14359 noise=alls=20:allf=t+u
14360 @end example
14361
14362 @section normalize
14363
14364 Normalize RGB video (aka histogram stretching, contrast stretching).
14365 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
14366
14367 For each channel of each frame, the filter computes the input range and maps
14368 it linearly to the user-specified output range. The output range defaults
14369 to the full dynamic range from pure black to pure white.
14370
14371 Temporal smoothing can be used on the input range to reduce flickering (rapid
14372 changes in brightness) caused when small dark or bright objects enter or leave
14373 the scene. This is similar to the auto-exposure (automatic gain control) on a
14374 video camera, and, like a video camera, it may cause a period of over- or
14375 under-exposure of the video.
14376
14377 The R,G,B channels can be normalized independently, which may cause some
14378 color shifting, or linked together as a single channel, which prevents
14379 color shifting. Linked normalization preserves hue. Independent normalization
14380 does not, so it can be used to remove some color casts. Independent and linked
14381 normalization can be combined in any ratio.
14382
14383 The normalize filter accepts the following options:
14384
14385 @table @option
14386 @item blackpt
14387 @item whitept
14388 Colors which define the output range. The minimum input value is mapped to
14389 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
14390 The defaults are black and white respectively. Specifying white for
14391 @var{blackpt} and black for @var{whitept} will give color-inverted,
14392 normalized video. Shades of grey can be used to reduce the dynamic range
14393 (contrast). Specifying saturated colors here can create some interesting
14394 effects.
14395
14396 @item smoothing
14397 The number of previous frames to use for temporal smoothing. The input range
14398 of each channel is smoothed using a rolling average over the current frame
14399 and the @var{smoothing} previous frames. The default is 0 (no temporal
14400 smoothing).
14401
14402 @item independence
14403 Controls the ratio of independent (color shifting) channel normalization to
14404 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
14405 independent. Defaults to 1.0 (fully independent).
14406
14407 @item strength
14408 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
14409 expensive no-op. Defaults to 1.0 (full strength).
14410
14411 @end table
14412
14413 @subsection Commands
14414 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
14415 The command accepts the same syntax of the corresponding option.
14416
14417 If the specified expression is not valid, it is kept at its current
14418 value.
14419
14420 @subsection Examples
14421
14422 Stretch video contrast to use the full dynamic range, with no temporal
14423 smoothing; may flicker depending on the source content:
14424 @example
14425 normalize=blackpt=black:whitept=white:smoothing=0
14426 @end example
14427
14428 As above, but with 50 frames of temporal smoothing; flicker should be
14429 reduced, depending on the source content:
14430 @example
14431 normalize=blackpt=black:whitept=white:smoothing=50
14432 @end example
14433
14434 As above, but with hue-preserving linked channel normalization:
14435 @example
14436 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
14437 @end example
14438
14439 As above, but with half strength:
14440 @example
14441 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
14442 @end example
14443
14444 Map the darkest input color to red, the brightest input color to cyan:
14445 @example
14446 normalize=blackpt=red:whitept=cyan
14447 @end example
14448
14449 @section null
14450
14451 Pass the video source unchanged to the output.
14452
14453 @section ocr
14454 Optical Character Recognition
14455
14456 This filter uses Tesseract for optical character recognition. To enable
14457 compilation of this filter, you need to configure FFmpeg with
14458 @code{--enable-libtesseract}.
14459
14460 It accepts the following options:
14461
14462 @table @option
14463 @item datapath
14464 Set datapath to tesseract data. Default is to use whatever was
14465 set at installation.
14466
14467 @item language
14468 Set language, default is "eng".
14469
14470 @item whitelist
14471 Set character whitelist.
14472
14473 @item blacklist
14474 Set character blacklist.
14475 @end table
14476
14477 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
14478 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
14479
14480 @section ocv
14481
14482 Apply a video transform using libopencv.
14483
14484 To enable this filter, install the libopencv library and headers and
14485 configure FFmpeg with @code{--enable-libopencv}.
14486
14487 It accepts the following parameters:
14488
14489 @table @option
14490
14491 @item filter_name
14492 The name of the libopencv filter to apply.
14493
14494 @item filter_params
14495 The parameters to pass to the libopencv filter. If not specified, the default
14496 values are assumed.
14497
14498 @end table
14499
14500 Refer to the official libopencv documentation for more precise
14501 information:
14502 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
14503
14504 Several libopencv filters are supported; see the following subsections.
14505
14506 @anchor{dilate}
14507 @subsection dilate
14508
14509 Dilate an image by using a specific structuring element.
14510 It corresponds to the libopencv function @code{cvDilate}.
14511
14512 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
14513
14514 @var{struct_el} represents a structuring element, and has the syntax:
14515 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
14516
14517 @var{cols} and @var{rows} represent the number of columns and rows of
14518 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
14519 point, and @var{shape} the shape for the structuring element. @var{shape}
14520 must be "rect", "cross", "ellipse", or "custom".
14521
14522 If the value for @var{shape} is "custom", it must be followed by a
14523 string of the form "=@var{filename}". The file with name
14524 @var{filename} is assumed to represent a binary image, with each
14525 printable character corresponding to a bright pixel. When a custom
14526 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
14527 or columns and rows of the read file are assumed instead.
14528
14529 The default value for @var{struct_el} is "3x3+0x0/rect".
14530
14531 @var{nb_iterations} specifies the number of times the transform is
14532 applied to the image, and defaults to 1.
14533
14534 Some examples:
14535 @example
14536 # Use the default values
14537 ocv=dilate
14538
14539 # Dilate using a structuring element with a 5x5 cross, iterating two times
14540 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
14541
14542 # Read the shape from the file diamond.shape, iterating two times.
14543 # The file diamond.shape may contain a pattern of characters like this
14544 #   *
14545 #  ***
14546 # *****
14547 #  ***
14548 #   *
14549 # The specified columns and rows are ignored
14550 # but the anchor point coordinates are not
14551 ocv=dilate:0x0+2x2/custom=diamond.shape|2
14552 @end example
14553
14554 @subsection erode
14555
14556 Erode an image by using a specific structuring element.
14557 It corresponds to the libopencv function @code{cvErode}.
14558
14559 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
14560 with the same syntax and semantics as the @ref{dilate} filter.
14561
14562 @subsection smooth
14563
14564 Smooth the input video.
14565
14566 The filter takes the following parameters:
14567 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
14568
14569 @var{type} is the type of smooth filter to apply, and must be one of
14570 the following values: "blur", "blur_no_scale", "median", "gaussian",
14571 or "bilateral". The default value is "gaussian".
14572
14573 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
14574 depends on the smooth type. @var{param1} and
14575 @var{param2} accept integer positive values or 0. @var{param3} and
14576 @var{param4} accept floating point values.
14577
14578 The default value for @var{param1} is 3. The default value for the
14579 other parameters is 0.
14580
14581 These parameters correspond to the parameters assigned to the
14582 libopencv function @code{cvSmooth}.
14583
14584 @section oscilloscope
14585
14586 2D Video Oscilloscope.
14587
14588 Useful to measure spatial impulse, step responses, chroma delays, etc.
14589
14590 It accepts the following parameters:
14591
14592 @table @option
14593 @item x
14594 Set scope center x position.
14595
14596 @item y
14597 Set scope center y position.
14598
14599 @item s
14600 Set scope size, relative to frame diagonal.
14601
14602 @item t
14603 Set scope tilt/rotation.
14604
14605 @item o
14606 Set trace opacity.
14607
14608 @item tx
14609 Set trace center x position.
14610
14611 @item ty
14612 Set trace center y position.
14613
14614 @item tw
14615 Set trace width, relative to width of frame.
14616
14617 @item th
14618 Set trace height, relative to height of frame.
14619
14620 @item c
14621 Set which components to trace. By default it traces first three components.
14622
14623 @item g
14624 Draw trace grid. By default is enabled.
14625
14626 @item st
14627 Draw some statistics. By default is enabled.
14628
14629 @item sc
14630 Draw scope. By default is enabled.
14631 @end table
14632
14633 @subsection Commands
14634 This filter supports same @ref{commands} as options.
14635 The command accepts the same syntax of the corresponding option.
14636
14637 If the specified expression is not valid, it is kept at its current
14638 value.
14639
14640 @subsection Examples
14641
14642 @itemize
14643 @item
14644 Inspect full first row of video frame.
14645 @example
14646 oscilloscope=x=0.5:y=0:s=1
14647 @end example
14648
14649 @item
14650 Inspect full last row of video frame.
14651 @example
14652 oscilloscope=x=0.5:y=1:s=1
14653 @end example
14654
14655 @item
14656 Inspect full 5th line of video frame of height 1080.
14657 @example
14658 oscilloscope=x=0.5:y=5/1080:s=1
14659 @end example
14660
14661 @item
14662 Inspect full last column of video frame.
14663 @example
14664 oscilloscope=x=1:y=0.5:s=1:t=1
14665 @end example
14666
14667 @end itemize
14668
14669 @anchor{overlay}
14670 @section overlay
14671
14672 Overlay one video on top of another.
14673
14674 It takes two inputs and has one output. The first input is the "main"
14675 video on which the second input is overlaid.
14676
14677 It accepts the following parameters:
14678
14679 A description of the accepted options follows.
14680
14681 @table @option
14682 @item x
14683 @item y
14684 Set the expression for the x and y coordinates of the overlaid video
14685 on the main video. Default value is "0" for both expressions. In case
14686 the expression is invalid, it is set to a huge value (meaning that the
14687 overlay will not be displayed within the output visible area).
14688
14689 @item eof_action
14690 See @ref{framesync}.
14691
14692 @item eval
14693 Set when the expressions for @option{x}, and @option{y} are evaluated.
14694
14695 It accepts the following values:
14696 @table @samp
14697 @item init
14698 only evaluate expressions once during the filter initialization or
14699 when a command is processed
14700
14701 @item frame
14702 evaluate expressions for each incoming frame
14703 @end table
14704
14705 Default value is @samp{frame}.
14706
14707 @item shortest
14708 See @ref{framesync}.
14709
14710 @item format
14711 Set the format for the output video.
14712
14713 It accepts the following values:
14714 @table @samp
14715 @item yuv420
14716 force YUV420 output
14717
14718 @item yuv420p10
14719 force YUV420p10 output
14720
14721 @item yuv422
14722 force YUV422 output
14723
14724 @item yuv422p10
14725 force YUV422p10 output
14726
14727 @item yuv444
14728 force YUV444 output
14729
14730 @item rgb
14731 force packed RGB output
14732
14733 @item gbrp
14734 force planar RGB output
14735
14736 @item auto
14737 automatically pick format
14738 @end table
14739
14740 Default value is @samp{yuv420}.
14741
14742 @item repeatlast
14743 See @ref{framesync}.
14744
14745 @item alpha
14746 Set format of alpha of the overlaid video, it can be @var{straight} or
14747 @var{premultiplied}. Default is @var{straight}.
14748 @end table
14749
14750 The @option{x}, and @option{y} expressions can contain the following
14751 parameters.
14752
14753 @table @option
14754 @item main_w, W
14755 @item main_h, H
14756 The main input width and height.
14757
14758 @item overlay_w, w
14759 @item overlay_h, h
14760 The overlay input width and height.
14761
14762 @item x
14763 @item y
14764 The computed values for @var{x} and @var{y}. They are evaluated for
14765 each new frame.
14766
14767 @item hsub
14768 @item vsub
14769 horizontal and vertical chroma subsample values of the output
14770 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
14771 @var{vsub} is 1.
14772
14773 @item n
14774 the number of input frame, starting from 0
14775
14776 @item pos
14777 the position in the file of the input frame, NAN if unknown
14778
14779 @item t
14780 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
14781
14782 @end table
14783
14784 This filter also supports the @ref{framesync} options.
14785
14786 Note that the @var{n}, @var{pos}, @var{t} variables are available only
14787 when evaluation is done @emph{per frame}, and will evaluate to NAN
14788 when @option{eval} is set to @samp{init}.
14789
14790 Be aware that frames are taken from each input video in timestamp
14791 order, hence, if their initial timestamps differ, it is a good idea
14792 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
14793 have them begin in the same zero timestamp, as the example for
14794 the @var{movie} filter does.
14795
14796 You can chain together more overlays but you should test the
14797 efficiency of such approach.
14798
14799 @subsection Commands
14800
14801 This filter supports the following commands:
14802 @table @option
14803 @item x
14804 @item y
14805 Modify the x and y of the overlay input.
14806 The command accepts the same syntax of the corresponding option.
14807
14808 If the specified expression is not valid, it is kept at its current
14809 value.
14810 @end table
14811
14812 @subsection Examples
14813
14814 @itemize
14815 @item
14816 Draw the overlay at 10 pixels from the bottom right corner of the main
14817 video:
14818 @example
14819 overlay=main_w-overlay_w-10:main_h-overlay_h-10
14820 @end example
14821
14822 Using named options the example above becomes:
14823 @example
14824 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
14825 @end example
14826
14827 @item
14828 Insert a transparent PNG logo in the bottom left corner of the input,
14829 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
14830 @example
14831 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
14832 @end example
14833
14834 @item
14835 Insert 2 different transparent PNG logos (second logo on bottom
14836 right corner) using the @command{ffmpeg} tool:
14837 @example
14838 ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
14839 @end example
14840
14841 @item
14842 Add a transparent color layer on top of the main video; @code{WxH}
14843 must specify the size of the main input to the overlay filter:
14844 @example
14845 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
14846 @end example
14847
14848 @item
14849 Play an original video and a filtered version (here with the deshake
14850 filter) side by side using the @command{ffplay} tool:
14851 @example
14852 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
14853 @end example
14854
14855 The above command is the same as:
14856 @example
14857 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
14858 @end example
14859
14860 @item
14861 Make a sliding overlay appearing from the left to the right top part of the
14862 screen starting since time 2:
14863 @example
14864 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
14865 @end example
14866
14867 @item
14868 Compose output by putting two input videos side to side:
14869 @example
14870 ffmpeg -i left.avi -i right.avi -filter_complex "
14871 nullsrc=size=200x100 [background];
14872 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
14873 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
14874 [background][left]       overlay=shortest=1       [background+left];
14875 [background+left][right] overlay=shortest=1:x=100 [left+right]
14876 "
14877 @end example
14878
14879 @item
14880 Mask 10-20 seconds of a video by applying the delogo filter to a section
14881 @example
14882 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
14883 -vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]'
14884 masked.avi
14885 @end example
14886
14887 @item
14888 Chain several overlays in cascade:
14889 @example
14890 nullsrc=s=200x200 [bg];
14891 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
14892 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
14893 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
14894 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
14895 [in3] null,       [mid2] overlay=100:100 [out0]
14896 @end example
14897
14898 @end itemize
14899
14900 @anchor{overlay_cuda}
14901 @section overlay_cuda
14902
14903 Overlay one video on top of another.
14904
14905 This is the CUDA variant of the @ref{overlay} filter.
14906 It only accepts CUDA frames. The underlying input pixel formats have to match.
14907
14908 It takes two inputs and has one output. The first input is the "main"
14909 video on which the second input is overlaid.
14910
14911 It accepts the following parameters:
14912
14913 @table @option
14914 @item x
14915 @item y
14916 Set the x and y coordinates of the overlaid video on the main video.
14917 Default value is "0" for both expressions.
14918
14919 @item eof_action
14920 See @ref{framesync}.
14921
14922 @item shortest
14923 See @ref{framesync}.
14924
14925 @item repeatlast
14926 See @ref{framesync}.
14927
14928 @end table
14929
14930 This filter also supports the @ref{framesync} options.
14931
14932 @section owdenoise
14933
14934 Apply Overcomplete Wavelet denoiser.
14935
14936 The filter accepts the following options:
14937
14938 @table @option
14939 @item depth
14940 Set depth.
14941
14942 Larger depth values will denoise lower frequency components more, but
14943 slow down filtering.
14944
14945 Must be an int in the range 8-16, default is @code{8}.
14946
14947 @item luma_strength, ls
14948 Set luma strength.
14949
14950 Must be a double value in the range 0-1000, default is @code{1.0}.
14951
14952 @item chroma_strength, cs
14953 Set chroma strength.
14954
14955 Must be a double value in the range 0-1000, default is @code{1.0}.
14956 @end table
14957
14958 @anchor{pad}
14959 @section pad
14960
14961 Add paddings to the input image, and place the original input at the
14962 provided @var{x}, @var{y} coordinates.
14963
14964 It accepts the following parameters:
14965
14966 @table @option
14967 @item width, w
14968 @item height, h
14969 Specify an expression for the size of the output image with the
14970 paddings added. If the value for @var{width} or @var{height} is 0, the
14971 corresponding input size is used for the output.
14972
14973 The @var{width} expression can reference the value set by the
14974 @var{height} expression, and vice versa.
14975
14976 The default value of @var{width} and @var{height} is 0.
14977
14978 @item x
14979 @item y
14980 Specify the offsets to place the input image at within the padded area,
14981 with respect to the top/left border of the output image.
14982
14983 The @var{x} expression can reference the value set by the @var{y}
14984 expression, and vice versa.
14985
14986 The default value of @var{x} and @var{y} is 0.
14987
14988 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
14989 so the input image is centered on the padded area.
14990
14991 @item color
14992 Specify the color of the padded area. For the syntax of this option,
14993 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
14994 manual,ffmpeg-utils}.
14995
14996 The default value of @var{color} is "black".
14997
14998 @item eval
14999 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
15000
15001 It accepts the following values:
15002
15003 @table @samp
15004 @item init
15005 Only evaluate expressions once during the filter initialization or when
15006 a command is processed.
15007
15008 @item frame
15009 Evaluate expressions for each incoming frame.
15010
15011 @end table
15012
15013 Default value is @samp{init}.
15014
15015 @item aspect
15016 Pad to aspect instead to a resolution.
15017
15018 @end table
15019
15020 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
15021 options are expressions containing the following constants:
15022
15023 @table @option
15024 @item in_w
15025 @item in_h
15026 The input video width and height.
15027
15028 @item iw
15029 @item ih
15030 These are the same as @var{in_w} and @var{in_h}.
15031
15032 @item out_w
15033 @item out_h
15034 The output width and height (the size of the padded area), as
15035 specified by the @var{width} and @var{height} expressions.
15036
15037 @item ow
15038 @item oh
15039 These are the same as @var{out_w} and @var{out_h}.
15040
15041 @item x
15042 @item y
15043 The x and y offsets as specified by the @var{x} and @var{y}
15044 expressions, or NAN if not yet specified.
15045
15046 @item a
15047 same as @var{iw} / @var{ih}
15048
15049 @item sar
15050 input sample aspect ratio
15051
15052 @item dar
15053 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
15054
15055 @item hsub
15056 @item vsub
15057 The horizontal and vertical chroma subsample values. For example for the
15058 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15059 @end table
15060
15061 @subsection Examples
15062
15063 @itemize
15064 @item
15065 Add paddings with the color "violet" to the input video. The output video
15066 size is 640x480, and the top-left corner of the input video is placed at
15067 column 0, row 40
15068 @example
15069 pad=640:480:0:40:violet
15070 @end example
15071
15072 The example above is equivalent to the following command:
15073 @example
15074 pad=width=640:height=480:x=0:y=40:color=violet
15075 @end example
15076
15077 @item
15078 Pad the input to get an output with dimensions increased by 3/2,
15079 and put the input video at the center of the padded area:
15080 @example
15081 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
15082 @end example
15083
15084 @item
15085 Pad the input to get a squared output with size equal to the maximum
15086 value between the input width and height, and put the input video at
15087 the center of the padded area:
15088 @example
15089 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
15090 @end example
15091
15092 @item
15093 Pad the input to get a final w/h ratio of 16:9:
15094 @example
15095 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
15096 @end example
15097
15098 @item
15099 In case of anamorphic video, in order to set the output display aspect
15100 correctly, it is necessary to use @var{sar} in the expression,
15101 according to the relation:
15102 @example
15103 (ih * X / ih) * sar = output_dar
15104 X = output_dar / sar
15105 @end example
15106
15107 Thus the previous example needs to be modified to:
15108 @example
15109 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
15110 @end example
15111
15112 @item
15113 Double the output size and put the input video in the bottom-right
15114 corner of the output padded area:
15115 @example
15116 pad="2*iw:2*ih:ow-iw:oh-ih"
15117 @end example
15118 @end itemize
15119
15120 @anchor{palettegen}
15121 @section palettegen
15122
15123 Generate one palette for a whole video stream.
15124
15125 It accepts the following options:
15126
15127 @table @option
15128 @item max_colors
15129 Set the maximum number of colors to quantize in the palette.
15130 Note: the palette will still contain 256 colors; the unused palette entries
15131 will be black.
15132
15133 @item reserve_transparent
15134 Create a palette of 255 colors maximum and reserve the last one for
15135 transparency. Reserving the transparency color is useful for GIF optimization.
15136 If not set, the maximum of colors in the palette will be 256. You probably want
15137 to disable this option for a standalone image.
15138 Set by default.
15139
15140 @item transparency_color
15141 Set the color that will be used as background for transparency.
15142
15143 @item stats_mode
15144 Set statistics mode.
15145
15146 It accepts the following values:
15147 @table @samp
15148 @item full
15149 Compute full frame histograms.
15150 @item diff
15151 Compute histograms only for the part that differs from previous frame. This
15152 might be relevant to give more importance to the moving part of your input if
15153 the background is static.
15154 @item single
15155 Compute new histogram for each frame.
15156 @end table
15157
15158 Default value is @var{full}.
15159 @end table
15160
15161 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
15162 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
15163 color quantization of the palette. This information is also visible at
15164 @var{info} logging level.
15165
15166 @subsection Examples
15167
15168 @itemize
15169 @item
15170 Generate a representative palette of a given video using @command{ffmpeg}:
15171 @example
15172 ffmpeg -i input.mkv -vf palettegen palette.png
15173 @end example
15174 @end itemize
15175
15176 @section paletteuse
15177
15178 Use a palette to downsample an input video stream.
15179
15180 The filter takes two inputs: one video stream and a palette. The palette must
15181 be a 256 pixels image.
15182
15183 It accepts the following options:
15184
15185 @table @option
15186 @item dither
15187 Select dithering mode. Available algorithms are:
15188 @table @samp
15189 @item bayer
15190 Ordered 8x8 bayer dithering (deterministic)
15191 @item heckbert
15192 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
15193 Note: this dithering is sometimes considered "wrong" and is included as a
15194 reference.
15195 @item floyd_steinberg
15196 Floyd and Steingberg dithering (error diffusion)
15197 @item sierra2
15198 Frankie Sierra dithering v2 (error diffusion)
15199 @item sierra2_4a
15200 Frankie Sierra dithering v2 "Lite" (error diffusion)
15201 @end table
15202
15203 Default is @var{sierra2_4a}.
15204
15205 @item bayer_scale
15206 When @var{bayer} dithering is selected, this option defines the scale of the
15207 pattern (how much the crosshatch pattern is visible). A low value means more
15208 visible pattern for less banding, and higher value means less visible pattern
15209 at the cost of more banding.
15210
15211 The option must be an integer value in the range [0,5]. Default is @var{2}.
15212
15213 @item diff_mode
15214 If set, define the zone to process
15215
15216 @table @samp
15217 @item rectangle
15218 Only the changing rectangle will be reprocessed. This is similar to GIF
15219 cropping/offsetting compression mechanism. This option can be useful for speed
15220 if only a part of the image is changing, and has use cases such as limiting the
15221 scope of the error diffusal @option{dither} to the rectangle that bounds the
15222 moving scene (it leads to more deterministic output if the scene doesn't change
15223 much, and as a result less moving noise and better GIF compression).
15224 @end table
15225
15226 Default is @var{none}.
15227
15228 @item new
15229 Take new palette for each output frame.
15230
15231 @item alpha_threshold
15232 Sets the alpha threshold for transparency. Alpha values above this threshold
15233 will be treated as completely opaque, and values below this threshold will be
15234 treated as completely transparent.
15235
15236 The option must be an integer value in the range [0,255]. Default is @var{128}.
15237 @end table
15238
15239 @subsection Examples
15240
15241 @itemize
15242 @item
15243 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
15244 using @command{ffmpeg}:
15245 @example
15246 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
15247 @end example
15248 @end itemize
15249
15250 @section perspective
15251
15252 Correct perspective of video not recorded perpendicular to the screen.
15253
15254 A description of the accepted parameters follows.
15255
15256 @table @option
15257 @item x0
15258 @item y0
15259 @item x1
15260 @item y1
15261 @item x2
15262 @item y2
15263 @item x3
15264 @item y3
15265 Set coordinates expression for top left, top right, bottom left and bottom right corners.
15266 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
15267 If the @code{sense} option is set to @code{source}, then the specified points will be sent
15268 to the corners of the destination. If the @code{sense} option is set to @code{destination},
15269 then the corners of the source will be sent to the specified coordinates.
15270
15271 The expressions can use the following variables:
15272
15273 @table @option
15274 @item W
15275 @item H
15276 the width and height of video frame.
15277 @item in
15278 Input frame count.
15279 @item on
15280 Output frame count.
15281 @end table
15282
15283 @item interpolation
15284 Set interpolation for perspective correction.
15285
15286 It accepts the following values:
15287 @table @samp
15288 @item linear
15289 @item cubic
15290 @end table
15291
15292 Default value is @samp{linear}.
15293
15294 @item sense
15295 Set interpretation of coordinate options.
15296
15297 It accepts the following values:
15298 @table @samp
15299 @item 0, source
15300
15301 Send point in the source specified by the given coordinates to
15302 the corners of the destination.
15303
15304 @item 1, destination
15305
15306 Send the corners of the source to the point in the destination specified
15307 by the given coordinates.
15308
15309 Default value is @samp{source}.
15310 @end table
15311
15312 @item eval
15313 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
15314
15315 It accepts the following values:
15316 @table @samp
15317 @item init
15318 only evaluate expressions once during the filter initialization or
15319 when a command is processed
15320
15321 @item frame
15322 evaluate expressions for each incoming frame
15323 @end table
15324
15325 Default value is @samp{init}.
15326 @end table
15327
15328 @section phase
15329
15330 Delay interlaced video by one field time so that the field order changes.
15331
15332 The intended use is to fix PAL movies that have been captured with the
15333 opposite field order to the film-to-video transfer.
15334
15335 A description of the accepted parameters follows.
15336
15337 @table @option
15338 @item mode
15339 Set phase mode.
15340
15341 It accepts the following values:
15342 @table @samp
15343 @item t
15344 Capture field order top-first, transfer bottom-first.
15345 Filter will delay the bottom field.
15346
15347 @item b
15348 Capture field order bottom-first, transfer top-first.
15349 Filter will delay the top field.
15350
15351 @item p
15352 Capture and transfer with the same field order. This mode only exists
15353 for the documentation of the other options to refer to, but if you
15354 actually select it, the filter will faithfully do nothing.
15355
15356 @item a
15357 Capture field order determined automatically by field flags, transfer
15358 opposite.
15359 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
15360 basis using field flags. If no field information is available,
15361 then this works just like @samp{u}.
15362
15363 @item u
15364 Capture unknown or varying, transfer opposite.
15365 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
15366 analyzing the images and selecting the alternative that produces best
15367 match between the fields.
15368
15369 @item T
15370 Capture top-first, transfer unknown or varying.
15371 Filter selects among @samp{t} and @samp{p} using image analysis.
15372
15373 @item B
15374 Capture bottom-first, transfer unknown or varying.
15375 Filter selects among @samp{b} and @samp{p} using image analysis.
15376
15377 @item A
15378 Capture determined by field flags, transfer unknown or varying.
15379 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
15380 image analysis. If no field information is available, then this works just
15381 like @samp{U}. This is the default mode.
15382
15383 @item U
15384 Both capture and transfer unknown or varying.
15385 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
15386 @end table
15387 @end table
15388
15389 @section photosensitivity
15390 Reduce various flashes in video, so to help users with epilepsy.
15391
15392 It accepts the following options:
15393 @table @option
15394 @item frames, f
15395 Set how many frames to use when filtering. Default is 30.
15396
15397 @item threshold, t
15398 Set detection threshold factor. Default is 1.
15399 Lower is stricter.
15400
15401 @item skip
15402 Set how many pixels to skip when sampling frames. Default is 1.
15403 Allowed range is from 1 to 1024.
15404
15405 @item bypass
15406 Leave frames unchanged. Default is disabled.
15407 @end table
15408
15409 @section pixdesctest
15410
15411 Pixel format descriptor test filter, mainly useful for internal
15412 testing. The output video should be equal to the input video.
15413
15414 For example:
15415 @example
15416 format=monow, pixdesctest
15417 @end example
15418
15419 can be used to test the monowhite pixel format descriptor definition.
15420
15421 @section pixscope
15422
15423 Display sample values of color channels. Mainly useful for checking color
15424 and levels. Minimum supported resolution is 640x480.
15425
15426 The filters accept the following options:
15427
15428 @table @option
15429 @item x
15430 Set scope X position, relative offset on X axis.
15431
15432 @item y
15433 Set scope Y position, relative offset on Y axis.
15434
15435 @item w
15436 Set scope width.
15437
15438 @item h
15439 Set scope height.
15440
15441 @item o
15442 Set window opacity. This window also holds statistics about pixel area.
15443
15444 @item wx
15445 Set window X position, relative offset on X axis.
15446
15447 @item wy
15448 Set window Y position, relative offset on Y axis.
15449 @end table
15450
15451 @section pp
15452
15453 Enable the specified chain of postprocessing subfilters using libpostproc. This
15454 library should be automatically selected with a GPL build (@code{--enable-gpl}).
15455 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
15456 Each subfilter and some options have a short and a long name that can be used
15457 interchangeably, i.e. dr/dering are the same.
15458
15459 The filters accept the following options:
15460
15461 @table @option
15462 @item subfilters
15463 Set postprocessing subfilters string.
15464 @end table
15465
15466 All subfilters share common options to determine their scope:
15467
15468 @table @option
15469 @item a/autoq
15470 Honor the quality commands for this subfilter.
15471
15472 @item c/chrom
15473 Do chrominance filtering, too (default).
15474
15475 @item y/nochrom
15476 Do luminance filtering only (no chrominance).
15477
15478 @item n/noluma
15479 Do chrominance filtering only (no luminance).
15480 @end table
15481
15482 These options can be appended after the subfilter name, separated by a '|'.
15483
15484 Available subfilters are:
15485
15486 @table @option
15487 @item hb/hdeblock[|difference[|flatness]]
15488 Horizontal deblocking filter
15489 @table @option
15490 @item difference
15491 Difference factor where higher values mean more deblocking (default: @code{32}).
15492 @item flatness
15493 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15494 @end table
15495
15496 @item vb/vdeblock[|difference[|flatness]]
15497 Vertical deblocking filter
15498 @table @option
15499 @item difference
15500 Difference factor where higher values mean more deblocking (default: @code{32}).
15501 @item flatness
15502 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15503 @end table
15504
15505 @item ha/hadeblock[|difference[|flatness]]
15506 Accurate horizontal deblocking filter
15507 @table @option
15508 @item difference
15509 Difference factor where higher values mean more deblocking (default: @code{32}).
15510 @item flatness
15511 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15512 @end table
15513
15514 @item va/vadeblock[|difference[|flatness]]
15515 Accurate vertical deblocking filter
15516 @table @option
15517 @item difference
15518 Difference factor where higher values mean more deblocking (default: @code{32}).
15519 @item flatness
15520 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15521 @end table
15522 @end table
15523
15524 The horizontal and vertical deblocking filters share the difference and
15525 flatness values so you cannot set different horizontal and vertical
15526 thresholds.
15527
15528 @table @option
15529 @item h1/x1hdeblock
15530 Experimental horizontal deblocking filter
15531
15532 @item v1/x1vdeblock
15533 Experimental vertical deblocking filter
15534
15535 @item dr/dering
15536 Deringing filter
15537
15538 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
15539 @table @option
15540 @item threshold1
15541 larger -> stronger filtering
15542 @item threshold2
15543 larger -> stronger filtering
15544 @item threshold3
15545 larger -> stronger filtering
15546 @end table
15547
15548 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
15549 @table @option
15550 @item f/fullyrange
15551 Stretch luminance to @code{0-255}.
15552 @end table
15553
15554 @item lb/linblenddeint
15555 Linear blend deinterlacing filter that deinterlaces the given block by
15556 filtering all lines with a @code{(1 2 1)} filter.
15557
15558 @item li/linipoldeint
15559 Linear interpolating deinterlacing filter that deinterlaces the given block by
15560 linearly interpolating every second line.
15561
15562 @item ci/cubicipoldeint
15563 Cubic interpolating deinterlacing filter deinterlaces the given block by
15564 cubically interpolating every second line.
15565
15566 @item md/mediandeint
15567 Median deinterlacing filter that deinterlaces the given block by applying a
15568 median filter to every second line.
15569
15570 @item fd/ffmpegdeint
15571 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
15572 second line with a @code{(-1 4 2 4 -1)} filter.
15573
15574 @item l5/lowpass5
15575 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
15576 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
15577
15578 @item fq/forceQuant[|quantizer]
15579 Overrides the quantizer table from the input with the constant quantizer you
15580 specify.
15581 @table @option
15582 @item quantizer
15583 Quantizer to use
15584 @end table
15585
15586 @item de/default
15587 Default pp filter combination (@code{hb|a,vb|a,dr|a})
15588
15589 @item fa/fast
15590 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
15591
15592 @item ac
15593 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
15594 @end table
15595
15596 @subsection Examples
15597
15598 @itemize
15599 @item
15600 Apply horizontal and vertical deblocking, deringing and automatic
15601 brightness/contrast:
15602 @example
15603 pp=hb/vb/dr/al
15604 @end example
15605
15606 @item
15607 Apply default filters without brightness/contrast correction:
15608 @example
15609 pp=de/-al
15610 @end example
15611
15612 @item
15613 Apply default filters and temporal denoiser:
15614 @example
15615 pp=default/tmpnoise|1|2|3
15616 @end example
15617
15618 @item
15619 Apply deblocking on luminance only, and switch vertical deblocking on or off
15620 automatically depending on available CPU time:
15621 @example
15622 pp=hb|y/vb|a
15623 @end example
15624 @end itemize
15625
15626 @section pp7
15627 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
15628 similar to spp = 6 with 7 point DCT, where only the center sample is
15629 used after IDCT.
15630
15631 The filter accepts the following options:
15632
15633 @table @option
15634 @item qp
15635 Force a constant quantization parameter. It accepts an integer in range
15636 0 to 63. If not set, the filter will use the QP from the video stream
15637 (if available).
15638
15639 @item mode
15640 Set thresholding mode. Available modes are:
15641
15642 @table @samp
15643 @item hard
15644 Set hard thresholding.
15645 @item soft
15646 Set soft thresholding (better de-ringing effect, but likely blurrier).
15647 @item medium
15648 Set medium thresholding (good results, default).
15649 @end table
15650 @end table
15651
15652 @section premultiply
15653 Apply alpha premultiply effect to input video stream using first plane
15654 of second stream as alpha.
15655
15656 Both streams must have same dimensions and same pixel format.
15657
15658 The filter accepts the following option:
15659
15660 @table @option
15661 @item planes
15662 Set which planes will be processed, unprocessed planes will be copied.
15663 By default value 0xf, all planes will be processed.
15664
15665 @item inplace
15666 Do not require 2nd input for processing, instead use alpha plane from input stream.
15667 @end table
15668
15669 @section prewitt
15670 Apply prewitt operator to input video stream.
15671
15672 The filter accepts the following option:
15673
15674 @table @option
15675 @item planes
15676 Set which planes will be processed, unprocessed planes will be copied.
15677 By default value 0xf, all planes will be processed.
15678
15679 @item scale
15680 Set value which will be multiplied with filtered result.
15681
15682 @item delta
15683 Set value which will be added to filtered result.
15684 @end table
15685
15686 @section pseudocolor
15687
15688 Alter frame colors in video with pseudocolors.
15689
15690 This filter accepts the following options:
15691
15692 @table @option
15693 @item c0
15694 set pixel first component expression
15695
15696 @item c1
15697 set pixel second component expression
15698
15699 @item c2
15700 set pixel third component expression
15701
15702 @item c3
15703 set pixel fourth component expression, corresponds to the alpha component
15704
15705 @item i
15706 set component to use as base for altering colors
15707 @end table
15708
15709 Each of them specifies the expression to use for computing the lookup table for
15710 the corresponding pixel component values.
15711
15712 The expressions can contain the following constants and functions:
15713
15714 @table @option
15715 @item w
15716 @item h
15717 The input width and height.
15718
15719 @item val
15720 The input value for the pixel component.
15721
15722 @item ymin, umin, vmin, amin
15723 The minimum allowed component value.
15724
15725 @item ymax, umax, vmax, amax
15726 The maximum allowed component value.
15727 @end table
15728
15729 All expressions default to "val".
15730
15731 @subsection Examples
15732
15733 @itemize
15734 @item
15735 Change too high luma values to gradient:
15736 @example
15737 pseudocolor="'if(between(val,ymax,amax),lerp(ymin,ymax,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(umax,umin,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(vmin,vmax,(val-ymax)/(amax-ymax)),-1):-1'"
15738 @end example
15739 @end itemize
15740
15741 @section psnr
15742
15743 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
15744 Ratio) between two input videos.
15745
15746 This filter takes in input two input videos, the first input is
15747 considered the "main" source and is passed unchanged to the
15748 output. The second input is used as a "reference" video for computing
15749 the PSNR.
15750
15751 Both video inputs must have the same resolution and pixel format for
15752 this filter to work correctly. Also it assumes that both inputs
15753 have the same number of frames, which are compared one by one.
15754
15755 The obtained average PSNR is printed through the logging system.
15756
15757 The filter stores the accumulated MSE (mean squared error) of each
15758 frame, and at the end of the processing it is averaged across all frames
15759 equally, and the following formula is applied to obtain the PSNR:
15760
15761 @example
15762 PSNR = 10*log10(MAX^2/MSE)
15763 @end example
15764
15765 Where MAX is the average of the maximum values of each component of the
15766 image.
15767
15768 The description of the accepted parameters follows.
15769
15770 @table @option
15771 @item stats_file, f
15772 If specified the filter will use the named file to save the PSNR of
15773 each individual frame. When filename equals "-" the data is sent to
15774 standard output.
15775
15776 @item stats_version
15777 Specifies which version of the stats file format to use. Details of
15778 each format are written below.
15779 Default value is 1.
15780
15781 @item stats_add_max
15782 Determines whether the max value is output to the stats log.
15783 Default value is 0.
15784 Requires stats_version >= 2. If this is set and stats_version < 2,
15785 the filter will return an error.
15786 @end table
15787
15788 This filter also supports the @ref{framesync} options.
15789
15790 The file printed if @var{stats_file} is selected, contains a sequence of
15791 key/value pairs of the form @var{key}:@var{value} for each compared
15792 couple of frames.
15793
15794 If a @var{stats_version} greater than 1 is specified, a header line precedes
15795 the list of per-frame-pair stats, with key value pairs following the frame
15796 format with the following parameters:
15797
15798 @table @option
15799 @item psnr_log_version
15800 The version of the log file format. Will match @var{stats_version}.
15801
15802 @item fields
15803 A comma separated list of the per-frame-pair parameters included in
15804 the log.
15805 @end table
15806
15807 A description of each shown per-frame-pair parameter follows:
15808
15809 @table @option
15810 @item n
15811 sequential number of the input frame, starting from 1
15812
15813 @item mse_avg
15814 Mean Square Error pixel-by-pixel average difference of the compared
15815 frames, averaged over all the image components.
15816
15817 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
15818 Mean Square Error pixel-by-pixel average difference of the compared
15819 frames for the component specified by the suffix.
15820
15821 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
15822 Peak Signal to Noise ratio of the compared frames for the component
15823 specified by the suffix.
15824
15825 @item max_avg, max_y, max_u, max_v
15826 Maximum allowed value for each channel, and average over all
15827 channels.
15828 @end table
15829
15830 @subsection Examples
15831 @itemize
15832 @item
15833 For example:
15834 @example
15835 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15836 [main][ref] psnr="stats_file=stats.log" [out]
15837 @end example
15838
15839 On this example the input file being processed is compared with the
15840 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
15841 is stored in @file{stats.log}.
15842
15843 @item
15844 Another example with different containers:
15845 @example
15846 ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]psnr" -f null -
15847 @end example
15848 @end itemize
15849
15850 @anchor{pullup}
15851 @section pullup
15852
15853 Pulldown reversal (inverse telecine) filter, capable of handling mixed
15854 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
15855 content.
15856
15857 The pullup filter is designed to take advantage of future context in making
15858 its decisions. This filter is stateless in the sense that it does not lock
15859 onto a pattern to follow, but it instead looks forward to the following
15860 fields in order to identify matches and rebuild progressive frames.
15861
15862 To produce content with an even framerate, insert the fps filter after
15863 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
15864 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
15865
15866 The filter accepts the following options:
15867
15868 @table @option
15869 @item jl
15870 @item jr
15871 @item jt
15872 @item jb
15873 These options set the amount of "junk" to ignore at the left, right, top, and
15874 bottom of the image, respectively. Left and right are in units of 8 pixels,
15875 while top and bottom are in units of 2 lines.
15876 The default is 8 pixels on each side.
15877
15878 @item sb
15879 Set the strict breaks. Setting this option to 1 will reduce the chances of
15880 filter generating an occasional mismatched frame, but it may also cause an
15881 excessive number of frames to be dropped during high motion sequences.
15882 Conversely, setting it to -1 will make filter match fields more easily.
15883 This may help processing of video where there is slight blurring between
15884 the fields, but may also cause there to be interlaced frames in the output.
15885 Default value is @code{0}.
15886
15887 @item mp
15888 Set the metric plane to use. It accepts the following values:
15889 @table @samp
15890 @item l
15891 Use luma plane.
15892
15893 @item u
15894 Use chroma blue plane.
15895
15896 @item v
15897 Use chroma red plane.
15898 @end table
15899
15900 This option may be set to use chroma plane instead of the default luma plane
15901 for doing filter's computations. This may improve accuracy on very clean
15902 source material, but more likely will decrease accuracy, especially if there
15903 is chroma noise (rainbow effect) or any grayscale video.
15904 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
15905 load and make pullup usable in realtime on slow machines.
15906 @end table
15907
15908 For best results (without duplicated frames in the output file) it is
15909 necessary to change the output frame rate. For example, to inverse
15910 telecine NTSC input:
15911 @example
15912 ffmpeg -i input -vf pullup -r 24000/1001 ...
15913 @end example
15914
15915 @section qp
15916
15917 Change video quantization parameters (QP).
15918
15919 The filter accepts the following option:
15920
15921 @table @option
15922 @item qp
15923 Set expression for quantization parameter.
15924 @end table
15925
15926 The expression is evaluated through the eval API and can contain, among others,
15927 the following constants:
15928
15929 @table @var
15930 @item known
15931 1 if index is not 129, 0 otherwise.
15932
15933 @item qp
15934 Sequential index starting from -129 to 128.
15935 @end table
15936
15937 @subsection Examples
15938
15939 @itemize
15940 @item
15941 Some equation like:
15942 @example
15943 qp=2+2*sin(PI*qp)
15944 @end example
15945 @end itemize
15946
15947 @section random
15948
15949 Flush video frames from internal cache of frames into a random order.
15950 No frame is discarded.
15951 Inspired by @ref{frei0r} nervous filter.
15952
15953 @table @option
15954 @item frames
15955 Set size in number of frames of internal cache, in range from @code{2} to
15956 @code{512}. Default is @code{30}.
15957
15958 @item seed
15959 Set seed for random number generator, must be an integer included between
15960 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
15961 less than @code{0}, the filter will try to use a good random seed on a
15962 best effort basis.
15963 @end table
15964
15965 @section readeia608
15966
15967 Read closed captioning (EIA-608) information from the top lines of a video frame.
15968
15969 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
15970 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
15971 with EIA-608 data (starting from 0). A description of each metadata value follows:
15972
15973 @table @option
15974 @item lavfi.readeia608.X.cc
15975 The two bytes stored as EIA-608 data (printed in hexadecimal).
15976
15977 @item lavfi.readeia608.X.line
15978 The number of the line on which the EIA-608 data was identified and read.
15979 @end table
15980
15981 This filter accepts the following options:
15982
15983 @table @option
15984 @item scan_min
15985 Set the line to start scanning for EIA-608 data. Default is @code{0}.
15986
15987 @item scan_max
15988 Set the line to end scanning for EIA-608 data. Default is @code{29}.
15989
15990 @item spw
15991 Set the ratio of width reserved for sync code detection.
15992 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
15993
15994 @item chp
15995 Enable checking the parity bit. In the event of a parity error, the filter will output
15996 @code{0x00} for that character. Default is false.
15997
15998 @item lp
15999 Lowpass lines prior to further processing. Default is enabled.
16000 @end table
16001
16002 @subsection Commands
16003
16004 This filter supports the all above options as @ref{commands}.
16005
16006 @subsection Examples
16007
16008 @itemize
16009 @item
16010 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
16011 @example
16012 ffprobe -f lavfi -i movie=captioned_video.mov,readeia608 -show_entries frame=pkt_pts_time:frame_tags=lavfi.readeia608.0.cc,lavfi.readeia608.1.cc -of csv
16013 @end example
16014 @end itemize
16015
16016 @section readvitc
16017
16018 Read vertical interval timecode (VITC) information from the top lines of a
16019 video frame.
16020
16021 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
16022 timecode value, if a valid timecode has been detected. Further metadata key
16023 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
16024 timecode data has been found or not.
16025
16026 This filter accepts the following options:
16027
16028 @table @option
16029 @item scan_max
16030 Set the maximum number of lines to scan for VITC data. If the value is set to
16031 @code{-1} the full video frame is scanned. Default is @code{45}.
16032
16033 @item thr_b
16034 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
16035 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
16036
16037 @item thr_w
16038 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
16039 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
16040 @end table
16041
16042 @subsection Examples
16043
16044 @itemize
16045 @item
16046 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
16047 draw @code{--:--:--:--} as a placeholder:
16048 @example
16049 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
16050 @end example
16051 @end itemize
16052
16053 @section remap
16054
16055 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
16056
16057 Destination pixel at position (X, Y) will be picked from source (x, y) position
16058 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
16059 value for pixel will be used for destination pixel.
16060
16061 Xmap and Ymap input video streams must be of same dimensions. Output video stream
16062 will have Xmap/Ymap video stream dimensions.
16063 Xmap and Ymap input video streams are 16bit depth, single channel.
16064
16065 @table @option
16066 @item format
16067 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
16068 Default is @code{color}.
16069
16070 @item fill
16071 Specify the color of the unmapped pixels. For the syntax of this option,
16072 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
16073 manual,ffmpeg-utils}. Default color is @code{black}.
16074 @end table
16075
16076 @section removegrain
16077
16078 The removegrain filter is a spatial denoiser for progressive video.
16079
16080 @table @option
16081 @item m0
16082 Set mode for the first plane.
16083
16084 @item m1
16085 Set mode for the second plane.
16086
16087 @item m2
16088 Set mode for the third plane.
16089
16090 @item m3
16091 Set mode for the fourth plane.
16092 @end table
16093
16094 Range of mode is from 0 to 24. Description of each mode follows:
16095
16096 @table @var
16097 @item 0
16098 Leave input plane unchanged. Default.
16099
16100 @item 1
16101 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
16102
16103 @item 2
16104 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
16105
16106 @item 3
16107 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
16108
16109 @item 4
16110 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
16111 This is equivalent to a median filter.
16112
16113 @item 5
16114 Line-sensitive clipping giving the minimal change.
16115
16116 @item 6
16117 Line-sensitive clipping, intermediate.
16118
16119 @item 7
16120 Line-sensitive clipping, intermediate.
16121
16122 @item 8
16123 Line-sensitive clipping, intermediate.
16124
16125 @item 9
16126 Line-sensitive clipping on a line where the neighbours pixels are the closest.
16127
16128 @item 10
16129 Replaces the target pixel with the closest neighbour.
16130
16131 @item 11
16132 [1 2 1] horizontal and vertical kernel blur.
16133
16134 @item 12
16135 Same as mode 11.
16136
16137 @item 13
16138 Bob mode, interpolates top field from the line where the neighbours
16139 pixels are the closest.
16140
16141 @item 14
16142 Bob mode, interpolates bottom field from the line where the neighbours
16143 pixels are the closest.
16144
16145 @item 15
16146 Bob mode, interpolates top field. Same as 13 but with a more complicated
16147 interpolation formula.
16148
16149 @item 16
16150 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
16151 interpolation formula.
16152
16153 @item 17
16154 Clips the pixel with the minimum and maximum of respectively the maximum and
16155 minimum of each pair of opposite neighbour pixels.
16156
16157 @item 18
16158 Line-sensitive clipping using opposite neighbours whose greatest distance from
16159 the current pixel is minimal.
16160
16161 @item 19
16162 Replaces the pixel with the average of its 8 neighbours.
16163
16164 @item 20
16165 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
16166
16167 @item 21
16168 Clips pixels using the averages of opposite neighbour.
16169
16170 @item 22
16171 Same as mode 21 but simpler and faster.
16172
16173 @item 23
16174 Small edge and halo removal, but reputed useless.
16175
16176 @item 24
16177 Similar as 23.
16178 @end table
16179
16180 @section removelogo
16181
16182 Suppress a TV station logo, using an image file to determine which
16183 pixels comprise the logo. It works by filling in the pixels that
16184 comprise the logo with neighboring pixels.
16185
16186 The filter accepts the following options:
16187
16188 @table @option
16189 @item filename, f
16190 Set the filter bitmap file, which can be any image format supported by
16191 libavformat. The width and height of the image file must match those of the
16192 video stream being processed.
16193 @end table
16194
16195 Pixels in the provided bitmap image with a value of zero are not
16196 considered part of the logo, non-zero pixels are considered part of
16197 the logo. If you use white (255) for the logo and black (0) for the
16198 rest, you will be safe. For making the filter bitmap, it is
16199 recommended to take a screen capture of a black frame with the logo
16200 visible, and then using a threshold filter followed by the erode
16201 filter once or twice.
16202
16203 If needed, little splotches can be fixed manually. Remember that if
16204 logo pixels are not covered, the filter quality will be much
16205 reduced. Marking too many pixels as part of the logo does not hurt as
16206 much, but it will increase the amount of blurring needed to cover over
16207 the image and will destroy more information than necessary, and extra
16208 pixels will slow things down on a large logo.
16209
16210 @section repeatfields
16211
16212 This filter uses the repeat_field flag from the Video ES headers and hard repeats
16213 fields based on its value.
16214
16215 @section reverse
16216
16217 Reverse a video clip.
16218
16219 Warning: This filter requires memory to buffer the entire clip, so trimming
16220 is suggested.
16221
16222 @subsection Examples
16223
16224 @itemize
16225 @item
16226 Take the first 5 seconds of a clip, and reverse it.
16227 @example
16228 trim=end=5,reverse
16229 @end example
16230 @end itemize
16231
16232 @section rgbashift
16233 Shift R/G/B/A pixels horizontally and/or vertically.
16234
16235 The filter accepts the following options:
16236 @table @option
16237 @item rh
16238 Set amount to shift red horizontally.
16239 @item rv
16240 Set amount to shift red vertically.
16241 @item gh
16242 Set amount to shift green horizontally.
16243 @item gv
16244 Set amount to shift green vertically.
16245 @item bh
16246 Set amount to shift blue horizontally.
16247 @item bv
16248 Set amount to shift blue vertically.
16249 @item ah
16250 Set amount to shift alpha horizontally.
16251 @item av
16252 Set amount to shift alpha vertically.
16253 @item edge
16254 Set edge mode, can be @var{smear}, default, or @var{warp}.
16255 @end table
16256
16257 @subsection Commands
16258
16259 This filter supports the all above options as @ref{commands}.
16260
16261 @section roberts
16262 Apply roberts cross operator to input video stream.
16263
16264 The filter accepts the following option:
16265
16266 @table @option
16267 @item planes
16268 Set which planes will be processed, unprocessed planes will be copied.
16269 By default value 0xf, all planes will be processed.
16270
16271 @item scale
16272 Set value which will be multiplied with filtered result.
16273
16274 @item delta
16275 Set value which will be added to filtered result.
16276 @end table
16277
16278 @section rotate
16279
16280 Rotate video by an arbitrary angle expressed in radians.
16281
16282 The filter accepts the following options:
16283
16284 A description of the optional parameters follows.
16285 @table @option
16286 @item angle, a
16287 Set an expression for the angle by which to rotate the input video
16288 clockwise, expressed as a number of radians. A negative value will
16289 result in a counter-clockwise rotation. By default it is set to "0".
16290
16291 This expression is evaluated for each frame.
16292
16293 @item out_w, ow
16294 Set the output width expression, default value is "iw".
16295 This expression is evaluated just once during configuration.
16296
16297 @item out_h, oh
16298 Set the output height expression, default value is "ih".
16299 This expression is evaluated just once during configuration.
16300
16301 @item bilinear
16302 Enable bilinear interpolation if set to 1, a value of 0 disables
16303 it. Default value is 1.
16304
16305 @item fillcolor, c
16306 Set the color used to fill the output area not covered by the rotated
16307 image. For the general syntax of this option, check the
16308 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16309 If the special value "none" is selected then no
16310 background is printed (useful for example if the background is never shown).
16311
16312 Default value is "black".
16313 @end table
16314
16315 The expressions for the angle and the output size can contain the
16316 following constants and functions:
16317
16318 @table @option
16319 @item n
16320 sequential number of the input frame, starting from 0. It is always NAN
16321 before the first frame is filtered.
16322
16323 @item t
16324 time in seconds of the input frame, it is set to 0 when the filter is
16325 configured. It is always NAN before the first frame is filtered.
16326
16327 @item hsub
16328 @item vsub
16329 horizontal and vertical chroma subsample values. For example for the
16330 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16331
16332 @item in_w, iw
16333 @item in_h, ih
16334 the input video width and height
16335
16336 @item out_w, ow
16337 @item out_h, oh
16338 the output width and height, that is the size of the padded area as
16339 specified by the @var{width} and @var{height} expressions
16340
16341 @item rotw(a)
16342 @item roth(a)
16343 the minimal width/height required for completely containing the input
16344 video rotated by @var{a} radians.
16345
16346 These are only available when computing the @option{out_w} and
16347 @option{out_h} expressions.
16348 @end table
16349
16350 @subsection Examples
16351
16352 @itemize
16353 @item
16354 Rotate the input by PI/6 radians clockwise:
16355 @example
16356 rotate=PI/6
16357 @end example
16358
16359 @item
16360 Rotate the input by PI/6 radians counter-clockwise:
16361 @example
16362 rotate=-PI/6
16363 @end example
16364
16365 @item
16366 Rotate the input by 45 degrees clockwise:
16367 @example
16368 rotate=45*PI/180
16369 @end example
16370
16371 @item
16372 Apply a constant rotation with period T, starting from an angle of PI/3:
16373 @example
16374 rotate=PI/3+2*PI*t/T
16375 @end example
16376
16377 @item
16378 Make the input video rotation oscillating with a period of T
16379 seconds and an amplitude of A radians:
16380 @example
16381 rotate=A*sin(2*PI/T*t)
16382 @end example
16383
16384 @item
16385 Rotate the video, output size is chosen so that the whole rotating
16386 input video is always completely contained in the output:
16387 @example
16388 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
16389 @end example
16390
16391 @item
16392 Rotate the video, reduce the output size so that no background is ever
16393 shown:
16394 @example
16395 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
16396 @end example
16397 @end itemize
16398
16399 @subsection Commands
16400
16401 The filter supports the following commands:
16402
16403 @table @option
16404 @item a, angle
16405 Set the angle expression.
16406 The command accepts the same syntax of the corresponding option.
16407
16408 If the specified expression is not valid, it is kept at its current
16409 value.
16410 @end table
16411
16412 @section sab
16413
16414 Apply Shape Adaptive Blur.
16415
16416 The filter accepts the following options:
16417
16418 @table @option
16419 @item luma_radius, lr
16420 Set luma blur filter strength, must be a value in range 0.1-4.0, default
16421 value is 1.0. A greater value will result in a more blurred image, and
16422 in slower processing.
16423
16424 @item luma_pre_filter_radius, lpfr
16425 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
16426 value is 1.0.
16427
16428 @item luma_strength, ls
16429 Set luma maximum difference between pixels to still be considered, must
16430 be a value in the 0.1-100.0 range, default value is 1.0.
16431
16432 @item chroma_radius, cr
16433 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
16434 greater value will result in a more blurred image, and in slower
16435 processing.
16436
16437 @item chroma_pre_filter_radius, cpfr
16438 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
16439
16440 @item chroma_strength, cs
16441 Set chroma maximum difference between pixels to still be considered,
16442 must be a value in the -0.9-100.0 range.
16443 @end table
16444
16445 Each chroma option value, if not explicitly specified, is set to the
16446 corresponding luma option value.
16447
16448 @anchor{scale}
16449 @section scale
16450
16451 Scale (resize) the input video, using the libswscale library.
16452
16453 The scale filter forces the output display aspect ratio to be the same
16454 of the input, by changing the output sample aspect ratio.
16455
16456 If the input image format is different from the format requested by
16457 the next filter, the scale filter will convert the input to the
16458 requested format.
16459
16460 @subsection Options
16461 The filter accepts the following options, or any of the options
16462 supported by the libswscale scaler.
16463
16464 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
16465 the complete list of scaler options.
16466
16467 @table @option
16468 @item width, w
16469 @item height, h
16470 Set the output video dimension expression. Default value is the input
16471 dimension.
16472
16473 If the @var{width} or @var{w} value is 0, the input width is used for
16474 the output. If the @var{height} or @var{h} value is 0, the input height
16475 is used for the output.
16476
16477 If one and only one of the values is -n with n >= 1, the scale filter
16478 will use a value that maintains the aspect ratio of the input image,
16479 calculated from the other specified dimension. After that it will,
16480 however, make sure that the calculated dimension is divisible by n and
16481 adjust the value if necessary.
16482
16483 If both values are -n with n >= 1, the behavior will be identical to
16484 both values being set to 0 as previously detailed.
16485
16486 See below for the list of accepted constants for use in the dimension
16487 expression.
16488
16489 @item eval
16490 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
16491
16492 @table @samp
16493 @item init
16494 Only evaluate expressions once during the filter initialization or when a command is processed.
16495
16496 @item frame
16497 Evaluate expressions for each incoming frame.
16498
16499 @end table
16500
16501 Default value is @samp{init}.
16502
16503
16504 @item interl
16505 Set the interlacing mode. It accepts the following values:
16506
16507 @table @samp
16508 @item 1
16509 Force interlaced aware scaling.
16510
16511 @item 0
16512 Do not apply interlaced scaling.
16513
16514 @item -1
16515 Select interlaced aware scaling depending on whether the source frames
16516 are flagged as interlaced or not.
16517 @end table
16518
16519 Default value is @samp{0}.
16520
16521 @item flags
16522 Set libswscale scaling flags. See
16523 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16524 complete list of values. If not explicitly specified the filter applies
16525 the default flags.
16526
16527
16528 @item param0, param1
16529 Set libswscale input parameters for scaling algorithms that need them. See
16530 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16531 complete documentation. If not explicitly specified the filter applies
16532 empty parameters.
16533
16534
16535
16536 @item size, s
16537 Set the video size. For the syntax of this option, check the
16538 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16539
16540 @item in_color_matrix
16541 @item out_color_matrix
16542 Set in/output YCbCr color space type.
16543
16544 This allows the autodetected value to be overridden as well as allows forcing
16545 a specific value used for the output and encoder.
16546
16547 If not specified, the color space type depends on the pixel format.
16548
16549 Possible values:
16550
16551 @table @samp
16552 @item auto
16553 Choose automatically.
16554
16555 @item bt709
16556 Format conforming to International Telecommunication Union (ITU)
16557 Recommendation BT.709.
16558
16559 @item fcc
16560 Set color space conforming to the United States Federal Communications
16561 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
16562
16563 @item bt601
16564 @item bt470
16565 @item smpte170m
16566 Set color space conforming to:
16567
16568 @itemize
16569 @item
16570 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
16571
16572 @item
16573 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
16574
16575 @item
16576 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
16577
16578 @end itemize
16579
16580 @item smpte240m
16581 Set color space conforming to SMPTE ST 240:1999.
16582
16583 @item bt2020
16584 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
16585 @end table
16586
16587 @item in_range
16588 @item out_range
16589 Set in/output YCbCr sample range.
16590
16591 This allows the autodetected value to be overridden as well as allows forcing
16592 a specific value used for the output and encoder. If not specified, the
16593 range depends on the pixel format. Possible values:
16594
16595 @table @samp
16596 @item auto/unknown
16597 Choose automatically.
16598
16599 @item jpeg/full/pc
16600 Set full range (0-255 in case of 8-bit luma).
16601
16602 @item mpeg/limited/tv
16603 Set "MPEG" range (16-235 in case of 8-bit luma).
16604 @end table
16605
16606 @item force_original_aspect_ratio
16607 Enable decreasing or increasing output video width or height if necessary to
16608 keep the original aspect ratio. Possible values:
16609
16610 @table @samp
16611 @item disable
16612 Scale the video as specified and disable this feature.
16613
16614 @item decrease
16615 The output video dimensions will automatically be decreased if needed.
16616
16617 @item increase
16618 The output video dimensions will automatically be increased if needed.
16619
16620 @end table
16621
16622 One useful instance of this option is that when you know a specific device's
16623 maximum allowed resolution, you can use this to limit the output video to
16624 that, while retaining the aspect ratio. For example, device A allows
16625 1280x720 playback, and your video is 1920x800. Using this option (set it to
16626 decrease) and specifying 1280x720 to the command line makes the output
16627 1280x533.
16628
16629 Please note that this is a different thing than specifying -1 for @option{w}
16630 or @option{h}, you still need to specify the output resolution for this option
16631 to work.
16632
16633 @item force_divisible_by
16634 Ensures that both the output dimensions, width and height, are divisible by the
16635 given integer when used together with @option{force_original_aspect_ratio}. This
16636 works similar to using @code{-n} in the @option{w} and @option{h} options.
16637
16638 This option respects the value set for @option{force_original_aspect_ratio},
16639 increasing or decreasing the resolution accordingly. The video's aspect ratio
16640 may be slightly modified.
16641
16642 This option can be handy if you need to have a video fit within or exceed
16643 a defined resolution using @option{force_original_aspect_ratio} but also have
16644 encoder restrictions on width or height divisibility.
16645
16646 @end table
16647
16648 The values of the @option{w} and @option{h} options are expressions
16649 containing the following constants:
16650
16651 @table @var
16652 @item in_w
16653 @item in_h
16654 The input width and height
16655
16656 @item iw
16657 @item ih
16658 These are the same as @var{in_w} and @var{in_h}.
16659
16660 @item out_w
16661 @item out_h
16662 The output (scaled) width and height
16663
16664 @item ow
16665 @item oh
16666 These are the same as @var{out_w} and @var{out_h}
16667
16668 @item a
16669 The same as @var{iw} / @var{ih}
16670
16671 @item sar
16672 input sample aspect ratio
16673
16674 @item dar
16675 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
16676
16677 @item hsub
16678 @item vsub
16679 horizontal and vertical input chroma subsample values. For example for the
16680 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16681
16682 @item ohsub
16683 @item ovsub
16684 horizontal and vertical output chroma subsample values. For example for the
16685 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16686
16687 @item n
16688 The (sequential) number of the input frame, starting from 0.
16689 Only available with @code{eval=frame}.
16690
16691 @item t
16692 The presentation timestamp of the input frame, expressed as a number of
16693 seconds. Only available with @code{eval=frame}.
16694
16695 @item pos
16696 The position (byte offset) of the frame in the input stream, or NaN if
16697 this information is unavailable and/or meaningless (for example in case of synthetic video).
16698 Only available with @code{eval=frame}.
16699 @end table
16700
16701 @subsection Examples
16702
16703 @itemize
16704 @item
16705 Scale the input video to a size of 200x100
16706 @example
16707 scale=w=200:h=100
16708 @end example
16709
16710 This is equivalent to:
16711 @example
16712 scale=200:100
16713 @end example
16714
16715 or:
16716 @example
16717 scale=200x100
16718 @end example
16719
16720 @item
16721 Specify a size abbreviation for the output size:
16722 @example
16723 scale=qcif
16724 @end example
16725
16726 which can also be written as:
16727 @example
16728 scale=size=qcif
16729 @end example
16730
16731 @item
16732 Scale the input to 2x:
16733 @example
16734 scale=w=2*iw:h=2*ih
16735 @end example
16736
16737 @item
16738 The above is the same as:
16739 @example
16740 scale=2*in_w:2*in_h
16741 @end example
16742
16743 @item
16744 Scale the input to 2x with forced interlaced scaling:
16745 @example
16746 scale=2*iw:2*ih:interl=1
16747 @end example
16748
16749 @item
16750 Scale the input to half size:
16751 @example
16752 scale=w=iw/2:h=ih/2
16753 @end example
16754
16755 @item
16756 Increase the width, and set the height to the same size:
16757 @example
16758 scale=3/2*iw:ow
16759 @end example
16760
16761 @item
16762 Seek Greek harmony:
16763 @example
16764 scale=iw:1/PHI*iw
16765 scale=ih*PHI:ih
16766 @end example
16767
16768 @item
16769 Increase the height, and set the width to 3/2 of the height:
16770 @example
16771 scale=w=3/2*oh:h=3/5*ih
16772 @end example
16773
16774 @item
16775 Increase the size, making the size a multiple of the chroma
16776 subsample values:
16777 @example
16778 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
16779 @end example
16780
16781 @item
16782 Increase the width to a maximum of 500 pixels,
16783 keeping the same aspect ratio as the input:
16784 @example
16785 scale=w='min(500\, iw*3/2):h=-1'
16786 @end example
16787
16788 @item
16789 Make pixels square by combining scale and setsar:
16790 @example
16791 scale='trunc(ih*dar):ih',setsar=1/1
16792 @end example
16793
16794 @item
16795 Make pixels square by combining scale and setsar,
16796 making sure the resulting resolution is even (required by some codecs):
16797 @example
16798 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
16799 @end example
16800 @end itemize
16801
16802 @subsection Commands
16803
16804 This filter supports the following commands:
16805 @table @option
16806 @item width, w
16807 @item height, h
16808 Set the output video dimension expression.
16809 The command accepts the same syntax of the corresponding option.
16810
16811 If the specified expression is not valid, it is kept at its current
16812 value.
16813 @end table
16814
16815 @section scale_npp
16816
16817 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
16818 format conversion on CUDA video frames. Setting the output width and height
16819 works in the same way as for the @var{scale} filter.
16820
16821 The following additional options are accepted:
16822 @table @option
16823 @item format
16824 The pixel format of the output CUDA frames. If set to the string "same" (the
16825 default), the input format will be kept. Note that automatic format negotiation
16826 and conversion is not yet supported for hardware frames
16827
16828 @item interp_algo
16829 The interpolation algorithm used for resizing. One of the following:
16830 @table @option
16831 @item nn
16832 Nearest neighbour.
16833
16834 @item linear
16835 @item cubic
16836 @item cubic2p_bspline
16837 2-parameter cubic (B=1, C=0)
16838
16839 @item cubic2p_catmullrom
16840 2-parameter cubic (B=0, C=1/2)
16841
16842 @item cubic2p_b05c03
16843 2-parameter cubic (B=1/2, C=3/10)
16844
16845 @item super
16846 Supersampling
16847
16848 @item lanczos
16849 @end table
16850
16851 @item force_original_aspect_ratio
16852 Enable decreasing or increasing output video width or height if necessary to
16853 keep the original aspect ratio. Possible values:
16854
16855 @table @samp
16856 @item disable
16857 Scale the video as specified and disable this feature.
16858
16859 @item decrease
16860 The output video dimensions will automatically be decreased if needed.
16861
16862 @item increase
16863 The output video dimensions will automatically be increased if needed.
16864
16865 @end table
16866
16867 One useful instance of this option is that when you know a specific device's
16868 maximum allowed resolution, you can use this to limit the output video to
16869 that, while retaining the aspect ratio. For example, device A allows
16870 1280x720 playback, and your video is 1920x800. Using this option (set it to
16871 decrease) and specifying 1280x720 to the command line makes the output
16872 1280x533.
16873
16874 Please note that this is a different thing than specifying -1 for @option{w}
16875 or @option{h}, you still need to specify the output resolution for this option
16876 to work.
16877
16878 @item force_divisible_by
16879 Ensures that both the output dimensions, width and height, are divisible by the
16880 given integer when used together with @option{force_original_aspect_ratio}. This
16881 works similar to using @code{-n} in the @option{w} and @option{h} options.
16882
16883 This option respects the value set for @option{force_original_aspect_ratio},
16884 increasing or decreasing the resolution accordingly. The video's aspect ratio
16885 may be slightly modified.
16886
16887 This option can be handy if you need to have a video fit within or exceed
16888 a defined resolution using @option{force_original_aspect_ratio} but also have
16889 encoder restrictions on width or height divisibility.
16890
16891 @end table
16892
16893 @section scale2ref
16894
16895 Scale (resize) the input video, based on a reference video.
16896
16897 See the scale filter for available options, scale2ref supports the same but
16898 uses the reference video instead of the main input as basis. scale2ref also
16899 supports the following additional constants for the @option{w} and
16900 @option{h} options:
16901
16902 @table @var
16903 @item main_w
16904 @item main_h
16905 The main input video's width and height
16906
16907 @item main_a
16908 The same as @var{main_w} / @var{main_h}
16909
16910 @item main_sar
16911 The main input video's sample aspect ratio
16912
16913 @item main_dar, mdar
16914 The main input video's display aspect ratio. Calculated from
16915 @code{(main_w / main_h) * main_sar}.
16916
16917 @item main_hsub
16918 @item main_vsub
16919 The main input video's horizontal and vertical chroma subsample values.
16920 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
16921 is 1.
16922
16923 @item main_n
16924 The (sequential) number of the main input frame, starting from 0.
16925 Only available with @code{eval=frame}.
16926
16927 @item main_t
16928 The presentation timestamp of the main input frame, expressed as a number of
16929 seconds. Only available with @code{eval=frame}.
16930
16931 @item main_pos
16932 The position (byte offset) of the frame in the main input stream, or NaN if
16933 this information is unavailable and/or meaningless (for example in case of synthetic video).
16934 Only available with @code{eval=frame}.
16935 @end table
16936
16937 @subsection Examples
16938
16939 @itemize
16940 @item
16941 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
16942 @example
16943 'scale2ref[b][a];[a][b]overlay'
16944 @end example
16945
16946 @item
16947 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
16948 @example
16949 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
16950 @end example
16951 @end itemize
16952
16953 @subsection Commands
16954
16955 This filter supports the following commands:
16956 @table @option
16957 @item width, w
16958 @item height, h
16959 Set the output video dimension expression.
16960 The command accepts the same syntax of the corresponding option.
16961
16962 If the specified expression is not valid, it is kept at its current
16963 value.
16964 @end table
16965
16966 @section scroll
16967 Scroll input video horizontally and/or vertically by constant speed.
16968
16969 The filter accepts the following options:
16970 @table @option
16971 @item horizontal, h
16972 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
16973 Negative values changes scrolling direction.
16974
16975 @item vertical, v
16976 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
16977 Negative values changes scrolling direction.
16978
16979 @item hpos
16980 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
16981
16982 @item vpos
16983 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
16984 @end table
16985
16986 @subsection Commands
16987
16988 This filter supports the following @ref{commands}:
16989 @table @option
16990 @item horizontal, h
16991 Set the horizontal scrolling speed.
16992 @item vertical, v
16993 Set the vertical scrolling speed.
16994 @end table
16995
16996 @anchor{scdet}
16997 @section scdet
16998
16999 Detect video scene change.
17000
17001 This filter sets frame metadata with mafd between frame, the scene score, and
17002 forward the frame to the next filter, so they can use these metadata to detect
17003 scene change or others.
17004
17005 In addition, this filter logs a message and sets frame metadata when it detects
17006 a scene change by @option{threshold}.
17007
17008 @code{lavfi.scd.mafd} metadata keys are set with mafd for every frame.
17009
17010 @code{lavfi.scd.score} metadata keys are set with scene change score for every frame
17011 to detect scene change.
17012
17013 @code{lavfi.scd.time} metadata keys are set with current filtered frame time which
17014 detect scene change with @option{threshold}.
17015
17016 The filter accepts the following options:
17017
17018 @table @option
17019 @item threshold, t
17020 Set the scene change detection threshold as a percentage of maximum change. Good
17021 values are in the @code{[8.0, 14.0]} range. The range for @option{threshold} is
17022 @code{[0., 100.]}.
17023
17024 Default value is @code{10.}.
17025
17026 @item sc_pass, s
17027 Set the flag to pass scene change frames to the next filter. Default value is @code{0}
17028 You can enable it if you want to get snapshot of scene change frames only.
17029 @end table
17030
17031 @anchor{selectivecolor}
17032 @section selectivecolor
17033
17034 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
17035 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
17036 by the "purity" of the color (that is, how saturated it already is).
17037
17038 This filter is similar to the Adobe Photoshop Selective Color tool.
17039
17040 The filter accepts the following options:
17041
17042 @table @option
17043 @item correction_method
17044 Select color correction method.
17045
17046 Available values are:
17047 @table @samp
17048 @item absolute
17049 Specified adjustments are applied "as-is" (added/subtracted to original pixel
17050 component value).
17051 @item relative
17052 Specified adjustments are relative to the original component value.
17053 @end table
17054 Default is @code{absolute}.
17055 @item reds
17056 Adjustments for red pixels (pixels where the red component is the maximum)
17057 @item yellows
17058 Adjustments for yellow pixels (pixels where the blue component is the minimum)
17059 @item greens
17060 Adjustments for green pixels (pixels where the green component is the maximum)
17061 @item cyans
17062 Adjustments for cyan pixels (pixels where the red component is the minimum)
17063 @item blues
17064 Adjustments for blue pixels (pixels where the blue component is the maximum)
17065 @item magentas
17066 Adjustments for magenta pixels (pixels where the green component is the minimum)
17067 @item whites
17068 Adjustments for white pixels (pixels where all components are greater than 128)
17069 @item neutrals
17070 Adjustments for all pixels except pure black and pure white
17071 @item blacks
17072 Adjustments for black pixels (pixels where all components are lesser than 128)
17073 @item psfile
17074 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
17075 @end table
17076
17077 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
17078 4 space separated floating point adjustment values in the [-1,1] range,
17079 respectively to adjust the amount of cyan, magenta, yellow and black for the
17080 pixels of its range.
17081
17082 @subsection Examples
17083
17084 @itemize
17085 @item
17086 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
17087 increase magenta by 27% in blue areas:
17088 @example
17089 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
17090 @end example
17091
17092 @item
17093 Use a Photoshop selective color preset:
17094 @example
17095 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
17096 @end example
17097 @end itemize
17098
17099 @anchor{separatefields}
17100 @section separatefields
17101
17102 The @code{separatefields} takes a frame-based video input and splits
17103 each frame into its components fields, producing a new half height clip
17104 with twice the frame rate and twice the frame count.
17105
17106 This filter use field-dominance information in frame to decide which
17107 of each pair of fields to place first in the output.
17108 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
17109
17110 @section setdar, setsar
17111
17112 The @code{setdar} filter sets the Display Aspect Ratio for the filter
17113 output video.
17114
17115 This is done by changing the specified Sample (aka Pixel) Aspect
17116 Ratio, according to the following equation:
17117 @example
17118 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
17119 @end example
17120
17121 Keep in mind that the @code{setdar} filter does not modify the pixel
17122 dimensions of the video frame. Also, the display aspect ratio set by
17123 this filter may be changed by later filters in the filterchain,
17124 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
17125 applied.
17126
17127 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
17128 the filter output video.
17129
17130 Note that as a consequence of the application of this filter, the
17131 output display aspect ratio will change according to the equation
17132 above.
17133
17134 Keep in mind that the sample aspect ratio set by the @code{setsar}
17135 filter may be changed by later filters in the filterchain, e.g. if
17136 another "setsar" or a "setdar" filter is applied.
17137
17138 It accepts the following parameters:
17139
17140 @table @option
17141 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
17142 Set the aspect ratio used by the filter.
17143
17144 The parameter can be a floating point number string, an expression, or
17145 a string of the form @var{num}:@var{den}, where @var{num} and
17146 @var{den} are the numerator and denominator of the aspect ratio. If
17147 the parameter is not specified, it is assumed the value "0".
17148 In case the form "@var{num}:@var{den}" is used, the @code{:} character
17149 should be escaped.
17150
17151 @item max
17152 Set the maximum integer value to use for expressing numerator and
17153 denominator when reducing the expressed aspect ratio to a rational.
17154 Default value is @code{100}.
17155
17156 @end table
17157
17158 The parameter @var{sar} is an expression containing
17159 the following constants:
17160
17161 @table @option
17162 @item E, PI, PHI
17163 These are approximated values for the mathematical constants e
17164 (Euler's number), pi (Greek pi), and phi (the golden ratio).
17165
17166 @item w, h
17167 The input width and height.
17168
17169 @item a
17170 These are the same as @var{w} / @var{h}.
17171
17172 @item sar
17173 The input sample aspect ratio.
17174
17175 @item dar
17176 The input display aspect ratio. It is the same as
17177 (@var{w} / @var{h}) * @var{sar}.
17178
17179 @item hsub, vsub
17180 Horizontal and vertical chroma subsample values. For example, for the
17181 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17182 @end table
17183
17184 @subsection Examples
17185
17186 @itemize
17187
17188 @item
17189 To change the display aspect ratio to 16:9, specify one of the following:
17190 @example
17191 setdar=dar=1.77777
17192 setdar=dar=16/9
17193 @end example
17194
17195 @item
17196 To change the sample aspect ratio to 10:11, specify:
17197 @example
17198 setsar=sar=10/11
17199 @end example
17200
17201 @item
17202 To set a display aspect ratio of 16:9, and specify a maximum integer value of
17203 1000 in the aspect ratio reduction, use the command:
17204 @example
17205 setdar=ratio=16/9:max=1000
17206 @end example
17207
17208 @end itemize
17209
17210 @anchor{setfield}
17211 @section setfield
17212
17213 Force field for the output video frame.
17214
17215 The @code{setfield} filter marks the interlace type field for the
17216 output frames. It does not change the input frame, but only sets the
17217 corresponding property, which affects how the frame is treated by
17218 following filters (e.g. @code{fieldorder} or @code{yadif}).
17219
17220 The filter accepts the following options:
17221
17222 @table @option
17223
17224 @item mode
17225 Available values are:
17226
17227 @table @samp
17228 @item auto
17229 Keep the same field property.
17230
17231 @item bff
17232 Mark the frame as bottom-field-first.
17233
17234 @item tff
17235 Mark the frame as top-field-first.
17236
17237 @item prog
17238 Mark the frame as progressive.
17239 @end table
17240 @end table
17241
17242 @anchor{setparams}
17243 @section setparams
17244
17245 Force frame parameter for the output video frame.
17246
17247 The @code{setparams} filter marks interlace and color range for the
17248 output frames. It does not change the input frame, but only sets the
17249 corresponding property, which affects how the frame is treated by
17250 filters/encoders.
17251
17252 @table @option
17253 @item field_mode
17254 Available values are:
17255
17256 @table @samp
17257 @item auto
17258 Keep the same field property (default).
17259
17260 @item bff
17261 Mark the frame as bottom-field-first.
17262
17263 @item tff
17264 Mark the frame as top-field-first.
17265
17266 @item prog
17267 Mark the frame as progressive.
17268 @end table
17269
17270 @item range
17271 Available values are:
17272
17273 @table @samp
17274 @item auto
17275 Keep the same color range property (default).
17276
17277 @item unspecified, unknown
17278 Mark the frame as unspecified color range.
17279
17280 @item limited, tv, mpeg
17281 Mark the frame as limited range.
17282
17283 @item full, pc, jpeg
17284 Mark the frame as full range.
17285 @end table
17286
17287 @item color_primaries
17288 Set the color primaries.
17289 Available values are:
17290
17291 @table @samp
17292 @item auto
17293 Keep the same color primaries property (default).
17294
17295 @item bt709
17296 @item unknown
17297 @item bt470m
17298 @item bt470bg
17299 @item smpte170m
17300 @item smpte240m
17301 @item film
17302 @item bt2020
17303 @item smpte428
17304 @item smpte431
17305 @item smpte432
17306 @item jedec-p22
17307 @end table
17308
17309 @item color_trc
17310 Set the color transfer.
17311 Available values are:
17312
17313 @table @samp
17314 @item auto
17315 Keep the same color trc property (default).
17316
17317 @item bt709
17318 @item unknown
17319 @item bt470m
17320 @item bt470bg
17321 @item smpte170m
17322 @item smpte240m
17323 @item linear
17324 @item log100
17325 @item log316
17326 @item iec61966-2-4
17327 @item bt1361e
17328 @item iec61966-2-1
17329 @item bt2020-10
17330 @item bt2020-12
17331 @item smpte2084
17332 @item smpte428
17333 @item arib-std-b67
17334 @end table
17335
17336 @item colorspace
17337 Set the colorspace.
17338 Available values are:
17339
17340 @table @samp
17341 @item auto
17342 Keep the same colorspace property (default).
17343
17344 @item gbr
17345 @item bt709
17346 @item unknown
17347 @item fcc
17348 @item bt470bg
17349 @item smpte170m
17350 @item smpte240m
17351 @item ycgco
17352 @item bt2020nc
17353 @item bt2020c
17354 @item smpte2085
17355 @item chroma-derived-nc
17356 @item chroma-derived-c
17357 @item ictcp
17358 @end table
17359 @end table
17360
17361 @section showinfo
17362
17363 Show a line containing various information for each input video frame.
17364 The input video is not modified.
17365
17366 This filter supports the following options:
17367
17368 @table @option
17369 @item checksum
17370 Calculate checksums of each plane. By default enabled.
17371 @end table
17372
17373 The shown line contains a sequence of key/value pairs of the form
17374 @var{key}:@var{value}.
17375
17376 The following values are shown in the output:
17377
17378 @table @option
17379 @item n
17380 The (sequential) number of the input frame, starting from 0.
17381
17382 @item pts
17383 The Presentation TimeStamp of the input frame, expressed as a number of
17384 time base units. The time base unit depends on the filter input pad.
17385
17386 @item pts_time
17387 The Presentation TimeStamp of the input frame, expressed as a number of
17388 seconds.
17389
17390 @item pos
17391 The position of the frame in the input stream, or -1 if this information is
17392 unavailable and/or meaningless (for example in case of synthetic video).
17393
17394 @item fmt
17395 The pixel format name.
17396
17397 @item sar
17398 The sample aspect ratio of the input frame, expressed in the form
17399 @var{num}/@var{den}.
17400
17401 @item s
17402 The size of the input frame. For the syntax of this option, check the
17403 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17404
17405 @item i
17406 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
17407 for bottom field first).
17408
17409 @item iskey
17410 This is 1 if the frame is a key frame, 0 otherwise.
17411
17412 @item type
17413 The picture type of the input frame ("I" for an I-frame, "P" for a
17414 P-frame, "B" for a B-frame, or "?" for an unknown type).
17415 Also refer to the documentation of the @code{AVPictureType} enum and of
17416 the @code{av_get_picture_type_char} function defined in
17417 @file{libavutil/avutil.h}.
17418
17419 @item checksum
17420 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
17421
17422 @item plane_checksum
17423 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
17424 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
17425
17426 @item mean
17427 The mean value of pixels in each plane of the input frame, expressed in the form
17428 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
17429
17430 @item stdev
17431 The standard deviation of pixel values in each plane of the input frame, expressed
17432 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
17433
17434 @end table
17435
17436 @section showpalette
17437
17438 Displays the 256 colors palette of each frame. This filter is only relevant for
17439 @var{pal8} pixel format frames.
17440
17441 It accepts the following option:
17442
17443 @table @option
17444 @item s
17445 Set the size of the box used to represent one palette color entry. Default is
17446 @code{30} (for a @code{30x30} pixel box).
17447 @end table
17448
17449 @section shuffleframes
17450
17451 Reorder and/or duplicate and/or drop video frames.
17452
17453 It accepts the following parameters:
17454
17455 @table @option
17456 @item mapping
17457 Set the destination indexes of input frames.
17458 This is space or '|' separated list of indexes that maps input frames to output
17459 frames. Number of indexes also sets maximal value that each index may have.
17460 '-1' index have special meaning and that is to drop frame.
17461 @end table
17462
17463 The first frame has the index 0. The default is to keep the input unchanged.
17464
17465 @subsection Examples
17466
17467 @itemize
17468 @item
17469 Swap second and third frame of every three frames of the input:
17470 @example
17471 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
17472 @end example
17473
17474 @item
17475 Swap 10th and 1st frame of every ten frames of the input:
17476 @example
17477 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
17478 @end example
17479 @end itemize
17480
17481 @section shuffleplanes
17482
17483 Reorder and/or duplicate video planes.
17484
17485 It accepts the following parameters:
17486
17487 @table @option
17488
17489 @item map0
17490 The index of the input plane to be used as the first output plane.
17491
17492 @item map1
17493 The index of the input plane to be used as the second output plane.
17494
17495 @item map2
17496 The index of the input plane to be used as the third output plane.
17497
17498 @item map3
17499 The index of the input plane to be used as the fourth output plane.
17500
17501 @end table
17502
17503 The first plane has the index 0. The default is to keep the input unchanged.
17504
17505 @subsection Examples
17506
17507 @itemize
17508 @item
17509 Swap the second and third planes of the input:
17510 @example
17511 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
17512 @end example
17513 @end itemize
17514
17515 @anchor{signalstats}
17516 @section signalstats
17517 Evaluate various visual metrics that assist in determining issues associated
17518 with the digitization of analog video media.
17519
17520 By default the filter will log these metadata values:
17521
17522 @table @option
17523 @item YMIN
17524 Display the minimal Y value contained within the input frame. Expressed in
17525 range of [0-255].
17526
17527 @item YLOW
17528 Display the Y value at the 10% percentile within the input frame. Expressed in
17529 range of [0-255].
17530
17531 @item YAVG
17532 Display the average Y value within the input frame. Expressed in range of
17533 [0-255].
17534
17535 @item YHIGH
17536 Display the Y value at the 90% percentile within the input frame. Expressed in
17537 range of [0-255].
17538
17539 @item YMAX
17540 Display the maximum Y value contained within the input frame. Expressed in
17541 range of [0-255].
17542
17543 @item UMIN
17544 Display the minimal U value contained within the input frame. Expressed in
17545 range of [0-255].
17546
17547 @item ULOW
17548 Display the U value at the 10% percentile within the input frame. Expressed in
17549 range of [0-255].
17550
17551 @item UAVG
17552 Display the average U value within the input frame. Expressed in range of
17553 [0-255].
17554
17555 @item UHIGH
17556 Display the U value at the 90% percentile within the input frame. Expressed in
17557 range of [0-255].
17558
17559 @item UMAX
17560 Display the maximum U value contained within the input frame. Expressed in
17561 range of [0-255].
17562
17563 @item VMIN
17564 Display the minimal V value contained within the input frame. Expressed in
17565 range of [0-255].
17566
17567 @item VLOW
17568 Display the V value at the 10% percentile within the input frame. Expressed in
17569 range of [0-255].
17570
17571 @item VAVG
17572 Display the average V value within the input frame. Expressed in range of
17573 [0-255].
17574
17575 @item VHIGH
17576 Display the V value at the 90% percentile within the input frame. Expressed in
17577 range of [0-255].
17578
17579 @item VMAX
17580 Display the maximum V value contained within the input frame. Expressed in
17581 range of [0-255].
17582
17583 @item SATMIN
17584 Display the minimal saturation value contained within the input frame.
17585 Expressed in range of [0-~181.02].
17586
17587 @item SATLOW
17588 Display the saturation value at the 10% percentile within the input frame.
17589 Expressed in range of [0-~181.02].
17590
17591 @item SATAVG
17592 Display the average saturation value within the input frame. Expressed in range
17593 of [0-~181.02].
17594
17595 @item SATHIGH
17596 Display the saturation value at the 90% percentile within the input frame.
17597 Expressed in range of [0-~181.02].
17598
17599 @item SATMAX
17600 Display the maximum saturation value contained within the input frame.
17601 Expressed in range of [0-~181.02].
17602
17603 @item HUEMED
17604 Display the median value for hue within the input frame. Expressed in range of
17605 [0-360].
17606
17607 @item HUEAVG
17608 Display the average value for hue within the input frame. Expressed in range of
17609 [0-360].
17610
17611 @item YDIF
17612 Display the average of sample value difference between all values of the Y
17613 plane in the current frame and corresponding values of the previous input frame.
17614 Expressed in range of [0-255].
17615
17616 @item UDIF
17617 Display the average of sample value difference between all values of the U
17618 plane in the current frame and corresponding values of the previous input frame.
17619 Expressed in range of [0-255].
17620
17621 @item VDIF
17622 Display the average of sample value difference between all values of the V
17623 plane in the current frame and corresponding values of the previous input frame.
17624 Expressed in range of [0-255].
17625
17626 @item YBITDEPTH
17627 Display bit depth of Y plane in current frame.
17628 Expressed in range of [0-16].
17629
17630 @item UBITDEPTH
17631 Display bit depth of U plane in current frame.
17632 Expressed in range of [0-16].
17633
17634 @item VBITDEPTH
17635 Display bit depth of V plane in current frame.
17636 Expressed in range of [0-16].
17637 @end table
17638
17639 The filter accepts the following options:
17640
17641 @table @option
17642 @item stat
17643 @item out
17644
17645 @option{stat} specify an additional form of image analysis.
17646 @option{out} output video with the specified type of pixel highlighted.
17647
17648 Both options accept the following values:
17649
17650 @table @samp
17651 @item tout
17652 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
17653 unlike the neighboring pixels of the same field. Examples of temporal outliers
17654 include the results of video dropouts, head clogs, or tape tracking issues.
17655
17656 @item vrep
17657 Identify @var{vertical line repetition}. Vertical line repetition includes
17658 similar rows of pixels within a frame. In born-digital video vertical line
17659 repetition is common, but this pattern is uncommon in video digitized from an
17660 analog source. When it occurs in video that results from the digitization of an
17661 analog source it can indicate concealment from a dropout compensator.
17662
17663 @item brng
17664 Identify pixels that fall outside of legal broadcast range.
17665 @end table
17666
17667 @item color, c
17668 Set the highlight color for the @option{out} option. The default color is
17669 yellow.
17670 @end table
17671
17672 @subsection Examples
17673
17674 @itemize
17675 @item
17676 Output data of various video metrics:
17677 @example
17678 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
17679 @end example
17680
17681 @item
17682 Output specific data about the minimum and maximum values of the Y plane per frame:
17683 @example
17684 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
17685 @end example
17686
17687 @item
17688 Playback video while highlighting pixels that are outside of broadcast range in red.
17689 @example
17690 ffplay example.mov -vf signalstats="out=brng:color=red"
17691 @end example
17692
17693 @item
17694 Playback video with signalstats metadata drawn over the frame.
17695 @example
17696 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
17697 @end example
17698
17699 The contents of signalstat_drawtext.txt used in the command are:
17700 @example
17701 time %@{pts:hms@}
17702 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
17703 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
17704 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
17705 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
17706
17707 @end example
17708 @end itemize
17709
17710 @anchor{signature}
17711 @section signature
17712
17713 Calculates the MPEG-7 Video Signature. The filter can handle more than one
17714 input. In this case the matching between the inputs can be calculated additionally.
17715 The filter always passes through the first input. The signature of each stream can
17716 be written into a file.
17717
17718 It accepts the following options:
17719
17720 @table @option
17721 @item detectmode
17722 Enable or disable the matching process.
17723
17724 Available values are:
17725
17726 @table @samp
17727 @item off
17728 Disable the calculation of a matching (default).
17729 @item full
17730 Calculate the matching for the whole video and output whether the whole video
17731 matches or only parts.
17732 @item fast
17733 Calculate only until a matching is found or the video ends. Should be faster in
17734 some cases.
17735 @end table
17736
17737 @item nb_inputs
17738 Set the number of inputs. The option value must be a non negative integer.
17739 Default value is 1.
17740
17741 @item filename
17742 Set the path to which the output is written. If there is more than one input,
17743 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
17744 integer), that will be replaced with the input number. If no filename is
17745 specified, no output will be written. This is the default.
17746
17747 @item format
17748 Choose the output format.
17749
17750 Available values are:
17751
17752 @table @samp
17753 @item binary
17754 Use the specified binary representation (default).
17755 @item xml
17756 Use the specified xml representation.
17757 @end table
17758
17759 @item th_d
17760 Set threshold to detect one word as similar. The option value must be an integer
17761 greater than zero. The default value is 9000.
17762
17763 @item th_dc
17764 Set threshold to detect all words as similar. The option value must be an integer
17765 greater than zero. The default value is 60000.
17766
17767 @item th_xh
17768 Set threshold to detect frames as similar. The option value must be an integer
17769 greater than zero. The default value is 116.
17770
17771 @item th_di
17772 Set the minimum length of a sequence in frames to recognize it as matching
17773 sequence. The option value must be a non negative integer value.
17774 The default value is 0.
17775
17776 @item th_it
17777 Set the minimum relation, that matching frames to all frames must have.
17778 The option value must be a double value between 0 and 1. The default value is 0.5.
17779 @end table
17780
17781 @subsection Examples
17782
17783 @itemize
17784 @item
17785 To calculate the signature of an input video and store it in signature.bin:
17786 @example
17787 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
17788 @end example
17789
17790 @item
17791 To detect whether two videos match and store the signatures in XML format in
17792 signature0.xml and signature1.xml:
17793 @example
17794 ffmpeg -i input1.mkv -i input2.mkv -filter_complex "[0:v][1:v] signature=nb_inputs=2:detectmode=full:format=xml:filename=signature%d.xml" -map :v -f null -
17795 @end example
17796
17797 @end itemize
17798
17799 @anchor{smartblur}
17800 @section smartblur
17801
17802 Blur the input video without impacting the outlines.
17803
17804 It accepts the following options:
17805
17806 @table @option
17807 @item luma_radius, lr
17808 Set the luma radius. The option value must be a float number in
17809 the range [0.1,5.0] that specifies the variance of the gaussian filter
17810 used to blur the image (slower if larger). Default value is 1.0.
17811
17812 @item luma_strength, ls
17813 Set the luma strength. The option value must be a float number
17814 in the range [-1.0,1.0] that configures the blurring. A value included
17815 in [0.0,1.0] will blur the image whereas a value included in
17816 [-1.0,0.0] will sharpen the image. Default value is 1.0.
17817
17818 @item luma_threshold, lt
17819 Set the luma threshold used as a coefficient to determine
17820 whether a pixel should be blurred or not. The option value must be an
17821 integer in the range [-30,30]. A value of 0 will filter all the image,
17822 a value included in [0,30] will filter flat areas and a value included
17823 in [-30,0] will filter edges. Default value is 0.
17824
17825 @item chroma_radius, cr
17826 Set the chroma radius. The option value must be a float number in
17827 the range [0.1,5.0] that specifies the variance of the gaussian filter
17828 used to blur the image (slower if larger). Default value is @option{luma_radius}.
17829
17830 @item chroma_strength, cs
17831 Set the chroma strength. The option value must be a float number
17832 in the range [-1.0,1.0] that configures the blurring. A value included
17833 in [0.0,1.0] will blur the image whereas a value included in
17834 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
17835
17836 @item chroma_threshold, ct
17837 Set the chroma threshold used as a coefficient to determine
17838 whether a pixel should be blurred or not. The option value must be an
17839 integer in the range [-30,30]. A value of 0 will filter all the image,
17840 a value included in [0,30] will filter flat areas and a value included
17841 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
17842 @end table
17843
17844 If a chroma option is not explicitly set, the corresponding luma value
17845 is set.
17846
17847 @section sobel
17848 Apply sobel operator to input video stream.
17849
17850 The filter accepts the following option:
17851
17852 @table @option
17853 @item planes
17854 Set which planes will be processed, unprocessed planes will be copied.
17855 By default value 0xf, all planes will be processed.
17856
17857 @item scale
17858 Set value which will be multiplied with filtered result.
17859
17860 @item delta
17861 Set value which will be added to filtered result.
17862 @end table
17863
17864 @anchor{spp}
17865 @section spp
17866
17867 Apply a simple postprocessing filter that compresses and decompresses the image
17868 at several (or - in the case of @option{quality} level @code{6} - all) shifts
17869 and average the results.
17870
17871 The filter accepts the following options:
17872
17873 @table @option
17874 @item quality
17875 Set quality. This option defines the number of levels for averaging. It accepts
17876 an integer in the range 0-6. If set to @code{0}, the filter will have no
17877 effect. A value of @code{6} means the higher quality. For each increment of
17878 that value the speed drops by a factor of approximately 2.  Default value is
17879 @code{3}.
17880
17881 @item qp
17882 Force a constant quantization parameter. If not set, the filter will use the QP
17883 from the video stream (if available).
17884
17885 @item mode
17886 Set thresholding mode. Available modes are:
17887
17888 @table @samp
17889 @item hard
17890 Set hard thresholding (default).
17891 @item soft
17892 Set soft thresholding (better de-ringing effect, but likely blurrier).
17893 @end table
17894
17895 @item use_bframe_qp
17896 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
17897 option may cause flicker since the B-Frames have often larger QP. Default is
17898 @code{0} (not enabled).
17899 @end table
17900
17901 @subsection Commands
17902
17903 This filter supports the following commands:
17904 @table @option
17905 @item quality, level
17906 Set quality level. The value @code{max} can be used to set the maximum level,
17907 currently @code{6}.
17908 @end table
17909
17910 @anchor{sr}
17911 @section sr
17912
17913 Scale the input by applying one of the super-resolution methods based on
17914 convolutional neural networks. Supported models:
17915
17916 @itemize
17917 @item
17918 Super-Resolution Convolutional Neural Network model (SRCNN).
17919 See @url{https://arxiv.org/abs/1501.00092}.
17920
17921 @item
17922 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
17923 See @url{https://arxiv.org/abs/1609.05158}.
17924 @end itemize
17925
17926 Training scripts as well as scripts for model file (.pb) saving can be found at
17927 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
17928 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
17929
17930 Native model files (.model) can be generated from TensorFlow model
17931 files (.pb) by using tools/python/convert.py
17932
17933 The filter accepts the following options:
17934
17935 @table @option
17936 @item dnn_backend
17937 Specify which DNN backend to use for model loading and execution. This option accepts
17938 the following values:
17939
17940 @table @samp
17941 @item native
17942 Native implementation of DNN loading and execution.
17943
17944 @item tensorflow
17945 TensorFlow backend. To enable this backend you
17946 need to install the TensorFlow for C library (see
17947 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
17948 @code{--enable-libtensorflow}
17949 @end table
17950
17951 Default value is @samp{native}.
17952
17953 @item model
17954 Set path to model file specifying network architecture and its parameters.
17955 Note that different backends use different file formats. TensorFlow backend
17956 can load files for both formats, while native backend can load files for only
17957 its format.
17958
17959 @item scale_factor
17960 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
17961 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
17962 input upscaled using bicubic upscaling with proper scale factor.
17963 @end table
17964
17965 This feature can also be finished with @ref{dnn_processing} filter.
17966
17967 @section ssim
17968
17969 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
17970
17971 This filter takes in input two input videos, the first input is
17972 considered the "main" source and is passed unchanged to the
17973 output. The second input is used as a "reference" video for computing
17974 the SSIM.
17975
17976 Both video inputs must have the same resolution and pixel format for
17977 this filter to work correctly. Also it assumes that both inputs
17978 have the same number of frames, which are compared one by one.
17979
17980 The filter stores the calculated SSIM of each frame.
17981
17982 The description of the accepted parameters follows.
17983
17984 @table @option
17985 @item stats_file, f
17986 If specified the filter will use the named file to save the SSIM of
17987 each individual frame. When filename equals "-" the data is sent to
17988 standard output.
17989 @end table
17990
17991 The file printed if @var{stats_file} is selected, contains a sequence of
17992 key/value pairs of the form @var{key}:@var{value} for each compared
17993 couple of frames.
17994
17995 A description of each shown parameter follows:
17996
17997 @table @option
17998 @item n
17999 sequential number of the input frame, starting from 1
18000
18001 @item Y, U, V, R, G, B
18002 SSIM of the compared frames for the component specified by the suffix.
18003
18004 @item All
18005 SSIM of the compared frames for the whole frame.
18006
18007 @item dB
18008 Same as above but in dB representation.
18009 @end table
18010
18011 This filter also supports the @ref{framesync} options.
18012
18013 @subsection Examples
18014 @itemize
18015 @item
18016 For example:
18017 @example
18018 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
18019 [main][ref] ssim="stats_file=stats.log" [out]
18020 @end example
18021
18022 On this example the input file being processed is compared with the
18023 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
18024 is stored in @file{stats.log}.
18025
18026 @item
18027 Another example with both psnr and ssim at same time:
18028 @example
18029 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
18030 @end example
18031
18032 @item
18033 Another example with different containers:
18034 @example
18035 ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim" -f null -
18036 @end example
18037 @end itemize
18038
18039 @section stereo3d
18040
18041 Convert between different stereoscopic image formats.
18042
18043 The filters accept the following options:
18044
18045 @table @option
18046 @item in
18047 Set stereoscopic image format of input.
18048
18049 Available values for input image formats are:
18050 @table @samp
18051 @item sbsl
18052 side by side parallel (left eye left, right eye right)
18053
18054 @item sbsr
18055 side by side crosseye (right eye left, left eye right)
18056
18057 @item sbs2l
18058 side by side parallel with half width resolution
18059 (left eye left, right eye right)
18060
18061 @item sbs2r
18062 side by side crosseye with half width resolution
18063 (right eye left, left eye right)
18064
18065 @item abl
18066 @item tbl
18067 above-below (left eye above, right eye below)
18068
18069 @item abr
18070 @item tbr
18071 above-below (right eye above, left eye below)
18072
18073 @item ab2l
18074 @item tb2l
18075 above-below with half height resolution
18076 (left eye above, right eye below)
18077
18078 @item ab2r
18079 @item tb2r
18080 above-below with half height resolution
18081 (right eye above, left eye below)
18082
18083 @item al
18084 alternating frames (left eye first, right eye second)
18085
18086 @item ar
18087 alternating frames (right eye first, left eye second)
18088
18089 @item irl
18090 interleaved rows (left eye has top row, right eye starts on next row)
18091
18092 @item irr
18093 interleaved rows (right eye has top row, left eye starts on next row)
18094
18095 @item icl
18096 interleaved columns, left eye first
18097
18098 @item icr
18099 interleaved columns, right eye first
18100
18101 Default value is @samp{sbsl}.
18102 @end table
18103
18104 @item out
18105 Set stereoscopic image format of output.
18106
18107 @table @samp
18108 @item sbsl
18109 side by side parallel (left eye left, right eye right)
18110
18111 @item sbsr
18112 side by side crosseye (right eye left, left eye right)
18113
18114 @item sbs2l
18115 side by side parallel with half width resolution
18116 (left eye left, right eye right)
18117
18118 @item sbs2r
18119 side by side crosseye with half width resolution
18120 (right eye left, left eye right)
18121
18122 @item abl
18123 @item tbl
18124 above-below (left eye above, right eye below)
18125
18126 @item abr
18127 @item tbr
18128 above-below (right eye above, left eye below)
18129
18130 @item ab2l
18131 @item tb2l
18132 above-below with half height resolution
18133 (left eye above, right eye below)
18134
18135 @item ab2r
18136 @item tb2r
18137 above-below with half height resolution
18138 (right eye above, left eye below)
18139
18140 @item al
18141 alternating frames (left eye first, right eye second)
18142
18143 @item ar
18144 alternating frames (right eye first, left eye second)
18145
18146 @item irl
18147 interleaved rows (left eye has top row, right eye starts on next row)
18148
18149 @item irr
18150 interleaved rows (right eye has top row, left eye starts on next row)
18151
18152 @item arbg
18153 anaglyph red/blue gray
18154 (red filter on left eye, blue filter on right eye)
18155
18156 @item argg
18157 anaglyph red/green gray
18158 (red filter on left eye, green filter on right eye)
18159
18160 @item arcg
18161 anaglyph red/cyan gray
18162 (red filter on left eye, cyan filter on right eye)
18163
18164 @item arch
18165 anaglyph red/cyan half colored
18166 (red filter on left eye, cyan filter on right eye)
18167
18168 @item arcc
18169 anaglyph red/cyan color
18170 (red filter on left eye, cyan filter on right eye)
18171
18172 @item arcd
18173 anaglyph red/cyan color optimized with the least squares projection of dubois
18174 (red filter on left eye, cyan filter on right eye)
18175
18176 @item agmg
18177 anaglyph green/magenta gray
18178 (green filter on left eye, magenta filter on right eye)
18179
18180 @item agmh
18181 anaglyph green/magenta half colored
18182 (green filter on left eye, magenta filter on right eye)
18183
18184 @item agmc
18185 anaglyph green/magenta colored
18186 (green filter on left eye, magenta filter on right eye)
18187
18188 @item agmd
18189 anaglyph green/magenta color optimized with the least squares projection of dubois
18190 (green filter on left eye, magenta filter on right eye)
18191
18192 @item aybg
18193 anaglyph yellow/blue gray
18194 (yellow filter on left eye, blue filter on right eye)
18195
18196 @item aybh
18197 anaglyph yellow/blue half colored
18198 (yellow filter on left eye, blue filter on right eye)
18199
18200 @item aybc
18201 anaglyph yellow/blue colored
18202 (yellow filter on left eye, blue filter on right eye)
18203
18204 @item aybd
18205 anaglyph yellow/blue color optimized with the least squares projection of dubois
18206 (yellow filter on left eye, blue filter on right eye)
18207
18208 @item ml
18209 mono output (left eye only)
18210
18211 @item mr
18212 mono output (right eye only)
18213
18214 @item chl
18215 checkerboard, left eye first
18216
18217 @item chr
18218 checkerboard, right eye first
18219
18220 @item icl
18221 interleaved columns, left eye first
18222
18223 @item icr
18224 interleaved columns, right eye first
18225
18226 @item hdmi
18227 HDMI frame pack
18228 @end table
18229
18230 Default value is @samp{arcd}.
18231 @end table
18232
18233 @subsection Examples
18234
18235 @itemize
18236 @item
18237 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
18238 @example
18239 stereo3d=sbsl:aybd
18240 @end example
18241
18242 @item
18243 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
18244 @example
18245 stereo3d=abl:sbsr
18246 @end example
18247 @end itemize
18248
18249 @section streamselect, astreamselect
18250 Select video or audio streams.
18251
18252 The filter accepts the following options:
18253
18254 @table @option
18255 @item inputs
18256 Set number of inputs. Default is 2.
18257
18258 @item map
18259 Set input indexes to remap to outputs.
18260 @end table
18261
18262 @subsection Commands
18263
18264 The @code{streamselect} and @code{astreamselect} filter supports the following
18265 commands:
18266
18267 @table @option
18268 @item map
18269 Set input indexes to remap to outputs.
18270 @end table
18271
18272 @subsection Examples
18273
18274 @itemize
18275 @item
18276 Select first 5 seconds 1st stream and rest of time 2nd stream:
18277 @example
18278 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
18279 @end example
18280
18281 @item
18282 Same as above, but for audio:
18283 @example
18284 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
18285 @end example
18286 @end itemize
18287
18288 @anchor{subtitles}
18289 @section subtitles
18290
18291 Draw subtitles on top of input video using the libass library.
18292
18293 To enable compilation of this filter you need to configure FFmpeg with
18294 @code{--enable-libass}. This filter also requires a build with libavcodec and
18295 libavformat to convert the passed subtitles file to ASS (Advanced Substation
18296 Alpha) subtitles format.
18297
18298 The filter accepts the following options:
18299
18300 @table @option
18301 @item filename, f
18302 Set the filename of the subtitle file to read. It must be specified.
18303
18304 @item original_size
18305 Specify the size of the original video, the video for which the ASS file
18306 was composed. For the syntax of this option, check the
18307 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18308 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
18309 correctly scale the fonts if the aspect ratio has been changed.
18310
18311 @item fontsdir
18312 Set a directory path containing fonts that can be used by the filter.
18313 These fonts will be used in addition to whatever the font provider uses.
18314
18315 @item alpha
18316 Process alpha channel, by default alpha channel is untouched.
18317
18318 @item charenc
18319 Set subtitles input character encoding. @code{subtitles} filter only. Only
18320 useful if not UTF-8.
18321
18322 @item stream_index, si
18323 Set subtitles stream index. @code{subtitles} filter only.
18324
18325 @item force_style
18326 Override default style or script info parameters of the subtitles. It accepts a
18327 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
18328 @end table
18329
18330 If the first key is not specified, it is assumed that the first value
18331 specifies the @option{filename}.
18332
18333 For example, to render the file @file{sub.srt} on top of the input
18334 video, use the command:
18335 @example
18336 subtitles=sub.srt
18337 @end example
18338
18339 which is equivalent to:
18340 @example
18341 subtitles=filename=sub.srt
18342 @end example
18343
18344 To render the default subtitles stream from file @file{video.mkv}, use:
18345 @example
18346 subtitles=video.mkv
18347 @end example
18348
18349 To render the second subtitles stream from that file, use:
18350 @example
18351 subtitles=video.mkv:si=1
18352 @end example
18353
18354 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
18355 @code{DejaVu Serif}, use:
18356 @example
18357 subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
18358 @end example
18359
18360 @section super2xsai
18361
18362 Scale the input by 2x and smooth using the Super2xSaI (Scale and
18363 Interpolate) pixel art scaling algorithm.
18364
18365 Useful for enlarging pixel art images without reducing sharpness.
18366
18367 @section swaprect
18368
18369 Swap two rectangular objects in video.
18370
18371 This filter accepts the following options:
18372
18373 @table @option
18374 @item w
18375 Set object width.
18376
18377 @item h
18378 Set object height.
18379
18380 @item x1
18381 Set 1st rect x coordinate.
18382
18383 @item y1
18384 Set 1st rect y coordinate.
18385
18386 @item x2
18387 Set 2nd rect x coordinate.
18388
18389 @item y2
18390 Set 2nd rect y coordinate.
18391
18392 All expressions are evaluated once for each frame.
18393 @end table
18394
18395 The all options are expressions containing the following constants:
18396
18397 @table @option
18398 @item w
18399 @item h
18400 The input width and height.
18401
18402 @item a
18403 same as @var{w} / @var{h}
18404
18405 @item sar
18406 input sample aspect ratio
18407
18408 @item dar
18409 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
18410
18411 @item n
18412 The number of the input frame, starting from 0.
18413
18414 @item t
18415 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
18416
18417 @item pos
18418 the position in the file of the input frame, NAN if unknown
18419 @end table
18420
18421 @section swapuv
18422 Swap U & V plane.
18423
18424 @section tblend
18425 Blend successive video frames.
18426
18427 See @ref{blend}
18428
18429 @section telecine
18430
18431 Apply telecine process to the video.
18432
18433 This filter accepts the following options:
18434
18435 @table @option
18436 @item first_field
18437 @table @samp
18438 @item top, t
18439 top field first
18440 @item bottom, b
18441 bottom field first
18442 The default value is @code{top}.
18443 @end table
18444
18445 @item pattern
18446 A string of numbers representing the pulldown pattern you wish to apply.
18447 The default value is @code{23}.
18448 @end table
18449
18450 @example
18451 Some typical patterns:
18452
18453 NTSC output (30i):
18454 27.5p: 32222
18455 24p: 23 (classic)
18456 24p: 2332 (preferred)
18457 20p: 33
18458 18p: 334
18459 16p: 3444
18460
18461 PAL output (25i):
18462 27.5p: 12222
18463 24p: 222222222223 ("Euro pulldown")
18464 16.67p: 33
18465 16p: 33333334
18466 @end example
18467
18468 @section thistogram
18469
18470 Compute and draw a color distribution histogram for the input video across time.
18471
18472 Unlike @ref{histogram} video filter which only shows histogram of single input frame
18473 at certain time, this filter shows also past histograms of number of frames defined
18474 by @code{width} option.
18475
18476 The computed histogram is a representation of the color component
18477 distribution in an image.
18478
18479 The filter accepts the following options:
18480
18481 @table @option
18482 @item width, w
18483 Set width of single color component output. Default value is @code{0}.
18484 Value of @code{0} means width will be picked from input video.
18485 This also set number of passed histograms to keep.
18486 Allowed range is [0, 8192].
18487
18488 @item display_mode, d
18489 Set display mode.
18490 It accepts the following values:
18491 @table @samp
18492 @item stack
18493 Per color component graphs are placed below each other.
18494
18495 @item parade
18496 Per color component graphs are placed side by side.
18497
18498 @item overlay
18499 Presents information identical to that in the @code{parade}, except
18500 that the graphs representing color components are superimposed directly
18501 over one another.
18502 @end table
18503 Default is @code{stack}.
18504
18505 @item levels_mode, m
18506 Set mode. Can be either @code{linear}, or @code{logarithmic}.
18507 Default is @code{linear}.
18508
18509 @item components, c
18510 Set what color components to display.
18511 Default is @code{7}.
18512
18513 @item bgopacity, b
18514 Set background opacity. Default is @code{0.9}.
18515
18516 @item envelope, e
18517 Show envelope. Default is disabled.
18518
18519 @item ecolor, ec
18520 Set envelope color. Default is @code{gold}.
18521
18522 @item slide
18523 Set slide mode.
18524
18525 Available values for slide is:
18526 @table @samp
18527 @item frame
18528 Draw new frame when right border is reached.
18529
18530 @item replace
18531 Replace old columns with new ones.
18532
18533 @item scroll
18534 Scroll from right to left.
18535
18536 @item rscroll
18537 Scroll from left to right.
18538
18539 @item picture
18540 Draw single picture.
18541 @end table
18542
18543 Default is @code{replace}.
18544 @end table
18545
18546 @section threshold
18547
18548 Apply threshold effect to video stream.
18549
18550 This filter needs four video streams to perform thresholding.
18551 First stream is stream we are filtering.
18552 Second stream is holding threshold values, third stream is holding min values,
18553 and last, fourth stream is holding max values.
18554
18555 The filter accepts the following option:
18556
18557 @table @option
18558 @item planes
18559 Set which planes will be processed, unprocessed planes will be copied.
18560 By default value 0xf, all planes will be processed.
18561 @end table
18562
18563 For example if first stream pixel's component value is less then threshold value
18564 of pixel component from 2nd threshold stream, third stream value will picked,
18565 otherwise fourth stream pixel component value will be picked.
18566
18567 Using color source filter one can perform various types of thresholding:
18568
18569 @subsection Examples
18570
18571 @itemize
18572 @item
18573 Binary threshold, using gray color as threshold:
18574 @example
18575 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
18576 @end example
18577
18578 @item
18579 Inverted binary threshold, using gray color as threshold:
18580 @example
18581 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
18582 @end example
18583
18584 @item
18585 Truncate binary threshold, using gray color as threshold:
18586 @example
18587 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
18588 @end example
18589
18590 @item
18591 Threshold to zero, using gray color as threshold:
18592 @example
18593 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
18594 @end example
18595
18596 @item
18597 Inverted threshold to zero, using gray color as threshold:
18598 @example
18599 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
18600 @end example
18601 @end itemize
18602
18603 @section thumbnail
18604 Select the most representative frame in a given sequence of consecutive frames.
18605
18606 The filter accepts the following options:
18607
18608 @table @option
18609 @item n
18610 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
18611 will pick one of them, and then handle the next batch of @var{n} frames until
18612 the end. Default is @code{100}.
18613 @end table
18614
18615 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
18616 value will result in a higher memory usage, so a high value is not recommended.
18617
18618 @subsection Examples
18619
18620 @itemize
18621 @item
18622 Extract one picture each 50 frames:
18623 @example
18624 thumbnail=50
18625 @end example
18626
18627 @item
18628 Complete example of a thumbnail creation with @command{ffmpeg}:
18629 @example
18630 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
18631 @end example
18632 @end itemize
18633
18634 @anchor{tile}
18635 @section tile
18636
18637 Tile several successive frames together.
18638
18639 The @ref{untile} filter can do the reverse.
18640
18641 The filter accepts the following options:
18642
18643 @table @option
18644
18645 @item layout
18646 Set the grid size (i.e. the number of lines and columns). For the syntax of
18647 this option, check the
18648 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18649
18650 @item nb_frames
18651 Set the maximum number of frames to render in the given area. It must be less
18652 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
18653 the area will be used.
18654
18655 @item margin
18656 Set the outer border margin in pixels.
18657
18658 @item padding
18659 Set the inner border thickness (i.e. the number of pixels between frames). For
18660 more advanced padding options (such as having different values for the edges),
18661 refer to the pad video filter.
18662
18663 @item color
18664 Specify the color of the unused area. For the syntax of this option, check the
18665 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18666 The default value of @var{color} is "black".
18667
18668 @item overlap
18669 Set the number of frames to overlap when tiling several successive frames together.
18670 The value must be between @code{0} and @var{nb_frames - 1}.
18671
18672 @item init_padding
18673 Set the number of frames to initially be empty before displaying first output frame.
18674 This controls how soon will one get first output frame.
18675 The value must be between @code{0} and @var{nb_frames - 1}.
18676 @end table
18677
18678 @subsection Examples
18679
18680 @itemize
18681 @item
18682 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
18683 @example
18684 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
18685 @end example
18686 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
18687 duplicating each output frame to accommodate the originally detected frame
18688 rate.
18689
18690 @item
18691 Display @code{5} pictures in an area of @code{3x2} frames,
18692 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
18693 mixed flat and named options:
18694 @example
18695 tile=3x2:nb_frames=5:padding=7:margin=2
18696 @end example
18697 @end itemize
18698
18699 @section tinterlace
18700
18701 Perform various types of temporal field interlacing.
18702
18703 Frames are counted starting from 1, so the first input frame is
18704 considered odd.
18705
18706 The filter accepts the following options:
18707
18708 @table @option
18709
18710 @item mode
18711 Specify the mode of the interlacing. This option can also be specified
18712 as a value alone. See below for a list of values for this option.
18713
18714 Available values are:
18715
18716 @table @samp
18717 @item merge, 0
18718 Move odd frames into the upper field, even into the lower field,
18719 generating a double height frame at half frame rate.
18720 @example
18721  ------> time
18722 Input:
18723 Frame 1         Frame 2         Frame 3         Frame 4
18724
18725 11111           22222           33333           44444
18726 11111           22222           33333           44444
18727 11111           22222           33333           44444
18728 11111           22222           33333           44444
18729
18730 Output:
18731 11111                           33333
18732 22222                           44444
18733 11111                           33333
18734 22222                           44444
18735 11111                           33333
18736 22222                           44444
18737 11111                           33333
18738 22222                           44444
18739 @end example
18740
18741 @item drop_even, 1
18742 Only output odd frames, even frames are dropped, generating a frame with
18743 unchanged height at half frame rate.
18744
18745 @example
18746  ------> time
18747 Input:
18748 Frame 1         Frame 2         Frame 3         Frame 4
18749
18750 11111           22222           33333           44444
18751 11111           22222           33333           44444
18752 11111           22222           33333           44444
18753 11111           22222           33333           44444
18754
18755 Output:
18756 11111                           33333
18757 11111                           33333
18758 11111                           33333
18759 11111                           33333
18760 @end example
18761
18762 @item drop_odd, 2
18763 Only output even frames, odd frames are dropped, generating a frame with
18764 unchanged height at half frame rate.
18765
18766 @example
18767  ------> time
18768 Input:
18769 Frame 1         Frame 2         Frame 3         Frame 4
18770
18771 11111           22222           33333           44444
18772 11111           22222           33333           44444
18773 11111           22222           33333           44444
18774 11111           22222           33333           44444
18775
18776 Output:
18777                 22222                           44444
18778                 22222                           44444
18779                 22222                           44444
18780                 22222                           44444
18781 @end example
18782
18783 @item pad, 3
18784 Expand each frame to full height, but pad alternate lines with black,
18785 generating a frame with double height at the same input frame rate.
18786
18787 @example
18788  ------> time
18789 Input:
18790 Frame 1         Frame 2         Frame 3         Frame 4
18791
18792 11111           22222           33333           44444
18793 11111           22222           33333           44444
18794 11111           22222           33333           44444
18795 11111           22222           33333           44444
18796
18797 Output:
18798 11111           .....           33333           .....
18799 .....           22222           .....           44444
18800 11111           .....           33333           .....
18801 .....           22222           .....           44444
18802 11111           .....           33333           .....
18803 .....           22222           .....           44444
18804 11111           .....           33333           .....
18805 .....           22222           .....           44444
18806 @end example
18807
18808
18809 @item interleave_top, 4
18810 Interleave the upper field from odd frames with the lower field from
18811 even frames, generating a frame with unchanged height at half frame rate.
18812
18813 @example
18814  ------> time
18815 Input:
18816 Frame 1         Frame 2         Frame 3         Frame 4
18817
18818 11111<-         22222           33333<-         44444
18819 11111           22222<-         33333           44444<-
18820 11111<-         22222           33333<-         44444
18821 11111           22222<-         33333           44444<-
18822
18823 Output:
18824 11111                           33333
18825 22222                           44444
18826 11111                           33333
18827 22222                           44444
18828 @end example
18829
18830
18831 @item interleave_bottom, 5
18832 Interleave the lower field from odd frames with the upper field from
18833 even frames, generating a frame with unchanged height at half frame rate.
18834
18835 @example
18836  ------> time
18837 Input:
18838 Frame 1         Frame 2         Frame 3         Frame 4
18839
18840 11111           22222<-         33333           44444<-
18841 11111<-         22222           33333<-         44444
18842 11111           22222<-         33333           44444<-
18843 11111<-         22222           33333<-         44444
18844
18845 Output:
18846 22222                           44444
18847 11111                           33333
18848 22222                           44444
18849 11111                           33333
18850 @end example
18851
18852
18853 @item interlacex2, 6
18854 Double frame rate with unchanged height. Frames are inserted each
18855 containing the second temporal field from the previous input frame and
18856 the first temporal field from the next input frame. This mode relies on
18857 the top_field_first flag. Useful for interlaced video displays with no
18858 field synchronisation.
18859
18860 @example
18861  ------> time
18862 Input:
18863 Frame 1         Frame 2         Frame 3         Frame 4
18864
18865 11111           22222           33333           44444
18866  11111           22222           33333           44444
18867 11111           22222           33333           44444
18868  11111           22222           33333           44444
18869
18870 Output:
18871 11111   22222   22222   33333   33333   44444   44444
18872  11111   11111   22222   22222   33333   33333   44444
18873 11111   22222   22222   33333   33333   44444   44444
18874  11111   11111   22222   22222   33333   33333   44444
18875 @end example
18876
18877
18878 @item mergex2, 7
18879 Move odd frames into the upper field, even into the lower field,
18880 generating a double height frame at same frame rate.
18881
18882 @example
18883  ------> time
18884 Input:
18885 Frame 1         Frame 2         Frame 3         Frame 4
18886
18887 11111           22222           33333           44444
18888 11111           22222           33333           44444
18889 11111           22222           33333           44444
18890 11111           22222           33333           44444
18891
18892 Output:
18893 11111           33333           33333           55555
18894 22222           22222           44444           44444
18895 11111           33333           33333           55555
18896 22222           22222           44444           44444
18897 11111           33333           33333           55555
18898 22222           22222           44444           44444
18899 11111           33333           33333           55555
18900 22222           22222           44444           44444
18901 @end example
18902
18903 @end table
18904
18905 Numeric values are deprecated but are accepted for backward
18906 compatibility reasons.
18907
18908 Default mode is @code{merge}.
18909
18910 @item flags
18911 Specify flags influencing the filter process.
18912
18913 Available value for @var{flags} is:
18914
18915 @table @option
18916 @item low_pass_filter, vlpf
18917 Enable linear vertical low-pass filtering in the filter.
18918 Vertical low-pass filtering is required when creating an interlaced
18919 destination from a progressive source which contains high-frequency
18920 vertical detail. Filtering will reduce interlace 'twitter' and Moire
18921 patterning.
18922
18923 @item complex_filter, cvlpf
18924 Enable complex vertical low-pass filtering.
18925 This will slightly less reduce interlace 'twitter' and Moire
18926 patterning but better retain detail and subjective sharpness impression.
18927
18928 @item bypass_il
18929 Bypass already interlaced frames, only adjust the frame rate.
18930 @end table
18931
18932 Vertical low-pass filtering and bypassing already interlaced frames can only be
18933 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
18934
18935 @end table
18936
18937 @section tmedian
18938 Pick median pixels from several successive input video frames.
18939
18940 The filter accepts the following options:
18941
18942 @table @option
18943 @item radius
18944 Set radius of median filter.
18945 Default is 1. Allowed range is from 1 to 127.
18946
18947 @item planes
18948 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
18949
18950 @item percentile
18951 Set median percentile. Default value is @code{0.5}.
18952 Default value of @code{0.5} will pick always median values, while @code{0} will pick
18953 minimum values, and @code{1} maximum values.
18954 @end table
18955
18956 @section tmix
18957
18958 Mix successive video frames.
18959
18960 A description of the accepted options follows.
18961
18962 @table @option
18963 @item frames
18964 The number of successive frames to mix. If unspecified, it defaults to 3.
18965
18966 @item weights
18967 Specify weight of each input video frame.
18968 Each weight is separated by space. If number of weights is smaller than
18969 number of @var{frames} last specified weight will be used for all remaining
18970 unset weights.
18971
18972 @item scale
18973 Specify scale, if it is set it will be multiplied with sum
18974 of each weight multiplied with pixel values to give final destination
18975 pixel value. By default @var{scale} is auto scaled to sum of weights.
18976 @end table
18977
18978 @subsection Examples
18979
18980 @itemize
18981 @item
18982 Average 7 successive frames:
18983 @example
18984 tmix=frames=7:weights="1 1 1 1 1 1 1"
18985 @end example
18986
18987 @item
18988 Apply simple temporal convolution:
18989 @example
18990 tmix=frames=3:weights="-1 3 -1"
18991 @end example
18992
18993 @item
18994 Similar as above but only showing temporal differences:
18995 @example
18996 tmix=frames=3:weights="-1 2 -1":scale=1
18997 @end example
18998 @end itemize
18999
19000 @anchor{tonemap}
19001 @section tonemap
19002 Tone map colors from different dynamic ranges.
19003
19004 This filter expects data in single precision floating point, as it needs to
19005 operate on (and can output) out-of-range values. Another filter, such as
19006 @ref{zscale}, is needed to convert the resulting frame to a usable format.
19007
19008 The tonemapping algorithms implemented only work on linear light, so input
19009 data should be linearized beforehand (and possibly correctly tagged).
19010
19011 @example
19012 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
19013 @end example
19014
19015 @subsection Options
19016 The filter accepts the following options.
19017
19018 @table @option
19019 @item tonemap
19020 Set the tone map algorithm to use.
19021
19022 Possible values are:
19023 @table @var
19024 @item none
19025 Do not apply any tone map, only desaturate overbright pixels.
19026
19027 @item clip
19028 Hard-clip any out-of-range values. Use it for perfect color accuracy for
19029 in-range values, while distorting out-of-range values.
19030
19031 @item linear
19032 Stretch the entire reference gamut to a linear multiple of the display.
19033
19034 @item gamma
19035 Fit a logarithmic transfer between the tone curves.
19036
19037 @item reinhard
19038 Preserve overall image brightness with a simple curve, using nonlinear
19039 contrast, which results in flattening details and degrading color accuracy.
19040
19041 @item hable
19042 Preserve both dark and bright details better than @var{reinhard}, at the cost
19043 of slightly darkening everything. Use it when detail preservation is more
19044 important than color and brightness accuracy.
19045
19046 @item mobius
19047 Smoothly map out-of-range values, while retaining contrast and colors for
19048 in-range material as much as possible. Use it when color accuracy is more
19049 important than detail preservation.
19050 @end table
19051
19052 Default is none.
19053
19054 @item param
19055 Tune the tone mapping algorithm.
19056
19057 This affects the following algorithms:
19058 @table @var
19059 @item none
19060 Ignored.
19061
19062 @item linear
19063 Specifies the scale factor to use while stretching.
19064 Default to 1.0.
19065
19066 @item gamma
19067 Specifies the exponent of the function.
19068 Default to 1.8.
19069
19070 @item clip
19071 Specify an extra linear coefficient to multiply into the signal before clipping.
19072 Default to 1.0.
19073
19074 @item reinhard
19075 Specify the local contrast coefficient at the display peak.
19076 Default to 0.5, which means that in-gamut values will be about half as bright
19077 as when clipping.
19078
19079 @item hable
19080 Ignored.
19081
19082 @item mobius
19083 Specify the transition point from linear to mobius transform. Every value
19084 below this point is guaranteed to be mapped 1:1. The higher the value, the
19085 more accurate the result will be, at the cost of losing bright details.
19086 Default to 0.3, which due to the steep initial slope still preserves in-range
19087 colors fairly accurately.
19088 @end table
19089
19090 @item desat
19091 Apply desaturation for highlights that exceed this level of brightness. The
19092 higher the parameter, the more color information will be preserved. This
19093 setting helps prevent unnaturally blown-out colors for super-highlights, by
19094 (smoothly) turning into white instead. This makes images feel more natural,
19095 at the cost of reducing information about out-of-range colors.
19096
19097 The default of 2.0 is somewhat conservative and will mostly just apply to
19098 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
19099
19100 This option works only if the input frame has a supported color tag.
19101
19102 @item peak
19103 Override signal/nominal/reference peak with this value. Useful when the
19104 embedded peak information in display metadata is not reliable or when tone
19105 mapping from a lower range to a higher range.
19106 @end table
19107
19108 @section tpad
19109
19110 Temporarily pad video frames.
19111
19112 The filter accepts the following options:
19113
19114 @table @option
19115 @item start
19116 Specify number of delay frames before input video stream. Default is 0.
19117
19118 @item stop
19119 Specify number of padding frames after input video stream.
19120 Set to -1 to pad indefinitely. Default is 0.
19121
19122 @item start_mode
19123 Set kind of frames added to beginning of stream.
19124 Can be either @var{add} or @var{clone}.
19125 With @var{add} frames of solid-color are added.
19126 With @var{clone} frames are clones of first frame.
19127 Default is @var{add}.
19128
19129 @item stop_mode
19130 Set kind of frames added to end of stream.
19131 Can be either @var{add} or @var{clone}.
19132 With @var{add} frames of solid-color are added.
19133 With @var{clone} frames are clones of last frame.
19134 Default is @var{add}.
19135
19136 @item start_duration, stop_duration
19137 Specify the duration of the start/stop delay. See
19138 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19139 for the accepted syntax.
19140 These options override @var{start} and @var{stop}. Default is 0.
19141
19142 @item color
19143 Specify the color of the padded area. For the syntax of this option,
19144 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
19145 manual,ffmpeg-utils}.
19146
19147 The default value of @var{color} is "black".
19148 @end table
19149
19150 @anchor{transpose}
19151 @section transpose
19152
19153 Transpose rows with columns in the input video and optionally flip it.
19154
19155 It accepts the following parameters:
19156
19157 @table @option
19158
19159 @item dir
19160 Specify the transposition direction.
19161
19162 Can assume the following values:
19163 @table @samp
19164 @item 0, 4, cclock_flip
19165 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
19166 @example
19167 L.R     L.l
19168 . . ->  . .
19169 l.r     R.r
19170 @end example
19171
19172 @item 1, 5, clock
19173 Rotate by 90 degrees clockwise, that is:
19174 @example
19175 L.R     l.L
19176 . . ->  . .
19177 l.r     r.R
19178 @end example
19179
19180 @item 2, 6, cclock
19181 Rotate by 90 degrees counterclockwise, that is:
19182 @example
19183 L.R     R.r
19184 . . ->  . .
19185 l.r     L.l
19186 @end example
19187
19188 @item 3, 7, clock_flip
19189 Rotate by 90 degrees clockwise and vertically flip, that is:
19190 @example
19191 L.R     r.R
19192 . . ->  . .
19193 l.r     l.L
19194 @end example
19195 @end table
19196
19197 For values between 4-7, the transposition is only done if the input
19198 video geometry is portrait and not landscape. These values are
19199 deprecated, the @code{passthrough} option should be used instead.
19200
19201 Numerical values are deprecated, and should be dropped in favor of
19202 symbolic constants.
19203
19204 @item passthrough
19205 Do not apply the transposition if the input geometry matches the one
19206 specified by the specified value. It accepts the following values:
19207 @table @samp
19208 @item none
19209 Always apply transposition.
19210 @item portrait
19211 Preserve portrait geometry (when @var{height} >= @var{width}).
19212 @item landscape
19213 Preserve landscape geometry (when @var{width} >= @var{height}).
19214 @end table
19215
19216 Default value is @code{none}.
19217 @end table
19218
19219 For example to rotate by 90 degrees clockwise and preserve portrait
19220 layout:
19221 @example
19222 transpose=dir=1:passthrough=portrait
19223 @end example
19224
19225 The command above can also be specified as:
19226 @example
19227 transpose=1:portrait
19228 @end example
19229
19230 @section transpose_npp
19231
19232 Transpose rows with columns in the input video and optionally flip it.
19233 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
19234
19235 It accepts the following parameters:
19236
19237 @table @option
19238
19239 @item dir
19240 Specify the transposition direction.
19241
19242 Can assume the following values:
19243 @table @samp
19244 @item cclock_flip
19245 Rotate by 90 degrees counterclockwise and vertically flip. (default)
19246
19247 @item clock
19248 Rotate by 90 degrees clockwise.
19249
19250 @item cclock
19251 Rotate by 90 degrees counterclockwise.
19252
19253 @item clock_flip
19254 Rotate by 90 degrees clockwise and vertically flip.
19255 @end table
19256
19257 @item passthrough
19258 Do not apply the transposition if the input geometry matches the one
19259 specified by the specified value. It accepts the following values:
19260 @table @samp
19261 @item none
19262 Always apply transposition. (default)
19263 @item portrait
19264 Preserve portrait geometry (when @var{height} >= @var{width}).
19265 @item landscape
19266 Preserve landscape geometry (when @var{width} >= @var{height}).
19267 @end table
19268
19269 @end table
19270
19271 @section trim
19272 Trim the input so that the output contains one continuous subpart of the input.
19273
19274 It accepts the following parameters:
19275 @table @option
19276 @item start
19277 Specify the time of the start of the kept section, i.e. the frame with the
19278 timestamp @var{start} will be the first frame in the output.
19279
19280 @item end
19281 Specify the time of the first frame that will be dropped, i.e. the frame
19282 immediately preceding the one with the timestamp @var{end} will be the last
19283 frame in the output.
19284
19285 @item start_pts
19286 This is the same as @var{start}, except this option sets the start timestamp
19287 in timebase units instead of seconds.
19288
19289 @item end_pts
19290 This is the same as @var{end}, except this option sets the end timestamp
19291 in timebase units instead of seconds.
19292
19293 @item duration
19294 The maximum duration of the output in seconds.
19295
19296 @item start_frame
19297 The number of the first frame that should be passed to the output.
19298
19299 @item end_frame
19300 The number of the first frame that should be dropped.
19301 @end table
19302
19303 @option{start}, @option{end}, and @option{duration} are expressed as time
19304 duration specifications; see
19305 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19306 for the accepted syntax.
19307
19308 Note that the first two sets of the start/end options and the @option{duration}
19309 option look at the frame timestamp, while the _frame variants simply count the
19310 frames that pass through the filter. Also note that this filter does not modify
19311 the timestamps. If you wish for the output timestamps to start at zero, insert a
19312 setpts filter after the trim filter.
19313
19314 If multiple start or end options are set, this filter tries to be greedy and
19315 keep all the frames that match at least one of the specified constraints. To keep
19316 only the part that matches all the constraints at once, chain multiple trim
19317 filters.
19318
19319 The defaults are such that all the input is kept. So it is possible to set e.g.
19320 just the end values to keep everything before the specified time.
19321
19322 Examples:
19323 @itemize
19324 @item
19325 Drop everything except the second minute of input:
19326 @example
19327 ffmpeg -i INPUT -vf trim=60:120
19328 @end example
19329
19330 @item
19331 Keep only the first second:
19332 @example
19333 ffmpeg -i INPUT -vf trim=duration=1
19334 @end example
19335
19336 @end itemize
19337
19338 @section unpremultiply
19339 Apply alpha unpremultiply effect to input video stream using first plane
19340 of second stream as alpha.
19341
19342 Both streams must have same dimensions and same pixel format.
19343
19344 The filter accepts the following option:
19345
19346 @table @option
19347 @item planes
19348 Set which planes will be processed, unprocessed planes will be copied.
19349 By default value 0xf, all planes will be processed.
19350
19351 If the format has 1 or 2 components, then luma is bit 0.
19352 If the format has 3 or 4 components:
19353 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
19354 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
19355 If present, the alpha channel is always the last bit.
19356
19357 @item inplace
19358 Do not require 2nd input for processing, instead use alpha plane from input stream.
19359 @end table
19360
19361 @anchor{unsharp}
19362 @section unsharp
19363
19364 Sharpen or blur the input video.
19365
19366 It accepts the following parameters:
19367
19368 @table @option
19369 @item luma_msize_x, lx
19370 Set the luma matrix horizontal size. It must be an odd integer between
19371 3 and 23. The default value is 5.
19372
19373 @item luma_msize_y, ly
19374 Set the luma matrix vertical size. It must be an odd integer between 3
19375 and 23. The default value is 5.
19376
19377 @item luma_amount, la
19378 Set the luma effect strength. It must be a floating point number, reasonable
19379 values lay between -1.5 and 1.5.
19380
19381 Negative values will blur the input video, while positive values will
19382 sharpen it, a value of zero will disable the effect.
19383
19384 Default value is 1.0.
19385
19386 @item chroma_msize_x, cx
19387 Set the chroma matrix horizontal size. It must be an odd integer
19388 between 3 and 23. The default value is 5.
19389
19390 @item chroma_msize_y, cy
19391 Set the chroma matrix vertical size. It must be an odd integer
19392 between 3 and 23. The default value is 5.
19393
19394 @item chroma_amount, ca
19395 Set the chroma effect strength. It must be a floating point number, reasonable
19396 values lay between -1.5 and 1.5.
19397
19398 Negative values will blur the input video, while positive values will
19399 sharpen it, a value of zero will disable the effect.
19400
19401 Default value is 0.0.
19402
19403 @end table
19404
19405 All parameters are optional and default to the equivalent of the
19406 string '5:5:1.0:5:5:0.0'.
19407
19408 @subsection Examples
19409
19410 @itemize
19411 @item
19412 Apply strong luma sharpen effect:
19413 @example
19414 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
19415 @end example
19416
19417 @item
19418 Apply a strong blur of both luma and chroma parameters:
19419 @example
19420 unsharp=7:7:-2:7:7:-2
19421 @end example
19422 @end itemize
19423
19424 @anchor{untile}
19425 @section untile
19426
19427 Decompose a video made of tiled images into the individual images.
19428
19429 The frame rate of the output video is the frame rate of the input video
19430 multiplied by the number of tiles.
19431
19432 This filter does the reverse of @ref{tile}.
19433
19434 The filter accepts the following options:
19435
19436 @table @option
19437
19438 @item layout
19439 Set the grid size (i.e. the number of lines and columns). For the syntax of
19440 this option, check the
19441 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19442 @end table
19443
19444 @subsection Examples
19445
19446 @itemize
19447 @item
19448 Produce a 1-second video from a still image file made of 25 frames stacked
19449 vertically, like an analogic film reel:
19450 @example
19451 ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
19452 @end example
19453 @end itemize
19454
19455 @section uspp
19456
19457 Apply ultra slow/simple postprocessing filter that compresses and decompresses
19458 the image at several (or - in the case of @option{quality} level @code{8} - all)
19459 shifts and average the results.
19460
19461 The way this differs from the behavior of spp is that uspp actually encodes &
19462 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
19463 DCT similar to MJPEG.
19464
19465 The filter accepts the following options:
19466
19467 @table @option
19468 @item quality
19469 Set quality. This option defines the number of levels for averaging. It accepts
19470 an integer in the range 0-8. If set to @code{0}, the filter will have no
19471 effect. A value of @code{8} means the higher quality. For each increment of
19472 that value the speed drops by a factor of approximately 2.  Default value is
19473 @code{3}.
19474
19475 @item qp
19476 Force a constant quantization parameter. If not set, the filter will use the QP
19477 from the video stream (if available).
19478 @end table
19479
19480 @section v360
19481
19482 Convert 360 videos between various formats.
19483
19484 The filter accepts the following options:
19485
19486 @table @option
19487
19488 @item input
19489 @item output
19490 Set format of the input/output video.
19491
19492 Available formats:
19493
19494 @table @samp
19495
19496 @item e
19497 @item equirect
19498 Equirectangular projection.
19499
19500 @item c3x2
19501 @item c6x1
19502 @item c1x6
19503 Cubemap with 3x2/6x1/1x6 layout.
19504
19505 Format specific options:
19506
19507 @table @option
19508 @item in_pad
19509 @item out_pad
19510 Set padding proportion for the input/output cubemap. Values in decimals.
19511
19512 Example values:
19513 @table @samp
19514 @item 0
19515 No padding.
19516 @item 0.01
19517 1% of face is padding. For example, with 1920x1280 resolution face size would be 640x640 and padding would be 3 pixels from each side. (640 * 0.01 = 6 pixels)
19518 @end table
19519
19520 Default value is @b{@samp{0}}.
19521 Maximum value is @b{@samp{0.1}}.
19522
19523 @item fin_pad
19524 @item fout_pad
19525 Set fixed padding for the input/output cubemap. Values in pixels.
19526
19527 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
19528
19529 @item in_forder
19530 @item out_forder
19531 Set order of faces for the input/output cubemap. Choose one direction for each position.
19532
19533 Designation of directions:
19534 @table @samp
19535 @item r
19536 right
19537 @item l
19538 left
19539 @item u
19540 up
19541 @item d
19542 down
19543 @item f
19544 forward
19545 @item b
19546 back
19547 @end table
19548
19549 Default value is @b{@samp{rludfb}}.
19550
19551 @item in_frot
19552 @item out_frot
19553 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
19554
19555 Designation of angles:
19556 @table @samp
19557 @item 0
19558 0 degrees clockwise
19559 @item 1
19560 90 degrees clockwise
19561 @item 2
19562 180 degrees clockwise
19563 @item 3
19564 270 degrees clockwise
19565 @end table
19566
19567 Default value is @b{@samp{000000}}.
19568 @end table
19569
19570 @item eac
19571 Equi-Angular Cubemap.
19572
19573 @item flat
19574 @item gnomonic
19575 @item rectilinear
19576 Regular video.
19577
19578 Format specific options:
19579 @table @option
19580 @item h_fov
19581 @item v_fov
19582 @item d_fov
19583 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19584
19585 If diagonal field of view is set it overrides horizontal and vertical field of view.
19586
19587 @item ih_fov
19588 @item iv_fov
19589 @item id_fov
19590 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19591
19592 If diagonal field of view is set it overrides horizontal and vertical field of view.
19593 @end table
19594
19595 @item dfisheye
19596 Dual fisheye.
19597
19598 Format specific options:
19599 @table @option
19600 @item h_fov
19601 @item v_fov
19602 @item d_fov
19603 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19604
19605 If diagonal field of view is set it overrides horizontal and vertical field of view.
19606
19607 @item ih_fov
19608 @item iv_fov
19609 @item id_fov
19610 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19611
19612 If diagonal field of view is set it overrides horizontal and vertical field of view.
19613 @end table
19614
19615 @item barrel
19616 @item fb
19617 @item barrelsplit
19618 Facebook's 360 formats.
19619
19620 @item sg
19621 Stereographic format.
19622
19623 Format specific options:
19624 @table @option
19625 @item h_fov
19626 @item v_fov
19627 @item d_fov
19628 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19629
19630 If diagonal field of view is set it overrides horizontal and vertical field of view.
19631
19632 @item ih_fov
19633 @item iv_fov
19634 @item id_fov
19635 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19636
19637 If diagonal field of view is set it overrides horizontal and vertical field of view.
19638 @end table
19639
19640 @item mercator
19641 Mercator format.
19642
19643 @item ball
19644 Ball format, gives significant distortion toward the back.
19645
19646 @item hammer
19647 Hammer-Aitoff map projection format.
19648
19649 @item sinusoidal
19650 Sinusoidal map projection format.
19651
19652 @item fisheye
19653 Fisheye projection.
19654
19655 Format specific options:
19656 @table @option
19657 @item h_fov
19658 @item v_fov
19659 @item d_fov
19660 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19661
19662 If diagonal field of view is set it overrides horizontal and vertical field of view.
19663
19664 @item ih_fov
19665 @item iv_fov
19666 @item id_fov
19667 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19668
19669 If diagonal field of view is set it overrides horizontal and vertical field of view.
19670 @end table
19671
19672 @item pannini
19673 Pannini projection.
19674
19675 Format specific options:
19676 @table @option
19677 @item h_fov
19678 Set output pannini parameter.
19679
19680 @item ih_fov
19681 Set input pannini parameter.
19682 @end table
19683
19684 @item cylindrical
19685 Cylindrical projection.
19686
19687 Format specific options:
19688 @table @option
19689 @item h_fov
19690 @item v_fov
19691 @item d_fov
19692 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19693
19694 If diagonal field of view is set it overrides horizontal and vertical field of view.
19695
19696 @item ih_fov
19697 @item iv_fov
19698 @item id_fov
19699 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19700
19701 If diagonal field of view is set it overrides horizontal and vertical field of view.
19702 @end table
19703
19704 @item perspective
19705 Perspective projection. @i{(output only)}
19706
19707 Format specific options:
19708 @table @option
19709 @item v_fov
19710 Set perspective parameter.
19711 @end table
19712
19713 @item tetrahedron
19714 Tetrahedron projection.
19715
19716 @item tsp
19717 Truncated square pyramid projection.
19718
19719 @item he
19720 @item hequirect
19721 Half equirectangular projection.
19722
19723 @item equisolid
19724 Equisolid format.
19725
19726 Format specific options:
19727 @table @option
19728 @item h_fov
19729 @item v_fov
19730 @item d_fov
19731 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19732
19733 If diagonal field of view is set it overrides horizontal and vertical field of view.
19734
19735 @item ih_fov
19736 @item iv_fov
19737 @item id_fov
19738 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19739
19740 If diagonal field of view is set it overrides horizontal and vertical field of view.
19741 @end table
19742
19743 @item og
19744 Orthographic format.
19745
19746 Format specific options:
19747 @table @option
19748 @item h_fov
19749 @item v_fov
19750 @item d_fov
19751 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19752
19753 If diagonal field of view is set it overrides horizontal and vertical field of view.
19754
19755 @item ih_fov
19756 @item iv_fov
19757 @item id_fov
19758 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19759
19760 If diagonal field of view is set it overrides horizontal and vertical field of view.
19761 @end table
19762
19763 @item octahedron
19764 Octahedron projection.
19765 @end table
19766
19767 @item interp
19768 Set interpolation method.@*
19769 @i{Note: more complex interpolation methods require much more memory to run.}
19770
19771 Available methods:
19772
19773 @table @samp
19774 @item near
19775 @item nearest
19776 Nearest neighbour.
19777 @item line
19778 @item linear
19779 Bilinear interpolation.
19780 @item lagrange9
19781 Lagrange9 interpolation.
19782 @item cube
19783 @item cubic
19784 Bicubic interpolation.
19785 @item lanc
19786 @item lanczos
19787 Lanczos interpolation.
19788 @item sp16
19789 @item spline16
19790 Spline16 interpolation.
19791 @item gauss
19792 @item gaussian
19793 Gaussian interpolation.
19794 @item mitchell
19795 Mitchell interpolation.
19796 @end table
19797
19798 Default value is @b{@samp{line}}.
19799
19800 @item w
19801 @item h
19802 Set the output video resolution.
19803
19804 Default resolution depends on formats.
19805
19806 @item in_stereo
19807 @item out_stereo
19808 Set the input/output stereo format.
19809
19810 @table @samp
19811 @item 2d
19812 2D mono
19813 @item sbs
19814 Side by side
19815 @item tb
19816 Top bottom
19817 @end table
19818
19819 Default value is @b{@samp{2d}} for input and output format.
19820
19821 @item yaw
19822 @item pitch
19823 @item roll
19824 Set rotation for the output video. Values in degrees.
19825
19826 @item rorder
19827 Set rotation order for the output video. Choose one item for each position.
19828
19829 @table @samp
19830 @item y, Y
19831 yaw
19832 @item p, P
19833 pitch
19834 @item r, R
19835 roll
19836 @end table
19837
19838 Default value is @b{@samp{ypr}}.
19839
19840 @item h_flip
19841 @item v_flip
19842 @item d_flip
19843 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
19844
19845 @item ih_flip
19846 @item iv_flip
19847 Set if input video is flipped horizontally/vertically. Boolean values.
19848
19849 @item in_trans
19850 Set if input video is transposed. Boolean value, by default disabled.
19851
19852 @item out_trans
19853 Set if output video needs to be transposed. Boolean value, by default disabled.
19854
19855 @item alpha_mask
19856 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
19857 @end table
19858
19859 @subsection Examples
19860
19861 @itemize
19862 @item
19863 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
19864 @example
19865 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
19866 @end example
19867 @item
19868 Extract back view of Equi-Angular Cubemap:
19869 @example
19870 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
19871 @end example
19872 @item
19873 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
19874 @example
19875 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
19876 @end example
19877 @end itemize
19878
19879 @subsection Commands
19880
19881 This filter supports subset of above options as @ref{commands}.
19882
19883 @section vaguedenoiser
19884
19885 Apply a wavelet based denoiser.
19886
19887 It transforms each frame from the video input into the wavelet domain,
19888 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
19889 the obtained coefficients. It does an inverse wavelet transform after.
19890 Due to wavelet properties, it should give a nice smoothed result, and
19891 reduced noise, without blurring picture features.
19892
19893 This filter accepts the following options:
19894
19895 @table @option
19896 @item threshold
19897 The filtering strength. The higher, the more filtered the video will be.
19898 Hard thresholding can use a higher threshold than soft thresholding
19899 before the video looks overfiltered. Default value is 2.
19900
19901 @item method
19902 The filtering method the filter will use.
19903
19904 It accepts the following values:
19905 @table @samp
19906 @item hard
19907 All values under the threshold will be zeroed.
19908
19909 @item soft
19910 All values under the threshold will be zeroed. All values above will be
19911 reduced by the threshold.
19912
19913 @item garrote
19914 Scales or nullifies coefficients - intermediary between (more) soft and
19915 (less) hard thresholding.
19916 @end table
19917
19918 Default is garrote.
19919
19920 @item nsteps
19921 Number of times, the wavelet will decompose the picture. Picture can't
19922 be decomposed beyond a particular point (typically, 8 for a 640x480
19923 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
19924
19925 @item percent
19926 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
19927
19928 @item planes
19929 A list of the planes to process. By default all planes are processed.
19930
19931 @item type
19932 The threshold type the filter will use.
19933
19934 It accepts the following values:
19935 @table @samp
19936 @item universal
19937 Threshold used is same for all decompositions.
19938
19939 @item bayes
19940 Threshold used depends also on each decomposition coefficients.
19941 @end table
19942
19943 Default is universal.
19944 @end table
19945
19946 @section vectorscope
19947
19948 Display 2 color component values in the two dimensional graph (which is called
19949 a vectorscope).
19950
19951 This filter accepts the following options:
19952
19953 @table @option
19954 @item mode, m
19955 Set vectorscope mode.
19956
19957 It accepts the following values:
19958 @table @samp
19959 @item gray
19960 @item tint
19961 Gray values are displayed on graph, higher brightness means more pixels have
19962 same component color value on location in graph. This is the default mode.
19963
19964 @item color
19965 Gray values are displayed on graph. Surrounding pixels values which are not
19966 present in video frame are drawn in gradient of 2 color components which are
19967 set by option @code{x} and @code{y}. The 3rd color component is static.
19968
19969 @item color2
19970 Actual color components values present in video frame are displayed on graph.
19971
19972 @item color3
19973 Similar as color2 but higher frequency of same values @code{x} and @code{y}
19974 on graph increases value of another color component, which is luminance by
19975 default values of @code{x} and @code{y}.
19976
19977 @item color4
19978 Actual colors present in video frame are displayed on graph. If two different
19979 colors map to same position on graph then color with higher value of component
19980 not present in graph is picked.
19981
19982 @item color5
19983 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
19984 component picked from radial gradient.
19985 @end table
19986
19987 @item x
19988 Set which color component will be represented on X-axis. Default is @code{1}.
19989
19990 @item y
19991 Set which color component will be represented on Y-axis. Default is @code{2}.
19992
19993 @item intensity, i
19994 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
19995 of color component which represents frequency of (X, Y) location in graph.
19996
19997 @item envelope, e
19998 @table @samp
19999 @item none
20000 No envelope, this is default.
20001
20002 @item instant
20003 Instant envelope, even darkest single pixel will be clearly highlighted.
20004
20005 @item peak
20006 Hold maximum and minimum values presented in graph over time. This way you
20007 can still spot out of range values without constantly looking at vectorscope.
20008
20009 @item peak+instant
20010 Peak and instant envelope combined together.
20011 @end table
20012
20013 @item graticule, g
20014 Set what kind of graticule to draw.
20015 @table @samp
20016 @item none
20017 @item green
20018 @item color
20019 @item invert
20020 @end table
20021
20022 @item opacity, o
20023 Set graticule opacity.
20024
20025 @item flags, f
20026 Set graticule flags.
20027
20028 @table @samp
20029 @item white
20030 Draw graticule for white point.
20031
20032 @item black
20033 Draw graticule for black point.
20034
20035 @item name
20036 Draw color points short names.
20037 @end table
20038
20039 @item bgopacity, b
20040 Set background opacity.
20041
20042 @item lthreshold, l
20043 Set low threshold for color component not represented on X or Y axis.
20044 Values lower than this value will be ignored. Default is 0.
20045 Note this value is multiplied with actual max possible value one pixel component
20046 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
20047 is 0.1 * 255 = 25.
20048
20049 @item hthreshold, h
20050 Set high threshold for color component not represented on X or Y axis.
20051 Values higher than this value will be ignored. Default is 1.
20052 Note this value is multiplied with actual max possible value one pixel component
20053 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
20054 is 0.9 * 255 = 230.
20055
20056 @item colorspace, c
20057 Set what kind of colorspace to use when drawing graticule.
20058 @table @samp
20059 @item auto
20060 @item 601
20061 @item 709
20062 @end table
20063 Default is auto.
20064
20065 @item tint0, t0
20066 @item tint1, t1
20067 Set color tint for gray/tint vectorscope mode. By default both options are zero.
20068 This means no tint, and output will remain gray.
20069 @end table
20070
20071 @anchor{vidstabdetect}
20072 @section vidstabdetect
20073
20074 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
20075 @ref{vidstabtransform} for pass 2.
20076
20077 This filter generates a file with relative translation and rotation
20078 transform information about subsequent frames, which is then used by
20079 the @ref{vidstabtransform} filter.
20080
20081 To enable compilation of this filter you need to configure FFmpeg with
20082 @code{--enable-libvidstab}.
20083
20084 This filter accepts the following options:
20085
20086 @table @option
20087 @item result
20088 Set the path to the file used to write the transforms information.
20089 Default value is @file{transforms.trf}.
20090
20091 @item shakiness
20092 Set how shaky the video is and how quick the camera is. It accepts an
20093 integer in the range 1-10, a value of 1 means little shakiness, a
20094 value of 10 means strong shakiness. Default value is 5.
20095
20096 @item accuracy
20097 Set the accuracy of the detection process. It must be a value in the
20098 range 1-15. A value of 1 means low accuracy, a value of 15 means high
20099 accuracy. Default value is 15.
20100
20101 @item stepsize
20102 Set stepsize of the search process. The region around minimum is
20103 scanned with 1 pixel resolution. Default value is 6.
20104
20105 @item mincontrast
20106 Set minimum contrast. Below this value a local measurement field is
20107 discarded. Must be a floating point value in the range 0-1. Default
20108 value is 0.3.
20109
20110 @item tripod
20111 Set reference frame number for tripod mode.
20112
20113 If enabled, the motion of the frames is compared to a reference frame
20114 in the filtered stream, identified by the specified number. The idea
20115 is to compensate all movements in a more-or-less static scene and keep
20116 the camera view absolutely still.
20117
20118 If set to 0, it is disabled. The frames are counted starting from 1.
20119
20120 @item show
20121 Show fields and transforms in the resulting frames. It accepts an
20122 integer in the range 0-2. Default value is 0, which disables any
20123 visualization.
20124 @end table
20125
20126 @subsection Examples
20127
20128 @itemize
20129 @item
20130 Use default values:
20131 @example
20132 vidstabdetect
20133 @end example
20134
20135 @item
20136 Analyze strongly shaky movie and put the results in file
20137 @file{mytransforms.trf}:
20138 @example
20139 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
20140 @end example
20141
20142 @item
20143 Visualize the result of internal transformations in the resulting
20144 video:
20145 @example
20146 vidstabdetect=show=1
20147 @end example
20148
20149 @item
20150 Analyze a video with medium shakiness using @command{ffmpeg}:
20151 @example
20152 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
20153 @end example
20154 @end itemize
20155
20156 @anchor{vidstabtransform}
20157 @section vidstabtransform
20158
20159 Video stabilization/deshaking: pass 2 of 2,
20160 see @ref{vidstabdetect} for pass 1.
20161
20162 Read a file with transform information for each frame and
20163 apply/compensate them. Together with the @ref{vidstabdetect}
20164 filter this can be used to deshake videos. See also
20165 @url{http://public.hronopik.de/vid.stab}. It is important to also use
20166 the @ref{unsharp} filter, see below.
20167
20168 To enable compilation of this filter you need to configure FFmpeg with
20169 @code{--enable-libvidstab}.
20170
20171 @subsection Options
20172
20173 @table @option
20174 @item input
20175 Set path to the file used to read the transforms. Default value is
20176 @file{transforms.trf}.
20177
20178 @item smoothing
20179 Set the number of frames (value*2 + 1) used for lowpass filtering the
20180 camera movements. Default value is 10.
20181
20182 For example a number of 10 means that 21 frames are used (10 in the
20183 past and 10 in the future) to smoothen the motion in the video. A
20184 larger value leads to a smoother video, but limits the acceleration of
20185 the camera (pan/tilt movements). 0 is a special case where a static
20186 camera is simulated.
20187
20188 @item optalgo
20189 Set the camera path optimization algorithm.
20190
20191 Accepted values are:
20192 @table @samp
20193 @item gauss
20194 gaussian kernel low-pass filter on camera motion (default)
20195 @item avg
20196 averaging on transformations
20197 @end table
20198
20199 @item maxshift
20200 Set maximal number of pixels to translate frames. Default value is -1,
20201 meaning no limit.
20202
20203 @item maxangle
20204 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
20205 value is -1, meaning no limit.
20206
20207 @item crop
20208 Specify how to deal with borders that may be visible due to movement
20209 compensation.
20210
20211 Available values are:
20212 @table @samp
20213 @item keep
20214 keep image information from previous frame (default)
20215 @item black
20216 fill the border black
20217 @end table
20218
20219 @item invert
20220 Invert transforms if set to 1. Default value is 0.
20221
20222 @item relative
20223 Consider transforms as relative to previous frame if set to 1,
20224 absolute if set to 0. Default value is 0.
20225
20226 @item zoom
20227 Set percentage to zoom. A positive value will result in a zoom-in
20228 effect, a negative value in a zoom-out effect. Default value is 0 (no
20229 zoom).
20230
20231 @item optzoom
20232 Set optimal zooming to avoid borders.
20233
20234 Accepted values are:
20235 @table @samp
20236 @item 0
20237 disabled
20238 @item 1
20239 optimal static zoom value is determined (only very strong movements
20240 will lead to visible borders) (default)
20241 @item 2
20242 optimal adaptive zoom value is determined (no borders will be
20243 visible), see @option{zoomspeed}
20244 @end table
20245
20246 Note that the value given at zoom is added to the one calculated here.
20247
20248 @item zoomspeed
20249 Set percent to zoom maximally each frame (enabled when
20250 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
20251 0.25.
20252
20253 @item interpol
20254 Specify type of interpolation.
20255
20256 Available values are:
20257 @table @samp
20258 @item no
20259 no interpolation
20260 @item linear
20261 linear only horizontal
20262 @item bilinear
20263 linear in both directions (default)
20264 @item bicubic
20265 cubic in both directions (slow)
20266 @end table
20267
20268 @item tripod
20269 Enable virtual tripod mode if set to 1, which is equivalent to
20270 @code{relative=0:smoothing=0}. Default value is 0.
20271
20272 Use also @code{tripod} option of @ref{vidstabdetect}.
20273
20274 @item debug
20275 Increase log verbosity if set to 1. Also the detected global motions
20276 are written to the temporary file @file{global_motions.trf}. Default
20277 value is 0.
20278 @end table
20279
20280 @subsection Examples
20281
20282 @itemize
20283 @item
20284 Use @command{ffmpeg} for a typical stabilization with default values:
20285 @example
20286 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
20287 @end example
20288
20289 Note the use of the @ref{unsharp} filter which is always recommended.
20290
20291 @item
20292 Zoom in a bit more and load transform data from a given file:
20293 @example
20294 vidstabtransform=zoom=5:input="mytransforms.trf"
20295 @end example
20296
20297 @item
20298 Smoothen the video even more:
20299 @example
20300 vidstabtransform=smoothing=30
20301 @end example
20302 @end itemize
20303
20304 @section vflip
20305
20306 Flip the input video vertically.
20307
20308 For example, to vertically flip a video with @command{ffmpeg}:
20309 @example
20310 ffmpeg -i in.avi -vf "vflip" out.avi
20311 @end example
20312
20313 @section vfrdet
20314
20315 Detect variable frame rate video.
20316
20317 This filter tries to detect if the input is variable or constant frame rate.
20318
20319 At end it will output number of frames detected as having variable delta pts,
20320 and ones with constant delta pts.
20321 If there was frames with variable delta, than it will also show min, max and
20322 average delta encountered.
20323
20324 @section vibrance
20325
20326 Boost or alter saturation.
20327
20328 The filter accepts the following options:
20329 @table @option
20330 @item intensity
20331 Set strength of boost if positive value or strength of alter if negative value.
20332 Default is 0. Allowed range is from -2 to 2.
20333
20334 @item rbal
20335 Set the red balance. Default is 1. Allowed range is from -10 to 10.
20336
20337 @item gbal
20338 Set the green balance. Default is 1. Allowed range is from -10 to 10.
20339
20340 @item bbal
20341 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
20342
20343 @item rlum
20344 Set the red luma coefficient.
20345
20346 @item glum
20347 Set the green luma coefficient.
20348
20349 @item blum
20350 Set the blue luma coefficient.
20351
20352 @item alternate
20353 If @code{intensity} is negative and this is set to 1, colors will change,
20354 otherwise colors will be less saturated, more towards gray.
20355 @end table
20356
20357 @subsection Commands
20358
20359 This filter supports the all above options as @ref{commands}.
20360
20361 @anchor{vignette}
20362 @section vignette
20363
20364 Make or reverse a natural vignetting effect.
20365
20366 The filter accepts the following options:
20367
20368 @table @option
20369 @item angle, a
20370 Set lens angle expression as a number of radians.
20371
20372 The value is clipped in the @code{[0,PI/2]} range.
20373
20374 Default value: @code{"PI/5"}
20375
20376 @item x0
20377 @item y0
20378 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
20379 by default.
20380
20381 @item mode
20382 Set forward/backward mode.
20383
20384 Available modes are:
20385 @table @samp
20386 @item forward
20387 The larger the distance from the central point, the darker the image becomes.
20388
20389 @item backward
20390 The larger the distance from the central point, the brighter the image becomes.
20391 This can be used to reverse a vignette effect, though there is no automatic
20392 detection to extract the lens @option{angle} and other settings (yet). It can
20393 also be used to create a burning effect.
20394 @end table
20395
20396 Default value is @samp{forward}.
20397
20398 @item eval
20399 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
20400
20401 It accepts the following values:
20402 @table @samp
20403 @item init
20404 Evaluate expressions only once during the filter initialization.
20405
20406 @item frame
20407 Evaluate expressions for each incoming frame. This is way slower than the
20408 @samp{init} mode since it requires all the scalers to be re-computed, but it
20409 allows advanced dynamic expressions.
20410 @end table
20411
20412 Default value is @samp{init}.
20413
20414 @item dither
20415 Set dithering to reduce the circular banding effects. Default is @code{1}
20416 (enabled).
20417
20418 @item aspect
20419 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
20420 Setting this value to the SAR of the input will make a rectangular vignetting
20421 following the dimensions of the video.
20422
20423 Default is @code{1/1}.
20424 @end table
20425
20426 @subsection Expressions
20427
20428 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
20429 following parameters.
20430
20431 @table @option
20432 @item w
20433 @item h
20434 input width and height
20435
20436 @item n
20437 the number of input frame, starting from 0
20438
20439 @item pts
20440 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
20441 @var{TB} units, NAN if undefined
20442
20443 @item r
20444 frame rate of the input video, NAN if the input frame rate is unknown
20445
20446 @item t
20447 the PTS (Presentation TimeStamp) of the filtered video frame,
20448 expressed in seconds, NAN if undefined
20449
20450 @item tb
20451 time base of the input video
20452 @end table
20453
20454
20455 @subsection Examples
20456
20457 @itemize
20458 @item
20459 Apply simple strong vignetting effect:
20460 @example
20461 vignette=PI/4
20462 @end example
20463
20464 @item
20465 Make a flickering vignetting:
20466 @example
20467 vignette='PI/4+random(1)*PI/50':eval=frame
20468 @end example
20469
20470 @end itemize
20471
20472 @section vmafmotion
20473
20474 Obtain the average VMAF motion score of a video.
20475 It is one of the component metrics of VMAF.
20476
20477 The obtained average motion score is printed through the logging system.
20478
20479 The filter accepts the following options:
20480
20481 @table @option
20482 @item stats_file
20483 If specified, the filter will use the named file to save the motion score of
20484 each frame with respect to the previous frame.
20485 When filename equals "-" the data is sent to standard output.
20486 @end table
20487
20488 Example:
20489 @example
20490 ffmpeg -i ref.mpg -vf vmafmotion -f null -
20491 @end example
20492
20493 @section vstack
20494 Stack input videos vertically.
20495
20496 All streams must be of same pixel format and of same width.
20497
20498 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
20499 to create same output.
20500
20501 The filter accepts the following options:
20502
20503 @table @option
20504 @item inputs
20505 Set number of input streams. Default is 2.
20506
20507 @item shortest
20508 If set to 1, force the output to terminate when the shortest input
20509 terminates. Default value is 0.
20510 @end table
20511
20512 @section w3fdif
20513
20514 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
20515 Deinterlacing Filter").
20516
20517 Based on the process described by Martin Weston for BBC R&D, and
20518 implemented based on the de-interlace algorithm written by Jim
20519 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
20520 uses filter coefficients calculated by BBC R&D.
20521
20522 This filter uses field-dominance information in frame to decide which
20523 of each pair of fields to place first in the output.
20524 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
20525
20526 There are two sets of filter coefficients, so called "simple"
20527 and "complex". Which set of filter coefficients is used can
20528 be set by passing an optional parameter:
20529
20530 @table @option
20531 @item filter
20532 Set the interlacing filter coefficients. Accepts one of the following values:
20533
20534 @table @samp
20535 @item simple
20536 Simple filter coefficient set.
20537 @item complex
20538 More-complex filter coefficient set.
20539 @end table
20540 Default value is @samp{complex}.
20541
20542 @item deint
20543 Specify which frames to deinterlace. Accepts one of the following values:
20544
20545 @table @samp
20546 @item all
20547 Deinterlace all frames,
20548 @item interlaced
20549 Only deinterlace frames marked as interlaced.
20550 @end table
20551
20552 Default value is @samp{all}.
20553 @end table
20554
20555 @section waveform
20556 Video waveform monitor.
20557
20558 The waveform monitor plots color component intensity. By default luminance
20559 only. Each column of the waveform corresponds to a column of pixels in the
20560 source video.
20561
20562 It accepts the following options:
20563
20564 @table @option
20565 @item mode, m
20566 Can be either @code{row}, or @code{column}. Default is @code{column}.
20567 In row mode, the graph on the left side represents color component value 0 and
20568 the right side represents value = 255. In column mode, the top side represents
20569 color component value = 0 and bottom side represents value = 255.
20570
20571 @item intensity, i
20572 Set intensity. Smaller values are useful to find out how many values of the same
20573 luminance are distributed across input rows/columns.
20574 Default value is @code{0.04}. Allowed range is [0, 1].
20575
20576 @item mirror, r
20577 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
20578 In mirrored mode, higher values will be represented on the left
20579 side for @code{row} mode and at the top for @code{column} mode. Default is
20580 @code{1} (mirrored).
20581
20582 @item display, d
20583 Set display mode.
20584 It accepts the following values:
20585 @table @samp
20586 @item overlay
20587 Presents information identical to that in the @code{parade}, except
20588 that the graphs representing color components are superimposed directly
20589 over one another.
20590
20591 This display mode makes it easier to spot relative differences or similarities
20592 in overlapping areas of the color components that are supposed to be identical,
20593 such as neutral whites, grays, or blacks.
20594
20595 @item stack
20596 Display separate graph for the color components side by side in
20597 @code{row} mode or one below the other in @code{column} mode.
20598
20599 @item parade
20600 Display separate graph for the color components side by side in
20601 @code{column} mode or one below the other in @code{row} mode.
20602
20603 Using this display mode makes it easy to spot color casts in the highlights
20604 and shadows of an image, by comparing the contours of the top and the bottom
20605 graphs of each waveform. Since whites, grays, and blacks are characterized
20606 by exactly equal amounts of red, green, and blue, neutral areas of the picture
20607 should display three waveforms of roughly equal width/height. If not, the
20608 correction is easy to perform by making level adjustments the three waveforms.
20609 @end table
20610 Default is @code{stack}.
20611
20612 @item components, c
20613 Set which color components to display. Default is 1, which means only luminance
20614 or red color component if input is in RGB colorspace. If is set for example to
20615 7 it will display all 3 (if) available color components.
20616
20617 @item envelope, e
20618 @table @samp
20619 @item none
20620 No envelope, this is default.
20621
20622 @item instant
20623 Instant envelope, minimum and maximum values presented in graph will be easily
20624 visible even with small @code{step} value.
20625
20626 @item peak
20627 Hold minimum and maximum values presented in graph across time. This way you
20628 can still spot out of range values without constantly looking at waveforms.
20629
20630 @item peak+instant
20631 Peak and instant envelope combined together.
20632 @end table
20633
20634 @item filter, f
20635 @table @samp
20636 @item lowpass
20637 No filtering, this is default.
20638
20639 @item flat
20640 Luma and chroma combined together.
20641
20642 @item aflat
20643 Similar as above, but shows difference between blue and red chroma.
20644
20645 @item xflat
20646 Similar as above, but use different colors.
20647
20648 @item yflat
20649 Similar as above, but again with different colors.
20650
20651 @item chroma
20652 Displays only chroma.
20653
20654 @item color
20655 Displays actual color value on waveform.
20656
20657 @item acolor
20658 Similar as above, but with luma showing frequency of chroma values.
20659 @end table
20660
20661 @item graticule, g
20662 Set which graticule to display.
20663
20664 @table @samp
20665 @item none
20666 Do not display graticule.
20667
20668 @item green
20669 Display green graticule showing legal broadcast ranges.
20670
20671 @item orange
20672 Display orange graticule showing legal broadcast ranges.
20673
20674 @item invert
20675 Display invert graticule showing legal broadcast ranges.
20676 @end table
20677
20678 @item opacity, o
20679 Set graticule opacity.
20680
20681 @item flags, fl
20682 Set graticule flags.
20683
20684 @table @samp
20685 @item numbers
20686 Draw numbers above lines. By default enabled.
20687
20688 @item dots
20689 Draw dots instead of lines.
20690 @end table
20691
20692 @item scale, s
20693 Set scale used for displaying graticule.
20694
20695 @table @samp
20696 @item digital
20697 @item millivolts
20698 @item ire
20699 @end table
20700 Default is digital.
20701
20702 @item bgopacity, b
20703 Set background opacity.
20704
20705 @item tint0, t0
20706 @item tint1, t1
20707 Set tint for output.
20708 Only used with lowpass filter and when display is not overlay and input
20709 pixel formats are not RGB.
20710 @end table
20711
20712 @section weave, doubleweave
20713
20714 The @code{weave} takes a field-based video input and join
20715 each two sequential fields into single frame, producing a new double
20716 height clip with half the frame rate and half the frame count.
20717
20718 The @code{doubleweave} works same as @code{weave} but without
20719 halving frame rate and frame count.
20720
20721 It accepts the following option:
20722
20723 @table @option
20724 @item first_field
20725 Set first field. Available values are:
20726
20727 @table @samp
20728 @item top, t
20729 Set the frame as top-field-first.
20730
20731 @item bottom, b
20732 Set the frame as bottom-field-first.
20733 @end table
20734 @end table
20735
20736 @subsection Examples
20737
20738 @itemize
20739 @item
20740 Interlace video using @ref{select} and @ref{separatefields} filter:
20741 @example
20742 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
20743 @end example
20744 @end itemize
20745
20746 @section xbr
20747 Apply the xBR high-quality magnification filter which is designed for pixel
20748 art. It follows a set of edge-detection rules, see
20749 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
20750
20751 It accepts the following option:
20752
20753 @table @option
20754 @item n
20755 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
20756 @code{3xBR} and @code{4} for @code{4xBR}.
20757 Default is @code{3}.
20758 @end table
20759
20760 @section xfade
20761
20762 Apply cross fade from one input video stream to another input video stream.
20763 The cross fade is applied for specified duration.
20764
20765 The filter accepts the following options:
20766
20767 @table @option
20768 @item transition
20769 Set one of available transition effects:
20770
20771 @table @samp
20772 @item custom
20773 @item fade
20774 @item wipeleft
20775 @item wiperight
20776 @item wipeup
20777 @item wipedown
20778 @item slideleft
20779 @item slideright
20780 @item slideup
20781 @item slidedown
20782 @item circlecrop
20783 @item rectcrop
20784 @item distance
20785 @item fadeblack
20786 @item fadewhite
20787 @item radial
20788 @item smoothleft
20789 @item smoothright
20790 @item smoothup
20791 @item smoothdown
20792 @item circleopen
20793 @item circleclose
20794 @item vertopen
20795 @item vertclose
20796 @item horzopen
20797 @item horzclose
20798 @item dissolve
20799 @item pixelize
20800 @item diagtl
20801 @item diagtr
20802 @item diagbl
20803 @item diagbr
20804 @item hlslice
20805 @item hrslice
20806 @item vuslice
20807 @item vdslice
20808 @item hblur
20809 @item fadegrays
20810 @item wipetl
20811 @item wipetr
20812 @item wipebl
20813 @item wipebr
20814 @item squeezeh
20815 @item squeezev
20816 @end table
20817 Default transition effect is fade.
20818
20819 @item duration
20820 Set cross fade duration in seconds.
20821 Default duration is 1 second.
20822
20823 @item offset
20824 Set cross fade start relative to first input stream in seconds.
20825 Default offset is 0.
20826
20827 @item expr
20828 Set expression for custom transition effect.
20829
20830 The expressions can use the following variables and functions:
20831
20832 @table @option
20833 @item X
20834 @item Y
20835 The coordinates of the current sample.
20836
20837 @item W
20838 @item H
20839 The width and height of the image.
20840
20841 @item P
20842 Progress of transition effect.
20843
20844 @item PLANE
20845 Currently processed plane.
20846
20847 @item A
20848 Return value of first input at current location and plane.
20849
20850 @item B
20851 Return value of second input at current location and plane.
20852
20853 @item a0(x, y)
20854 @item a1(x, y)
20855 @item a2(x, y)
20856 @item a3(x, y)
20857 Return the value of the pixel at location (@var{x},@var{y}) of the
20858 first/second/third/fourth component of first input.
20859
20860 @item b0(x, y)
20861 @item b1(x, y)
20862 @item b2(x, y)
20863 @item b3(x, y)
20864 Return the value of the pixel at location (@var{x},@var{y}) of the
20865 first/second/third/fourth component of second input.
20866 @end table
20867 @end table
20868
20869 @subsection Examples
20870
20871 @itemize
20872 @item
20873 Cross fade from one input video to another input video, with fade transition and duration of transition
20874 of 2 seconds starting at offset of 5 seconds:
20875 @example
20876 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
20877 @end example
20878 @end itemize
20879
20880 @section xmedian
20881 Pick median pixels from several input videos.
20882
20883 The filter accepts the following options:
20884
20885 @table @option
20886 @item inputs
20887 Set number of inputs.
20888 Default is 3. Allowed range is from 3 to 255.
20889 If number of inputs is even number, than result will be mean value between two median values.
20890
20891 @item planes
20892 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
20893
20894 @item percentile
20895 Set median percentile. Default value is @code{0.5}.
20896 Default value of @code{0.5} will pick always median values, while @code{0} will pick
20897 minimum values, and @code{1} maximum values.
20898 @end table
20899
20900 @section xstack
20901 Stack video inputs into custom layout.
20902
20903 All streams must be of same pixel format.
20904
20905 The filter accepts the following options:
20906
20907 @table @option
20908 @item inputs
20909 Set number of input streams. Default is 2.
20910
20911 @item layout
20912 Specify layout of inputs.
20913 This option requires the desired layout configuration to be explicitly set by the user.
20914 This sets position of each video input in output. Each input
20915 is separated by '|'.
20916 The first number represents the column, and the second number represents the row.
20917 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
20918 where X is video input from which to take width or height.
20919 Multiple values can be used when separated by '+'. In such
20920 case values are summed together.
20921
20922 Note that if inputs are of different sizes gaps may appear, as not all of
20923 the output video frame will be filled. Similarly, videos can overlap each
20924 other if their position doesn't leave enough space for the full frame of
20925 adjoining videos.
20926
20927 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
20928 a layout must be set by the user.
20929
20930 @item shortest
20931 If set to 1, force the output to terminate when the shortest input
20932 terminates. Default value is 0.
20933
20934 @item fill
20935 If set to valid color, all unused pixels will be filled with that color.
20936 By default fill is set to none, so it is disabled.
20937 @end table
20938
20939 @subsection Examples
20940
20941 @itemize
20942 @item
20943 Display 4 inputs into 2x2 grid.
20944
20945 Layout:
20946 @example
20947 input1(0, 0)  | input3(w0, 0)
20948 input2(0, h0) | input4(w0, h0)
20949 @end example
20950
20951 @example
20952 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
20953 @end example
20954
20955 Note that if inputs are of different sizes, gaps or overlaps may occur.
20956
20957 @item
20958 Display 4 inputs into 1x4 grid.
20959
20960 Layout:
20961 @example
20962 input1(0, 0)
20963 input2(0, h0)
20964 input3(0, h0+h1)
20965 input4(0, h0+h1+h2)
20966 @end example
20967
20968 @example
20969 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
20970 @end example
20971
20972 Note that if inputs are of different widths, unused space will appear.
20973
20974 @item
20975 Display 9 inputs into 3x3 grid.
20976
20977 Layout:
20978 @example
20979 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
20980 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
20981 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
20982 @end example
20983
20984 @example
20985 xstack=inputs=9:layout=0_0|0_h0|0_h0+h1|w0_0|w0_h0|w0_h0+h1|w0+w3_0|w0+w3_h0|w0+w3_h0+h1
20986 @end example
20987
20988 Note that if inputs are of different sizes, gaps or overlaps may occur.
20989
20990 @item
20991 Display 16 inputs into 4x4 grid.
20992
20993 Layout:
20994 @example
20995 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
20996 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
20997 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
20998 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
20999 @end example
21000
21001 @example
21002 xstack=inputs=16:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0|
21003 w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2
21004 @end example
21005
21006 Note that if inputs are of different sizes, gaps or overlaps may occur.
21007
21008 @end itemize
21009
21010 @anchor{yadif}
21011 @section yadif
21012
21013 Deinterlace the input video ("yadif" means "yet another deinterlacing
21014 filter").
21015
21016 It accepts the following parameters:
21017
21018
21019 @table @option
21020
21021 @item mode
21022 The interlacing mode to adopt. It accepts one of the following values:
21023
21024 @table @option
21025 @item 0, send_frame
21026 Output one frame for each frame.
21027 @item 1, send_field
21028 Output one frame for each field.
21029 @item 2, send_frame_nospatial
21030 Like @code{send_frame}, but it skips the spatial interlacing check.
21031 @item 3, send_field_nospatial
21032 Like @code{send_field}, but it skips the spatial interlacing check.
21033 @end table
21034
21035 The default value is @code{send_frame}.
21036
21037 @item parity
21038 The picture field parity assumed for the input interlaced video. It accepts one
21039 of the following values:
21040
21041 @table @option
21042 @item 0, tff
21043 Assume the top field is first.
21044 @item 1, bff
21045 Assume the bottom field is first.
21046 @item -1, auto
21047 Enable automatic detection of field parity.
21048 @end table
21049
21050 The default value is @code{auto}.
21051 If the interlacing is unknown or the decoder does not export this information,
21052 top field first will be assumed.
21053
21054 @item deint
21055 Specify which frames to deinterlace. Accepts one of the following
21056 values:
21057
21058 @table @option
21059 @item 0, all
21060 Deinterlace all frames.
21061 @item 1, interlaced
21062 Only deinterlace frames marked as interlaced.
21063 @end table
21064
21065 The default value is @code{all}.
21066 @end table
21067
21068 @section yadif_cuda
21069
21070 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
21071 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
21072 and/or nvenc.
21073
21074 It accepts the following parameters:
21075
21076
21077 @table @option
21078
21079 @item mode
21080 The interlacing mode to adopt. It accepts one of the following values:
21081
21082 @table @option
21083 @item 0, send_frame
21084 Output one frame for each frame.
21085 @item 1, send_field
21086 Output one frame for each field.
21087 @item 2, send_frame_nospatial
21088 Like @code{send_frame}, but it skips the spatial interlacing check.
21089 @item 3, send_field_nospatial
21090 Like @code{send_field}, but it skips the spatial interlacing check.
21091 @end table
21092
21093 The default value is @code{send_frame}.
21094
21095 @item parity
21096 The picture field parity assumed for the input interlaced video. It accepts one
21097 of the following values:
21098
21099 @table @option
21100 @item 0, tff
21101 Assume the top field is first.
21102 @item 1, bff
21103 Assume the bottom field is first.
21104 @item -1, auto
21105 Enable automatic detection of field parity.
21106 @end table
21107
21108 The default value is @code{auto}.
21109 If the interlacing is unknown or the decoder does not export this information,
21110 top field first will be assumed.
21111
21112 @item deint
21113 Specify which frames to deinterlace. Accepts one of the following
21114 values:
21115
21116 @table @option
21117 @item 0, all
21118 Deinterlace all frames.
21119 @item 1, interlaced
21120 Only deinterlace frames marked as interlaced.
21121 @end table
21122
21123 The default value is @code{all}.
21124 @end table
21125
21126 @section yaepblur
21127
21128 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
21129 The algorithm is described in
21130 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
21131
21132 It accepts the following parameters:
21133
21134 @table @option
21135 @item radius, r
21136 Set the window radius. Default value is 3.
21137
21138 @item planes, p
21139 Set which planes to filter. Default is only the first plane.
21140
21141 @item sigma, s
21142 Set blur strength. Default value is 128.
21143 @end table
21144
21145 @subsection Commands
21146 This filter supports same @ref{commands} as options.
21147
21148 @section zoompan
21149
21150 Apply Zoom & Pan effect.
21151
21152 This filter accepts the following options:
21153
21154 @table @option
21155 @item zoom, z
21156 Set the zoom expression. Range is 1-10. Default is 1.
21157
21158 @item x
21159 @item y
21160 Set the x and y expression. Default is 0.
21161
21162 @item d
21163 Set the duration expression in number of frames.
21164 This sets for how many number of frames effect will last for
21165 single input image.
21166
21167 @item s
21168 Set the output image size, default is 'hd720'.
21169
21170 @item fps
21171 Set the output frame rate, default is '25'.
21172 @end table
21173
21174 Each expression can contain the following constants:
21175
21176 @table @option
21177 @item in_w, iw
21178 Input width.
21179
21180 @item in_h, ih
21181 Input height.
21182
21183 @item out_w, ow
21184 Output width.
21185
21186 @item out_h, oh
21187 Output height.
21188
21189 @item in
21190 Input frame count.
21191
21192 @item on
21193 Output frame count.
21194
21195 @item in_time, it
21196 The input timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
21197
21198 @item out_time, time, ot
21199 The output timestamp expressed in seconds.
21200
21201 @item x
21202 @item y
21203 Last calculated 'x' and 'y' position from 'x' and 'y' expression
21204 for current input frame.
21205
21206 @item px
21207 @item py
21208 'x' and 'y' of last output frame of previous input frame or 0 when there was
21209 not yet such frame (first input frame).
21210
21211 @item zoom
21212 Last calculated zoom from 'z' expression for current input frame.
21213
21214 @item pzoom
21215 Last calculated zoom of last output frame of previous input frame.
21216
21217 @item duration
21218 Number of output frames for current input frame. Calculated from 'd' expression
21219 for each input frame.
21220
21221 @item pduration
21222 number of output frames created for previous input frame
21223
21224 @item a
21225 Rational number: input width / input height
21226
21227 @item sar
21228 sample aspect ratio
21229
21230 @item dar
21231 display aspect ratio
21232
21233 @end table
21234
21235 @subsection Examples
21236
21237 @itemize
21238 @item
21239 Zoom in up to 1.5x and pan at same time to some spot near center of picture:
21240 @example
21241 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='if(gte(zoom,1.5),x,x+1/a)':y='if(gte(zoom,1.5),y,y+1)':s=640x360
21242 @end example
21243
21244 @item
21245 Zoom in up to 1.5x and pan always at center of picture:
21246 @example
21247 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21248 @end example
21249
21250 @item
21251 Same as above but without pausing:
21252 @example
21253 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21254 @end example
21255
21256 @item
21257 Zoom in 2x into center of picture only for the first second of the input video:
21258 @example
21259 zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21260 @end example
21261
21262 @end itemize
21263
21264 @anchor{zscale}
21265 @section zscale
21266 Scale (resize) the input video, using the z.lib library:
21267 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
21268 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
21269
21270 The zscale filter forces the output display aspect ratio to be the same
21271 as the input, by changing the output sample aspect ratio.
21272
21273 If the input image format is different from the format requested by
21274 the next filter, the zscale filter will convert the input to the
21275 requested format.
21276
21277 @subsection Options
21278 The filter accepts the following options.
21279
21280 @table @option
21281 @item width, w
21282 @item height, h
21283 Set the output video dimension expression. Default value is the input
21284 dimension.
21285
21286 If the @var{width} or @var{w} value is 0, the input width is used for
21287 the output. If the @var{height} or @var{h} value is 0, the input height
21288 is used for the output.
21289
21290 If one and only one of the values is -n with n >= 1, the zscale filter
21291 will use a value that maintains the aspect ratio of the input image,
21292 calculated from the other specified dimension. After that it will,
21293 however, make sure that the calculated dimension is divisible by n and
21294 adjust the value if necessary.
21295
21296 If both values are -n with n >= 1, the behavior will be identical to
21297 both values being set to 0 as previously detailed.
21298
21299 See below for the list of accepted constants for use in the dimension
21300 expression.
21301
21302 @item size, s
21303 Set the video size. For the syntax of this option, check the
21304 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21305
21306 @item dither, d
21307 Set the dither type.
21308
21309 Possible values are:
21310 @table @var
21311 @item none
21312 @item ordered
21313 @item random
21314 @item error_diffusion
21315 @end table
21316
21317 Default is none.
21318
21319 @item filter, f
21320 Set the resize filter type.
21321
21322 Possible values are:
21323 @table @var
21324 @item point
21325 @item bilinear
21326 @item bicubic
21327 @item spline16
21328 @item spline36
21329 @item lanczos
21330 @end table
21331
21332 Default is bilinear.
21333
21334 @item range, r
21335 Set the color range.
21336
21337 Possible values are:
21338 @table @var
21339 @item input
21340 @item limited
21341 @item full
21342 @end table
21343
21344 Default is same as input.
21345
21346 @item primaries, p
21347 Set the color primaries.
21348
21349 Possible values are:
21350 @table @var
21351 @item input
21352 @item 709
21353 @item unspecified
21354 @item 170m
21355 @item 240m
21356 @item 2020
21357 @end table
21358
21359 Default is same as input.
21360
21361 @item transfer, t
21362 Set the transfer characteristics.
21363
21364 Possible values are:
21365 @table @var
21366 @item input
21367 @item 709
21368 @item unspecified
21369 @item 601
21370 @item linear
21371 @item 2020_10
21372 @item 2020_12
21373 @item smpte2084
21374 @item iec61966-2-1
21375 @item arib-std-b67
21376 @end table
21377
21378 Default is same as input.
21379
21380 @item matrix, m
21381 Set the colorspace matrix.
21382
21383 Possible value are:
21384 @table @var
21385 @item input
21386 @item 709
21387 @item unspecified
21388 @item 470bg
21389 @item 170m
21390 @item 2020_ncl
21391 @item 2020_cl
21392 @end table
21393
21394 Default is same as input.
21395
21396 @item rangein, rin
21397 Set the input color range.
21398
21399 Possible values are:
21400 @table @var
21401 @item input
21402 @item limited
21403 @item full
21404 @end table
21405
21406 Default is same as input.
21407
21408 @item primariesin, pin
21409 Set the input color primaries.
21410
21411 Possible values are:
21412 @table @var
21413 @item input
21414 @item 709
21415 @item unspecified
21416 @item 170m
21417 @item 240m
21418 @item 2020
21419 @end table
21420
21421 Default is same as input.
21422
21423 @item transferin, tin
21424 Set the input transfer characteristics.
21425
21426 Possible values are:
21427 @table @var
21428 @item input
21429 @item 709
21430 @item unspecified
21431 @item 601
21432 @item linear
21433 @item 2020_10
21434 @item 2020_12
21435 @end table
21436
21437 Default is same as input.
21438
21439 @item matrixin, min
21440 Set the input colorspace matrix.
21441
21442 Possible value are:
21443 @table @var
21444 @item input
21445 @item 709
21446 @item unspecified
21447 @item 470bg
21448 @item 170m
21449 @item 2020_ncl
21450 @item 2020_cl
21451 @end table
21452
21453 @item chromal, c
21454 Set the output chroma location.
21455
21456 Possible values are:
21457 @table @var
21458 @item input
21459 @item left
21460 @item center
21461 @item topleft
21462 @item top
21463 @item bottomleft
21464 @item bottom
21465 @end table
21466
21467 @item chromalin, cin
21468 Set the input chroma location.
21469
21470 Possible values are:
21471 @table @var
21472 @item input
21473 @item left
21474 @item center
21475 @item topleft
21476 @item top
21477 @item bottomleft
21478 @item bottom
21479 @end table
21480
21481 @item npl
21482 Set the nominal peak luminance.
21483 @end table
21484
21485 The values of the @option{w} and @option{h} options are expressions
21486 containing the following constants:
21487
21488 @table @var
21489 @item in_w
21490 @item in_h
21491 The input width and height
21492
21493 @item iw
21494 @item ih
21495 These are the same as @var{in_w} and @var{in_h}.
21496
21497 @item out_w
21498 @item out_h
21499 The output (scaled) width and height
21500
21501 @item ow
21502 @item oh
21503 These are the same as @var{out_w} and @var{out_h}
21504
21505 @item a
21506 The same as @var{iw} / @var{ih}
21507
21508 @item sar
21509 input sample aspect ratio
21510
21511 @item dar
21512 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
21513
21514 @item hsub
21515 @item vsub
21516 horizontal and vertical input chroma subsample values. For example for the
21517 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21518
21519 @item ohsub
21520 @item ovsub
21521 horizontal and vertical output chroma subsample values. For example for the
21522 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21523 @end table
21524
21525 @subsection Commands
21526
21527 This filter supports the following commands:
21528 @table @option
21529 @item width, w
21530 @item height, h
21531 Set the output video dimension expression.
21532 The command accepts the same syntax of the corresponding option.
21533
21534 If the specified expression is not valid, it is kept at its current
21535 value.
21536 @end table
21537
21538 @c man end VIDEO FILTERS
21539
21540 @chapter OpenCL Video Filters
21541 @c man begin OPENCL VIDEO FILTERS
21542
21543 Below is a description of the currently available OpenCL video filters.
21544
21545 To enable compilation of these filters you need to configure FFmpeg with
21546 @code{--enable-opencl}.
21547
21548 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
21549 @table @option
21550
21551 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
21552 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
21553 given device parameters.
21554
21555 @item -filter_hw_device @var{name}
21556 Pass the hardware device called @var{name} to all filters in any filter graph.
21557
21558 @end table
21559
21560 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
21561
21562 @itemize
21563 @item
21564 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
21565 @example
21566 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
21567 @end example
21568 @end itemize
21569
21570 Since OpenCL filters are not able to access frame data in normal memory, all frame data needs to be uploaded(@ref{hwupload}) to hardware surfaces connected to the appropriate device before being used and then downloaded(@ref{hwdownload}) back to normal memory. Note that @ref{hwupload} will upload to a surface with the same layout as the software frame, so it may be necessary to add a @ref{format} filter immediately before to get the input into the right format and @ref{hwdownload} does not support all formats on the output - it may be necessary to insert an additional @ref{format} filter immediately following in the graph to get the output in a supported format.
21571
21572 @section avgblur_opencl
21573
21574 Apply average blur filter.
21575
21576 The filter accepts the following options:
21577
21578 @table @option
21579 @item sizeX
21580 Set horizontal radius size.
21581 Range is @code{[1, 1024]} and default value is @code{1}.
21582
21583 @item planes
21584 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21585
21586 @item sizeY
21587 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
21588 @end table
21589
21590 @subsection Example
21591
21592 @itemize
21593 @item
21594 Apply average blur filter with horizontal and vertical size of 3, setting each pixel of the output to the average value of the 7x7 region centered on it in the input. For pixels on the edges of the image, the region does not extend beyond the image boundaries, and so out-of-range coordinates are not used in the calculations.
21595 @example
21596 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
21597 @end example
21598 @end itemize
21599
21600 @section boxblur_opencl
21601
21602 Apply a boxblur algorithm to the input video.
21603
21604 It accepts the following parameters:
21605
21606 @table @option
21607
21608 @item luma_radius, lr
21609 @item luma_power, lp
21610 @item chroma_radius, cr
21611 @item chroma_power, cp
21612 @item alpha_radius, ar
21613 @item alpha_power, ap
21614
21615 @end table
21616
21617 A description of the accepted options follows.
21618
21619 @table @option
21620 @item luma_radius, lr
21621 @item chroma_radius, cr
21622 @item alpha_radius, ar
21623 Set an expression for the box radius in pixels used for blurring the
21624 corresponding input plane.
21625
21626 The radius value must be a non-negative number, and must not be
21627 greater than the value of the expression @code{min(w,h)/2} for the
21628 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
21629 planes.
21630
21631 Default value for @option{luma_radius} is "2". If not specified,
21632 @option{chroma_radius} and @option{alpha_radius} default to the
21633 corresponding value set for @option{luma_radius}.
21634
21635 The expressions can contain the following constants:
21636 @table @option
21637 @item w
21638 @item h
21639 The input width and height in pixels.
21640
21641 @item cw
21642 @item ch
21643 The input chroma image width and height in pixels.
21644
21645 @item hsub
21646 @item vsub
21647 The horizontal and vertical chroma subsample values. For example, for the
21648 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
21649 @end table
21650
21651 @item luma_power, lp
21652 @item chroma_power, cp
21653 @item alpha_power, ap
21654 Specify how many times the boxblur filter is applied to the
21655 corresponding plane.
21656
21657 Default value for @option{luma_power} is 2. If not specified,
21658 @option{chroma_power} and @option{alpha_power} default to the
21659 corresponding value set for @option{luma_power}.
21660
21661 A value of 0 will disable the effect.
21662 @end table
21663
21664 @subsection Examples
21665
21666 Apply boxblur filter, setting each pixel of the output to the average value of box-radiuses @var{luma_radius}, @var{chroma_radius}, @var{alpha_radius} for each plane respectively. The filter will apply @var{luma_power}, @var{chroma_power}, @var{alpha_power} times onto the corresponding plane. For pixels on the edges of the image, the radius does not extend beyond the image boundaries, and so out-of-range coordinates are not used in the calculations.
21667
21668 @itemize
21669 @item
21670 Apply a boxblur filter with the luma, chroma, and alpha radius
21671 set to 2 and luma, chroma, and alpha power set to 3. The filter will run 3 times with box-radius set to 2 for every plane of the image.
21672 @example
21673 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
21674 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
21675 @end example
21676
21677 @item
21678 Apply a boxblur filter with luma radius set to 2, luma_power to 1, chroma_radius to 4, chroma_power to 5, alpha_radius to 3 and alpha_power to 7.
21679
21680 For the luma plane, a 2x2 box radius will be run once.
21681
21682 For the chroma plane, a 4x4 box radius will be run 5 times.
21683
21684 For the alpha plane, a 3x3 box radius will be run 7 times.
21685 @example
21686 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
21687 @end example
21688 @end itemize
21689
21690 @section colorkey_opencl
21691 RGB colorspace color keying.
21692
21693 The filter accepts the following options:
21694
21695 @table @option
21696 @item color
21697 The color which will be replaced with transparency.
21698
21699 @item similarity
21700 Similarity percentage with the key color.
21701
21702 0.01 matches only the exact key color, while 1.0 matches everything.
21703
21704 @item blend
21705 Blend percentage.
21706
21707 0.0 makes pixels either fully transparent, or not transparent at all.
21708
21709 Higher values result in semi-transparent pixels, with a higher transparency
21710 the more similar the pixels color is to the key color.
21711 @end table
21712
21713 @subsection Examples
21714
21715 @itemize
21716 @item
21717 Make every semi-green pixel in the input transparent with some slight blending:
21718 @example
21719 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
21720 @end example
21721 @end itemize
21722
21723 @section convolution_opencl
21724
21725 Apply convolution of 3x3, 5x5, 7x7 matrix.
21726
21727 The filter accepts the following options:
21728
21729 @table @option
21730 @item 0m
21731 @item 1m
21732 @item 2m
21733 @item 3m
21734 Set matrix for each plane.
21735 Matrix is sequence of 9, 25 or 49 signed numbers.
21736 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
21737
21738 @item 0rdiv
21739 @item 1rdiv
21740 @item 2rdiv
21741 @item 3rdiv
21742 Set multiplier for calculated value for each plane.
21743 If unset or 0, it will be sum of all matrix elements.
21744 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
21745
21746 @item 0bias
21747 @item 1bias
21748 @item 2bias
21749 @item 3bias
21750 Set bias for each plane. This value is added to the result of the multiplication.
21751 Useful for making the overall image brighter or darker.
21752 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
21753
21754 @end table
21755
21756 @subsection Examples
21757
21758 @itemize
21759 @item
21760 Apply sharpen:
21761 @example
21762 -i INPUT -vf "hwupload, convolution_opencl=0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0, hwdownload" OUTPUT
21763 @end example
21764
21765 @item
21766 Apply blur:
21767 @example
21768 -i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9, hwdownload" OUTPUT
21769 @end example
21770
21771 @item
21772 Apply edge enhance:
21773 @example
21774 -i INPUT -vf "hwupload, convolution_opencl=0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128, hwdownload" OUTPUT
21775 @end example
21776
21777 @item
21778 Apply edge detect:
21779 @example
21780 -i INPUT -vf "hwupload, convolution_opencl=0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128, hwdownload" OUTPUT
21781 @end example
21782
21783 @item
21784 Apply laplacian edge detector which includes diagonals:
21785 @example
21786 -i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0, hwdownload" OUTPUT
21787 @end example
21788
21789 @item
21790 Apply emboss:
21791 @example
21792 -i INPUT -vf "hwupload, convolution_opencl=-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2, hwdownload" OUTPUT
21793 @end example
21794 @end itemize
21795
21796 @section erosion_opencl
21797
21798 Apply erosion effect to the video.
21799
21800 This filter replaces the pixel by the local(3x3) minimum.
21801
21802 It accepts the following options:
21803
21804 @table @option
21805 @item threshold0
21806 @item threshold1
21807 @item threshold2
21808 @item threshold3
21809 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21810 If @code{0}, plane will remain unchanged.
21811
21812 @item coordinates
21813 Flag which specifies the pixel to refer to.
21814 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21815
21816 Flags to local 3x3 coordinates region centered on @code{x}:
21817
21818     1 2 3
21819
21820     4 x 5
21821
21822     6 7 8
21823 @end table
21824
21825 @subsection Example
21826
21827 @itemize
21828 @item
21829 Apply erosion filter with threshold0 set to 30, threshold1 set 40, threshold2 set to 50 and coordinates set to 231, setting each pixel of the output to the local minimum between pixels: 1, 2, 3, 6, 7, 8 of the 3x3 region centered on it in the input. If the difference between input pixel and local minimum is more then threshold of the corresponding plane, output pixel will be set to input pixel - threshold of corresponding plane.
21830 @example
21831 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21832 @end example
21833 @end itemize
21834
21835 @section deshake_opencl
21836 Feature-point based video stabilization filter.
21837
21838 The filter accepts the following options:
21839
21840 @table @option
21841 @item tripod
21842 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
21843
21844 @item debug
21845 Whether or not additional debug info should be displayed, both in the processed output and in the console.
21846
21847 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
21848
21849 Viewing point matches in the output video is only supported for RGB input.
21850
21851 Defaults to @code{0}.
21852
21853 @item adaptive_crop
21854 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
21855
21856 Defaults to @code{1}.
21857
21858 @item refine_features
21859 Whether or not feature points should be refined at a sub-pixel level.
21860
21861 This can be turned off for a slight performance gain at the cost of precision.
21862
21863 Defaults to @code{1}.
21864
21865 @item smooth_strength
21866 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
21867
21868 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
21869
21870 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
21871
21872 Defaults to @code{0.0}.
21873
21874 @item smooth_window_multiplier
21875 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
21876
21877 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
21878
21879 Acceptable values range from @code{0.1} to @code{10.0}.
21880
21881 Larger values increase the amount of motion data available for determining how to smooth the camera path,
21882 potentially improving smoothness, but also increase latency and memory usage.
21883
21884 Defaults to @code{2.0}.
21885
21886 @end table
21887
21888 @subsection Examples
21889
21890 @itemize
21891 @item
21892 Stabilize a video with a fixed, medium smoothing strength:
21893 @example
21894 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
21895 @end example
21896
21897 @item
21898 Stabilize a video with debugging (both in console and in rendered video):
21899 @example
21900 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
21901 @end example
21902 @end itemize
21903
21904 @section dilation_opencl
21905
21906 Apply dilation effect to the video.
21907
21908 This filter replaces the pixel by the local(3x3) maximum.
21909
21910 It accepts the following options:
21911
21912 @table @option
21913 @item threshold0
21914 @item threshold1
21915 @item threshold2
21916 @item threshold3
21917 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21918 If @code{0}, plane will remain unchanged.
21919
21920 @item coordinates
21921 Flag which specifies the pixel to refer to.
21922 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21923
21924 Flags to local 3x3 coordinates region centered on @code{x}:
21925
21926     1 2 3
21927
21928     4 x 5
21929
21930     6 7 8
21931 @end table
21932
21933 @subsection Example
21934
21935 @itemize
21936 @item
21937 Apply dilation filter with threshold0 set to 30, threshold1 set 40, threshold2 set to 50 and coordinates set to 231, setting each pixel of the output to the local maximum between pixels: 1, 2, 3, 6, 7, 8 of the 3x3 region centered on it in the input. If the difference between input pixel and local maximum is more then threshold of the corresponding plane, output pixel will be set to input pixel + threshold of corresponding plane.
21938 @example
21939 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21940 @end example
21941 @end itemize
21942
21943 @section nlmeans_opencl
21944
21945 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
21946
21947 @section overlay_opencl
21948
21949 Overlay one video on top of another.
21950
21951 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
21952 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
21953
21954 The filter accepts the following options:
21955
21956 @table @option
21957
21958 @item x
21959 Set the x coordinate of the overlaid video on the main video.
21960 Default value is @code{0}.
21961
21962 @item y
21963 Set the y coordinate of the overlaid video on the main video.
21964 Default value is @code{0}.
21965
21966 @end table
21967
21968 @subsection Examples
21969
21970 @itemize
21971 @item
21972 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
21973 @example
21974 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21975 @end example
21976 @item
21977 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
21978 @example
21979 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21980 @end example
21981
21982 @end itemize
21983
21984 @section pad_opencl
21985
21986 Add paddings to the input image, and place the original input at the
21987 provided @var{x}, @var{y} coordinates.
21988
21989 It accepts the following options:
21990
21991 @table @option
21992 @item width, w
21993 @item height, h
21994 Specify an expression for the size of the output image with the
21995 paddings added. If the value for @var{width} or @var{height} is 0, the
21996 corresponding input size is used for the output.
21997
21998 The @var{width} expression can reference the value set by the
21999 @var{height} expression, and vice versa.
22000
22001 The default value of @var{width} and @var{height} is 0.
22002
22003 @item x
22004 @item y
22005 Specify the offsets to place the input image at within the padded area,
22006 with respect to the top/left border of the output image.
22007
22008 The @var{x} expression can reference the value set by the @var{y}
22009 expression, and vice versa.
22010
22011 The default value of @var{x} and @var{y} is 0.
22012
22013 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
22014 so the input image is centered on the padded area.
22015
22016 @item color
22017 Specify the color of the padded area. For the syntax of this option,
22018 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
22019 manual,ffmpeg-utils}.
22020
22021 @item aspect
22022 Pad to an aspect instead to a resolution.
22023 @end table
22024
22025 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
22026 options are expressions containing the following constants:
22027
22028 @table @option
22029 @item in_w
22030 @item in_h
22031 The input video width and height.
22032
22033 @item iw
22034 @item ih
22035 These are the same as @var{in_w} and @var{in_h}.
22036
22037 @item out_w
22038 @item out_h
22039 The output width and height (the size of the padded area), as
22040 specified by the @var{width} and @var{height} expressions.
22041
22042 @item ow
22043 @item oh
22044 These are the same as @var{out_w} and @var{out_h}.
22045
22046 @item x
22047 @item y
22048 The x and y offsets as specified by the @var{x} and @var{y}
22049 expressions, or NAN if not yet specified.
22050
22051 @item a
22052 same as @var{iw} / @var{ih}
22053
22054 @item sar
22055 input sample aspect ratio
22056
22057 @item dar
22058 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
22059 @end table
22060
22061 @section prewitt_opencl
22062
22063 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
22064
22065 The filter accepts the following option:
22066
22067 @table @option
22068 @item planes
22069 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22070
22071 @item scale
22072 Set value which will be multiplied with filtered result.
22073 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22074
22075 @item delta
22076 Set value which will be added to filtered result.
22077 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22078 @end table
22079
22080 @subsection Example
22081
22082 @itemize
22083 @item
22084 Apply the Prewitt operator with scale set to 2 and delta set to 10.
22085 @example
22086 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
22087 @end example
22088 @end itemize
22089
22090 @anchor{program_opencl}
22091 @section program_opencl
22092
22093 Filter video using an OpenCL program.
22094
22095 @table @option
22096
22097 @item source
22098 OpenCL program source file.
22099
22100 @item kernel
22101 Kernel name in program.
22102
22103 @item inputs
22104 Number of inputs to the filter.  Defaults to 1.
22105
22106 @item size, s
22107 Size of output frames.  Defaults to the same as the first input.
22108
22109 @end table
22110
22111 The @code{program_opencl} filter also supports the @ref{framesync} options.
22112
22113 The program source file must contain a kernel function with the given name,
22114 which will be run once for each plane of the output.  Each run on a plane
22115 gets enqueued as a separate 2D global NDRange with one work-item for each
22116 pixel to be generated.  The global ID offset for each work-item is therefore
22117 the coordinates of a pixel in the destination image.
22118
22119 The kernel function needs to take the following arguments:
22120 @itemize
22121 @item
22122 Destination image, @var{__write_only image2d_t}.
22123
22124 This image will become the output; the kernel should write all of it.
22125 @item
22126 Frame index, @var{unsigned int}.
22127
22128 This is a counter starting from zero and increasing by one for each frame.
22129 @item
22130 Source images, @var{__read_only image2d_t}.
22131
22132 These are the most recent images on each input.  The kernel may read from
22133 them to generate the output, but they can't be written to.
22134 @end itemize
22135
22136 Example programs:
22137
22138 @itemize
22139 @item
22140 Copy the input to the output (output must be the same size as the input).
22141 @verbatim
22142 __kernel void copy(__write_only image2d_t destination,
22143                    unsigned int index,
22144                    __read_only  image2d_t source)
22145 {
22146     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
22147
22148     int2 location = (int2)(get_global_id(0), get_global_id(1));
22149
22150     float4 value = read_imagef(source, sampler, location);
22151
22152     write_imagef(destination, location, value);
22153 }
22154 @end verbatim
22155
22156 @item
22157 Apply a simple transformation, rotating the input by an amount increasing
22158 with the index counter.  Pixel values are linearly interpolated by the
22159 sampler, and the output need not have the same dimensions as the input.
22160 @verbatim
22161 __kernel void rotate_image(__write_only image2d_t dst,
22162                            unsigned int index,
22163                            __read_only  image2d_t src)
22164 {
22165     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22166                                CLK_FILTER_LINEAR);
22167
22168     float angle = (float)index / 100.0f;
22169
22170     float2 dst_dim = convert_float2(get_image_dim(dst));
22171     float2 src_dim = convert_float2(get_image_dim(src));
22172
22173     float2 dst_cen = dst_dim / 2.0f;
22174     float2 src_cen = src_dim / 2.0f;
22175
22176     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
22177
22178     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
22179     float2 src_pos = {
22180         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
22181         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
22182     };
22183     src_pos = src_pos * src_dim / dst_dim;
22184
22185     float2 src_loc = src_pos + src_cen;
22186
22187     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
22188         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
22189         write_imagef(dst, dst_loc, 0.5f);
22190     else
22191         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
22192 }
22193 @end verbatim
22194
22195 @item
22196 Blend two inputs together, with the amount of each input used varying
22197 with the index counter.
22198 @verbatim
22199 __kernel void blend_images(__write_only image2d_t dst,
22200                            unsigned int index,
22201                            __read_only  image2d_t src1,
22202                            __read_only  image2d_t src2)
22203 {
22204     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22205                                CLK_FILTER_LINEAR);
22206
22207     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
22208
22209     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
22210     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
22211     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
22212
22213     float4 val1 = read_imagef(src1, sampler, src1_loc);
22214     float4 val2 = read_imagef(src2, sampler, src2_loc);
22215
22216     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
22217 }
22218 @end verbatim
22219
22220 @end itemize
22221
22222 @section roberts_opencl
22223 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
22224
22225 The filter accepts the following option:
22226
22227 @table @option
22228 @item planes
22229 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22230
22231 @item scale
22232 Set value which will be multiplied with filtered result.
22233 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22234
22235 @item delta
22236 Set value which will be added to filtered result.
22237 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22238 @end table
22239
22240 @subsection Example
22241
22242 @itemize
22243 @item
22244 Apply the Roberts cross operator with scale set to 2 and delta set to 10
22245 @example
22246 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
22247 @end example
22248 @end itemize
22249
22250 @section sobel_opencl
22251
22252 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
22253
22254 The filter accepts the following option:
22255
22256 @table @option
22257 @item planes
22258 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22259
22260 @item scale
22261 Set value which will be multiplied with filtered result.
22262 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22263
22264 @item delta
22265 Set value which will be added to filtered result.
22266 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22267 @end table
22268
22269 @subsection Example
22270
22271 @itemize
22272 @item
22273 Apply sobel operator with scale set to 2 and delta set to 10
22274 @example
22275 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
22276 @end example
22277 @end itemize
22278
22279 @section tonemap_opencl
22280
22281 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
22282
22283 It accepts the following parameters:
22284
22285 @table @option
22286 @item tonemap
22287 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
22288
22289 @item param
22290 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
22291
22292 @item desat
22293 Apply desaturation for highlights that exceed this level of brightness. The
22294 higher the parameter, the more color information will be preserved. This
22295 setting helps prevent unnaturally blown-out colors for super-highlights, by
22296 (smoothly) turning into white instead. This makes images feel more natural,
22297 at the cost of reducing information about out-of-range colors.
22298
22299 The default value is 0.5, and the algorithm here is a little different from
22300 the cpu version tonemap currently. A setting of 0.0 disables this option.
22301
22302 @item threshold
22303 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
22304 is used to detect whether the scene has changed or not. If the distance between
22305 the current frame average brightness and the current running average exceeds
22306 a threshold value, we would re-calculate scene average and peak brightness.
22307 The default value is 0.2.
22308
22309 @item format
22310 Specify the output pixel format.
22311
22312 Currently supported formats are:
22313 @table @var
22314 @item p010
22315 @item nv12
22316 @end table
22317
22318 @item range, r
22319 Set the output color range.
22320
22321 Possible values are:
22322 @table @var
22323 @item tv/mpeg
22324 @item pc/jpeg
22325 @end table
22326
22327 Default is same as input.
22328
22329 @item primaries, p
22330 Set the output color primaries.
22331
22332 Possible values are:
22333 @table @var
22334 @item bt709
22335 @item bt2020
22336 @end table
22337
22338 Default is same as input.
22339
22340 @item transfer, t
22341 Set the output transfer characteristics.
22342
22343 Possible values are:
22344 @table @var
22345 @item bt709
22346 @item bt2020
22347 @end table
22348
22349 Default is bt709.
22350
22351 @item matrix, m
22352 Set the output colorspace matrix.
22353
22354 Possible value are:
22355 @table @var
22356 @item bt709
22357 @item bt2020
22358 @end table
22359
22360 Default is same as input.
22361
22362 @end table
22363
22364 @subsection Example
22365
22366 @itemize
22367 @item
22368 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
22369 @example
22370 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
22371 @end example
22372 @end itemize
22373
22374 @section unsharp_opencl
22375
22376 Sharpen or blur the input video.
22377
22378 It accepts the following parameters:
22379
22380 @table @option
22381 @item luma_msize_x, lx
22382 Set the luma matrix horizontal size.
22383 Range is @code{[1, 23]} and default value is @code{5}.
22384
22385 @item luma_msize_y, ly
22386 Set the luma matrix vertical size.
22387 Range is @code{[1, 23]} and default value is @code{5}.
22388
22389 @item luma_amount, la
22390 Set the luma effect strength.
22391 Range is @code{[-10, 10]} and default value is @code{1.0}.
22392
22393 Negative values will blur the input video, while positive values will
22394 sharpen it, a value of zero will disable the effect.
22395
22396 @item chroma_msize_x, cx
22397 Set the chroma matrix horizontal size.
22398 Range is @code{[1, 23]} and default value is @code{5}.
22399
22400 @item chroma_msize_y, cy
22401 Set the chroma matrix vertical size.
22402 Range is @code{[1, 23]} and default value is @code{5}.
22403
22404 @item chroma_amount, ca
22405 Set the chroma effect strength.
22406 Range is @code{[-10, 10]} and default value is @code{0.0}.
22407
22408 Negative values will blur the input video, while positive values will
22409 sharpen it, a value of zero will disable the effect.
22410
22411 @end table
22412
22413 All parameters are optional and default to the equivalent of the
22414 string '5:5:1.0:5:5:0.0'.
22415
22416 @subsection Examples
22417
22418 @itemize
22419 @item
22420 Apply strong luma sharpen effect:
22421 @example
22422 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
22423 @end example
22424
22425 @item
22426 Apply a strong blur of both luma and chroma parameters:
22427 @example
22428 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
22429 @end example
22430 @end itemize
22431
22432 @section xfade_opencl
22433
22434 Cross fade two videos with custom transition effect by using OpenCL.
22435
22436 It accepts the following options:
22437
22438 @table @option
22439 @item transition
22440 Set one of possible transition effects.
22441
22442 @table @option
22443 @item custom
22444 Select custom transition effect, the actual transition description
22445 will be picked from source and kernel options.
22446
22447 @item fade
22448 @item wipeleft
22449 @item wiperight
22450 @item wipeup
22451 @item wipedown
22452 @item slideleft
22453 @item slideright
22454 @item slideup
22455 @item slidedown
22456
22457 Default transition is fade.
22458 @end table
22459
22460 @item source
22461 OpenCL program source file for custom transition.
22462
22463 @item kernel
22464 Set name of kernel to use for custom transition from program source file.
22465
22466 @item duration
22467 Set duration of video transition.
22468
22469 @item offset
22470 Set time of start of transition relative to first video.
22471 @end table
22472
22473 The program source file must contain a kernel function with the given name,
22474 which will be run once for each plane of the output.  Each run on a plane
22475 gets enqueued as a separate 2D global NDRange with one work-item for each
22476 pixel to be generated.  The global ID offset for each work-item is therefore
22477 the coordinates of a pixel in the destination image.
22478
22479 The kernel function needs to take the following arguments:
22480 @itemize
22481 @item
22482 Destination image, @var{__write_only image2d_t}.
22483
22484 This image will become the output; the kernel should write all of it.
22485
22486 @item
22487 First Source image, @var{__read_only image2d_t}.
22488 Second Source image, @var{__read_only image2d_t}.
22489
22490 These are the most recent images on each input.  The kernel may read from
22491 them to generate the output, but they can't be written to.
22492
22493 @item
22494 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
22495 @end itemize
22496
22497 Example programs:
22498
22499 @itemize
22500 @item
22501 Apply dots curtain transition effect:
22502 @verbatim
22503 __kernel void blend_images(__write_only image2d_t dst,
22504                            __read_only  image2d_t src1,
22505                            __read_only  image2d_t src2,
22506                            float progress)
22507 {
22508     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22509                                CLK_FILTER_LINEAR);
22510     int2  p = (int2)(get_global_id(0), get_global_id(1));
22511     float2 rp = (float2)(get_global_id(0), get_global_id(1));
22512     float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
22513     rp = rp / dim;
22514
22515     float2 dots = (float2)(20.0, 20.0);
22516     float2 center = (float2)(0,0);
22517     float2 unused;
22518
22519     float4 val1 = read_imagef(src1, sampler, p);
22520     float4 val2 = read_imagef(src2, sampler, p);
22521     bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
22522
22523     write_imagef(dst, p, next ? val1 : val2);
22524 }
22525 @end verbatim
22526
22527 @end itemize
22528
22529 @c man end OPENCL VIDEO FILTERS
22530
22531 @chapter VAAPI Video Filters
22532 @c man begin VAAPI VIDEO FILTERS
22533
22534 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
22535
22536 To enable compilation of these filters you need to configure FFmpeg with
22537 @code{--enable-vaapi}.
22538
22539 To use vaapi filters, you need to setup the vaapi device correctly. For more information, please read @url{https://trac.ffmpeg.org/wiki/Hardware/VAAPI}
22540
22541 @section tonemap_vaapi
22542
22543 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
22544 It maps the dynamic range of HDR10 content to the SDR content.
22545 It currently only accepts HDR10 as input.
22546
22547 It accepts the following parameters:
22548
22549 @table @option
22550 @item format
22551 Specify the output pixel format.
22552
22553 Currently supported formats are:
22554 @table @var
22555 @item p010
22556 @item nv12
22557 @end table
22558
22559 Default is nv12.
22560
22561 @item primaries, p
22562 Set the output color primaries.
22563
22564 Default is same as input.
22565
22566 @item transfer, t
22567 Set the output transfer characteristics.
22568
22569 Default is bt709.
22570
22571 @item matrix, m
22572 Set the output colorspace matrix.
22573
22574 Default is same as input.
22575
22576 @end table
22577
22578 @subsection Example
22579
22580 @itemize
22581 @item
22582 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
22583 @example
22584 tonemap_vaapi=format=p010:t=bt2020-10
22585 @end example
22586 @end itemize
22587
22588 @c man end VAAPI VIDEO FILTERS
22589
22590 @chapter Video Sources
22591 @c man begin VIDEO SOURCES
22592
22593 Below is a description of the currently available video sources.
22594
22595 @section buffer
22596
22597 Buffer video frames, and make them available to the filter chain.
22598
22599 This source is mainly intended for a programmatic use, in particular
22600 through the interface defined in @file{libavfilter/buffersrc.h}.
22601
22602 It accepts the following parameters:
22603
22604 @table @option
22605
22606 @item video_size
22607 Specify the size (width and height) of the buffered video frames. For the
22608 syntax of this option, check the
22609 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22610
22611 @item width
22612 The input video width.
22613
22614 @item height
22615 The input video height.
22616
22617 @item pix_fmt
22618 A string representing the pixel format of the buffered video frames.
22619 It may be a number corresponding to a pixel format, or a pixel format
22620 name.
22621
22622 @item time_base
22623 Specify the timebase assumed by the timestamps of the buffered frames.
22624
22625 @item frame_rate
22626 Specify the frame rate expected for the video stream.
22627
22628 @item pixel_aspect, sar
22629 The sample (pixel) aspect ratio of the input video.
22630
22631 @item sws_param
22632 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
22633 to the filtergraph description to specify swscale flags for automatically
22634 inserted scalers. See @ref{Filtergraph syntax}.
22635
22636 @item hw_frames_ctx
22637 When using a hardware pixel format, this should be a reference to an
22638 AVHWFramesContext describing input frames.
22639 @end table
22640
22641 For example:
22642 @example
22643 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
22644 @end example
22645
22646 will instruct the source to accept video frames with size 320x240 and
22647 with format "yuv410p", assuming 1/24 as the timestamps timebase and
22648 square pixels (1:1 sample aspect ratio).
22649 Since the pixel format with name "yuv410p" corresponds to the number 6
22650 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
22651 this example corresponds to:
22652 @example
22653 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
22654 @end example
22655
22656 Alternatively, the options can be specified as a flat string, but this
22657 syntax is deprecated:
22658
22659 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
22660
22661 @section cellauto
22662
22663 Create a pattern generated by an elementary cellular automaton.
22664
22665 The initial state of the cellular automaton can be defined through the
22666 @option{filename} and @option{pattern} options. If such options are
22667 not specified an initial state is created randomly.
22668
22669 At each new frame a new row in the video is filled with the result of
22670 the cellular automaton next generation. The behavior when the whole
22671 frame is filled is defined by the @option{scroll} option.
22672
22673 This source accepts the following options:
22674
22675 @table @option
22676 @item filename, f
22677 Read the initial cellular automaton state, i.e. the starting row, from
22678 the specified file.
22679 In the file, each non-whitespace character is considered an alive
22680 cell, a newline will terminate the row, and further characters in the
22681 file will be ignored.
22682
22683 @item pattern, p
22684 Read the initial cellular automaton state, i.e. the starting row, from
22685 the specified string.
22686
22687 Each non-whitespace character in the string is considered an alive
22688 cell, a newline will terminate the row, and further characters in the
22689 string will be ignored.
22690
22691 @item rate, r
22692 Set the video rate, that is the number of frames generated per second.
22693 Default is 25.
22694
22695 @item random_fill_ratio, ratio
22696 Set the random fill ratio for the initial cellular automaton row. It
22697 is a floating point number value ranging from 0 to 1, defaults to
22698 1/PHI.
22699
22700 This option is ignored when a file or a pattern is specified.
22701
22702 @item random_seed, seed
22703 Set the seed for filling randomly the initial row, must be an integer
22704 included between 0 and UINT32_MAX. If not specified, or if explicitly
22705 set to -1, the filter will try to use a good random seed on a best
22706 effort basis.
22707
22708 @item rule
22709 Set the cellular automaton rule, it is a number ranging from 0 to 255.
22710 Default value is 110.
22711
22712 @item size, s
22713 Set the size of the output video. For the syntax of this option, check the
22714 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22715
22716 If @option{filename} or @option{pattern} is specified, the size is set
22717 by default to the width of the specified initial state row, and the
22718 height is set to @var{width} * PHI.
22719
22720 If @option{size} is set, it must contain the width of the specified
22721 pattern string, and the specified pattern will be centered in the
22722 larger row.
22723
22724 If a filename or a pattern string is not specified, the size value
22725 defaults to "320x518" (used for a randomly generated initial state).
22726
22727 @item scroll
22728 If set to 1, scroll the output upward when all the rows in the output
22729 have been already filled. If set to 0, the new generated row will be
22730 written over the top row just after the bottom row is filled.
22731 Defaults to 1.
22732
22733 @item start_full, full
22734 If set to 1, completely fill the output with generated rows before
22735 outputting the first frame.
22736 This is the default behavior, for disabling set the value to 0.
22737
22738 @item stitch
22739 If set to 1, stitch the left and right row edges together.
22740 This is the default behavior, for disabling set the value to 0.
22741 @end table
22742
22743 @subsection Examples
22744
22745 @itemize
22746 @item
22747 Read the initial state from @file{pattern}, and specify an output of
22748 size 200x400.
22749 @example
22750 cellauto=f=pattern:s=200x400
22751 @end example
22752
22753 @item
22754 Generate a random initial row with a width of 200 cells, with a fill
22755 ratio of 2/3:
22756 @example
22757 cellauto=ratio=2/3:s=200x200
22758 @end example
22759
22760 @item
22761 Create a pattern generated by rule 18 starting by a single alive cell
22762 centered on an initial row with width 100:
22763 @example
22764 cellauto=p=@@:s=100x400:full=0:rule=18
22765 @end example
22766
22767 @item
22768 Specify a more elaborated initial pattern:
22769 @example
22770 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
22771 @end example
22772
22773 @end itemize
22774
22775 @anchor{coreimagesrc}
22776 @section coreimagesrc
22777 Video source generated on GPU using Apple's CoreImage API on OSX.
22778
22779 This video source is a specialized version of the @ref{coreimage} video filter.
22780 Use a core image generator at the beginning of the applied filterchain to
22781 generate the content.
22782
22783 The coreimagesrc video source accepts the following options:
22784 @table @option
22785 @item list_generators
22786 List all available generators along with all their respective options as well as
22787 possible minimum and maximum values along with the default values.
22788 @example
22789 list_generators=true
22790 @end example
22791
22792 @item size, s
22793 Specify the size of the sourced video. For the syntax of this option, check the
22794 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22795 The default value is @code{320x240}.
22796
22797 @item rate, r
22798 Specify the frame rate of the sourced video, as the number of frames
22799 generated per second. It has to be a string in the format
22800 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22801 number or a valid video frame rate abbreviation. The default value is
22802 "25".
22803
22804 @item sar
22805 Set the sample aspect ratio of the sourced video.
22806
22807 @item duration, d
22808 Set the duration of the sourced video. See
22809 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22810 for the accepted syntax.
22811
22812 If not specified, or the expressed duration is negative, the video is
22813 supposed to be generated forever.
22814 @end table
22815
22816 Additionally, all options of the @ref{coreimage} video filter are accepted.
22817 A complete filterchain can be used for further processing of the
22818 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
22819 and examples for details.
22820
22821 @subsection Examples
22822
22823 @itemize
22824
22825 @item
22826 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
22827 given as complete and escaped command-line for Apple's standard bash shell:
22828 @example
22829 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
22830 @end example
22831 This example is equivalent to the QRCode example of @ref{coreimage} without the
22832 need for a nullsrc video source.
22833 @end itemize
22834
22835
22836 @section gradients
22837 Generate several gradients.
22838
22839 @table @option
22840 @item size, s
22841 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22842 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22843
22844 @item rate, r
22845 Set frame rate, expressed as number of frames per second. Default
22846 value is "25".
22847
22848 @item c0, c1, c2, c3, c4, c5, c6, c7
22849 Set 8 colors. Default values for colors is to pick random one.
22850
22851 @item x0, y0, y0, y1
22852 Set gradient line source and destination points. If negative or out of range, random ones
22853 are picked.
22854
22855 @item nb_colors, n
22856 Set number of colors to use at once. Allowed range is from 2 to 8. Default value is 2.
22857
22858 @item seed
22859 Set seed for picking gradient line points.
22860
22861 @item duration, d
22862 Set the duration of the sourced video. See
22863 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22864 for the accepted syntax.
22865
22866 If not specified, or the expressed duration is negative, the video is
22867 supposed to be generated forever.
22868
22869 @item speed
22870 Set speed of gradients rotation.
22871 @end table
22872
22873
22874 @section mandelbrot
22875
22876 Generate a Mandelbrot set fractal, and progressively zoom towards the
22877 point specified with @var{start_x} and @var{start_y}.
22878
22879 This source accepts the following options:
22880
22881 @table @option
22882
22883 @item end_pts
22884 Set the terminal pts value. Default value is 400.
22885
22886 @item end_scale
22887 Set the terminal scale value.
22888 Must be a floating point value. Default value is 0.3.
22889
22890 @item inner
22891 Set the inner coloring mode, that is the algorithm used to draw the
22892 Mandelbrot fractal internal region.
22893
22894 It shall assume one of the following values:
22895 @table @option
22896 @item black
22897 Set black mode.
22898 @item convergence
22899 Show time until convergence.
22900 @item mincol
22901 Set color based on point closest to the origin of the iterations.
22902 @item period
22903 Set period mode.
22904 @end table
22905
22906 Default value is @var{mincol}.
22907
22908 @item bailout
22909 Set the bailout value. Default value is 10.0.
22910
22911 @item maxiter
22912 Set the maximum of iterations performed by the rendering
22913 algorithm. Default value is 7189.
22914
22915 @item outer
22916 Set outer coloring mode.
22917 It shall assume one of following values:
22918 @table @option
22919 @item iteration_count
22920 Set iteration count mode.
22921 @item normalized_iteration_count
22922 set normalized iteration count mode.
22923 @end table
22924 Default value is @var{normalized_iteration_count}.
22925
22926 @item rate, r
22927 Set frame rate, expressed as number of frames per second. Default
22928 value is "25".
22929
22930 @item size, s
22931 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22932 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22933
22934 @item start_scale
22935 Set the initial scale value. Default value is 3.0.
22936
22937 @item start_x
22938 Set the initial x position. Must be a floating point value between
22939 -100 and 100. Default value is -0.743643887037158704752191506114774.
22940
22941 @item start_y
22942 Set the initial y position. Must be a floating point value between
22943 -100 and 100. Default value is -0.131825904205311970493132056385139.
22944 @end table
22945
22946 @section mptestsrc
22947
22948 Generate various test patterns, as generated by the MPlayer test filter.
22949
22950 The size of the generated video is fixed, and is 256x256.
22951 This source is useful in particular for testing encoding features.
22952
22953 This source accepts the following options:
22954
22955 @table @option
22956
22957 @item rate, r
22958 Specify the frame rate of the sourced video, as the number of frames
22959 generated per second. It has to be a string in the format
22960 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22961 number or a valid video frame rate abbreviation. The default value is
22962 "25".
22963
22964 @item duration, d
22965 Set the duration of the sourced video. See
22966 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22967 for the accepted syntax.
22968
22969 If not specified, or the expressed duration is negative, the video is
22970 supposed to be generated forever.
22971
22972 @item test, t
22973
22974 Set the number or the name of the test to perform. Supported tests are:
22975 @table @option
22976 @item dc_luma
22977 @item dc_chroma
22978 @item freq_luma
22979 @item freq_chroma
22980 @item amp_luma
22981 @item amp_chroma
22982 @item cbp
22983 @item mv
22984 @item ring1
22985 @item ring2
22986 @item all
22987
22988 @item max_frames, m
22989 Set the maximum number of frames generated for each test, default value is 30.
22990
22991 @end table
22992
22993 Default value is "all", which will cycle through the list of all tests.
22994 @end table
22995
22996 Some examples:
22997 @example
22998 mptestsrc=t=dc_luma
22999 @end example
23000
23001 will generate a "dc_luma" test pattern.
23002
23003 @section frei0r_src
23004
23005 Provide a frei0r source.
23006
23007 To enable compilation of this filter you need to install the frei0r
23008 header and configure FFmpeg with @code{--enable-frei0r}.
23009
23010 This source accepts the following parameters:
23011
23012 @table @option
23013
23014 @item size
23015 The size of the video to generate. For the syntax of this option, check the
23016 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23017
23018 @item framerate
23019 The framerate of the generated video. It may be a string of the form
23020 @var{num}/@var{den} or a frame rate abbreviation.
23021
23022 @item filter_name
23023 The name to the frei0r source to load. For more information regarding frei0r and
23024 how to set the parameters, read the @ref{frei0r} section in the video filters
23025 documentation.
23026
23027 @item filter_params
23028 A '|'-separated list of parameters to pass to the frei0r source.
23029
23030 @end table
23031
23032 For example, to generate a frei0r partik0l source with size 200x200
23033 and frame rate 10 which is overlaid on the overlay filter main input:
23034 @example
23035 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
23036 @end example
23037
23038 @section life
23039
23040 Generate a life pattern.
23041
23042 This source is based on a generalization of John Conway's life game.
23043
23044 The sourced input represents a life grid, each pixel represents a cell
23045 which can be in one of two possible states, alive or dead. Every cell
23046 interacts with its eight neighbours, which are the cells that are
23047 horizontally, vertically, or diagonally adjacent.
23048
23049 At each interaction the grid evolves according to the adopted rule,
23050 which specifies the number of neighbor alive cells which will make a
23051 cell stay alive or born. The @option{rule} option allows one to specify
23052 the rule to adopt.
23053
23054 This source accepts the following options:
23055
23056 @table @option
23057 @item filename, f
23058 Set the file from which to read the initial grid state. In the file,
23059 each non-whitespace character is considered an alive cell, and newline
23060 is used to delimit the end of each row.
23061
23062 If this option is not specified, the initial grid is generated
23063 randomly.
23064
23065 @item rate, r
23066 Set the video rate, that is the number of frames generated per second.
23067 Default is 25.
23068
23069 @item random_fill_ratio, ratio
23070 Set the random fill ratio for the initial random grid. It is a
23071 floating point number value ranging from 0 to 1, defaults to 1/PHI.
23072 It is ignored when a file is specified.
23073
23074 @item random_seed, seed
23075 Set the seed for filling the initial random grid, must be an integer
23076 included between 0 and UINT32_MAX. If not specified, or if explicitly
23077 set to -1, the filter will try to use a good random seed on a best
23078 effort basis.
23079
23080 @item rule
23081 Set the life rule.
23082
23083 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
23084 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
23085 @var{NS} specifies the number of alive neighbor cells which make a
23086 live cell stay alive, and @var{NB} the number of alive neighbor cells
23087 which make a dead cell to become alive (i.e. to "born").
23088 "s" and "b" can be used in place of "S" and "B", respectively.
23089
23090 Alternatively a rule can be specified by an 18-bits integer. The 9
23091 high order bits are used to encode the next cell state if it is alive
23092 for each number of neighbor alive cells, the low order bits specify
23093 the rule for "borning" new cells. Higher order bits encode for an
23094 higher number of neighbor cells.
23095 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
23096 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
23097
23098 Default value is "S23/B3", which is the original Conway's game of life
23099 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
23100 cells, and will born a new cell if there are three alive cells around
23101 a dead cell.
23102
23103 @item size, s
23104 Set the size of the output video. For the syntax of this option, check the
23105 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23106
23107 If @option{filename} is specified, the size is set by default to the
23108 same size of the input file. If @option{size} is set, it must contain
23109 the size specified in the input file, and the initial grid defined in
23110 that file is centered in the larger resulting area.
23111
23112 If a filename is not specified, the size value defaults to "320x240"
23113 (used for a randomly generated initial grid).
23114
23115 @item stitch
23116 If set to 1, stitch the left and right grid edges together, and the
23117 top and bottom edges also. Defaults to 1.
23118
23119 @item mold
23120 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
23121 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
23122 value from 0 to 255.
23123
23124 @item life_color
23125 Set the color of living (or new born) cells.
23126
23127 @item death_color
23128 Set the color of dead cells. If @option{mold} is set, this is the first color
23129 used to represent a dead cell.
23130
23131 @item mold_color
23132 Set mold color, for definitely dead and moldy cells.
23133
23134 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
23135 ffmpeg-utils manual,ffmpeg-utils}.
23136 @end table
23137
23138 @subsection Examples
23139
23140 @itemize
23141 @item
23142 Read a grid from @file{pattern}, and center it on a grid of size
23143 300x300 pixels:
23144 @example
23145 life=f=pattern:s=300x300
23146 @end example
23147
23148 @item
23149 Generate a random grid of size 200x200, with a fill ratio of 2/3:
23150 @example
23151 life=ratio=2/3:s=200x200
23152 @end example
23153
23154 @item
23155 Specify a custom rule for evolving a randomly generated grid:
23156 @example
23157 life=rule=S14/B34
23158 @end example
23159
23160 @item
23161 Full example with slow death effect (mold) using @command{ffplay}:
23162 @example
23163 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
23164 @end example
23165 @end itemize
23166
23167 @anchor{allrgb}
23168 @anchor{allyuv}
23169 @anchor{color}
23170 @anchor{haldclutsrc}
23171 @anchor{nullsrc}
23172 @anchor{pal75bars}
23173 @anchor{pal100bars}
23174 @anchor{rgbtestsrc}
23175 @anchor{smptebars}
23176 @anchor{smptehdbars}
23177 @anchor{testsrc}
23178 @anchor{testsrc2}
23179 @anchor{yuvtestsrc}
23180 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
23181
23182 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
23183
23184 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
23185
23186 The @code{color} source provides an uniformly colored input.
23187
23188 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
23189 @ref{haldclut} filter.
23190
23191 The @code{nullsrc} source returns unprocessed video frames. It is
23192 mainly useful to be employed in analysis / debugging tools, or as the
23193 source for filters which ignore the input data.
23194
23195 The @code{pal75bars} source generates a color bars pattern, based on
23196 EBU PAL recommendations with 75% color levels.
23197
23198 The @code{pal100bars} source generates a color bars pattern, based on
23199 EBU PAL recommendations with 100% color levels.
23200
23201 The @code{rgbtestsrc} source generates an RGB test pattern useful for
23202 detecting RGB vs BGR issues. You should see a red, green and blue
23203 stripe from top to bottom.
23204
23205 The @code{smptebars} source generates a color bars pattern, based on
23206 the SMPTE Engineering Guideline EG 1-1990.
23207
23208 The @code{smptehdbars} source generates a color bars pattern, based on
23209 the SMPTE RP 219-2002.
23210
23211 The @code{testsrc} source generates a test video pattern, showing a
23212 color pattern, a scrolling gradient and a timestamp. This is mainly
23213 intended for testing purposes.
23214
23215 The @code{testsrc2} source is similar to testsrc, but supports more
23216 pixel formats instead of just @code{rgb24}. This allows using it as an
23217 input for other tests without requiring a format conversion.
23218
23219 The @code{yuvtestsrc} source generates an YUV test pattern. You should
23220 see a y, cb and cr stripe from top to bottom.
23221
23222 The sources accept the following parameters:
23223
23224 @table @option
23225
23226 @item level
23227 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
23228 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
23229 pixels to be used as identity matrix for 3D lookup tables. Each component is
23230 coded on a @code{1/(N*N)} scale.
23231
23232 @item color, c
23233 Specify the color of the source, only available in the @code{color}
23234 source. For the syntax of this option, check the
23235 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
23236
23237 @item size, s
23238 Specify the size of the sourced video. For the syntax of this option, check the
23239 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23240 The default value is @code{320x240}.
23241
23242 This option is not available with the @code{allrgb}, @code{allyuv}, and
23243 @code{haldclutsrc} filters.
23244
23245 @item rate, r
23246 Specify the frame rate of the sourced video, as the number of frames
23247 generated per second. It has to be a string in the format
23248 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23249 number or a valid video frame rate abbreviation. The default value is
23250 "25".
23251
23252 @item duration, d
23253 Set the duration of the sourced video. See
23254 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23255 for the accepted syntax.
23256
23257 If not specified, or the expressed duration is negative, the video is
23258 supposed to be generated forever.
23259
23260 Since the frame rate is used as time base, all frames including the last one
23261 will have their full duration. If the specified duration is not a multiple
23262 of the frame duration, it will be rounded up.
23263
23264 @item sar
23265 Set the sample aspect ratio of the sourced video.
23266
23267 @item alpha
23268 Specify the alpha (opacity) of the background, only available in the
23269 @code{testsrc2} source. The value must be between 0 (fully transparent) and
23270 255 (fully opaque, the default).
23271
23272 @item decimals, n
23273 Set the number of decimals to show in the timestamp, only available in the
23274 @code{testsrc} source.
23275
23276 The displayed timestamp value will correspond to the original
23277 timestamp value multiplied by the power of 10 of the specified
23278 value. Default value is 0.
23279 @end table
23280
23281 @subsection Examples
23282
23283 @itemize
23284 @item
23285 Generate a video with a duration of 5.3 seconds, with size
23286 176x144 and a frame rate of 10 frames per second:
23287 @example
23288 testsrc=duration=5.3:size=qcif:rate=10
23289 @end example
23290
23291 @item
23292 The following graph description will generate a red source
23293 with an opacity of 0.2, with size "qcif" and a frame rate of 10
23294 frames per second:
23295 @example
23296 color=c=red@@0.2:s=qcif:r=10
23297 @end example
23298
23299 @item
23300 If the input content is to be ignored, @code{nullsrc} can be used. The
23301 following command generates noise in the luminance plane by employing
23302 the @code{geq} filter:
23303 @example
23304 nullsrc=s=256x256, geq=random(1)*255:128:128
23305 @end example
23306 @end itemize
23307
23308 @subsection Commands
23309
23310 The @code{color} source supports the following commands:
23311
23312 @table @option
23313 @item c, color
23314 Set the color of the created image. Accepts the same syntax of the
23315 corresponding @option{color} option.
23316 @end table
23317
23318 @section openclsrc
23319
23320 Generate video using an OpenCL program.
23321
23322 @table @option
23323
23324 @item source
23325 OpenCL program source file.
23326
23327 @item kernel
23328 Kernel name in program.
23329
23330 @item size, s
23331 Size of frames to generate.  This must be set.
23332
23333 @item format
23334 Pixel format to use for the generated frames.  This must be set.
23335
23336 @item rate, r
23337 Number of frames generated every second.  Default value is '25'.
23338
23339 @end table
23340
23341 For details of how the program loading works, see the @ref{program_opencl}
23342 filter.
23343
23344 Example programs:
23345
23346 @itemize
23347 @item
23348 Generate a colour ramp by setting pixel values from the position of the pixel
23349 in the output image.  (Note that this will work with all pixel formats, but
23350 the generated output will not be the same.)
23351 @verbatim
23352 __kernel void ramp(__write_only image2d_t dst,
23353                    unsigned int index)
23354 {
23355     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23356
23357     float4 val;
23358     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
23359
23360     write_imagef(dst, loc, val);
23361 }
23362 @end verbatim
23363
23364 @item
23365 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
23366 @verbatim
23367 __kernel void sierpinski_carpet(__write_only image2d_t dst,
23368                                 unsigned int index)
23369 {
23370     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23371
23372     float4 value = 0.0f;
23373     int x = loc.x + index;
23374     int y = loc.y + index;
23375     while (x > 0 || y > 0) {
23376         if (x % 3 == 1 && y % 3 == 1) {
23377             value = 1.0f;
23378             break;
23379         }
23380         x /= 3;
23381         y /= 3;
23382     }
23383
23384     write_imagef(dst, loc, value);
23385 }
23386 @end verbatim
23387
23388 @end itemize
23389
23390 @section sierpinski
23391
23392 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
23393
23394 This source accepts the following options:
23395
23396 @table @option
23397 @item size, s
23398 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23399 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23400
23401 @item rate, r
23402 Set frame rate, expressed as number of frames per second. Default
23403 value is "25".
23404
23405 @item seed
23406 Set seed which is used for random panning.
23407
23408 @item jump
23409 Set max jump for single pan destination. Allowed range is from 1 to 10000.
23410
23411 @item type
23412 Set fractal type, can be default @code{carpet} or @code{triangle}.
23413 @end table
23414
23415 @c man end VIDEO SOURCES
23416
23417 @chapter Video Sinks
23418 @c man begin VIDEO SINKS
23419
23420 Below is a description of the currently available video sinks.
23421
23422 @section buffersink
23423
23424 Buffer video frames, and make them available to the end of the filter
23425 graph.
23426
23427 This sink is mainly intended for programmatic use, in particular
23428 through the interface defined in @file{libavfilter/buffersink.h}
23429 or the options system.
23430
23431 It accepts a pointer to an AVBufferSinkContext structure, which
23432 defines the incoming buffers' formats, to be passed as the opaque
23433 parameter to @code{avfilter_init_filter} for initialization.
23434
23435 @section nullsink
23436
23437 Null video sink: do absolutely nothing with the input video. It is
23438 mainly useful as a template and for use in analysis / debugging
23439 tools.
23440
23441 @c man end VIDEO SINKS
23442
23443 @chapter Multimedia Filters
23444 @c man begin MULTIMEDIA FILTERS
23445
23446 Below is a description of the currently available multimedia filters.
23447
23448 @section abitscope
23449
23450 Convert input audio to a video output, displaying the audio bit scope.
23451
23452 The filter accepts the following options:
23453
23454 @table @option
23455 @item rate, r
23456 Set frame rate, expressed as number of frames per second. Default
23457 value is "25".
23458
23459 @item size, s
23460 Specify the video size for the output. For the syntax of this option, check the
23461 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23462 Default value is @code{1024x256}.
23463
23464 @item colors
23465 Specify list of colors separated by space or by '|' which will be used to
23466 draw channels. Unrecognized or missing colors will be replaced
23467 by white color.
23468 @end table
23469
23470 @section adrawgraph
23471 Draw a graph using input audio metadata.
23472
23473 See @ref{drawgraph}
23474
23475 @section agraphmonitor
23476
23477 See @ref{graphmonitor}.
23478
23479 @section ahistogram
23480
23481 Convert input audio to a video output, displaying the volume histogram.
23482
23483 The filter accepts the following options:
23484
23485 @table @option
23486 @item dmode
23487 Specify how histogram is calculated.
23488
23489 It accepts the following values:
23490 @table @samp
23491 @item single
23492 Use single histogram for all channels.
23493 @item separate
23494 Use separate histogram for each channel.
23495 @end table
23496 Default is @code{single}.
23497
23498 @item rate, r
23499 Set frame rate, expressed as number of frames per second. Default
23500 value is "25".
23501
23502 @item size, s
23503 Specify the video size for the output. For the syntax of this option, check the
23504 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23505 Default value is @code{hd720}.
23506
23507 @item scale
23508 Set display scale.
23509
23510 It accepts the following values:
23511 @table @samp
23512 @item log
23513 logarithmic
23514 @item sqrt
23515 square root
23516 @item cbrt
23517 cubic root
23518 @item lin
23519 linear
23520 @item rlog
23521 reverse logarithmic
23522 @end table
23523 Default is @code{log}.
23524
23525 @item ascale
23526 Set amplitude scale.
23527
23528 It accepts the following values:
23529 @table @samp
23530 @item log
23531 logarithmic
23532 @item lin
23533 linear
23534 @end table
23535 Default is @code{log}.
23536
23537 @item acount
23538 Set how much frames to accumulate in histogram.
23539 Default is 1. Setting this to -1 accumulates all frames.
23540
23541 @item rheight
23542 Set histogram ratio of window height.
23543
23544 @item slide
23545 Set sonogram sliding.
23546
23547 It accepts the following values:
23548 @table @samp
23549 @item replace
23550 replace old rows with new ones.
23551 @item scroll
23552 scroll from top to bottom.
23553 @end table
23554 Default is @code{replace}.
23555 @end table
23556
23557 @section aphasemeter
23558
23559 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
23560 representing mean phase of current audio frame. A video output can also be produced and is
23561 enabled by default. The audio is passed through as first output.
23562
23563 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
23564 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
23565 and @code{1} means channels are in phase.
23566
23567 The filter accepts the following options, all related to its video output:
23568
23569 @table @option
23570 @item rate, r
23571 Set the output frame rate. Default value is @code{25}.
23572
23573 @item size, s
23574 Set the video size for the output. For the syntax of this option, check the
23575 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23576 Default value is @code{800x400}.
23577
23578 @item rc
23579 @item gc
23580 @item bc
23581 Specify the red, green, blue contrast. Default values are @code{2},
23582 @code{7} and @code{1}.
23583 Allowed range is @code{[0, 255]}.
23584
23585 @item mpc
23586 Set color which will be used for drawing median phase. If color is
23587 @code{none} which is default, no median phase value will be drawn.
23588
23589 @item video
23590 Enable video output. Default is enabled.
23591 @end table
23592
23593 @subsection phasing detection
23594
23595 The filter also detects out of phase and mono sequences in stereo streams.
23596 It logs the sequence start, end and duration when it lasts longer or as long as the minimum set.
23597
23598 The filter accepts the following options for this detection:
23599
23600 @table @option
23601 @item phasing
23602 Enable mono and out of phase detection. Default is disabled.
23603
23604 @item tolerance, t
23605 Set phase tolerance for mono detection, in amplitude ratio. Default is @code{0}.
23606 Allowed range is @code{[0, 1]}.
23607
23608 @item angle, a
23609 Set angle threshold for out of phase detection, in degree. Default is @code{170}.
23610 Allowed range is @code{[90, 180]}.
23611
23612 @item duration, d
23613 Set mono or out of phase duration until notification, expressed in seconds. Default is @code{2}.
23614 @end table
23615
23616 @subsection Examples
23617
23618 @itemize
23619 @item
23620 Complete example with @command{ffmpeg} to detect 1 second of mono with 0.001 phase tolerance:
23621 @example
23622 ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
23623 @end example
23624 @end itemize
23625
23626 @section avectorscope
23627
23628 Convert input audio to a video output, representing the audio vector
23629 scope.
23630
23631 The filter is used to measure the difference between channels of stereo
23632 audio stream. A monaural signal, consisting of identical left and right
23633 signal, results in straight vertical line. Any stereo separation is visible
23634 as a deviation from this line, creating a Lissajous figure.
23635 If the straight (or deviation from it) but horizontal line appears this
23636 indicates that the left and right channels are out of phase.
23637
23638 The filter accepts the following options:
23639
23640 @table @option
23641 @item mode, m
23642 Set the vectorscope mode.
23643
23644 Available values are:
23645 @table @samp
23646 @item lissajous
23647 Lissajous rotated by 45 degrees.
23648
23649 @item lissajous_xy
23650 Same as above but not rotated.
23651
23652 @item polar
23653 Shape resembling half of circle.
23654 @end table
23655
23656 Default value is @samp{lissajous}.
23657
23658 @item size, s
23659 Set the video size for the output. For the syntax of this option, check the
23660 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23661 Default value is @code{400x400}.
23662
23663 @item rate, r
23664 Set the output frame rate. Default value is @code{25}.
23665
23666 @item rc
23667 @item gc
23668 @item bc
23669 @item ac
23670 Specify the red, green, blue and alpha contrast. Default values are @code{40},
23671 @code{160}, @code{80} and @code{255}.
23672 Allowed range is @code{[0, 255]}.
23673
23674 @item rf
23675 @item gf
23676 @item bf
23677 @item af
23678 Specify the red, green, blue and alpha fade. Default values are @code{15},
23679 @code{10}, @code{5} and @code{5}.
23680 Allowed range is @code{[0, 255]}.
23681
23682 @item zoom
23683 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
23684 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
23685
23686 @item draw
23687 Set the vectorscope drawing mode.
23688
23689 Available values are:
23690 @table @samp
23691 @item dot
23692 Draw dot for each sample.
23693
23694 @item line
23695 Draw line between previous and current sample.
23696 @end table
23697
23698 Default value is @samp{dot}.
23699
23700 @item scale
23701 Specify amplitude scale of audio samples.
23702
23703 Available values are:
23704 @table @samp
23705 @item lin
23706 Linear.
23707
23708 @item sqrt
23709 Square root.
23710
23711 @item cbrt
23712 Cubic root.
23713
23714 @item log
23715 Logarithmic.
23716 @end table
23717
23718 @item swap
23719 Swap left channel axis with right channel axis.
23720
23721 @item mirror
23722 Mirror axis.
23723
23724 @table @samp
23725 @item none
23726 No mirror.
23727
23728 @item x
23729 Mirror only x axis.
23730
23731 @item y
23732 Mirror only y axis.
23733
23734 @item xy
23735 Mirror both axis.
23736 @end table
23737
23738 @end table
23739
23740 @subsection Examples
23741
23742 @itemize
23743 @item
23744 Complete example using @command{ffplay}:
23745 @example
23746 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
23747              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
23748 @end example
23749 @end itemize
23750
23751 @section bench, abench
23752
23753 Benchmark part of a filtergraph.
23754
23755 The filter accepts the following options:
23756
23757 @table @option
23758 @item action
23759 Start or stop a timer.
23760
23761 Available values are:
23762 @table @samp
23763 @item start
23764 Get the current time, set it as frame metadata (using the key
23765 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
23766
23767 @item stop
23768 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
23769 the input frame metadata to get the time difference. Time difference, average,
23770 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
23771 @code{min}) are then printed. The timestamps are expressed in seconds.
23772 @end table
23773 @end table
23774
23775 @subsection Examples
23776
23777 @itemize
23778 @item
23779 Benchmark @ref{selectivecolor} filter:
23780 @example
23781 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
23782 @end example
23783 @end itemize
23784
23785 @section concat
23786
23787 Concatenate audio and video streams, joining them together one after the
23788 other.
23789
23790 The filter works on segments of synchronized video and audio streams. All
23791 segments must have the same number of streams of each type, and that will
23792 also be the number of streams at output.
23793
23794 The filter accepts the following options:
23795
23796 @table @option
23797
23798 @item n
23799 Set the number of segments. Default is 2.
23800
23801 @item v
23802 Set the number of output video streams, that is also the number of video
23803 streams in each segment. Default is 1.
23804
23805 @item a
23806 Set the number of output audio streams, that is also the number of audio
23807 streams in each segment. Default is 0.
23808
23809 @item unsafe
23810 Activate unsafe mode: do not fail if segments have a different format.
23811
23812 @end table
23813
23814 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
23815 @var{a} audio outputs.
23816
23817 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
23818 segment, in the same order as the outputs, then the inputs for the second
23819 segment, etc.
23820
23821 Related streams do not always have exactly the same duration, for various
23822 reasons including codec frame size or sloppy authoring. For that reason,
23823 related synchronized streams (e.g. a video and its audio track) should be
23824 concatenated at once. The concat filter will use the duration of the longest
23825 stream in each segment (except the last one), and if necessary pad shorter
23826 audio streams with silence.
23827
23828 For this filter to work correctly, all segments must start at timestamp 0.
23829
23830 All corresponding streams must have the same parameters in all segments; the
23831 filtering system will automatically select a common pixel format for video
23832 streams, and a common sample format, sample rate and channel layout for
23833 audio streams, but other settings, such as resolution, must be converted
23834 explicitly by the user.
23835
23836 Different frame rates are acceptable but will result in variable frame rate
23837 at output; be sure to configure the output file to handle it.
23838
23839 @subsection Examples
23840
23841 @itemize
23842 @item
23843 Concatenate an opening, an episode and an ending, all in bilingual version
23844 (video in stream 0, audio in streams 1 and 2):
23845 @example
23846 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
23847   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
23848    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
23849   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
23850 @end example
23851
23852 @item
23853 Concatenate two parts, handling audio and video separately, using the
23854 (a)movie sources, and adjusting the resolution:
23855 @example
23856 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
23857 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
23858 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
23859 @end example
23860 Note that a desync will happen at the stitch if the audio and video streams
23861 do not have exactly the same duration in the first file.
23862
23863 @end itemize
23864
23865 @subsection Commands
23866
23867 This filter supports the following commands:
23868 @table @option
23869 @item next
23870 Close the current segment and step to the next one
23871 @end table
23872
23873 @anchor{ebur128}
23874 @section ebur128
23875
23876 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
23877 level. By default, it logs a message at a frequency of 10Hz with the
23878 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
23879 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
23880
23881 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
23882 sample format is double-precision floating point. The input stream will be converted to
23883 this specification, if needed. Users may need to insert aformat and/or aresample filters
23884 after this filter to obtain the original parameters.
23885
23886 The filter also has a video output (see the @var{video} option) with a real
23887 time graph to observe the loudness evolution. The graphic contains the logged
23888 message mentioned above, so it is not printed anymore when this option is set,
23889 unless the verbose logging is set. The main graphing area contains the
23890 short-term loudness (3 seconds of analysis), and the gauge on the right is for
23891 the momentary loudness (400 milliseconds), but can optionally be configured
23892 to instead display short-term loudness (see @var{gauge}).
23893
23894 The green area marks a  +/- 1LU target range around the target loudness
23895 (-23LUFS by default, unless modified through @var{target}).
23896
23897 More information about the Loudness Recommendation EBU R128 on
23898 @url{http://tech.ebu.ch/loudness}.
23899
23900 The filter accepts the following options:
23901
23902 @table @option
23903
23904 @item video
23905 Activate the video output. The audio stream is passed unchanged whether this
23906 option is set or no. The video stream will be the first output stream if
23907 activated. Default is @code{0}.
23908
23909 @item size
23910 Set the video size. This option is for video only. For the syntax of this
23911 option, check the
23912 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23913 Default and minimum resolution is @code{640x480}.
23914
23915 @item meter
23916 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
23917 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
23918 other integer value between this range is allowed.
23919
23920 @item metadata
23921 Set metadata injection. If set to @code{1}, the audio input will be segmented
23922 into 100ms output frames, each of them containing various loudness information
23923 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
23924
23925 Default is @code{0}.
23926
23927 @item framelog
23928 Force the frame logging level.
23929
23930 Available values are:
23931 @table @samp
23932 @item info
23933 information logging level
23934 @item verbose
23935 verbose logging level
23936 @end table
23937
23938 By default, the logging level is set to @var{info}. If the @option{video} or
23939 the @option{metadata} options are set, it switches to @var{verbose}.
23940
23941 @item peak
23942 Set peak mode(s).
23943
23944 Available modes can be cumulated (the option is a @code{flag} type). Possible
23945 values are:
23946 @table @samp
23947 @item none
23948 Disable any peak mode (default).
23949 @item sample
23950 Enable sample-peak mode.
23951
23952 Simple peak mode looking for the higher sample value. It logs a message
23953 for sample-peak (identified by @code{SPK}).
23954 @item true
23955 Enable true-peak mode.
23956
23957 If enabled, the peak lookup is done on an over-sampled version of the input
23958 stream for better peak accuracy. It logs a message for true-peak.
23959 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
23960 This mode requires a build with @code{libswresample}.
23961 @end table
23962
23963 @item dualmono
23964 Treat mono input files as "dual mono". If a mono file is intended for playback
23965 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
23966 If set to @code{true}, this option will compensate for this effect.
23967 Multi-channel input files are not affected by this option.
23968
23969 @item panlaw
23970 Set a specific pan law to be used for the measurement of dual mono files.
23971 This parameter is optional, and has a default value of -3.01dB.
23972
23973 @item target
23974 Set a specific target level (in LUFS) used as relative zero in the visualization.
23975 This parameter is optional and has a default value of -23LUFS as specified
23976 by EBU R128. However, material published online may prefer a level of -16LUFS
23977 (e.g. for use with podcasts or video platforms).
23978
23979 @item gauge
23980 Set the value displayed by the gauge. Valid values are @code{momentary} and s
23981 @code{shortterm}. By default the momentary value will be used, but in certain
23982 scenarios it may be more useful to observe the short term value instead (e.g.
23983 live mixing).
23984
23985 @item scale
23986 Sets the display scale for the loudness. Valid parameters are @code{absolute}
23987 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
23988 video output, not the summary or continuous log output.
23989 @end table
23990
23991 @subsection Examples
23992
23993 @itemize
23994 @item
23995 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
23996 @example
23997 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
23998 @end example
23999
24000 @item
24001 Run an analysis with @command{ffmpeg}:
24002 @example
24003 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
24004 @end example
24005 @end itemize
24006
24007 @section interleave, ainterleave
24008
24009 Temporally interleave frames from several inputs.
24010
24011 @code{interleave} works with video inputs, @code{ainterleave} with audio.
24012
24013 These filters read frames from several inputs and send the oldest
24014 queued frame to the output.
24015
24016 Input streams must have well defined, monotonically increasing frame
24017 timestamp values.
24018
24019 In order to submit one frame to output, these filters need to enqueue
24020 at least one frame for each input, so they cannot work in case one
24021 input is not yet terminated and will not receive incoming frames.
24022
24023 For example consider the case when one input is a @code{select} filter
24024 which always drops input frames. The @code{interleave} filter will keep
24025 reading from that input, but it will never be able to send new frames
24026 to output until the input sends an end-of-stream signal.
24027
24028 Also, depending on inputs synchronization, the filters will drop
24029 frames in case one input receives more frames than the other ones, and
24030 the queue is already filled.
24031
24032 These filters accept the following options:
24033
24034 @table @option
24035 @item nb_inputs, n
24036 Set the number of different inputs, it is 2 by default.
24037
24038 @item duration
24039 How to determine the end-of-stream.
24040
24041 @table @option
24042 @item longest
24043 The duration of the longest input. (default)
24044
24045 @item shortest
24046 The duration of the shortest input.
24047
24048 @item first
24049 The duration of the first input.
24050 @end table
24051
24052 @end table
24053
24054 @subsection Examples
24055
24056 @itemize
24057 @item
24058 Interleave frames belonging to different streams using @command{ffmpeg}:
24059 @example
24060 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
24061 @end example
24062
24063 @item
24064 Add flickering blur effect:
24065 @example
24066 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
24067 @end example
24068 @end itemize
24069
24070 @section metadata, ametadata
24071
24072 Manipulate frame metadata.
24073
24074 This filter accepts the following options:
24075
24076 @table @option
24077 @item mode
24078 Set mode of operation of the filter.
24079
24080 Can be one of the following:
24081
24082 @table @samp
24083 @item select
24084 If both @code{value} and @code{key} is set, select frames
24085 which have such metadata. If only @code{key} is set, select
24086 every frame that has such key in metadata.
24087
24088 @item add
24089 Add new metadata @code{key} and @code{value}. If key is already available
24090 do nothing.
24091
24092 @item modify
24093 Modify value of already present key.
24094
24095 @item delete
24096 If @code{value} is set, delete only keys that have such value.
24097 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
24098 the frame.
24099
24100 @item print
24101 Print key and its value if metadata was found. If @code{key} is not set print all
24102 metadata values available in frame.
24103 @end table
24104
24105 @item key
24106 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
24107
24108 @item value
24109 Set metadata value which will be used. This option is mandatory for
24110 @code{modify} and @code{add} mode.
24111
24112 @item function
24113 Which function to use when comparing metadata value and @code{value}.
24114
24115 Can be one of following:
24116
24117 @table @samp
24118 @item same_str
24119 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
24120
24121 @item starts_with
24122 Values are interpreted as strings, returns true if metadata value starts with
24123 the @code{value} option string.
24124
24125 @item less
24126 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
24127
24128 @item equal
24129 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
24130
24131 @item greater
24132 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
24133
24134 @item expr
24135 Values are interpreted as floats, returns true if expression from option @code{expr}
24136 evaluates to true.
24137
24138 @item ends_with
24139 Values are interpreted as strings, returns true if metadata value ends with
24140 the @code{value} option string.
24141 @end table
24142
24143 @item expr
24144 Set expression which is used when @code{function} is set to @code{expr}.
24145 The expression is evaluated through the eval API and can contain the following
24146 constants:
24147
24148 @table @option
24149 @item VALUE1
24150 Float representation of @code{value} from metadata key.
24151
24152 @item VALUE2
24153 Float representation of @code{value} as supplied by user in @code{value} option.
24154 @end table
24155
24156 @item file
24157 If specified in @code{print} mode, output is written to the named file. Instead of
24158 plain filename any writable url can be specified. Filename ``-'' is a shorthand
24159 for standard output. If @code{file} option is not set, output is written to the log
24160 with AV_LOG_INFO loglevel.
24161
24162 @item direct
24163 Reduces buffering in print mode when output is written to a URL set using @var{file}.
24164
24165 @end table
24166
24167 @subsection Examples
24168
24169 @itemize
24170 @item
24171 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
24172 between 0 and 1.
24173 @example
24174 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
24175 @end example
24176 @item
24177 Print silencedetect output to file @file{metadata.txt}.
24178 @example
24179 silencedetect,ametadata=mode=print:file=metadata.txt
24180 @end example
24181 @item
24182 Direct all metadata to a pipe with file descriptor 4.
24183 @example
24184 metadata=mode=print:file='pipe\:4'
24185 @end example
24186 @end itemize
24187
24188 @section perms, aperms
24189
24190 Set read/write permissions for the output frames.
24191
24192 These filters are mainly aimed at developers to test direct path in the
24193 following filter in the filtergraph.
24194
24195 The filters accept the following options:
24196
24197 @table @option
24198 @item mode
24199 Select the permissions mode.
24200
24201 It accepts the following values:
24202 @table @samp
24203 @item none
24204 Do nothing. This is the default.
24205 @item ro
24206 Set all the output frames read-only.
24207 @item rw
24208 Set all the output frames directly writable.
24209 @item toggle
24210 Make the frame read-only if writable, and writable if read-only.
24211 @item random
24212 Set each output frame read-only or writable randomly.
24213 @end table
24214
24215 @item seed
24216 Set the seed for the @var{random} mode, must be an integer included between
24217 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
24218 @code{-1}, the filter will try to use a good random seed on a best effort
24219 basis.
24220 @end table
24221
24222 Note: in case of auto-inserted filter between the permission filter and the
24223 following one, the permission might not be received as expected in that
24224 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
24225 perms/aperms filter can avoid this problem.
24226
24227 @section realtime, arealtime
24228
24229 Slow down filtering to match real time approximately.
24230
24231 These filters will pause the filtering for a variable amount of time to
24232 match the output rate with the input timestamps.
24233 They are similar to the @option{re} option to @code{ffmpeg}.
24234
24235 They accept the following options:
24236
24237 @table @option
24238 @item limit
24239 Time limit for the pauses. Any pause longer than that will be considered
24240 a timestamp discontinuity and reset the timer. Default is 2 seconds.
24241 @item speed
24242 Speed factor for processing. The value must be a float larger than zero.
24243 Values larger than 1.0 will result in faster than realtime processing,
24244 smaller will slow processing down. The @var{limit} is automatically adapted
24245 accordingly. Default is 1.0.
24246
24247 A processing speed faster than what is possible without these filters cannot
24248 be achieved.
24249 @end table
24250
24251 @anchor{select}
24252 @section select, aselect
24253
24254 Select frames to pass in output.
24255
24256 This filter accepts the following options:
24257
24258 @table @option
24259
24260 @item expr, e
24261 Set expression, which is evaluated for each input frame.
24262
24263 If the expression is evaluated to zero, the frame is discarded.
24264
24265 If the evaluation result is negative or NaN, the frame is sent to the
24266 first output; otherwise it is sent to the output with index
24267 @code{ceil(val)-1}, assuming that the input index starts from 0.
24268
24269 For example a value of @code{1.2} corresponds to the output with index
24270 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
24271
24272 @item outputs, n
24273 Set the number of outputs. The output to which to send the selected
24274 frame is based on the result of the evaluation. Default value is 1.
24275 @end table
24276
24277 The expression can contain the following constants:
24278
24279 @table @option
24280 @item n
24281 The (sequential) number of the filtered frame, starting from 0.
24282
24283 @item selected_n
24284 The (sequential) number of the selected frame, starting from 0.
24285
24286 @item prev_selected_n
24287 The sequential number of the last selected frame. It's NAN if undefined.
24288
24289 @item TB
24290 The timebase of the input timestamps.
24291
24292 @item pts
24293 The PTS (Presentation TimeStamp) of the filtered video frame,
24294 expressed in @var{TB} units. It's NAN if undefined.
24295
24296 @item t
24297 The PTS of the filtered video frame,
24298 expressed in seconds. It's NAN if undefined.
24299
24300 @item prev_pts
24301 The PTS of the previously filtered video frame. It's NAN if undefined.
24302
24303 @item prev_selected_pts
24304 The PTS of the last previously filtered video frame. It's NAN if undefined.
24305
24306 @item prev_selected_t
24307 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
24308
24309 @item start_pts
24310 The PTS of the first video frame in the video. It's NAN if undefined.
24311
24312 @item start_t
24313 The time of the first video frame in the video. It's NAN if undefined.
24314
24315 @item pict_type @emph{(video only)}
24316 The type of the filtered frame. It can assume one of the following
24317 values:
24318 @table @option
24319 @item I
24320 @item P
24321 @item B
24322 @item S
24323 @item SI
24324 @item SP
24325 @item BI
24326 @end table
24327
24328 @item interlace_type @emph{(video only)}
24329 The frame interlace type. It can assume one of the following values:
24330 @table @option
24331 @item PROGRESSIVE
24332 The frame is progressive (not interlaced).
24333 @item TOPFIRST
24334 The frame is top-field-first.
24335 @item BOTTOMFIRST
24336 The frame is bottom-field-first.
24337 @end table
24338
24339 @item consumed_sample_n @emph{(audio only)}
24340 the number of selected samples before the current frame
24341
24342 @item samples_n @emph{(audio only)}
24343 the number of samples in the current frame
24344
24345 @item sample_rate @emph{(audio only)}
24346 the input sample rate
24347
24348 @item key
24349 This is 1 if the filtered frame is a key-frame, 0 otherwise.
24350
24351 @item pos
24352 the position in the file of the filtered frame, -1 if the information
24353 is not available (e.g. for synthetic video)
24354
24355 @item scene @emph{(video only)}
24356 value between 0 and 1 to indicate a new scene; a low value reflects a low
24357 probability for the current frame to introduce a new scene, while a higher
24358 value means the current frame is more likely to be one (see the example below)
24359
24360 @item concatdec_select
24361 The concat demuxer can select only part of a concat input file by setting an
24362 inpoint and an outpoint, but the output packets may not be entirely contained
24363 in the selected interval. By using this variable, it is possible to skip frames
24364 generated by the concat demuxer which are not exactly contained in the selected
24365 interval.
24366
24367 This works by comparing the frame pts against the @var{lavf.concat.start_time}
24368 and the @var{lavf.concat.duration} packet metadata values which are also
24369 present in the decoded frames.
24370
24371 The @var{concatdec_select} variable is -1 if the frame pts is at least
24372 start_time and either the duration metadata is missing or the frame pts is less
24373 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
24374 missing.
24375
24376 That basically means that an input frame is selected if its pts is within the
24377 interval set by the concat demuxer.
24378
24379 @end table
24380
24381 The default value of the select expression is "1".
24382
24383 @subsection Examples
24384
24385 @itemize
24386 @item
24387 Select all frames in input:
24388 @example
24389 select
24390 @end example
24391
24392 The example above is the same as:
24393 @example
24394 select=1
24395 @end example
24396
24397 @item
24398 Skip all frames:
24399 @example
24400 select=0
24401 @end example
24402
24403 @item
24404 Select only I-frames:
24405 @example
24406 select='eq(pict_type\,I)'
24407 @end example
24408
24409 @item
24410 Select one frame every 100:
24411 @example
24412 select='not(mod(n\,100))'
24413 @end example
24414
24415 @item
24416 Select only frames contained in the 10-20 time interval:
24417 @example
24418 select=between(t\,10\,20)
24419 @end example
24420
24421 @item
24422 Select only I-frames contained in the 10-20 time interval:
24423 @example
24424 select=between(t\,10\,20)*eq(pict_type\,I)
24425 @end example
24426
24427 @item
24428 Select frames with a minimum distance of 10 seconds:
24429 @example
24430 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
24431 @end example
24432
24433 @item
24434 Use aselect to select only audio frames with samples number > 100:
24435 @example
24436 aselect='gt(samples_n\,100)'
24437 @end example
24438
24439 @item
24440 Create a mosaic of the first scenes:
24441 @example
24442 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
24443 @end example
24444
24445 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
24446 choice.
24447
24448 @item
24449 Send even and odd frames to separate outputs, and compose them:
24450 @example
24451 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
24452 @end example
24453
24454 @item
24455 Select useful frames from an ffconcat file which is using inpoints and
24456 outpoints but where the source files are not intra frame only.
24457 @example
24458 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
24459 @end example
24460 @end itemize
24461
24462 @section sendcmd, asendcmd
24463
24464 Send commands to filters in the filtergraph.
24465
24466 These filters read commands to be sent to other filters in the
24467 filtergraph.
24468
24469 @code{sendcmd} must be inserted between two video filters,
24470 @code{asendcmd} must be inserted between two audio filters, but apart
24471 from that they act the same way.
24472
24473 The specification of commands can be provided in the filter arguments
24474 with the @var{commands} option, or in a file specified by the
24475 @var{filename} option.
24476
24477 These filters accept the following options:
24478 @table @option
24479 @item commands, c
24480 Set the commands to be read and sent to the other filters.
24481 @item filename, f
24482 Set the filename of the commands to be read and sent to the other
24483 filters.
24484 @end table
24485
24486 @subsection Commands syntax
24487
24488 A commands description consists of a sequence of interval
24489 specifications, comprising a list of commands to be executed when a
24490 particular event related to that interval occurs. The occurring event
24491 is typically the current frame time entering or leaving a given time
24492 interval.
24493
24494 An interval is specified by the following syntax:
24495 @example
24496 @var{START}[-@var{END}] @var{COMMANDS};
24497 @end example
24498
24499 The time interval is specified by the @var{START} and @var{END} times.
24500 @var{END} is optional and defaults to the maximum time.
24501
24502 The current frame time is considered within the specified interval if
24503 it is included in the interval [@var{START}, @var{END}), that is when
24504 the time is greater or equal to @var{START} and is lesser than
24505 @var{END}.
24506
24507 @var{COMMANDS} consists of a sequence of one or more command
24508 specifications, separated by ",", relating to that interval.  The
24509 syntax of a command specification is given by:
24510 @example
24511 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
24512 @end example
24513
24514 @var{FLAGS} is optional and specifies the type of events relating to
24515 the time interval which enable sending the specified command, and must
24516 be a non-null sequence of identifier flags separated by "+" or "|" and
24517 enclosed between "[" and "]".
24518
24519 The following flags are recognized:
24520 @table @option
24521 @item enter
24522 The command is sent when the current frame timestamp enters the
24523 specified interval. In other words, the command is sent when the
24524 previous frame timestamp was not in the given interval, and the
24525 current is.
24526
24527 @item leave
24528 The command is sent when the current frame timestamp leaves the
24529 specified interval. In other words, the command is sent when the
24530 previous frame timestamp was in the given interval, and the
24531 current is not.
24532
24533 @item expr
24534 The command @var{ARG} is interpreted as expression and result of
24535 expression is passed as @var{ARG}.
24536
24537 The expression is evaluated through the eval API and can contain the following
24538 constants:
24539
24540 @table @option
24541 @item POS
24542 Original position in the file of the frame, or undefined if undefined
24543 for the current frame.
24544
24545 @item PTS
24546 The presentation timestamp in input.
24547
24548 @item N
24549 The count of the input frame for video or audio, starting from 0.
24550
24551 @item T
24552 The time in seconds of the current frame.
24553
24554 @item TS
24555 The start time in seconds of the current command interval.
24556
24557 @item TE
24558 The end time in seconds of the current command interval.
24559
24560 @item TI
24561 The interpolated time of the current command interval, TI = (T - TS) / (TE - TS).
24562 @end table
24563
24564 @end table
24565
24566 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
24567 assumed.
24568
24569 @var{TARGET} specifies the target of the command, usually the name of
24570 the filter class or a specific filter instance name.
24571
24572 @var{COMMAND} specifies the name of the command for the target filter.
24573
24574 @var{ARG} is optional and specifies the optional list of argument for
24575 the given @var{COMMAND}.
24576
24577 Between one interval specification and another, whitespaces, or
24578 sequences of characters starting with @code{#} until the end of line,
24579 are ignored and can be used to annotate comments.
24580
24581 A simplified BNF description of the commands specification syntax
24582 follows:
24583 @example
24584 @var{COMMAND_FLAG}  ::= "enter" | "leave"
24585 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
24586 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
24587 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
24588 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
24589 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
24590 @end example
24591
24592 @subsection Examples
24593
24594 @itemize
24595 @item
24596 Specify audio tempo change at second 4:
24597 @example
24598 asendcmd=c='4.0 atempo tempo 1.5',atempo
24599 @end example
24600
24601 @item
24602 Target a specific filter instance:
24603 @example
24604 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
24605 @end example
24606
24607 @item
24608 Specify a list of drawtext and hue commands in a file.
24609 @example
24610 # show text in the interval 5-10
24611 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
24612          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
24613
24614 # desaturate the image in the interval 15-20
24615 15.0-20.0 [enter] hue s 0,
24616           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
24617           [leave] hue s 1,
24618           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
24619
24620 # apply an exponential saturation fade-out effect, starting from time 25
24621 25 [enter] hue s exp(25-t)
24622 @end example
24623
24624 A filtergraph allowing to read and process the above command list
24625 stored in a file @file{test.cmd}, can be specified with:
24626 @example
24627 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
24628 @end example
24629 @end itemize
24630
24631 @anchor{setpts}
24632 @section setpts, asetpts
24633
24634 Change the PTS (presentation timestamp) of the input frames.
24635
24636 @code{setpts} works on video frames, @code{asetpts} on audio frames.
24637
24638 This filter accepts the following options:
24639
24640 @table @option
24641
24642 @item expr
24643 The expression which is evaluated for each frame to construct its timestamp.
24644
24645 @end table
24646
24647 The expression is evaluated through the eval API and can contain the following
24648 constants:
24649
24650 @table @option
24651 @item FRAME_RATE, FR
24652 frame rate, only defined for constant frame-rate video
24653
24654 @item PTS
24655 The presentation timestamp in input
24656
24657 @item N
24658 The count of the input frame for video or the number of consumed samples,
24659 not including the current frame for audio, starting from 0.
24660
24661 @item NB_CONSUMED_SAMPLES
24662 The number of consumed samples, not including the current frame (only
24663 audio)
24664
24665 @item NB_SAMPLES, S
24666 The number of samples in the current frame (only audio)
24667
24668 @item SAMPLE_RATE, SR
24669 The audio sample rate.
24670
24671 @item STARTPTS
24672 The PTS of the first frame.
24673
24674 @item STARTT
24675 the time in seconds of the first frame
24676
24677 @item INTERLACED
24678 State whether the current frame is interlaced.
24679
24680 @item T
24681 the time in seconds of the current frame
24682
24683 @item POS
24684 original position in the file of the frame, or undefined if undefined
24685 for the current frame
24686
24687 @item PREV_INPTS
24688 The previous input PTS.
24689
24690 @item PREV_INT
24691 previous input time in seconds
24692
24693 @item PREV_OUTPTS
24694 The previous output PTS.
24695
24696 @item PREV_OUTT
24697 previous output time in seconds
24698
24699 @item RTCTIME
24700 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
24701 instead.
24702
24703 @item RTCSTART
24704 The wallclock (RTC) time at the start of the movie in microseconds.
24705
24706 @item TB
24707 The timebase of the input timestamps.
24708
24709 @end table
24710
24711 @subsection Examples
24712
24713 @itemize
24714 @item
24715 Start counting PTS from zero
24716 @example
24717 setpts=PTS-STARTPTS
24718 @end example
24719
24720 @item
24721 Apply fast motion effect:
24722 @example
24723 setpts=0.5*PTS
24724 @end example
24725
24726 @item
24727 Apply slow motion effect:
24728 @example
24729 setpts=2.0*PTS
24730 @end example
24731
24732 @item
24733 Set fixed rate of 25 frames per second:
24734 @example
24735 setpts=N/(25*TB)
24736 @end example
24737
24738 @item
24739 Set fixed rate 25 fps with some jitter:
24740 @example
24741 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
24742 @end example
24743
24744 @item
24745 Apply an offset of 10 seconds to the input PTS:
24746 @example
24747 setpts=PTS+10/TB
24748 @end example
24749
24750 @item
24751 Generate timestamps from a "live source" and rebase onto the current timebase:
24752 @example
24753 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
24754 @end example
24755
24756 @item
24757 Generate timestamps by counting samples:
24758 @example
24759 asetpts=N/SR/TB
24760 @end example
24761
24762 @end itemize
24763
24764 @section setrange
24765
24766 Force color range for the output video frame.
24767
24768 The @code{setrange} filter marks the color range property for the
24769 output frames. It does not change the input frame, but only sets the
24770 corresponding property, which affects how the frame is treated by
24771 following filters.
24772
24773 The filter accepts the following options:
24774
24775 @table @option
24776
24777 @item range
24778 Available values are:
24779
24780 @table @samp
24781 @item auto
24782 Keep the same color range property.
24783
24784 @item unspecified, unknown
24785 Set the color range as unspecified.
24786
24787 @item limited, tv, mpeg
24788 Set the color range as limited.
24789
24790 @item full, pc, jpeg
24791 Set the color range as full.
24792 @end table
24793 @end table
24794
24795 @section settb, asettb
24796
24797 Set the timebase to use for the output frames timestamps.
24798 It is mainly useful for testing timebase configuration.
24799
24800 It accepts the following parameters:
24801
24802 @table @option
24803
24804 @item expr, tb
24805 The expression which is evaluated into the output timebase.
24806
24807 @end table
24808
24809 The value for @option{tb} is an arithmetic expression representing a
24810 rational. The expression can contain the constants "AVTB" (the default
24811 timebase), "intb" (the input timebase) and "sr" (the sample rate,
24812 audio only). Default value is "intb".
24813
24814 @subsection Examples
24815
24816 @itemize
24817 @item
24818 Set the timebase to 1/25:
24819 @example
24820 settb=expr=1/25
24821 @end example
24822
24823 @item
24824 Set the timebase to 1/10:
24825 @example
24826 settb=expr=0.1
24827 @end example
24828
24829 @item
24830 Set the timebase to 1001/1000:
24831 @example
24832 settb=1+0.001
24833 @end example
24834
24835 @item
24836 Set the timebase to 2*intb:
24837 @example
24838 settb=2*intb
24839 @end example
24840
24841 @item
24842 Set the default timebase value:
24843 @example
24844 settb=AVTB
24845 @end example
24846 @end itemize
24847
24848 @section showcqt
24849 Convert input audio to a video output representing frequency spectrum
24850 logarithmically using Brown-Puckette constant Q transform algorithm with
24851 direct frequency domain coefficient calculation (but the transform itself
24852 is not really constant Q, instead the Q factor is actually variable/clamped),
24853 with musical tone scale, from E0 to D#10.
24854
24855 The filter accepts the following options:
24856
24857 @table @option
24858 @item size, s
24859 Specify the video size for the output. It must be even. For the syntax of this option,
24860 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24861 Default value is @code{1920x1080}.
24862
24863 @item fps, rate, r
24864 Set the output frame rate. Default value is @code{25}.
24865
24866 @item bar_h
24867 Set the bargraph height. It must be even. Default value is @code{-1} which
24868 computes the bargraph height automatically.
24869
24870 @item axis_h
24871 Set the axis height. It must be even. Default value is @code{-1} which computes
24872 the axis height automatically.
24873
24874 @item sono_h
24875 Set the sonogram height. It must be even. Default value is @code{-1} which
24876 computes the sonogram height automatically.
24877
24878 @item fullhd
24879 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
24880 instead. Default value is @code{1}.
24881
24882 @item sono_v, volume
24883 Specify the sonogram volume expression. It can contain variables:
24884 @table @option
24885 @item bar_v
24886 the @var{bar_v} evaluated expression
24887 @item frequency, freq, f
24888 the frequency where it is evaluated
24889 @item timeclamp, tc
24890 the value of @var{timeclamp} option
24891 @end table
24892 and functions:
24893 @table @option
24894 @item a_weighting(f)
24895 A-weighting of equal loudness
24896 @item b_weighting(f)
24897 B-weighting of equal loudness
24898 @item c_weighting(f)
24899 C-weighting of equal loudness.
24900 @end table
24901 Default value is @code{16}.
24902
24903 @item bar_v, volume2
24904 Specify the bargraph volume expression. It can contain variables:
24905 @table @option
24906 @item sono_v
24907 the @var{sono_v} evaluated expression
24908 @item frequency, freq, f
24909 the frequency where it is evaluated
24910 @item timeclamp, tc
24911 the value of @var{timeclamp} option
24912 @end table
24913 and functions:
24914 @table @option
24915 @item a_weighting(f)
24916 A-weighting of equal loudness
24917 @item b_weighting(f)
24918 B-weighting of equal loudness
24919 @item c_weighting(f)
24920 C-weighting of equal loudness.
24921 @end table
24922 Default value is @code{sono_v}.
24923
24924 @item sono_g, gamma
24925 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
24926 higher gamma makes the spectrum having more range. Default value is @code{3}.
24927 Acceptable range is @code{[1, 7]}.
24928
24929 @item bar_g, gamma2
24930 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
24931 @code{[1, 7]}.
24932
24933 @item bar_t
24934 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
24935 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
24936
24937 @item timeclamp, tc
24938 Specify the transform timeclamp. At low frequency, there is trade-off between
24939 accuracy in time domain and frequency domain. If timeclamp is lower,
24940 event in time domain is represented more accurately (such as fast bass drum),
24941 otherwise event in frequency domain is represented more accurately
24942 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
24943
24944 @item attack
24945 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
24946 limits future samples by applying asymmetric windowing in time domain, useful
24947 when low latency is required. Accepted range is @code{[0, 1]}.
24948
24949 @item basefreq
24950 Specify the transform base frequency. Default value is @code{20.01523126408007475},
24951 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
24952
24953 @item endfreq
24954 Specify the transform end frequency. Default value is @code{20495.59681441799654},
24955 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
24956
24957 @item coeffclamp
24958 This option is deprecated and ignored.
24959
24960 @item tlength
24961 Specify the transform length in time domain. Use this option to control accuracy
24962 trade-off between time domain and frequency domain at every frequency sample.
24963 It can contain variables:
24964 @table @option
24965 @item frequency, freq, f
24966 the frequency where it is evaluated
24967 @item timeclamp, tc
24968 the value of @var{timeclamp} option.
24969 @end table
24970 Default value is @code{384*tc/(384+tc*f)}.
24971
24972 @item count
24973 Specify the transform count for every video frame. Default value is @code{6}.
24974 Acceptable range is @code{[1, 30]}.
24975
24976 @item fcount
24977 Specify the transform count for every single pixel. Default value is @code{0},
24978 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
24979
24980 @item fontfile
24981 Specify font file for use with freetype to draw the axis. If not specified,
24982 use embedded font. Note that drawing with font file or embedded font is not
24983 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
24984 option instead.
24985
24986 @item font
24987 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
24988 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
24989 escaping.
24990
24991 @item fontcolor
24992 Specify font color expression. This is arithmetic expression that should return
24993 integer value 0xRRGGBB. It can contain variables:
24994 @table @option
24995 @item frequency, freq, f
24996 the frequency where it is evaluated
24997 @item timeclamp, tc
24998 the value of @var{timeclamp} option
24999 @end table
25000 and functions:
25001 @table @option
25002 @item midi(f)
25003 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
25004 @item r(x), g(x), b(x)
25005 red, green, and blue value of intensity x.
25006 @end table
25007 Default value is @code{st(0, (midi(f)-59.5)/12);
25008 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
25009 r(1-ld(1)) + b(ld(1))}.
25010
25011 @item axisfile
25012 Specify image file to draw the axis. This option override @var{fontfile} and
25013 @var{fontcolor} option.
25014
25015 @item axis, text
25016 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
25017 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
25018 Default value is @code{1}.
25019
25020 @item csp
25021 Set colorspace. The accepted values are:
25022 @table @samp
25023 @item unspecified
25024 Unspecified (default)
25025
25026 @item bt709
25027 BT.709
25028
25029 @item fcc
25030 FCC
25031
25032 @item bt470bg
25033 BT.470BG or BT.601-6 625
25034
25035 @item smpte170m
25036 SMPTE-170M or BT.601-6 525
25037
25038 @item smpte240m
25039 SMPTE-240M
25040
25041 @item bt2020ncl
25042 BT.2020 with non-constant luminance
25043
25044 @end table
25045
25046 @item cscheme
25047 Set spectrogram color scheme. This is list of floating point values with format
25048 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
25049 The default is @code{1|0.5|0|0|0.5|1}.
25050
25051 @end table
25052
25053 @subsection Examples
25054
25055 @itemize
25056 @item
25057 Playing audio while showing the spectrum:
25058 @example
25059 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
25060 @end example
25061
25062 @item
25063 Same as above, but with frame rate 30 fps:
25064 @example
25065 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
25066 @end example
25067
25068 @item
25069 Playing at 1280x720:
25070 @example
25071 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
25072 @end example
25073
25074 @item
25075 Disable sonogram display:
25076 @example
25077 sono_h=0
25078 @end example
25079
25080 @item
25081 A1 and its harmonics: A1, A2, (near)E3, A3:
25082 @example
25083 ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
25084                  asplit[a][out1]; [a] showcqt [out0]'
25085 @end example
25086
25087 @item
25088 Same as above, but with more accuracy in frequency domain:
25089 @example
25090 ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
25091                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
25092 @end example
25093
25094 @item
25095 Custom volume:
25096 @example
25097 bar_v=10:sono_v=bar_v*a_weighting(f)
25098 @end example
25099
25100 @item
25101 Custom gamma, now spectrum is linear to the amplitude.
25102 @example
25103 bar_g=2:sono_g=2
25104 @end example
25105
25106 @item
25107 Custom tlength equation:
25108 @example
25109 tc=0.33:tlength='st(0,0.17); 384*tc / (384 / ld(0) + tc*f /(1-ld(0))) + 384*tc / (tc*f / ld(0) + 384 /(1-ld(0)))'
25110 @end example
25111
25112 @item
25113 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
25114 @example
25115 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
25116 @end example
25117
25118 @item
25119 Custom font using fontconfig:
25120 @example
25121 font='Courier New,Monospace,mono|bold'
25122 @end example
25123
25124 @item
25125 Custom frequency range with custom axis using image file:
25126 @example
25127 axisfile=myaxis.png:basefreq=40:endfreq=10000
25128 @end example
25129 @end itemize
25130
25131 @section showfreqs
25132
25133 Convert input audio to video output representing the audio power spectrum.
25134 Audio amplitude is on Y-axis while frequency is on X-axis.
25135
25136 The filter accepts the following options:
25137
25138 @table @option
25139 @item size, s
25140 Specify size of video. For the syntax of this option, check the
25141 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25142 Default is @code{1024x512}.
25143
25144 @item mode
25145 Set display mode.
25146 This set how each frequency bin will be represented.
25147
25148 It accepts the following values:
25149 @table @samp
25150 @item line
25151 @item bar
25152 @item dot
25153 @end table
25154 Default is @code{bar}.
25155
25156 @item ascale
25157 Set amplitude scale.
25158
25159 It accepts the following values:
25160 @table @samp
25161 @item lin
25162 Linear scale.
25163
25164 @item sqrt
25165 Square root scale.
25166
25167 @item cbrt
25168 Cubic root scale.
25169
25170 @item log
25171 Logarithmic scale.
25172 @end table
25173 Default is @code{log}.
25174
25175 @item fscale
25176 Set frequency scale.
25177
25178 It accepts the following values:
25179 @table @samp
25180 @item lin
25181 Linear scale.
25182
25183 @item log
25184 Logarithmic scale.
25185
25186 @item rlog
25187 Reverse logarithmic scale.
25188 @end table
25189 Default is @code{lin}.
25190
25191 @item win_size
25192 Set window size. Allowed range is from 16 to 65536.
25193
25194 Default is @code{2048}
25195
25196 @item win_func
25197 Set windowing function.
25198
25199 It accepts the following values:
25200 @table @samp
25201 @item rect
25202 @item bartlett
25203 @item hanning
25204 @item hamming
25205 @item blackman
25206 @item welch
25207 @item flattop
25208 @item bharris
25209 @item bnuttall
25210 @item bhann
25211 @item sine
25212 @item nuttall
25213 @item lanczos
25214 @item gauss
25215 @item tukey
25216 @item dolph
25217 @item cauchy
25218 @item parzen
25219 @item poisson
25220 @item bohman
25221 @end table
25222 Default is @code{hanning}.
25223
25224 @item overlap
25225 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25226 which means optimal overlap for selected window function will be picked.
25227
25228 @item averaging
25229 Set time averaging. Setting this to 0 will display current maximal peaks.
25230 Default is @code{1}, which means time averaging is disabled.
25231
25232 @item colors
25233 Specify list of colors separated by space or by '|' which will be used to
25234 draw channel frequencies. Unrecognized or missing colors will be replaced
25235 by white color.
25236
25237 @item cmode
25238 Set channel display mode.
25239
25240 It accepts the following values:
25241 @table @samp
25242 @item combined
25243 @item separate
25244 @end table
25245 Default is @code{combined}.
25246
25247 @item minamp
25248 Set minimum amplitude used in @code{log} amplitude scaler.
25249
25250 @item data
25251 Set data display mode.
25252
25253 It accepts the following values:
25254 @table @samp
25255 @item magnitude
25256 @item phase
25257 @item delay
25258 @end table
25259 Default is @code{magnitude}.
25260 @end table
25261
25262 @section showspatial
25263
25264 Convert stereo input audio to a video output, representing the spatial relationship
25265 between two channels.
25266
25267 The filter accepts the following options:
25268
25269 @table @option
25270 @item size, s
25271 Specify the video size for the output. For the syntax of this option, check the
25272 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25273 Default value is @code{512x512}.
25274
25275 @item win_size
25276 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
25277
25278 @item win_func
25279 Set window function.
25280
25281 It accepts the following values:
25282 @table @samp
25283 @item rect
25284 @item bartlett
25285 @item hann
25286 @item hanning
25287 @item hamming
25288 @item blackman
25289 @item welch
25290 @item flattop
25291 @item bharris
25292 @item bnuttall
25293 @item bhann
25294 @item sine
25295 @item nuttall
25296 @item lanczos
25297 @item gauss
25298 @item tukey
25299 @item dolph
25300 @item cauchy
25301 @item parzen
25302 @item poisson
25303 @item bohman
25304 @end table
25305
25306 Default value is @code{hann}.
25307
25308 @item overlap
25309 Set ratio of overlap window. Default value is @code{0.5}.
25310 When value is @code{1} overlap is set to recommended size for specific
25311 window function currently used.
25312 @end table
25313
25314 @anchor{showspectrum}
25315 @section showspectrum
25316
25317 Convert input audio to a video output, representing the audio frequency
25318 spectrum.
25319
25320 The filter accepts the following options:
25321
25322 @table @option
25323 @item size, s
25324 Specify the video size for the output. For the syntax of this option, check the
25325 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25326 Default value is @code{640x512}.
25327
25328 @item slide
25329 Specify how the spectrum should slide along the window.
25330
25331 It accepts the following values:
25332 @table @samp
25333 @item replace
25334 the samples start again on the left when they reach the right
25335 @item scroll
25336 the samples scroll from right to left
25337 @item fullframe
25338 frames are only produced when the samples reach the right
25339 @item rscroll
25340 the samples scroll from left to right
25341 @end table
25342
25343 Default value is @code{replace}.
25344
25345 @item mode
25346 Specify display mode.
25347
25348 It accepts the following values:
25349 @table @samp
25350 @item combined
25351 all channels are displayed in the same row
25352 @item separate
25353 all channels are displayed in separate rows
25354 @end table
25355
25356 Default value is @samp{combined}.
25357
25358 @item color
25359 Specify display color mode.
25360
25361 It accepts the following values:
25362 @table @samp
25363 @item channel
25364 each channel is displayed in a separate color
25365 @item intensity
25366 each channel is displayed using the same color scheme
25367 @item rainbow
25368 each channel is displayed using the rainbow color scheme
25369 @item moreland
25370 each channel is displayed using the moreland color scheme
25371 @item nebulae
25372 each channel is displayed using the nebulae color scheme
25373 @item fire
25374 each channel is displayed using the fire color scheme
25375 @item fiery
25376 each channel is displayed using the fiery color scheme
25377 @item fruit
25378 each channel is displayed using the fruit color scheme
25379 @item cool
25380 each channel is displayed using the cool color scheme
25381 @item magma
25382 each channel is displayed using the magma color scheme
25383 @item green
25384 each channel is displayed using the green color scheme
25385 @item viridis
25386 each channel is displayed using the viridis color scheme
25387 @item plasma
25388 each channel is displayed using the plasma color scheme
25389 @item cividis
25390 each channel is displayed using the cividis color scheme
25391 @item terrain
25392 each channel is displayed using the terrain color scheme
25393 @end table
25394
25395 Default value is @samp{channel}.
25396
25397 @item scale
25398 Specify scale used for calculating intensity color values.
25399
25400 It accepts the following values:
25401 @table @samp
25402 @item lin
25403 linear
25404 @item sqrt
25405 square root, default
25406 @item cbrt
25407 cubic root
25408 @item log
25409 logarithmic
25410 @item 4thrt
25411 4th root
25412 @item 5thrt
25413 5th root
25414 @end table
25415
25416 Default value is @samp{sqrt}.
25417
25418 @item fscale
25419 Specify frequency scale.
25420
25421 It accepts the following values:
25422 @table @samp
25423 @item lin
25424 linear
25425 @item log
25426 logarithmic
25427 @end table
25428
25429 Default value is @samp{lin}.
25430
25431 @item saturation
25432 Set saturation modifier for displayed colors. Negative values provide
25433 alternative color scheme. @code{0} is no saturation at all.
25434 Saturation must be in [-10.0, 10.0] range.
25435 Default value is @code{1}.
25436
25437 @item win_func
25438 Set window function.
25439
25440 It accepts the following values:
25441 @table @samp
25442 @item rect
25443 @item bartlett
25444 @item hann
25445 @item hanning
25446 @item hamming
25447 @item blackman
25448 @item welch
25449 @item flattop
25450 @item bharris
25451 @item bnuttall
25452 @item bhann
25453 @item sine
25454 @item nuttall
25455 @item lanczos
25456 @item gauss
25457 @item tukey
25458 @item dolph
25459 @item cauchy
25460 @item parzen
25461 @item poisson
25462 @item bohman
25463 @end table
25464
25465 Default value is @code{hann}.
25466
25467 @item orientation
25468 Set orientation of time vs frequency axis. Can be @code{vertical} or
25469 @code{horizontal}. Default is @code{vertical}.
25470
25471 @item overlap
25472 Set ratio of overlap window. Default value is @code{0}.
25473 When value is @code{1} overlap is set to recommended size for specific
25474 window function currently used.
25475
25476 @item gain
25477 Set scale gain for calculating intensity color values.
25478 Default value is @code{1}.
25479
25480 @item data
25481 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
25482
25483 @item rotation
25484 Set color rotation, must be in [-1.0, 1.0] range.
25485 Default value is @code{0}.
25486
25487 @item start
25488 Set start frequency from which to display spectrogram. Default is @code{0}.
25489
25490 @item stop
25491 Set stop frequency to which to display spectrogram. Default is @code{0}.
25492
25493 @item fps
25494 Set upper frame rate limit. Default is @code{auto}, unlimited.
25495
25496 @item legend
25497 Draw time and frequency axes and legends. Default is disabled.
25498 @end table
25499
25500 The usage is very similar to the showwaves filter; see the examples in that
25501 section.
25502
25503 @subsection Examples
25504
25505 @itemize
25506 @item
25507 Large window with logarithmic color scaling:
25508 @example
25509 showspectrum=s=1280x480:scale=log
25510 @end example
25511
25512 @item
25513 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
25514 @example
25515 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
25516              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
25517 @end example
25518 @end itemize
25519
25520 @section showspectrumpic
25521
25522 Convert input audio to a single video frame, representing the audio frequency
25523 spectrum.
25524
25525 The filter accepts the following options:
25526
25527 @table @option
25528 @item size, s
25529 Specify the video size for the output. For the syntax of this option, check the
25530 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25531 Default value is @code{4096x2048}.
25532
25533 @item mode
25534 Specify display mode.
25535
25536 It accepts the following values:
25537 @table @samp
25538 @item combined
25539 all channels are displayed in the same row
25540 @item separate
25541 all channels are displayed in separate rows
25542 @end table
25543 Default value is @samp{combined}.
25544
25545 @item color
25546 Specify display color mode.
25547
25548 It accepts the following values:
25549 @table @samp
25550 @item channel
25551 each channel is displayed in a separate color
25552 @item intensity
25553 each channel is displayed using the same color scheme
25554 @item rainbow
25555 each channel is displayed using the rainbow color scheme
25556 @item moreland
25557 each channel is displayed using the moreland color scheme
25558 @item nebulae
25559 each channel is displayed using the nebulae color scheme
25560 @item fire
25561 each channel is displayed using the fire color scheme
25562 @item fiery
25563 each channel is displayed using the fiery color scheme
25564 @item fruit
25565 each channel is displayed using the fruit color scheme
25566 @item cool
25567 each channel is displayed using the cool color scheme
25568 @item magma
25569 each channel is displayed using the magma color scheme
25570 @item green
25571 each channel is displayed using the green color scheme
25572 @item viridis
25573 each channel is displayed using the viridis color scheme
25574 @item plasma
25575 each channel is displayed using the plasma color scheme
25576 @item cividis
25577 each channel is displayed using the cividis color scheme
25578 @item terrain
25579 each channel is displayed using the terrain color scheme
25580 @end table
25581 Default value is @samp{intensity}.
25582
25583 @item scale
25584 Specify scale used for calculating intensity color values.
25585
25586 It accepts the following values:
25587 @table @samp
25588 @item lin
25589 linear
25590 @item sqrt
25591 square root, default
25592 @item cbrt
25593 cubic root
25594 @item log
25595 logarithmic
25596 @item 4thrt
25597 4th root
25598 @item 5thrt
25599 5th root
25600 @end table
25601 Default value is @samp{log}.
25602
25603 @item fscale
25604 Specify frequency scale.
25605
25606 It accepts the following values:
25607 @table @samp
25608 @item lin
25609 linear
25610 @item log
25611 logarithmic
25612 @end table
25613
25614 Default value is @samp{lin}.
25615
25616 @item saturation
25617 Set saturation modifier for displayed colors. Negative values provide
25618 alternative color scheme. @code{0} is no saturation at all.
25619 Saturation must be in [-10.0, 10.0] range.
25620 Default value is @code{1}.
25621
25622 @item win_func
25623 Set window function.
25624
25625 It accepts the following values:
25626 @table @samp
25627 @item rect
25628 @item bartlett
25629 @item hann
25630 @item hanning
25631 @item hamming
25632 @item blackman
25633 @item welch
25634 @item flattop
25635 @item bharris
25636 @item bnuttall
25637 @item bhann
25638 @item sine
25639 @item nuttall
25640 @item lanczos
25641 @item gauss
25642 @item tukey
25643 @item dolph
25644 @item cauchy
25645 @item parzen
25646 @item poisson
25647 @item bohman
25648 @end table
25649 Default value is @code{hann}.
25650
25651 @item orientation
25652 Set orientation of time vs frequency axis. Can be @code{vertical} or
25653 @code{horizontal}. Default is @code{vertical}.
25654
25655 @item gain
25656 Set scale gain for calculating intensity color values.
25657 Default value is @code{1}.
25658
25659 @item legend
25660 Draw time and frequency axes and legends. Default is enabled.
25661
25662 @item rotation
25663 Set color rotation, must be in [-1.0, 1.0] range.
25664 Default value is @code{0}.
25665
25666 @item start
25667 Set start frequency from which to display spectrogram. Default is @code{0}.
25668
25669 @item stop
25670 Set stop frequency to which to display spectrogram. Default is @code{0}.
25671 @end table
25672
25673 @subsection Examples
25674
25675 @itemize
25676 @item
25677 Extract an audio spectrogram of a whole audio track
25678 in a 1024x1024 picture using @command{ffmpeg}:
25679 @example
25680 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
25681 @end example
25682 @end itemize
25683
25684 @section showvolume
25685
25686 Convert input audio volume to a video output.
25687
25688 The filter accepts the following options:
25689
25690 @table @option
25691 @item rate, r
25692 Set video rate.
25693
25694 @item b
25695 Set border width, allowed range is [0, 5]. Default is 1.
25696
25697 @item w
25698 Set channel width, allowed range is [80, 8192]. Default is 400.
25699
25700 @item h
25701 Set channel height, allowed range is [1, 900]. Default is 20.
25702
25703 @item f
25704 Set fade, allowed range is [0, 1]. Default is 0.95.
25705
25706 @item c
25707 Set volume color expression.
25708
25709 The expression can use the following variables:
25710
25711 @table @option
25712 @item VOLUME
25713 Current max volume of channel in dB.
25714
25715 @item PEAK
25716 Current peak.
25717
25718 @item CHANNEL
25719 Current channel number, starting from 0.
25720 @end table
25721
25722 @item t
25723 If set, displays channel names. Default is enabled.
25724
25725 @item v
25726 If set, displays volume values. Default is enabled.
25727
25728 @item o
25729 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
25730 default is @code{h}.
25731
25732 @item s
25733 Set step size, allowed range is [0, 5]. Default is 0, which means
25734 step is disabled.
25735
25736 @item p
25737 Set background opacity, allowed range is [0, 1]. Default is 0.
25738
25739 @item m
25740 Set metering mode, can be peak: @code{p} or rms: @code{r},
25741 default is @code{p}.
25742
25743 @item ds
25744 Set display scale, can be linear: @code{lin} or log: @code{log},
25745 default is @code{lin}.
25746
25747 @item dm
25748 In second.
25749 If set to > 0., display a line for the max level
25750 in the previous seconds.
25751 default is disabled: @code{0.}
25752
25753 @item dmc
25754 The color of the max line. Use when @code{dm} option is set to > 0.
25755 default is: @code{orange}
25756 @end table
25757
25758 @section showwaves
25759
25760 Convert input audio to a video output, representing the samples waves.
25761
25762 The filter accepts the following options:
25763
25764 @table @option
25765 @item size, s
25766 Specify the video size for the output. For the syntax of this option, check the
25767 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25768 Default value is @code{600x240}.
25769
25770 @item mode
25771 Set display mode.
25772
25773 Available values are:
25774 @table @samp
25775 @item point
25776 Draw a point for each sample.
25777
25778 @item line
25779 Draw a vertical line for each sample.
25780
25781 @item p2p
25782 Draw a point for each sample and a line between them.
25783
25784 @item cline
25785 Draw a centered vertical line for each sample.
25786 @end table
25787
25788 Default value is @code{point}.
25789
25790 @item n
25791 Set the number of samples which are printed on the same column. A
25792 larger value will decrease the frame rate. Must be a positive
25793 integer. This option can be set only if the value for @var{rate}
25794 is not explicitly specified.
25795
25796 @item rate, r
25797 Set the (approximate) output frame rate. This is done by setting the
25798 option @var{n}. Default value is "25".
25799
25800 @item split_channels
25801 Set if channels should be drawn separately or overlap. Default value is 0.
25802
25803 @item colors
25804 Set colors separated by '|' which are going to be used for drawing of each channel.
25805
25806 @item scale
25807 Set amplitude scale.
25808
25809 Available values are:
25810 @table @samp
25811 @item lin
25812 Linear.
25813
25814 @item log
25815 Logarithmic.
25816
25817 @item sqrt
25818 Square root.
25819
25820 @item cbrt
25821 Cubic root.
25822 @end table
25823
25824 Default is linear.
25825
25826 @item draw
25827 Set the draw mode. This is mostly useful to set for high @var{n}.
25828
25829 Available values are:
25830 @table @samp
25831 @item scale
25832 Scale pixel values for each drawn sample.
25833
25834 @item full
25835 Draw every sample directly.
25836 @end table
25837
25838 Default value is @code{scale}.
25839 @end table
25840
25841 @subsection Examples
25842
25843 @itemize
25844 @item
25845 Output the input file audio and the corresponding video representation
25846 at the same time:
25847 @example
25848 amovie=a.mp3,asplit[out0],showwaves[out1]
25849 @end example
25850
25851 @item
25852 Create a synthetic signal and show it with showwaves, forcing a
25853 frame rate of 30 frames per second:
25854 @example
25855 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
25856 @end example
25857 @end itemize
25858
25859 @section showwavespic
25860
25861 Convert input audio to a single video frame, representing the samples waves.
25862
25863 The filter accepts the following options:
25864
25865 @table @option
25866 @item size, s
25867 Specify the video size for the output. For the syntax of this option, check the
25868 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25869 Default value is @code{600x240}.
25870
25871 @item split_channels
25872 Set if channels should be drawn separately or overlap. Default value is 0.
25873
25874 @item colors
25875 Set colors separated by '|' which are going to be used for drawing of each channel.
25876
25877 @item scale
25878 Set amplitude scale.
25879
25880 Available values are:
25881 @table @samp
25882 @item lin
25883 Linear.
25884
25885 @item log
25886 Logarithmic.
25887
25888 @item sqrt
25889 Square root.
25890
25891 @item cbrt
25892 Cubic root.
25893 @end table
25894
25895 Default is linear.
25896
25897 @item draw
25898 Set the draw mode.
25899
25900 Available values are:
25901 @table @samp
25902 @item scale
25903 Scale pixel values for each drawn sample.
25904
25905 @item full
25906 Draw every sample directly.
25907 @end table
25908
25909 Default value is @code{scale}.
25910
25911 @item filter
25912 Set the filter mode.
25913
25914 Available values are:
25915 @table @samp
25916 @item average
25917 Use average samples values for each drawn sample.
25918
25919 @item peak
25920 Use peak samples values for each drawn sample.
25921 @end table
25922
25923 Default value is @code{average}.
25924 @end table
25925
25926 @subsection Examples
25927
25928 @itemize
25929 @item
25930 Extract a channel split representation of the wave form of a whole audio track
25931 in a 1024x800 picture using @command{ffmpeg}:
25932 @example
25933 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
25934 @end example
25935 @end itemize
25936
25937 @section sidedata, asidedata
25938
25939 Delete frame side data, or select frames based on it.
25940
25941 This filter accepts the following options:
25942
25943 @table @option
25944 @item mode
25945 Set mode of operation of the filter.
25946
25947 Can be one of the following:
25948
25949 @table @samp
25950 @item select
25951 Select every frame with side data of @code{type}.
25952
25953 @item delete
25954 Delete side data of @code{type}. If @code{type} is not set, delete all side
25955 data in the frame.
25956
25957 @end table
25958
25959 @item type
25960 Set side data type used with all modes. Must be set for @code{select} mode. For
25961 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
25962 in @file{libavutil/frame.h}. For example, to choose
25963 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
25964
25965 @end table
25966
25967 @section spectrumsynth
25968
25969 Synthesize audio from 2 input video spectrums, first input stream represents
25970 magnitude across time and second represents phase across time.
25971 The filter will transform from frequency domain as displayed in videos back
25972 to time domain as presented in audio output.
25973
25974 This filter is primarily created for reversing processed @ref{showspectrum}
25975 filter outputs, but can synthesize sound from other spectrograms too.
25976 But in such case results are going to be poor if the phase data is not
25977 available, because in such cases phase data need to be recreated, usually
25978 it's just recreated from random noise.
25979 For best results use gray only output (@code{channel} color mode in
25980 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
25981 @code{lin} scale for phase video. To produce phase, for 2nd video, use
25982 @code{data} option. Inputs videos should generally use @code{fullframe}
25983 slide mode as that saves resources needed for decoding video.
25984
25985 The filter accepts the following options:
25986
25987 @table @option
25988 @item sample_rate
25989 Specify sample rate of output audio, the sample rate of audio from which
25990 spectrum was generated may differ.
25991
25992 @item channels
25993 Set number of channels represented in input video spectrums.
25994
25995 @item scale
25996 Set scale which was used when generating magnitude input spectrum.
25997 Can be @code{lin} or @code{log}. Default is @code{log}.
25998
25999 @item slide
26000 Set slide which was used when generating inputs spectrums.
26001 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
26002 Default is @code{fullframe}.
26003
26004 @item win_func
26005 Set window function used for resynthesis.
26006
26007 @item overlap
26008 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
26009 which means optimal overlap for selected window function will be picked.
26010
26011 @item orientation
26012 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
26013 Default is @code{vertical}.
26014 @end table
26015
26016 @subsection Examples
26017
26018 @itemize
26019 @item
26020 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
26021 then resynthesize videos back to audio with spectrumsynth:
26022 @example
26023 ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=log:overlap=0.875:color=channel:slide=fullframe:data=magnitude -an -c:v rawvideo magnitude.nut
26024 ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=lin:overlap=0.875:color=channel:slide=fullframe:data=phase -an -c:v rawvideo phase.nut
26025 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
26026 @end example
26027 @end itemize
26028
26029 @section split, asplit
26030
26031 Split input into several identical outputs.
26032
26033 @code{asplit} works with audio input, @code{split} with video.
26034
26035 The filter accepts a single parameter which specifies the number of outputs. If
26036 unspecified, it defaults to 2.
26037
26038 @subsection Examples
26039
26040 @itemize
26041 @item
26042 Create two separate outputs from the same input:
26043 @example
26044 [in] split [out0][out1]
26045 @end example
26046
26047 @item
26048 To create 3 or more outputs, you need to specify the number of
26049 outputs, like in:
26050 @example
26051 [in] asplit=3 [out0][out1][out2]
26052 @end example
26053
26054 @item
26055 Create two separate outputs from the same input, one cropped and
26056 one padded:
26057 @example
26058 [in] split [splitout1][splitout2];
26059 [splitout1] crop=100:100:0:0    [cropout];
26060 [splitout2] pad=200:200:100:100 [padout];
26061 @end example
26062
26063 @item
26064 Create 5 copies of the input audio with @command{ffmpeg}:
26065 @example
26066 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
26067 @end example
26068 @end itemize
26069
26070 @section zmq, azmq
26071
26072 Receive commands sent through a libzmq client, and forward them to
26073 filters in the filtergraph.
26074
26075 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
26076 must be inserted between two video filters, @code{azmq} between two
26077 audio filters. Both are capable to send messages to any filter type.
26078
26079 To enable these filters you need to install the libzmq library and
26080 headers and configure FFmpeg with @code{--enable-libzmq}.
26081
26082 For more information about libzmq see:
26083 @url{http://www.zeromq.org/}
26084
26085 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
26086 receives messages sent through a network interface defined by the
26087 @option{bind_address} (or the abbreviation "@option{b}") option.
26088 Default value of this option is @file{tcp://localhost:5555}. You may
26089 want to alter this value to your needs, but do not forget to escape any
26090 ':' signs (see @ref{filtergraph escaping}).
26091
26092 The received message must be in the form:
26093 @example
26094 @var{TARGET} @var{COMMAND} [@var{ARG}]
26095 @end example
26096
26097 @var{TARGET} specifies the target of the command, usually the name of
26098 the filter class or a specific filter instance name. The default
26099 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
26100 but you can override this by using the @samp{filter_name@@id} syntax
26101 (see @ref{Filtergraph syntax}).
26102
26103 @var{COMMAND} specifies the name of the command for the target filter.
26104
26105 @var{ARG} is optional and specifies the optional argument list for the
26106 given @var{COMMAND}.
26107
26108 Upon reception, the message is processed and the corresponding command
26109 is injected into the filtergraph. Depending on the result, the filter
26110 will send a reply to the client, adopting the format:
26111 @example
26112 @var{ERROR_CODE} @var{ERROR_REASON}
26113 @var{MESSAGE}
26114 @end example
26115
26116 @var{MESSAGE} is optional.
26117
26118 @subsection Examples
26119
26120 Look at @file{tools/zmqsend} for an example of a zmq client which can
26121 be used to send commands processed by these filters.
26122
26123 Consider the following filtergraph generated by @command{ffplay}.
26124 In this example the last overlay filter has an instance name. All other
26125 filters will have default instance names.
26126
26127 @example
26128 ffplay -dumpgraph 1 -f lavfi "
26129 color=s=100x100:c=red  [l];
26130 color=s=100x100:c=blue [r];
26131 nullsrc=s=200x100, zmq [bg];
26132 [bg][l]   overlay     [bg+l];
26133 [bg+l][r] overlay@@my=x=100 "
26134 @end example
26135
26136 To change the color of the left side of the video, the following
26137 command can be used:
26138 @example
26139 echo Parsed_color_0 c yellow | tools/zmqsend
26140 @end example
26141
26142 To change the right side:
26143 @example
26144 echo Parsed_color_1 c pink | tools/zmqsend
26145 @end example
26146
26147 To change the position of the right side:
26148 @example
26149 echo overlay@@my x 150 | tools/zmqsend
26150 @end example
26151
26152
26153 @c man end MULTIMEDIA FILTERS
26154
26155 @chapter Multimedia Sources
26156 @c man begin MULTIMEDIA SOURCES
26157
26158 Below is a description of the currently available multimedia sources.
26159
26160 @section amovie
26161
26162 This is the same as @ref{movie} source, except it selects an audio
26163 stream by default.
26164
26165 @anchor{movie}
26166 @section movie
26167
26168 Read audio and/or video stream(s) from a movie container.
26169
26170 It accepts the following parameters:
26171
26172 @table @option
26173 @item filename
26174 The name of the resource to read (not necessarily a file; it can also be a
26175 device or a stream accessed through some protocol).
26176
26177 @item format_name, f
26178 Specifies the format assumed for the movie to read, and can be either
26179 the name of a container or an input device. If not specified, the
26180 format is guessed from @var{movie_name} or by probing.
26181
26182 @item seek_point, sp
26183 Specifies the seek point in seconds. The frames will be output
26184 starting from this seek point. The parameter is evaluated with
26185 @code{av_strtod}, so the numerical value may be suffixed by an IS
26186 postfix. The default value is "0".
26187
26188 @item streams, s
26189 Specifies the streams to read. Several streams can be specified,
26190 separated by "+". The source will then have as many outputs, in the
26191 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
26192 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
26193 respectively the default (best suited) video and audio stream. Default
26194 is "dv", or "da" if the filter is called as "amovie".
26195
26196 @item stream_index, si
26197 Specifies the index of the video stream to read. If the value is -1,
26198 the most suitable video stream will be automatically selected. The default
26199 value is "-1". Deprecated. If the filter is called "amovie", it will select
26200 audio instead of video.
26201
26202 @item loop
26203 Specifies how many times to read the stream in sequence.
26204 If the value is 0, the stream will be looped infinitely.
26205 Default value is "1".
26206
26207 Note that when the movie is looped the source timestamps are not
26208 changed, so it will generate non monotonically increasing timestamps.
26209
26210 @item discontinuity
26211 Specifies the time difference between frames above which the point is
26212 considered a timestamp discontinuity which is removed by adjusting the later
26213 timestamps.
26214 @end table
26215
26216 It allows overlaying a second video on top of the main input of
26217 a filtergraph, as shown in this graph:
26218 @example
26219 input -----------> deltapts0 --> overlay --> output
26220                                     ^
26221                                     |
26222 movie --> scale--> deltapts1 -------+
26223 @end example
26224 @subsection Examples
26225
26226 @itemize
26227 @item
26228 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
26229 on top of the input labelled "in":
26230 @example
26231 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
26232 [in] setpts=PTS-STARTPTS [main];
26233 [main][over] overlay=16:16 [out]
26234 @end example
26235
26236 @item
26237 Read from a video4linux2 device, and overlay it on top of the input
26238 labelled "in":
26239 @example
26240 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
26241 [in] setpts=PTS-STARTPTS [main];
26242 [main][over] overlay=16:16 [out]
26243 @end example
26244
26245 @item
26246 Read the first video stream and the audio stream with id 0x81 from
26247 dvd.vob; the video is connected to the pad named "video" and the audio is
26248 connected to the pad named "audio":
26249 @example
26250 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
26251 @end example
26252 @end itemize
26253
26254 @subsection Commands
26255
26256 Both movie and amovie support the following commands:
26257 @table @option
26258 @item seek
26259 Perform seek using "av_seek_frame".
26260 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
26261 @itemize
26262 @item
26263 @var{stream_index}: If stream_index is -1, a default
26264 stream is selected, and @var{timestamp} is automatically converted
26265 from AV_TIME_BASE units to the stream specific time_base.
26266 @item
26267 @var{timestamp}: Timestamp in AVStream.time_base units
26268 or, if no stream is specified, in AV_TIME_BASE units.
26269 @item
26270 @var{flags}: Flags which select direction and seeking mode.
26271 @end itemize
26272
26273 @item get_duration
26274 Get movie duration in AV_TIME_BASE units.
26275
26276 @end table
26277
26278 @c man end MULTIMEDIA SOURCES