]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avfilter/vf_chromanr: add options for finer controls of filtering
[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
558 @item gains
559 Set output gain for each band. Default value is 1 for all bands.
560 @end table
561
562 @subsection Examples
563
564 @itemize
565 @item
566 Split input audio stream into two bands (low and high) with split frequency of 1500 Hz,
567 each band will be in separate stream:
568 @example
569 ffmpeg -i in.flac -filter_complex 'acrossover=split=1500[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
570 @end example
571
572 @item
573 Same as above, but with higher filter order:
574 @example
575 ffmpeg -i in.flac -filter_complex 'acrossover=split=1500:order=8th[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
576 @end example
577
578 @item
579 Same as above, but also with additional middle band (frequencies between 1500 and 8000):
580 @example
581 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
582 @end example
583 @end itemize
584
585 @section acrusher
586
587 Reduce audio bit resolution.
588
589 This filter is bit crusher with enhanced functionality. A bit crusher
590 is used to audibly reduce number of bits an audio signal is sampled
591 with. This doesn't change the bit depth at all, it just produces the
592 effect. Material reduced in bit depth sounds more harsh and "digital".
593 This filter is able to even round to continuous values instead of discrete
594 bit depths.
595 Additionally it has a D/C offset which results in different crushing of
596 the lower and the upper half of the signal.
597 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
598
599 Another feature of this filter is the logarithmic mode.
600 This setting switches from linear distances between bits to logarithmic ones.
601 The result is a much more "natural" sounding crusher which doesn't gate low
602 signals for example. The human ear has a logarithmic perception,
603 so this kind of crushing is much more pleasant.
604 Logarithmic crushing is also able to get anti-aliased.
605
606 The filter accepts the following options:
607
608 @table @option
609 @item level_in
610 Set level in.
611
612 @item level_out
613 Set level out.
614
615 @item bits
616 Set bit reduction.
617
618 @item mix
619 Set mixing amount.
620
621 @item mode
622 Can be linear: @code{lin} or logarithmic: @code{log}.
623
624 @item dc
625 Set DC.
626
627 @item aa
628 Set anti-aliasing.
629
630 @item samples
631 Set sample reduction.
632
633 @item lfo
634 Enable LFO. By default disabled.
635
636 @item lforange
637 Set LFO range.
638
639 @item lforate
640 Set LFO rate.
641 @end table
642
643 @section acue
644
645 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
646 filter.
647
648 @section adeclick
649 Remove impulsive noise from input audio.
650
651 Samples detected as impulsive noise are replaced by interpolated samples using
652 autoregressive modelling.
653
654 @table @option
655 @item w
656 Set window size, in milliseconds. Allowed range is from @code{10} to
657 @code{100}. Default value is @code{55} milliseconds.
658 This sets size of window which will be processed at once.
659
660 @item o
661 Set window overlap, in percentage of window size. Allowed range is from
662 @code{50} to @code{95}. Default value is @code{75} percent.
663 Setting this to a very high value increases impulsive noise removal but makes
664 whole process much slower.
665
666 @item a
667 Set autoregression order, in percentage of window size. Allowed range is from
668 @code{0} to @code{25}. Default value is @code{2} percent. This option also
669 controls quality of interpolated samples using neighbour good samples.
670
671 @item t
672 Set threshold value. Allowed range is from @code{1} to @code{100}.
673 Default value is @code{2}.
674 This controls the strength of impulsive noise which is going to be removed.
675 The lower value, the more samples will be detected as impulsive noise.
676
677 @item b
678 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
679 @code{10}. Default value is @code{2}.
680 If any two samples detected as noise are spaced less than this value then any
681 sample between those two samples will be also detected as noise.
682
683 @item m
684 Set overlap method.
685
686 It accepts the following values:
687 @table @option
688 @item a
689 Select overlap-add method. Even not interpolated samples are slightly
690 changed with this method.
691
692 @item s
693 Select overlap-save method. Not interpolated samples remain unchanged.
694 @end table
695
696 Default value is @code{a}.
697 @end table
698
699 @section adeclip
700 Remove clipped samples from input audio.
701
702 Samples detected as clipped are replaced by interpolated samples using
703 autoregressive modelling.
704
705 @table @option
706 @item w
707 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
708 Default value is @code{55} milliseconds.
709 This sets size of window which will be processed at once.
710
711 @item o
712 Set window overlap, in percentage of window size. Allowed range is from @code{50}
713 to @code{95}. Default value is @code{75} percent.
714
715 @item a
716 Set autoregression order, in percentage of window size. Allowed range is from
717 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
718 quality of interpolated samples using neighbour good samples.
719
720 @item t
721 Set threshold value. Allowed range is from @code{1} to @code{100}.
722 Default value is @code{10}. Higher values make clip detection less aggressive.
723
724 @item n
725 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
726 Default value is @code{1000}. Higher values make clip detection less aggressive.
727
728 @item m
729 Set overlap method.
730
731 It accepts the following values:
732 @table @option
733 @item a
734 Select overlap-add method. Even not interpolated samples are slightly changed
735 with this method.
736
737 @item s
738 Select overlap-save method. Not interpolated samples remain unchanged.
739 @end table
740
741 Default value is @code{a}.
742 @end table
743
744 @section adelay
745
746 Delay one or more audio channels.
747
748 Samples in delayed channel are filled with silence.
749
750 The filter accepts the following option:
751
752 @table @option
753 @item delays
754 Set list of delays in milliseconds for each channel separated by '|'.
755 Unused delays will be silently ignored. If number of given delays is
756 smaller than number of channels all remaining channels will not be delayed.
757 If you want to delay exact number of samples, append 'S' to number.
758 If you want instead to delay in seconds, append 's' to number.
759
760 @item all
761 Use last set delay for all remaining channels. By default is disabled.
762 This option if enabled changes how option @code{delays} is interpreted.
763 @end table
764
765 @subsection Examples
766
767 @itemize
768 @item
769 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
770 the second channel (and any other channels that may be present) unchanged.
771 @example
772 adelay=1500|0|500
773 @end example
774
775 @item
776 Delay second channel by 500 samples, the third channel by 700 samples and leave
777 the first channel (and any other channels that may be present) unchanged.
778 @example
779 adelay=0|500S|700S
780 @end example
781
782 @item
783 Delay all channels by same number of samples:
784 @example
785 adelay=delays=64S:all=1
786 @end example
787 @end itemize
788
789 @section adenorm
790 Remedy denormals in audio by adding extremely low-level noise.
791
792 This filter shall be placed before any filter that can produce denormals.
793
794 A description of the accepted parameters follows.
795
796 @table @option
797 @item level
798 Set level of added noise in dB. Default is @code{-351}.
799 Allowed range is from -451 to -90.
800
801 @item type
802 Set type of added noise.
803
804 @table @option
805 @item dc
806 Add DC signal.
807 @item ac
808 Add AC signal.
809 @item square
810 Add square signal.
811 @item pulse
812 Add pulse signal.
813 @end table
814
815 Default is @code{dc}.
816 @end table
817
818 @subsection Commands
819
820 This filter supports the all above options as @ref{commands}.
821
822 @section aderivative, aintegral
823
824 Compute derivative/integral of audio stream.
825
826 Applying both filters one after another produces original audio.
827
828 @section aecho
829
830 Apply echoing to the input audio.
831
832 Echoes are reflected sound and can occur naturally amongst mountains
833 (and sometimes large buildings) when talking or shouting; digital echo
834 effects emulate this behaviour and are often used to help fill out the
835 sound of a single instrument or vocal. The time difference between the
836 original signal and the reflection is the @code{delay}, and the
837 loudness of the reflected signal is the @code{decay}.
838 Multiple echoes can have different delays and decays.
839
840 A description of the accepted parameters follows.
841
842 @table @option
843 @item in_gain
844 Set input gain of reflected signal. Default is @code{0.6}.
845
846 @item out_gain
847 Set output gain of reflected signal. Default is @code{0.3}.
848
849 @item delays
850 Set list of time intervals in milliseconds between original signal and reflections
851 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
852 Default is @code{1000}.
853
854 @item decays
855 Set list of loudness of reflected signals separated by '|'.
856 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
857 Default is @code{0.5}.
858 @end table
859
860 @subsection Examples
861
862 @itemize
863 @item
864 Make it sound as if there are twice as many instruments as are actually playing:
865 @example
866 aecho=0.8:0.88:60:0.4
867 @end example
868
869 @item
870 If delay is very short, then it sounds like a (metallic) robot playing music:
871 @example
872 aecho=0.8:0.88:6:0.4
873 @end example
874
875 @item
876 A longer delay will sound like an open air concert in the mountains:
877 @example
878 aecho=0.8:0.9:1000:0.3
879 @end example
880
881 @item
882 Same as above but with one more mountain:
883 @example
884 aecho=0.8:0.9:1000|1800:0.3|0.25
885 @end example
886 @end itemize
887
888 @section aemphasis
889 Audio emphasis filter creates or restores material directly taken from LPs or
890 emphased CDs with different filter curves. E.g. to store music on vinyl the
891 signal has to be altered by a filter first to even out the disadvantages of
892 this recording medium.
893 Once the material is played back the inverse filter has to be applied to
894 restore the distortion of the frequency response.
895
896 The filter accepts the following options:
897
898 @table @option
899 @item level_in
900 Set input gain.
901
902 @item level_out
903 Set output gain.
904
905 @item mode
906 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
907 use @code{production} mode. Default is @code{reproduction} mode.
908
909 @item type
910 Set filter type. Selects medium. Can be one of the following:
911
912 @table @option
913 @item col
914 select Columbia.
915 @item emi
916 select EMI.
917 @item bsi
918 select BSI (78RPM).
919 @item riaa
920 select RIAA.
921 @item cd
922 select Compact Disc (CD).
923 @item 50fm
924 select 50µs (FM).
925 @item 75fm
926 select 75µs (FM).
927 @item 50kf
928 select 50µs (FM-KF).
929 @item 75kf
930 select 75µs (FM-KF).
931 @end table
932 @end table
933
934 @subsection Commands
935
936 This filter supports the all above options as @ref{commands}.
937
938 @section aeval
939
940 Modify an audio signal according to the specified expressions.
941
942 This filter accepts one or more expressions (one for each channel),
943 which are evaluated and used to modify a corresponding audio signal.
944
945 It accepts the following parameters:
946
947 @table @option
948 @item exprs
949 Set the '|'-separated expressions list for each separate channel. If
950 the number of input channels is greater than the number of
951 expressions, the last specified expression is used for the remaining
952 output channels.
953
954 @item channel_layout, c
955 Set output channel layout. If not specified, the channel layout is
956 specified by the number of expressions. If set to @samp{same}, it will
957 use by default the same input channel layout.
958 @end table
959
960 Each expression in @var{exprs} can contain the following constants and functions:
961
962 @table @option
963 @item ch
964 channel number of the current expression
965
966 @item n
967 number of the evaluated sample, starting from 0
968
969 @item s
970 sample rate
971
972 @item t
973 time of the evaluated sample expressed in seconds
974
975 @item nb_in_channels
976 @item nb_out_channels
977 input and output number of channels
978
979 @item val(CH)
980 the value of input channel with number @var{CH}
981 @end table
982
983 Note: this filter is slow. For faster processing you should use a
984 dedicated filter.
985
986 @subsection Examples
987
988 @itemize
989 @item
990 Half volume:
991 @example
992 aeval=val(ch)/2:c=same
993 @end example
994
995 @item
996 Invert phase of the second channel:
997 @example
998 aeval=val(0)|-val(1)
999 @end example
1000 @end itemize
1001
1002 @anchor{afade}
1003 @section afade
1004
1005 Apply fade-in/out effect to input audio.
1006
1007 A description of the accepted parameters follows.
1008
1009 @table @option
1010 @item type, t
1011 Specify the effect type, can be either @code{in} for fade-in, or
1012 @code{out} for a fade-out effect. Default is @code{in}.
1013
1014 @item start_sample, ss
1015 Specify the number of the start sample for starting to apply the fade
1016 effect. Default is 0.
1017
1018 @item nb_samples, ns
1019 Specify the number of samples for which the fade effect has to last. At
1020 the end of the fade-in effect the output audio will have the same
1021 volume as the input audio, at the end of the fade-out transition
1022 the output audio will be silence. Default is 44100.
1023
1024 @item start_time, st
1025 Specify the start time of the fade effect. Default is 0.
1026 The value must be specified as a time duration; see
1027 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1028 for the accepted syntax.
1029 If set this option is used instead of @var{start_sample}.
1030
1031 @item duration, d
1032 Specify the duration of the fade effect. See
1033 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1034 for the accepted syntax.
1035 At the end of the fade-in effect the output audio will have the same
1036 volume as the input audio, at the end of the fade-out transition
1037 the output audio will be silence.
1038 By default the duration is determined by @var{nb_samples}.
1039 If set this option is used instead of @var{nb_samples}.
1040
1041 @item curve
1042 Set curve for fade transition.
1043
1044 It accepts the following values:
1045 @table @option
1046 @item tri
1047 select triangular, linear slope (default)
1048 @item qsin
1049 select quarter of sine wave
1050 @item hsin
1051 select half of sine wave
1052 @item esin
1053 select exponential sine wave
1054 @item log
1055 select logarithmic
1056 @item ipar
1057 select inverted parabola
1058 @item qua
1059 select quadratic
1060 @item cub
1061 select cubic
1062 @item squ
1063 select square root
1064 @item cbr
1065 select cubic root
1066 @item par
1067 select parabola
1068 @item exp
1069 select exponential
1070 @item iqsin
1071 select inverted quarter of sine wave
1072 @item ihsin
1073 select inverted half of sine wave
1074 @item dese
1075 select double-exponential seat
1076 @item desi
1077 select double-exponential sigmoid
1078 @item losi
1079 select logistic sigmoid
1080 @item sinc
1081 select sine cardinal function
1082 @item isinc
1083 select inverted sine cardinal function
1084 @item nofade
1085 no fade applied
1086 @end table
1087 @end table
1088
1089 @subsection Examples
1090
1091 @itemize
1092 @item
1093 Fade in first 15 seconds of audio:
1094 @example
1095 afade=t=in:ss=0:d=15
1096 @end example
1097
1098 @item
1099 Fade out last 25 seconds of a 900 seconds audio:
1100 @example
1101 afade=t=out:st=875:d=25
1102 @end example
1103 @end itemize
1104
1105 @section afftdn
1106 Denoise audio samples with FFT.
1107
1108 A description of the accepted parameters follows.
1109
1110 @table @option
1111 @item nr
1112 Set the noise reduction in dB, allowed range is 0.01 to 97.
1113 Default value is 12 dB.
1114
1115 @item nf
1116 Set the noise floor in dB, allowed range is -80 to -20.
1117 Default value is -50 dB.
1118
1119 @item nt
1120 Set the noise type.
1121
1122 It accepts the following values:
1123 @table @option
1124 @item w
1125 Select white noise.
1126
1127 @item v
1128 Select vinyl noise.
1129
1130 @item s
1131 Select shellac noise.
1132
1133 @item c
1134 Select custom noise, defined in @code{bn} option.
1135
1136 Default value is white noise.
1137 @end table
1138
1139 @item bn
1140 Set custom band noise for every one of 15 bands.
1141 Bands are separated by ' ' or '|'.
1142
1143 @item rf
1144 Set the residual floor in dB, allowed range is -80 to -20.
1145 Default value is -38 dB.
1146
1147 @item tn
1148 Enable noise tracking. By default is disabled.
1149 With this enabled, noise floor is automatically adjusted.
1150
1151 @item tr
1152 Enable residual tracking. By default is disabled.
1153
1154 @item om
1155 Set the output mode.
1156
1157 It accepts the following values:
1158 @table @option
1159 @item i
1160 Pass input unchanged.
1161
1162 @item o
1163 Pass noise filtered out.
1164
1165 @item n
1166 Pass only noise.
1167
1168 Default value is @var{o}.
1169 @end table
1170 @end table
1171
1172 @subsection Commands
1173
1174 This filter supports the following commands:
1175 @table @option
1176 @item sample_noise, sn
1177 Start or stop measuring noise profile.
1178 Syntax for the command is : "start" or "stop" string.
1179 After measuring noise profile is stopped it will be
1180 automatically applied in filtering.
1181
1182 @item noise_reduction, nr
1183 Change noise reduction. Argument is single float number.
1184 Syntax for the command is : "@var{noise_reduction}"
1185
1186 @item noise_floor, nf
1187 Change noise floor. Argument is single float number.
1188 Syntax for the command is : "@var{noise_floor}"
1189
1190 @item output_mode, om
1191 Change output mode operation.
1192 Syntax for the command is : "i", "o" or "n" string.
1193 @end table
1194
1195 @section afftfilt
1196 Apply arbitrary expressions to samples in frequency domain.
1197
1198 @table @option
1199 @item real
1200 Set frequency domain real expression for each separate channel separated
1201 by '|'. Default is "re".
1202 If the number of input channels is greater than the number of
1203 expressions, the last specified expression is used for the remaining
1204 output channels.
1205
1206 @item imag
1207 Set frequency domain imaginary expression for each separate channel
1208 separated by '|'. Default is "im".
1209
1210 Each expression in @var{real} and @var{imag} can contain the following
1211 constants and functions:
1212
1213 @table @option
1214 @item sr
1215 sample rate
1216
1217 @item b
1218 current frequency bin number
1219
1220 @item nb
1221 number of available bins
1222
1223 @item ch
1224 channel number of the current expression
1225
1226 @item chs
1227 number of channels
1228
1229 @item pts
1230 current frame pts
1231
1232 @item re
1233 current real part of frequency bin of current channel
1234
1235 @item im
1236 current imaginary part of frequency bin of current channel
1237
1238 @item real(b, ch)
1239 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1240
1241 @item imag(b, ch)
1242 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1243 @end table
1244
1245 @item win_size
1246 Set window size. Allowed range is from 16 to 131072.
1247 Default is @code{4096}
1248
1249 @item win_func
1250 Set window function. Default is @code{hann}.
1251
1252 @item overlap
1253 Set window overlap. If set to 1, the recommended overlap for selected
1254 window function will be picked. Default is @code{0.75}.
1255 @end table
1256
1257 @subsection Examples
1258
1259 @itemize
1260 @item
1261 Leave almost only low frequencies in audio:
1262 @example
1263 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1264 @end example
1265
1266 @item
1267 Apply robotize effect:
1268 @example
1269 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1270 @end example
1271
1272 @item
1273 Apply whisper effect:
1274 @example
1275 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"
1276 @end example
1277 @end itemize
1278
1279 @anchor{afir}
1280 @section afir
1281
1282 Apply an arbitrary Finite Impulse Response filter.
1283
1284 This filter is designed for applying long FIR filters,
1285 up to 60 seconds long.
1286
1287 It can be used as component for digital crossover filters,
1288 room equalization, cross talk cancellation, wavefield synthesis,
1289 auralization, ambiophonics, ambisonics and spatialization.
1290
1291 This filter uses the streams higher than first one as FIR coefficients.
1292 If the non-first stream holds a single channel, it will be used
1293 for all input channels in the first stream, otherwise
1294 the number of channels in the non-first stream must be same as
1295 the number of channels in the first stream.
1296
1297 It accepts the following parameters:
1298
1299 @table @option
1300 @item dry
1301 Set dry gain. This sets input gain.
1302
1303 @item wet
1304 Set wet gain. This sets final output gain.
1305
1306 @item length
1307 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1308
1309 @item gtype
1310 Enable applying gain measured from power of IR.
1311
1312 Set which approach to use for auto gain measurement.
1313
1314 @table @option
1315 @item none
1316 Do not apply any gain.
1317
1318 @item peak
1319 select peak gain, very conservative approach. This is default value.
1320
1321 @item dc
1322 select DC gain, limited application.
1323
1324 @item gn
1325 select gain to noise approach, this is most popular one.
1326 @end table
1327
1328 @item irgain
1329 Set gain to be applied to IR coefficients before filtering.
1330 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1331
1332 @item irfmt
1333 Set format of IR stream. Can be @code{mono} or @code{input}.
1334 Default is @code{input}.
1335
1336 @item maxir
1337 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1338 Allowed range is 0.1 to 60 seconds.
1339
1340 @item response
1341 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1342 By default it is disabled.
1343
1344 @item channel
1345 Set for which IR channel to display frequency response. By default is first channel
1346 displayed. This option is used only when @var{response} is enabled.
1347
1348 @item size
1349 Set video stream size. This option is used only when @var{response} is enabled.
1350
1351 @item rate
1352 Set video stream frame rate. This option is used only when @var{response} is enabled.
1353
1354 @item minp
1355 Set minimal partition size used for convolution. Default is @var{8192}.
1356 Allowed range is from @var{1} to @var{32768}.
1357 Lower values decreases latency at cost of higher CPU usage.
1358
1359 @item maxp
1360 Set maximal partition size used for convolution. Default is @var{8192}.
1361 Allowed range is from @var{8} to @var{32768}.
1362 Lower values may increase CPU usage.
1363
1364 @item nbirs
1365 Set number of input impulse responses streams which will be switchable at runtime.
1366 Allowed range is from @var{1} to @var{32}. Default is @var{1}.
1367
1368 @item ir
1369 Set IR stream which will be used for convolution, starting from @var{0}, should always be
1370 lower than supplied value by @code{nbirs} option. Default is @var{0}.
1371 This option can be changed at runtime via @ref{commands}.
1372 @end table
1373
1374 @subsection Examples
1375
1376 @itemize
1377 @item
1378 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1379 @example
1380 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1381 @end example
1382 @end itemize
1383
1384 @anchor{aformat}
1385 @section aformat
1386
1387 Set output format constraints for the input audio. The framework will
1388 negotiate the most appropriate format to minimize conversions.
1389
1390 It accepts the following parameters:
1391 @table @option
1392
1393 @item sample_fmts, f
1394 A '|'-separated list of requested sample formats.
1395
1396 @item sample_rates, r
1397 A '|'-separated list of requested sample rates.
1398
1399 @item channel_layouts, cl
1400 A '|'-separated list of requested channel layouts.
1401
1402 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1403 for the required syntax.
1404 @end table
1405
1406 If a parameter is omitted, all values are allowed.
1407
1408 Force the output to either unsigned 8-bit or signed 16-bit stereo
1409 @example
1410 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1411 @end example
1412
1413 @section afreqshift
1414 Apply frequency shift to input audio samples.
1415
1416 The filter accepts the following options:
1417
1418 @table @option
1419 @item shift
1420 Specify frequency shift. Allowed range is -INT_MAX to INT_MAX.
1421 Default value is 0.0.
1422
1423 @item level
1424 Set output gain applied to final output. Allowed range is from 0.0 to 1.0.
1425 Default value is 1.0.
1426 @end table
1427
1428 @subsection Commands
1429
1430 This filter supports the all above options as @ref{commands}.
1431
1432 @section agate
1433
1434 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1435 processing reduces disturbing noise between useful signals.
1436
1437 Gating is done by detecting the volume below a chosen level @var{threshold}
1438 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1439 floor is set via @var{range}. Because an exact manipulation of the signal
1440 would cause distortion of the waveform the reduction can be levelled over
1441 time. This is done by setting @var{attack} and @var{release}.
1442
1443 @var{attack} determines how long the signal has to fall below the threshold
1444 before any reduction will occur and @var{release} sets the time the signal
1445 has to rise above the threshold to reduce the reduction again.
1446 Shorter signals than the chosen attack time will be left untouched.
1447
1448 @table @option
1449 @item level_in
1450 Set input level before filtering.
1451 Default is 1. Allowed range is from 0.015625 to 64.
1452
1453 @item mode
1454 Set the mode of operation. Can be @code{upward} or @code{downward}.
1455 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1456 will be amplified, expanding dynamic range in upward direction.
1457 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1458
1459 @item range
1460 Set the level of gain reduction when the signal is below the threshold.
1461 Default is 0.06125. Allowed range is from 0 to 1.
1462 Setting this to 0 disables reduction and then filter behaves like expander.
1463
1464 @item threshold
1465 If a signal rises above this level the gain reduction is released.
1466 Default is 0.125. Allowed range is from 0 to 1.
1467
1468 @item ratio
1469 Set a ratio by which the signal is reduced.
1470 Default is 2. Allowed range is from 1 to 9000.
1471
1472 @item attack
1473 Amount of milliseconds the signal has to rise above the threshold before gain
1474 reduction stops.
1475 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1476
1477 @item release
1478 Amount of milliseconds the signal has to fall below the threshold before the
1479 reduction is increased again. Default is 250 milliseconds.
1480 Allowed range is from 0.01 to 9000.
1481
1482 @item makeup
1483 Set amount of amplification of signal after processing.
1484 Default is 1. Allowed range is from 1 to 64.
1485
1486 @item knee
1487 Curve the sharp knee around the threshold to enter gain reduction more softly.
1488 Default is 2.828427125. Allowed range is from 1 to 8.
1489
1490 @item detection
1491 Choose if exact signal should be taken for detection or an RMS like one.
1492 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1493
1494 @item link
1495 Choose if the average level between all channels or the louder channel affects
1496 the reduction.
1497 Default is @code{average}. Can be @code{average} or @code{maximum}.
1498 @end table
1499
1500 @subsection Commands
1501
1502 This filter supports the all above options as @ref{commands}.
1503
1504 @section aiir
1505
1506 Apply an arbitrary Infinite Impulse Response filter.
1507
1508 It accepts the following parameters:
1509
1510 @table @option
1511 @item zeros, z
1512 Set B/numerator/zeros/reflection coefficients.
1513
1514 @item poles, p
1515 Set A/denominator/poles/ladder coefficients.
1516
1517 @item gains, k
1518 Set channels gains.
1519
1520 @item dry_gain
1521 Set input gain.
1522
1523 @item wet_gain
1524 Set output gain.
1525
1526 @item format, f
1527 Set coefficients format.
1528
1529 @table @samp
1530 @item ll
1531 lattice-ladder function
1532 @item sf
1533 analog transfer function
1534 @item tf
1535 digital transfer function
1536 @item zp
1537 Z-plane zeros/poles, cartesian (default)
1538 @item pr
1539 Z-plane zeros/poles, polar radians
1540 @item pd
1541 Z-plane zeros/poles, polar degrees
1542 @item sp
1543 S-plane zeros/poles
1544 @end table
1545
1546 @item process, r
1547 Set type of processing.
1548
1549 @table @samp
1550 @item d
1551 direct processing
1552 @item s
1553 serial processing
1554 @item p
1555 parallel processing
1556 @end table
1557
1558 @item precision, e
1559 Set filtering precision.
1560
1561 @table @samp
1562 @item dbl
1563 double-precision floating-point (default)
1564 @item flt
1565 single-precision floating-point
1566 @item i32
1567 32-bit integers
1568 @item i16
1569 16-bit integers
1570 @end table
1571
1572 @item normalize, n
1573 Normalize filter coefficients, by default is enabled.
1574 Enabling it will normalize magnitude response at DC to 0dB.
1575
1576 @item mix
1577 How much to use filtered signal in output. Default is 1.
1578 Range is between 0 and 1.
1579
1580 @item response
1581 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1582 By default it is disabled.
1583
1584 @item channel
1585 Set for which IR channel to display frequency response. By default is first channel
1586 displayed. This option is used only when @var{response} is enabled.
1587
1588 @item size
1589 Set video stream size. This option is used only when @var{response} is enabled.
1590 @end table
1591
1592 Coefficients in @code{tf} and @code{sf} format are separated by spaces and are in ascending
1593 order.
1594
1595 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1596 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1597 imaginary unit.
1598
1599 Different coefficients and gains can be provided for every channel, in such case
1600 use '|' to separate coefficients or gains. Last provided coefficients will be
1601 used for all remaining channels.
1602
1603 @subsection Examples
1604
1605 @itemize
1606 @item
1607 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1608 @example
1609 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
1610 @end example
1611
1612 @item
1613 Same as above but in @code{zp} format:
1614 @example
1615 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
1616 @end example
1617
1618 @item
1619 Apply 3-rd order analog normalized Butterworth low-pass filter, using analog transfer function format:
1620 @example
1621 aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
1622 @end example
1623 @end itemize
1624
1625 @section alimiter
1626
1627 The limiter prevents an input signal from rising over a desired threshold.
1628 This limiter uses lookahead technology to prevent your signal from distorting.
1629 It means that there is a small delay after the signal is processed. Keep in mind
1630 that the delay it produces is the attack time you set.
1631
1632 The filter accepts the following options:
1633
1634 @table @option
1635 @item level_in
1636 Set input gain. Default is 1.
1637
1638 @item level_out
1639 Set output gain. Default is 1.
1640
1641 @item limit
1642 Don't let signals above this level pass the limiter. Default is 1.
1643
1644 @item attack
1645 The limiter will reach its attenuation level in this amount of time in
1646 milliseconds. Default is 5 milliseconds.
1647
1648 @item release
1649 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1650 Default is 50 milliseconds.
1651
1652 @item asc
1653 When gain reduction is always needed ASC takes care of releasing to an
1654 average reduction level rather than reaching a reduction of 0 in the release
1655 time.
1656
1657 @item asc_level
1658 Select how much the release time is affected by ASC, 0 means nearly no changes
1659 in release time while 1 produces higher release times.
1660
1661 @item level
1662 Auto level output signal. Default is enabled.
1663 This normalizes audio back to 0dB if enabled.
1664 @end table
1665
1666 Depending on picked setting it is recommended to upsample input 2x or 4x times
1667 with @ref{aresample} before applying this filter.
1668
1669 @section allpass
1670
1671 Apply a two-pole all-pass filter with central frequency (in Hz)
1672 @var{frequency}, and filter-width @var{width}.
1673 An all-pass filter changes the audio's frequency to phase relationship
1674 without changing its frequency to amplitude relationship.
1675
1676 The filter accepts the following options:
1677
1678 @table @option
1679 @item frequency, f
1680 Set frequency in Hz.
1681
1682 @item width_type, t
1683 Set method to specify band-width of filter.
1684 @table @option
1685 @item h
1686 Hz
1687 @item q
1688 Q-Factor
1689 @item o
1690 octave
1691 @item s
1692 slope
1693 @item k
1694 kHz
1695 @end table
1696
1697 @item width, w
1698 Specify the band-width of a filter in width_type units.
1699
1700 @item mix, m
1701 How much to use filtered signal in output. Default is 1.
1702 Range is between 0 and 1.
1703
1704 @item channels, c
1705 Specify which channels to filter, by default all available are filtered.
1706
1707 @item normalize, n
1708 Normalize biquad coefficients, by default is disabled.
1709 Enabling it will normalize magnitude response at DC to 0dB.
1710
1711 @item order, o
1712 Set the filter order, can be 1 or 2. Default is 2.
1713
1714 @item transform, a
1715 Set transform type of IIR filter.
1716 @table @option
1717 @item di
1718 @item dii
1719 @item tdii
1720 @item latt
1721 @end table
1722
1723 @item precision, r
1724 Set precison of filtering.
1725 @table @option
1726 @item auto
1727 Pick automatic sample format depending on surround filters.
1728 @item s16
1729 Always use signed 16-bit.
1730 @item s32
1731 Always use signed 32-bit.
1732 @item f32
1733 Always use float 32-bit.
1734 @item f64
1735 Always use float 64-bit.
1736 @end table
1737 @end table
1738
1739 @subsection Commands
1740
1741 This filter supports the following commands:
1742 @table @option
1743 @item frequency, f
1744 Change allpass frequency.
1745 Syntax for the command is : "@var{frequency}"
1746
1747 @item width_type, t
1748 Change allpass width_type.
1749 Syntax for the command is : "@var{width_type}"
1750
1751 @item width, w
1752 Change allpass width.
1753 Syntax for the command is : "@var{width}"
1754
1755 @item mix, m
1756 Change allpass mix.
1757 Syntax for the command is : "@var{mix}"
1758 @end table
1759
1760 @section aloop
1761
1762 Loop audio samples.
1763
1764 The filter accepts the following options:
1765
1766 @table @option
1767 @item loop
1768 Set the number of loops. Setting this value to -1 will result in infinite loops.
1769 Default is 0.
1770
1771 @item size
1772 Set maximal number of samples. Default is 0.
1773
1774 @item start
1775 Set first sample of loop. Default is 0.
1776 @end table
1777
1778 @anchor{amerge}
1779 @section amerge
1780
1781 Merge two or more audio streams into a single multi-channel stream.
1782
1783 The filter accepts the following options:
1784
1785 @table @option
1786
1787 @item inputs
1788 Set the number of inputs. Default is 2.
1789
1790 @end table
1791
1792 If the channel layouts of the inputs are disjoint, and therefore compatible,
1793 the channel layout of the output will be set accordingly and the channels
1794 will be reordered as necessary. If the channel layouts of the inputs are not
1795 disjoint, the output will have all the channels of the first input then all
1796 the channels of the second input, in that order, and the channel layout of
1797 the output will be the default value corresponding to the total number of
1798 channels.
1799
1800 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1801 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1802 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1803 first input, b1 is the first channel of the second input).
1804
1805 On the other hand, if both input are in stereo, the output channels will be
1806 in the default order: a1, a2, b1, b2, and the channel layout will be
1807 arbitrarily set to 4.0, which may or may not be the expected value.
1808
1809 All inputs must have the same sample rate, and format.
1810
1811 If inputs do not have the same duration, the output will stop with the
1812 shortest.
1813
1814 @subsection Examples
1815
1816 @itemize
1817 @item
1818 Merge two mono files into a stereo stream:
1819 @example
1820 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1821 @end example
1822
1823 @item
1824 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1825 @example
1826 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
1827 @end example
1828 @end itemize
1829
1830 @section amix
1831
1832 Mixes multiple audio inputs into a single output.
1833
1834 Note that this filter only supports float samples (the @var{amerge}
1835 and @var{pan} audio filters support many formats). If the @var{amix}
1836 input has integer samples then @ref{aresample} will be automatically
1837 inserted to perform the conversion to float samples.
1838
1839 For example
1840 @example
1841 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1842 @end example
1843 will mix 3 input audio streams to a single output with the same duration as the
1844 first input and a dropout transition time of 3 seconds.
1845
1846 It accepts the following parameters:
1847 @table @option
1848
1849 @item inputs
1850 The number of inputs. If unspecified, it defaults to 2.
1851
1852 @item duration
1853 How to determine the end-of-stream.
1854 @table @option
1855
1856 @item longest
1857 The duration of the longest input. (default)
1858
1859 @item shortest
1860 The duration of the shortest input.
1861
1862 @item first
1863 The duration of the first input.
1864
1865 @end table
1866
1867 @item dropout_transition
1868 The transition time, in seconds, for volume renormalization when an input
1869 stream ends. The default value is 2 seconds.
1870
1871 @item weights
1872 Specify weight of each input audio stream as sequence.
1873 Each weight is separated by space. By default all inputs have same weight.
1874 @end table
1875
1876 @subsection Commands
1877
1878 This filter supports the following commands:
1879 @table @option
1880 @item weights
1881 Syntax is same as option with same name.
1882 @end table
1883
1884 @section amultiply
1885
1886 Multiply first audio stream with second audio stream and store result
1887 in output audio stream. Multiplication is done by multiplying each
1888 sample from first stream with sample at same position from second stream.
1889
1890 With this element-wise multiplication one can create amplitude fades and
1891 amplitude modulations.
1892
1893 @section anequalizer
1894
1895 High-order parametric multiband equalizer for each channel.
1896
1897 It accepts the following parameters:
1898 @table @option
1899 @item params
1900
1901 This option string is in format:
1902 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1903 Each equalizer band is separated by '|'.
1904
1905 @table @option
1906 @item chn
1907 Set channel number to which equalization will be applied.
1908 If input doesn't have that channel the entry is ignored.
1909
1910 @item f
1911 Set central frequency for band.
1912 If input doesn't have that frequency the entry is ignored.
1913
1914 @item w
1915 Set band width in Hertz.
1916
1917 @item g
1918 Set band gain in dB.
1919
1920 @item t
1921 Set filter type for band, optional, can be:
1922
1923 @table @samp
1924 @item 0
1925 Butterworth, this is default.
1926
1927 @item 1
1928 Chebyshev type 1.
1929
1930 @item 2
1931 Chebyshev type 2.
1932 @end table
1933 @end table
1934
1935 @item curves
1936 With this option activated frequency response of anequalizer is displayed
1937 in video stream.
1938
1939 @item size
1940 Set video stream size. Only useful if curves option is activated.
1941
1942 @item mgain
1943 Set max gain that will be displayed. Only useful if curves option is activated.
1944 Setting this to a reasonable value makes it possible to display gain which is derived from
1945 neighbour bands which are too close to each other and thus produce higher gain
1946 when both are activated.
1947
1948 @item fscale
1949 Set frequency scale used to draw frequency response in video output.
1950 Can be linear or logarithmic. Default is logarithmic.
1951
1952 @item colors
1953 Set color for each channel curve which is going to be displayed in video stream.
1954 This is list of color names separated by space or by '|'.
1955 Unrecognised or missing colors will be replaced by white color.
1956 @end table
1957
1958 @subsection Examples
1959
1960 @itemize
1961 @item
1962 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1963 for first 2 channels using Chebyshev type 1 filter:
1964 @example
1965 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1966 @end example
1967 @end itemize
1968
1969 @subsection Commands
1970
1971 This filter supports the following commands:
1972 @table @option
1973 @item change
1974 Alter existing filter parameters.
1975 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1976
1977 @var{fN} is existing filter number, starting from 0, if no such filter is available
1978 error is returned.
1979 @var{freq} set new frequency parameter.
1980 @var{width} set new width parameter in Hertz.
1981 @var{gain} set new gain parameter in dB.
1982
1983 Full filter invocation with asendcmd may look like this:
1984 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1985 @end table
1986
1987 @section anlmdn
1988
1989 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1990
1991 Each sample is adjusted by looking for other samples with similar contexts. This
1992 context similarity is defined by comparing their surrounding patches of size
1993 @option{p}. Patches are searched in an area of @option{r} around the sample.
1994
1995 The filter accepts the following options:
1996
1997 @table @option
1998 @item s
1999 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
2000
2001 @item p
2002 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
2003 Default value is 2 milliseconds.
2004
2005 @item r
2006 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
2007 Default value is 6 milliseconds.
2008
2009 @item o
2010 Set the output mode.
2011
2012 It accepts the following values:
2013 @table @option
2014 @item i
2015 Pass input unchanged.
2016
2017 @item o
2018 Pass noise filtered out.
2019
2020 @item n
2021 Pass only noise.
2022
2023 Default value is @var{o}.
2024 @end table
2025
2026 @item m
2027 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
2028 @end table
2029
2030 @subsection Commands
2031
2032 This filter supports the all above options as @ref{commands}.
2033
2034 @section anlms
2035 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
2036
2037 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
2038 relate to producing the least mean square of the error signal (difference between the desired,
2039 2nd input audio stream and the actual signal, the 1st input audio stream).
2040
2041 A description of the accepted options follows.
2042
2043 @table @option
2044 @item order
2045 Set filter order.
2046
2047 @item mu
2048 Set filter mu.
2049
2050 @item eps
2051 Set the filter eps.
2052
2053 @item leakage
2054 Set the filter leakage.
2055
2056 @item out_mode
2057 It accepts the following values:
2058 @table @option
2059 @item i
2060 Pass the 1st input.
2061
2062 @item d
2063 Pass the 2nd input.
2064
2065 @item o
2066 Pass filtered samples.
2067
2068 @item n
2069 Pass difference between desired and filtered samples.
2070
2071 Default value is @var{o}.
2072 @end table
2073 @end table
2074
2075 @subsection Examples
2076
2077 @itemize
2078 @item
2079 One of many usages of this filter is noise reduction, input audio is filtered
2080 with same samples that are delayed by fixed amount, one such example for stereo audio is:
2081 @example
2082 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
2083 @end example
2084 @end itemize
2085
2086 @subsection Commands
2087
2088 This filter supports the same commands as options, excluding option @code{order}.
2089
2090 @section anull
2091
2092 Pass the audio source unchanged to the output.
2093
2094 @section apad
2095
2096 Pad the end of an audio stream with silence.
2097
2098 This can be used together with @command{ffmpeg} @option{-shortest} to
2099 extend audio streams to the same length as the video stream.
2100
2101 A description of the accepted options follows.
2102
2103 @table @option
2104 @item packet_size
2105 Set silence packet size. Default value is 4096.
2106
2107 @item pad_len
2108 Set the number of samples of silence to add to the end. After the
2109 value is reached, the stream is terminated. This option is mutually
2110 exclusive with @option{whole_len}.
2111
2112 @item whole_len
2113 Set the minimum total number of samples in the output audio stream. If
2114 the value is longer than the input audio length, silence is added to
2115 the end, until the value is reached. This option is mutually exclusive
2116 with @option{pad_len}.
2117
2118 @item pad_dur
2119 Specify the duration of samples of silence to add. See
2120 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2121 for the accepted syntax. Used only if set to non-zero value.
2122
2123 @item whole_dur
2124 Specify the minimum total duration in the output audio stream. See
2125 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2126 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
2127 the input audio length, silence is added to the end, until the value is reached.
2128 This option is mutually exclusive with @option{pad_dur}
2129 @end table
2130
2131 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
2132 nor @option{whole_dur} option is set, the filter will add silence to the end of
2133 the input stream indefinitely.
2134
2135 @subsection Examples
2136
2137 @itemize
2138 @item
2139 Add 1024 samples of silence to the end of the input:
2140 @example
2141 apad=pad_len=1024
2142 @end example
2143
2144 @item
2145 Make sure the audio output will contain at least 10000 samples, pad
2146 the input with silence if required:
2147 @example
2148 apad=whole_len=10000
2149 @end example
2150
2151 @item
2152 Use @command{ffmpeg} to pad the audio input with silence, so that the
2153 video stream will always result the shortest and will be converted
2154 until the end in the output file when using the @option{shortest}
2155 option:
2156 @example
2157 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
2158 @end example
2159 @end itemize
2160
2161 @section aphaser
2162 Add a phasing effect to the input audio.
2163
2164 A phaser filter creates series of peaks and troughs in the frequency spectrum.
2165 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
2166
2167 A description of the accepted parameters follows.
2168
2169 @table @option
2170 @item in_gain
2171 Set input gain. Default is 0.4.
2172
2173 @item out_gain
2174 Set output gain. Default is 0.74
2175
2176 @item delay
2177 Set delay in milliseconds. Default is 3.0.
2178
2179 @item decay
2180 Set decay. Default is 0.4.
2181
2182 @item speed
2183 Set modulation speed in Hz. Default is 0.5.
2184
2185 @item type
2186 Set modulation type. Default is triangular.
2187
2188 It accepts the following values:
2189 @table @samp
2190 @item triangular, t
2191 @item sinusoidal, s
2192 @end table
2193 @end table
2194
2195 @section aphaseshift
2196 Apply phase shift to input audio samples.
2197
2198 The filter accepts the following options:
2199
2200 @table @option
2201 @item shift
2202 Specify phase shift. Allowed range is from -1.0 to 1.0.
2203 Default value is 0.0.
2204
2205 @item level
2206 Set output gain applied to final output. Allowed range is from 0.0 to 1.0.
2207 Default value is 1.0.
2208 @end table
2209
2210 @subsection Commands
2211
2212 This filter supports the all above options as @ref{commands}.
2213
2214 @section apulsator
2215
2216 Audio pulsator is something between an autopanner and a tremolo.
2217 But it can produce funny stereo effects as well. Pulsator changes the volume
2218 of the left and right channel based on a LFO (low frequency oscillator) with
2219 different waveforms and shifted phases.
2220 This filter have the ability to define an offset between left and right
2221 channel. An offset of 0 means that both LFO shapes match each other.
2222 The left and right channel are altered equally - a conventional tremolo.
2223 An offset of 50% means that the shape of the right channel is exactly shifted
2224 in phase (or moved backwards about half of the frequency) - pulsator acts as
2225 an autopanner. At 1 both curves match again. Every setting in between moves the
2226 phase shift gapless between all stages and produces some "bypassing" sounds with
2227 sine and triangle waveforms. The more you set the offset near 1 (starting from
2228 the 0.5) the faster the signal passes from the left to the right speaker.
2229
2230 The filter accepts the following options:
2231
2232 @table @option
2233 @item level_in
2234 Set input gain. By default it is 1. Range is [0.015625 - 64].
2235
2236 @item level_out
2237 Set output gain. By default it is 1. Range is [0.015625 - 64].
2238
2239 @item mode
2240 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2241 sawup or sawdown. Default is sine.
2242
2243 @item amount
2244 Set modulation. Define how much of original signal is affected by the LFO.
2245
2246 @item offset_l
2247 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2248
2249 @item offset_r
2250 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2251
2252 @item width
2253 Set pulse width. Default is 1. Allowed range is [0 - 2].
2254
2255 @item timing
2256 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2257
2258 @item bpm
2259 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2260 is set to bpm.
2261
2262 @item ms
2263 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2264 is set to ms.
2265
2266 @item hz
2267 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2268 if timing is set to hz.
2269 @end table
2270
2271 @anchor{aresample}
2272 @section aresample
2273
2274 Resample the input audio to the specified parameters, using the
2275 libswresample library. If none are specified then the filter will
2276 automatically convert between its input and output.
2277
2278 This filter is also able to stretch/squeeze the audio data to make it match
2279 the timestamps or to inject silence / cut out audio to make it match the
2280 timestamps, do a combination of both or do neither.
2281
2282 The filter accepts the syntax
2283 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2284 expresses a sample rate and @var{resampler_options} is a list of
2285 @var{key}=@var{value} pairs, separated by ":". See the
2286 @ref{Resampler Options,,"Resampler Options" section in the
2287 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2288 for the complete list of supported options.
2289
2290 @subsection Examples
2291
2292 @itemize
2293 @item
2294 Resample the input audio to 44100Hz:
2295 @example
2296 aresample=44100
2297 @end example
2298
2299 @item
2300 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2301 samples per second compensation:
2302 @example
2303 aresample=async=1000
2304 @end example
2305 @end itemize
2306
2307 @section areverse
2308
2309 Reverse an audio clip.
2310
2311 Warning: This filter requires memory to buffer the entire clip, so trimming
2312 is suggested.
2313
2314 @subsection Examples
2315
2316 @itemize
2317 @item
2318 Take the first 5 seconds of a clip, and reverse it.
2319 @example
2320 atrim=end=5,areverse
2321 @end example
2322 @end itemize
2323
2324 @section arnndn
2325
2326 Reduce noise from speech using Recurrent Neural Networks.
2327
2328 This filter accepts the following options:
2329
2330 @table @option
2331 @item model, m
2332 Set train model file to load. This option is always required.
2333
2334 @item mix
2335 Set how much to mix filtered samples into final output.
2336 Allowed range is from -1 to 1. Default value is 1.
2337 Negative values are special, they set how much to keep filtered noise
2338 in the final filter output. Set this option to -1 to hear actual
2339 noise removed from input signal.
2340 @end table
2341
2342 @section asetnsamples
2343
2344 Set the number of samples per each output audio frame.
2345
2346 The last output packet may contain a different number of samples, as
2347 the filter will flush all the remaining samples when the input audio
2348 signals its end.
2349
2350 The filter accepts the following options:
2351
2352 @table @option
2353
2354 @item nb_out_samples, n
2355 Set the number of frames per each output audio frame. The number is
2356 intended as the number of samples @emph{per each channel}.
2357 Default value is 1024.
2358
2359 @item pad, p
2360 If set to 1, the filter will pad the last audio frame with zeroes, so
2361 that the last frame will contain the same number of samples as the
2362 previous ones. Default value is 1.
2363 @end table
2364
2365 For example, to set the number of per-frame samples to 1234 and
2366 disable padding for the last frame, use:
2367 @example
2368 asetnsamples=n=1234:p=0
2369 @end example
2370
2371 @section asetrate
2372
2373 Set the sample rate without altering the PCM data.
2374 This will result in a change of speed and pitch.
2375
2376 The filter accepts the following options:
2377
2378 @table @option
2379 @item sample_rate, r
2380 Set the output sample rate. Default is 44100 Hz.
2381 @end table
2382
2383 @section ashowinfo
2384
2385 Show a line containing various information for each input audio frame.
2386 The input audio is not modified.
2387
2388 The shown line contains a sequence of key/value pairs of the form
2389 @var{key}:@var{value}.
2390
2391 The following values are shown in the output:
2392
2393 @table @option
2394 @item n
2395 The (sequential) number of the input frame, starting from 0.
2396
2397 @item pts
2398 The presentation timestamp of the input frame, in time base units; the time base
2399 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2400
2401 @item pts_time
2402 The presentation timestamp of the input frame in seconds.
2403
2404 @item pos
2405 position of the frame in the input stream, -1 if this information in
2406 unavailable and/or meaningless (for example in case of synthetic audio)
2407
2408 @item fmt
2409 The sample format.
2410
2411 @item chlayout
2412 The channel layout.
2413
2414 @item rate
2415 The sample rate for the audio frame.
2416
2417 @item nb_samples
2418 The number of samples (per channel) in the frame.
2419
2420 @item checksum
2421 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2422 audio, the data is treated as if all the planes were concatenated.
2423
2424 @item plane_checksums
2425 A list of Adler-32 checksums for each data plane.
2426 @end table
2427
2428 @section asoftclip
2429 Apply audio soft clipping.
2430
2431 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2432 along a smooth curve, rather than the abrupt shape of hard-clipping.
2433
2434 This filter accepts the following options:
2435
2436 @table @option
2437 @item type
2438 Set type of soft-clipping.
2439
2440 It accepts the following values:
2441 @table @option
2442 @item hard
2443 @item tanh
2444 @item atan
2445 @item cubic
2446 @item exp
2447 @item alg
2448 @item quintic
2449 @item sin
2450 @item erf
2451 @end table
2452
2453 @item param
2454 Set additional parameter which controls sigmoid function.
2455
2456 @item oversample
2457 Set oversampling factor.
2458 @end table
2459
2460 @subsection Commands
2461
2462 This filter supports the all above options as @ref{commands}.
2463
2464 @section asr
2465 Automatic Speech Recognition
2466
2467 This filter uses PocketSphinx for speech recognition. To enable
2468 compilation of this filter, you need to configure FFmpeg with
2469 @code{--enable-pocketsphinx}.
2470
2471 It accepts the following options:
2472
2473 @table @option
2474 @item rate
2475 Set sampling rate of input audio. Defaults is @code{16000}.
2476 This need to match speech models, otherwise one will get poor results.
2477
2478 @item hmm
2479 Set dictionary containing acoustic model files.
2480
2481 @item dict
2482 Set pronunciation dictionary.
2483
2484 @item lm
2485 Set language model file.
2486
2487 @item lmctl
2488 Set language model set.
2489
2490 @item lmname
2491 Set which language model to use.
2492
2493 @item logfn
2494 Set output for log messages.
2495 @end table
2496
2497 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2498
2499 @anchor{astats}
2500 @section astats
2501
2502 Display time domain statistical information about the audio channels.
2503 Statistics are calculated and displayed for each audio channel and,
2504 where applicable, an overall figure is also given.
2505
2506 It accepts the following option:
2507 @table @option
2508 @item length
2509 Short window length in seconds, used for peak and trough RMS measurement.
2510 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2511
2512 @item metadata
2513
2514 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2515 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2516 disabled.
2517
2518 Available keys for each channel are:
2519 DC_offset
2520 Min_level
2521 Max_level
2522 Min_difference
2523 Max_difference
2524 Mean_difference
2525 RMS_difference
2526 Peak_level
2527 RMS_peak
2528 RMS_trough
2529 Crest_factor
2530 Flat_factor
2531 Peak_count
2532 Noise_floor
2533 Noise_floor_count
2534 Bit_depth
2535 Dynamic_range
2536 Zero_crossings
2537 Zero_crossings_rate
2538 Number_of_NaNs
2539 Number_of_Infs
2540 Number_of_denormals
2541
2542 and for Overall:
2543 DC_offset
2544 Min_level
2545 Max_level
2546 Min_difference
2547 Max_difference
2548 Mean_difference
2549 RMS_difference
2550 Peak_level
2551 RMS_level
2552 RMS_peak
2553 RMS_trough
2554 Flat_factor
2555 Peak_count
2556 Noise_floor
2557 Noise_floor_count
2558 Bit_depth
2559 Number_of_samples
2560 Number_of_NaNs
2561 Number_of_Infs
2562 Number_of_denormals
2563
2564 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2565 this @code{lavfi.astats.Overall.Peak_count}.
2566
2567 For description what each key means read below.
2568
2569 @item reset
2570 Set number of frame after which stats are going to be recalculated.
2571 Default is disabled.
2572
2573 @item measure_perchannel
2574 Select the entries which need to be measured per channel. The metadata keys can
2575 be used as flags, default is @option{all} which measures everything.
2576 @option{none} disables all per channel measurement.
2577
2578 @item measure_overall
2579 Select the entries which need to be measured overall. The metadata keys can
2580 be used as flags, default is @option{all} which measures everything.
2581 @option{none} disables all overall measurement.
2582
2583 @end table
2584
2585 A description of each shown parameter follows:
2586
2587 @table @option
2588 @item DC offset
2589 Mean amplitude displacement from zero.
2590
2591 @item Min level
2592 Minimal sample level.
2593
2594 @item Max level
2595 Maximal sample level.
2596
2597 @item Min difference
2598 Minimal difference between two consecutive samples.
2599
2600 @item Max difference
2601 Maximal difference between two consecutive samples.
2602
2603 @item Mean difference
2604 Mean difference between two consecutive samples.
2605 The average of each difference between two consecutive samples.
2606
2607 @item RMS difference
2608 Root Mean Square difference between two consecutive samples.
2609
2610 @item Peak level dB
2611 @item RMS level dB
2612 Standard peak and RMS level measured in dBFS.
2613
2614 @item RMS peak dB
2615 @item RMS trough dB
2616 Peak and trough values for RMS level measured over a short window.
2617
2618 @item Crest factor
2619 Standard ratio of peak to RMS level (note: not in dB).
2620
2621 @item Flat factor
2622 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2623 (i.e. either @var{Min level} or @var{Max level}).
2624
2625 @item Peak count
2626 Number of occasions (not the number of samples) that the signal attained either
2627 @var{Min level} or @var{Max level}.
2628
2629 @item Noise floor dB
2630 Minimum local peak measured in dBFS over a short window.
2631
2632 @item Noise floor count
2633 Number of occasions (not the number of samples) that the signal attained
2634 @var{Noise floor}.
2635
2636 @item Bit depth
2637 Overall bit depth of audio. Number of bits used for each sample.
2638
2639 @item Dynamic range
2640 Measured dynamic range of audio in dB.
2641
2642 @item Zero crossings
2643 Number of points where the waveform crosses the zero level axis.
2644
2645 @item Zero crossings rate
2646 Rate of Zero crossings and number of audio samples.
2647 @end table
2648
2649 @section asubboost
2650 Boost subwoofer frequencies.
2651
2652 The filter accepts the following options:
2653
2654 @table @option
2655 @item dry
2656 Set dry gain, how much of original signal is kept. Allowed range is from 0 to 1.
2657 Default value is 0.7.
2658
2659 @item wet
2660 Set wet gain, how much of filtered signal is kept. Allowed range is from 0 to 1.
2661 Default value is 0.7.
2662
2663 @item decay
2664 Set delay line decay gain value. Allowed range is from 0 to 1.
2665 Default value is 0.7.
2666
2667 @item feedback
2668 Set delay line feedback gain value. Allowed range is from 0 to 1.
2669 Default value is 0.9.
2670
2671 @item cutoff
2672 Set cutoff frequency in Hertz. Allowed range is 50 to 900.
2673 Default value is 100.
2674
2675 @item slope
2676 Set slope amount for cutoff frequency. Allowed range is 0.0001 to 1.
2677 Default value is 0.5.
2678
2679 @item delay
2680 Set delay. Allowed range is from 1 to 100.
2681 Default value is 20.
2682 @end table
2683
2684 @subsection Commands
2685
2686 This filter supports the all above options as @ref{commands}.
2687
2688 @section asubcut
2689 Cut subwoofer frequencies.
2690
2691 This filter allows to set custom, steeper
2692 roll off than highpass filter, and thus is able to more attenuate
2693 frequency content in stop-band.
2694
2695 The filter accepts the following options:
2696
2697 @table @option
2698 @item cutoff
2699 Set cutoff frequency in Hertz. Allowed range is 2 to 200.
2700 Default value is 20.
2701
2702 @item order
2703 Set filter order. Available values are from 3 to 20.
2704 Default value is 10.
2705
2706 @item level
2707 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
2708 @end table
2709
2710 @subsection Commands
2711
2712 This filter supports the all above options as @ref{commands}.
2713
2714 @section asupercut
2715 Cut super frequencies.
2716
2717 The filter accepts the following options:
2718
2719 @table @option
2720 @item cutoff
2721 Set cutoff frequency in Hertz. Allowed range is 20000 to 192000.
2722 Default value is 20000.
2723
2724 @item order
2725 Set filter order. Available values are from 3 to 20.
2726 Default value is 10.
2727
2728 @item level
2729 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
2730 @end table
2731
2732 @subsection Commands
2733
2734 This filter supports the all above options as @ref{commands}.
2735
2736 @section asuperpass
2737 Apply high order Butterworth band-pass filter.
2738
2739 The filter accepts the following options:
2740
2741 @table @option
2742 @item centerf
2743 Set center frequency in Hertz. Allowed range is 2 to 999999.
2744 Default value is 1000.
2745
2746 @item order
2747 Set filter order. Available values are from 4 to 20.
2748 Default value is 4.
2749
2750 @item qfactor
2751 Set Q-factor. Allowed range is from 0.01 to 100. Default value is 1.
2752
2753 @item level
2754 Set input gain level. Allowed range is from 0 to 2. Default value is 1.
2755 @end table
2756
2757 @subsection Commands
2758
2759 This filter supports the all above options as @ref{commands}.
2760
2761 @section asuperstop
2762 Apply high order Butterworth band-stop filter.
2763
2764 The filter accepts the following options:
2765
2766 @table @option
2767 @item centerf
2768 Set center frequency in Hertz. Allowed range is 2 to 999999.
2769 Default value is 1000.
2770
2771 @item order
2772 Set filter order. Available values are from 4 to 20.
2773 Default value is 4.
2774
2775 @item qfactor
2776 Set Q-factor. Allowed range is from 0.01 to 100. Default value is 1.
2777
2778 @item level
2779 Set input gain level. Allowed range is from 0 to 2. Default value is 1.
2780 @end table
2781
2782 @subsection Commands
2783
2784 This filter supports the all above options as @ref{commands}.
2785
2786 @section atempo
2787
2788 Adjust audio tempo.
2789
2790 The filter accepts exactly one parameter, the audio tempo. If not
2791 specified then the filter will assume nominal 1.0 tempo. Tempo must
2792 be in the [0.5, 100.0] range.
2793
2794 Note that tempo greater than 2 will skip some samples rather than
2795 blend them in.  If for any reason this is a concern it is always
2796 possible to daisy-chain several instances of atempo to achieve the
2797 desired product tempo.
2798
2799 @subsection Examples
2800
2801 @itemize
2802 @item
2803 Slow down audio to 80% tempo:
2804 @example
2805 atempo=0.8
2806 @end example
2807
2808 @item
2809 To speed up audio to 300% tempo:
2810 @example
2811 atempo=3
2812 @end example
2813
2814 @item
2815 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2816 @example
2817 atempo=sqrt(3),atempo=sqrt(3)
2818 @end example
2819 @end itemize
2820
2821 @subsection Commands
2822
2823 This filter supports the following commands:
2824 @table @option
2825 @item tempo
2826 Change filter tempo scale factor.
2827 Syntax for the command is : "@var{tempo}"
2828 @end table
2829
2830 @section atrim
2831
2832 Trim the input so that the output contains one continuous subpart of the input.
2833
2834 It accepts the following parameters:
2835 @table @option
2836 @item start
2837 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2838 sample with the timestamp @var{start} will be the first sample in the output.
2839
2840 @item end
2841 Specify time of the first audio sample that will be dropped, i.e. the
2842 audio sample immediately preceding the one with the timestamp @var{end} will be
2843 the last sample in the output.
2844
2845 @item start_pts
2846 Same as @var{start}, except this option sets the start timestamp in samples
2847 instead of seconds.
2848
2849 @item end_pts
2850 Same as @var{end}, except this option sets the end timestamp in samples instead
2851 of seconds.
2852
2853 @item duration
2854 The maximum duration of the output in seconds.
2855
2856 @item start_sample
2857 The number of the first sample that should be output.
2858
2859 @item end_sample
2860 The number of the first sample that should be dropped.
2861 @end table
2862
2863 @option{start}, @option{end}, and @option{duration} are expressed as time
2864 duration specifications; see
2865 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2866
2867 Note that the first two sets of the start/end options and the @option{duration}
2868 option look at the frame timestamp, while the _sample options simply count the
2869 samples that pass through the filter. So start/end_pts and start/end_sample will
2870 give different results when the timestamps are wrong, inexact or do not start at
2871 zero. Also note that this filter does not modify the timestamps. If you wish
2872 to have the output timestamps start at zero, insert the asetpts filter after the
2873 atrim filter.
2874
2875 If multiple start or end options are set, this filter tries to be greedy and
2876 keep all samples that match at least one of the specified constraints. To keep
2877 only the part that matches all the constraints at once, chain multiple atrim
2878 filters.
2879
2880 The defaults are such that all the input is kept. So it is possible to set e.g.
2881 just the end values to keep everything before the specified time.
2882
2883 Examples:
2884 @itemize
2885 @item
2886 Drop everything except the second minute of input:
2887 @example
2888 ffmpeg -i INPUT -af atrim=60:120
2889 @end example
2890
2891 @item
2892 Keep only the first 1000 samples:
2893 @example
2894 ffmpeg -i INPUT -af atrim=end_sample=1000
2895 @end example
2896
2897 @end itemize
2898
2899 @section axcorrelate
2900 Calculate normalized cross-correlation between two input audio streams.
2901
2902 Resulted samples are always between -1 and 1 inclusive.
2903 If result is 1 it means two input samples are highly correlated in that selected segment.
2904 Result 0 means they are not correlated at all.
2905 If result is -1 it means two input samples are out of phase, which means they cancel each
2906 other.
2907
2908 The filter accepts the following options:
2909
2910 @table @option
2911 @item size
2912 Set size of segment over which cross-correlation is calculated.
2913 Default is 256. Allowed range is from 2 to 131072.
2914
2915 @item algo
2916 Set algorithm for cross-correlation. Can be @code{slow} or @code{fast}.
2917 Default is @code{slow}. Fast algorithm assumes mean values over any given segment
2918 are always zero and thus need much less calculations to make.
2919 This is generally not true, but is valid for typical audio streams.
2920 @end table
2921
2922 @subsection Examples
2923
2924 @itemize
2925 @item
2926 Calculate correlation between channels in stereo audio stream:
2927 @example
2928 ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
2929 @end example
2930 @end itemize
2931
2932 @section bandpass
2933
2934 Apply a two-pole Butterworth band-pass filter with central
2935 frequency @var{frequency}, and (3dB-point) band-width width.
2936 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2937 instead of the default: constant 0dB peak gain.
2938 The filter roll off at 6dB per octave (20dB per decade).
2939
2940 The filter accepts the following options:
2941
2942 @table @option
2943 @item frequency, f
2944 Set the filter's central frequency. Default is @code{3000}.
2945
2946 @item csg
2947 Constant skirt gain if set to 1. Defaults to 0.
2948
2949 @item width_type, t
2950 Set method to specify band-width of filter.
2951 @table @option
2952 @item h
2953 Hz
2954 @item q
2955 Q-Factor
2956 @item o
2957 octave
2958 @item s
2959 slope
2960 @item k
2961 kHz
2962 @end table
2963
2964 @item width, w
2965 Specify the band-width of a filter in width_type units.
2966
2967 @item mix, m
2968 How much to use filtered signal in output. Default is 1.
2969 Range is between 0 and 1.
2970
2971 @item channels, c
2972 Specify which channels to filter, by default all available are filtered.
2973
2974 @item normalize, n
2975 Normalize biquad coefficients, by default is disabled.
2976 Enabling it will normalize magnitude response at DC to 0dB.
2977
2978 @item transform, a
2979 Set transform type of IIR filter.
2980 @table @option
2981 @item di
2982 @item dii
2983 @item tdii
2984 @item latt
2985 @end table
2986
2987 @item precision, r
2988 Set precison of filtering.
2989 @table @option
2990 @item auto
2991 Pick automatic sample format depending on surround filters.
2992 @item s16
2993 Always use signed 16-bit.
2994 @item s32
2995 Always use signed 32-bit.
2996 @item f32
2997 Always use float 32-bit.
2998 @item f64
2999 Always use float 64-bit.
3000 @end table
3001 @end table
3002
3003 @subsection Commands
3004
3005 This filter supports the following commands:
3006 @table @option
3007 @item frequency, f
3008 Change bandpass frequency.
3009 Syntax for the command is : "@var{frequency}"
3010
3011 @item width_type, t
3012 Change bandpass width_type.
3013 Syntax for the command is : "@var{width_type}"
3014
3015 @item width, w
3016 Change bandpass width.
3017 Syntax for the command is : "@var{width}"
3018
3019 @item mix, m
3020 Change bandpass mix.
3021 Syntax for the command is : "@var{mix}"
3022 @end table
3023
3024 @section bandreject
3025
3026 Apply a two-pole Butterworth band-reject filter with central
3027 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
3028 The filter roll off at 6dB per octave (20dB per decade).
3029
3030 The filter accepts the following options:
3031
3032 @table @option
3033 @item frequency, f
3034 Set the filter's central frequency. Default is @code{3000}.
3035
3036 @item width_type, t
3037 Set method to specify band-width of filter.
3038 @table @option
3039 @item h
3040 Hz
3041 @item q
3042 Q-Factor
3043 @item o
3044 octave
3045 @item s
3046 slope
3047 @item k
3048 kHz
3049 @end table
3050
3051 @item width, w
3052 Specify the band-width of a filter in width_type units.
3053
3054 @item mix, m
3055 How much to use filtered signal in output. Default is 1.
3056 Range is between 0 and 1.
3057
3058 @item channels, c
3059 Specify which channels to filter, by default all available are filtered.
3060
3061 @item normalize, n
3062 Normalize biquad coefficients, by default is disabled.
3063 Enabling it will normalize magnitude response at DC to 0dB.
3064
3065 @item transform, a
3066 Set transform type of IIR filter.
3067 @table @option
3068 @item di
3069 @item dii
3070 @item tdii
3071 @item latt
3072 @end table
3073
3074 @item precision, r
3075 Set precison of filtering.
3076 @table @option
3077 @item auto
3078 Pick automatic sample format depending on surround filters.
3079 @item s16
3080 Always use signed 16-bit.
3081 @item s32
3082 Always use signed 32-bit.
3083 @item f32
3084 Always use float 32-bit.
3085 @item f64
3086 Always use float 64-bit.
3087 @end table
3088 @end table
3089
3090 @subsection Commands
3091
3092 This filter supports the following commands:
3093 @table @option
3094 @item frequency, f
3095 Change bandreject frequency.
3096 Syntax for the command is : "@var{frequency}"
3097
3098 @item width_type, t
3099 Change bandreject width_type.
3100 Syntax for the command is : "@var{width_type}"
3101
3102 @item width, w
3103 Change bandreject width.
3104 Syntax for the command is : "@var{width}"
3105
3106 @item mix, m
3107 Change bandreject mix.
3108 Syntax for the command is : "@var{mix}"
3109 @end table
3110
3111 @section bass, lowshelf
3112
3113 Boost or cut the bass (lower) frequencies of the audio using a two-pole
3114 shelving filter with a response similar to that of a standard
3115 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
3116
3117 The filter accepts the following options:
3118
3119 @table @option
3120 @item gain, g
3121 Give the gain at 0 Hz. Its useful range is about -20
3122 (for a large cut) to +20 (for a large boost).
3123 Beware of clipping when using a positive gain.
3124
3125 @item frequency, f
3126 Set the filter's central frequency and so can be used
3127 to extend or reduce the frequency range to be boosted or cut.
3128 The default value is @code{100} Hz.
3129
3130 @item width_type, t
3131 Set method to specify band-width of filter.
3132 @table @option
3133 @item h
3134 Hz
3135 @item q
3136 Q-Factor
3137 @item o
3138 octave
3139 @item s
3140 slope
3141 @item k
3142 kHz
3143 @end table
3144
3145 @item width, w
3146 Determine how steep is the filter's shelf transition.
3147
3148 @item mix, m
3149 How much to use filtered signal in output. Default is 1.
3150 Range is between 0 and 1.
3151
3152 @item channels, c
3153 Specify which channels to filter, by default all available are filtered.
3154
3155 @item normalize, n
3156 Normalize biquad coefficients, by default is disabled.
3157 Enabling it will normalize magnitude response at DC to 0dB.
3158
3159 @item transform, a
3160 Set transform type of IIR filter.
3161 @table @option
3162 @item di
3163 @item dii
3164 @item tdii
3165 @item latt
3166 @end table
3167
3168 @item precision, r
3169 Set precison of filtering.
3170 @table @option
3171 @item auto
3172 Pick automatic sample format depending on surround filters.
3173 @item s16
3174 Always use signed 16-bit.
3175 @item s32
3176 Always use signed 32-bit.
3177 @item f32
3178 Always use float 32-bit.
3179 @item f64
3180 Always use float 64-bit.
3181 @end table
3182 @end table
3183
3184 @subsection Commands
3185
3186 This filter supports the following commands:
3187 @table @option
3188 @item frequency, f
3189 Change bass frequency.
3190 Syntax for the command is : "@var{frequency}"
3191
3192 @item width_type, t
3193 Change bass width_type.
3194 Syntax for the command is : "@var{width_type}"
3195
3196 @item width, w
3197 Change bass width.
3198 Syntax for the command is : "@var{width}"
3199
3200 @item gain, g
3201 Change bass gain.
3202 Syntax for the command is : "@var{gain}"
3203
3204 @item mix, m
3205 Change bass mix.
3206 Syntax for the command is : "@var{mix}"
3207 @end table
3208
3209 @section biquad
3210
3211 Apply a biquad IIR filter with the given coefficients.
3212 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
3213 are the numerator and denominator coefficients respectively.
3214 and @var{channels}, @var{c} specify which channels to filter, by default all
3215 available are filtered.
3216
3217 @subsection Commands
3218
3219 This filter supports the following commands:
3220 @table @option
3221 @item a0
3222 @item a1
3223 @item a2
3224 @item b0
3225 @item b1
3226 @item b2
3227 Change biquad parameter.
3228 Syntax for the command is : "@var{value}"
3229
3230 @item mix, m
3231 How much to use filtered signal in output. Default is 1.
3232 Range is between 0 and 1.
3233
3234 @item channels, c
3235 Specify which channels to filter, by default all available are filtered.
3236
3237 @item normalize, n
3238 Normalize biquad coefficients, by default is disabled.
3239 Enabling it will normalize magnitude response at DC to 0dB.
3240
3241 @item transform, a
3242 Set transform type of IIR filter.
3243 @table @option
3244 @item di
3245 @item dii
3246 @item tdii
3247 @item latt
3248 @end table
3249
3250 @item precision, r
3251 Set precison of filtering.
3252 @table @option
3253 @item auto
3254 Pick automatic sample format depending on surround filters.
3255 @item s16
3256 Always use signed 16-bit.
3257 @item s32
3258 Always use signed 32-bit.
3259 @item f32
3260 Always use float 32-bit.
3261 @item f64
3262 Always use float 64-bit.
3263 @end table
3264 @end table
3265
3266 @section bs2b
3267 Bauer stereo to binaural transformation, which improves headphone listening of
3268 stereo audio records.
3269
3270 To enable compilation of this filter you need to configure FFmpeg with
3271 @code{--enable-libbs2b}.
3272
3273 It accepts the following parameters:
3274 @table @option
3275
3276 @item profile
3277 Pre-defined crossfeed level.
3278 @table @option
3279
3280 @item default
3281 Default level (fcut=700, feed=50).
3282
3283 @item cmoy
3284 Chu Moy circuit (fcut=700, feed=60).
3285
3286 @item jmeier
3287 Jan Meier circuit (fcut=650, feed=95).
3288
3289 @end table
3290
3291 @item fcut
3292 Cut frequency (in Hz).
3293
3294 @item feed
3295 Feed level (in Hz).
3296
3297 @end table
3298
3299 @section channelmap
3300
3301 Remap input channels to new locations.
3302
3303 It accepts the following parameters:
3304 @table @option
3305 @item map
3306 Map channels from input to output. The argument is a '|'-separated list of
3307 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
3308 @var{in_channel} form. @var{in_channel} can be either the name of the input
3309 channel (e.g. FL for front left) or its index in the input channel layout.
3310 @var{out_channel} is the name of the output channel or its index in the output
3311 channel layout. If @var{out_channel} is not given then it is implicitly an
3312 index, starting with zero and increasing by one for each mapping.
3313
3314 @item channel_layout
3315 The channel layout of the output stream.
3316 @end table
3317
3318 If no mapping is present, the filter will implicitly map input channels to
3319 output channels, preserving indices.
3320
3321 @subsection Examples
3322
3323 @itemize
3324 @item
3325 For example, assuming a 5.1+downmix input MOV file,
3326 @example
3327 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
3328 @end example
3329 will create an output WAV file tagged as stereo from the downmix channels of
3330 the input.
3331
3332 @item
3333 To fix a 5.1 WAV improperly encoded in AAC's native channel order
3334 @example
3335 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
3336 @end example
3337 @end itemize
3338
3339 @section channelsplit
3340
3341 Split each channel from an input audio stream into a separate output stream.
3342
3343 It accepts the following parameters:
3344 @table @option
3345 @item channel_layout
3346 The channel layout of the input stream. The default is "stereo".
3347 @item channels
3348 A channel layout describing the channels to be extracted as separate output streams
3349 or "all" to extract each input channel as a separate stream. The default is "all".
3350
3351 Choosing channels not present in channel layout in the input will result in an error.
3352 @end table
3353
3354 @subsection Examples
3355
3356 @itemize
3357 @item
3358 For example, assuming a stereo input MP3 file,
3359 @example
3360 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
3361 @end example
3362 will create an output Matroska file with two audio streams, one containing only
3363 the left channel and the other the right channel.
3364
3365 @item
3366 Split a 5.1 WAV file into per-channel files:
3367 @example
3368 ffmpeg -i in.wav -filter_complex
3369 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
3370 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
3371 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
3372 side_right.wav
3373 @end example
3374
3375 @item
3376 Extract only LFE from a 5.1 WAV file:
3377 @example
3378 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
3379 -map '[LFE]' lfe.wav
3380 @end example
3381 @end itemize
3382
3383 @section chorus
3384 Add a chorus effect to the audio.
3385
3386 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
3387
3388 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
3389 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
3390 The modulation depth defines the range the modulated delay is played before or after
3391 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
3392 sound tuned around the original one, like in a chorus where some vocals are slightly
3393 off key.
3394
3395 It accepts the following parameters:
3396 @table @option
3397 @item in_gain
3398 Set input gain. Default is 0.4.
3399
3400 @item out_gain
3401 Set output gain. Default is 0.4.
3402
3403 @item delays
3404 Set delays. A typical delay is around 40ms to 60ms.
3405
3406 @item decays
3407 Set decays.
3408
3409 @item speeds
3410 Set speeds.
3411
3412 @item depths
3413 Set depths.
3414 @end table
3415
3416 @subsection Examples
3417
3418 @itemize
3419 @item
3420 A single delay:
3421 @example
3422 chorus=0.7:0.9:55:0.4:0.25:2
3423 @end example
3424
3425 @item
3426 Two delays:
3427 @example
3428 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
3429 @end example
3430
3431 @item
3432 Fuller sounding chorus with three delays:
3433 @example
3434 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
3435 @end example
3436 @end itemize
3437
3438 @section compand
3439 Compress or expand the audio's dynamic range.
3440
3441 It accepts the following parameters:
3442
3443 @table @option
3444
3445 @item attacks
3446 @item decays
3447 A list of times in seconds for each channel over which the instantaneous level
3448 of the input signal is averaged to determine its volume. @var{attacks} refers to
3449 increase of volume and @var{decays} refers to decrease of volume. For most
3450 situations, the attack time (response to the audio getting louder) should be
3451 shorter than the decay time, because the human ear is more sensitive to sudden
3452 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
3453 a typical value for decay is 0.8 seconds.
3454 If specified number of attacks & decays is lower than number of channels, the last
3455 set attack/decay will be used for all remaining channels.
3456
3457 @item points
3458 A list of points for the transfer function, specified in dB relative to the
3459 maximum possible signal amplitude. Each key points list must be defined using
3460 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
3461 @code{x0/y0 x1/y1 x2/y2 ....}
3462
3463 The input values must be in strictly increasing order but the transfer function
3464 does not have to be monotonically rising. The point @code{0/0} is assumed but
3465 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
3466 function are @code{-70/-70|-60/-20|1/0}.
3467
3468 @item soft-knee
3469 Set the curve radius in dB for all joints. It defaults to 0.01.
3470
3471 @item gain
3472 Set the additional gain in dB to be applied at all points on the transfer
3473 function. This allows for easy adjustment of the overall gain.
3474 It defaults to 0.
3475
3476 @item volume
3477 Set an initial volume, in dB, to be assumed for each channel when filtering
3478 starts. This permits the user to supply a nominal level initially, so that, for
3479 example, a very large gain is not applied to initial signal levels before the
3480 companding has begun to operate. A typical value for audio which is initially
3481 quiet is -90 dB. It defaults to 0.
3482
3483 @item delay
3484 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
3485 delayed before being fed to the volume adjuster. Specifying a delay
3486 approximately equal to the attack/decay times allows the filter to effectively
3487 operate in predictive rather than reactive mode. It defaults to 0.
3488
3489 @end table
3490
3491 @subsection Examples
3492
3493 @itemize
3494 @item
3495 Make music with both quiet and loud passages suitable for listening to in a
3496 noisy environment:
3497 @example
3498 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
3499 @end example
3500
3501 Another example for audio with whisper and explosion parts:
3502 @example
3503 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
3504 @end example
3505
3506 @item
3507 A noise gate for when the noise is at a lower level than the signal:
3508 @example
3509 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
3510 @end example
3511
3512 @item
3513 Here is another noise gate, this time for when the noise is at a higher level
3514 than the signal (making it, in some ways, similar to squelch):
3515 @example
3516 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3517 @end example
3518
3519 @item
3520 2:1 compression starting at -6dB:
3521 @example
3522 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3523 @end example
3524
3525 @item
3526 2:1 compression starting at -9dB:
3527 @example
3528 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3529 @end example
3530
3531 @item
3532 2:1 compression starting at -12dB:
3533 @example
3534 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3535 @end example
3536
3537 @item
3538 2:1 compression starting at -18dB:
3539 @example
3540 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3541 @end example
3542
3543 @item
3544 3:1 compression starting at -15dB:
3545 @example
3546 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3547 @end example
3548
3549 @item
3550 Compressor/Gate:
3551 @example
3552 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3553 @end example
3554
3555 @item
3556 Expander:
3557 @example
3558 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
3559 @end example
3560
3561 @item
3562 Hard limiter at -6dB:
3563 @example
3564 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3565 @end example
3566
3567 @item
3568 Hard limiter at -12dB:
3569 @example
3570 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3571 @end example
3572
3573 @item
3574 Hard noise gate at -35 dB:
3575 @example
3576 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3577 @end example
3578
3579 @item
3580 Soft limiter:
3581 @example
3582 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3583 @end example
3584 @end itemize
3585
3586 @section compensationdelay
3587
3588 Compensation Delay Line is a metric based delay to compensate differing
3589 positions of microphones or speakers.
3590
3591 For example, you have recorded guitar with two microphones placed in
3592 different locations. Because the front of sound wave has fixed speed in
3593 normal conditions, the phasing of microphones can vary and depends on
3594 their location and interposition. The best sound mix can be achieved when
3595 these microphones are in phase (synchronized). Note that a distance of
3596 ~30 cm between microphones makes one microphone capture the signal in
3597 antiphase to the other microphone. That makes the final mix sound moody.
3598 This filter helps to solve phasing problems by adding different delays
3599 to each microphone track and make them synchronized.
3600
3601 The best result can be reached when you take one track as base and
3602 synchronize other tracks one by one with it.
3603 Remember that synchronization/delay tolerance depends on sample rate, too.
3604 Higher sample rates will give more tolerance.
3605
3606 The filter accepts the following parameters:
3607
3608 @table @option
3609 @item mm
3610 Set millimeters distance. This is compensation distance for fine tuning.
3611 Default is 0.
3612
3613 @item cm
3614 Set cm distance. This is compensation distance for tightening distance setup.
3615 Default is 0.
3616
3617 @item m
3618 Set meters distance. This is compensation distance for hard distance setup.
3619 Default is 0.
3620
3621 @item dry
3622 Set dry amount. Amount of unprocessed (dry) signal.
3623 Default is 0.
3624
3625 @item wet
3626 Set wet amount. Amount of processed (wet) signal.
3627 Default is 1.
3628
3629 @item temp
3630 Set temperature in degrees Celsius. This is the temperature of the environment.
3631 Default is 20.
3632 @end table
3633
3634 @section crossfeed
3635 Apply headphone crossfeed filter.
3636
3637 Crossfeed is the process of blending the left and right channels of stereo
3638 audio recording.
3639 It is mainly used to reduce extreme stereo separation of low frequencies.
3640
3641 The intent is to produce more speaker like sound to the listener.
3642
3643 The filter accepts the following options:
3644
3645 @table @option
3646 @item strength
3647 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3648 This sets gain of low shelf filter for side part of stereo image.
3649 Default is -6dB. Max allowed is -30db when strength is set to 1.
3650
3651 @item range
3652 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3653 This sets cut off frequency of low shelf filter. Default is cut off near
3654 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3655
3656 @item slope
3657 Set curve slope of low shelf filter. Default is 0.5.
3658 Allowed range is from 0.01 to 1.
3659
3660 @item level_in
3661 Set input gain. Default is 0.9.
3662
3663 @item level_out
3664 Set output gain. Default is 1.
3665 @end table
3666
3667 @subsection Commands
3668
3669 This filter supports the all above options as @ref{commands}.
3670
3671 @section crystalizer
3672 Simple algorithm to expand audio dynamic range.
3673
3674 The filter accepts the following options:
3675
3676 @table @option
3677 @item i
3678 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3679 (unchanged sound) to 10.0 (maximum effect).
3680
3681 @item c
3682 Enable clipping. By default is enabled.
3683 @end table
3684
3685 @subsection Commands
3686
3687 This filter supports the all above options as @ref{commands}.
3688
3689 @section dcshift
3690 Apply a DC shift to the audio.
3691
3692 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3693 in the recording chain) from the audio. The effect of a DC offset is reduced
3694 headroom and hence volume. The @ref{astats} filter can be used to determine if
3695 a signal has a DC offset.
3696
3697 @table @option
3698 @item shift
3699 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3700 the audio.
3701
3702 @item limitergain
3703 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3704 used to prevent clipping.
3705 @end table
3706
3707 @section deesser
3708
3709 Apply de-essing to the audio samples.
3710
3711 @table @option
3712 @item i
3713 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3714 Default is 0.
3715
3716 @item m
3717 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3718 Default is 0.5.
3719
3720 @item f
3721 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3722 Default is 0.5.
3723
3724 @item s
3725 Set the output mode.
3726
3727 It accepts the following values:
3728 @table @option
3729 @item i
3730 Pass input unchanged.
3731
3732 @item o
3733 Pass ess filtered out.
3734
3735 @item e
3736 Pass only ess.
3737
3738 Default value is @var{o}.
3739 @end table
3740
3741 @end table
3742
3743 @section drmeter
3744 Measure audio dynamic range.
3745
3746 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3747 is found in transition material. And anything less that 8 have very poor dynamics
3748 and is very compressed.
3749
3750 The filter accepts the following options:
3751
3752 @table @option
3753 @item length
3754 Set window length in seconds used to split audio into segments of equal length.
3755 Default is 3 seconds.
3756 @end table
3757
3758 @section dynaudnorm
3759 Dynamic Audio Normalizer.
3760
3761 This filter applies a certain amount of gain to the input audio in order
3762 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3763 contrast to more "simple" normalization algorithms, the Dynamic Audio
3764 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3765 This allows for applying extra gain to the "quiet" sections of the audio
3766 while avoiding distortions or clipping the "loud" sections. In other words:
3767 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3768 sections, in the sense that the volume of each section is brought to the
3769 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3770 this goal *without* applying "dynamic range compressing". It will retain 100%
3771 of the dynamic range *within* each section of the audio file.
3772
3773 @table @option
3774 @item framelen, f
3775 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3776 Default is 500 milliseconds.
3777 The Dynamic Audio Normalizer processes the input audio in small chunks,
3778 referred to as frames. This is required, because a peak magnitude has no
3779 meaning for just a single sample value. Instead, we need to determine the
3780 peak magnitude for a contiguous sequence of sample values. While a "standard"
3781 normalizer would simply use the peak magnitude of the complete file, the
3782 Dynamic Audio Normalizer determines the peak magnitude individually for each
3783 frame. The length of a frame is specified in milliseconds. By default, the
3784 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3785 been found to give good results with most files.
3786 Note that the exact frame length, in number of samples, will be determined
3787 automatically, based on the sampling rate of the individual input audio file.
3788
3789 @item gausssize, g
3790 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3791 number. Default is 31.
3792 Probably the most important parameter of the Dynamic Audio Normalizer is the
3793 @code{window size} of the Gaussian smoothing filter. The filter's window size
3794 is specified in frames, centered around the current frame. For the sake of
3795 simplicity, this must be an odd number. Consequently, the default value of 31
3796 takes into account the current frame, as well as the 15 preceding frames and
3797 the 15 subsequent frames. Using a larger window results in a stronger
3798 smoothing effect and thus in less gain variation, i.e. slower gain
3799 adaptation. Conversely, using a smaller window results in a weaker smoothing
3800 effect and thus in more gain variation, i.e. faster gain adaptation.
3801 In other words, the more you increase this value, the more the Dynamic Audio
3802 Normalizer will behave like a "traditional" normalization filter. On the
3803 contrary, the more you decrease this value, the more the Dynamic Audio
3804 Normalizer will behave like a dynamic range compressor.
3805
3806 @item peak, p
3807 Set the target peak value. This specifies the highest permissible magnitude
3808 level for the normalized audio input. This filter will try to approach the
3809 target peak magnitude as closely as possible, but at the same time it also
3810 makes sure that the normalized signal will never exceed the peak magnitude.
3811 A frame's maximum local gain factor is imposed directly by the target peak
3812 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3813 It is not recommended to go above this value.
3814
3815 @item maxgain, m
3816 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3817 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3818 factor for each input frame, i.e. the maximum gain factor that does not
3819 result in clipping or distortion. The maximum gain factor is determined by
3820 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3821 additionally bounds the frame's maximum gain factor by a predetermined
3822 (global) maximum gain factor. This is done in order to avoid excessive gain
3823 factors in "silent" or almost silent frames. By default, the maximum gain
3824 factor is 10.0, For most inputs the default value should be sufficient and
3825 it usually is not recommended to increase this value. Though, for input
3826 with an extremely low overall volume level, it may be necessary to allow even
3827 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3828 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3829 Instead, a "sigmoid" threshold function will be applied. This way, the
3830 gain factors will smoothly approach the threshold value, but never exceed that
3831 value.
3832
3833 @item targetrms, r
3834 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3835 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3836 This means that the maximum local gain factor for each frame is defined
3837 (only) by the frame's highest magnitude sample. This way, the samples can
3838 be amplified as much as possible without exceeding the maximum signal
3839 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3840 Normalizer can also take into account the frame's root mean square,
3841 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3842 determine the power of a time-varying signal. It is therefore considered
3843 that the RMS is a better approximation of the "perceived loudness" than
3844 just looking at the signal's peak magnitude. Consequently, by adjusting all
3845 frames to a constant RMS value, a uniform "perceived loudness" can be
3846 established. If a target RMS value has been specified, a frame's local gain
3847 factor is defined as the factor that would result in exactly that RMS value.
3848 Note, however, that the maximum local gain factor is still restricted by the
3849 frame's highest magnitude sample, in order to prevent clipping.
3850
3851 @item coupling, n
3852 Enable channels coupling. By default is enabled.
3853 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3854 amount. This means the same gain factor will be applied to all channels, i.e.
3855 the maximum possible gain factor is determined by the "loudest" channel.
3856 However, in some recordings, it may happen that the volume of the different
3857 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3858 In this case, this option can be used to disable the channel coupling. This way,
3859 the gain factor will be determined independently for each channel, depending
3860 only on the individual channel's highest magnitude sample. This allows for
3861 harmonizing the volume of the different channels.
3862
3863 @item correctdc, c
3864 Enable DC bias correction. By default is disabled.
3865 An audio signal (in the time domain) is a sequence of sample values.
3866 In the Dynamic Audio Normalizer these sample values are represented in the
3867 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3868 audio signal, or "waveform", should be centered around the zero point.
3869 That means if we calculate the mean value of all samples in a file, or in a
3870 single frame, then the result should be 0.0 or at least very close to that
3871 value. If, however, there is a significant deviation of the mean value from
3872 0.0, in either positive or negative direction, this is referred to as a
3873 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3874 Audio Normalizer provides optional DC bias correction.
3875 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3876 the mean value, or "DC correction" offset, of each input frame and subtract
3877 that value from all of the frame's sample values which ensures those samples
3878 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3879 boundaries, the DC correction offset values will be interpolated smoothly
3880 between neighbouring frames.
3881
3882 @item altboundary, b
3883 Enable alternative boundary mode. By default is disabled.
3884 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3885 around each frame. This includes the preceding frames as well as the
3886 subsequent frames. However, for the "boundary" frames, located at the very
3887 beginning and at the very end of the audio file, not all neighbouring
3888 frames are available. In particular, for the first few frames in the audio
3889 file, the preceding frames are not known. And, similarly, for the last few
3890 frames in the audio file, the subsequent frames are not known. Thus, the
3891 question arises which gain factors should be assumed for the missing frames
3892 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3893 to deal with this situation. The default boundary mode assumes a gain factor
3894 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3895 "fade out" at the beginning and at the end of the input, respectively.
3896
3897 @item compress, s
3898 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3899 By default, the Dynamic Audio Normalizer does not apply "traditional"
3900 compression. This means that signal peaks will not be pruned and thus the
3901 full dynamic range will be retained within each local neighbourhood. However,
3902 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3903 normalization algorithm with a more "traditional" compression.
3904 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3905 (thresholding) function. If (and only if) the compression feature is enabled,
3906 all input frames will be processed by a soft knee thresholding function prior
3907 to the actual normalization process. Put simply, the thresholding function is
3908 going to prune all samples whose magnitude exceeds a certain threshold value.
3909 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3910 value. Instead, the threshold value will be adjusted for each individual
3911 frame.
3912 In general, smaller parameters result in stronger compression, and vice versa.
3913 Values below 3.0 are not recommended, because audible distortion may appear.
3914
3915 @item threshold, t
3916 Set the target threshold value. This specifies the lowest permissible
3917 magnitude level for the audio input which will be normalized.
3918 If input frame volume is above this value frame will be normalized.
3919 Otherwise frame may not be normalized at all. The default value is set
3920 to 0, which means all input frames will be normalized.
3921 This option is mostly useful if digital noise is not wanted to be amplified.
3922 @end table
3923
3924 @subsection Commands
3925
3926 This filter supports the all above options as @ref{commands}.
3927
3928 @section earwax
3929
3930 Make audio easier to listen to on headphones.
3931
3932 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3933 so that when listened to on headphones the stereo image is moved from
3934 inside your head (standard for headphones) to outside and in front of
3935 the listener (standard for speakers).
3936
3937 Ported from SoX.
3938
3939 @section equalizer
3940
3941 Apply a two-pole peaking equalisation (EQ) filter. With this
3942 filter, the signal-level at and around a selected frequency can
3943 be increased or decreased, whilst (unlike bandpass and bandreject
3944 filters) that at all other frequencies is unchanged.
3945
3946 In order to produce complex equalisation curves, this filter can
3947 be given several times, each with a different central frequency.
3948
3949 The filter accepts the following options:
3950
3951 @table @option
3952 @item frequency, f
3953 Set the filter's central frequency in Hz.
3954
3955 @item width_type, t
3956 Set method to specify band-width of filter.
3957 @table @option
3958 @item h
3959 Hz
3960 @item q
3961 Q-Factor
3962 @item o
3963 octave
3964 @item s
3965 slope
3966 @item k
3967 kHz
3968 @end table
3969
3970 @item width, w
3971 Specify the band-width of a filter in width_type units.
3972
3973 @item gain, g
3974 Set the required gain or attenuation in dB.
3975 Beware of clipping when using a positive gain.
3976
3977 @item mix, m
3978 How much to use filtered signal in output. Default is 1.
3979 Range is between 0 and 1.
3980
3981 @item channels, c
3982 Specify which channels to filter, by default all available are filtered.
3983
3984 @item normalize, n
3985 Normalize biquad coefficients, by default is disabled.
3986 Enabling it will normalize magnitude response at DC to 0dB.
3987
3988 @item transform, a
3989 Set transform type of IIR filter.
3990 @table @option
3991 @item di
3992 @item dii
3993 @item tdii
3994 @item latt
3995 @end table
3996
3997 @item precision, r
3998 Set precison of filtering.
3999 @table @option
4000 @item auto
4001 Pick automatic sample format depending on surround filters.
4002 @item s16
4003 Always use signed 16-bit.
4004 @item s32
4005 Always use signed 32-bit.
4006 @item f32
4007 Always use float 32-bit.
4008 @item f64
4009 Always use float 64-bit.
4010 @end table
4011 @end table
4012
4013 @subsection Examples
4014 @itemize
4015 @item
4016 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
4017 @example
4018 equalizer=f=1000:t=h:width=200:g=-10
4019 @end example
4020
4021 @item
4022 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
4023 @example
4024 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
4025 @end example
4026 @end itemize
4027
4028 @subsection Commands
4029
4030 This filter supports the following commands:
4031 @table @option
4032 @item frequency, f
4033 Change equalizer frequency.
4034 Syntax for the command is : "@var{frequency}"
4035
4036 @item width_type, t
4037 Change equalizer width_type.
4038 Syntax for the command is : "@var{width_type}"
4039
4040 @item width, w
4041 Change equalizer width.
4042 Syntax for the command is : "@var{width}"
4043
4044 @item gain, g
4045 Change equalizer gain.
4046 Syntax for the command is : "@var{gain}"
4047
4048 @item mix, m
4049 Change equalizer mix.
4050 Syntax for the command is : "@var{mix}"
4051 @end table
4052
4053 @section extrastereo
4054
4055 Linearly increases the difference between left and right channels which
4056 adds some sort of "live" effect to playback.
4057
4058 The filter accepts the following options:
4059
4060 @table @option
4061 @item m
4062 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
4063 (average of both channels), with 1.0 sound will be unchanged, with
4064 -1.0 left and right channels will be swapped.
4065
4066 @item c
4067 Enable clipping. By default is enabled.
4068 @end table
4069
4070 @subsection Commands
4071
4072 This filter supports the all above options as @ref{commands}.
4073
4074 @section firequalizer
4075 Apply FIR Equalization using arbitrary frequency response.
4076
4077 The filter accepts the following option:
4078
4079 @table @option
4080 @item gain
4081 Set gain curve equation (in dB). The expression can contain variables:
4082 @table @option
4083 @item f
4084 the evaluated frequency
4085 @item sr
4086 sample rate
4087 @item ch
4088 channel number, set to 0 when multichannels evaluation is disabled
4089 @item chid
4090 channel id, see libavutil/channel_layout.h, set to the first channel id when
4091 multichannels evaluation is disabled
4092 @item chs
4093 number of channels
4094 @item chlayout
4095 channel_layout, see libavutil/channel_layout.h
4096
4097 @end table
4098 and functions:
4099 @table @option
4100 @item gain_interpolate(f)
4101 interpolate gain on frequency f based on gain_entry
4102 @item cubic_interpolate(f)
4103 same as gain_interpolate, but smoother
4104 @end table
4105 This option is also available as command. Default is @code{gain_interpolate(f)}.
4106
4107 @item gain_entry
4108 Set gain entry for gain_interpolate function. The expression can
4109 contain functions:
4110 @table @option
4111 @item entry(f, g)
4112 store gain entry at frequency f with value g
4113 @end table
4114 This option is also available as command.
4115
4116 @item delay
4117 Set filter delay in seconds. Higher value means more accurate.
4118 Default is @code{0.01}.
4119
4120 @item accuracy
4121 Set filter accuracy in Hz. Lower value means more accurate.
4122 Default is @code{5}.
4123
4124 @item wfunc
4125 Set window function. Acceptable values are:
4126 @table @option
4127 @item rectangular
4128 rectangular window, useful when gain curve is already smooth
4129 @item hann
4130 hann window (default)
4131 @item hamming
4132 hamming window
4133 @item blackman
4134 blackman window
4135 @item nuttall3
4136 3-terms continuous 1st derivative nuttall window
4137 @item mnuttall3
4138 minimum 3-terms discontinuous nuttall window
4139 @item nuttall
4140 4-terms continuous 1st derivative nuttall window
4141 @item bnuttall
4142 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
4143 @item bharris
4144 blackman-harris window
4145 @item tukey
4146 tukey window
4147 @end table
4148
4149 @item fixed
4150 If enabled, use fixed number of audio samples. This improves speed when
4151 filtering with large delay. Default is disabled.
4152
4153 @item multi
4154 Enable multichannels evaluation on gain. Default is disabled.
4155
4156 @item zero_phase
4157 Enable zero phase mode by subtracting timestamp to compensate delay.
4158 Default is disabled.
4159
4160 @item scale
4161 Set scale used by gain. Acceptable values are:
4162 @table @option
4163 @item linlin
4164 linear frequency, linear gain
4165 @item linlog
4166 linear frequency, logarithmic (in dB) gain (default)
4167 @item loglin
4168 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
4169 @item loglog
4170 logarithmic frequency, logarithmic gain
4171 @end table
4172
4173 @item dumpfile
4174 Set file for dumping, suitable for gnuplot.
4175
4176 @item dumpscale
4177 Set scale for dumpfile. Acceptable values are same with scale option.
4178 Default is linlog.
4179
4180 @item fft2
4181 Enable 2-channel convolution using complex FFT. This improves speed significantly.
4182 Default is disabled.
4183
4184 @item min_phase
4185 Enable minimum phase impulse response. Default is disabled.
4186 @end table
4187
4188 @subsection Examples
4189 @itemize
4190 @item
4191 lowpass at 1000 Hz:
4192 @example
4193 firequalizer=gain='if(lt(f,1000), 0, -INF)'
4194 @end example
4195 @item
4196 lowpass at 1000 Hz with gain_entry:
4197 @example
4198 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
4199 @end example
4200 @item
4201 custom equalization:
4202 @example
4203 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
4204 @end example
4205 @item
4206 higher delay with zero phase to compensate delay:
4207 @example
4208 firequalizer=delay=0.1:fixed=on:zero_phase=on
4209 @end example
4210 @item
4211 lowpass on left channel, highpass on right channel:
4212 @example
4213 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
4214 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
4215 @end example
4216 @end itemize
4217
4218 @section flanger
4219 Apply a flanging effect to the audio.
4220
4221 The filter accepts the following options:
4222
4223 @table @option
4224 @item delay
4225 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
4226
4227 @item depth
4228 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
4229
4230 @item regen
4231 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
4232 Default value is 0.
4233
4234 @item width
4235 Set percentage of delayed signal mixed with original. Range from 0 to 100.
4236 Default value is 71.
4237
4238 @item speed
4239 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
4240
4241 @item shape
4242 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
4243 Default value is @var{sinusoidal}.
4244
4245 @item phase
4246 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
4247 Default value is 25.
4248
4249 @item interp
4250 Set delay-line interpolation, @var{linear} or @var{quadratic}.
4251 Default is @var{linear}.
4252 @end table
4253
4254 @section haas
4255 Apply Haas effect to audio.
4256
4257 Note that this makes most sense to apply on mono signals.
4258 With this filter applied to mono signals it give some directionality and
4259 stretches its stereo image.
4260
4261 The filter accepts the following options:
4262
4263 @table @option
4264 @item level_in
4265 Set input level. By default is @var{1}, or 0dB
4266
4267 @item level_out
4268 Set output level. By default is @var{1}, or 0dB.
4269
4270 @item side_gain
4271 Set gain applied to side part of signal. By default is @var{1}.
4272
4273 @item middle_source
4274 Set kind of middle source. Can be one of the following:
4275
4276 @table @samp
4277 @item left
4278 Pick left channel.
4279
4280 @item right
4281 Pick right channel.
4282
4283 @item mid
4284 Pick middle part signal of stereo image.
4285
4286 @item side
4287 Pick side part signal of stereo image.
4288 @end table
4289
4290 @item middle_phase
4291 Change middle phase. By default is disabled.
4292
4293 @item left_delay
4294 Set left channel delay. By default is @var{2.05} milliseconds.
4295
4296 @item left_balance
4297 Set left channel balance. By default is @var{-1}.
4298
4299 @item left_gain
4300 Set left channel gain. By default is @var{1}.
4301
4302 @item left_phase
4303 Change left phase. By default is disabled.
4304
4305 @item right_delay
4306 Set right channel delay. By defaults is @var{2.12} milliseconds.
4307
4308 @item right_balance
4309 Set right channel balance. By default is @var{1}.
4310
4311 @item right_gain
4312 Set right channel gain. By default is @var{1}.
4313
4314 @item right_phase
4315 Change right phase. By default is enabled.
4316 @end table
4317
4318 @section hdcd
4319
4320 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
4321 embedded HDCD codes is expanded into a 20-bit PCM stream.
4322
4323 The filter supports the Peak Extend and Low-level Gain Adjustment features
4324 of HDCD, and detects the Transient Filter flag.
4325
4326 @example
4327 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
4328 @end example
4329
4330 When using the filter with wav, note the default encoding for wav is 16-bit,
4331 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
4332 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
4333 @example
4334 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
4335 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
4336 @end example
4337
4338 The filter accepts the following options:
4339
4340 @table @option
4341 @item disable_autoconvert
4342 Disable any automatic format conversion or resampling in the filter graph.
4343
4344 @item process_stereo
4345 Process the stereo channels together. If target_gain does not match between
4346 channels, consider it invalid and use the last valid target_gain.
4347
4348 @item cdt_ms
4349 Set the code detect timer period in ms.
4350
4351 @item force_pe
4352 Always extend peaks above -3dBFS even if PE isn't signaled.
4353
4354 @item analyze_mode
4355 Replace audio with a solid tone and adjust the amplitude to signal some
4356 specific aspect of the decoding process. The output file can be loaded in
4357 an audio editor alongside the original to aid analysis.
4358
4359 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
4360
4361 Modes are:
4362 @table @samp
4363 @item 0, off
4364 Disabled
4365 @item 1, lle
4366 Gain adjustment level at each sample
4367 @item 2, pe
4368 Samples where peak extend occurs
4369 @item 3, cdt
4370 Samples where the code detect timer is active
4371 @item 4, tgm
4372 Samples where the target gain does not match between channels
4373 @end table
4374 @end table
4375
4376 @section headphone
4377
4378 Apply head-related transfer functions (HRTFs) to create virtual
4379 loudspeakers around the user for binaural listening via headphones.
4380 The HRIRs are provided via additional streams, for each channel
4381 one stereo input stream is needed.
4382
4383 The filter accepts the following options:
4384
4385 @table @option
4386 @item map
4387 Set mapping of input streams for convolution.
4388 The argument is a '|'-separated list of channel names in order as they
4389 are given as additional stream inputs for filter.
4390 This also specify number of input streams. Number of input streams
4391 must be not less than number of channels in first stream plus one.
4392
4393 @item gain
4394 Set gain applied to audio. Value is in dB. Default is 0.
4395
4396 @item type
4397 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4398 processing audio in time domain which is slow.
4399 @var{freq} is processing audio in frequency domain which is fast.
4400 Default is @var{freq}.
4401
4402 @item lfe
4403 Set custom gain for LFE channels. Value is in dB. Default is 0.
4404
4405 @item size
4406 Set size of frame in number of samples which will be processed at once.
4407 Default value is @var{1024}. Allowed range is from 1024 to 96000.
4408
4409 @item hrir
4410 Set format of hrir stream.
4411 Default value is @var{stereo}. Alternative value is @var{multich}.
4412 If value is set to @var{stereo}, number of additional streams should
4413 be greater or equal to number of input channels in first input stream.
4414 Also each additional stream should have stereo number of channels.
4415 If value is set to @var{multich}, number of additional streams should
4416 be exactly one. Also number of input channels of additional stream
4417 should be equal or greater than twice number of channels of first input
4418 stream.
4419 @end table
4420
4421 @subsection Examples
4422
4423 @itemize
4424 @item
4425 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4426 each amovie filter use stereo file with IR coefficients as input.
4427 The files give coefficients for each position of virtual loudspeaker:
4428 @example
4429 ffmpeg -i input.wav
4430 -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"
4431 output.wav
4432 @end example
4433
4434 @item
4435 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4436 but now in @var{multich} @var{hrir} format.
4437 @example
4438 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"
4439 output.wav
4440 @end example
4441 @end itemize
4442
4443 @section highpass
4444
4445 Apply a high-pass filter with 3dB point frequency.
4446 The filter can be either single-pole, or double-pole (the default).
4447 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4448
4449 The filter accepts the following options:
4450
4451 @table @option
4452 @item frequency, f
4453 Set frequency in Hz. Default is 3000.
4454
4455 @item poles, p
4456 Set number of poles. Default is 2.
4457
4458 @item width_type, t
4459 Set method to specify band-width of filter.
4460 @table @option
4461 @item h
4462 Hz
4463 @item q
4464 Q-Factor
4465 @item o
4466 octave
4467 @item s
4468 slope
4469 @item k
4470 kHz
4471 @end table
4472
4473 @item width, w
4474 Specify the band-width of a filter in width_type units.
4475 Applies only to double-pole filter.
4476 The default is 0.707q and gives a Butterworth response.
4477
4478 @item mix, m
4479 How much to use filtered signal in output. Default is 1.
4480 Range is between 0 and 1.
4481
4482 @item channels, c
4483 Specify which channels to filter, by default all available are filtered.
4484
4485 @item normalize, n
4486 Normalize biquad coefficients, by default is disabled.
4487 Enabling it will normalize magnitude response at DC to 0dB.
4488
4489 @item transform, a
4490 Set transform type of IIR filter.
4491 @table @option
4492 @item di
4493 @item dii
4494 @item tdii
4495 @item latt
4496 @end table
4497
4498 @item precision, r
4499 Set precison of filtering.
4500 @table @option
4501 @item auto
4502 Pick automatic sample format depending on surround filters.
4503 @item s16
4504 Always use signed 16-bit.
4505 @item s32
4506 Always use signed 32-bit.
4507 @item f32
4508 Always use float 32-bit.
4509 @item f64
4510 Always use float 64-bit.
4511 @end table
4512 @end table
4513
4514 @subsection Commands
4515
4516 This filter supports the following commands:
4517 @table @option
4518 @item frequency, f
4519 Change highpass frequency.
4520 Syntax for the command is : "@var{frequency}"
4521
4522 @item width_type, t
4523 Change highpass width_type.
4524 Syntax for the command is : "@var{width_type}"
4525
4526 @item width, w
4527 Change highpass width.
4528 Syntax for the command is : "@var{width}"
4529
4530 @item mix, m
4531 Change highpass mix.
4532 Syntax for the command is : "@var{mix}"
4533 @end table
4534
4535 @section join
4536
4537 Join multiple input streams into one multi-channel stream.
4538
4539 It accepts the following parameters:
4540 @table @option
4541
4542 @item inputs
4543 The number of input streams. It defaults to 2.
4544
4545 @item channel_layout
4546 The desired output channel layout. It defaults to stereo.
4547
4548 @item map
4549 Map channels from inputs to output. The argument is a '|'-separated list of
4550 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
4551 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
4552 can be either the name of the input channel (e.g. FL for front left) or its
4553 index in the specified input stream. @var{out_channel} is the name of the output
4554 channel.
4555 @end table
4556
4557 The filter will attempt to guess the mappings when they are not specified
4558 explicitly. It does so by first trying to find an unused matching input channel
4559 and if that fails it picks the first unused input channel.
4560
4561 Join 3 inputs (with properly set channel layouts):
4562 @example
4563 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
4564 @end example
4565
4566 Build a 5.1 output from 6 single-channel streams:
4567 @example
4568 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
4569 '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'
4570 out
4571 @end example
4572
4573 @section ladspa
4574
4575 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
4576
4577 To enable compilation of this filter you need to configure FFmpeg with
4578 @code{--enable-ladspa}.
4579
4580 @table @option
4581 @item file, f
4582 Specifies the name of LADSPA plugin library to load. If the environment
4583 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
4584 each one of the directories specified by the colon separated list in
4585 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
4586 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
4587 @file{/usr/lib/ladspa/}.
4588
4589 @item plugin, p
4590 Specifies the plugin within the library. Some libraries contain only
4591 one plugin, but others contain many of them. If this is not set filter
4592 will list all available plugins within the specified library.
4593
4594 @item controls, c
4595 Set the '|' separated list of controls which are zero or more floating point
4596 values that determine the behavior of the loaded plugin (for example delay,
4597 threshold or gain).
4598 Controls need to be defined using the following syntax:
4599 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
4600 @var{valuei} is the value set on the @var{i}-th control.
4601 Alternatively they can be also defined using the following syntax:
4602 @var{value0}|@var{value1}|@var{value2}|..., where
4603 @var{valuei} is the value set on the @var{i}-th control.
4604 If @option{controls} is set to @code{help}, all available controls and
4605 their valid ranges are printed.
4606
4607 @item sample_rate, s
4608 Specify the sample rate, default to 44100. Only used if plugin have
4609 zero inputs.
4610
4611 @item nb_samples, n
4612 Set the number of samples per channel per each output frame, default
4613 is 1024. Only used if plugin have zero inputs.
4614
4615 @item duration, d
4616 Set the minimum duration of the sourced audio. See
4617 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4618 for the accepted syntax.
4619 Note that the resulting duration may be greater than the specified duration,
4620 as the generated audio is always cut at the end of a complete frame.
4621 If not specified, or the expressed duration is negative, the audio is
4622 supposed to be generated forever.
4623 Only used if plugin have zero inputs.
4624
4625 @item latency, l
4626 Enable latency compensation, by default is disabled.
4627 Only used if plugin have inputs.
4628 @end table
4629
4630 @subsection Examples
4631
4632 @itemize
4633 @item
4634 List all available plugins within amp (LADSPA example plugin) library:
4635 @example
4636 ladspa=file=amp
4637 @end example
4638
4639 @item
4640 List all available controls and their valid ranges for @code{vcf_notch}
4641 plugin from @code{VCF} library:
4642 @example
4643 ladspa=f=vcf:p=vcf_notch:c=help
4644 @end example
4645
4646 @item
4647 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4648 plugin library:
4649 @example
4650 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4651 @end example
4652
4653 @item
4654 Add reverberation to the audio using TAP-plugins
4655 (Tom's Audio Processing plugins):
4656 @example
4657 ladspa=file=tap_reverb:tap_reverb
4658 @end example
4659
4660 @item
4661 Generate white noise, with 0.2 amplitude:
4662 @example
4663 ladspa=file=cmt:noise_source_white:c=c0=.2
4664 @end example
4665
4666 @item
4667 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4668 @code{C* Audio Plugin Suite} (CAPS) library:
4669 @example
4670 ladspa=file=caps:Click:c=c1=20'
4671 @end example
4672
4673 @item
4674 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4675 @example
4676 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4677 @end example
4678
4679 @item
4680 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4681 @code{SWH Plugins} collection:
4682 @example
4683 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4684 @end example
4685
4686 @item
4687 Attenuate low frequencies using Multiband EQ from Steve Harris
4688 @code{SWH Plugins} collection:
4689 @example
4690 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4691 @end example
4692
4693 @item
4694 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4695 (CAPS) library:
4696 @example
4697 ladspa=caps:Narrower
4698 @end example
4699
4700 @item
4701 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4702 @example
4703 ladspa=caps:White:.2
4704 @end example
4705
4706 @item
4707 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4708 @example
4709 ladspa=caps:Fractal:c=c1=1
4710 @end example
4711
4712 @item
4713 Dynamic volume normalization using @code{VLevel} plugin:
4714 @example
4715 ladspa=vlevel-ladspa:vlevel_mono
4716 @end example
4717 @end itemize
4718
4719 @subsection Commands
4720
4721 This filter supports the following commands:
4722 @table @option
4723 @item cN
4724 Modify the @var{N}-th control value.
4725
4726 If the specified value is not valid, it is ignored and prior one is kept.
4727 @end table
4728
4729 @section loudnorm
4730
4731 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4732 Support for both single pass (livestreams, files) and double pass (files) modes.
4733 This algorithm can target IL, LRA, and maximum true peak. In dynamic mode, to accurately
4734 detect true peaks, the audio stream will be upsampled to 192 kHz.
4735 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4736
4737 The filter accepts the following options:
4738
4739 @table @option
4740 @item I, i
4741 Set integrated loudness target.
4742 Range is -70.0 - -5.0. Default value is -24.0.
4743
4744 @item LRA, lra
4745 Set loudness range target.
4746 Range is 1.0 - 20.0. Default value is 7.0.
4747
4748 @item TP, tp
4749 Set maximum true peak.
4750 Range is -9.0 - +0.0. Default value is -2.0.
4751
4752 @item measured_I, measured_i
4753 Measured IL of input file.
4754 Range is -99.0 - +0.0.
4755
4756 @item measured_LRA, measured_lra
4757 Measured LRA of input file.
4758 Range is  0.0 - 99.0.
4759
4760 @item measured_TP, measured_tp
4761 Measured true peak of input file.
4762 Range is  -99.0 - +99.0.
4763
4764 @item measured_thresh
4765 Measured threshold of input file.
4766 Range is -99.0 - +0.0.
4767
4768 @item offset
4769 Set offset gain. Gain is applied before the true-peak limiter.
4770 Range is  -99.0 - +99.0. Default is +0.0.
4771
4772 @item linear
4773 Normalize by linearly scaling the source audio.
4774 @code{measured_I}, @code{measured_LRA}, @code{measured_TP},
4775 and @code{measured_thresh} must all be specified. Target LRA shouldn't
4776 be lower than source LRA and the change in integrated loudness shouldn't
4777 result in a true peak which exceeds the target TP. If any of these
4778 conditions aren't met, normalization mode will revert to @var{dynamic}.
4779 Options are @code{true} or @code{false}. Default is @code{true}.
4780
4781 @item dual_mono
4782 Treat mono input files as "dual-mono". If a mono file is intended for playback
4783 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4784 If set to @code{true}, this option will compensate for this effect.
4785 Multi-channel input files are not affected by this option.
4786 Options are true or false. Default is false.
4787
4788 @item print_format
4789 Set print format for stats. Options are summary, json, or none.
4790 Default value is none.
4791 @end table
4792
4793 @section lowpass
4794
4795 Apply a low-pass filter with 3dB point frequency.
4796 The filter can be either single-pole or double-pole (the default).
4797 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4798
4799 The filter accepts the following options:
4800
4801 @table @option
4802 @item frequency, f
4803 Set frequency in Hz. Default is 500.
4804
4805 @item poles, p
4806 Set number of poles. Default is 2.
4807
4808 @item width_type, t
4809 Set method to specify band-width of filter.
4810 @table @option
4811 @item h
4812 Hz
4813 @item q
4814 Q-Factor
4815 @item o
4816 octave
4817 @item s
4818 slope
4819 @item k
4820 kHz
4821 @end table
4822
4823 @item width, w
4824 Specify the band-width of a filter in width_type units.
4825 Applies only to double-pole filter.
4826 The default is 0.707q and gives a Butterworth response.
4827
4828 @item mix, m
4829 How much to use filtered signal in output. Default is 1.
4830 Range is between 0 and 1.
4831
4832 @item channels, c
4833 Specify which channels to filter, by default all available are filtered.
4834
4835 @item normalize, n
4836 Normalize biquad coefficients, by default is disabled.
4837 Enabling it will normalize magnitude response at DC to 0dB.
4838
4839 @item transform, a
4840 Set transform type of IIR filter.
4841 @table @option
4842 @item di
4843 @item dii
4844 @item tdii
4845 @item latt
4846 @end table
4847
4848 @item precision, r
4849 Set precison of filtering.
4850 @table @option
4851 @item auto
4852 Pick automatic sample format depending on surround filters.
4853 @item s16
4854 Always use signed 16-bit.
4855 @item s32
4856 Always use signed 32-bit.
4857 @item f32
4858 Always use float 32-bit.
4859 @item f64
4860 Always use float 64-bit.
4861 @end table
4862 @end table
4863
4864 @subsection Examples
4865 @itemize
4866 @item
4867 Lowpass only LFE channel, it LFE is not present it does nothing:
4868 @example
4869 lowpass=c=LFE
4870 @end example
4871 @end itemize
4872
4873 @subsection Commands
4874
4875 This filter supports the following commands:
4876 @table @option
4877 @item frequency, f
4878 Change lowpass frequency.
4879 Syntax for the command is : "@var{frequency}"
4880
4881 @item width_type, t
4882 Change lowpass width_type.
4883 Syntax for the command is : "@var{width_type}"
4884
4885 @item width, w
4886 Change lowpass width.
4887 Syntax for the command is : "@var{width}"
4888
4889 @item mix, m
4890 Change lowpass mix.
4891 Syntax for the command is : "@var{mix}"
4892 @end table
4893
4894 @section lv2
4895
4896 Load a LV2 (LADSPA Version 2) plugin.
4897
4898 To enable compilation of this filter you need to configure FFmpeg with
4899 @code{--enable-lv2}.
4900
4901 @table @option
4902 @item plugin, p
4903 Specifies the plugin URI. You may need to escape ':'.
4904
4905 @item controls, c
4906 Set the '|' separated list of controls which are zero or more floating point
4907 values that determine the behavior of the loaded plugin (for example delay,
4908 threshold or gain).
4909 If @option{controls} is set to @code{help}, all available controls and
4910 their valid ranges are printed.
4911
4912 @item sample_rate, s
4913 Specify the sample rate, default to 44100. Only used if plugin have
4914 zero inputs.
4915
4916 @item nb_samples, n
4917 Set the number of samples per channel per each output frame, default
4918 is 1024. Only used if plugin have zero inputs.
4919
4920 @item duration, d
4921 Set the minimum duration of the sourced audio. See
4922 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4923 for the accepted syntax.
4924 Note that the resulting duration may be greater than the specified duration,
4925 as the generated audio is always cut at the end of a complete frame.
4926 If not specified, or the expressed duration is negative, the audio is
4927 supposed to be generated forever.
4928 Only used if plugin have zero inputs.
4929 @end table
4930
4931 @subsection Examples
4932
4933 @itemize
4934 @item
4935 Apply bass enhancer plugin from Calf:
4936 @example
4937 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4938 @end example
4939
4940 @item
4941 Apply vinyl plugin from Calf:
4942 @example
4943 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4944 @end example
4945
4946 @item
4947 Apply bit crusher plugin from ArtyFX:
4948 @example
4949 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4950 @end example
4951 @end itemize
4952
4953 @section mcompand
4954 Multiband Compress or expand the audio's dynamic range.
4955
4956 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4957 This is akin to the crossover of a loudspeaker, and results in flat frequency
4958 response when absent compander action.
4959
4960 It accepts the following parameters:
4961
4962 @table @option
4963 @item args
4964 This option syntax is:
4965 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4966 For explanation of each item refer to compand filter documentation.
4967 @end table
4968
4969 @anchor{pan}
4970 @section pan
4971
4972 Mix channels with specific gain levels. The filter accepts the output
4973 channel layout followed by a set of channels definitions.
4974
4975 This filter is also designed to efficiently remap the channels of an audio
4976 stream.
4977
4978 The filter accepts parameters of the form:
4979 "@var{l}|@var{outdef}|@var{outdef}|..."
4980
4981 @table @option
4982 @item l
4983 output channel layout or number of channels
4984
4985 @item outdef
4986 output channel specification, of the form:
4987 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4988
4989 @item out_name
4990 output channel to define, either a channel name (FL, FR, etc.) or a channel
4991 number (c0, c1, etc.)
4992
4993 @item gain
4994 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4995
4996 @item in_name
4997 input channel to use, see out_name for details; it is not possible to mix
4998 named and numbered input channels
4999 @end table
5000
5001 If the `=' in a channel specification is replaced by `<', then the gains for
5002 that specification will be renormalized so that the total is 1, thus
5003 avoiding clipping noise.
5004
5005 @subsection Mixing examples
5006
5007 For example, if you want to down-mix from stereo to mono, but with a bigger
5008 factor for the left channel:
5009 @example
5010 pan=1c|c0=0.9*c0+0.1*c1
5011 @end example
5012
5013 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
5014 7-channels surround:
5015 @example
5016 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
5017 @end example
5018
5019 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
5020 that should be preferred (see "-ac" option) unless you have very specific
5021 needs.
5022
5023 @subsection Remapping examples
5024
5025 The channel remapping will be effective if, and only if:
5026
5027 @itemize
5028 @item gain coefficients are zeroes or ones,
5029 @item only one input per channel output,
5030 @end itemize
5031
5032 If all these conditions are satisfied, the filter will notify the user ("Pure
5033 channel mapping detected"), and use an optimized and lossless method to do the
5034 remapping.
5035
5036 For example, if you have a 5.1 source and want a stereo audio stream by
5037 dropping the extra channels:
5038 @example
5039 pan="stereo| c0=FL | c1=FR"
5040 @end example
5041
5042 Given the same source, you can also switch front left and front right channels
5043 and keep the input channel layout:
5044 @example
5045 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
5046 @end example
5047
5048 If the input is a stereo audio stream, you can mute the front left channel (and
5049 still keep the stereo channel layout) with:
5050 @example
5051 pan="stereo|c1=c1"
5052 @end example
5053
5054 Still with a stereo audio stream input, you can copy the right channel in both
5055 front left and right:
5056 @example
5057 pan="stereo| c0=FR | c1=FR"
5058 @end example
5059
5060 @section replaygain
5061
5062 ReplayGain scanner filter. This filter takes an audio stream as an input and
5063 outputs it unchanged.
5064 At end of filtering it displays @code{track_gain} and @code{track_peak}.
5065
5066 @section resample
5067
5068 Convert the audio sample format, sample rate and channel layout. It is
5069 not meant to be used directly.
5070
5071 @section rubberband
5072 Apply time-stretching and pitch-shifting with librubberband.
5073
5074 To enable compilation of this filter, you need to configure FFmpeg with
5075 @code{--enable-librubberband}.
5076
5077 The filter accepts the following options:
5078
5079 @table @option
5080 @item tempo
5081 Set tempo scale factor.
5082
5083 @item pitch
5084 Set pitch scale factor.
5085
5086 @item transients
5087 Set transients detector.
5088 Possible values are:
5089 @table @var
5090 @item crisp
5091 @item mixed
5092 @item smooth
5093 @end table
5094
5095 @item detector
5096 Set detector.
5097 Possible values are:
5098 @table @var
5099 @item compound
5100 @item percussive
5101 @item soft
5102 @end table
5103
5104 @item phase
5105 Set phase.
5106 Possible values are:
5107 @table @var
5108 @item laminar
5109 @item independent
5110 @end table
5111
5112 @item window
5113 Set processing window size.
5114 Possible values are:
5115 @table @var
5116 @item standard
5117 @item short
5118 @item long
5119 @end table
5120
5121 @item smoothing
5122 Set smoothing.
5123 Possible values are:
5124 @table @var
5125 @item off
5126 @item on
5127 @end table
5128
5129 @item formant
5130 Enable formant preservation when shift pitching.
5131 Possible values are:
5132 @table @var
5133 @item shifted
5134 @item preserved
5135 @end table
5136
5137 @item pitchq
5138 Set pitch quality.
5139 Possible values are:
5140 @table @var
5141 @item quality
5142 @item speed
5143 @item consistency
5144 @end table
5145
5146 @item channels
5147 Set channels.
5148 Possible values are:
5149 @table @var
5150 @item apart
5151 @item together
5152 @end table
5153 @end table
5154
5155 @subsection Commands
5156
5157 This filter supports the following commands:
5158 @table @option
5159 @item tempo
5160 Change filter tempo scale factor.
5161 Syntax for the command is : "@var{tempo}"
5162
5163 @item pitch
5164 Change filter pitch scale factor.
5165 Syntax for the command is : "@var{pitch}"
5166 @end table
5167
5168 @section sidechaincompress
5169
5170 This filter acts like normal compressor but has the ability to compress
5171 detected signal using second input signal.
5172 It needs two input streams and returns one output stream.
5173 First input stream will be processed depending on second stream signal.
5174 The filtered signal then can be filtered with other filters in later stages of
5175 processing. See @ref{pan} and @ref{amerge} filter.
5176
5177 The filter accepts the following options:
5178
5179 @table @option
5180 @item level_in
5181 Set input gain. Default is 1. Range is between 0.015625 and 64.
5182
5183 @item mode
5184 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
5185 Default is @code{downward}.
5186
5187 @item threshold
5188 If a signal of second stream raises above this level it will affect the gain
5189 reduction of first stream.
5190 By default is 0.125. Range is between 0.00097563 and 1.
5191
5192 @item ratio
5193 Set a ratio about which the signal is reduced. 1:2 means that if the level
5194 raised 4dB above the threshold, it will be only 2dB above after the reduction.
5195 Default is 2. Range is between 1 and 20.
5196
5197 @item attack
5198 Amount of milliseconds the signal has to rise above the threshold before gain
5199 reduction starts. Default is 20. Range is between 0.01 and 2000.
5200
5201 @item release
5202 Amount of milliseconds the signal has to fall below the threshold before
5203 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
5204
5205 @item makeup
5206 Set the amount by how much signal will be amplified after processing.
5207 Default is 1. Range is from 1 to 64.
5208
5209 @item knee
5210 Curve the sharp knee around the threshold to enter gain reduction more softly.
5211 Default is 2.82843. Range is between 1 and 8.
5212
5213 @item link
5214 Choose if the @code{average} level between all channels of side-chain stream
5215 or the louder(@code{maximum}) channel of side-chain stream affects the
5216 reduction. Default is @code{average}.
5217
5218 @item detection
5219 Should the exact signal be taken in case of @code{peak} or an RMS one in case
5220 of @code{rms}. Default is @code{rms} which is mainly smoother.
5221
5222 @item level_sc
5223 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
5224
5225 @item mix
5226 How much to use compressed signal in output. Default is 1.
5227 Range is between 0 and 1.
5228 @end table
5229
5230 @subsection Commands
5231
5232 This filter supports the all above options as @ref{commands}.
5233
5234 @subsection Examples
5235
5236 @itemize
5237 @item
5238 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
5239 depending on the signal of 2nd input and later compressed signal to be
5240 merged with 2nd input:
5241 @example
5242 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
5243 @end example
5244 @end itemize
5245
5246 @section sidechaingate
5247
5248 A sidechain gate acts like a normal (wideband) gate but has the ability to
5249 filter the detected signal before sending it to the gain reduction stage.
5250 Normally a gate uses the full range signal to detect a level above the
5251 threshold.
5252 For example: If you cut all lower frequencies from your sidechain signal
5253 the gate will decrease the volume of your track only if not enough highs
5254 appear. With this technique you are able to reduce the resonation of a
5255 natural drum or remove "rumbling" of muted strokes from a heavily distorted
5256 guitar.
5257 It needs two input streams and returns one output stream.
5258 First input stream will be processed depending on second stream signal.
5259
5260 The filter accepts the following options:
5261
5262 @table @option
5263 @item level_in
5264 Set input level before filtering.
5265 Default is 1. Allowed range is from 0.015625 to 64.
5266
5267 @item mode
5268 Set the mode of operation. Can be @code{upward} or @code{downward}.
5269 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
5270 will be amplified, expanding dynamic range in upward direction.
5271 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
5272
5273 @item range
5274 Set the level of gain reduction when the signal is below the threshold.
5275 Default is 0.06125. Allowed range is from 0 to 1.
5276 Setting this to 0 disables reduction and then filter behaves like expander.
5277
5278 @item threshold
5279 If a signal rises above this level the gain reduction is released.
5280 Default is 0.125. Allowed range is from 0 to 1.
5281
5282 @item ratio
5283 Set a ratio about which the signal is reduced.
5284 Default is 2. Allowed range is from 1 to 9000.
5285
5286 @item attack
5287 Amount of milliseconds the signal has to rise above the threshold before gain
5288 reduction stops.
5289 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
5290
5291 @item release
5292 Amount of milliseconds the signal has to fall below the threshold before the
5293 reduction is increased again. Default is 250 milliseconds.
5294 Allowed range is from 0.01 to 9000.
5295
5296 @item makeup
5297 Set amount of amplification of signal after processing.
5298 Default is 1. Allowed range is from 1 to 64.
5299
5300 @item knee
5301 Curve the sharp knee around the threshold to enter gain reduction more softly.
5302 Default is 2.828427125. Allowed range is from 1 to 8.
5303
5304 @item detection
5305 Choose if exact signal should be taken for detection or an RMS like one.
5306 Default is rms. Can be peak or rms.
5307
5308 @item link
5309 Choose if the average level between all channels or the louder channel affects
5310 the reduction.
5311 Default is average. Can be average or maximum.
5312
5313 @item level_sc
5314 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
5315 @end table
5316
5317 @subsection Commands
5318
5319 This filter supports the all above options as @ref{commands}.
5320
5321 @section silencedetect
5322
5323 Detect silence in an audio stream.
5324
5325 This filter logs a message when it detects that the input audio volume is less
5326 or equal to a noise tolerance value for a duration greater or equal to the
5327 minimum detected noise duration.
5328
5329 The printed times and duration are expressed in seconds. The
5330 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
5331 is set on the first frame whose timestamp equals or exceeds the detection
5332 duration and it contains the timestamp of the first frame of the silence.
5333
5334 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
5335 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
5336 keys are set on the first frame after the silence. If @option{mono} is
5337 enabled, and each channel is evaluated separately, the @code{.X}
5338 suffixed keys are used, and @code{X} corresponds to the channel number.
5339
5340 The filter accepts the following options:
5341
5342 @table @option
5343 @item noise, n
5344 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
5345 specified value) or amplitude ratio. Default is -60dB, or 0.001.
5346
5347 @item duration, d
5348 Set silence duration until notification (default is 2 seconds). See
5349 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5350 for the accepted syntax.
5351
5352 @item mono, m
5353 Process each channel separately, instead of combined. By default is disabled.
5354 @end table
5355
5356 @subsection Examples
5357
5358 @itemize
5359 @item
5360 Detect 5 seconds of silence with -50dB noise tolerance:
5361 @example
5362 silencedetect=n=-50dB:d=5
5363 @end example
5364
5365 @item
5366 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
5367 tolerance in @file{silence.mp3}:
5368 @example
5369 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
5370 @end example
5371 @end itemize
5372
5373 @section silenceremove
5374
5375 Remove silence from the beginning, middle or end of the audio.
5376
5377 The filter accepts the following options:
5378
5379 @table @option
5380 @item start_periods
5381 This value is used to indicate if audio should be trimmed at beginning of
5382 the audio. A value of zero indicates no silence should be trimmed from the
5383 beginning. When specifying a non-zero value, it trims audio up until it
5384 finds non-silence. Normally, when trimming silence from beginning of audio
5385 the @var{start_periods} will be @code{1} but it can be increased to higher
5386 values to trim all audio up to specific count of non-silence periods.
5387 Default value is @code{0}.
5388
5389 @item start_duration
5390 Specify the amount of time that non-silence must be detected before it stops
5391 trimming audio. By increasing the duration, bursts of noises can be treated
5392 as silence and trimmed off. Default value is @code{0}.
5393
5394 @item start_threshold
5395 This indicates what sample value should be treated as silence. For digital
5396 audio, a value of @code{0} may be fine but for audio recorded from analog,
5397 you may wish to increase the value to account for background noise.
5398 Can be specified in dB (in case "dB" is appended to the specified value)
5399 or amplitude ratio. Default value is @code{0}.
5400
5401 @item start_silence
5402 Specify max duration of silence at beginning that will be kept after
5403 trimming. Default is 0, which is equal to trimming all samples detected
5404 as silence.
5405
5406 @item start_mode
5407 Specify mode of detection of silence end in start of multi-channel audio.
5408 Can be @var{any} or @var{all}. Default is @var{any}.
5409 With @var{any}, any sample that is detected as non-silence will cause
5410 stopped trimming of silence.
5411 With @var{all}, only if all channels are detected as non-silence will cause
5412 stopped trimming of silence.
5413
5414 @item stop_periods
5415 Set the count for trimming silence from the end of audio.
5416 To remove silence from the middle of a file, specify a @var{stop_periods}
5417 that is negative. This value is then treated as a positive value and is
5418 used to indicate the effect should restart processing as specified by
5419 @var{start_periods}, making it suitable for removing periods of silence
5420 in the middle of the audio.
5421 Default value is @code{0}.
5422
5423 @item stop_duration
5424 Specify a duration of silence that must exist before audio is not copied any
5425 more. By specifying a higher duration, silence that is wanted can be left in
5426 the audio.
5427 Default value is @code{0}.
5428
5429 @item stop_threshold
5430 This is the same as @option{start_threshold} but for trimming silence from
5431 the end of audio.
5432 Can be specified in dB (in case "dB" is appended to the specified value)
5433 or amplitude ratio. Default value is @code{0}.
5434
5435 @item stop_silence
5436 Specify max duration of silence at end that will be kept after
5437 trimming. Default is 0, which is equal to trimming all samples detected
5438 as silence.
5439
5440 @item stop_mode
5441 Specify mode of detection of silence start in end of multi-channel audio.
5442 Can be @var{any} or @var{all}. Default is @var{any}.
5443 With @var{any}, any sample that is detected as non-silence will cause
5444 stopped trimming of silence.
5445 With @var{all}, only if all channels are detected as non-silence will cause
5446 stopped trimming of silence.
5447
5448 @item detection
5449 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
5450 and works better with digital silence which is exactly 0.
5451 Default value is @code{rms}.
5452
5453 @item window
5454 Set duration in number of seconds used to calculate size of window in number
5455 of samples for detecting silence.
5456 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
5457 @end table
5458
5459 @subsection Examples
5460
5461 @itemize
5462 @item
5463 The following example shows how this filter can be used to start a recording
5464 that does not contain the delay at the start which usually occurs between
5465 pressing the record button and the start of the performance:
5466 @example
5467 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
5468 @end example
5469
5470 @item
5471 Trim all silence encountered from beginning to end where there is more than 1
5472 second of silence in audio:
5473 @example
5474 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
5475 @end example
5476
5477 @item
5478 Trim all digital silence samples, using peak detection, from beginning to end
5479 where there is more than 0 samples of digital silence in audio and digital
5480 silence is detected in all channels at same positions in stream:
5481 @example
5482 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
5483 @end example
5484 @end itemize
5485
5486 @section sofalizer
5487
5488 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
5489 loudspeakers around the user for binaural listening via headphones (audio
5490 formats up to 9 channels supported).
5491 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
5492 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
5493 Austrian Academy of Sciences.
5494
5495 To enable compilation of this filter you need to configure FFmpeg with
5496 @code{--enable-libmysofa}.
5497
5498 The filter accepts the following options:
5499
5500 @table @option
5501 @item sofa
5502 Set the SOFA file used for rendering.
5503
5504 @item gain
5505 Set gain applied to audio. Value is in dB. Default is 0.
5506
5507 @item rotation
5508 Set rotation of virtual loudspeakers in deg. Default is 0.
5509
5510 @item elevation
5511 Set elevation of virtual speakers in deg. Default is 0.
5512
5513 @item radius
5514 Set distance in meters between loudspeakers and the listener with near-field
5515 HRTFs. Default is 1.
5516
5517 @item type
5518 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
5519 processing audio in time domain which is slow.
5520 @var{freq} is processing audio in frequency domain which is fast.
5521 Default is @var{freq}.
5522
5523 @item speakers
5524 Set custom positions of virtual loudspeakers. Syntax for this option is:
5525 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
5526 Each virtual loudspeaker is described with short channel name following with
5527 azimuth and elevation in degrees.
5528 Each virtual loudspeaker description is separated by '|'.
5529 For example to override front left and front right channel positions use:
5530 'speakers=FL 45 15|FR 345 15'.
5531 Descriptions with unrecognised channel names are ignored.
5532
5533 @item lfegain
5534 Set custom gain for LFE channels. Value is in dB. Default is 0.
5535
5536 @item framesize
5537 Set custom frame size in number of samples. Default is 1024.
5538 Allowed range is from 1024 to 96000. Only used if option @samp{type}
5539 is set to @var{freq}.
5540
5541 @item normalize
5542 Should all IRs be normalized upon importing SOFA file.
5543 By default is enabled.
5544
5545 @item interpolate
5546 Should nearest IRs be interpolated with neighbor IRs if exact position
5547 does not match. By default is disabled.
5548
5549 @item minphase
5550 Minphase all IRs upon loading of SOFA file. By default is disabled.
5551
5552 @item anglestep
5553 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
5554
5555 @item radstep
5556 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
5557 @end table
5558
5559 @subsection Examples
5560
5561 @itemize
5562 @item
5563 Using ClubFritz6 sofa file:
5564 @example
5565 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
5566 @end example
5567
5568 @item
5569 Using ClubFritz12 sofa file and bigger radius with small rotation:
5570 @example
5571 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
5572 @end example
5573
5574 @item
5575 Similar as above but with custom speaker positions for front left, front right, back left and back right
5576 and also with custom gain:
5577 @example
5578 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
5579 @end example
5580 @end itemize
5581
5582 @section speechnorm
5583 Speech Normalizer.
5584
5585 This filter expands or compresses each half-cycle of audio samples
5586 (local set of samples all above or all below zero and between two nearest zero crossings) depending
5587 on threshold value, so audio reaches target peak value under conditions controlled by below options.
5588
5589 The filter accepts the following options:
5590
5591 @table @option
5592 @item peak, p
5593 Set the expansion target peak value. This specifies the highest allowed absolute amplitude
5594 level for the normalized audio input. Default value is 0.95. Allowed range is from 0.0 to 1.0.
5595
5596 @item expansion, e
5597 Set the maximum expansion factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5598 This option controls maximum local half-cycle of samples expansion. The maximum expansion
5599 would be such that local peak value reaches target peak value but never to surpass it and that
5600 ratio between new and previous peak value does not surpass this option value.
5601
5602 @item compression, c
5603 Set the maximum compression factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5604 This option controls maximum local half-cycle of samples compression. This option is used
5605 only if @option{threshold} option is set to value greater than 0.0, then in such cases
5606 when local peak is lower or same as value set by @option{threshold} all samples belonging to
5607 that peak's half-cycle will be compressed by current compression factor.
5608
5609 @item threshold, t
5610 Set the threshold value. Default value is 0.0. Allowed range is from 0.0 to 1.0.
5611 This option specifies which half-cycles of samples will be compressed and which will be expanded.
5612 Any half-cycle samples with their local peak value below or same as this option value will be
5613 compressed by current compression factor, otherwise, if greater than threshold value they will be
5614 expanded with expansion factor so that it could reach peak target value but never surpass it.
5615
5616 @item raise, r
5617 Set the expansion raising amount per each half-cycle of samples. Default value is 0.001.
5618 Allowed range is from 0.0 to 1.0. This controls how fast expansion factor is raised per
5619 each new half-cycle until it reaches @option{expansion} value.
5620 Setting this options too high may lead to distortions.
5621
5622 @item fall, f
5623 Set the compression raising amount per each half-cycle of samples. Default value is 0.001.
5624 Allowed range is from 0.0 to 1.0. This controls how fast compression factor is raised per
5625 each new half-cycle until it reaches @option{compression} value.
5626
5627 @item channels, h
5628 Specify which channels to filter, by default all available channels are filtered.
5629
5630 @item invert, i
5631 Enable inverted filtering, by default is disabled. This inverts interpretation of @option{threshold}
5632 option. When enabled any half-cycle of samples with their local peak value below or same as
5633 @option{threshold} option will be expanded otherwise it will be compressed.
5634
5635 @item link, l
5636 Link channels when calculating gain applied to each filtered channel sample, by default is disabled.
5637 When disabled each filtered channel gain calculation is independent, otherwise when this option
5638 is enabled the minimum of all possible gains for each filtered channel is used.
5639 @end table
5640
5641 @subsection Commands
5642
5643 This filter supports the all above options as @ref{commands}.
5644
5645 @section stereotools
5646
5647 This filter has some handy utilities to manage stereo signals, for converting
5648 M/S stereo recordings to L/R signal while having control over the parameters
5649 or spreading the stereo image of master track.
5650
5651 The filter accepts the following options:
5652
5653 @table @option
5654 @item level_in
5655 Set input level before filtering for both channels. Defaults is 1.
5656 Allowed range is from 0.015625 to 64.
5657
5658 @item level_out
5659 Set output level after filtering for both channels. Defaults is 1.
5660 Allowed range is from 0.015625 to 64.
5661
5662 @item balance_in
5663 Set input balance between both channels. Default is 0.
5664 Allowed range is from -1 to 1.
5665
5666 @item balance_out
5667 Set output balance between both channels. Default is 0.
5668 Allowed range is from -1 to 1.
5669
5670 @item softclip
5671 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
5672 clipping. Disabled by default.
5673
5674 @item mutel
5675 Mute the left channel. Disabled by default.
5676
5677 @item muter
5678 Mute the right channel. Disabled by default.
5679
5680 @item phasel
5681 Change the phase of the left channel. Disabled by default.
5682
5683 @item phaser
5684 Change the phase of the right channel. Disabled by default.
5685
5686 @item mode
5687 Set stereo mode. Available values are:
5688
5689 @table @samp
5690 @item lr>lr
5691 Left/Right to Left/Right, this is default.
5692
5693 @item lr>ms
5694 Left/Right to Mid/Side.
5695
5696 @item ms>lr
5697 Mid/Side to Left/Right.
5698
5699 @item lr>ll
5700 Left/Right to Left/Left.
5701
5702 @item lr>rr
5703 Left/Right to Right/Right.
5704
5705 @item lr>l+r
5706 Left/Right to Left + Right.
5707
5708 @item lr>rl
5709 Left/Right to Right/Left.
5710
5711 @item ms>ll
5712 Mid/Side to Left/Left.
5713
5714 @item ms>rr
5715 Mid/Side to Right/Right.
5716
5717 @item ms>rl
5718 Mid/Side to Right/Left.
5719
5720 @item lr>l-r
5721 Left/Right to Left - Right.
5722 @end table
5723
5724 @item slev
5725 Set level of side signal. Default is 1.
5726 Allowed range is from 0.015625 to 64.
5727
5728 @item sbal
5729 Set balance of side signal. Default is 0.
5730 Allowed range is from -1 to 1.
5731
5732 @item mlev
5733 Set level of the middle signal. Default is 1.
5734 Allowed range is from 0.015625 to 64.
5735
5736 @item mpan
5737 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5738
5739 @item base
5740 Set stereo base between mono and inversed channels. Default is 0.
5741 Allowed range is from -1 to 1.
5742
5743 @item delay
5744 Set delay in milliseconds how much to delay left from right channel and
5745 vice versa. Default is 0. Allowed range is from -20 to 20.
5746
5747 @item sclevel
5748 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5749
5750 @item phase
5751 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5752
5753 @item bmode_in, bmode_out
5754 Set balance mode for balance_in/balance_out option.
5755
5756 Can be one of the following:
5757
5758 @table @samp
5759 @item balance
5760 Classic balance mode. Attenuate one channel at time.
5761 Gain is raised up to 1.
5762
5763 @item amplitude
5764 Similar as classic mode above but gain is raised up to 2.
5765
5766 @item power
5767 Equal power distribution, from -6dB to +6dB range.
5768 @end table
5769 @end table
5770
5771 @subsection Commands
5772
5773 This filter supports the all above options as @ref{commands}.
5774
5775 @subsection Examples
5776
5777 @itemize
5778 @item
5779 Apply karaoke like effect:
5780 @example
5781 stereotools=mlev=0.015625
5782 @end example
5783
5784 @item
5785 Convert M/S signal to L/R:
5786 @example
5787 "stereotools=mode=ms>lr"
5788 @end example
5789 @end itemize
5790
5791 @section stereowiden
5792
5793 This filter enhance the stereo effect by suppressing signal common to both
5794 channels and by delaying the signal of left into right and vice versa,
5795 thereby widening the stereo effect.
5796
5797 The filter accepts the following options:
5798
5799 @table @option
5800 @item delay
5801 Time in milliseconds of the delay of left signal into right and vice versa.
5802 Default is 20 milliseconds.
5803
5804 @item feedback
5805 Amount of gain in delayed signal into right and vice versa. Gives a delay
5806 effect of left signal in right output and vice versa which gives widening
5807 effect. Default is 0.3.
5808
5809 @item crossfeed
5810 Cross feed of left into right with inverted phase. This helps in suppressing
5811 the mono. If the value is 1 it will cancel all the signal common to both
5812 channels. Default is 0.3.
5813
5814 @item drymix
5815 Set level of input signal of original channel. Default is 0.8.
5816 @end table
5817
5818 @subsection Commands
5819
5820 This filter supports the all above options except @code{delay} as @ref{commands}.
5821
5822 @section superequalizer
5823 Apply 18 band equalizer.
5824
5825 The filter accepts the following options:
5826 @table @option
5827 @item 1b
5828 Set 65Hz band gain.
5829 @item 2b
5830 Set 92Hz band gain.
5831 @item 3b
5832 Set 131Hz band gain.
5833 @item 4b
5834 Set 185Hz band gain.
5835 @item 5b
5836 Set 262Hz band gain.
5837 @item 6b
5838 Set 370Hz band gain.
5839 @item 7b
5840 Set 523Hz band gain.
5841 @item 8b
5842 Set 740Hz band gain.
5843 @item 9b
5844 Set 1047Hz band gain.
5845 @item 10b
5846 Set 1480Hz band gain.
5847 @item 11b
5848 Set 2093Hz band gain.
5849 @item 12b
5850 Set 2960Hz band gain.
5851 @item 13b
5852 Set 4186Hz band gain.
5853 @item 14b
5854 Set 5920Hz band gain.
5855 @item 15b
5856 Set 8372Hz band gain.
5857 @item 16b
5858 Set 11840Hz band gain.
5859 @item 17b
5860 Set 16744Hz band gain.
5861 @item 18b
5862 Set 20000Hz band gain.
5863 @end table
5864
5865 @section surround
5866 Apply audio surround upmix filter.
5867
5868 This filter allows to produce multichannel output from audio stream.
5869
5870 The filter accepts the following options:
5871
5872 @table @option
5873 @item chl_out
5874 Set output channel layout. By default, this is @var{5.1}.
5875
5876 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5877 for the required syntax.
5878
5879 @item chl_in
5880 Set input channel layout. By default, this is @var{stereo}.
5881
5882 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5883 for the required syntax.
5884
5885 @item level_in
5886 Set input volume level. By default, this is @var{1}.
5887
5888 @item level_out
5889 Set output volume level. By default, this is @var{1}.
5890
5891 @item lfe
5892 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5893
5894 @item lfe_low
5895 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5896
5897 @item lfe_high
5898 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5899
5900 @item lfe_mode
5901 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5902 In @var{add} mode, LFE channel is created from input audio and added to output.
5903 In @var{sub} mode, LFE channel is created from input audio and added to output but
5904 also all non-LFE output channels are subtracted with output LFE channel.
5905
5906 @item angle
5907 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5908 Default is @var{90}.
5909
5910 @item fc_in
5911 Set front center input volume. By default, this is @var{1}.
5912
5913 @item fc_out
5914 Set front center output volume. By default, this is @var{1}.
5915
5916 @item fl_in
5917 Set front left input volume. By default, this is @var{1}.
5918
5919 @item fl_out
5920 Set front left output volume. By default, this is @var{1}.
5921
5922 @item fr_in
5923 Set front right input volume. By default, this is @var{1}.
5924
5925 @item fr_out
5926 Set front right output volume. By default, this is @var{1}.
5927
5928 @item sl_in
5929 Set side left input volume. By default, this is @var{1}.
5930
5931 @item sl_out
5932 Set side left output volume. By default, this is @var{1}.
5933
5934 @item sr_in
5935 Set side right input volume. By default, this is @var{1}.
5936
5937 @item sr_out
5938 Set side right output volume. By default, this is @var{1}.
5939
5940 @item bl_in
5941 Set back left input volume. By default, this is @var{1}.
5942
5943 @item bl_out
5944 Set back left output volume. By default, this is @var{1}.
5945
5946 @item br_in
5947 Set back right input volume. By default, this is @var{1}.
5948
5949 @item br_out
5950 Set back right output volume. By default, this is @var{1}.
5951
5952 @item bc_in
5953 Set back center input volume. By default, this is @var{1}.
5954
5955 @item bc_out
5956 Set back center output volume. By default, this is @var{1}.
5957
5958 @item lfe_in
5959 Set LFE input volume. By default, this is @var{1}.
5960
5961 @item lfe_out
5962 Set LFE output volume. By default, this is @var{1}.
5963
5964 @item allx
5965 Set spread usage of stereo image across X axis for all channels.
5966
5967 @item ally
5968 Set spread usage of stereo image across Y axis for all channels.
5969
5970 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5971 Set spread usage of stereo image across X axis for each channel.
5972
5973 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5974 Set spread usage of stereo image across Y axis for each channel.
5975
5976 @item win_size
5977 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5978
5979 @item win_func
5980 Set window function.
5981
5982 It accepts the following values:
5983 @table @samp
5984 @item rect
5985 @item bartlett
5986 @item hann, hanning
5987 @item hamming
5988 @item blackman
5989 @item welch
5990 @item flattop
5991 @item bharris
5992 @item bnuttall
5993 @item bhann
5994 @item sine
5995 @item nuttall
5996 @item lanczos
5997 @item gauss
5998 @item tukey
5999 @item dolph
6000 @item cauchy
6001 @item parzen
6002 @item poisson
6003 @item bohman
6004 @end table
6005 Default is @code{hann}.
6006
6007 @item overlap
6008 Set window overlap. If set to 1, the recommended overlap for selected
6009 window function will be picked. Default is @code{0.5}.
6010 @end table
6011
6012 @section treble, highshelf
6013
6014 Boost or cut treble (upper) frequencies of the audio using a two-pole
6015 shelving filter with a response similar to that of a standard
6016 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
6017
6018 The filter accepts the following options:
6019
6020 @table @option
6021 @item gain, g
6022 Give the gain at whichever is the lower of ~22 kHz and the
6023 Nyquist frequency. Its useful range is about -20 (for a large cut)
6024 to +20 (for a large boost). Beware of clipping when using a positive gain.
6025
6026 @item frequency, f
6027 Set the filter's central frequency and so can be used
6028 to extend or reduce the frequency range to be boosted or cut.
6029 The default value is @code{3000} Hz.
6030
6031 @item width_type, t
6032 Set method to specify band-width of filter.
6033 @table @option
6034 @item h
6035 Hz
6036 @item q
6037 Q-Factor
6038 @item o
6039 octave
6040 @item s
6041 slope
6042 @item k
6043 kHz
6044 @end table
6045
6046 @item width, w
6047 Determine how steep is the filter's shelf transition.
6048
6049 @item mix, m
6050 How much to use filtered signal in output. Default is 1.
6051 Range is between 0 and 1.
6052
6053 @item channels, c
6054 Specify which channels to filter, by default all available are filtered.
6055
6056 @item normalize, n
6057 Normalize biquad coefficients, by default is disabled.
6058 Enabling it will normalize magnitude response at DC to 0dB.
6059
6060 @item transform, a
6061 Set transform type of IIR filter.
6062 @table @option
6063 @item di
6064 @item dii
6065 @item tdii
6066 @item latt
6067 @end table
6068
6069 @item precision, r
6070 Set precison of filtering.
6071 @table @option
6072 @item auto
6073 Pick automatic sample format depending on surround filters.
6074 @item s16
6075 Always use signed 16-bit.
6076 @item s32
6077 Always use signed 32-bit.
6078 @item f32
6079 Always use float 32-bit.
6080 @item f64
6081 Always use float 64-bit.
6082 @end table
6083 @end table
6084
6085 @subsection Commands
6086
6087 This filter supports the following commands:
6088 @table @option
6089 @item frequency, f
6090 Change treble frequency.
6091 Syntax for the command is : "@var{frequency}"
6092
6093 @item width_type, t
6094 Change treble width_type.
6095 Syntax for the command is : "@var{width_type}"
6096
6097 @item width, w
6098 Change treble width.
6099 Syntax for the command is : "@var{width}"
6100
6101 @item gain, g
6102 Change treble gain.
6103 Syntax for the command is : "@var{gain}"
6104
6105 @item mix, m
6106 Change treble mix.
6107 Syntax for the command is : "@var{mix}"
6108 @end table
6109
6110 @section tremolo
6111
6112 Sinusoidal amplitude modulation.
6113
6114 The filter accepts the following options:
6115
6116 @table @option
6117 @item f
6118 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
6119 (20 Hz or lower) will result in a tremolo effect.
6120 This filter may also be used as a ring modulator by specifying
6121 a modulation frequency higher than 20 Hz.
6122 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
6123
6124 @item d
6125 Depth of modulation as a percentage. Range is 0.0 - 1.0.
6126 Default value is 0.5.
6127 @end table
6128
6129 @section vibrato
6130
6131 Sinusoidal phase modulation.
6132
6133 The filter accepts the following options:
6134
6135 @table @option
6136 @item f
6137 Modulation frequency in Hertz.
6138 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
6139
6140 @item d
6141 Depth of modulation as a percentage. Range is 0.0 - 1.0.
6142 Default value is 0.5.
6143 @end table
6144
6145 @section volume
6146
6147 Adjust the input audio volume.
6148
6149 It accepts the following parameters:
6150 @table @option
6151
6152 @item volume
6153 Set audio volume expression.
6154
6155 Output values are clipped to the maximum value.
6156
6157 The output audio volume is given by the relation:
6158 @example
6159 @var{output_volume} = @var{volume} * @var{input_volume}
6160 @end example
6161
6162 The default value for @var{volume} is "1.0".
6163
6164 @item precision
6165 This parameter represents the mathematical precision.
6166
6167 It determines which input sample formats will be allowed, which affects the
6168 precision of the volume scaling.
6169
6170 @table @option
6171 @item fixed
6172 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
6173 @item float
6174 32-bit floating-point; this limits input sample format to FLT. (default)
6175 @item double
6176 64-bit floating-point; this limits input sample format to DBL.
6177 @end table
6178
6179 @item replaygain
6180 Choose the behaviour on encountering ReplayGain side data in input frames.
6181
6182 @table @option
6183 @item drop
6184 Remove ReplayGain side data, ignoring its contents (the default).
6185
6186 @item ignore
6187 Ignore ReplayGain side data, but leave it in the frame.
6188
6189 @item track
6190 Prefer the track gain, if present.
6191
6192 @item album
6193 Prefer the album gain, if present.
6194 @end table
6195
6196 @item replaygain_preamp
6197 Pre-amplification gain in dB to apply to the selected replaygain gain.
6198
6199 Default value for @var{replaygain_preamp} is 0.0.
6200
6201 @item replaygain_noclip
6202 Prevent clipping by limiting the gain applied.
6203
6204 Default value for @var{replaygain_noclip} is 1.
6205
6206 @item eval
6207 Set when the volume expression is evaluated.
6208
6209 It accepts the following values:
6210 @table @samp
6211 @item once
6212 only evaluate expression once during the filter initialization, or
6213 when the @samp{volume} command is sent
6214
6215 @item frame
6216 evaluate expression for each incoming frame
6217 @end table
6218
6219 Default value is @samp{once}.
6220 @end table
6221
6222 The volume expression can contain the following parameters.
6223
6224 @table @option
6225 @item n
6226 frame number (starting at zero)
6227 @item nb_channels
6228 number of channels
6229 @item nb_consumed_samples
6230 number of samples consumed by the filter
6231 @item nb_samples
6232 number of samples in the current frame
6233 @item pos
6234 original frame position in the file
6235 @item pts
6236 frame PTS
6237 @item sample_rate
6238 sample rate
6239 @item startpts
6240 PTS at start of stream
6241 @item startt
6242 time at start of stream
6243 @item t
6244 frame time
6245 @item tb
6246 timestamp timebase
6247 @item volume
6248 last set volume value
6249 @end table
6250
6251 Note that when @option{eval} is set to @samp{once} only the
6252 @var{sample_rate} and @var{tb} variables are available, all other
6253 variables will evaluate to NAN.
6254
6255 @subsection Commands
6256
6257 This filter supports the following commands:
6258 @table @option
6259 @item volume
6260 Modify the volume expression.
6261 The command accepts the same syntax of the corresponding option.
6262
6263 If the specified expression is not valid, it is kept at its current
6264 value.
6265 @end table
6266
6267 @subsection Examples
6268
6269 @itemize
6270 @item
6271 Halve the input audio volume:
6272 @example
6273 volume=volume=0.5
6274 volume=volume=1/2
6275 volume=volume=-6.0206dB
6276 @end example
6277
6278 In all the above example the named key for @option{volume} can be
6279 omitted, for example like in:
6280 @example
6281 volume=0.5
6282 @end example
6283
6284 @item
6285 Increase input audio power by 6 decibels using fixed-point precision:
6286 @example
6287 volume=volume=6dB:precision=fixed
6288 @end example
6289
6290 @item
6291 Fade volume after time 10 with an annihilation period of 5 seconds:
6292 @example
6293 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
6294 @end example
6295 @end itemize
6296
6297 @section volumedetect
6298
6299 Detect the volume of the input video.
6300
6301 The filter has no parameters. The input is not modified. Statistics about
6302 the volume will be printed in the log when the input stream end is reached.
6303
6304 In particular it will show the mean volume (root mean square), maximum
6305 volume (on a per-sample basis), and the beginning of a histogram of the
6306 registered volume values (from the maximum value to a cumulated 1/1000 of
6307 the samples).
6308
6309 All volumes are in decibels relative to the maximum PCM value.
6310
6311 @subsection Examples
6312
6313 Here is an excerpt of the output:
6314 @example
6315 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
6316 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
6317 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
6318 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
6319 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
6320 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
6321 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
6322 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
6323 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
6324 @end example
6325
6326 It means that:
6327 @itemize
6328 @item
6329 The mean square energy is approximately -27 dB, or 10^-2.7.
6330 @item
6331 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
6332 @item
6333 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
6334 @end itemize
6335
6336 In other words, raising the volume by +4 dB does not cause any clipping,
6337 raising it by +5 dB causes clipping for 6 samples, etc.
6338
6339 @c man end AUDIO FILTERS
6340
6341 @chapter Audio Sources
6342 @c man begin AUDIO SOURCES
6343
6344 Below is a description of the currently available audio sources.
6345
6346 @section abuffer
6347
6348 Buffer audio frames, and make them available to the filter chain.
6349
6350 This source is mainly intended for a programmatic use, in particular
6351 through the interface defined in @file{libavfilter/buffersrc.h}.
6352
6353 It accepts the following parameters:
6354 @table @option
6355
6356 @item time_base
6357 The timebase which will be used for timestamps of submitted frames. It must be
6358 either a floating-point number or in @var{numerator}/@var{denominator} form.
6359
6360 @item sample_rate
6361 The sample rate of the incoming audio buffers.
6362
6363 @item sample_fmt
6364 The sample format of the incoming audio buffers.
6365 Either a sample format name or its corresponding integer representation from
6366 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
6367
6368 @item channel_layout
6369 The channel layout of the incoming audio buffers.
6370 Either a channel layout name from channel_layout_map in
6371 @file{libavutil/channel_layout.c} or its corresponding integer representation
6372 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
6373
6374 @item channels
6375 The number of channels of the incoming audio buffers.
6376 If both @var{channels} and @var{channel_layout} are specified, then they
6377 must be consistent.
6378
6379 @end table
6380
6381 @subsection Examples
6382
6383 @example
6384 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
6385 @end example
6386
6387 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
6388 Since the sample format with name "s16p" corresponds to the number
6389 6 and the "stereo" channel layout corresponds to the value 0x3, this is
6390 equivalent to:
6391 @example
6392 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
6393 @end example
6394
6395 @section aevalsrc
6396
6397 Generate an audio signal specified by an expression.
6398
6399 This source accepts in input one or more expressions (one for each
6400 channel), which are evaluated and used to generate a corresponding
6401 audio signal.
6402
6403 This source accepts the following options:
6404
6405 @table @option
6406 @item exprs
6407 Set the '|'-separated expressions list for each separate channel. In case the
6408 @option{channel_layout} option is not specified, the selected channel layout
6409 depends on the number of provided expressions. Otherwise the last
6410 specified expression is applied to the remaining output channels.
6411
6412 @item channel_layout, c
6413 Set the channel layout. The number of channels in the specified layout
6414 must be equal to the number of specified expressions.
6415
6416 @item duration, d
6417 Set the minimum duration of the sourced audio. See
6418 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6419 for the accepted syntax.
6420 Note that the resulting duration may be greater than the specified
6421 duration, as the generated audio is always cut at the end of a
6422 complete frame.
6423
6424 If not specified, or the expressed duration is negative, the audio is
6425 supposed to be generated forever.
6426
6427 @item nb_samples, n
6428 Set the number of samples per channel per each output frame,
6429 default to 1024.
6430
6431 @item sample_rate, s
6432 Specify the sample rate, default to 44100.
6433 @end table
6434
6435 Each expression in @var{exprs} can contain the following constants:
6436
6437 @table @option
6438 @item n
6439 number of the evaluated sample, starting from 0
6440
6441 @item t
6442 time of the evaluated sample expressed in seconds, starting from 0
6443
6444 @item s
6445 sample rate
6446
6447 @end table
6448
6449 @subsection Examples
6450
6451 @itemize
6452 @item
6453 Generate silence:
6454 @example
6455 aevalsrc=0
6456 @end example
6457
6458 @item
6459 Generate a sin signal with frequency of 440 Hz, set sample rate to
6460 8000 Hz:
6461 @example
6462 aevalsrc="sin(440*2*PI*t):s=8000"
6463 @end example
6464
6465 @item
6466 Generate a two channels signal, specify the channel layout (Front
6467 Center + Back Center) explicitly:
6468 @example
6469 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
6470 @end example
6471
6472 @item
6473 Generate white noise:
6474 @example
6475 aevalsrc="-2+random(0)"
6476 @end example
6477
6478 @item
6479 Generate an amplitude modulated signal:
6480 @example
6481 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
6482 @end example
6483
6484 @item
6485 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
6486 @example
6487 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
6488 @end example
6489
6490 @end itemize
6491
6492 @section afirsrc
6493
6494 Generate a FIR coefficients using frequency sampling method.
6495
6496 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6497
6498 The filter accepts the following options:
6499
6500 @table @option
6501 @item taps, t
6502 Set number of filter coefficents in output audio stream.
6503 Default value is 1025.
6504
6505 @item frequency, f
6506 Set frequency points from where magnitude and phase are set.
6507 This must be in non decreasing order, and first element must be 0, while last element
6508 must be 1. Elements are separated by white spaces.
6509
6510 @item magnitude, m
6511 Set magnitude value for every frequency point set by @option{frequency}.
6512 Number of values must be same as number of frequency points.
6513 Values are separated by white spaces.
6514
6515 @item phase, p
6516 Set phase value for every frequency point set by @option{frequency}.
6517 Number of values must be same as number of frequency points.
6518 Values are separated by white spaces.
6519
6520 @item sample_rate, r
6521 Set sample rate, default is 44100.
6522
6523 @item nb_samples, n
6524 Set number of samples per each frame. Default is 1024.
6525
6526 @item win_func, w
6527 Set window function. Default is blackman.
6528 @end table
6529
6530 @section anullsrc
6531
6532 The null audio source, return unprocessed audio frames. It is mainly useful
6533 as a template and to be employed in analysis / debugging tools, or as
6534 the source for filters which ignore the input data (for example the sox
6535 synth filter).
6536
6537 This source accepts the following options:
6538
6539 @table @option
6540
6541 @item channel_layout, cl
6542
6543 Specifies the channel layout, and can be either an integer or a string
6544 representing a channel layout. The default value of @var{channel_layout}
6545 is "stereo".
6546
6547 Check the channel_layout_map definition in
6548 @file{libavutil/channel_layout.c} for the mapping between strings and
6549 channel layout values.
6550
6551 @item sample_rate, r
6552 Specifies the sample rate, and defaults to 44100.
6553
6554 @item nb_samples, n
6555 Set the number of samples per requested frames.
6556
6557 @item duration, d
6558 Set the duration of the sourced audio. See
6559 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6560 for the accepted syntax.
6561
6562 If not specified, or the expressed duration is negative, the audio is
6563 supposed to be generated forever.
6564 @end table
6565
6566 @subsection Examples
6567
6568 @itemize
6569 @item
6570 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
6571 @example
6572 anullsrc=r=48000:cl=4
6573 @end example
6574
6575 @item
6576 Do the same operation with a more obvious syntax:
6577 @example
6578 anullsrc=r=48000:cl=mono
6579 @end example
6580 @end itemize
6581
6582 All the parameters need to be explicitly defined.
6583
6584 @section flite
6585
6586 Synthesize a voice utterance using the libflite library.
6587
6588 To enable compilation of this filter you need to configure FFmpeg with
6589 @code{--enable-libflite}.
6590
6591 Note that versions of the flite library prior to 2.0 are not thread-safe.
6592
6593 The filter accepts the following options:
6594
6595 @table @option
6596
6597 @item list_voices
6598 If set to 1, list the names of the available voices and exit
6599 immediately. Default value is 0.
6600
6601 @item nb_samples, n
6602 Set the maximum number of samples per frame. Default value is 512.
6603
6604 @item textfile
6605 Set the filename containing the text to speak.
6606
6607 @item text
6608 Set the text to speak.
6609
6610 @item voice, v
6611 Set the voice to use for the speech synthesis. Default value is
6612 @code{kal}. See also the @var{list_voices} option.
6613 @end table
6614
6615 @subsection Examples
6616
6617 @itemize
6618 @item
6619 Read from file @file{speech.txt}, and synthesize the text using the
6620 standard flite voice:
6621 @example
6622 flite=textfile=speech.txt
6623 @end example
6624
6625 @item
6626 Read the specified text selecting the @code{slt} voice:
6627 @example
6628 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6629 @end example
6630
6631 @item
6632 Input text to ffmpeg:
6633 @example
6634 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6635 @end example
6636
6637 @item
6638 Make @file{ffplay} speak the specified text, using @code{flite} and
6639 the @code{lavfi} device:
6640 @example
6641 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
6642 @end example
6643 @end itemize
6644
6645 For more information about libflite, check:
6646 @url{http://www.festvox.org/flite/}
6647
6648 @section anoisesrc
6649
6650 Generate a noise audio signal.
6651
6652 The filter accepts the following options:
6653
6654 @table @option
6655 @item sample_rate, r
6656 Specify the sample rate. Default value is 48000 Hz.
6657
6658 @item amplitude, a
6659 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
6660 is 1.0.
6661
6662 @item duration, d
6663 Specify the duration of the generated audio stream. Not specifying this option
6664 results in noise with an infinite length.
6665
6666 @item color, colour, c
6667 Specify the color of noise. Available noise colors are white, pink, brown,
6668 blue, violet and velvet. Default color is white.
6669
6670 @item seed, s
6671 Specify a value used to seed the PRNG.
6672
6673 @item nb_samples, n
6674 Set the number of samples per each output frame, default is 1024.
6675 @end table
6676
6677 @subsection Examples
6678
6679 @itemize
6680
6681 @item
6682 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
6683 @example
6684 anoisesrc=d=60:c=pink:r=44100:a=0.5
6685 @end example
6686 @end itemize
6687
6688 @section hilbert
6689
6690 Generate odd-tap Hilbert transform FIR coefficients.
6691
6692 The resulting stream can be used with @ref{afir} filter for phase-shifting
6693 the signal by 90 degrees.
6694
6695 This is used in many matrix coding schemes and for analytic signal generation.
6696 The process is often written as a multiplication by i (or j), the imaginary unit.
6697
6698 The filter accepts the following options:
6699
6700 @table @option
6701
6702 @item sample_rate, s
6703 Set sample rate, default is 44100.
6704
6705 @item taps, t
6706 Set length of FIR filter, default is 22051.
6707
6708 @item nb_samples, n
6709 Set number of samples per each frame.
6710
6711 @item win_func, w
6712 Set window function to be used when generating FIR coefficients.
6713 @end table
6714
6715 @section sinc
6716
6717 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
6718
6719 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6720
6721 The filter accepts the following options:
6722
6723 @table @option
6724 @item sample_rate, r
6725 Set sample rate, default is 44100.
6726
6727 @item nb_samples, n
6728 Set number of samples per each frame. Default is 1024.
6729
6730 @item hp
6731 Set high-pass frequency. Default is 0.
6732
6733 @item lp
6734 Set low-pass frequency. Default is 0.
6735 If high-pass frequency is lower than low-pass frequency and low-pass frequency
6736 is higher than 0 then filter will create band-pass filter coefficients,
6737 otherwise band-reject filter coefficients.
6738
6739 @item phase
6740 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
6741
6742 @item beta
6743 Set Kaiser window beta.
6744
6745 @item att
6746 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
6747
6748 @item round
6749 Enable rounding, by default is disabled.
6750
6751 @item hptaps
6752 Set number of taps for high-pass filter.
6753
6754 @item lptaps
6755 Set number of taps for low-pass filter.
6756 @end table
6757
6758 @section sine
6759
6760 Generate an audio signal made of a sine wave with amplitude 1/8.
6761
6762 The audio signal is bit-exact.
6763
6764 The filter accepts the following options:
6765
6766 @table @option
6767
6768 @item frequency, f
6769 Set the carrier frequency. Default is 440 Hz.
6770
6771 @item beep_factor, b
6772 Enable a periodic beep every second with frequency @var{beep_factor} times
6773 the carrier frequency. Default is 0, meaning the beep is disabled.
6774
6775 @item sample_rate, r
6776 Specify the sample rate, default is 44100.
6777
6778 @item duration, d
6779 Specify the duration of the generated audio stream.
6780
6781 @item samples_per_frame
6782 Set the number of samples per output frame.
6783
6784 The expression can contain the following constants:
6785
6786 @table @option
6787 @item n
6788 The (sequential) number of the output audio frame, starting from 0.
6789
6790 @item pts
6791 The PTS (Presentation TimeStamp) of the output audio frame,
6792 expressed in @var{TB} units.
6793
6794 @item t
6795 The PTS of the output audio frame, expressed in seconds.
6796
6797 @item TB
6798 The timebase of the output audio frames.
6799 @end table
6800
6801 Default is @code{1024}.
6802 @end table
6803
6804 @subsection Examples
6805
6806 @itemize
6807
6808 @item
6809 Generate a simple 440 Hz sine wave:
6810 @example
6811 sine
6812 @end example
6813
6814 @item
6815 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6816 @example
6817 sine=220:4:d=5
6818 sine=f=220:b=4:d=5
6819 sine=frequency=220:beep_factor=4:duration=5
6820 @end example
6821
6822 @item
6823 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6824 pattern:
6825 @example
6826 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6827 @end example
6828 @end itemize
6829
6830 @c man end AUDIO SOURCES
6831
6832 @chapter Audio Sinks
6833 @c man begin AUDIO SINKS
6834
6835 Below is a description of the currently available audio sinks.
6836
6837 @section abuffersink
6838
6839 Buffer audio frames, and make them available to the end of filter chain.
6840
6841 This sink is mainly intended for programmatic use, in particular
6842 through the interface defined in @file{libavfilter/buffersink.h}
6843 or the options system.
6844
6845 It accepts a pointer to an AVABufferSinkContext structure, which
6846 defines the incoming buffers' formats, to be passed as the opaque
6847 parameter to @code{avfilter_init_filter} for initialization.
6848 @section anullsink
6849
6850 Null audio sink; do absolutely nothing with the input audio. It is
6851 mainly useful as a template and for use in analysis / debugging
6852 tools.
6853
6854 @c man end AUDIO SINKS
6855
6856 @chapter Video Filters
6857 @c man begin VIDEO FILTERS
6858
6859 When you configure your FFmpeg build, you can disable any of the
6860 existing filters using @code{--disable-filters}.
6861 The configure output will show the video filters included in your
6862 build.
6863
6864 Below is a description of the currently available video filters.
6865
6866 @section addroi
6867
6868 Mark a region of interest in a video frame.
6869
6870 The frame data is passed through unchanged, but metadata is attached
6871 to the frame indicating regions of interest which can affect the
6872 behaviour of later encoding.  Multiple regions can be marked by
6873 applying the filter multiple times.
6874
6875 @table @option
6876 @item x
6877 Region distance in pixels from the left edge of the frame.
6878 @item y
6879 Region distance in pixels from the top edge of the frame.
6880 @item w
6881 Region width in pixels.
6882 @item h
6883 Region height in pixels.
6884
6885 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6886 and may contain the following variables:
6887 @table @option
6888 @item iw
6889 Width of the input frame.
6890 @item ih
6891 Height of the input frame.
6892 @end table
6893
6894 @item qoffset
6895 Quantisation offset to apply within the region.
6896
6897 This must be a real value in the range -1 to +1.  A value of zero
6898 indicates no quality change.  A negative value asks for better quality
6899 (less quantisation), while a positive value asks for worse quality
6900 (greater quantisation).
6901
6902 The range is calibrated so that the extreme values indicate the
6903 largest possible offset - if the rest of the frame is encoded with the
6904 worst possible quality, an offset of -1 indicates that this region
6905 should be encoded with the best possible quality anyway.  Intermediate
6906 values are then interpolated in some codec-dependent way.
6907
6908 For example, in 10-bit H.264 the quantisation parameter varies between
6909 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6910 this region should be encoded with a QP around one-tenth of the full
6911 range better than the rest of the frame.  So, if most of the frame
6912 were to be encoded with a QP of around 30, this region would get a QP
6913 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6914 An extreme value of -1 would indicate that this region should be
6915 encoded with the best possible quality regardless of the treatment of
6916 the rest of the frame - that is, should be encoded at a QP of -12.
6917 @item clear
6918 If set to true, remove any existing regions of interest marked on the
6919 frame before adding the new one.
6920 @end table
6921
6922 @subsection Examples
6923
6924 @itemize
6925 @item
6926 Mark the centre quarter of the frame as interesting.
6927 @example
6928 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6929 @end example
6930 @item
6931 Mark the 100-pixel-wide region on the left edge of the frame as very
6932 uninteresting (to be encoded at much lower quality than the rest of
6933 the frame).
6934 @example
6935 addroi=0:0:100:ih:+1/5
6936 @end example
6937 @end itemize
6938
6939 @section alphaextract
6940
6941 Extract the alpha component from the input as a grayscale video. This
6942 is especially useful with the @var{alphamerge} filter.
6943
6944 @section alphamerge
6945
6946 Add or replace the alpha component of the primary input with the
6947 grayscale value of a second input. This is intended for use with
6948 @var{alphaextract} to allow the transmission or storage of frame
6949 sequences that have alpha in a format that doesn't support an alpha
6950 channel.
6951
6952 For example, to reconstruct full frames from a normal YUV-encoded video
6953 and a separate video created with @var{alphaextract}, you might use:
6954 @example
6955 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6956 @end example
6957
6958 @section amplify
6959
6960 Amplify differences between current pixel and pixels of adjacent frames in
6961 same pixel location.
6962
6963 This filter accepts the following options:
6964
6965 @table @option
6966 @item radius
6967 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6968 For example radius of 3 will instruct filter to calculate average of 7 frames.
6969
6970 @item factor
6971 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6972
6973 @item threshold
6974 Set threshold for difference amplification. Any difference greater or equal to
6975 this value will not alter source pixel. Default is 10.
6976 Allowed range is from 0 to 65535.
6977
6978 @item tolerance
6979 Set tolerance for difference amplification. Any difference lower to
6980 this value will not alter source pixel. Default is 0.
6981 Allowed range is from 0 to 65535.
6982
6983 @item low
6984 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6985 This option controls maximum possible value that will decrease source pixel value.
6986
6987 @item high
6988 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6989 This option controls maximum possible value that will increase source pixel value.
6990
6991 @item planes
6992 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
6993 @end table
6994
6995 @subsection Commands
6996
6997 This filter supports the following @ref{commands} that corresponds to option of same name:
6998 @table @option
6999 @item factor
7000 @item threshold
7001 @item tolerance
7002 @item low
7003 @item high
7004 @item planes
7005 @end table
7006
7007 @section ass
7008
7009 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
7010 and libavformat to work. On the other hand, it is limited to ASS (Advanced
7011 Substation Alpha) subtitles files.
7012
7013 This filter accepts the following option in addition to the common options from
7014 the @ref{subtitles} filter:
7015
7016 @table @option
7017 @item shaping
7018 Set the shaping engine
7019
7020 Available values are:
7021 @table @samp
7022 @item auto
7023 The default libass shaping engine, which is the best available.
7024 @item simple
7025 Fast, font-agnostic shaper that can do only substitutions
7026 @item complex
7027 Slower shaper using OpenType for substitutions and positioning
7028 @end table
7029
7030 The default is @code{auto}.
7031 @end table
7032
7033 @section atadenoise
7034 Apply an Adaptive Temporal Averaging Denoiser to the video input.
7035
7036 The filter accepts the following options:
7037
7038 @table @option
7039 @item 0a
7040 Set threshold A for 1st plane. Default is 0.02.
7041 Valid range is 0 to 0.3.
7042
7043 @item 0b
7044 Set threshold B for 1st plane. Default is 0.04.
7045 Valid range is 0 to 5.
7046
7047 @item 1a
7048 Set threshold A for 2nd plane. Default is 0.02.
7049 Valid range is 0 to 0.3.
7050
7051 @item 1b
7052 Set threshold B for 2nd plane. Default is 0.04.
7053 Valid range is 0 to 5.
7054
7055 @item 2a
7056 Set threshold A for 3rd plane. Default is 0.02.
7057 Valid range is 0 to 0.3.
7058
7059 @item 2b
7060 Set threshold B for 3rd plane. Default is 0.04.
7061 Valid range is 0 to 5.
7062
7063 Threshold A is designed to react on abrupt changes in the input signal and
7064 threshold B is designed to react on continuous changes in the input signal.
7065
7066 @item s
7067 Set number of frames filter will use for averaging. Default is 9. Must be odd
7068 number in range [5, 129].
7069
7070 @item p
7071 Set what planes of frame filter will use for averaging. Default is all.
7072
7073 @item a
7074 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
7075 Alternatively can be set to @code{s} serial.
7076
7077 Parallel can be faster then serial, while other way around is never true.
7078 Parallel will abort early on first change being greater then thresholds, while serial
7079 will continue processing other side of frames if they are equal or below thresholds.
7080 @end table
7081
7082 @subsection Commands
7083 This filter supports same @ref{commands} as options except option @code{s}.
7084 The command accepts the same syntax of the corresponding option.
7085
7086 @section avgblur
7087
7088 Apply average blur filter.
7089
7090 The filter accepts the following options:
7091
7092 @table @option
7093 @item sizeX
7094 Set horizontal radius size.
7095
7096 @item planes
7097 Set which planes to filter. By default all planes are filtered.
7098
7099 @item sizeY
7100 Set vertical radius size, if zero it will be same as @code{sizeX}.
7101 Default is @code{0}.
7102 @end table
7103
7104 @subsection Commands
7105 This filter supports same commands as options.
7106 The command accepts the same syntax of the corresponding option.
7107
7108 If the specified expression is not valid, it is kept at its current
7109 value.
7110
7111 @section bbox
7112
7113 Compute the bounding box for the non-black pixels in the input frame
7114 luminance plane.
7115
7116 This filter computes the bounding box containing all the pixels with a
7117 luminance value greater than the minimum allowed value.
7118 The parameters describing the bounding box are printed on the filter
7119 log.
7120
7121 The filter accepts the following option:
7122
7123 @table @option
7124 @item min_val
7125 Set the minimal luminance value. Default is @code{16}.
7126 @end table
7127
7128 @section bilateral
7129 Apply bilateral filter, spatial smoothing while preserving edges.
7130
7131 The filter accepts the following options:
7132 @table @option
7133 @item sigmaS
7134 Set sigma of gaussian function to calculate spatial weight.
7135 Allowed range is 0 to 512. Default is 0.1.
7136
7137 @item sigmaR
7138 Set sigma of gaussian function to calculate range weight.
7139 Allowed range is 0 to 1. Default is 0.1.
7140
7141 @item planes
7142 Set planes to filter. Default is first only.
7143 @end table
7144
7145 @section bitplanenoise
7146
7147 Show and measure bit plane noise.
7148
7149 The filter accepts the following options:
7150
7151 @table @option
7152 @item bitplane
7153 Set which plane to analyze. Default is @code{1}.
7154
7155 @item filter
7156 Filter out noisy pixels from @code{bitplane} set above.
7157 Default is disabled.
7158 @end table
7159
7160 @section blackdetect
7161
7162 Detect video intervals that are (almost) completely black. Can be
7163 useful to detect chapter transitions, commercials, or invalid
7164 recordings.
7165
7166 The filter outputs its detection analysis to both the log as well as
7167 frame metadata. If a black segment of at least the specified minimum
7168 duration is found, a line with the start and end timestamps as well
7169 as duration is printed to the log with level @code{info}. In addition,
7170 a log line with level @code{debug} is printed per frame showing the
7171 black amount detected for that frame.
7172
7173 The filter also attaches metadata to the first frame of a black
7174 segment with key @code{lavfi.black_start} and to the first frame
7175 after the black segment ends with key @code{lavfi.black_end}. The
7176 value is the frame's timestamp. This metadata is added regardless
7177 of the minimum duration specified.
7178
7179 The filter accepts the following options:
7180
7181 @table @option
7182 @item black_min_duration, d
7183 Set the minimum detected black duration expressed in seconds. It must
7184 be a non-negative floating point number.
7185
7186 Default value is 2.0.
7187
7188 @item picture_black_ratio_th, pic_th
7189 Set the threshold for considering a picture "black".
7190 Express the minimum value for the ratio:
7191 @example
7192 @var{nb_black_pixels} / @var{nb_pixels}
7193 @end example
7194
7195 for which a picture is considered black.
7196 Default value is 0.98.
7197
7198 @item pixel_black_th, pix_th
7199 Set the threshold for considering a pixel "black".
7200
7201 The threshold expresses the maximum pixel luminance value for which a
7202 pixel is considered "black". The provided value is scaled according to
7203 the following equation:
7204 @example
7205 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
7206 @end example
7207
7208 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
7209 the input video format, the range is [0-255] for YUV full-range
7210 formats and [16-235] for YUV non full-range formats.
7211
7212 Default value is 0.10.
7213 @end table
7214
7215 The following example sets the maximum pixel threshold to the minimum
7216 value, and detects only black intervals of 2 or more seconds:
7217 @example
7218 blackdetect=d=2:pix_th=0.00
7219 @end example
7220
7221 @section blackframe
7222
7223 Detect frames that are (almost) completely black. Can be useful to
7224 detect chapter transitions or commercials. Output lines consist of
7225 the frame number of the detected frame, the percentage of blackness,
7226 the position in the file if known or -1 and the timestamp in seconds.
7227
7228 In order to display the output lines, you need to set the loglevel at
7229 least to the AV_LOG_INFO value.
7230
7231 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
7232 The value represents the percentage of pixels in the picture that
7233 are below the threshold value.
7234
7235 It accepts the following parameters:
7236
7237 @table @option
7238
7239 @item amount
7240 The percentage of the pixels that have to be below the threshold; it defaults to
7241 @code{98}.
7242
7243 @item threshold, thresh
7244 The threshold below which a pixel value is considered black; it defaults to
7245 @code{32}.
7246
7247 @end table
7248
7249 @anchor{blend}
7250 @section blend
7251
7252 Blend two video frames into each other.
7253
7254 The @code{blend} filter takes two input streams and outputs one
7255 stream, the first input is the "top" layer and second input is
7256 "bottom" layer.  By default, the output terminates when the longest input terminates.
7257
7258 The @code{tblend} (time blend) filter takes two consecutive frames
7259 from one single stream, and outputs the result obtained by blending
7260 the new frame on top of the old frame.
7261
7262 A description of the accepted options follows.
7263
7264 @table @option
7265 @item c0_mode
7266 @item c1_mode
7267 @item c2_mode
7268 @item c3_mode
7269 @item all_mode
7270 Set blend mode for specific pixel component or all pixel components in case
7271 of @var{all_mode}. Default value is @code{normal}.
7272
7273 Available values for component modes are:
7274 @table @samp
7275 @item addition
7276 @item grainmerge
7277 @item and
7278 @item average
7279 @item burn
7280 @item darken
7281 @item difference
7282 @item grainextract
7283 @item divide
7284 @item dodge
7285 @item freeze
7286 @item exclusion
7287 @item extremity
7288 @item glow
7289 @item hardlight
7290 @item hardmix
7291 @item heat
7292 @item lighten
7293 @item linearlight
7294 @item multiply
7295 @item multiply128
7296 @item negation
7297 @item normal
7298 @item or
7299 @item overlay
7300 @item phoenix
7301 @item pinlight
7302 @item reflect
7303 @item screen
7304 @item softlight
7305 @item subtract
7306 @item vividlight
7307 @item xor
7308 @end table
7309
7310 @item c0_opacity
7311 @item c1_opacity
7312 @item c2_opacity
7313 @item c3_opacity
7314 @item all_opacity
7315 Set blend opacity for specific pixel component or all pixel components in case
7316 of @var{all_opacity}. Only used in combination with pixel component blend modes.
7317
7318 @item c0_expr
7319 @item c1_expr
7320 @item c2_expr
7321 @item c3_expr
7322 @item all_expr
7323 Set blend expression for specific pixel component or all pixel components in case
7324 of @var{all_expr}. Note that related mode options will be ignored if those are set.
7325
7326 The expressions can use the following variables:
7327
7328 @table @option
7329 @item N
7330 The sequential number of the filtered frame, starting from @code{0}.
7331
7332 @item X
7333 @item Y
7334 the coordinates of the current sample
7335
7336 @item W
7337 @item H
7338 the width and height of currently filtered plane
7339
7340 @item SW
7341 @item SH
7342 Width and height scale for the plane being filtered. It is the
7343 ratio between the dimensions of the current plane to the luma plane,
7344 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
7345 the luma plane and @code{0.5,0.5} for the chroma planes.
7346
7347 @item T
7348 Time of the current frame, expressed in seconds.
7349
7350 @item TOP, A
7351 Value of pixel component at current location for first video frame (top layer).
7352
7353 @item BOTTOM, B
7354 Value of pixel component at current location for second video frame (bottom layer).
7355 @end table
7356 @end table
7357
7358 The @code{blend} filter also supports the @ref{framesync} options.
7359
7360 @subsection Examples
7361
7362 @itemize
7363 @item
7364 Apply transition from bottom layer to top layer in first 10 seconds:
7365 @example
7366 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
7367 @end example
7368
7369 @item
7370 Apply linear horizontal transition from top layer to bottom layer:
7371 @example
7372 blend=all_expr='A*(X/W)+B*(1-X/W)'
7373 @end example
7374
7375 @item
7376 Apply 1x1 checkerboard effect:
7377 @example
7378 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
7379 @end example
7380
7381 @item
7382 Apply uncover left effect:
7383 @example
7384 blend=all_expr='if(gte(N*SW+X,W),A,B)'
7385 @end example
7386
7387 @item
7388 Apply uncover down effect:
7389 @example
7390 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
7391 @end example
7392
7393 @item
7394 Apply uncover up-left effect:
7395 @example
7396 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
7397 @end example
7398
7399 @item
7400 Split diagonally video and shows top and bottom layer on each side:
7401 @example
7402 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
7403 @end example
7404
7405 @item
7406 Display differences between the current and the previous frame:
7407 @example
7408 tblend=all_mode=grainextract
7409 @end example
7410 @end itemize
7411
7412 @section bm3d
7413
7414 Denoise frames using Block-Matching 3D algorithm.
7415
7416 The filter accepts the following options.
7417
7418 @table @option
7419 @item sigma
7420 Set denoising strength. Default value is 1.
7421 Allowed range is from 0 to 999.9.
7422 The denoising algorithm is very sensitive to sigma, so adjust it
7423 according to the source.
7424
7425 @item block
7426 Set local patch size. This sets dimensions in 2D.
7427
7428 @item bstep
7429 Set sliding step for processing blocks. Default value is 4.
7430 Allowed range is from 1 to 64.
7431 Smaller values allows processing more reference blocks and is slower.
7432
7433 @item group
7434 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
7435 When set to 1, no block matching is done. Larger values allows more blocks
7436 in single group.
7437 Allowed range is from 1 to 256.
7438
7439 @item range
7440 Set radius for search block matching. Default is 9.
7441 Allowed range is from 1 to INT32_MAX.
7442
7443 @item mstep
7444 Set step between two search locations for block matching. Default is 1.
7445 Allowed range is from 1 to 64. Smaller is slower.
7446
7447 @item thmse
7448 Set threshold of mean square error for block matching. Valid range is 0 to
7449 INT32_MAX.
7450
7451 @item hdthr
7452 Set thresholding parameter for hard thresholding in 3D transformed domain.
7453 Larger values results in stronger hard-thresholding filtering in frequency
7454 domain.
7455
7456 @item estim
7457 Set filtering estimation mode. Can be @code{basic} or @code{final}.
7458 Default is @code{basic}.
7459
7460 @item ref
7461 If enabled, filter will use 2nd stream for block matching.
7462 Default is disabled for @code{basic} value of @var{estim} option,
7463 and always enabled if value of @var{estim} is @code{final}.
7464
7465 @item planes
7466 Set planes to filter. Default is all available except alpha.
7467 @end table
7468
7469 @subsection Examples
7470
7471 @itemize
7472 @item
7473 Basic filtering with bm3d:
7474 @example
7475 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
7476 @end example
7477
7478 @item
7479 Same as above, but filtering only luma:
7480 @example
7481 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
7482 @end example
7483
7484 @item
7485 Same as above, but with both estimation modes:
7486 @example
7487 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
7488 @end example
7489
7490 @item
7491 Same as above, but prefilter with @ref{nlmeans} filter instead:
7492 @example
7493 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
7494 @end example
7495 @end itemize
7496
7497 @section boxblur
7498
7499 Apply a boxblur algorithm to the input video.
7500
7501 It accepts the following parameters:
7502
7503 @table @option
7504
7505 @item luma_radius, lr
7506 @item luma_power, lp
7507 @item chroma_radius, cr
7508 @item chroma_power, cp
7509 @item alpha_radius, ar
7510 @item alpha_power, ap
7511
7512 @end table
7513
7514 A description of the accepted options follows.
7515
7516 @table @option
7517 @item luma_radius, lr
7518 @item chroma_radius, cr
7519 @item alpha_radius, ar
7520 Set an expression for the box radius in pixels used for blurring the
7521 corresponding input plane.
7522
7523 The radius value must be a non-negative number, and must not be
7524 greater than the value of the expression @code{min(w,h)/2} for the
7525 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
7526 planes.
7527
7528 Default value for @option{luma_radius} is "2". If not specified,
7529 @option{chroma_radius} and @option{alpha_radius} default to the
7530 corresponding value set for @option{luma_radius}.
7531
7532 The expressions can contain the following constants:
7533 @table @option
7534 @item w
7535 @item h
7536 The input width and height in pixels.
7537
7538 @item cw
7539 @item ch
7540 The input chroma image width and height in pixels.
7541
7542 @item hsub
7543 @item vsub
7544 The horizontal and vertical chroma subsample values. For example, for the
7545 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
7546 @end table
7547
7548 @item luma_power, lp
7549 @item chroma_power, cp
7550 @item alpha_power, ap
7551 Specify how many times the boxblur filter is applied to the
7552 corresponding plane.
7553
7554 Default value for @option{luma_power} is 2. If not specified,
7555 @option{chroma_power} and @option{alpha_power} default to the
7556 corresponding value set for @option{luma_power}.
7557
7558 A value of 0 will disable the effect.
7559 @end table
7560
7561 @subsection Examples
7562
7563 @itemize
7564 @item
7565 Apply a boxblur filter with the luma, chroma, and alpha radii
7566 set to 2:
7567 @example
7568 boxblur=luma_radius=2:luma_power=1
7569 boxblur=2:1
7570 @end example
7571
7572 @item
7573 Set the luma radius to 2, and alpha and chroma radius to 0:
7574 @example
7575 boxblur=2:1:cr=0:ar=0
7576 @end example
7577
7578 @item
7579 Set the luma and chroma radii to a fraction of the video dimension:
7580 @example
7581 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
7582 @end example
7583 @end itemize
7584
7585 @section bwdif
7586
7587 Deinterlace the input video ("bwdif" stands for "Bob Weaver
7588 Deinterlacing Filter").
7589
7590 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
7591 interpolation algorithms.
7592 It accepts the following parameters:
7593
7594 @table @option
7595 @item mode
7596 The interlacing mode to adopt. It accepts one of the following values:
7597
7598 @table @option
7599 @item 0, send_frame
7600 Output one frame for each frame.
7601 @item 1, send_field
7602 Output one frame for each field.
7603 @end table
7604
7605 The default value is @code{send_field}.
7606
7607 @item parity
7608 The picture field parity assumed for the input interlaced video. It accepts one
7609 of the following values:
7610
7611 @table @option
7612 @item 0, tff
7613 Assume the top field is first.
7614 @item 1, bff
7615 Assume the bottom field is first.
7616 @item -1, auto
7617 Enable automatic detection of field parity.
7618 @end table
7619
7620 The default value is @code{auto}.
7621 If the interlacing is unknown or the decoder does not export this information,
7622 top field first will be assumed.
7623
7624 @item deint
7625 Specify which frames to deinterlace. Accepts one of the following
7626 values:
7627
7628 @table @option
7629 @item 0, all
7630 Deinterlace all frames.
7631 @item 1, interlaced
7632 Only deinterlace frames marked as interlaced.
7633 @end table
7634
7635 The default value is @code{all}.
7636 @end table
7637
7638 @section cas
7639
7640 Apply Contrast Adaptive Sharpen filter to video stream.
7641
7642 The filter accepts the following options:
7643
7644 @table @option
7645 @item strength
7646 Set the sharpening strength. Default value is 0.
7647
7648 @item planes
7649 Set planes to filter. Default value is to filter all
7650 planes except alpha plane.
7651 @end table
7652
7653 @section chromahold
7654 Remove all color information for all colors except for certain one.
7655
7656 The filter accepts the following options:
7657
7658 @table @option
7659 @item color
7660 The color which will not be replaced with neutral chroma.
7661
7662 @item similarity
7663 Similarity percentage with the above color.
7664 0.01 matches only the exact key color, while 1.0 matches everything.
7665
7666 @item blend
7667 Blend percentage.
7668 0.0 makes pixels either fully gray, or not gray at all.
7669 Higher values result in more preserved color.
7670
7671 @item yuv
7672 Signals that the color passed is already in YUV instead of RGB.
7673
7674 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7675 This can be used to pass exact YUV values as hexadecimal numbers.
7676 @end table
7677
7678 @subsection Commands
7679 This filter supports same @ref{commands} as options.
7680 The command accepts the same syntax of the corresponding option.
7681
7682 If the specified expression is not valid, it is kept at its current
7683 value.
7684
7685 @section chromakey
7686 YUV colorspace color/chroma keying.
7687
7688 The filter accepts the following options:
7689
7690 @table @option
7691 @item color
7692 The color which will be replaced with transparency.
7693
7694 @item similarity
7695 Similarity percentage with the key color.
7696
7697 0.01 matches only the exact key color, while 1.0 matches everything.
7698
7699 @item blend
7700 Blend percentage.
7701
7702 0.0 makes pixels either fully transparent, or not transparent at all.
7703
7704 Higher values result in semi-transparent pixels, with a higher transparency
7705 the more similar the pixels color is to the key color.
7706
7707 @item yuv
7708 Signals that the color passed is already in YUV instead of RGB.
7709
7710 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7711 This can be used to pass exact YUV values as hexadecimal numbers.
7712 @end table
7713
7714 @subsection Commands
7715 This filter supports same @ref{commands} as options.
7716 The command accepts the same syntax of the corresponding option.
7717
7718 If the specified expression is not valid, it is kept at its current
7719 value.
7720
7721 @subsection Examples
7722
7723 @itemize
7724 @item
7725 Make every green pixel in the input image transparent:
7726 @example
7727 ffmpeg -i input.png -vf chromakey=green out.png
7728 @end example
7729
7730 @item
7731 Overlay a greenscreen-video on top of a static black background.
7732 @example
7733 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
7734 @end example
7735 @end itemize
7736
7737 @section chromanr
7738 Reduce chrominance noise.
7739
7740 The filter accepts the following options:
7741
7742 @table @option
7743 @item thres
7744 Set threshold for averaging chrominance values.
7745 Sum of absolute difference of Y, U and V pixel components of current
7746 pixel and neighbour pixels lower than this threshold will be used in
7747 averaging. Luma component is left unchanged and is copied to output.
7748 Default value is 30. Allowed range is from 1 to 200.
7749
7750 @item sizew
7751 Set horizontal radius of rectangle used for averaging.
7752 Allowed range is from 1 to 100. Default value is 5.
7753
7754 @item sizeh
7755 Set vertical radius of rectangle used for averaging.
7756 Allowed range is from 1 to 100. Default value is 5.
7757
7758 @item stepw
7759 Set horizontal step when averaging. Default value is 1.
7760 Allowed range is from 1 to 50.
7761 Mostly useful to speed-up filtering.
7762
7763 @item steph
7764 Set vertical step when averaging. Default value is 1.
7765 Allowed range is from 1 to 50.
7766 Mostly useful to speed-up filtering.
7767
7768 @item threy
7769 Set Y threshold for averaging chrominance values.
7770 Set finer control for max allowed difference between Y components
7771 of current pixel and neigbour pixels.
7772 Default value is 200. Allowed range is from 1 to 200.
7773
7774 @item threu
7775 Set U threshold for averaging chrominance values.
7776 Set finer control for max allowed difference between U components
7777 of current pixel and neigbour pixels.
7778 Default value is 200. Allowed range is from 1 to 200.
7779
7780 @item threv
7781 Set V threshold for averaging chrominance values.
7782 Set finer control for max allowed difference between V components
7783 of current pixel and neigbour pixels.
7784 Default value is 200. Allowed range is from 1 to 200.
7785 @end table
7786
7787 @subsection Commands
7788 This filter supports same @ref{commands} as options.
7789 The command accepts the same syntax of the corresponding option.
7790
7791 @section chromashift
7792 Shift chroma pixels horizontally and/or vertically.
7793
7794 The filter accepts the following options:
7795 @table @option
7796 @item cbh
7797 Set amount to shift chroma-blue horizontally.
7798 @item cbv
7799 Set amount to shift chroma-blue vertically.
7800 @item crh
7801 Set amount to shift chroma-red horizontally.
7802 @item crv
7803 Set amount to shift chroma-red vertically.
7804 @item edge
7805 Set edge mode, can be @var{smear}, default, or @var{warp}.
7806 @end table
7807
7808 @subsection Commands
7809
7810 This filter supports the all above options as @ref{commands}.
7811
7812 @section ciescope
7813
7814 Display CIE color diagram with pixels overlaid onto it.
7815
7816 The filter accepts the following options:
7817
7818 @table @option
7819 @item system
7820 Set color system.
7821
7822 @table @samp
7823 @item ntsc, 470m
7824 @item ebu, 470bg
7825 @item smpte
7826 @item 240m
7827 @item apple
7828 @item widergb
7829 @item cie1931
7830 @item rec709, hdtv
7831 @item uhdtv, rec2020
7832 @item dcip3
7833 @end table
7834
7835 @item cie
7836 Set CIE system.
7837
7838 @table @samp
7839 @item xyy
7840 @item ucs
7841 @item luv
7842 @end table
7843
7844 @item gamuts
7845 Set what gamuts to draw.
7846
7847 See @code{system} option for available values.
7848
7849 @item size, s
7850 Set ciescope size, by default set to 512.
7851
7852 @item intensity, i
7853 Set intensity used to map input pixel values to CIE diagram.
7854
7855 @item contrast
7856 Set contrast used to draw tongue colors that are out of active color system gamut.
7857
7858 @item corrgamma
7859 Correct gamma displayed on scope, by default enabled.
7860
7861 @item showwhite
7862 Show white point on CIE diagram, by default disabled.
7863
7864 @item gamma
7865 Set input gamma. Used only with XYZ input color space.
7866 @end table
7867
7868 @section codecview
7869
7870 Visualize information exported by some codecs.
7871
7872 Some codecs can export information through frames using side-data or other
7873 means. For example, some MPEG based codecs export motion vectors through the
7874 @var{export_mvs} flag in the codec @option{flags2} option.
7875
7876 The filter accepts the following option:
7877
7878 @table @option
7879 @item mv
7880 Set motion vectors to visualize.
7881
7882 Available flags for @var{mv} are:
7883
7884 @table @samp
7885 @item pf
7886 forward predicted MVs of P-frames
7887 @item bf
7888 forward predicted MVs of B-frames
7889 @item bb
7890 backward predicted MVs of B-frames
7891 @end table
7892
7893 @item qp
7894 Display quantization parameters using the chroma planes.
7895
7896 @item mv_type, mvt
7897 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7898
7899 Available flags for @var{mv_type} are:
7900
7901 @table @samp
7902 @item fp
7903 forward predicted MVs
7904 @item bp
7905 backward predicted MVs
7906 @end table
7907
7908 @item frame_type, ft
7909 Set frame type to visualize motion vectors of.
7910
7911 Available flags for @var{frame_type} are:
7912
7913 @table @samp
7914 @item if
7915 intra-coded frames (I-frames)
7916 @item pf
7917 predicted frames (P-frames)
7918 @item bf
7919 bi-directionally predicted frames (B-frames)
7920 @end table
7921 @end table
7922
7923 @subsection Examples
7924
7925 @itemize
7926 @item
7927 Visualize forward predicted MVs of all frames using @command{ffplay}:
7928 @example
7929 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7930 @end example
7931
7932 @item
7933 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7934 @example
7935 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7936 @end example
7937 @end itemize
7938
7939 @section colorbalance
7940 Modify intensity of primary colors (red, green and blue) of input frames.
7941
7942 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7943 regions for the red-cyan, green-magenta or blue-yellow balance.
7944
7945 A positive adjustment value shifts the balance towards the primary color, a negative
7946 value towards the complementary color.
7947
7948 The filter accepts the following options:
7949
7950 @table @option
7951 @item rs
7952 @item gs
7953 @item bs
7954 Adjust red, green and blue shadows (darkest pixels).
7955
7956 @item rm
7957 @item gm
7958 @item bm
7959 Adjust red, green and blue midtones (medium pixels).
7960
7961 @item rh
7962 @item gh
7963 @item bh
7964 Adjust red, green and blue highlights (brightest pixels).
7965
7966 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7967
7968 @item pl
7969 Preserve lightness when changing color balance. Default is disabled.
7970 @end table
7971
7972 @subsection Examples
7973
7974 @itemize
7975 @item
7976 Add red color cast to shadows:
7977 @example
7978 colorbalance=rs=.3
7979 @end example
7980 @end itemize
7981
7982 @subsection Commands
7983
7984 This filter supports the all above options as @ref{commands}.
7985
7986 @section colorchannelmixer
7987
7988 Adjust video input frames by re-mixing color channels.
7989
7990 This filter modifies a color channel by adding the values associated to
7991 the other channels of the same pixels. For example if the value to
7992 modify is red, the output value will be:
7993 @example
7994 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7995 @end example
7996
7997 The filter accepts the following options:
7998
7999 @table @option
8000 @item rr
8001 @item rg
8002 @item rb
8003 @item ra
8004 Adjust contribution of input red, green, blue and alpha channels for output red channel.
8005 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
8006
8007 @item gr
8008 @item gg
8009 @item gb
8010 @item ga
8011 Adjust contribution of input red, green, blue and alpha channels for output green channel.
8012 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
8013
8014 @item br
8015 @item bg
8016 @item bb
8017 @item ba
8018 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
8019 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
8020
8021 @item ar
8022 @item ag
8023 @item ab
8024 @item aa
8025 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
8026 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
8027
8028 Allowed ranges for options are @code{[-2.0, 2.0]}.
8029 @end table
8030
8031 @subsection Examples
8032
8033 @itemize
8034 @item
8035 Convert source to grayscale:
8036 @example
8037 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
8038 @end example
8039 @item
8040 Simulate sepia tones:
8041 @example
8042 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
8043 @end example
8044 @end itemize
8045
8046 @subsection Commands
8047
8048 This filter supports the all above options as @ref{commands}.
8049
8050 @section colorkey
8051 RGB colorspace color keying.
8052
8053 The filter accepts the following options:
8054
8055 @table @option
8056 @item color
8057 The color which will be replaced with transparency.
8058
8059 @item similarity
8060 Similarity percentage with the key color.
8061
8062 0.01 matches only the exact key color, while 1.0 matches everything.
8063
8064 @item blend
8065 Blend percentage.
8066
8067 0.0 makes pixels either fully transparent, or not transparent at all.
8068
8069 Higher values result in semi-transparent pixels, with a higher transparency
8070 the more similar the pixels color is to the key color.
8071 @end table
8072
8073 @subsection Examples
8074
8075 @itemize
8076 @item
8077 Make every green pixel in the input image transparent:
8078 @example
8079 ffmpeg -i input.png -vf colorkey=green out.png
8080 @end example
8081
8082 @item
8083 Overlay a greenscreen-video on top of a static background image.
8084 @example
8085 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
8086 @end example
8087 @end itemize
8088
8089 @subsection Commands
8090 This filter supports same @ref{commands} as options.
8091 The command accepts the same syntax of the corresponding option.
8092
8093 If the specified expression is not valid, it is kept at its current
8094 value.
8095
8096 @section colorhold
8097 Remove all color information for all RGB colors except for certain one.
8098
8099 The filter accepts the following options:
8100
8101 @table @option
8102 @item color
8103 The color which will not be replaced with neutral gray.
8104
8105 @item similarity
8106 Similarity percentage with the above color.
8107 0.01 matches only the exact key color, while 1.0 matches everything.
8108
8109 @item blend
8110 Blend percentage. 0.0 makes pixels fully gray.
8111 Higher values result in more preserved color.
8112 @end table
8113
8114 @subsection Commands
8115 This filter supports same @ref{commands} as options.
8116 The command accepts the same syntax of the corresponding option.
8117
8118 If the specified expression is not valid, it is kept at its current
8119 value.
8120
8121 @section colorlevels
8122
8123 Adjust video input frames using levels.
8124
8125 The filter accepts the following options:
8126
8127 @table @option
8128 @item rimin
8129 @item gimin
8130 @item bimin
8131 @item aimin
8132 Adjust red, green, blue and alpha input black point.
8133 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
8134
8135 @item rimax
8136 @item gimax
8137 @item bimax
8138 @item aimax
8139 Adjust red, green, blue and alpha input white point.
8140 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
8141
8142 Input levels are used to lighten highlights (bright tones), darken shadows
8143 (dark tones), change the balance of bright and dark tones.
8144
8145 @item romin
8146 @item gomin
8147 @item bomin
8148 @item aomin
8149 Adjust red, green, blue and alpha output black point.
8150 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
8151
8152 @item romax
8153 @item gomax
8154 @item bomax
8155 @item aomax
8156 Adjust red, green, blue and alpha output white point.
8157 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
8158
8159 Output levels allows manual selection of a constrained output level range.
8160 @end table
8161
8162 @subsection Examples
8163
8164 @itemize
8165 @item
8166 Make video output darker:
8167 @example
8168 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
8169 @end example
8170
8171 @item
8172 Increase contrast:
8173 @example
8174 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
8175 @end example
8176
8177 @item
8178 Make video output lighter:
8179 @example
8180 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
8181 @end example
8182
8183 @item
8184 Increase brightness:
8185 @example
8186 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
8187 @end example
8188 @end itemize
8189
8190 @subsection Commands
8191
8192 This filter supports the all above options as @ref{commands}.
8193
8194 @section colormatrix
8195
8196 Convert color matrix.
8197
8198 The filter accepts the following options:
8199
8200 @table @option
8201 @item src
8202 @item dst
8203 Specify the source and destination color matrix. Both values must be
8204 specified.
8205
8206 The accepted values are:
8207 @table @samp
8208 @item bt709
8209 BT.709
8210
8211 @item fcc
8212 FCC
8213
8214 @item bt601
8215 BT.601
8216
8217 @item bt470
8218 BT.470
8219
8220 @item bt470bg
8221 BT.470BG
8222
8223 @item smpte170m
8224 SMPTE-170M
8225
8226 @item smpte240m
8227 SMPTE-240M
8228
8229 @item bt2020
8230 BT.2020
8231 @end table
8232 @end table
8233
8234 For example to convert from BT.601 to SMPTE-240M, use the command:
8235 @example
8236 colormatrix=bt601:smpte240m
8237 @end example
8238
8239 @section colorspace
8240
8241 Convert colorspace, transfer characteristics or color primaries.
8242 Input video needs to have an even size.
8243
8244 The filter accepts the following options:
8245
8246 @table @option
8247 @anchor{all}
8248 @item all
8249 Specify all color properties at once.
8250
8251 The accepted values are:
8252 @table @samp
8253 @item bt470m
8254 BT.470M
8255
8256 @item bt470bg
8257 BT.470BG
8258
8259 @item bt601-6-525
8260 BT.601-6 525
8261
8262 @item bt601-6-625
8263 BT.601-6 625
8264
8265 @item bt709
8266 BT.709
8267
8268 @item smpte170m
8269 SMPTE-170M
8270
8271 @item smpte240m
8272 SMPTE-240M
8273
8274 @item bt2020
8275 BT.2020
8276
8277 @end table
8278
8279 @anchor{space}
8280 @item space
8281 Specify output colorspace.
8282
8283 The accepted values are:
8284 @table @samp
8285 @item bt709
8286 BT.709
8287
8288 @item fcc
8289 FCC
8290
8291 @item bt470bg
8292 BT.470BG or BT.601-6 625
8293
8294 @item smpte170m
8295 SMPTE-170M or BT.601-6 525
8296
8297 @item smpte240m
8298 SMPTE-240M
8299
8300 @item ycgco
8301 YCgCo
8302
8303 @item bt2020ncl
8304 BT.2020 with non-constant luminance
8305
8306 @end table
8307
8308 @anchor{trc}
8309 @item trc
8310 Specify output transfer characteristics.
8311
8312 The accepted values are:
8313 @table @samp
8314 @item bt709
8315 BT.709
8316
8317 @item bt470m
8318 BT.470M
8319
8320 @item bt470bg
8321 BT.470BG
8322
8323 @item gamma22
8324 Constant gamma of 2.2
8325
8326 @item gamma28
8327 Constant gamma of 2.8
8328
8329 @item smpte170m
8330 SMPTE-170M, BT.601-6 625 or BT.601-6 525
8331
8332 @item smpte240m
8333 SMPTE-240M
8334
8335 @item srgb
8336 SRGB
8337
8338 @item iec61966-2-1
8339 iec61966-2-1
8340
8341 @item iec61966-2-4
8342 iec61966-2-4
8343
8344 @item xvycc
8345 xvycc
8346
8347 @item bt2020-10
8348 BT.2020 for 10-bits content
8349
8350 @item bt2020-12
8351 BT.2020 for 12-bits content
8352
8353 @end table
8354
8355 @anchor{primaries}
8356 @item primaries
8357 Specify output color primaries.
8358
8359 The accepted values are:
8360 @table @samp
8361 @item bt709
8362 BT.709
8363
8364 @item bt470m
8365 BT.470M
8366
8367 @item bt470bg
8368 BT.470BG or BT.601-6 625
8369
8370 @item smpte170m
8371 SMPTE-170M or BT.601-6 525
8372
8373 @item smpte240m
8374 SMPTE-240M
8375
8376 @item film
8377 film
8378
8379 @item smpte431
8380 SMPTE-431
8381
8382 @item smpte432
8383 SMPTE-432
8384
8385 @item bt2020
8386 BT.2020
8387
8388 @item jedec-p22
8389 JEDEC P22 phosphors
8390
8391 @end table
8392
8393 @anchor{range}
8394 @item range
8395 Specify output color range.
8396
8397 The accepted values are:
8398 @table @samp
8399 @item tv
8400 TV (restricted) range
8401
8402 @item mpeg
8403 MPEG (restricted) range
8404
8405 @item pc
8406 PC (full) range
8407
8408 @item jpeg
8409 JPEG (full) range
8410
8411 @end table
8412
8413 @item format
8414 Specify output color format.
8415
8416 The accepted values are:
8417 @table @samp
8418 @item yuv420p
8419 YUV 4:2:0 planar 8-bits
8420
8421 @item yuv420p10
8422 YUV 4:2:0 planar 10-bits
8423
8424 @item yuv420p12
8425 YUV 4:2:0 planar 12-bits
8426
8427 @item yuv422p
8428 YUV 4:2:2 planar 8-bits
8429
8430 @item yuv422p10
8431 YUV 4:2:2 planar 10-bits
8432
8433 @item yuv422p12
8434 YUV 4:2:2 planar 12-bits
8435
8436 @item yuv444p
8437 YUV 4:4:4 planar 8-bits
8438
8439 @item yuv444p10
8440 YUV 4:4:4 planar 10-bits
8441
8442 @item yuv444p12
8443 YUV 4:4:4 planar 12-bits
8444
8445 @end table
8446
8447 @item fast
8448 Do a fast conversion, which skips gamma/primary correction. This will take
8449 significantly less CPU, but will be mathematically incorrect. To get output
8450 compatible with that produced by the colormatrix filter, use fast=1.
8451
8452 @item dither
8453 Specify dithering mode.
8454
8455 The accepted values are:
8456 @table @samp
8457 @item none
8458 No dithering
8459
8460 @item fsb
8461 Floyd-Steinberg dithering
8462 @end table
8463
8464 @item wpadapt
8465 Whitepoint adaptation mode.
8466
8467 The accepted values are:
8468 @table @samp
8469 @item bradford
8470 Bradford whitepoint adaptation
8471
8472 @item vonkries
8473 von Kries whitepoint adaptation
8474
8475 @item identity
8476 identity whitepoint adaptation (i.e. no whitepoint adaptation)
8477 @end table
8478
8479 @item iall
8480 Override all input properties at once. Same accepted values as @ref{all}.
8481
8482 @item ispace
8483 Override input colorspace. Same accepted values as @ref{space}.
8484
8485 @item iprimaries
8486 Override input color primaries. Same accepted values as @ref{primaries}.
8487
8488 @item itrc
8489 Override input transfer characteristics. Same accepted values as @ref{trc}.
8490
8491 @item irange
8492 Override input color range. Same accepted values as @ref{range}.
8493
8494 @end table
8495
8496 The filter converts the transfer characteristics, color space and color
8497 primaries to the specified user values. The output value, if not specified,
8498 is set to a default value based on the "all" property. If that property is
8499 also not specified, the filter will log an error. The output color range and
8500 format default to the same value as the input color range and format. The
8501 input transfer characteristics, color space, color primaries and color range
8502 should be set on the input data. If any of these are missing, the filter will
8503 log an error and no conversion will take place.
8504
8505 For example to convert the input to SMPTE-240M, use the command:
8506 @example
8507 colorspace=smpte240m
8508 @end example
8509
8510 @section convolution
8511
8512 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
8513
8514 The filter accepts the following options:
8515
8516 @table @option
8517 @item 0m
8518 @item 1m
8519 @item 2m
8520 @item 3m
8521 Set matrix for each plane.
8522 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
8523 and from 1 to 49 odd number of signed integers in @var{row} mode.
8524
8525 @item 0rdiv
8526 @item 1rdiv
8527 @item 2rdiv
8528 @item 3rdiv
8529 Set multiplier for calculated value for each plane.
8530 If unset or 0, it will be sum of all matrix elements.
8531
8532 @item 0bias
8533 @item 1bias
8534 @item 2bias
8535 @item 3bias
8536 Set bias for each plane. This value is added to the result of the multiplication.
8537 Useful for making the overall image brighter or darker. Default is 0.0.
8538
8539 @item 0mode
8540 @item 1mode
8541 @item 2mode
8542 @item 3mode
8543 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
8544 Default is @var{square}.
8545 @end table
8546
8547 @subsection Examples
8548
8549 @itemize
8550 @item
8551 Apply sharpen:
8552 @example
8553 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"
8554 @end example
8555
8556 @item
8557 Apply blur:
8558 @example
8559 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"
8560 @end example
8561
8562 @item
8563 Apply edge enhance:
8564 @example
8565 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"
8566 @end example
8567
8568 @item
8569 Apply edge detect:
8570 @example
8571 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"
8572 @end example
8573
8574 @item
8575 Apply laplacian edge detector which includes diagonals:
8576 @example
8577 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"
8578 @end example
8579
8580 @item
8581 Apply emboss:
8582 @example
8583 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"
8584 @end example
8585 @end itemize
8586
8587 @section convolve
8588
8589 Apply 2D convolution of video stream in frequency domain using second stream
8590 as impulse.
8591
8592 The filter accepts the following options:
8593
8594 @table @option
8595 @item planes
8596 Set which planes to process.
8597
8598 @item impulse
8599 Set which impulse video frames will be processed, can be @var{first}
8600 or @var{all}. Default is @var{all}.
8601 @end table
8602
8603 The @code{convolve} filter also supports the @ref{framesync} options.
8604
8605 @section copy
8606
8607 Copy the input video source unchanged to the output. This is mainly useful for
8608 testing purposes.
8609
8610 @anchor{coreimage}
8611 @section coreimage
8612 Video filtering on GPU using Apple's CoreImage API on OSX.
8613
8614 Hardware acceleration is based on an OpenGL context. Usually, this means it is
8615 processed by video hardware. However, software-based OpenGL implementations
8616 exist which means there is no guarantee for hardware processing. It depends on
8617 the respective OSX.
8618
8619 There are many filters and image generators provided by Apple that come with a
8620 large variety of options. The filter has to be referenced by its name along
8621 with its options.
8622
8623 The coreimage filter accepts the following options:
8624 @table @option
8625 @item list_filters
8626 List all available filters and generators along with all their respective
8627 options as well as possible minimum and maximum values along with the default
8628 values.
8629 @example
8630 list_filters=true
8631 @end example
8632
8633 @item filter
8634 Specify all filters by their respective name and options.
8635 Use @var{list_filters} to determine all valid filter names and options.
8636 Numerical options are specified by a float value and are automatically clamped
8637 to their respective value range.  Vector and color options have to be specified
8638 by a list of space separated float values. Character escaping has to be done.
8639 A special option name @code{default} is available to use default options for a
8640 filter.
8641
8642 It is required to specify either @code{default} or at least one of the filter options.
8643 All omitted options are used with their default values.
8644 The syntax of the filter string is as follows:
8645 @example
8646 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
8647 @end example
8648
8649 @item output_rect
8650 Specify a rectangle where the output of the filter chain is copied into the
8651 input image. It is given by a list of space separated float values:
8652 @example
8653 output_rect=x\ y\ width\ height
8654 @end example
8655 If not given, the output rectangle equals the dimensions of the input image.
8656 The output rectangle is automatically cropped at the borders of the input
8657 image. Negative values are valid for each component.
8658 @example
8659 output_rect=25\ 25\ 100\ 100
8660 @end example
8661 @end table
8662
8663 Several filters can be chained for successive processing without GPU-HOST
8664 transfers allowing for fast processing of complex filter chains.
8665 Currently, only filters with zero (generators) or exactly one (filters) input
8666 image and one output image are supported. Also, transition filters are not yet
8667 usable as intended.
8668
8669 Some filters generate output images with additional padding depending on the
8670 respective filter kernel. The padding is automatically removed to ensure the
8671 filter output has the same size as the input image.
8672
8673 For image generators, the size of the output image is determined by the
8674 previous output image of the filter chain or the input image of the whole
8675 filterchain, respectively. The generators do not use the pixel information of
8676 this image to generate their output. However, the generated output is
8677 blended onto this image, resulting in partial or complete coverage of the
8678 output image.
8679
8680 The @ref{coreimagesrc} video source can be used for generating input images
8681 which are directly fed into the filter chain. By using it, providing input
8682 images by another video source or an input video is not required.
8683
8684 @subsection Examples
8685
8686 @itemize
8687
8688 @item
8689 List all filters available:
8690 @example
8691 coreimage=list_filters=true
8692 @end example
8693
8694 @item
8695 Use the CIBoxBlur filter with default options to blur an image:
8696 @example
8697 coreimage=filter=CIBoxBlur@@default
8698 @end example
8699
8700 @item
8701 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
8702 its center at 100x100 and a radius of 50 pixels:
8703 @example
8704 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
8705 @end example
8706
8707 @item
8708 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
8709 given as complete and escaped command-line for Apple's standard bash shell:
8710 @example
8711 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
8712 @end example
8713 @end itemize
8714
8715 @section cover_rect
8716
8717 Cover a rectangular object
8718
8719 It accepts the following options:
8720
8721 @table @option
8722 @item cover
8723 Filepath of the optional cover image, needs to be in yuv420.
8724
8725 @item mode
8726 Set covering mode.
8727
8728 It accepts the following values:
8729 @table @samp
8730 @item cover
8731 cover it by the supplied image
8732 @item blur
8733 cover it by interpolating the surrounding pixels
8734 @end table
8735
8736 Default value is @var{blur}.
8737 @end table
8738
8739 @subsection Examples
8740
8741 @itemize
8742 @item
8743 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
8744 @example
8745 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8746 @end example
8747 @end itemize
8748
8749 @section crop
8750
8751 Crop the input video to given dimensions.
8752
8753 It accepts the following parameters:
8754
8755 @table @option
8756 @item w, out_w
8757 The width of the output video. It defaults to @code{iw}.
8758 This expression is evaluated only once during the filter
8759 configuration, or when the @samp{w} or @samp{out_w} command is sent.
8760
8761 @item h, out_h
8762 The height of the output video. It defaults to @code{ih}.
8763 This expression is evaluated only once during the filter
8764 configuration, or when the @samp{h} or @samp{out_h} command is sent.
8765
8766 @item x
8767 The horizontal position, in the input video, of the left edge of the output
8768 video. It defaults to @code{(in_w-out_w)/2}.
8769 This expression is evaluated per-frame.
8770
8771 @item y
8772 The vertical position, in the input video, of the top edge of the output video.
8773 It defaults to @code{(in_h-out_h)/2}.
8774 This expression is evaluated per-frame.
8775
8776 @item keep_aspect
8777 If set to 1 will force the output display aspect ratio
8778 to be the same of the input, by changing the output sample aspect
8779 ratio. It defaults to 0.
8780
8781 @item exact
8782 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
8783 width/height/x/y as specified and will not be rounded to nearest smaller value.
8784 It defaults to 0.
8785 @end table
8786
8787 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
8788 expressions containing the following constants:
8789
8790 @table @option
8791 @item x
8792 @item y
8793 The computed values for @var{x} and @var{y}. They are evaluated for
8794 each new frame.
8795
8796 @item in_w
8797 @item in_h
8798 The input width and height.
8799
8800 @item iw
8801 @item ih
8802 These are the same as @var{in_w} and @var{in_h}.
8803
8804 @item out_w
8805 @item out_h
8806 The output (cropped) width and height.
8807
8808 @item ow
8809 @item oh
8810 These are the same as @var{out_w} and @var{out_h}.
8811
8812 @item a
8813 same as @var{iw} / @var{ih}
8814
8815 @item sar
8816 input sample aspect ratio
8817
8818 @item dar
8819 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8820
8821 @item hsub
8822 @item vsub
8823 horizontal and vertical chroma subsample values. For example for the
8824 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8825
8826 @item n
8827 The number of the input frame, starting from 0.
8828
8829 @item pos
8830 the position in the file of the input frame, NAN if unknown
8831
8832 @item t
8833 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
8834
8835 @end table
8836
8837 The expression for @var{out_w} may depend on the value of @var{out_h},
8838 and the expression for @var{out_h} may depend on @var{out_w}, but they
8839 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
8840 evaluated after @var{out_w} and @var{out_h}.
8841
8842 The @var{x} and @var{y} parameters specify the expressions for the
8843 position of the top-left corner of the output (non-cropped) area. They
8844 are evaluated for each frame. If the evaluated value is not valid, it
8845 is approximated to the nearest valid value.
8846
8847 The expression for @var{x} may depend on @var{y}, and the expression
8848 for @var{y} may depend on @var{x}.
8849
8850 @subsection Examples
8851
8852 @itemize
8853 @item
8854 Crop area with size 100x100 at position (12,34).
8855 @example
8856 crop=100:100:12:34
8857 @end example
8858
8859 Using named options, the example above becomes:
8860 @example
8861 crop=w=100:h=100:x=12:y=34
8862 @end example
8863
8864 @item
8865 Crop the central input area with size 100x100:
8866 @example
8867 crop=100:100
8868 @end example
8869
8870 @item
8871 Crop the central input area with size 2/3 of the input video:
8872 @example
8873 crop=2/3*in_w:2/3*in_h
8874 @end example
8875
8876 @item
8877 Crop the input video central square:
8878 @example
8879 crop=out_w=in_h
8880 crop=in_h
8881 @end example
8882
8883 @item
8884 Delimit the rectangle with the top-left corner placed at position
8885 100:100 and the right-bottom corner corresponding to the right-bottom
8886 corner of the input image.
8887 @example
8888 crop=in_w-100:in_h-100:100:100
8889 @end example
8890
8891 @item
8892 Crop 10 pixels from the left and right borders, and 20 pixels from
8893 the top and bottom borders
8894 @example
8895 crop=in_w-2*10:in_h-2*20
8896 @end example
8897
8898 @item
8899 Keep only the bottom right quarter of the input image:
8900 @example
8901 crop=in_w/2:in_h/2:in_w/2:in_h/2
8902 @end example
8903
8904 @item
8905 Crop height for getting Greek harmony:
8906 @example
8907 crop=in_w:1/PHI*in_w
8908 @end example
8909
8910 @item
8911 Apply trembling effect:
8912 @example
8913 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)
8914 @end example
8915
8916 @item
8917 Apply erratic camera effect depending on timestamp:
8918 @example
8919 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)"
8920 @end example
8921
8922 @item
8923 Set x depending on the value of y:
8924 @example
8925 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
8926 @end example
8927 @end itemize
8928
8929 @subsection Commands
8930
8931 This filter supports the following commands:
8932 @table @option
8933 @item w, out_w
8934 @item h, out_h
8935 @item x
8936 @item y
8937 Set width/height of the output video and the horizontal/vertical position
8938 in the input video.
8939 The command accepts the same syntax of the corresponding option.
8940
8941 If the specified expression is not valid, it is kept at its current
8942 value.
8943 @end table
8944
8945 @section cropdetect
8946
8947 Auto-detect the crop size.
8948
8949 It calculates the necessary cropping parameters and prints the
8950 recommended parameters via the logging system. The detected dimensions
8951 correspond to the non-black area of the input video.
8952
8953 It accepts the following parameters:
8954
8955 @table @option
8956
8957 @item limit
8958 Set higher black value threshold, which can be optionally specified
8959 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8960 value greater to the set value is considered non-black. It defaults to 24.
8961 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8962 on the bitdepth of the pixel format.
8963
8964 @item round
8965 The value which the width/height should be divisible by. It defaults to
8966 16. The offset is automatically adjusted to center the video. Use 2 to
8967 get only even dimensions (needed for 4:2:2 video). 16 is best when
8968 encoding to most video codecs.
8969
8970 @item skip
8971 Set the number of initial frames for which evaluation is skipped.
8972 Default is 2. Range is 0 to INT_MAX.
8973
8974 @item reset_count, reset
8975 Set the counter that determines after how many frames cropdetect will
8976 reset the previously detected largest video area and start over to
8977 detect the current optimal crop area. Default value is 0.
8978
8979 This can be useful when channel logos distort the video area. 0
8980 indicates 'never reset', and returns the largest area encountered during
8981 playback.
8982 @end table
8983
8984 @anchor{cue}
8985 @section cue
8986
8987 Delay video filtering until a given wallclock timestamp. The filter first
8988 passes on @option{preroll} amount of frames, then it buffers at most
8989 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8990 it forwards the buffered frames and also any subsequent frames coming in its
8991 input.
8992
8993 The filter can be used synchronize the output of multiple ffmpeg processes for
8994 realtime output devices like decklink. By putting the delay in the filtering
8995 chain and pre-buffering frames the process can pass on data to output almost
8996 immediately after the target wallclock timestamp is reached.
8997
8998 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
8999 some use cases.
9000
9001 @table @option
9002
9003 @item cue
9004 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
9005
9006 @item preroll
9007 The duration of content to pass on as preroll expressed in seconds. Default is 0.
9008
9009 @item buffer
9010 The maximum duration of content to buffer before waiting for the cue expressed
9011 in seconds. Default is 0.
9012
9013 @end table
9014
9015 @anchor{curves}
9016 @section curves
9017
9018 Apply color adjustments using curves.
9019
9020 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
9021 component (red, green and blue) has its values defined by @var{N} key points
9022 tied from each other using a smooth curve. The x-axis represents the pixel
9023 values from the input frame, and the y-axis the new pixel values to be set for
9024 the output frame.
9025
9026 By default, a component curve is defined by the two points @var{(0;0)} and
9027 @var{(1;1)}. This creates a straight line where each original pixel value is
9028 "adjusted" to its own value, which means no change to the image.
9029
9030 The filter allows you to redefine these two points and add some more. A new
9031 curve (using a natural cubic spline interpolation) will be define to pass
9032 smoothly through all these new coordinates. The new defined points needs to be
9033 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
9034 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
9035 the vector spaces, the values will be clipped accordingly.
9036
9037 The filter accepts the following options:
9038
9039 @table @option
9040 @item preset
9041 Select one of the available color presets. This option can be used in addition
9042 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
9043 options takes priority on the preset values.
9044 Available presets are:
9045 @table @samp
9046 @item none
9047 @item color_negative
9048 @item cross_process
9049 @item darker
9050 @item increase_contrast
9051 @item lighter
9052 @item linear_contrast
9053 @item medium_contrast
9054 @item negative
9055 @item strong_contrast
9056 @item vintage
9057 @end table
9058 Default is @code{none}.
9059 @item master, m
9060 Set the master key points. These points will define a second pass mapping. It
9061 is sometimes called a "luminance" or "value" mapping. It can be used with
9062 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
9063 post-processing LUT.
9064 @item red, r
9065 Set the key points for the red component.
9066 @item green, g
9067 Set the key points for the green component.
9068 @item blue, b
9069 Set the key points for the blue component.
9070 @item all
9071 Set the key points for all components (not including master).
9072 Can be used in addition to the other key points component
9073 options. In this case, the unset component(s) will fallback on this
9074 @option{all} setting.
9075 @item psfile
9076 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
9077 @item plot
9078 Save Gnuplot script of the curves in specified file.
9079 @end table
9080
9081 To avoid some filtergraph syntax conflicts, each key points list need to be
9082 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
9083
9084 @subsection Examples
9085
9086 @itemize
9087 @item
9088 Increase slightly the middle level of blue:
9089 @example
9090 curves=blue='0/0 0.5/0.58 1/1'
9091 @end example
9092
9093 @item
9094 Vintage effect:
9095 @example
9096 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'
9097 @end example
9098 Here we obtain the following coordinates for each components:
9099 @table @var
9100 @item red
9101 @code{(0;0.11) (0.42;0.51) (1;0.95)}
9102 @item green
9103 @code{(0;0) (0.50;0.48) (1;1)}
9104 @item blue
9105 @code{(0;0.22) (0.49;0.44) (1;0.80)}
9106 @end table
9107
9108 @item
9109 The previous example can also be achieved with the associated built-in preset:
9110 @example
9111 curves=preset=vintage
9112 @end example
9113
9114 @item
9115 Or simply:
9116 @example
9117 curves=vintage
9118 @end example
9119
9120 @item
9121 Use a Photoshop preset and redefine the points of the green component:
9122 @example
9123 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
9124 @end example
9125
9126 @item
9127 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
9128 and @command{gnuplot}:
9129 @example
9130 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
9131 gnuplot -p /tmp/curves.plt
9132 @end example
9133 @end itemize
9134
9135 @section datascope
9136
9137 Video data analysis filter.
9138
9139 This filter shows hexadecimal pixel values of part of video.
9140
9141 The filter accepts the following options:
9142
9143 @table @option
9144 @item size, s
9145 Set output video size.
9146
9147 @item x
9148 Set x offset from where to pick pixels.
9149
9150 @item y
9151 Set y offset from where to pick pixels.
9152
9153 @item mode
9154 Set scope mode, can be one of the following:
9155 @table @samp
9156 @item mono
9157 Draw hexadecimal pixel values with white color on black background.
9158
9159 @item color
9160 Draw hexadecimal pixel values with input video pixel color on black
9161 background.
9162
9163 @item color2
9164 Draw hexadecimal pixel values on color background picked from input video,
9165 the text color is picked in such way so its always visible.
9166 @end table
9167
9168 @item axis
9169 Draw rows and columns numbers on left and top of video.
9170
9171 @item opacity
9172 Set background opacity.
9173
9174 @item format
9175 Set display number format. Can be @code{hex}, or @code{dec}. Default is @code{hex}.
9176 @end table
9177
9178 @section dblur
9179 Apply Directional blur filter.
9180
9181 The filter accepts the following options:
9182
9183 @table @option
9184 @item angle
9185 Set angle of directional blur. Default is @code{45}.
9186
9187 @item radius
9188 Set radius of directional blur. Default is @code{5}.
9189
9190 @item planes
9191 Set which planes to filter. By default all planes are filtered.
9192 @end table
9193
9194 @subsection Commands
9195 This filter supports same @ref{commands} as options.
9196 The command accepts the same syntax of the corresponding option.
9197
9198 If the specified expression is not valid, it is kept at its current
9199 value.
9200
9201 @section dctdnoiz
9202
9203 Denoise frames using 2D DCT (frequency domain filtering).
9204
9205 This filter is not designed for real time.
9206
9207 The filter accepts the following options:
9208
9209 @table @option
9210 @item sigma, s
9211 Set the noise sigma constant.
9212
9213 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
9214 coefficient (absolute value) below this threshold with be dropped.
9215
9216 If you need a more advanced filtering, see @option{expr}.
9217
9218 Default is @code{0}.
9219
9220 @item overlap
9221 Set number overlapping pixels for each block. Since the filter can be slow, you
9222 may want to reduce this value, at the cost of a less effective filter and the
9223 risk of various artefacts.
9224
9225 If the overlapping value doesn't permit processing the whole input width or
9226 height, a warning will be displayed and according borders won't be denoised.
9227
9228 Default value is @var{blocksize}-1, which is the best possible setting.
9229
9230 @item expr, e
9231 Set the coefficient factor expression.
9232
9233 For each coefficient of a DCT block, this expression will be evaluated as a
9234 multiplier value for the coefficient.
9235
9236 If this is option is set, the @option{sigma} option will be ignored.
9237
9238 The absolute value of the coefficient can be accessed through the @var{c}
9239 variable.
9240
9241 @item n
9242 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
9243 @var{blocksize}, which is the width and height of the processed blocks.
9244
9245 The default value is @var{3} (8x8) and can be raised to @var{4} for a
9246 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
9247 on the speed processing. Also, a larger block size does not necessarily means a
9248 better de-noising.
9249 @end table
9250
9251 @subsection Examples
9252
9253 Apply a denoise with a @option{sigma} of @code{4.5}:
9254 @example
9255 dctdnoiz=4.5
9256 @end example
9257
9258 The same operation can be achieved using the expression system:
9259 @example
9260 dctdnoiz=e='gte(c, 4.5*3)'
9261 @end example
9262
9263 Violent denoise using a block size of @code{16x16}:
9264 @example
9265 dctdnoiz=15:n=4
9266 @end example
9267
9268 @section deband
9269
9270 Remove banding artifacts from input video.
9271 It works by replacing banded pixels with average value of referenced pixels.
9272
9273 The filter accepts the following options:
9274
9275 @table @option
9276 @item 1thr
9277 @item 2thr
9278 @item 3thr
9279 @item 4thr
9280 Set banding detection threshold for each plane. Default is 0.02.
9281 Valid range is 0.00003 to 0.5.
9282 If difference between current pixel and reference pixel is less than threshold,
9283 it will be considered as banded.
9284
9285 @item range, r
9286 Banding detection range in pixels. Default is 16. If positive, random number
9287 in range 0 to set value will be used. If negative, exact absolute value
9288 will be used.
9289 The range defines square of four pixels around current pixel.
9290
9291 @item direction, d
9292 Set direction in radians from which four pixel will be compared. If positive,
9293 random direction from 0 to set direction will be picked. If negative, exact of
9294 absolute value will be picked. For example direction 0, -PI or -2*PI radians
9295 will pick only pixels on same row and -PI/2 will pick only pixels on same
9296 column.
9297
9298 @item blur, b
9299 If enabled, current pixel is compared with average value of all four
9300 surrounding pixels. The default is enabled. If disabled current pixel is
9301 compared with all four surrounding pixels. The pixel is considered banded
9302 if only all four differences with surrounding pixels are less than threshold.
9303
9304 @item coupling, c
9305 If enabled, current pixel is changed if and only if all pixel components are banded,
9306 e.g. banding detection threshold is triggered for all color components.
9307 The default is disabled.
9308 @end table
9309
9310 @section deblock
9311
9312 Remove blocking artifacts from input video.
9313
9314 The filter accepts the following options:
9315
9316 @table @option
9317 @item filter
9318 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
9319 This controls what kind of deblocking is applied.
9320
9321 @item block
9322 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
9323
9324 @item alpha
9325 @item beta
9326 @item gamma
9327 @item delta
9328 Set blocking detection thresholds. Allowed range is 0 to 1.
9329 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
9330 Using higher threshold gives more deblocking strength.
9331 Setting @var{alpha} controls threshold detection at exact edge of block.
9332 Remaining options controls threshold detection near the edge. Each one for
9333 below/above or left/right. Setting any of those to @var{0} disables
9334 deblocking.
9335
9336 @item planes
9337 Set planes to filter. Default is to filter all available planes.
9338 @end table
9339
9340 @subsection Examples
9341
9342 @itemize
9343 @item
9344 Deblock using weak filter and block size of 4 pixels.
9345 @example
9346 deblock=filter=weak:block=4
9347 @end example
9348
9349 @item
9350 Deblock using strong filter, block size of 4 pixels and custom thresholds for
9351 deblocking more edges.
9352 @example
9353 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
9354 @end example
9355
9356 @item
9357 Similar as above, but filter only first plane.
9358 @example
9359 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
9360 @end example
9361
9362 @item
9363 Similar as above, but filter only second and third plane.
9364 @example
9365 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
9366 @end example
9367 @end itemize
9368
9369 @anchor{decimate}
9370 @section decimate
9371
9372 Drop duplicated frames at regular intervals.
9373
9374 The filter accepts the following options:
9375
9376 @table @option
9377 @item cycle
9378 Set the number of frames from which one will be dropped. Setting this to
9379 @var{N} means one frame in every batch of @var{N} frames will be dropped.
9380 Default is @code{5}.
9381
9382 @item dupthresh
9383 Set the threshold for duplicate detection. If the difference metric for a frame
9384 is less than or equal to this value, then it is declared as duplicate. Default
9385 is @code{1.1}
9386
9387 @item scthresh
9388 Set scene change threshold. Default is @code{15}.
9389
9390 @item blockx
9391 @item blocky
9392 Set the size of the x and y-axis blocks used during metric calculations.
9393 Larger blocks give better noise suppression, but also give worse detection of
9394 small movements. Must be a power of two. Default is @code{32}.
9395
9396 @item ppsrc
9397 Mark main input as a pre-processed input and activate clean source input
9398 stream. This allows the input to be pre-processed with various filters to help
9399 the metrics calculation while keeping the frame selection lossless. When set to
9400 @code{1}, the first stream is for the pre-processed input, and the second
9401 stream is the clean source from where the kept frames are chosen. Default is
9402 @code{0}.
9403
9404 @item chroma
9405 Set whether or not chroma is considered in the metric calculations. Default is
9406 @code{1}.
9407 @end table
9408
9409 @section deconvolve
9410
9411 Apply 2D deconvolution of video stream in frequency domain using second stream
9412 as impulse.
9413
9414 The filter accepts the following options:
9415
9416 @table @option
9417 @item planes
9418 Set which planes to process.
9419
9420 @item impulse
9421 Set which impulse video frames will be processed, can be @var{first}
9422 or @var{all}. Default is @var{all}.
9423
9424 @item noise
9425 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
9426 and height are not same and not power of 2 or if stream prior to convolving
9427 had noise.
9428 @end table
9429
9430 The @code{deconvolve} filter also supports the @ref{framesync} options.
9431
9432 @section dedot
9433
9434 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
9435
9436 It accepts the following options:
9437
9438 @table @option
9439 @item m
9440 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
9441 @var{rainbows} for cross-color reduction.
9442
9443 @item lt
9444 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
9445
9446 @item tl
9447 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
9448
9449 @item tc
9450 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
9451
9452 @item ct
9453 Set temporal chroma threshold. Lower values increases reduction of cross-color.
9454 @end table
9455
9456 @section deflate
9457
9458 Apply deflate effect to the video.
9459
9460 This filter replaces the pixel by the local(3x3) average by taking into account
9461 only values lower than the pixel.
9462
9463 It accepts the following options:
9464
9465 @table @option
9466 @item threshold0
9467 @item threshold1
9468 @item threshold2
9469 @item threshold3
9470 Limit the maximum change for each plane, default is 65535.
9471 If 0, plane will remain unchanged.
9472 @end table
9473
9474 @subsection Commands
9475
9476 This filter supports the all above options as @ref{commands}.
9477
9478 @section deflicker
9479
9480 Remove temporal frame luminance variations.
9481
9482 It accepts the following options:
9483
9484 @table @option
9485 @item size, s
9486 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
9487
9488 @item mode, m
9489 Set averaging mode to smooth temporal luminance variations.
9490
9491 Available values are:
9492 @table @samp
9493 @item am
9494 Arithmetic mean
9495
9496 @item gm
9497 Geometric mean
9498
9499 @item hm
9500 Harmonic mean
9501
9502 @item qm
9503 Quadratic mean
9504
9505 @item cm
9506 Cubic mean
9507
9508 @item pm
9509 Power mean
9510
9511 @item median
9512 Median
9513 @end table
9514
9515 @item bypass
9516 Do not actually modify frame. Useful when one only wants metadata.
9517 @end table
9518
9519 @section dejudder
9520
9521 Remove judder produced by partially interlaced telecined content.
9522
9523 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
9524 source was partially telecined content then the output of @code{pullup,dejudder}
9525 will have a variable frame rate. May change the recorded frame rate of the
9526 container. Aside from that change, this filter will not affect constant frame
9527 rate video.
9528
9529 The option available in this filter is:
9530 @table @option
9531
9532 @item cycle
9533 Specify the length of the window over which the judder repeats.
9534
9535 Accepts any integer greater than 1. Useful values are:
9536 @table @samp
9537
9538 @item 4
9539 If the original was telecined from 24 to 30 fps (Film to NTSC).
9540
9541 @item 5
9542 If the original was telecined from 25 to 30 fps (PAL to NTSC).
9543
9544 @item 20
9545 If a mixture of the two.
9546 @end table
9547
9548 The default is @samp{4}.
9549 @end table
9550
9551 @section delogo
9552
9553 Suppress a TV station logo by a simple interpolation of the surrounding
9554 pixels. Just set a rectangle covering the logo and watch it disappear
9555 (and sometimes something even uglier appear - your mileage may vary).
9556
9557 It accepts the following parameters:
9558 @table @option
9559
9560 @item x
9561 @item y
9562 Specify the top left corner coordinates of the logo. They must be
9563 specified.
9564
9565 @item w
9566 @item h
9567 Specify the width and height of the logo to clear. They must be
9568 specified.
9569
9570 @item band, t
9571 Specify the thickness of the fuzzy edge of the rectangle (added to
9572 @var{w} and @var{h}). The default value is 1. This option is
9573 deprecated, setting higher values should no longer be necessary and
9574 is not recommended.
9575
9576 @item show
9577 When set to 1, a green rectangle is drawn on the screen to simplify
9578 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
9579 The default value is 0.
9580
9581 The rectangle is drawn on the outermost pixels which will be (partly)
9582 replaced with interpolated values. The values of the next pixels
9583 immediately outside this rectangle in each direction will be used to
9584 compute the interpolated pixel values inside the rectangle.
9585
9586 @end table
9587
9588 @subsection Examples
9589
9590 @itemize
9591 @item
9592 Set a rectangle covering the area with top left corner coordinates 0,0
9593 and size 100x77, and a band of size 10:
9594 @example
9595 delogo=x=0:y=0:w=100:h=77:band=10
9596 @end example
9597
9598 @end itemize
9599
9600 @anchor{derain}
9601 @section derain
9602
9603 Remove the rain in the input image/video by applying the derain methods based on
9604 convolutional neural networks. Supported models:
9605
9606 @itemize
9607 @item
9608 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
9609 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
9610 @end itemize
9611
9612 Training as well as model generation scripts are provided in
9613 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
9614
9615 Native model files (.model) can be generated from TensorFlow model
9616 files (.pb) by using tools/python/convert.py
9617
9618 The filter accepts the following options:
9619
9620 @table @option
9621 @item filter_type
9622 Specify which filter to use. This option accepts the following values:
9623
9624 @table @samp
9625 @item derain
9626 Derain filter. To conduct derain filter, you need to use a derain model.
9627
9628 @item dehaze
9629 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
9630 @end table
9631 Default value is @samp{derain}.
9632
9633 @item dnn_backend
9634 Specify which DNN backend to use for model loading and execution. This option accepts
9635 the following values:
9636
9637 @table @samp
9638 @item native
9639 Native implementation of DNN loading and execution.
9640
9641 @item tensorflow
9642 TensorFlow backend. To enable this backend you
9643 need to install the TensorFlow for C library (see
9644 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9645 @code{--enable-libtensorflow}
9646 @end table
9647 Default value is @samp{native}.
9648
9649 @item model
9650 Set path to model file specifying network architecture and its parameters.
9651 Note that different backends use different file formats. TensorFlow and native
9652 backend can load files for only its format.
9653 @end table
9654
9655 It can also be finished with @ref{dnn_processing} filter.
9656
9657 @section deshake
9658
9659 Attempt to fix small changes in horizontal and/or vertical shift. This
9660 filter helps remove camera shake from hand-holding a camera, bumping a
9661 tripod, moving on a vehicle, etc.
9662
9663 The filter accepts the following options:
9664
9665 @table @option
9666
9667 @item x
9668 @item y
9669 @item w
9670 @item h
9671 Specify a rectangular area where to limit the search for motion
9672 vectors.
9673 If desired the search for motion vectors can be limited to a
9674 rectangular area of the frame defined by its top left corner, width
9675 and height. These parameters have the same meaning as the drawbox
9676 filter which can be used to visualise the position of the bounding
9677 box.
9678
9679 This is useful when simultaneous movement of subjects within the frame
9680 might be confused for camera motion by the motion vector search.
9681
9682 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
9683 then the full frame is used. This allows later options to be set
9684 without specifying the bounding box for the motion vector search.
9685
9686 Default - search the whole frame.
9687
9688 @item rx
9689 @item ry
9690 Specify the maximum extent of movement in x and y directions in the
9691 range 0-64 pixels. Default 16.
9692
9693 @item edge
9694 Specify how to generate pixels to fill blanks at the edge of the
9695 frame. Available values are:
9696 @table @samp
9697 @item blank, 0
9698 Fill zeroes at blank locations
9699 @item original, 1
9700 Original image at blank locations
9701 @item clamp, 2
9702 Extruded edge value at blank locations
9703 @item mirror, 3
9704 Mirrored edge at blank locations
9705 @end table
9706 Default value is @samp{mirror}.
9707
9708 @item blocksize
9709 Specify the blocksize to use for motion search. Range 4-128 pixels,
9710 default 8.
9711
9712 @item contrast
9713 Specify the contrast threshold for blocks. Only blocks with more than
9714 the specified contrast (difference between darkest and lightest
9715 pixels) will be considered. Range 1-255, default 125.
9716
9717 @item search
9718 Specify the search strategy. Available values are:
9719 @table @samp
9720 @item exhaustive, 0
9721 Set exhaustive search
9722 @item less, 1
9723 Set less exhaustive search.
9724 @end table
9725 Default value is @samp{exhaustive}.
9726
9727 @item filename
9728 If set then a detailed log of the motion search is written to the
9729 specified file.
9730
9731 @end table
9732
9733 @section despill
9734
9735 Remove unwanted contamination of foreground colors, caused by reflected color of
9736 greenscreen or bluescreen.
9737
9738 This filter accepts the following options:
9739
9740 @table @option
9741 @item type
9742 Set what type of despill to use.
9743
9744 @item mix
9745 Set how spillmap will be generated.
9746
9747 @item expand
9748 Set how much to get rid of still remaining spill.
9749
9750 @item red
9751 Controls amount of red in spill area.
9752
9753 @item green
9754 Controls amount of green in spill area.
9755 Should be -1 for greenscreen.
9756
9757 @item blue
9758 Controls amount of blue in spill area.
9759 Should be -1 for bluescreen.
9760
9761 @item brightness
9762 Controls brightness of spill area, preserving colors.
9763
9764 @item alpha
9765 Modify alpha from generated spillmap.
9766 @end table
9767
9768 @subsection Commands
9769
9770 This filter supports the all above options as @ref{commands}.
9771
9772 @section detelecine
9773
9774 Apply an exact inverse of the telecine operation. It requires a predefined
9775 pattern specified using the pattern option which must be the same as that passed
9776 to the telecine filter.
9777
9778 This filter accepts the following options:
9779
9780 @table @option
9781 @item first_field
9782 @table @samp
9783 @item top, t
9784 top field first
9785 @item bottom, b
9786 bottom field first
9787 The default value is @code{top}.
9788 @end table
9789
9790 @item pattern
9791 A string of numbers representing the pulldown pattern you wish to apply.
9792 The default value is @code{23}.
9793
9794 @item start_frame
9795 A number representing position of the first frame with respect to the telecine
9796 pattern. This is to be used if the stream is cut. The default value is @code{0}.
9797 @end table
9798
9799 @section dilation
9800
9801 Apply dilation effect to the video.
9802
9803 This filter replaces the pixel by the local(3x3) maximum.
9804
9805 It accepts the following options:
9806
9807 @table @option
9808 @item threshold0
9809 @item threshold1
9810 @item threshold2
9811 @item threshold3
9812 Limit the maximum change for each plane, default is 65535.
9813 If 0, plane will remain unchanged.
9814
9815 @item coordinates
9816 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9817 pixels are used.
9818
9819 Flags to local 3x3 coordinates maps like this:
9820
9821     1 2 3
9822     4   5
9823     6 7 8
9824 @end table
9825
9826 @subsection Commands
9827
9828 This filter supports the all above options as @ref{commands}.
9829
9830 @section displace
9831
9832 Displace pixels as indicated by second and third input stream.
9833
9834 It takes three input streams and outputs one stream, the first input is the
9835 source, and second and third input are displacement maps.
9836
9837 The second input specifies how much to displace pixels along the
9838 x-axis, while the third input specifies how much to displace pixels
9839 along the y-axis.
9840 If one of displacement map streams terminates, last frame from that
9841 displacement map will be used.
9842
9843 Note that once generated, displacements maps can be reused over and over again.
9844
9845 A description of the accepted options follows.
9846
9847 @table @option
9848 @item edge
9849 Set displace behavior for pixels that are out of range.
9850
9851 Available values are:
9852 @table @samp
9853 @item blank
9854 Missing pixels are replaced by black pixels.
9855
9856 @item smear
9857 Adjacent pixels will spread out to replace missing pixels.
9858
9859 @item wrap
9860 Out of range pixels are wrapped so they point to pixels of other side.
9861
9862 @item mirror
9863 Out of range pixels will be replaced with mirrored pixels.
9864 @end table
9865 Default is @samp{smear}.
9866
9867 @end table
9868
9869 @subsection Examples
9870
9871 @itemize
9872 @item
9873 Add ripple effect to rgb input of video size hd720:
9874 @example
9875 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
9876 @end example
9877
9878 @item
9879 Add wave effect to rgb input of video size hd720:
9880 @example
9881 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
9882 @end example
9883 @end itemize
9884
9885 @anchor{dnn_processing}
9886 @section dnn_processing
9887
9888 Do image processing with deep neural networks. It works together with another filter
9889 which converts the pixel format of the Frame to what the dnn network requires.
9890
9891 The filter accepts the following options:
9892
9893 @table @option
9894 @item dnn_backend
9895 Specify which DNN backend to use for model loading and execution. This option accepts
9896 the following values:
9897
9898 @table @samp
9899 @item native
9900 Native implementation of DNN loading and execution.
9901
9902 @item tensorflow
9903 TensorFlow backend. To enable this backend you
9904 need to install the TensorFlow for C library (see
9905 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9906 @code{--enable-libtensorflow}
9907
9908 @item openvino
9909 OpenVINO backend. To enable this backend you
9910 need to build and install the OpenVINO for C library (see
9911 @url{https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md}) and configure FFmpeg with
9912 @code{--enable-libopenvino} (--extra-cflags=-I... --extra-ldflags=-L... might
9913 be needed if the header files and libraries are not installed into system path)
9914
9915 @end table
9916
9917 Default value is @samp{native}.
9918
9919 @item model
9920 Set path to model file specifying network architecture and its parameters.
9921 Note that different backends use different file formats. TensorFlow, OpenVINO and native
9922 backend can load files for only its format.
9923
9924 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
9925
9926 @item input
9927 Set the input name of the dnn network.
9928
9929 @item output
9930 Set the output name of the dnn network.
9931
9932 @end table
9933
9934 @subsection Examples
9935
9936 @itemize
9937 @item
9938 Remove rain in rgb24 frame with can.pb (see @ref{derain} filter):
9939 @example
9940 ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
9941 @end example
9942
9943 @item
9944 Halve the pixel value of the frame with format gray32f:
9945 @example
9946 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
9947 @end example
9948
9949 @item
9950 Handle the Y channel with srcnn.pb (see @ref{sr} filter) for frame with yuv420p (planar YUV formats supported):
9951 @example
9952 ./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
9953 @end example
9954
9955 @item
9956 Handle the Y channel with espcn.pb (see @ref{sr} filter), which changes frame size, for format yuv420p (planar YUV formats supported):
9957 @example
9958 ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y -y tmp.espcn.jpg
9959 @end example
9960
9961 @end itemize
9962
9963 @section drawbox
9964
9965 Draw a colored box on the input image.
9966
9967 It accepts the following parameters:
9968
9969 @table @option
9970 @item x
9971 @item y
9972 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
9973
9974 @item width, w
9975 @item height, h
9976 The expressions which specify the width and height of the box; if 0 they are interpreted as
9977 the input width and height. It defaults to 0.
9978
9979 @item color, c
9980 Specify the color of the box to write. For the general syntax of this option,
9981 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9982 value @code{invert} is used, the box edge color is the same as the
9983 video with inverted luma.
9984
9985 @item thickness, t
9986 The expression which sets the thickness of the box edge.
9987 A value of @code{fill} will create a filled box. Default value is @code{3}.
9988
9989 See below for the list of accepted constants.
9990
9991 @item replace
9992 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
9993 will overwrite the video's color and alpha pixels.
9994 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
9995 @end table
9996
9997 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9998 following constants:
9999
10000 @table @option
10001 @item dar
10002 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
10003
10004 @item hsub
10005 @item vsub
10006 horizontal and vertical chroma subsample values. For example for the
10007 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10008
10009 @item in_h, ih
10010 @item in_w, iw
10011 The input width and height.
10012
10013 @item sar
10014 The input sample aspect ratio.
10015
10016 @item x
10017 @item y
10018 The x and y offset coordinates where the box is drawn.
10019
10020 @item w
10021 @item h
10022 The width and height of the drawn box.
10023
10024 @item t
10025 The thickness of the drawn box.
10026
10027 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
10028 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
10029
10030 @end table
10031
10032 @subsection Examples
10033
10034 @itemize
10035 @item
10036 Draw a black box around the edge of the input image:
10037 @example
10038 drawbox
10039 @end example
10040
10041 @item
10042 Draw a box with color red and an opacity of 50%:
10043 @example
10044 drawbox=10:20:200:60:red@@0.5
10045 @end example
10046
10047 The previous example can be specified as:
10048 @example
10049 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
10050 @end example
10051
10052 @item
10053 Fill the box with pink color:
10054 @example
10055 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
10056 @end example
10057
10058 @item
10059 Draw a 2-pixel red 2.40:1 mask:
10060 @example
10061 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
10062 @end example
10063 @end itemize
10064
10065 @subsection Commands
10066 This filter supports same commands as options.
10067 The command accepts the same syntax of the corresponding option.
10068
10069 If the specified expression is not valid, it is kept at its current
10070 value.
10071
10072 @anchor{drawgraph}
10073 @section drawgraph
10074 Draw a graph using input video metadata.
10075
10076 It accepts the following parameters:
10077
10078 @table @option
10079 @item m1
10080 Set 1st frame metadata key from which metadata values will be used to draw a graph.
10081
10082 @item fg1
10083 Set 1st foreground color expression.
10084
10085 @item m2
10086 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
10087
10088 @item fg2
10089 Set 2nd foreground color expression.
10090
10091 @item m3
10092 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
10093
10094 @item fg3
10095 Set 3rd foreground color expression.
10096
10097 @item m4
10098 Set 4th frame metadata key from which metadata values will be used to draw a graph.
10099
10100 @item fg4
10101 Set 4th foreground color expression.
10102
10103 @item min
10104 Set minimal value of metadata value.
10105
10106 @item max
10107 Set maximal value of metadata value.
10108
10109 @item bg
10110 Set graph background color. Default is white.
10111
10112 @item mode
10113 Set graph mode.
10114
10115 Available values for mode is:
10116 @table @samp
10117 @item bar
10118 @item dot
10119 @item line
10120 @end table
10121
10122 Default is @code{line}.
10123
10124 @item slide
10125 Set slide mode.
10126
10127 Available values for slide is:
10128 @table @samp
10129 @item frame
10130 Draw new frame when right border is reached.
10131
10132 @item replace
10133 Replace old columns with new ones.
10134
10135 @item scroll
10136 Scroll from right to left.
10137
10138 @item rscroll
10139 Scroll from left to right.
10140
10141 @item picture
10142 Draw single picture.
10143 @end table
10144
10145 Default is @code{frame}.
10146
10147 @item size
10148 Set size of graph video. For the syntax of this option, check the
10149 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
10150 The default value is @code{900x256}.
10151
10152 @item rate, r
10153 Set the output frame rate. Default value is @code{25}.
10154
10155 The foreground color expressions can use the following variables:
10156 @table @option
10157 @item MIN
10158 Minimal value of metadata value.
10159
10160 @item MAX
10161 Maximal value of metadata value.
10162
10163 @item VAL
10164 Current metadata key value.
10165 @end table
10166
10167 The color is defined as 0xAABBGGRR.
10168 @end table
10169
10170 Example using metadata from @ref{signalstats} filter:
10171 @example
10172 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
10173 @end example
10174
10175 Example using metadata from @ref{ebur128} filter:
10176 @example
10177 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
10178 @end example
10179
10180 @section drawgrid
10181
10182 Draw a grid on the input image.
10183
10184 It accepts the following parameters:
10185
10186 @table @option
10187 @item x
10188 @item y
10189 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
10190
10191 @item width, w
10192 @item height, h
10193 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
10194 input width and height, respectively, minus @code{thickness}, so image gets
10195 framed. Default to 0.
10196
10197 @item color, c
10198 Specify the color of the grid. For the general syntax of this option,
10199 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
10200 value @code{invert} is used, the grid color is the same as the
10201 video with inverted luma.
10202
10203 @item thickness, t
10204 The expression which sets the thickness of the grid line. Default value is @code{1}.
10205
10206 See below for the list of accepted constants.
10207
10208 @item replace
10209 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
10210 will overwrite the video's color and alpha pixels.
10211 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
10212 @end table
10213
10214 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
10215 following constants:
10216
10217 @table @option
10218 @item dar
10219 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
10220
10221 @item hsub
10222 @item vsub
10223 horizontal and vertical chroma subsample values. For example for the
10224 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10225
10226 @item in_h, ih
10227 @item in_w, iw
10228 The input grid cell width and height.
10229
10230 @item sar
10231 The input sample aspect ratio.
10232
10233 @item x
10234 @item y
10235 The x and y coordinates of some point of grid intersection (meant to configure offset).
10236
10237 @item w
10238 @item h
10239 The width and height of the drawn cell.
10240
10241 @item t
10242 The thickness of the drawn cell.
10243
10244 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
10245 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
10246
10247 @end table
10248
10249 @subsection Examples
10250
10251 @itemize
10252 @item
10253 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
10254 @example
10255 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
10256 @end example
10257
10258 @item
10259 Draw a white 3x3 grid with an opacity of 50%:
10260 @example
10261 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
10262 @end example
10263 @end itemize
10264
10265 @subsection Commands
10266 This filter supports same commands as options.
10267 The command accepts the same syntax of the corresponding option.
10268
10269 If the specified expression is not valid, it is kept at its current
10270 value.
10271
10272 @anchor{drawtext}
10273 @section drawtext
10274
10275 Draw a text string or text from a specified file on top of a video, using the
10276 libfreetype library.
10277
10278 To enable compilation of this filter, you need to configure FFmpeg with
10279 @code{--enable-libfreetype}.
10280 To enable default font fallback and the @var{font} option you need to
10281 configure FFmpeg with @code{--enable-libfontconfig}.
10282 To enable the @var{text_shaping} option, you need to configure FFmpeg with
10283 @code{--enable-libfribidi}.
10284
10285 @subsection Syntax
10286
10287 It accepts the following parameters:
10288
10289 @table @option
10290
10291 @item box
10292 Used to draw a box around text using the background color.
10293 The value must be either 1 (enable) or 0 (disable).
10294 The default value of @var{box} is 0.
10295
10296 @item boxborderw
10297 Set the width of the border to be drawn around the box using @var{boxcolor}.
10298 The default value of @var{boxborderw} is 0.
10299
10300 @item boxcolor
10301 The color to be used for drawing box around text. For the syntax of this
10302 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10303
10304 The default value of @var{boxcolor} is "white".
10305
10306 @item line_spacing
10307 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
10308 The default value of @var{line_spacing} is 0.
10309
10310 @item borderw
10311 Set the width of the border to be drawn around the text using @var{bordercolor}.
10312 The default value of @var{borderw} is 0.
10313
10314 @item bordercolor
10315 Set the color to be used for drawing border around text. For the syntax of this
10316 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10317
10318 The default value of @var{bordercolor} is "black".
10319
10320 @item expansion
10321 Select how the @var{text} is expanded. Can be either @code{none},
10322 @code{strftime} (deprecated) or
10323 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
10324 below for details.
10325
10326 @item basetime
10327 Set a start time for the count. Value is in microseconds. Only applied
10328 in the deprecated strftime expansion mode. To emulate in normal expansion
10329 mode use the @code{pts} function, supplying the start time (in seconds)
10330 as the second argument.
10331
10332 @item fix_bounds
10333 If true, check and fix text coords to avoid clipping.
10334
10335 @item fontcolor
10336 The color to be used for drawing fonts. For the syntax of this option, check
10337 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10338
10339 The default value of @var{fontcolor} is "black".
10340
10341 @item fontcolor_expr
10342 String which is expanded the same way as @var{text} to obtain dynamic
10343 @var{fontcolor} value. By default this option has empty value and is not
10344 processed. When this option is set, it overrides @var{fontcolor} option.
10345
10346 @item font
10347 The font family to be used for drawing text. By default Sans.
10348
10349 @item fontfile
10350 The font file to be used for drawing text. The path must be included.
10351 This parameter is mandatory if the fontconfig support is disabled.
10352
10353 @item alpha
10354 Draw the text applying alpha blending. The value can
10355 be a number between 0.0 and 1.0.
10356 The expression accepts the same variables @var{x, y} as well.
10357 The default value is 1.
10358 Please see @var{fontcolor_expr}.
10359
10360 @item fontsize
10361 The font size to be used for drawing text.
10362 The default value of @var{fontsize} is 16.
10363
10364 @item text_shaping
10365 If set to 1, attempt to shape the text (for example, reverse the order of
10366 right-to-left text and join Arabic characters) before drawing it.
10367 Otherwise, just draw the text exactly as given.
10368 By default 1 (if supported).
10369
10370 @item ft_load_flags
10371 The flags to be used for loading the fonts.
10372
10373 The flags map the corresponding flags supported by libfreetype, and are
10374 a combination of the following values:
10375 @table @var
10376 @item default
10377 @item no_scale
10378 @item no_hinting
10379 @item render
10380 @item no_bitmap
10381 @item vertical_layout
10382 @item force_autohint
10383 @item crop_bitmap
10384 @item pedantic
10385 @item ignore_global_advance_width
10386 @item no_recurse
10387 @item ignore_transform
10388 @item monochrome
10389 @item linear_design
10390 @item no_autohint
10391 @end table
10392
10393 Default value is "default".
10394
10395 For more information consult the documentation for the FT_LOAD_*
10396 libfreetype flags.
10397
10398 @item shadowcolor
10399 The color to be used for drawing a shadow behind the drawn text. For the
10400 syntax of this option, check the @ref{color syntax,,"Color" section in the
10401 ffmpeg-utils manual,ffmpeg-utils}.
10402
10403 The default value of @var{shadowcolor} is "black".
10404
10405 @item shadowx
10406 @item shadowy
10407 The x and y offsets for the text shadow position with respect to the
10408 position of the text. They can be either positive or negative
10409 values. The default value for both is "0".
10410
10411 @item start_number
10412 The starting frame number for the n/frame_num variable. The default value
10413 is "0".
10414
10415 @item tabsize
10416 The size in number of spaces to use for rendering the tab.
10417 Default value is 4.
10418
10419 @item timecode
10420 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
10421 format. It can be used with or without text parameter. @var{timecode_rate}
10422 option must be specified.
10423
10424 @item timecode_rate, rate, r
10425 Set the timecode frame rate (timecode only). Value will be rounded to nearest
10426 integer. Minimum value is "1".
10427 Drop-frame timecode is supported for frame rates 30 & 60.
10428
10429 @item tc24hmax
10430 If set to 1, the output of the timecode option will wrap around at 24 hours.
10431 Default is 0 (disabled).
10432
10433 @item text
10434 The text string to be drawn. The text must be a sequence of UTF-8
10435 encoded characters.
10436 This parameter is mandatory if no file is specified with the parameter
10437 @var{textfile}.
10438
10439 @item textfile
10440 A text file containing text to be drawn. The text must be a sequence
10441 of UTF-8 encoded characters.
10442
10443 This parameter is mandatory if no text string is specified with the
10444 parameter @var{text}.
10445
10446 If both @var{text} and @var{textfile} are specified, an error is thrown.
10447
10448 @item reload
10449 If set to 1, the @var{textfile} will be reloaded before each frame.
10450 Be sure to update it atomically, or it may be read partially, or even fail.
10451
10452 @item x
10453 @item y
10454 The expressions which specify the offsets where text will be drawn
10455 within the video frame. They are relative to the top/left border of the
10456 output image.
10457
10458 The default value of @var{x} and @var{y} is "0".
10459
10460 See below for the list of accepted constants and functions.
10461 @end table
10462
10463 The parameters for @var{x} and @var{y} are expressions containing the
10464 following constants and functions:
10465
10466 @table @option
10467 @item dar
10468 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
10469
10470 @item hsub
10471 @item vsub
10472 horizontal and vertical chroma subsample values. For example for the
10473 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10474
10475 @item line_h, lh
10476 the height of each text line
10477
10478 @item main_h, h, H
10479 the input height
10480
10481 @item main_w, w, W
10482 the input width
10483
10484 @item max_glyph_a, ascent
10485 the maximum distance from the baseline to the highest/upper grid
10486 coordinate used to place a glyph outline point, for all the rendered
10487 glyphs.
10488 It is a positive value, due to the grid's orientation with the Y axis
10489 upwards.
10490
10491 @item max_glyph_d, descent
10492 the maximum distance from the baseline to the lowest grid coordinate
10493 used to place a glyph outline point, for all the rendered glyphs.
10494 This is a negative value, due to the grid's orientation, with the Y axis
10495 upwards.
10496
10497 @item max_glyph_h
10498 maximum glyph height, that is the maximum height for all the glyphs
10499 contained in the rendered text, it is equivalent to @var{ascent} -
10500 @var{descent}.
10501
10502 @item max_glyph_w
10503 maximum glyph width, that is the maximum width for all the glyphs
10504 contained in the rendered text
10505
10506 @item n
10507 the number of input frame, starting from 0
10508
10509 @item rand(min, max)
10510 return a random number included between @var{min} and @var{max}
10511
10512 @item sar
10513 The input sample aspect ratio.
10514
10515 @item t
10516 timestamp expressed in seconds, NAN if the input timestamp is unknown
10517
10518 @item text_h, th
10519 the height of the rendered text
10520
10521 @item text_w, tw
10522 the width of the rendered text
10523
10524 @item x
10525 @item y
10526 the x and y offset coordinates where the text is drawn.
10527
10528 These parameters allow the @var{x} and @var{y} expressions to refer
10529 to each other, so you can for example specify @code{y=x/dar}.
10530
10531 @item pict_type
10532 A one character description of the current frame's picture type.
10533
10534 @item pkt_pos
10535 The current packet's position in the input file or stream
10536 (in bytes, from the start of the input). A value of -1 indicates
10537 this info is not available.
10538
10539 @item pkt_duration
10540 The current packet's duration, in seconds.
10541
10542 @item pkt_size
10543 The current packet's size (in bytes).
10544 @end table
10545
10546 @anchor{drawtext_expansion}
10547 @subsection Text expansion
10548
10549 If @option{expansion} is set to @code{strftime},
10550 the filter recognizes strftime() sequences in the provided text and
10551 expands them accordingly. Check the documentation of strftime(). This
10552 feature is deprecated.
10553
10554 If @option{expansion} is set to @code{none}, the text is printed verbatim.
10555
10556 If @option{expansion} is set to @code{normal} (which is the default),
10557 the following expansion mechanism is used.
10558
10559 The backslash character @samp{\}, followed by any character, always expands to
10560 the second character.
10561
10562 Sequences of the form @code{%@{...@}} are expanded. The text between the
10563 braces is a function name, possibly followed by arguments separated by ':'.
10564 If the arguments contain special characters or delimiters (':' or '@}'),
10565 they should be escaped.
10566
10567 Note that they probably must also be escaped as the value for the
10568 @option{text} option in the filter argument string and as the filter
10569 argument in the filtergraph description, and possibly also for the shell,
10570 that makes up to four levels of escaping; using a text file avoids these
10571 problems.
10572
10573 The following functions are available:
10574
10575 @table @command
10576
10577 @item expr, e
10578 The expression evaluation result.
10579
10580 It must take one argument specifying the expression to be evaluated,
10581 which accepts the same constants and functions as the @var{x} and
10582 @var{y} values. Note that not all constants should be used, for
10583 example the text size is not known when evaluating the expression, so
10584 the constants @var{text_w} and @var{text_h} will have an undefined
10585 value.
10586
10587 @item expr_int_format, eif
10588 Evaluate the expression's value and output as formatted integer.
10589
10590 The first argument is the expression to be evaluated, just as for the @var{expr} function.
10591 The second argument specifies the output format. Allowed values are @samp{x},
10592 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
10593 @code{printf} function.
10594 The third parameter is optional and sets the number of positions taken by the output.
10595 It can be used to add padding with zeros from the left.
10596
10597 @item gmtime
10598 The time at which the filter is running, expressed in UTC.
10599 It can accept an argument: a strftime() format string.
10600
10601 @item localtime
10602 The time at which the filter is running, expressed in the local time zone.
10603 It can accept an argument: a strftime() format string.
10604
10605 @item metadata
10606 Frame metadata. Takes one or two arguments.
10607
10608 The first argument is mandatory and specifies the metadata key.
10609
10610 The second argument is optional and specifies a default value, used when the
10611 metadata key is not found or empty.
10612
10613 Available metadata can be identified by inspecting entries
10614 starting with TAG included within each frame section
10615 printed by running @code{ffprobe -show_frames}.
10616
10617 String metadata generated in filters leading to
10618 the drawtext filter are also available.
10619
10620 @item n, frame_num
10621 The frame number, starting from 0.
10622
10623 @item pict_type
10624 A one character description of the current picture type.
10625
10626 @item pts
10627 The timestamp of the current frame.
10628 It can take up to three arguments.
10629
10630 The first argument is the format of the timestamp; it defaults to @code{flt}
10631 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
10632 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
10633 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
10634 @code{localtime} stands for the timestamp of the frame formatted as
10635 local time zone time.
10636
10637 The second argument is an offset added to the timestamp.
10638
10639 If the format is set to @code{hms}, a third argument @code{24HH} may be
10640 supplied to present the hour part of the formatted timestamp in 24h format
10641 (00-23).
10642
10643 If the format is set to @code{localtime} or @code{gmtime},
10644 a third argument may be supplied: a strftime() format string.
10645 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
10646 @end table
10647
10648 @subsection Commands
10649
10650 This filter supports altering parameters via commands:
10651 @table @option
10652 @item reinit
10653 Alter existing filter parameters.
10654
10655 Syntax for the argument is the same as for filter invocation, e.g.
10656
10657 @example
10658 fontsize=56:fontcolor=green:text='Hello World'
10659 @end example
10660
10661 Full filter invocation with sendcmd would look like this:
10662
10663 @example
10664 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
10665 @end example
10666 @end table
10667
10668 If the entire argument can't be parsed or applied as valid values then the filter will
10669 continue with its existing parameters.
10670
10671 @subsection Examples
10672
10673 @itemize
10674 @item
10675 Draw "Test Text" with font FreeSerif, using the default values for the
10676 optional parameters.
10677
10678 @example
10679 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
10680 @end example
10681
10682 @item
10683 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
10684 and y=50 (counting from the top-left corner of the screen), text is
10685 yellow with a red box around it. Both the text and the box have an
10686 opacity of 20%.
10687
10688 @example
10689 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
10690           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
10691 @end example
10692
10693 Note that the double quotes are not necessary if spaces are not used
10694 within the parameter list.
10695
10696 @item
10697 Show the text at the center of the video frame:
10698 @example
10699 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
10700 @end example
10701
10702 @item
10703 Show the text at a random position, switching to a new position every 30 seconds:
10704 @example
10705 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)"
10706 @end example
10707
10708 @item
10709 Show a text line sliding from right to left in the last row of the video
10710 frame. The file @file{LONG_LINE} is assumed to contain a single line
10711 with no newlines.
10712 @example
10713 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
10714 @end example
10715
10716 @item
10717 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
10718 @example
10719 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
10720 @end example
10721
10722 @item
10723 Draw a single green letter "g", at the center of the input video.
10724 The glyph baseline is placed at half screen height.
10725 @example
10726 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
10727 @end example
10728
10729 @item
10730 Show text for 1 second every 3 seconds:
10731 @example
10732 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
10733 @end example
10734
10735 @item
10736 Use fontconfig to set the font. Note that the colons need to be escaped.
10737 @example
10738 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
10739 @end example
10740
10741 @item
10742 Draw "Test Text" with font size dependent on height of the video.
10743 @example
10744 drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
10745 @end example
10746
10747 @item
10748 Print the date of a real-time encoding (see strftime(3)):
10749 @example
10750 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
10751 @end example
10752
10753 @item
10754 Show text fading in and out (appearing/disappearing):
10755 @example
10756 #!/bin/sh
10757 DS=1.0 # display start
10758 DE=10.0 # display end
10759 FID=1.5 # fade in duration
10760 FOD=5 # fade out duration
10761 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 @}"
10762 @end example
10763
10764 @item
10765 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
10766 and the @option{fontsize} value are included in the @option{y} offset.
10767 @example
10768 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
10769 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
10770 @end example
10771
10772 @item
10773 Plot special @var{lavf.image2dec.source_basename} metadata onto each frame if
10774 such metadata exists. Otherwise, plot the string "NA". Note that image2 demuxer
10775 must have option @option{-export_path_metadata 1} for the special metadata fields
10776 to be available for filters.
10777 @example
10778 drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%@{metadata\:lavf.image2dec.source_basename\:NA@}':x=10:y=10"
10779 @end example
10780
10781 @end itemize
10782
10783 For more information about libfreetype, check:
10784 @url{http://www.freetype.org/}.
10785
10786 For more information about fontconfig, check:
10787 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
10788
10789 For more information about libfribidi, check:
10790 @url{http://fribidi.org/}.
10791
10792 @section edgedetect
10793
10794 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
10795
10796 The filter accepts the following options:
10797
10798 @table @option
10799 @item low
10800 @item high
10801 Set low and high threshold values used by the Canny thresholding
10802 algorithm.
10803
10804 The high threshold selects the "strong" edge pixels, which are then
10805 connected through 8-connectivity with the "weak" edge pixels selected
10806 by the low threshold.
10807
10808 @var{low} and @var{high} threshold values must be chosen in the range
10809 [0,1], and @var{low} should be lesser or equal to @var{high}.
10810
10811 Default value for @var{low} is @code{20/255}, and default value for @var{high}
10812 is @code{50/255}.
10813
10814 @item mode
10815 Define the drawing mode.
10816
10817 @table @samp
10818 @item wires
10819 Draw white/gray wires on black background.
10820
10821 @item colormix
10822 Mix the colors to create a paint/cartoon effect.
10823
10824 @item canny
10825 Apply Canny edge detector on all selected planes.
10826 @end table
10827 Default value is @var{wires}.
10828
10829 @item planes
10830 Select planes for filtering. By default all available planes are filtered.
10831 @end table
10832
10833 @subsection Examples
10834
10835 @itemize
10836 @item
10837 Standard edge detection with custom values for the hysteresis thresholding:
10838 @example
10839 edgedetect=low=0.1:high=0.4
10840 @end example
10841
10842 @item
10843 Painting effect without thresholding:
10844 @example
10845 edgedetect=mode=colormix:high=0
10846 @end example
10847 @end itemize
10848
10849 @section elbg
10850
10851 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
10852
10853 For each input image, the filter will compute the optimal mapping from
10854 the input to the output given the codebook length, that is the number
10855 of distinct output colors.
10856
10857 This filter accepts the following options.
10858
10859 @table @option
10860 @item codebook_length, l
10861 Set codebook length. The value must be a positive integer, and
10862 represents the number of distinct output colors. Default value is 256.
10863
10864 @item nb_steps, n
10865 Set the maximum number of iterations to apply for computing the optimal
10866 mapping. The higher the value the better the result and the higher the
10867 computation time. Default value is 1.
10868
10869 @item seed, s
10870 Set a random seed, must be an integer included between 0 and
10871 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
10872 will try to use a good random seed on a best effort basis.
10873
10874 @item pal8
10875 Set pal8 output pixel format. This option does not work with codebook
10876 length greater than 256.
10877 @end table
10878
10879 @section entropy
10880
10881 Measure graylevel entropy in histogram of color channels of video frames.
10882
10883 It accepts the following parameters:
10884
10885 @table @option
10886 @item mode
10887 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
10888
10889 @var{diff} mode measures entropy of histogram delta values, absolute differences
10890 between neighbour histogram values.
10891 @end table
10892
10893 @section eq
10894 Set brightness, contrast, saturation and approximate gamma adjustment.
10895
10896 The filter accepts the following options:
10897
10898 @table @option
10899 @item contrast
10900 Set the contrast expression. The value must be a float value in range
10901 @code{-1000.0} to @code{1000.0}. The default value is "1".
10902
10903 @item brightness
10904 Set the brightness expression. The value must be a float value in
10905 range @code{-1.0} to @code{1.0}. The default value is "0".
10906
10907 @item saturation
10908 Set the saturation expression. The value must be a float in
10909 range @code{0.0} to @code{3.0}. The default value is "1".
10910
10911 @item gamma
10912 Set the gamma expression. The value must be a float in range
10913 @code{0.1} to @code{10.0}.  The default value is "1".
10914
10915 @item gamma_r
10916 Set the gamma expression for red. The value must be a float in
10917 range @code{0.1} to @code{10.0}. The default value is "1".
10918
10919 @item gamma_g
10920 Set the gamma expression for green. The value must be a float in range
10921 @code{0.1} to @code{10.0}. The default value is "1".
10922
10923 @item gamma_b
10924 Set the gamma expression for blue. The value must be a float in range
10925 @code{0.1} to @code{10.0}. The default value is "1".
10926
10927 @item gamma_weight
10928 Set the gamma weight expression. It can be used to reduce the effect
10929 of a high gamma value on bright image areas, e.g. keep them from
10930 getting overamplified and just plain white. The value must be a float
10931 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
10932 gamma correction all the way down while @code{1.0} leaves it at its
10933 full strength. Default is "1".
10934
10935 @item eval
10936 Set when the expressions for brightness, contrast, saturation and
10937 gamma expressions are evaluated.
10938
10939 It accepts the following values:
10940 @table @samp
10941 @item init
10942 only evaluate expressions once during the filter initialization or
10943 when a command is processed
10944
10945 @item frame
10946 evaluate expressions for each incoming frame
10947 @end table
10948
10949 Default value is @samp{init}.
10950 @end table
10951
10952 The expressions accept the following parameters:
10953 @table @option
10954 @item n
10955 frame count of the input frame starting from 0
10956
10957 @item pos
10958 byte position of the corresponding packet in the input file, NAN if
10959 unspecified
10960
10961 @item r
10962 frame rate of the input video, NAN if the input frame rate is unknown
10963
10964 @item t
10965 timestamp expressed in seconds, NAN if the input timestamp is unknown
10966 @end table
10967
10968 @subsection Commands
10969 The filter supports the following commands:
10970
10971 @table @option
10972 @item contrast
10973 Set the contrast expression.
10974
10975 @item brightness
10976 Set the brightness expression.
10977
10978 @item saturation
10979 Set the saturation expression.
10980
10981 @item gamma
10982 Set the gamma expression.
10983
10984 @item gamma_r
10985 Set the gamma_r expression.
10986
10987 @item gamma_g
10988 Set gamma_g expression.
10989
10990 @item gamma_b
10991 Set gamma_b expression.
10992
10993 @item gamma_weight
10994 Set gamma_weight expression.
10995
10996 The command accepts the same syntax of the corresponding option.
10997
10998 If the specified expression is not valid, it is kept at its current
10999 value.
11000
11001 @end table
11002
11003 @section erosion
11004
11005 Apply erosion effect to the video.
11006
11007 This filter replaces the pixel by the local(3x3) minimum.
11008
11009 It accepts the following options:
11010
11011 @table @option
11012 @item threshold0
11013 @item threshold1
11014 @item threshold2
11015 @item threshold3
11016 Limit the maximum change for each plane, default is 65535.
11017 If 0, plane will remain unchanged.
11018
11019 @item coordinates
11020 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
11021 pixels are used.
11022
11023 Flags to local 3x3 coordinates maps like this:
11024
11025     1 2 3
11026     4   5
11027     6 7 8
11028 @end table
11029
11030 @subsection Commands
11031
11032 This filter supports the all above options as @ref{commands}.
11033
11034 @section extractplanes
11035
11036 Extract color channel components from input video stream into
11037 separate grayscale video streams.
11038
11039 The filter accepts the following option:
11040
11041 @table @option
11042 @item planes
11043 Set plane(s) to extract.
11044
11045 Available values for planes are:
11046 @table @samp
11047 @item y
11048 @item u
11049 @item v
11050 @item a
11051 @item r
11052 @item g
11053 @item b
11054 @end table
11055
11056 Choosing planes not available in the input will result in an error.
11057 That means you cannot select @code{r}, @code{g}, @code{b} planes
11058 with @code{y}, @code{u}, @code{v} planes at same time.
11059 @end table
11060
11061 @subsection Examples
11062
11063 @itemize
11064 @item
11065 Extract luma, u and v color channel component from input video frame
11066 into 3 grayscale outputs:
11067 @example
11068 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
11069 @end example
11070 @end itemize
11071
11072 @section fade
11073
11074 Apply a fade-in/out effect to the input video.
11075
11076 It accepts the following parameters:
11077
11078 @table @option
11079 @item type, t
11080 The effect type can be either "in" for a fade-in, or "out" for a fade-out
11081 effect.
11082 Default is @code{in}.
11083
11084 @item start_frame, s
11085 Specify the number of the frame to start applying the fade
11086 effect at. Default is 0.
11087
11088 @item nb_frames, n
11089 The number of frames that the fade effect lasts. At the end of the
11090 fade-in effect, the output video will have the same intensity as the input video.
11091 At the end of the fade-out transition, the output video will be filled with the
11092 selected @option{color}.
11093 Default is 25.
11094
11095 @item alpha
11096 If set to 1, fade only alpha channel, if one exists on the input.
11097 Default value is 0.
11098
11099 @item start_time, st
11100 Specify the timestamp (in seconds) of the frame to start to apply the fade
11101 effect. If both start_frame and start_time are specified, the fade will start at
11102 whichever comes last.  Default is 0.
11103
11104 @item duration, d
11105 The number of seconds for which the fade effect has to last. At the end of the
11106 fade-in effect the output video will have the same intensity as the input video,
11107 at the end of the fade-out transition the output video will be filled with the
11108 selected @option{color}.
11109 If both duration and nb_frames are specified, duration is used. Default is 0
11110 (nb_frames is used by default).
11111
11112 @item color, c
11113 Specify the color of the fade. Default is "black".
11114 @end table
11115
11116 @subsection Examples
11117
11118 @itemize
11119 @item
11120 Fade in the first 30 frames of video:
11121 @example
11122 fade=in:0:30
11123 @end example
11124
11125 The command above is equivalent to:
11126 @example
11127 fade=t=in:s=0:n=30
11128 @end example
11129
11130 @item
11131 Fade out the last 45 frames of a 200-frame video:
11132 @example
11133 fade=out:155:45
11134 fade=type=out:start_frame=155:nb_frames=45
11135 @end example
11136
11137 @item
11138 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
11139 @example
11140 fade=in:0:25, fade=out:975:25
11141 @end example
11142
11143 @item
11144 Make the first 5 frames yellow, then fade in from frame 5-24:
11145 @example
11146 fade=in:5:20:color=yellow
11147 @end example
11148
11149 @item
11150 Fade in alpha over first 25 frames of video:
11151 @example
11152 fade=in:0:25:alpha=1
11153 @end example
11154
11155 @item
11156 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
11157 @example
11158 fade=t=in:st=5.5:d=0.5
11159 @end example
11160
11161 @end itemize
11162
11163 @section fftdnoiz
11164 Denoise frames using 3D FFT (frequency domain filtering).
11165
11166 The filter accepts the following options:
11167
11168 @table @option
11169 @item sigma
11170 Set the noise sigma constant. This sets denoising strength.
11171 Default value is 1. Allowed range is from 0 to 30.
11172 Using very high sigma with low overlap may give blocking artifacts.
11173
11174 @item amount
11175 Set amount of denoising. By default all detected noise is reduced.
11176 Default value is 1. Allowed range is from 0 to 1.
11177
11178 @item block
11179 Set size of block, Default is 4, can be 3, 4, 5 or 6.
11180 Actual size of block in pixels is 2 to power of @var{block}, so by default
11181 block size in pixels is 2^4 which is 16.
11182
11183 @item overlap
11184 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
11185
11186 @item prev
11187 Set number of previous frames to use for denoising. By default is set to 0.
11188
11189 @item next
11190 Set number of next frames to to use for denoising. By default is set to 0.
11191
11192 @item planes
11193 Set planes which will be filtered, by default are all available filtered
11194 except alpha.
11195 @end table
11196
11197 @section fftfilt
11198 Apply arbitrary expressions to samples in frequency domain
11199
11200 @table @option
11201 @item dc_Y
11202 Adjust the dc value (gain) of the luma plane of the image. The filter
11203 accepts an integer value in range @code{0} to @code{1000}. The default
11204 value is set to @code{0}.
11205
11206 @item dc_U
11207 Adjust the dc value (gain) of the 1st chroma plane of the image. The
11208 filter accepts an integer value in range @code{0} to @code{1000}. The
11209 default value is set to @code{0}.
11210
11211 @item dc_V
11212 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
11213 filter accepts an integer value in range @code{0} to @code{1000}. The
11214 default value is set to @code{0}.
11215
11216 @item weight_Y
11217 Set the frequency domain weight expression for the luma plane.
11218
11219 @item weight_U
11220 Set the frequency domain weight expression for the 1st chroma plane.
11221
11222 @item weight_V
11223 Set the frequency domain weight expression for the 2nd chroma plane.
11224
11225 @item eval
11226 Set when the expressions are evaluated.
11227
11228 It accepts the following values:
11229 @table @samp
11230 @item init
11231 Only evaluate expressions once during the filter initialization.
11232
11233 @item frame
11234 Evaluate expressions for each incoming frame.
11235 @end table
11236
11237 Default value is @samp{init}.
11238
11239 The filter accepts the following variables:
11240 @item X
11241 @item Y
11242 The coordinates of the current sample.
11243
11244 @item W
11245 @item H
11246 The width and height of the image.
11247
11248 @item N
11249 The number of input frame, starting from 0.
11250 @end table
11251
11252 @subsection Examples
11253
11254 @itemize
11255 @item
11256 High-pass:
11257 @example
11258 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
11259 @end example
11260
11261 @item
11262 Low-pass:
11263 @example
11264 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
11265 @end example
11266
11267 @item
11268 Sharpen:
11269 @example
11270 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
11271 @end example
11272
11273 @item
11274 Blur:
11275 @example
11276 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
11277 @end example
11278
11279 @end itemize
11280
11281 @section field
11282
11283 Extract a single field from an interlaced image using stride
11284 arithmetic to avoid wasting CPU time. The output frames are marked as
11285 non-interlaced.
11286
11287 The filter accepts the following options:
11288
11289 @table @option
11290 @item type
11291 Specify whether to extract the top (if the value is @code{0} or
11292 @code{top}) or the bottom field (if the value is @code{1} or
11293 @code{bottom}).
11294 @end table
11295
11296 @section fieldhint
11297
11298 Create new frames by copying the top and bottom fields from surrounding frames
11299 supplied as numbers by the hint file.
11300
11301 @table @option
11302 @item hint
11303 Set file containing hints: absolute/relative frame numbers.
11304
11305 There must be one line for each frame in a clip. Each line must contain two
11306 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
11307 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
11308 is current frame number for @code{absolute} mode or out of [-1, 1] range
11309 for @code{relative} mode. First number tells from which frame to pick up top
11310 field and second number tells from which frame to pick up bottom field.
11311
11312 If optionally followed by @code{+} output frame will be marked as interlaced,
11313 else if followed by @code{-} output frame will be marked as progressive, else
11314 it will be marked same as input frame.
11315 If optionally followed by @code{t} output frame will use only top field, or in
11316 case of @code{b} it will use only bottom field.
11317 If line starts with @code{#} or @code{;} that line is skipped.
11318
11319 @item mode
11320 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
11321 @end table
11322
11323 Example of first several lines of @code{hint} file for @code{relative} mode:
11324 @example
11325 0,0 - # first frame
11326 1,0 - # second frame, use third's frame top field and second's frame bottom field
11327 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
11328 1,0 -
11329 0,0 -
11330 0,0 -
11331 1,0 -
11332 1,0 -
11333 1,0 -
11334 0,0 -
11335 0,0 -
11336 1,0 -
11337 1,0 -
11338 1,0 -
11339 0,0 -
11340 @end example
11341
11342 @section fieldmatch
11343
11344 Field matching filter for inverse telecine. It is meant to reconstruct the
11345 progressive frames from a telecined stream. The filter does not drop duplicated
11346 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
11347 followed by a decimation filter such as @ref{decimate} in the filtergraph.
11348
11349 The separation of the field matching and the decimation is notably motivated by
11350 the possibility of inserting a de-interlacing filter fallback between the two.
11351 If the source has mixed telecined and real interlaced content,
11352 @code{fieldmatch} will not be able to match fields for the interlaced parts.
11353 But these remaining combed frames will be marked as interlaced, and thus can be
11354 de-interlaced by a later filter such as @ref{yadif} before decimation.
11355
11356 In addition to the various configuration options, @code{fieldmatch} can take an
11357 optional second stream, activated through the @option{ppsrc} option. If
11358 enabled, the frames reconstruction will be based on the fields and frames from
11359 this second stream. This allows the first input to be pre-processed in order to
11360 help the various algorithms of the filter, while keeping the output lossless
11361 (assuming the fields are matched properly). Typically, a field-aware denoiser,
11362 or brightness/contrast adjustments can help.
11363
11364 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
11365 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
11366 which @code{fieldmatch} is based on. While the semantic and usage are very
11367 close, some behaviour and options names can differ.
11368
11369 The @ref{decimate} filter currently only works for constant frame rate input.
11370 If your input has mixed telecined (30fps) and progressive content with a lower
11371 framerate like 24fps use the following filterchain to produce the necessary cfr
11372 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
11373
11374 The filter accepts the following options:
11375
11376 @table @option
11377 @item order
11378 Specify the assumed field order of the input stream. Available values are:
11379
11380 @table @samp
11381 @item auto
11382 Auto detect parity (use FFmpeg's internal parity value).
11383 @item bff
11384 Assume bottom field first.
11385 @item tff
11386 Assume top field first.
11387 @end table
11388
11389 Note that it is sometimes recommended not to trust the parity announced by the
11390 stream.
11391
11392 Default value is @var{auto}.
11393
11394 @item mode
11395 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
11396 sense that it won't risk creating jerkiness due to duplicate frames when
11397 possible, but if there are bad edits or blended fields it will end up
11398 outputting combed frames when a good match might actually exist. On the other
11399 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
11400 but will almost always find a good frame if there is one. The other values are
11401 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
11402 jerkiness and creating duplicate frames versus finding good matches in sections
11403 with bad edits, orphaned fields, blended fields, etc.
11404
11405 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
11406
11407 Available values are:
11408
11409 @table @samp
11410 @item pc
11411 2-way matching (p/c)
11412 @item pc_n
11413 2-way matching, and trying 3rd match if still combed (p/c + n)
11414 @item pc_u
11415 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
11416 @item pc_n_ub
11417 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
11418 still combed (p/c + n + u/b)
11419 @item pcn
11420 3-way matching (p/c/n)
11421 @item pcn_ub
11422 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
11423 detected as combed (p/c/n + u/b)
11424 @end table
11425
11426 The parenthesis at the end indicate the matches that would be used for that
11427 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
11428 @var{top}).
11429
11430 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
11431 the slowest.
11432
11433 Default value is @var{pc_n}.
11434
11435 @item ppsrc
11436 Mark the main input stream as a pre-processed input, and enable the secondary
11437 input stream as the clean source to pick the fields from. See the filter
11438 introduction for more details. It is similar to the @option{clip2} feature from
11439 VFM/TFM.
11440
11441 Default value is @code{0} (disabled).
11442
11443 @item field
11444 Set the field to match from. It is recommended to set this to the same value as
11445 @option{order} unless you experience matching failures with that setting. In
11446 certain circumstances changing the field that is used to match from can have a
11447 large impact on matching performance. Available values are:
11448
11449 @table @samp
11450 @item auto
11451 Automatic (same value as @option{order}).
11452 @item bottom
11453 Match from the bottom field.
11454 @item top
11455 Match from the top field.
11456 @end table
11457
11458 Default value is @var{auto}.
11459
11460 @item mchroma
11461 Set whether or not chroma is included during the match comparisons. In most
11462 cases it is recommended to leave this enabled. You should set this to @code{0}
11463 only if your clip has bad chroma problems such as heavy rainbowing or other
11464 artifacts. Setting this to @code{0} could also be used to speed things up at
11465 the cost of some accuracy.
11466
11467 Default value is @code{1}.
11468
11469 @item y0
11470 @item y1
11471 These define an exclusion band which excludes the lines between @option{y0} and
11472 @option{y1} from being included in the field matching decision. An exclusion
11473 band can be used to ignore subtitles, a logo, or other things that may
11474 interfere with the matching. @option{y0} sets the starting scan line and
11475 @option{y1} sets the ending line; all lines in between @option{y0} and
11476 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
11477 @option{y0} and @option{y1} to the same value will disable the feature.
11478 @option{y0} and @option{y1} defaults to @code{0}.
11479
11480 @item scthresh
11481 Set the scene change detection threshold as a percentage of maximum change on
11482 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
11483 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
11484 @option{scthresh} is @code{[0.0, 100.0]}.
11485
11486 Default value is @code{12.0}.
11487
11488 @item combmatch
11489 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
11490 account the combed scores of matches when deciding what match to use as the
11491 final match. Available values are:
11492
11493 @table @samp
11494 @item none
11495 No final matching based on combed scores.
11496 @item sc
11497 Combed scores are only used when a scene change is detected.
11498 @item full
11499 Use combed scores all the time.
11500 @end table
11501
11502 Default is @var{sc}.
11503
11504 @item combdbg
11505 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
11506 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
11507 Available values are:
11508
11509 @table @samp
11510 @item none
11511 No forced calculation.
11512 @item pcn
11513 Force p/c/n calculations.
11514 @item pcnub
11515 Force p/c/n/u/b calculations.
11516 @end table
11517
11518 Default value is @var{none}.
11519
11520 @item cthresh
11521 This is the area combing threshold used for combed frame detection. This
11522 essentially controls how "strong" or "visible" combing must be to be detected.
11523 Larger values mean combing must be more visible and smaller values mean combing
11524 can be less visible or strong and still be detected. Valid settings are from
11525 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
11526 be detected as combed). This is basically a pixel difference value. A good
11527 range is @code{[8, 12]}.
11528
11529 Default value is @code{9}.
11530
11531 @item chroma
11532 Sets whether or not chroma is considered in the combed frame decision.  Only
11533 disable this if your source has chroma problems (rainbowing, etc.) that are
11534 causing problems for the combed frame detection with chroma enabled. Actually,
11535 using @option{chroma}=@var{0} is usually more reliable, except for the case
11536 where there is chroma only combing in the source.
11537
11538 Default value is @code{0}.
11539
11540 @item blockx
11541 @item blocky
11542 Respectively set the x-axis and y-axis size of the window used during combed
11543 frame detection. This has to do with the size of the area in which
11544 @option{combpel} pixels are required to be detected as combed for a frame to be
11545 declared combed. See the @option{combpel} parameter description for more info.
11546 Possible values are any number that is a power of 2 starting at 4 and going up
11547 to 512.
11548
11549 Default value is @code{16}.
11550
11551 @item combpel
11552 The number of combed pixels inside any of the @option{blocky} by
11553 @option{blockx} size blocks on the frame for the frame to be detected as
11554 combed. While @option{cthresh} controls how "visible" the combing must be, this
11555 setting controls "how much" combing there must be in any localized area (a
11556 window defined by the @option{blockx} and @option{blocky} settings) on the
11557 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
11558 which point no frames will ever be detected as combed). This setting is known
11559 as @option{MI} in TFM/VFM vocabulary.
11560
11561 Default value is @code{80}.
11562 @end table
11563
11564 @anchor{p/c/n/u/b meaning}
11565 @subsection p/c/n/u/b meaning
11566
11567 @subsubsection p/c/n
11568
11569 We assume the following telecined stream:
11570
11571 @example
11572 Top fields:     1 2 2 3 4
11573 Bottom fields:  1 2 3 4 4
11574 @end example
11575
11576 The numbers correspond to the progressive frame the fields relate to. Here, the
11577 first two frames are progressive, the 3rd and 4th are combed, and so on.
11578
11579 When @code{fieldmatch} is configured to run a matching from bottom
11580 (@option{field}=@var{bottom}) this is how this input stream get transformed:
11581
11582 @example
11583 Input stream:
11584                 T     1 2 2 3 4
11585                 B     1 2 3 4 4   <-- matching reference
11586
11587 Matches:              c c n n c
11588
11589 Output stream:
11590                 T     1 2 3 4 4
11591                 B     1 2 3 4 4
11592 @end example
11593
11594 As a result of the field matching, we can see that some frames get duplicated.
11595 To perform a complete inverse telecine, you need to rely on a decimation filter
11596 after this operation. See for instance the @ref{decimate} filter.
11597
11598 The same operation now matching from top fields (@option{field}=@var{top})
11599 looks like this:
11600
11601 @example
11602 Input stream:
11603                 T     1 2 2 3 4   <-- matching reference
11604                 B     1 2 3 4 4
11605
11606 Matches:              c c p p c
11607
11608 Output stream:
11609                 T     1 2 2 3 4
11610                 B     1 2 2 3 4
11611 @end example
11612
11613 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
11614 basically, they refer to the frame and field of the opposite parity:
11615
11616 @itemize
11617 @item @var{p} matches the field of the opposite parity in the previous frame
11618 @item @var{c} matches the field of the opposite parity in the current frame
11619 @item @var{n} matches the field of the opposite parity in the next frame
11620 @end itemize
11621
11622 @subsubsection u/b
11623
11624 The @var{u} and @var{b} matching are a bit special in the sense that they match
11625 from the opposite parity flag. In the following examples, we assume that we are
11626 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
11627 'x' is placed above and below each matched fields.
11628
11629 With bottom matching (@option{field}=@var{bottom}):
11630 @example
11631 Match:           c         p           n          b          u
11632
11633                  x       x               x        x          x
11634   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11635   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11636                  x         x           x        x              x
11637
11638 Output frames:
11639                  2          1          2          2          2
11640                  2          2          2          1          3
11641 @end example
11642
11643 With top matching (@option{field}=@var{top}):
11644 @example
11645 Match:           c         p           n          b          u
11646
11647                  x         x           x        x              x
11648   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11649   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11650                  x       x               x        x          x
11651
11652 Output frames:
11653                  2          2          2          1          2
11654                  2          1          3          2          2
11655 @end example
11656
11657 @subsection Examples
11658
11659 Simple IVTC of a top field first telecined stream:
11660 @example
11661 fieldmatch=order=tff:combmatch=none, decimate
11662 @end example
11663
11664 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
11665 @example
11666 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11667 @end example
11668
11669 @section fieldorder
11670
11671 Transform the field order of the input video.
11672
11673 It accepts the following parameters:
11674
11675 @table @option
11676
11677 @item order
11678 The output field order. Valid values are @var{tff} for top field first or @var{bff}
11679 for bottom field first.
11680 @end table
11681
11682 The default value is @samp{tff}.
11683
11684 The transformation is done by shifting the picture content up or down
11685 by one line, and filling the remaining line with appropriate picture content.
11686 This method is consistent with most broadcast field order converters.
11687
11688 If the input video is not flagged as being interlaced, or it is already
11689 flagged as being of the required output field order, then this filter does
11690 not alter the incoming video.
11691
11692 It is very useful when converting to or from PAL DV material,
11693 which is bottom field first.
11694
11695 For example:
11696 @example
11697 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11698 @end example
11699
11700 @section fifo, afifo
11701
11702 Buffer input images and send them when they are requested.
11703
11704 It is mainly useful when auto-inserted by the libavfilter
11705 framework.
11706
11707 It does not take parameters.
11708
11709 @section fillborders
11710
11711 Fill borders of the input video, without changing video stream dimensions.
11712 Sometimes video can have garbage at the four edges and you may not want to
11713 crop video input to keep size multiple of some number.
11714
11715 This filter accepts the following options:
11716
11717 @table @option
11718 @item left
11719 Number of pixels to fill from left border.
11720
11721 @item right
11722 Number of pixels to fill from right border.
11723
11724 @item top
11725 Number of pixels to fill from top border.
11726
11727 @item bottom
11728 Number of pixels to fill from bottom border.
11729
11730 @item mode
11731 Set fill mode.
11732
11733 It accepts the following values:
11734 @table @samp
11735 @item smear
11736 fill pixels using outermost pixels
11737
11738 @item mirror
11739 fill pixels using mirroring
11740
11741 @item fixed
11742 fill pixels with constant value
11743 @end table
11744
11745 Default is @var{smear}.
11746
11747 @item color
11748 Set color for pixels in fixed mode. Default is @var{black}.
11749 @end table
11750
11751 @subsection Commands
11752 This filter supports same @ref{commands} as options.
11753 The command accepts the same syntax of the corresponding option.
11754
11755 If the specified expression is not valid, it is kept at its current
11756 value.
11757
11758 @section find_rect
11759
11760 Find a rectangular object
11761
11762 It accepts the following options:
11763
11764 @table @option
11765 @item object
11766 Filepath of the object image, needs to be in gray8.
11767
11768 @item threshold
11769 Detection threshold, default is 0.5.
11770
11771 @item mipmaps
11772 Number of mipmaps, default is 3.
11773
11774 @item xmin, ymin, xmax, ymax
11775 Specifies the rectangle in which to search.
11776 @end table
11777
11778 @subsection Examples
11779
11780 @itemize
11781 @item
11782 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
11783 @example
11784 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
11785 @end example
11786 @end itemize
11787
11788 @section floodfill
11789
11790 Flood area with values of same pixel components with another values.
11791
11792 It accepts the following options:
11793 @table @option
11794 @item x
11795 Set pixel x coordinate.
11796
11797 @item y
11798 Set pixel y coordinate.
11799
11800 @item s0
11801 Set source #0 component value.
11802
11803 @item s1
11804 Set source #1 component value.
11805
11806 @item s2
11807 Set source #2 component value.
11808
11809 @item s3
11810 Set source #3 component value.
11811
11812 @item d0
11813 Set destination #0 component value.
11814
11815 @item d1
11816 Set destination #1 component value.
11817
11818 @item d2
11819 Set destination #2 component value.
11820
11821 @item d3
11822 Set destination #3 component value.
11823 @end table
11824
11825 @anchor{format}
11826 @section format
11827
11828 Convert the input video to one of the specified pixel formats.
11829 Libavfilter will try to pick one that is suitable as input to
11830 the next filter.
11831
11832 It accepts the following parameters:
11833 @table @option
11834
11835 @item pix_fmts
11836 A '|'-separated list of pixel format names, such as
11837 "pix_fmts=yuv420p|monow|rgb24".
11838
11839 @end table
11840
11841 @subsection Examples
11842
11843 @itemize
11844 @item
11845 Convert the input video to the @var{yuv420p} format
11846 @example
11847 format=pix_fmts=yuv420p
11848 @end example
11849
11850 Convert the input video to any of the formats in the list
11851 @example
11852 format=pix_fmts=yuv420p|yuv444p|yuv410p
11853 @end example
11854 @end itemize
11855
11856 @anchor{fps}
11857 @section fps
11858
11859 Convert the video to specified constant frame rate by duplicating or dropping
11860 frames as necessary.
11861
11862 It accepts the following parameters:
11863 @table @option
11864
11865 @item fps
11866 The desired output frame rate. The default is @code{25}.
11867
11868 @item start_time
11869 Assume the first PTS should be the given value, in seconds. This allows for
11870 padding/trimming at the start of stream. By default, no assumption is made
11871 about the first frame's expected PTS, so no padding or trimming is done.
11872 For example, this could be set to 0 to pad the beginning with duplicates of
11873 the first frame if a video stream starts after the audio stream or to trim any
11874 frames with a negative PTS.
11875
11876 @item round
11877 Timestamp (PTS) rounding method.
11878
11879 Possible values are:
11880 @table @option
11881 @item zero
11882 round towards 0
11883 @item inf
11884 round away from 0
11885 @item down
11886 round towards -infinity
11887 @item up
11888 round towards +infinity
11889 @item near
11890 round to nearest
11891 @end table
11892 The default is @code{near}.
11893
11894 @item eof_action
11895 Action performed when reading the last frame.
11896
11897 Possible values are:
11898 @table @option
11899 @item round
11900 Use same timestamp rounding method as used for other frames.
11901 @item pass
11902 Pass through last frame if input duration has not been reached yet.
11903 @end table
11904 The default is @code{round}.
11905
11906 @end table
11907
11908 Alternatively, the options can be specified as a flat string:
11909 @var{fps}[:@var{start_time}[:@var{round}]].
11910
11911 See also the @ref{setpts} filter.
11912
11913 @subsection Examples
11914
11915 @itemize
11916 @item
11917 A typical usage in order to set the fps to 25:
11918 @example
11919 fps=fps=25
11920 @end example
11921
11922 @item
11923 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
11924 @example
11925 fps=fps=film:round=near
11926 @end example
11927 @end itemize
11928
11929 @section framepack
11930
11931 Pack two different video streams into a stereoscopic video, setting proper
11932 metadata on supported codecs. The two views should have the same size and
11933 framerate and processing will stop when the shorter video ends. Please note
11934 that you may conveniently adjust view properties with the @ref{scale} and
11935 @ref{fps} filters.
11936
11937 It accepts the following parameters:
11938 @table @option
11939
11940 @item format
11941 The desired packing format. Supported values are:
11942
11943 @table @option
11944
11945 @item sbs
11946 The views are next to each other (default).
11947
11948 @item tab
11949 The views are on top of each other.
11950
11951 @item lines
11952 The views are packed by line.
11953
11954 @item columns
11955 The views are packed by column.
11956
11957 @item frameseq
11958 The views are temporally interleaved.
11959
11960 @end table
11961
11962 @end table
11963
11964 Some examples:
11965
11966 @example
11967 # Convert left and right views into a frame-sequential video
11968 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
11969
11970 # Convert views into a side-by-side video with the same output resolution as the input
11971 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
11972 @end example
11973
11974 @section framerate
11975
11976 Change the frame rate by interpolating new video output frames from the source
11977 frames.
11978
11979 This filter is not designed to function correctly with interlaced media. If
11980 you wish to change the frame rate of interlaced media then you are required
11981 to deinterlace before this filter and re-interlace after this filter.
11982
11983 A description of the accepted options follows.
11984
11985 @table @option
11986 @item fps
11987 Specify the output frames per second. This option can also be specified
11988 as a value alone. The default is @code{50}.
11989
11990 @item interp_start
11991 Specify the start of a range where the output frame will be created as a
11992 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11993 the default is @code{15}.
11994
11995 @item interp_end
11996 Specify the end of a range where the output frame will be created as a
11997 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11998 the default is @code{240}.
11999
12000 @item scene
12001 Specify the level at which a scene change is detected as a value between
12002 0 and 100 to indicate a new scene; a low value reflects a low
12003 probability for the current frame to introduce a new scene, while a higher
12004 value means the current frame is more likely to be one.
12005 The default is @code{8.2}.
12006
12007 @item flags
12008 Specify flags influencing the filter process.
12009
12010 Available value for @var{flags} is:
12011
12012 @table @option
12013 @item scene_change_detect, scd
12014 Enable scene change detection using the value of the option @var{scene}.
12015 This flag is enabled by default.
12016 @end table
12017 @end table
12018
12019 @section framestep
12020
12021 Select one frame every N-th frame.
12022
12023 This filter accepts the following option:
12024 @table @option
12025 @item step
12026 Select frame after every @code{step} frames.
12027 Allowed values are positive integers higher than 0. Default value is @code{1}.
12028 @end table
12029
12030 @section freezedetect
12031
12032 Detect frozen video.
12033
12034 This filter logs a message and sets frame metadata when it detects that the
12035 input video has no significant change in content during a specified duration.
12036 Video freeze detection calculates the mean average absolute difference of all
12037 the components of video frames and compares it to a noise floor.
12038
12039 The printed times and duration are expressed in seconds. The
12040 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
12041 whose timestamp equals or exceeds the detection duration and it contains the
12042 timestamp of the first frame of the freeze. The
12043 @code{lavfi.freezedetect.freeze_duration} and
12044 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
12045 after the freeze.
12046
12047 The filter accepts the following options:
12048
12049 @table @option
12050 @item noise, n
12051 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
12052 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
12053 0.001.
12054
12055 @item duration, d
12056 Set freeze duration until notification (default is 2 seconds).
12057 @end table
12058
12059 @section freezeframes
12060
12061 Freeze video frames.
12062
12063 This filter freezes video frames using frame from 2nd input.
12064
12065 The filter accepts the following options:
12066
12067 @table @option
12068 @item first
12069 Set number of first frame from which to start freeze.
12070
12071 @item last
12072 Set number of last frame from which to end freeze.
12073
12074 @item replace
12075 Set number of frame from 2nd input which will be used instead of replaced frames.
12076 @end table
12077
12078 @anchor{frei0r}
12079 @section frei0r
12080
12081 Apply a frei0r effect to the input video.
12082
12083 To enable the compilation of this filter, you need to install the frei0r
12084 header and configure FFmpeg with @code{--enable-frei0r}.
12085
12086 It accepts the following parameters:
12087
12088 @table @option
12089
12090 @item filter_name
12091 The name of the frei0r effect to load. If the environment variable
12092 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
12093 directories specified by the colon-separated list in @env{FREI0R_PATH}.
12094 Otherwise, the standard frei0r paths are searched, in this order:
12095 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
12096 @file{/usr/lib/frei0r-1/}.
12097
12098 @item filter_params
12099 A '|'-separated list of parameters to pass to the frei0r effect.
12100
12101 @end table
12102
12103 A frei0r effect parameter can be a boolean (its value is either
12104 "y" or "n"), a double, a color (specified as
12105 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
12106 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
12107 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
12108 a position (specified as @var{X}/@var{Y}, where
12109 @var{X} and @var{Y} are floating point numbers) and/or a string.
12110
12111 The number and types of parameters depend on the loaded effect. If an
12112 effect parameter is not specified, the default value is set.
12113
12114 @subsection Examples
12115
12116 @itemize
12117 @item
12118 Apply the distort0r effect, setting the first two double parameters:
12119 @example
12120 frei0r=filter_name=distort0r:filter_params=0.5|0.01
12121 @end example
12122
12123 @item
12124 Apply the colordistance effect, taking a color as the first parameter:
12125 @example
12126 frei0r=colordistance:0.2/0.3/0.4
12127 frei0r=colordistance:violet
12128 frei0r=colordistance:0x112233
12129 @end example
12130
12131 @item
12132 Apply the perspective effect, specifying the top left and top right image
12133 positions:
12134 @example
12135 frei0r=perspective:0.2/0.2|0.8/0.2
12136 @end example
12137 @end itemize
12138
12139 For more information, see
12140 @url{http://frei0r.dyne.org}
12141
12142 @subsection Commands
12143
12144 This filter supports the @option{filter_params} option as @ref{commands}.
12145
12146 @section fspp
12147
12148 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
12149
12150 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
12151 processing filter, one of them is performed once per block, not per pixel.
12152 This allows for much higher speed.
12153
12154 The filter accepts the following options:
12155
12156 @table @option
12157 @item quality
12158 Set quality. This option defines the number of levels for averaging. It accepts
12159 an integer in the range 4-5. Default value is @code{4}.
12160
12161 @item qp
12162 Force a constant quantization parameter. It accepts an integer in range 0-63.
12163 If not set, the filter will use the QP from the video stream (if available).
12164
12165 @item strength
12166 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
12167 more details but also more artifacts, while higher values make the image smoother
12168 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
12169
12170 @item use_bframe_qp
12171 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
12172 option may cause flicker since the B-Frames have often larger QP. Default is
12173 @code{0} (not enabled).
12174
12175 @end table
12176
12177 @section gblur
12178
12179 Apply Gaussian blur filter.
12180
12181 The filter accepts the following options:
12182
12183 @table @option
12184 @item sigma
12185 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
12186
12187 @item steps
12188 Set number of steps for Gaussian approximation. Default is @code{1}.
12189
12190 @item planes
12191 Set which planes to filter. By default all planes are filtered.
12192
12193 @item sigmaV
12194 Set vertical sigma, if negative it will be same as @code{sigma}.
12195 Default is @code{-1}.
12196 @end table
12197
12198 @subsection Commands
12199 This filter supports same commands as options.
12200 The command accepts the same syntax of the corresponding option.
12201
12202 If the specified expression is not valid, it is kept at its current
12203 value.
12204
12205 @section geq
12206
12207 Apply generic equation to each pixel.
12208
12209 The filter accepts the following options:
12210
12211 @table @option
12212 @item lum_expr, lum
12213 Set the luminance expression.
12214 @item cb_expr, cb
12215 Set the chrominance blue expression.
12216 @item cr_expr, cr
12217 Set the chrominance red expression.
12218 @item alpha_expr, a
12219 Set the alpha expression.
12220 @item red_expr, r
12221 Set the red expression.
12222 @item green_expr, g
12223 Set the green expression.
12224 @item blue_expr, b
12225 Set the blue expression.
12226 @end table
12227
12228 The colorspace is selected according to the specified options. If one
12229 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
12230 options is specified, the filter will automatically select a YCbCr
12231 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
12232 @option{blue_expr} options is specified, it will select an RGB
12233 colorspace.
12234
12235 If one of the chrominance expression is not defined, it falls back on the other
12236 one. If no alpha expression is specified it will evaluate to opaque value.
12237 If none of chrominance expressions are specified, they will evaluate
12238 to the luminance expression.
12239
12240 The expressions can use the following variables and functions:
12241
12242 @table @option
12243 @item N
12244 The sequential number of the filtered frame, starting from @code{0}.
12245
12246 @item X
12247 @item Y
12248 The coordinates of the current sample.
12249
12250 @item W
12251 @item H
12252 The width and height of the image.
12253
12254 @item SW
12255 @item SH
12256 Width and height scale depending on the currently filtered plane. It is the
12257 ratio between the corresponding luma plane number of pixels and the current
12258 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
12259 @code{0.5,0.5} for chroma planes.
12260
12261 @item T
12262 Time of the current frame, expressed in seconds.
12263
12264 @item p(x, y)
12265 Return the value of the pixel at location (@var{x},@var{y}) of the current
12266 plane.
12267
12268 @item lum(x, y)
12269 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
12270 plane.
12271
12272 @item cb(x, y)
12273 Return the value of the pixel at location (@var{x},@var{y}) of the
12274 blue-difference chroma plane. Return 0 if there is no such plane.
12275
12276 @item cr(x, y)
12277 Return the value of the pixel at location (@var{x},@var{y}) of the
12278 red-difference chroma plane. Return 0 if there is no such plane.
12279
12280 @item r(x, y)
12281 @item g(x, y)
12282 @item b(x, y)
12283 Return the value of the pixel at location (@var{x},@var{y}) of the
12284 red/green/blue component. Return 0 if there is no such component.
12285
12286 @item alpha(x, y)
12287 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
12288 plane. Return 0 if there is no such plane.
12289
12290 @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)
12291 Sum of sample values in the rectangle from (0,0) to (x,y), this allows obtaining
12292 sums of samples within a rectangle. See the functions without the sum postfix.
12293
12294 @item interpolation
12295 Set one of interpolation methods:
12296 @table @option
12297 @item nearest, n
12298 @item bilinear, b
12299 @end table
12300 Default is bilinear.
12301 @end table
12302
12303 For functions, if @var{x} and @var{y} are outside the area, the value will be
12304 automatically clipped to the closer edge.
12305
12306 Please note that this filter can use multiple threads in which case each slice
12307 will have its own expression state. If you want to use only a single expression
12308 state because your expressions depend on previous state then you should limit
12309 the number of filter threads to 1.
12310
12311 @subsection Examples
12312
12313 @itemize
12314 @item
12315 Flip the image horizontally:
12316 @example
12317 geq=p(W-X\,Y)
12318 @end example
12319
12320 @item
12321 Generate a bidimensional sine wave, with angle @code{PI/3} and a
12322 wavelength of 100 pixels:
12323 @example
12324 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
12325 @end example
12326
12327 @item
12328 Generate a fancy enigmatic moving light:
12329 @example
12330 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
12331 @end example
12332
12333 @item
12334 Generate a quick emboss effect:
12335 @example
12336 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
12337 @end example
12338
12339 @item
12340 Modify RGB components depending on pixel position:
12341 @example
12342 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
12343 @end example
12344
12345 @item
12346 Create a radial gradient that is the same size as the input (also see
12347 the @ref{vignette} filter):
12348 @example
12349 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
12350 @end example
12351 @end itemize
12352
12353 @section gradfun
12354
12355 Fix the banding artifacts that are sometimes introduced into nearly flat
12356 regions by truncation to 8-bit color depth.
12357 Interpolate the gradients that should go where the bands are, and
12358 dither them.
12359
12360 It is designed for playback only.  Do not use it prior to
12361 lossy compression, because compression tends to lose the dither and
12362 bring back the bands.
12363
12364 It accepts the following parameters:
12365
12366 @table @option
12367
12368 @item strength
12369 The maximum amount by which the filter will change any one pixel. This is also
12370 the threshold for detecting nearly flat regions. Acceptable values range from
12371 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
12372 valid range.
12373
12374 @item radius
12375 The neighborhood to fit the gradient to. A larger radius makes for smoother
12376 gradients, but also prevents the filter from modifying the pixels near detailed
12377 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
12378 values will be clipped to the valid range.
12379
12380 @end table
12381
12382 Alternatively, the options can be specified as a flat string:
12383 @var{strength}[:@var{radius}]
12384
12385 @subsection Examples
12386
12387 @itemize
12388 @item
12389 Apply the filter with a @code{3.5} strength and radius of @code{8}:
12390 @example
12391 gradfun=3.5:8
12392 @end example
12393
12394 @item
12395 Specify radius, omitting the strength (which will fall-back to the default
12396 value):
12397 @example
12398 gradfun=radius=8
12399 @end example
12400
12401 @end itemize
12402
12403 @anchor{graphmonitor}
12404 @section graphmonitor
12405 Show various filtergraph stats.
12406
12407 With this filter one can debug complete filtergraph.
12408 Especially issues with links filling with queued frames.
12409
12410 The filter accepts the following options:
12411
12412 @table @option
12413 @item size, s
12414 Set video output size. Default is @var{hd720}.
12415
12416 @item opacity, o
12417 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
12418
12419 @item mode, m
12420 Set output mode, can be @var{fulll} or @var{compact}.
12421 In @var{compact} mode only filters with some queued frames have displayed stats.
12422
12423 @item flags, f
12424 Set flags which enable which stats are shown in video.
12425
12426 Available values for flags are:
12427 @table @samp
12428 @item queue
12429 Display number of queued frames in each link.
12430
12431 @item frame_count_in
12432 Display number of frames taken from filter.
12433
12434 @item frame_count_out
12435 Display number of frames given out from filter.
12436
12437 @item pts
12438 Display current filtered frame pts.
12439
12440 @item time
12441 Display current filtered frame time.
12442
12443 @item timebase
12444 Display time base for filter link.
12445
12446 @item format
12447 Display used format for filter link.
12448
12449 @item size
12450 Display video size or number of audio channels in case of audio used by filter link.
12451
12452 @item rate
12453 Display video frame rate or sample rate in case of audio used by filter link.
12454
12455 @item eof
12456 Display link output status.
12457 @end table
12458
12459 @item rate, r
12460 Set upper limit for video rate of output stream, Default value is @var{25}.
12461 This guarantee that output video frame rate will not be higher than this value.
12462 @end table
12463
12464 @section greyedge
12465 A color constancy variation filter which estimates scene illumination via grey edge algorithm
12466 and corrects the scene colors accordingly.
12467
12468 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
12469
12470 The filter accepts the following options:
12471
12472 @table @option
12473 @item difford
12474 The order of differentiation to be applied on the scene. Must be chosen in the range
12475 [0,2] and default value is 1.
12476
12477 @item minknorm
12478 The Minkowski parameter to be used for calculating the Minkowski distance. Must
12479 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
12480 max value instead of calculating Minkowski distance.
12481
12482 @item sigma
12483 The standard deviation of Gaussian blur to be applied on the scene. Must be
12484 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
12485 can't be equal to 0 if @var{difford} is greater than 0.
12486 @end table
12487
12488 @subsection Examples
12489 @itemize
12490
12491 @item
12492 Grey Edge:
12493 @example
12494 greyedge=difford=1:minknorm=5:sigma=2
12495 @end example
12496
12497 @item
12498 Max Edge:
12499 @example
12500 greyedge=difford=1:minknorm=0:sigma=2
12501 @end example
12502
12503 @end itemize
12504
12505 @anchor{haldclut}
12506 @section haldclut
12507
12508 Apply a Hald CLUT to a video stream.
12509
12510 First input is the video stream to process, and second one is the Hald CLUT.
12511 The Hald CLUT input can be a simple picture or a complete video stream.
12512
12513 The filter accepts the following options:
12514
12515 @table @option
12516 @item shortest
12517 Force termination when the shortest input terminates. Default is @code{0}.
12518 @item repeatlast
12519 Continue applying the last CLUT after the end of the stream. A value of
12520 @code{0} disable the filter after the last frame of the CLUT is reached.
12521 Default is @code{1}.
12522 @end table
12523
12524 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
12525 filters share the same internals).
12526
12527 This filter also supports the @ref{framesync} options.
12528
12529 More information about the Hald CLUT can be found on Eskil Steenberg's website
12530 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
12531
12532 @subsection Workflow examples
12533
12534 @subsubsection Hald CLUT video stream
12535
12536 Generate an identity Hald CLUT stream altered with various effects:
12537 @example
12538 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
12539 @end example
12540
12541 Note: make sure you use a lossless codec.
12542
12543 Then use it with @code{haldclut} to apply it on some random stream:
12544 @example
12545 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
12546 @end example
12547
12548 The Hald CLUT will be applied to the 10 first seconds (duration of
12549 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
12550 to the remaining frames of the @code{mandelbrot} stream.
12551
12552 @subsubsection Hald CLUT with preview
12553
12554 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
12555 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
12556 biggest possible square starting at the top left of the picture. The remaining
12557 padding pixels (bottom or right) will be ignored. This area can be used to add
12558 a preview of the Hald CLUT.
12559
12560 Typically, the following generated Hald CLUT will be supported by the
12561 @code{haldclut} filter:
12562
12563 @example
12564 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
12565    pad=iw+320 [padded_clut];
12566    smptebars=s=320x256, split [a][b];
12567    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
12568    [main][b] overlay=W-320" -frames:v 1 clut.png
12569 @end example
12570
12571 It contains the original and a preview of the effect of the CLUT: SMPTE color
12572 bars are displayed on the right-top, and below the same color bars processed by
12573 the color changes.
12574
12575 Then, the effect of this Hald CLUT can be visualized with:
12576 @example
12577 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
12578 @end example
12579
12580 @section hflip
12581
12582 Flip the input video horizontally.
12583
12584 For example, to horizontally flip the input video with @command{ffmpeg}:
12585 @example
12586 ffmpeg -i in.avi -vf "hflip" out.avi
12587 @end example
12588
12589 @section histeq
12590 This filter applies a global color histogram equalization on a
12591 per-frame basis.
12592
12593 It can be used to correct video that has a compressed range of pixel
12594 intensities.  The filter redistributes the pixel intensities to
12595 equalize their distribution across the intensity range. It may be
12596 viewed as an "automatically adjusting contrast filter". This filter is
12597 useful only for correcting degraded or poorly captured source
12598 video.
12599
12600 The filter accepts the following options:
12601
12602 @table @option
12603 @item strength
12604 Determine the amount of equalization to be applied.  As the strength
12605 is reduced, the distribution of pixel intensities more-and-more
12606 approaches that of the input frame. The value must be a float number
12607 in the range [0,1] and defaults to 0.200.
12608
12609 @item intensity
12610 Set the maximum intensity that can generated and scale the output
12611 values appropriately.  The strength should be set as desired and then
12612 the intensity can be limited if needed to avoid washing-out. The value
12613 must be a float number in the range [0,1] and defaults to 0.210.
12614
12615 @item antibanding
12616 Set the antibanding level. If enabled the filter will randomly vary
12617 the luminance of output pixels by a small amount to avoid banding of
12618 the histogram. Possible values are @code{none}, @code{weak} or
12619 @code{strong}. It defaults to @code{none}.
12620 @end table
12621
12622 @anchor{histogram}
12623 @section histogram
12624
12625 Compute and draw a color distribution histogram for the input video.
12626
12627 The computed histogram is a representation of the color component
12628 distribution in an image.
12629
12630 Standard histogram displays the color components distribution in an image.
12631 Displays color graph for each color component. Shows distribution of
12632 the Y, U, V, A or R, G, B components, depending on input format, in the
12633 current frame. Below each graph a color component scale meter is shown.
12634
12635 The filter accepts the following options:
12636
12637 @table @option
12638 @item level_height
12639 Set height of level. Default value is @code{200}.
12640 Allowed range is [50, 2048].
12641
12642 @item scale_height
12643 Set height of color scale. Default value is @code{12}.
12644 Allowed range is [0, 40].
12645
12646 @item display_mode
12647 Set display mode.
12648 It accepts the following values:
12649 @table @samp
12650 @item stack
12651 Per color component graphs are placed below each other.
12652
12653 @item parade
12654 Per color component graphs are placed side by side.
12655
12656 @item overlay
12657 Presents information identical to that in the @code{parade}, except
12658 that the graphs representing color components are superimposed directly
12659 over one another.
12660 @end table
12661 Default is @code{stack}.
12662
12663 @item levels_mode
12664 Set mode. Can be either @code{linear}, or @code{logarithmic}.
12665 Default is @code{linear}.
12666
12667 @item components
12668 Set what color components to display.
12669 Default is @code{7}.
12670
12671 @item fgopacity
12672 Set foreground opacity. Default is @code{0.7}.
12673
12674 @item bgopacity
12675 Set background opacity. Default is @code{0.5}.
12676 @end table
12677
12678 @subsection Examples
12679
12680 @itemize
12681
12682 @item
12683 Calculate and draw histogram:
12684 @example
12685 ffplay -i input -vf histogram
12686 @end example
12687
12688 @end itemize
12689
12690 @anchor{hqdn3d}
12691 @section hqdn3d
12692
12693 This is a high precision/quality 3d denoise filter. It aims to reduce
12694 image noise, producing smooth images and making still images really
12695 still. It should enhance compressibility.
12696
12697 It accepts the following optional parameters:
12698
12699 @table @option
12700 @item luma_spatial
12701 A non-negative floating point number which specifies spatial luma strength.
12702 It defaults to 4.0.
12703
12704 @item chroma_spatial
12705 A non-negative floating point number which specifies spatial chroma strength.
12706 It defaults to 3.0*@var{luma_spatial}/4.0.
12707
12708 @item luma_tmp
12709 A floating point number which specifies luma temporal strength. It defaults to
12710 6.0*@var{luma_spatial}/4.0.
12711
12712 @item chroma_tmp
12713 A floating point number which specifies chroma temporal strength. It defaults to
12714 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
12715 @end table
12716
12717 @subsection Commands
12718 This filter supports same @ref{commands} as options.
12719 The command accepts the same syntax of the corresponding option.
12720
12721 If the specified expression is not valid, it is kept at its current
12722 value.
12723
12724 @anchor{hwdownload}
12725 @section hwdownload
12726
12727 Download hardware frames to system memory.
12728
12729 The input must be in hardware frames, and the output a non-hardware format.
12730 Not all formats will be supported on the output - it may be necessary to insert
12731 an additional @option{format} filter immediately following in the graph to get
12732 the output in a supported format.
12733
12734 @section hwmap
12735
12736 Map hardware frames to system memory or to another device.
12737
12738 This filter has several different modes of operation; which one is used depends
12739 on the input and output formats:
12740 @itemize
12741 @item
12742 Hardware frame input, normal frame output
12743
12744 Map the input frames to system memory and pass them to the output.  If the
12745 original hardware frame is later required (for example, after overlaying
12746 something else on part of it), the @option{hwmap} filter can be used again
12747 in the next mode to retrieve it.
12748 @item
12749 Normal frame input, hardware frame output
12750
12751 If the input is actually a software-mapped hardware frame, then unmap it -
12752 that is, return the original hardware frame.
12753
12754 Otherwise, a device must be provided.  Create new hardware surfaces on that
12755 device for the output, then map them back to the software format at the input
12756 and give those frames to the preceding filter.  This will then act like the
12757 @option{hwupload} filter, but may be able to avoid an additional copy when
12758 the input is already in a compatible format.
12759 @item
12760 Hardware frame input and output
12761
12762 A device must be supplied for the output, either directly or with the
12763 @option{derive_device} option.  The input and output devices must be of
12764 different types and compatible - the exact meaning of this is
12765 system-dependent, but typically it means that they must refer to the same
12766 underlying hardware context (for example, refer to the same graphics card).
12767
12768 If the input frames were originally created on the output device, then unmap
12769 to retrieve the original frames.
12770
12771 Otherwise, map the frames to the output device - create new hardware frames
12772 on the output corresponding to the frames on the input.
12773 @end itemize
12774
12775 The following additional parameters are accepted:
12776
12777 @table @option
12778 @item mode
12779 Set the frame mapping mode.  Some combination of:
12780 @table @var
12781 @item read
12782 The mapped frame should be readable.
12783 @item write
12784 The mapped frame should be writeable.
12785 @item overwrite
12786 The mapping will always overwrite the entire frame.
12787
12788 This may improve performance in some cases, as the original contents of the
12789 frame need not be loaded.
12790 @item direct
12791 The mapping must not involve any copying.
12792
12793 Indirect mappings to copies of frames are created in some cases where either
12794 direct mapping is not possible or it would have unexpected properties.
12795 Setting this flag ensures that the mapping is direct and will fail if that is
12796 not possible.
12797 @end table
12798 Defaults to @var{read+write} if not specified.
12799
12800 @item derive_device @var{type}
12801 Rather than using the device supplied at initialisation, instead derive a new
12802 device of type @var{type} from the device the input frames exist on.
12803
12804 @item reverse
12805 In a hardware to hardware mapping, map in reverse - create frames in the sink
12806 and map them back to the source.  This may be necessary in some cases where
12807 a mapping in one direction is required but only the opposite direction is
12808 supported by the devices being used.
12809
12810 This option is dangerous - it may break the preceding filter in undefined
12811 ways if there are any additional constraints on that filter's output.
12812 Do not use it without fully understanding the implications of its use.
12813 @end table
12814
12815 @anchor{hwupload}
12816 @section hwupload
12817
12818 Upload system memory frames to hardware surfaces.
12819
12820 The device to upload to must be supplied when the filter is initialised.  If
12821 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
12822 option or with the @option{derive_device} option.  The input and output devices
12823 must be of different types and compatible - the exact meaning of this is
12824 system-dependent, but typically it means that they must refer to the same
12825 underlying hardware context (for example, refer to the same graphics card).
12826
12827 The following additional parameters are accepted:
12828
12829 @table @option
12830 @item derive_device @var{type}
12831 Rather than using the device supplied at initialisation, instead derive a new
12832 device of type @var{type} from the device the input frames exist on.
12833 @end table
12834
12835 @anchor{hwupload_cuda}
12836 @section hwupload_cuda
12837
12838 Upload system memory frames to a CUDA device.
12839
12840 It accepts the following optional parameters:
12841
12842 @table @option
12843 @item device
12844 The number of the CUDA device to use
12845 @end table
12846
12847 @section hqx
12848
12849 Apply a high-quality magnification filter designed for pixel art. This filter
12850 was originally created by Maxim Stepin.
12851
12852 It accepts the following option:
12853
12854 @table @option
12855 @item n
12856 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
12857 @code{hq3x} and @code{4} for @code{hq4x}.
12858 Default is @code{3}.
12859 @end table
12860
12861 @section hstack
12862 Stack input videos horizontally.
12863
12864 All streams must be of same pixel format and of same height.
12865
12866 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
12867 to create same output.
12868
12869 The filter accepts the following option:
12870
12871 @table @option
12872 @item inputs
12873 Set number of input streams. Default is 2.
12874
12875 @item shortest
12876 If set to 1, force the output to terminate when the shortest input
12877 terminates. Default value is 0.
12878 @end table
12879
12880 @section hue
12881
12882 Modify the hue and/or the saturation of the input.
12883
12884 It accepts the following parameters:
12885
12886 @table @option
12887 @item h
12888 Specify the hue angle as a number of degrees. It accepts an expression,
12889 and defaults to "0".
12890
12891 @item s
12892 Specify the saturation in the [-10,10] range. It accepts an expression and
12893 defaults to "1".
12894
12895 @item H
12896 Specify the hue angle as a number of radians. It accepts an
12897 expression, and defaults to "0".
12898
12899 @item b
12900 Specify the brightness in the [-10,10] range. It accepts an expression and
12901 defaults to "0".
12902 @end table
12903
12904 @option{h} and @option{H} are mutually exclusive, and can't be
12905 specified at the same time.
12906
12907 The @option{b}, @option{h}, @option{H} and @option{s} option values are
12908 expressions containing the following constants:
12909
12910 @table @option
12911 @item n
12912 frame count of the input frame starting from 0
12913
12914 @item pts
12915 presentation timestamp of the input frame expressed in time base units
12916
12917 @item r
12918 frame rate of the input video, NAN if the input frame rate is unknown
12919
12920 @item t
12921 timestamp expressed in seconds, NAN if the input timestamp is unknown
12922
12923 @item tb
12924 time base of the input video
12925 @end table
12926
12927 @subsection Examples
12928
12929 @itemize
12930 @item
12931 Set the hue to 90 degrees and the saturation to 1.0:
12932 @example
12933 hue=h=90:s=1
12934 @end example
12935
12936 @item
12937 Same command but expressing the hue in radians:
12938 @example
12939 hue=H=PI/2:s=1
12940 @end example
12941
12942 @item
12943 Rotate hue and make the saturation swing between 0
12944 and 2 over a period of 1 second:
12945 @example
12946 hue="H=2*PI*t: s=sin(2*PI*t)+1"
12947 @end example
12948
12949 @item
12950 Apply a 3 seconds saturation fade-in effect starting at 0:
12951 @example
12952 hue="s=min(t/3\,1)"
12953 @end example
12954
12955 The general fade-in expression can be written as:
12956 @example
12957 hue="s=min(0\, max((t-START)/DURATION\, 1))"
12958 @end example
12959
12960 @item
12961 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
12962 @example
12963 hue="s=max(0\, min(1\, (8-t)/3))"
12964 @end example
12965
12966 The general fade-out expression can be written as:
12967 @example
12968 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
12969 @end example
12970
12971 @end itemize
12972
12973 @subsection Commands
12974
12975 This filter supports the following commands:
12976 @table @option
12977 @item b
12978 @item s
12979 @item h
12980 @item H
12981 Modify the hue and/or the saturation and/or brightness of the input video.
12982 The command accepts the same syntax of the corresponding option.
12983
12984 If the specified expression is not valid, it is kept at its current
12985 value.
12986 @end table
12987
12988 @section hysteresis
12989
12990 Grow first stream into second stream by connecting components.
12991 This makes it possible to build more robust edge masks.
12992
12993 This filter accepts the following options:
12994
12995 @table @option
12996 @item planes
12997 Set which planes will be processed as bitmap, unprocessed planes will be
12998 copied from first stream.
12999 By default value 0xf, all planes will be processed.
13000
13001 @item threshold
13002 Set threshold which is used in filtering. If pixel component value is higher than
13003 this value filter algorithm for connecting components is activated.
13004 By default value is 0.
13005 @end table
13006
13007 The @code{hysteresis} filter also supports the @ref{framesync} options.
13008
13009 @section idet
13010
13011 Detect video interlacing type.
13012
13013 This filter tries to detect if the input frames are interlaced, progressive,
13014 top or bottom field first. It will also try to detect fields that are
13015 repeated between adjacent frames (a sign of telecine).
13016
13017 Single frame detection considers only immediately adjacent frames when classifying each frame.
13018 Multiple frame detection incorporates the classification history of previous frames.
13019
13020 The filter will log these metadata values:
13021
13022 @table @option
13023 @item single.current_frame
13024 Detected type of current frame using single-frame detection. One of:
13025 ``tff'' (top field first), ``bff'' (bottom field first),
13026 ``progressive'', or ``undetermined''
13027
13028 @item single.tff
13029 Cumulative number of frames detected as top field first using single-frame detection.
13030
13031 @item multiple.tff
13032 Cumulative number of frames detected as top field first using multiple-frame detection.
13033
13034 @item single.bff
13035 Cumulative number of frames detected as bottom field first using single-frame detection.
13036
13037 @item multiple.current_frame
13038 Detected type of current frame using multiple-frame detection. One of:
13039 ``tff'' (top field first), ``bff'' (bottom field first),
13040 ``progressive'', or ``undetermined''
13041
13042 @item multiple.bff
13043 Cumulative number of frames detected as bottom field first using multiple-frame detection.
13044
13045 @item single.progressive
13046 Cumulative number of frames detected as progressive using single-frame detection.
13047
13048 @item multiple.progressive
13049 Cumulative number of frames detected as progressive using multiple-frame detection.
13050
13051 @item single.undetermined
13052 Cumulative number of frames that could not be classified using single-frame detection.
13053
13054 @item multiple.undetermined
13055 Cumulative number of frames that could not be classified using multiple-frame detection.
13056
13057 @item repeated.current_frame
13058 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
13059
13060 @item repeated.neither
13061 Cumulative number of frames with no repeated field.
13062
13063 @item repeated.top
13064 Cumulative number of frames with the top field repeated from the previous frame's top field.
13065
13066 @item repeated.bottom
13067 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
13068 @end table
13069
13070 The filter accepts the following options:
13071
13072 @table @option
13073 @item intl_thres
13074 Set interlacing threshold.
13075 @item prog_thres
13076 Set progressive threshold.
13077 @item rep_thres
13078 Threshold for repeated field detection.
13079 @item half_life
13080 Number of frames after which a given frame's contribution to the
13081 statistics is halved (i.e., it contributes only 0.5 to its
13082 classification). The default of 0 means that all frames seen are given
13083 full weight of 1.0 forever.
13084 @item analyze_interlaced_flag
13085 When this is not 0 then idet will use the specified number of frames to determine
13086 if the interlaced flag is accurate, it will not count undetermined frames.
13087 If the flag is found to be accurate it will be used without any further
13088 computations, if it is found to be inaccurate it will be cleared without any
13089 further computations. This allows inserting the idet filter as a low computational
13090 method to clean up the interlaced flag
13091 @end table
13092
13093 @section il
13094
13095 Deinterleave or interleave fields.
13096
13097 This filter allows one to process interlaced images fields without
13098 deinterlacing them. Deinterleaving splits the input frame into 2
13099 fields (so called half pictures). Odd lines are moved to the top
13100 half of the output image, even lines to the bottom half.
13101 You can process (filter) them independently and then re-interleave them.
13102
13103 The filter accepts the following options:
13104
13105 @table @option
13106 @item luma_mode, l
13107 @item chroma_mode, c
13108 @item alpha_mode, a
13109 Available values for @var{luma_mode}, @var{chroma_mode} and
13110 @var{alpha_mode} are:
13111
13112 @table @samp
13113 @item none
13114 Do nothing.
13115
13116 @item deinterleave, d
13117 Deinterleave fields, placing one above the other.
13118
13119 @item interleave, i
13120 Interleave fields. Reverse the effect of deinterleaving.
13121 @end table
13122 Default value is @code{none}.
13123
13124 @item luma_swap, ls
13125 @item chroma_swap, cs
13126 @item alpha_swap, as
13127 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
13128 @end table
13129
13130 @subsection Commands
13131
13132 This filter supports the all above options as @ref{commands}.
13133
13134 @section inflate
13135
13136 Apply inflate effect to the video.
13137
13138 This filter replaces the pixel by the local(3x3) average by taking into account
13139 only values higher than the pixel.
13140
13141 It accepts the following options:
13142
13143 @table @option
13144 @item threshold0
13145 @item threshold1
13146 @item threshold2
13147 @item threshold3
13148 Limit the maximum change for each plane, default is 65535.
13149 If 0, plane will remain unchanged.
13150 @end table
13151
13152 @subsection Commands
13153
13154 This filter supports the all above options as @ref{commands}.
13155
13156 @section interlace
13157
13158 Simple interlacing filter from progressive contents. This interleaves upper (or
13159 lower) lines from odd frames with lower (or upper) lines from even frames,
13160 halving the frame rate and preserving image height.
13161
13162 @example
13163    Original        Original             New Frame
13164    Frame 'j'      Frame 'j+1'             (tff)
13165   ==========      ===========       ==================
13166     Line 0  -------------------->    Frame 'j' Line 0
13167     Line 1          Line 1  ---->   Frame 'j+1' Line 1
13168     Line 2 --------------------->    Frame 'j' Line 2
13169     Line 3          Line 3  ---->   Frame 'j+1' Line 3
13170      ...             ...                   ...
13171 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
13172 @end example
13173
13174 It accepts the following optional parameters:
13175
13176 @table @option
13177 @item scan
13178 This determines whether the interlaced frame is taken from the even
13179 (tff - default) or odd (bff) lines of the progressive frame.
13180
13181 @item lowpass
13182 Vertical lowpass filter to avoid twitter interlacing and
13183 reduce moire patterns.
13184
13185 @table @samp
13186 @item 0, off
13187 Disable vertical lowpass filter
13188
13189 @item 1, linear
13190 Enable linear filter (default)
13191
13192 @item 2, complex
13193 Enable complex filter. This will slightly less reduce twitter and moire
13194 but better retain detail and subjective sharpness impression.
13195
13196 @end table
13197 @end table
13198
13199 @section kerndeint
13200
13201 Deinterlace input video by applying Donald Graft's adaptive kernel
13202 deinterling. Work on interlaced parts of a video to produce
13203 progressive frames.
13204
13205 The description of the accepted parameters follows.
13206
13207 @table @option
13208 @item thresh
13209 Set the threshold which affects the filter's tolerance when
13210 determining if a pixel line must be processed. It must be an integer
13211 in the range [0,255] and defaults to 10. A value of 0 will result in
13212 applying the process on every pixels.
13213
13214 @item map
13215 Paint pixels exceeding the threshold value to white if set to 1.
13216 Default is 0.
13217
13218 @item order
13219 Set the fields order. Swap fields if set to 1, leave fields alone if
13220 0. Default is 0.
13221
13222 @item sharp
13223 Enable additional sharpening if set to 1. Default is 0.
13224
13225 @item twoway
13226 Enable twoway sharpening if set to 1. Default is 0.
13227 @end table
13228
13229 @subsection Examples
13230
13231 @itemize
13232 @item
13233 Apply default values:
13234 @example
13235 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
13236 @end example
13237
13238 @item
13239 Enable additional sharpening:
13240 @example
13241 kerndeint=sharp=1
13242 @end example
13243
13244 @item
13245 Paint processed pixels in white:
13246 @example
13247 kerndeint=map=1
13248 @end example
13249 @end itemize
13250
13251 @section lagfun
13252
13253 Slowly update darker pixels.
13254
13255 This filter makes short flashes of light appear longer.
13256 This filter accepts the following options:
13257
13258 @table @option
13259 @item decay
13260 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
13261
13262 @item planes
13263 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
13264 @end table
13265
13266 @section lenscorrection
13267
13268 Correct radial lens distortion
13269
13270 This filter can be used to correct for radial distortion as can result from the use
13271 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
13272 one can use tools available for example as part of opencv or simply trial-and-error.
13273 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
13274 and extract the k1 and k2 coefficients from the resulting matrix.
13275
13276 Note that effectively the same filter is available in the open-source tools Krita and
13277 Digikam from the KDE project.
13278
13279 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
13280 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
13281 brightness distribution, so you may want to use both filters together in certain
13282 cases, though you will have to take care of ordering, i.e. whether vignetting should
13283 be applied before or after lens correction.
13284
13285 @subsection Options
13286
13287 The filter accepts the following options:
13288
13289 @table @option
13290 @item cx
13291 Relative x-coordinate of the focal point of the image, and thereby the center of the
13292 distortion. This value has a range [0,1] and is expressed as fractions of the image
13293 width. Default is 0.5.
13294 @item cy
13295 Relative y-coordinate of the focal point of the image, and thereby the center of the
13296 distortion. This value has a range [0,1] and is expressed as fractions of the image
13297 height. Default is 0.5.
13298 @item k1
13299 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
13300 no correction. Default is 0.
13301 @item k2
13302 Coefficient of the double quadratic correction term. This value has a range [-1,1].
13303 0 means no correction. Default is 0.
13304 @end table
13305
13306 The formula that generates the correction is:
13307
13308 @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)
13309
13310 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
13311 distances from the focal point in the source and target images, respectively.
13312
13313 @section lensfun
13314
13315 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
13316
13317 The @code{lensfun} filter requires the camera make, camera model, and lens model
13318 to apply the lens correction. The filter will load the lensfun database and
13319 query it to find the corresponding camera and lens entries in the database. As
13320 long as these entries can be found with the given options, the filter can
13321 perform corrections on frames. Note that incomplete strings will result in the
13322 filter choosing the best match with the given options, and the filter will
13323 output the chosen camera and lens models (logged with level "info"). You must
13324 provide the make, camera model, and lens model as they are required.
13325
13326 The filter accepts the following options:
13327
13328 @table @option
13329 @item make
13330 The make of the camera (for example, "Canon"). This option is required.
13331
13332 @item model
13333 The model of the camera (for example, "Canon EOS 100D"). This option is
13334 required.
13335
13336 @item lens_model
13337 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
13338 option is required.
13339
13340 @item mode
13341 The type of correction to apply. The following values are valid options:
13342
13343 @table @samp
13344 @item vignetting
13345 Enables fixing lens vignetting.
13346
13347 @item geometry
13348 Enables fixing lens geometry. This is the default.
13349
13350 @item subpixel
13351 Enables fixing chromatic aberrations.
13352
13353 @item vig_geo
13354 Enables fixing lens vignetting and lens geometry.
13355
13356 @item vig_subpixel
13357 Enables fixing lens vignetting and chromatic aberrations.
13358
13359 @item distortion
13360 Enables fixing both lens geometry and chromatic aberrations.
13361
13362 @item all
13363 Enables all possible corrections.
13364
13365 @end table
13366 @item focal_length
13367 The focal length of the image/video (zoom; expected constant for video). For
13368 example, a 18--55mm lens has focal length range of [18--55], so a value in that
13369 range should be chosen when using that lens. Default 18.
13370
13371 @item aperture
13372 The aperture of the image/video (expected constant for video). Note that
13373 aperture is only used for vignetting correction. Default 3.5.
13374
13375 @item focus_distance
13376 The focus distance of the image/video (expected constant for video). Note that
13377 focus distance is only used for vignetting and only slightly affects the
13378 vignetting correction process. If unknown, leave it at the default value (which
13379 is 1000).
13380
13381 @item scale
13382 The scale factor which is applied after transformation. After correction the
13383 video is no longer necessarily rectangular. This parameter controls how much of
13384 the resulting image is visible. The value 0 means that a value will be chosen
13385 automatically such that there is little or no unmapped area in the output
13386 image. 1.0 means that no additional scaling is done. Lower values may result
13387 in more of the corrected image being visible, while higher values may avoid
13388 unmapped areas in the output.
13389
13390 @item target_geometry
13391 The target geometry of the output image/video. The following values are valid
13392 options:
13393
13394 @table @samp
13395 @item rectilinear (default)
13396 @item fisheye
13397 @item panoramic
13398 @item equirectangular
13399 @item fisheye_orthographic
13400 @item fisheye_stereographic
13401 @item fisheye_equisolid
13402 @item fisheye_thoby
13403 @end table
13404 @item reverse
13405 Apply the reverse of image correction (instead of correcting distortion, apply
13406 it).
13407
13408 @item interpolation
13409 The type of interpolation used when correcting distortion. The following values
13410 are valid options:
13411
13412 @table @samp
13413 @item nearest
13414 @item linear (default)
13415 @item lanczos
13416 @end table
13417 @end table
13418
13419 @subsection Examples
13420
13421 @itemize
13422 @item
13423 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
13424 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
13425 aperture of "8.0".
13426
13427 @example
13428 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
13429 @end example
13430
13431 @item
13432 Apply the same as before, but only for the first 5 seconds of video.
13433
13434 @example
13435 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
13436 @end example
13437
13438 @end itemize
13439
13440 @section libvmaf
13441
13442 Obtain the VMAF (Video Multi-Method Assessment Fusion)
13443 score between two input videos.
13444
13445 The obtained VMAF score is printed through the logging system.
13446
13447 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
13448 After installing the library it can be enabled using:
13449 @code{./configure --enable-libvmaf}.
13450 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
13451
13452 The filter has following options:
13453
13454 @table @option
13455 @item model_path
13456 Set the model path which is to be used for SVM.
13457 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
13458
13459 @item log_path
13460 Set the file path to be used to store logs.
13461
13462 @item log_fmt
13463 Set the format of the log file (csv, json or xml).
13464
13465 @item enable_transform
13466 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
13467 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
13468 Default value: @code{false}
13469
13470 @item phone_model
13471 Invokes the phone model which will generate VMAF scores higher than in the
13472 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
13473 Default value: @code{false}
13474
13475 @item psnr
13476 Enables computing psnr along with vmaf.
13477 Default value: @code{false}
13478
13479 @item ssim
13480 Enables computing ssim along with vmaf.
13481 Default value: @code{false}
13482
13483 @item ms_ssim
13484 Enables computing ms_ssim along with vmaf.
13485 Default value: @code{false}
13486
13487 @item pool
13488 Set the pool method to be used for computing vmaf.
13489 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
13490
13491 @item n_threads
13492 Set number of threads to be used when computing vmaf.
13493 Default value: @code{0}, which makes use of all available logical processors.
13494
13495 @item n_subsample
13496 Set interval for frame subsampling used when computing vmaf.
13497 Default value: @code{1}
13498
13499 @item enable_conf_interval
13500 Enables confidence interval.
13501 Default value: @code{false}
13502 @end table
13503
13504 This filter also supports the @ref{framesync} options.
13505
13506 @subsection Examples
13507 @itemize
13508 @item
13509 On the below examples the input file @file{main.mpg} being processed is
13510 compared with the reference file @file{ref.mpg}.
13511
13512 @example
13513 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
13514 @end example
13515
13516 @item
13517 Example with options:
13518 @example
13519 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
13520 @end example
13521
13522 @item
13523 Example with options and different containers:
13524 @example
13525 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 -
13526 @end example
13527 @end itemize
13528
13529 @section limiter
13530
13531 Limits the pixel components values to the specified range [min, max].
13532
13533 The filter accepts the following options:
13534
13535 @table @option
13536 @item min
13537 Lower bound. Defaults to the lowest allowed value for the input.
13538
13539 @item max
13540 Upper bound. Defaults to the highest allowed value for the input.
13541
13542 @item planes
13543 Specify which planes will be processed. Defaults to all available.
13544 @end table
13545
13546 @section loop
13547
13548 Loop video frames.
13549
13550 The filter accepts the following options:
13551
13552 @table @option
13553 @item loop
13554 Set the number of loops. Setting this value to -1 will result in infinite loops.
13555 Default is 0.
13556
13557 @item size
13558 Set maximal size in number of frames. Default is 0.
13559
13560 @item start
13561 Set first frame of loop. Default is 0.
13562 @end table
13563
13564 @subsection Examples
13565
13566 @itemize
13567 @item
13568 Loop single first frame infinitely:
13569 @example
13570 loop=loop=-1:size=1:start=0
13571 @end example
13572
13573 @item
13574 Loop single first frame 10 times:
13575 @example
13576 loop=loop=10:size=1:start=0
13577 @end example
13578
13579 @item
13580 Loop 10 first frames 5 times:
13581 @example
13582 loop=loop=5:size=10:start=0
13583 @end example
13584 @end itemize
13585
13586 @section lut1d
13587
13588 Apply a 1D LUT to an input video.
13589
13590 The filter accepts the following options:
13591
13592 @table @option
13593 @item file
13594 Set the 1D LUT file name.
13595
13596 Currently supported formats:
13597 @table @samp
13598 @item cube
13599 Iridas
13600 @item csp
13601 cineSpace
13602 @end table
13603
13604 @item interp
13605 Select interpolation mode.
13606
13607 Available values are:
13608
13609 @table @samp
13610 @item nearest
13611 Use values from the nearest defined point.
13612 @item linear
13613 Interpolate values using the linear interpolation.
13614 @item cosine
13615 Interpolate values using the cosine interpolation.
13616 @item cubic
13617 Interpolate values using the cubic interpolation.
13618 @item spline
13619 Interpolate values using the spline interpolation.
13620 @end table
13621 @end table
13622
13623 @anchor{lut3d}
13624 @section lut3d
13625
13626 Apply a 3D LUT to an input video.
13627
13628 The filter accepts the following options:
13629
13630 @table @option
13631 @item file
13632 Set the 3D LUT file name.
13633
13634 Currently supported formats:
13635 @table @samp
13636 @item 3dl
13637 AfterEffects
13638 @item cube
13639 Iridas
13640 @item dat
13641 DaVinci
13642 @item m3d
13643 Pandora
13644 @item csp
13645 cineSpace
13646 @end table
13647 @item interp
13648 Select interpolation mode.
13649
13650 Available values are:
13651
13652 @table @samp
13653 @item nearest
13654 Use values from the nearest defined point.
13655 @item trilinear
13656 Interpolate values using the 8 points defining a cube.
13657 @item tetrahedral
13658 Interpolate values using a tetrahedron.
13659 @end table
13660 @end table
13661
13662 @section lumakey
13663
13664 Turn certain luma values into transparency.
13665
13666 The filter accepts the following options:
13667
13668 @table @option
13669 @item threshold
13670 Set the luma which will be used as base for transparency.
13671 Default value is @code{0}.
13672
13673 @item tolerance
13674 Set the range of luma values to be keyed out.
13675 Default value is @code{0.01}.
13676
13677 @item softness
13678 Set the range of softness. Default value is @code{0}.
13679 Use this to control gradual transition from zero to full transparency.
13680 @end table
13681
13682 @subsection Commands
13683 This filter supports same @ref{commands} as options.
13684 The command accepts the same syntax of the corresponding option.
13685
13686 If the specified expression is not valid, it is kept at its current
13687 value.
13688
13689 @section lut, lutrgb, lutyuv
13690
13691 Compute a look-up table for binding each pixel component input value
13692 to an output value, and apply it to the input video.
13693
13694 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
13695 to an RGB input video.
13696
13697 These filters accept the following parameters:
13698 @table @option
13699 @item c0
13700 set first pixel component expression
13701 @item c1
13702 set second pixel component expression
13703 @item c2
13704 set third pixel component expression
13705 @item c3
13706 set fourth pixel component expression, corresponds to the alpha component
13707
13708 @item r
13709 set red component expression
13710 @item g
13711 set green component expression
13712 @item b
13713 set blue component expression
13714 @item a
13715 alpha component expression
13716
13717 @item y
13718 set Y/luminance component expression
13719 @item u
13720 set U/Cb component expression
13721 @item v
13722 set V/Cr component expression
13723 @end table
13724
13725 Each of them specifies the expression to use for computing the lookup table for
13726 the corresponding pixel component values.
13727
13728 The exact component associated to each of the @var{c*} options depends on the
13729 format in input.
13730
13731 The @var{lut} filter requires either YUV or RGB pixel formats in input,
13732 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
13733
13734 The expressions can contain the following constants and functions:
13735
13736 @table @option
13737 @item w
13738 @item h
13739 The input width and height.
13740
13741 @item val
13742 The input value for the pixel component.
13743
13744 @item clipval
13745 The input value, clipped to the @var{minval}-@var{maxval} range.
13746
13747 @item maxval
13748 The maximum value for the pixel component.
13749
13750 @item minval
13751 The minimum value for the pixel component.
13752
13753 @item negval
13754 The negated value for the pixel component value, clipped to the
13755 @var{minval}-@var{maxval} range; it corresponds to the expression
13756 "maxval-clipval+minval".
13757
13758 @item clip(val)
13759 The computed value in @var{val}, clipped to the
13760 @var{minval}-@var{maxval} range.
13761
13762 @item gammaval(gamma)
13763 The computed gamma correction value of the pixel component value,
13764 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
13765 expression
13766 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
13767
13768 @end table
13769
13770 All expressions default to "val".
13771
13772 @subsection Examples
13773
13774 @itemize
13775 @item
13776 Negate input video:
13777 @example
13778 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
13779 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
13780 @end example
13781
13782 The above is the same as:
13783 @example
13784 lutrgb="r=negval:g=negval:b=negval"
13785 lutyuv="y=negval:u=negval:v=negval"
13786 @end example
13787
13788 @item
13789 Negate luminance:
13790 @example
13791 lutyuv=y=negval
13792 @end example
13793
13794 @item
13795 Remove chroma components, turning the video into a graytone image:
13796 @example
13797 lutyuv="u=128:v=128"
13798 @end example
13799
13800 @item
13801 Apply a luma burning effect:
13802 @example
13803 lutyuv="y=2*val"
13804 @end example
13805
13806 @item
13807 Remove green and blue components:
13808 @example
13809 lutrgb="g=0:b=0"
13810 @end example
13811
13812 @item
13813 Set a constant alpha channel value on input:
13814 @example
13815 format=rgba,lutrgb=a="maxval-minval/2"
13816 @end example
13817
13818 @item
13819 Correct luminance gamma by a factor of 0.5:
13820 @example
13821 lutyuv=y=gammaval(0.5)
13822 @end example
13823
13824 @item
13825 Discard least significant bits of luma:
13826 @example
13827 lutyuv=y='bitand(val, 128+64+32)'
13828 @end example
13829
13830 @item
13831 Technicolor like effect:
13832 @example
13833 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
13834 @end example
13835 @end itemize
13836
13837 @section lut2, tlut2
13838
13839 The @code{lut2} filter takes two input streams and outputs one
13840 stream.
13841
13842 The @code{tlut2} (time lut2) filter takes two consecutive frames
13843 from one single stream.
13844
13845 This filter accepts the following parameters:
13846 @table @option
13847 @item c0
13848 set first pixel component expression
13849 @item c1
13850 set second pixel component expression
13851 @item c2
13852 set third pixel component expression
13853 @item c3
13854 set fourth pixel component expression, corresponds to the alpha component
13855
13856 @item d
13857 set output bit depth, only available for @code{lut2} filter. By default is 0,
13858 which means bit depth is automatically picked from first input format.
13859 @end table
13860
13861 The @code{lut2} filter also supports the @ref{framesync} options.
13862
13863 Each of them specifies the expression to use for computing the lookup table for
13864 the corresponding pixel component values.
13865
13866 The exact component associated to each of the @var{c*} options depends on the
13867 format in inputs.
13868
13869 The expressions can contain the following constants:
13870
13871 @table @option
13872 @item w
13873 @item h
13874 The input width and height.
13875
13876 @item x
13877 The first input value for the pixel component.
13878
13879 @item y
13880 The second input value for the pixel component.
13881
13882 @item bdx
13883 The first input video bit depth.
13884
13885 @item bdy
13886 The second input video bit depth.
13887 @end table
13888
13889 All expressions default to "x".
13890
13891 @subsection Examples
13892
13893 @itemize
13894 @item
13895 Highlight differences between two RGB video streams:
13896 @example
13897 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)'
13898 @end example
13899
13900 @item
13901 Highlight differences between two YUV video streams:
13902 @example
13903 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)'
13904 @end example
13905
13906 @item
13907 Show max difference between two video streams:
13908 @example
13909 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)))'
13910 @end example
13911 @end itemize
13912
13913 @section maskedclamp
13914
13915 Clamp the first input stream with the second input and third input stream.
13916
13917 Returns the value of first stream to be between second input
13918 stream - @code{undershoot} and third input stream + @code{overshoot}.
13919
13920 This filter accepts the following options:
13921 @table @option
13922 @item undershoot
13923 Default value is @code{0}.
13924
13925 @item overshoot
13926 Default value is @code{0}.
13927
13928 @item planes
13929 Set which planes will be processed as bitmap, unprocessed planes will be
13930 copied from first stream.
13931 By default value 0xf, all planes will be processed.
13932 @end table
13933
13934 @section maskedmax
13935
13936 Merge the second and third input stream into output stream using absolute differences
13937 between second input stream and first input stream and absolute difference between
13938 third input stream and first input stream. The picked value will be from second input
13939 stream if second absolute difference is greater than first one or from third input stream
13940 otherwise.
13941
13942 This filter accepts the following options:
13943 @table @option
13944 @item planes
13945 Set which planes will be processed as bitmap, unprocessed planes will be
13946 copied from first stream.
13947 By default value 0xf, all planes will be processed.
13948 @end table
13949
13950 @section maskedmerge
13951
13952 Merge the first input stream with the second input stream using per pixel
13953 weights in the third input stream.
13954
13955 A value of 0 in the third stream pixel component means that pixel component
13956 from first stream is returned unchanged, while maximum value (eg. 255 for
13957 8-bit videos) means that pixel component from second stream is returned
13958 unchanged. Intermediate values define the amount of merging between both
13959 input stream's pixel components.
13960
13961 This filter accepts the following options:
13962 @table @option
13963 @item planes
13964 Set which planes will be processed as bitmap, unprocessed planes will be
13965 copied from first stream.
13966 By default value 0xf, all planes will be processed.
13967 @end table
13968
13969 @section maskedmin
13970
13971 Merge the second and third input stream into output stream using absolute differences
13972 between second input stream and first input stream and absolute difference between
13973 third input stream and first input stream. The picked value will be from second input
13974 stream if second absolute difference is less than first one or from third input stream
13975 otherwise.
13976
13977 This filter accepts the following options:
13978 @table @option
13979 @item planes
13980 Set which planes will be processed as bitmap, unprocessed planes will be
13981 copied from first stream.
13982 By default value 0xf, all planes will be processed.
13983 @end table
13984
13985 @section maskedthreshold
13986 Pick pixels comparing absolute difference of two video streams with fixed
13987 threshold.
13988
13989 If absolute difference between pixel component of first and second video
13990 stream is equal or lower than user supplied threshold than pixel component
13991 from first video stream is picked, otherwise pixel component from second
13992 video stream is picked.
13993
13994 This filter accepts the following options:
13995 @table @option
13996 @item threshold
13997 Set threshold used when picking pixels from absolute difference from two input
13998 video streams.
13999
14000 @item planes
14001 Set which planes will be processed as bitmap, unprocessed planes will be
14002 copied from second stream.
14003 By default value 0xf, all planes will be processed.
14004 @end table
14005
14006 @section maskfun
14007 Create mask from input video.
14008
14009 For example it is useful to create motion masks after @code{tblend} filter.
14010
14011 This filter accepts the following options:
14012
14013 @table @option
14014 @item low
14015 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
14016
14017 @item high
14018 Set high threshold. Any pixel component higher than this value will be set to max value
14019 allowed for current pixel format.
14020
14021 @item planes
14022 Set planes to filter, by default all available planes are filtered.
14023
14024 @item fill
14025 Fill all frame pixels with this value.
14026
14027 @item sum
14028 Set max average pixel value for frame. If sum of all pixel components is higher that this
14029 average, output frame will be completely filled with value set by @var{fill} option.
14030 Typically useful for scene changes when used in combination with @code{tblend} filter.
14031 @end table
14032
14033 @section mcdeint
14034
14035 Apply motion-compensation deinterlacing.
14036
14037 It needs one field per frame as input and must thus be used together
14038 with yadif=1/3 or equivalent.
14039
14040 This filter accepts the following options:
14041 @table @option
14042 @item mode
14043 Set the deinterlacing mode.
14044
14045 It accepts one of the following values:
14046 @table @samp
14047 @item fast
14048 @item medium
14049 @item slow
14050 use iterative motion estimation
14051 @item extra_slow
14052 like @samp{slow}, but use multiple reference frames.
14053 @end table
14054 Default value is @samp{fast}.
14055
14056 @item parity
14057 Set the picture field parity assumed for the input video. It must be
14058 one of the following values:
14059
14060 @table @samp
14061 @item 0, tff
14062 assume top field first
14063 @item 1, bff
14064 assume bottom field first
14065 @end table
14066
14067 Default value is @samp{bff}.
14068
14069 @item qp
14070 Set per-block quantization parameter (QP) used by the internal
14071 encoder.
14072
14073 Higher values should result in a smoother motion vector field but less
14074 optimal individual vectors. Default value is 1.
14075 @end table
14076
14077 @section median
14078
14079 Pick median pixel from certain rectangle defined by radius.
14080
14081 This filter accepts the following options:
14082
14083 @table @option
14084 @item radius
14085 Set horizontal radius size. Default value is @code{1}.
14086 Allowed range is integer from 1 to 127.
14087
14088 @item planes
14089 Set which planes to process. Default is @code{15}, which is all available planes.
14090
14091 @item radiusV
14092 Set vertical radius size. Default value is @code{0}.
14093 Allowed range is integer from 0 to 127.
14094 If it is 0, value will be picked from horizontal @code{radius} option.
14095
14096 @item percentile
14097 Set median percentile. Default value is @code{0.5}.
14098 Default value of @code{0.5} will pick always median values, while @code{0} will pick
14099 minimum values, and @code{1} maximum values.
14100 @end table
14101
14102 @subsection Commands
14103 This filter supports same @ref{commands} as options.
14104 The command accepts the same syntax of the corresponding option.
14105
14106 If the specified expression is not valid, it is kept at its current
14107 value.
14108
14109 @section mergeplanes
14110
14111 Merge color channel components from several video streams.
14112
14113 The filter accepts up to 4 input streams, and merge selected input
14114 planes to the output video.
14115
14116 This filter accepts the following options:
14117 @table @option
14118 @item mapping
14119 Set input to output plane mapping. Default is @code{0}.
14120
14121 The mappings is specified as a bitmap. It should be specified as a
14122 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
14123 mapping for the first plane of the output stream. 'A' sets the number of
14124 the input stream to use (from 0 to 3), and 'a' the plane number of the
14125 corresponding input to use (from 0 to 3). The rest of the mappings is
14126 similar, 'Bb' describes the mapping for the output stream second
14127 plane, 'Cc' describes the mapping for the output stream third plane and
14128 'Dd' describes the mapping for the output stream fourth plane.
14129
14130 @item format
14131 Set output pixel format. Default is @code{yuva444p}.
14132 @end table
14133
14134 @subsection Examples
14135
14136 @itemize
14137 @item
14138 Merge three gray video streams of same width and height into single video stream:
14139 @example
14140 [a0][a1][a2]mergeplanes=0x001020:yuv444p
14141 @end example
14142
14143 @item
14144 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
14145 @example
14146 [a0][a1]mergeplanes=0x00010210:yuva444p
14147 @end example
14148
14149 @item
14150 Swap Y and A plane in yuva444p stream:
14151 @example
14152 format=yuva444p,mergeplanes=0x03010200:yuva444p
14153 @end example
14154
14155 @item
14156 Swap U and V plane in yuv420p stream:
14157 @example
14158 format=yuv420p,mergeplanes=0x000201:yuv420p
14159 @end example
14160
14161 @item
14162 Cast a rgb24 clip to yuv444p:
14163 @example
14164 format=rgb24,mergeplanes=0x000102:yuv444p
14165 @end example
14166 @end itemize
14167
14168 @section mestimate
14169
14170 Estimate and export motion vectors using block matching algorithms.
14171 Motion vectors are stored in frame side data to be used by other filters.
14172
14173 This filter accepts the following options:
14174 @table @option
14175 @item method
14176 Specify the motion estimation method. Accepts one of the following values:
14177
14178 @table @samp
14179 @item esa
14180 Exhaustive search algorithm.
14181 @item tss
14182 Three step search algorithm.
14183 @item tdls
14184 Two dimensional logarithmic search algorithm.
14185 @item ntss
14186 New three step search algorithm.
14187 @item fss
14188 Four step search algorithm.
14189 @item ds
14190 Diamond search algorithm.
14191 @item hexbs
14192 Hexagon-based search algorithm.
14193 @item epzs
14194 Enhanced predictive zonal search algorithm.
14195 @item umh
14196 Uneven multi-hexagon search algorithm.
14197 @end table
14198 Default value is @samp{esa}.
14199
14200 @item mb_size
14201 Macroblock size. Default @code{16}.
14202
14203 @item search_param
14204 Search parameter. Default @code{7}.
14205 @end table
14206
14207 @section midequalizer
14208
14209 Apply Midway Image Equalization effect using two video streams.
14210
14211 Midway Image Equalization adjusts a pair of images to have the same
14212 histogram, while maintaining their dynamics as much as possible. It's
14213 useful for e.g. matching exposures from a pair of stereo cameras.
14214
14215 This filter has two inputs and one output, which must be of same pixel format, but
14216 may be of different sizes. The output of filter is first input adjusted with
14217 midway histogram of both inputs.
14218
14219 This filter accepts the following option:
14220
14221 @table @option
14222 @item planes
14223 Set which planes to process. Default is @code{15}, which is all available planes.
14224 @end table
14225
14226 @section minterpolate
14227
14228 Convert the video to specified frame rate using motion interpolation.
14229
14230 This filter accepts the following options:
14231 @table @option
14232 @item fps
14233 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}.
14234
14235 @item mi_mode
14236 Motion interpolation mode. Following values are accepted:
14237 @table @samp
14238 @item dup
14239 Duplicate previous or next frame for interpolating new ones.
14240 @item blend
14241 Blend source frames. Interpolated frame is mean of previous and next frames.
14242 @item mci
14243 Motion compensated interpolation. Following options are effective when this mode is selected:
14244
14245 @table @samp
14246 @item mc_mode
14247 Motion compensation mode. Following values are accepted:
14248 @table @samp
14249 @item obmc
14250 Overlapped block motion compensation.
14251 @item aobmc
14252 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
14253 @end table
14254 Default mode is @samp{obmc}.
14255
14256 @item me_mode
14257 Motion estimation mode. Following values are accepted:
14258 @table @samp
14259 @item bidir
14260 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
14261 @item bilat
14262 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
14263 @end table
14264 Default mode is @samp{bilat}.
14265
14266 @item me
14267 The algorithm to be used for motion estimation. Following values are accepted:
14268 @table @samp
14269 @item esa
14270 Exhaustive search algorithm.
14271 @item tss
14272 Three step search algorithm.
14273 @item tdls
14274 Two dimensional logarithmic search algorithm.
14275 @item ntss
14276 New three step search algorithm.
14277 @item fss
14278 Four step search algorithm.
14279 @item ds
14280 Diamond search algorithm.
14281 @item hexbs
14282 Hexagon-based search algorithm.
14283 @item epzs
14284 Enhanced predictive zonal search algorithm.
14285 @item umh
14286 Uneven multi-hexagon search algorithm.
14287 @end table
14288 Default algorithm is @samp{epzs}.
14289
14290 @item mb_size
14291 Macroblock size. Default @code{16}.
14292
14293 @item search_param
14294 Motion estimation search parameter. Default @code{32}.
14295
14296 @item vsbmc
14297 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).
14298 @end table
14299 @end table
14300
14301 @item scd
14302 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:
14303 @table @samp
14304 @item none
14305 Disable scene change detection.
14306 @item fdiff
14307 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
14308 @end table
14309 Default method is @samp{fdiff}.
14310
14311 @item scd_threshold
14312 Scene change detection threshold. Default is @code{10.}.
14313 @end table
14314
14315 @section mix
14316
14317 Mix several video input streams into one video stream.
14318
14319 A description of the accepted options follows.
14320
14321 @table @option
14322 @item nb_inputs
14323 The number of inputs. If unspecified, it defaults to 2.
14324
14325 @item weights
14326 Specify weight of each input video stream as sequence.
14327 Each weight is separated by space. If number of weights
14328 is smaller than number of @var{frames} last specified
14329 weight will be used for all remaining unset weights.
14330
14331 @item scale
14332 Specify scale, if it is set it will be multiplied with sum
14333 of each weight multiplied with pixel values to give final destination
14334 pixel value. By default @var{scale} is auto scaled to sum of weights.
14335
14336 @item duration
14337 Specify how end of stream is determined.
14338 @table @samp
14339 @item longest
14340 The duration of the longest input. (default)
14341
14342 @item shortest
14343 The duration of the shortest input.
14344
14345 @item first
14346 The duration of the first input.
14347 @end table
14348 @end table
14349
14350 @section mpdecimate
14351
14352 Drop frames that do not differ greatly from the previous frame in
14353 order to reduce frame rate.
14354
14355 The main use of this filter is for very-low-bitrate encoding
14356 (e.g. streaming over dialup modem), but it could in theory be used for
14357 fixing movies that were inverse-telecined incorrectly.
14358
14359 A description of the accepted options follows.
14360
14361 @table @option
14362 @item max
14363 Set the maximum number of consecutive frames which can be dropped (if
14364 positive), or the minimum interval between dropped frames (if
14365 negative). If the value is 0, the frame is dropped disregarding the
14366 number of previous sequentially dropped frames.
14367
14368 Default value is 0.
14369
14370 @item hi
14371 @item lo
14372 @item frac
14373 Set the dropping threshold values.
14374
14375 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
14376 represent actual pixel value differences, so a threshold of 64
14377 corresponds to 1 unit of difference for each pixel, or the same spread
14378 out differently over the block.
14379
14380 A frame is a candidate for dropping if no 8x8 blocks differ by more
14381 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
14382 meaning the whole image) differ by more than a threshold of @option{lo}.
14383
14384 Default value for @option{hi} is 64*12, default value for @option{lo} is
14385 64*5, and default value for @option{frac} is 0.33.
14386 @end table
14387
14388
14389 @section negate
14390
14391 Negate (invert) the input video.
14392
14393 It accepts the following option:
14394
14395 @table @option
14396
14397 @item negate_alpha
14398 With value 1, it negates the alpha component, if present. Default value is 0.
14399 @end table
14400
14401 @anchor{nlmeans}
14402 @section nlmeans
14403
14404 Denoise frames using Non-Local Means algorithm.
14405
14406 Each pixel is adjusted by looking for other pixels with similar contexts. This
14407 context similarity is defined by comparing their surrounding patches of size
14408 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
14409 around the pixel.
14410
14411 Note that the research area defines centers for patches, which means some
14412 patches will be made of pixels outside that research area.
14413
14414 The filter accepts the following options.
14415
14416 @table @option
14417 @item s
14418 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
14419
14420 @item p
14421 Set patch size. Default is 7. Must be odd number in range [0, 99].
14422
14423 @item pc
14424 Same as @option{p} but for chroma planes.
14425
14426 The default value is @var{0} and means automatic.
14427
14428 @item r
14429 Set research size. Default is 15. Must be odd number in range [0, 99].
14430
14431 @item rc
14432 Same as @option{r} but for chroma planes.
14433
14434 The default value is @var{0} and means automatic.
14435 @end table
14436
14437 @section nnedi
14438
14439 Deinterlace video using neural network edge directed interpolation.
14440
14441 This filter accepts the following options:
14442
14443 @table @option
14444 @item weights
14445 Mandatory option, without binary file filter can not work.
14446 Currently file can be found here:
14447 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
14448
14449 @item deint
14450 Set which frames to deinterlace, by default it is @code{all}.
14451 Can be @code{all} or @code{interlaced}.
14452
14453 @item field
14454 Set mode of operation.
14455
14456 Can be one of the following:
14457
14458 @table @samp
14459 @item af
14460 Use frame flags, both fields.
14461 @item a
14462 Use frame flags, single field.
14463 @item t
14464 Use top field only.
14465 @item b
14466 Use bottom field only.
14467 @item tf
14468 Use both fields, top first.
14469 @item bf
14470 Use both fields, bottom first.
14471 @end table
14472
14473 @item planes
14474 Set which planes to process, by default filter process all frames.
14475
14476 @item nsize
14477 Set size of local neighborhood around each pixel, used by the predictor neural
14478 network.
14479
14480 Can be one of the following:
14481
14482 @table @samp
14483 @item s8x6
14484 @item s16x6
14485 @item s32x6
14486 @item s48x6
14487 @item s8x4
14488 @item s16x4
14489 @item s32x4
14490 @end table
14491
14492 @item nns
14493 Set the number of neurons in predictor neural network.
14494 Can be one of the following:
14495
14496 @table @samp
14497 @item n16
14498 @item n32
14499 @item n64
14500 @item n128
14501 @item n256
14502 @end table
14503
14504 @item qual
14505 Controls the number of different neural network predictions that are blended
14506 together to compute the final output value. Can be @code{fast}, default or
14507 @code{slow}.
14508
14509 @item etype
14510 Set which set of weights to use in the predictor.
14511 Can be one of the following:
14512
14513 @table @samp
14514 @item a
14515 weights trained to minimize absolute error
14516 @item s
14517 weights trained to minimize squared error
14518 @end table
14519
14520 @item pscrn
14521 Controls whether or not the prescreener neural network is used to decide
14522 which pixels should be processed by the predictor neural network and which
14523 can be handled by simple cubic interpolation.
14524 The prescreener is trained to know whether cubic interpolation will be
14525 sufficient for a pixel or whether it should be predicted by the predictor nn.
14526 The computational complexity of the prescreener nn is much less than that of
14527 the predictor nn. Since most pixels can be handled by cubic interpolation,
14528 using the prescreener generally results in much faster processing.
14529 The prescreener is pretty accurate, so the difference between using it and not
14530 using it is almost always unnoticeable.
14531
14532 Can be one of the following:
14533
14534 @table @samp
14535 @item none
14536 @item original
14537 @item new
14538 @end table
14539
14540 Default is @code{new}.
14541
14542 @item fapprox
14543 Set various debugging flags.
14544 @end table
14545
14546 @section noformat
14547
14548 Force libavfilter not to use any of the specified pixel formats for the
14549 input to the next filter.
14550
14551 It accepts the following parameters:
14552 @table @option
14553
14554 @item pix_fmts
14555 A '|'-separated list of pixel format names, such as
14556 pix_fmts=yuv420p|monow|rgb24".
14557
14558 @end table
14559
14560 @subsection Examples
14561
14562 @itemize
14563 @item
14564 Force libavfilter to use a format different from @var{yuv420p} for the
14565 input to the vflip filter:
14566 @example
14567 noformat=pix_fmts=yuv420p,vflip
14568 @end example
14569
14570 @item
14571 Convert the input video to any of the formats not contained in the list:
14572 @example
14573 noformat=yuv420p|yuv444p|yuv410p
14574 @end example
14575 @end itemize
14576
14577 @section noise
14578
14579 Add noise on video input frame.
14580
14581 The filter accepts the following options:
14582
14583 @table @option
14584 @item all_seed
14585 @item c0_seed
14586 @item c1_seed
14587 @item c2_seed
14588 @item c3_seed
14589 Set noise seed for specific pixel component or all pixel components in case
14590 of @var{all_seed}. Default value is @code{123457}.
14591
14592 @item all_strength, alls
14593 @item c0_strength, c0s
14594 @item c1_strength, c1s
14595 @item c2_strength, c2s
14596 @item c3_strength, c3s
14597 Set noise strength for specific pixel component or all pixel components in case
14598 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
14599
14600 @item all_flags, allf
14601 @item c0_flags, c0f
14602 @item c1_flags, c1f
14603 @item c2_flags, c2f
14604 @item c3_flags, c3f
14605 Set pixel component flags or set flags for all components if @var{all_flags}.
14606 Available values for component flags are:
14607 @table @samp
14608 @item a
14609 averaged temporal noise (smoother)
14610 @item p
14611 mix random noise with a (semi)regular pattern
14612 @item t
14613 temporal noise (noise pattern changes between frames)
14614 @item u
14615 uniform noise (gaussian otherwise)
14616 @end table
14617 @end table
14618
14619 @subsection Examples
14620
14621 Add temporal and uniform noise to input video:
14622 @example
14623 noise=alls=20:allf=t+u
14624 @end example
14625
14626 @section normalize
14627
14628 Normalize RGB video (aka histogram stretching, contrast stretching).
14629 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
14630
14631 For each channel of each frame, the filter computes the input range and maps
14632 it linearly to the user-specified output range. The output range defaults
14633 to the full dynamic range from pure black to pure white.
14634
14635 Temporal smoothing can be used on the input range to reduce flickering (rapid
14636 changes in brightness) caused when small dark or bright objects enter or leave
14637 the scene. This is similar to the auto-exposure (automatic gain control) on a
14638 video camera, and, like a video camera, it may cause a period of over- or
14639 under-exposure of the video.
14640
14641 The R,G,B channels can be normalized independently, which may cause some
14642 color shifting, or linked together as a single channel, which prevents
14643 color shifting. Linked normalization preserves hue. Independent normalization
14644 does not, so it can be used to remove some color casts. Independent and linked
14645 normalization can be combined in any ratio.
14646
14647 The normalize filter accepts the following options:
14648
14649 @table @option
14650 @item blackpt
14651 @item whitept
14652 Colors which define the output range. The minimum input value is mapped to
14653 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
14654 The defaults are black and white respectively. Specifying white for
14655 @var{blackpt} and black for @var{whitept} will give color-inverted,
14656 normalized video. Shades of grey can be used to reduce the dynamic range
14657 (contrast). Specifying saturated colors here can create some interesting
14658 effects.
14659
14660 @item smoothing
14661 The number of previous frames to use for temporal smoothing. The input range
14662 of each channel is smoothed using a rolling average over the current frame
14663 and the @var{smoothing} previous frames. The default is 0 (no temporal
14664 smoothing).
14665
14666 @item independence
14667 Controls the ratio of independent (color shifting) channel normalization to
14668 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
14669 independent. Defaults to 1.0 (fully independent).
14670
14671 @item strength
14672 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
14673 expensive no-op. Defaults to 1.0 (full strength).
14674
14675 @end table
14676
14677 @subsection Commands
14678 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
14679 The command accepts the same syntax of the corresponding option.
14680
14681 If the specified expression is not valid, it is kept at its current
14682 value.
14683
14684 @subsection Examples
14685
14686 Stretch video contrast to use the full dynamic range, with no temporal
14687 smoothing; may flicker depending on the source content:
14688 @example
14689 normalize=blackpt=black:whitept=white:smoothing=0
14690 @end example
14691
14692 As above, but with 50 frames of temporal smoothing; flicker should be
14693 reduced, depending on the source content:
14694 @example
14695 normalize=blackpt=black:whitept=white:smoothing=50
14696 @end example
14697
14698 As above, but with hue-preserving linked channel normalization:
14699 @example
14700 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
14701 @end example
14702
14703 As above, but with half strength:
14704 @example
14705 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
14706 @end example
14707
14708 Map the darkest input color to red, the brightest input color to cyan:
14709 @example
14710 normalize=blackpt=red:whitept=cyan
14711 @end example
14712
14713 @section null
14714
14715 Pass the video source unchanged to the output.
14716
14717 @section ocr
14718 Optical Character Recognition
14719
14720 This filter uses Tesseract for optical character recognition. To enable
14721 compilation of this filter, you need to configure FFmpeg with
14722 @code{--enable-libtesseract}.
14723
14724 It accepts the following options:
14725
14726 @table @option
14727 @item datapath
14728 Set datapath to tesseract data. Default is to use whatever was
14729 set at installation.
14730
14731 @item language
14732 Set language, default is "eng".
14733
14734 @item whitelist
14735 Set character whitelist.
14736
14737 @item blacklist
14738 Set character blacklist.
14739 @end table
14740
14741 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
14742 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
14743
14744 @section ocv
14745
14746 Apply a video transform using libopencv.
14747
14748 To enable this filter, install the libopencv library and headers and
14749 configure FFmpeg with @code{--enable-libopencv}.
14750
14751 It accepts the following parameters:
14752
14753 @table @option
14754
14755 @item filter_name
14756 The name of the libopencv filter to apply.
14757
14758 @item filter_params
14759 The parameters to pass to the libopencv filter. If not specified, the default
14760 values are assumed.
14761
14762 @end table
14763
14764 Refer to the official libopencv documentation for more precise
14765 information:
14766 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
14767
14768 Several libopencv filters are supported; see the following subsections.
14769
14770 @anchor{dilate}
14771 @subsection dilate
14772
14773 Dilate an image by using a specific structuring element.
14774 It corresponds to the libopencv function @code{cvDilate}.
14775
14776 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
14777
14778 @var{struct_el} represents a structuring element, and has the syntax:
14779 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
14780
14781 @var{cols} and @var{rows} represent the number of columns and rows of
14782 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
14783 point, and @var{shape} the shape for the structuring element. @var{shape}
14784 must be "rect", "cross", "ellipse", or "custom".
14785
14786 If the value for @var{shape} is "custom", it must be followed by a
14787 string of the form "=@var{filename}". The file with name
14788 @var{filename} is assumed to represent a binary image, with each
14789 printable character corresponding to a bright pixel. When a custom
14790 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
14791 or columns and rows of the read file are assumed instead.
14792
14793 The default value for @var{struct_el} is "3x3+0x0/rect".
14794
14795 @var{nb_iterations} specifies the number of times the transform is
14796 applied to the image, and defaults to 1.
14797
14798 Some examples:
14799 @example
14800 # Use the default values
14801 ocv=dilate
14802
14803 # Dilate using a structuring element with a 5x5 cross, iterating two times
14804 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
14805
14806 # Read the shape from the file diamond.shape, iterating two times.
14807 # The file diamond.shape may contain a pattern of characters like this
14808 #   *
14809 #  ***
14810 # *****
14811 #  ***
14812 #   *
14813 # The specified columns and rows are ignored
14814 # but the anchor point coordinates are not
14815 ocv=dilate:0x0+2x2/custom=diamond.shape|2
14816 @end example
14817
14818 @subsection erode
14819
14820 Erode an image by using a specific structuring element.
14821 It corresponds to the libopencv function @code{cvErode}.
14822
14823 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
14824 with the same syntax and semantics as the @ref{dilate} filter.
14825
14826 @subsection smooth
14827
14828 Smooth the input video.
14829
14830 The filter takes the following parameters:
14831 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
14832
14833 @var{type} is the type of smooth filter to apply, and must be one of
14834 the following values: "blur", "blur_no_scale", "median", "gaussian",
14835 or "bilateral". The default value is "gaussian".
14836
14837 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
14838 depends on the smooth type. @var{param1} and
14839 @var{param2} accept integer positive values or 0. @var{param3} and
14840 @var{param4} accept floating point values.
14841
14842 The default value for @var{param1} is 3. The default value for the
14843 other parameters is 0.
14844
14845 These parameters correspond to the parameters assigned to the
14846 libopencv function @code{cvSmooth}.
14847
14848 @section oscilloscope
14849
14850 2D Video Oscilloscope.
14851
14852 Useful to measure spatial impulse, step responses, chroma delays, etc.
14853
14854 It accepts the following parameters:
14855
14856 @table @option
14857 @item x
14858 Set scope center x position.
14859
14860 @item y
14861 Set scope center y position.
14862
14863 @item s
14864 Set scope size, relative to frame diagonal.
14865
14866 @item t
14867 Set scope tilt/rotation.
14868
14869 @item o
14870 Set trace opacity.
14871
14872 @item tx
14873 Set trace center x position.
14874
14875 @item ty
14876 Set trace center y position.
14877
14878 @item tw
14879 Set trace width, relative to width of frame.
14880
14881 @item th
14882 Set trace height, relative to height of frame.
14883
14884 @item c
14885 Set which components to trace. By default it traces first three components.
14886
14887 @item g
14888 Draw trace grid. By default is enabled.
14889
14890 @item st
14891 Draw some statistics. By default is enabled.
14892
14893 @item sc
14894 Draw scope. By default is enabled.
14895 @end table
14896
14897 @subsection Commands
14898 This filter supports same @ref{commands} as options.
14899 The command accepts the same syntax of the corresponding option.
14900
14901 If the specified expression is not valid, it is kept at its current
14902 value.
14903
14904 @subsection Examples
14905
14906 @itemize
14907 @item
14908 Inspect full first row of video frame.
14909 @example
14910 oscilloscope=x=0.5:y=0:s=1
14911 @end example
14912
14913 @item
14914 Inspect full last row of video frame.
14915 @example
14916 oscilloscope=x=0.5:y=1:s=1
14917 @end example
14918
14919 @item
14920 Inspect full 5th line of video frame of height 1080.
14921 @example
14922 oscilloscope=x=0.5:y=5/1080:s=1
14923 @end example
14924
14925 @item
14926 Inspect full last column of video frame.
14927 @example
14928 oscilloscope=x=1:y=0.5:s=1:t=1
14929 @end example
14930
14931 @end itemize
14932
14933 @anchor{overlay}
14934 @section overlay
14935
14936 Overlay one video on top of another.
14937
14938 It takes two inputs and has one output. The first input is the "main"
14939 video on which the second input is overlaid.
14940
14941 It accepts the following parameters:
14942
14943 A description of the accepted options follows.
14944
14945 @table @option
14946 @item x
14947 @item y
14948 Set the expression for the x and y coordinates of the overlaid video
14949 on the main video. Default value is "0" for both expressions. In case
14950 the expression is invalid, it is set to a huge value (meaning that the
14951 overlay will not be displayed within the output visible area).
14952
14953 @item eof_action
14954 See @ref{framesync}.
14955
14956 @item eval
14957 Set when the expressions for @option{x}, and @option{y} are evaluated.
14958
14959 It accepts the following values:
14960 @table @samp
14961 @item init
14962 only evaluate expressions once during the filter initialization or
14963 when a command is processed
14964
14965 @item frame
14966 evaluate expressions for each incoming frame
14967 @end table
14968
14969 Default value is @samp{frame}.
14970
14971 @item shortest
14972 See @ref{framesync}.
14973
14974 @item format
14975 Set the format for the output video.
14976
14977 It accepts the following values:
14978 @table @samp
14979 @item yuv420
14980 force YUV420 output
14981
14982 @item yuv420p10
14983 force YUV420p10 output
14984
14985 @item yuv422
14986 force YUV422 output
14987
14988 @item yuv422p10
14989 force YUV422p10 output
14990
14991 @item yuv444
14992 force YUV444 output
14993
14994 @item rgb
14995 force packed RGB output
14996
14997 @item gbrp
14998 force planar RGB output
14999
15000 @item auto
15001 automatically pick format
15002 @end table
15003
15004 Default value is @samp{yuv420}.
15005
15006 @item repeatlast
15007 See @ref{framesync}.
15008
15009 @item alpha
15010 Set format of alpha of the overlaid video, it can be @var{straight} or
15011 @var{premultiplied}. Default is @var{straight}.
15012 @end table
15013
15014 The @option{x}, and @option{y} expressions can contain the following
15015 parameters.
15016
15017 @table @option
15018 @item main_w, W
15019 @item main_h, H
15020 The main input width and height.
15021
15022 @item overlay_w, w
15023 @item overlay_h, h
15024 The overlay input width and height.
15025
15026 @item x
15027 @item y
15028 The computed values for @var{x} and @var{y}. They are evaluated for
15029 each new frame.
15030
15031 @item hsub
15032 @item vsub
15033 horizontal and vertical chroma subsample values of the output
15034 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
15035 @var{vsub} is 1.
15036
15037 @item n
15038 the number of input frame, starting from 0
15039
15040 @item pos
15041 the position in the file of the input frame, NAN if unknown
15042
15043 @item t
15044 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
15045
15046 @end table
15047
15048 This filter also supports the @ref{framesync} options.
15049
15050 Note that the @var{n}, @var{pos}, @var{t} variables are available only
15051 when evaluation is done @emph{per frame}, and will evaluate to NAN
15052 when @option{eval} is set to @samp{init}.
15053
15054 Be aware that frames are taken from each input video in timestamp
15055 order, hence, if their initial timestamps differ, it is a good idea
15056 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
15057 have them begin in the same zero timestamp, as the example for
15058 the @var{movie} filter does.
15059
15060 You can chain together more overlays but you should test the
15061 efficiency of such approach.
15062
15063 @subsection Commands
15064
15065 This filter supports the following commands:
15066 @table @option
15067 @item x
15068 @item y
15069 Modify the x and y of the overlay input.
15070 The command accepts the same syntax of the corresponding option.
15071
15072 If the specified expression is not valid, it is kept at its current
15073 value.
15074 @end table
15075
15076 @subsection Examples
15077
15078 @itemize
15079 @item
15080 Draw the overlay at 10 pixels from the bottom right corner of the main
15081 video:
15082 @example
15083 overlay=main_w-overlay_w-10:main_h-overlay_h-10
15084 @end example
15085
15086 Using named options the example above becomes:
15087 @example
15088 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
15089 @end example
15090
15091 @item
15092 Insert a transparent PNG logo in the bottom left corner of the input,
15093 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
15094 @example
15095 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
15096 @end example
15097
15098 @item
15099 Insert 2 different transparent PNG logos (second logo on bottom
15100 right corner) using the @command{ffmpeg} tool:
15101 @example
15102 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
15103 @end example
15104
15105 @item
15106 Add a transparent color layer on top of the main video; @code{WxH}
15107 must specify the size of the main input to the overlay filter:
15108 @example
15109 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
15110 @end example
15111
15112 @item
15113 Play an original video and a filtered version (here with the deshake
15114 filter) side by side using the @command{ffplay} tool:
15115 @example
15116 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
15117 @end example
15118
15119 The above command is the same as:
15120 @example
15121 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
15122 @end example
15123
15124 @item
15125 Make a sliding overlay appearing from the left to the right top part of the
15126 screen starting since time 2:
15127 @example
15128 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
15129 @end example
15130
15131 @item
15132 Compose output by putting two input videos side to side:
15133 @example
15134 ffmpeg -i left.avi -i right.avi -filter_complex "
15135 nullsrc=size=200x100 [background];
15136 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
15137 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
15138 [background][left]       overlay=shortest=1       [background+left];
15139 [background+left][right] overlay=shortest=1:x=100 [left+right]
15140 "
15141 @end example
15142
15143 @item
15144 Mask 10-20 seconds of a video by applying the delogo filter to a section
15145 @example
15146 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
15147 -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]'
15148 masked.avi
15149 @end example
15150
15151 @item
15152 Chain several overlays in cascade:
15153 @example
15154 nullsrc=s=200x200 [bg];
15155 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
15156 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
15157 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
15158 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
15159 [in3] null,       [mid2] overlay=100:100 [out0]
15160 @end example
15161
15162 @end itemize
15163
15164 @anchor{overlay_cuda}
15165 @section overlay_cuda
15166
15167 Overlay one video on top of another.
15168
15169 This is the CUDA variant of the @ref{overlay} filter.
15170 It only accepts CUDA frames. The underlying input pixel formats have to match.
15171
15172 It takes two inputs and has one output. The first input is the "main"
15173 video on which the second input is overlaid.
15174
15175 It accepts the following parameters:
15176
15177 @table @option
15178 @item x
15179 @item y
15180 Set the x and y coordinates of the overlaid video on the main video.
15181 Default value is "0" for both expressions.
15182
15183 @item eof_action
15184 See @ref{framesync}.
15185
15186 @item shortest
15187 See @ref{framesync}.
15188
15189 @item repeatlast
15190 See @ref{framesync}.
15191
15192 @end table
15193
15194 This filter also supports the @ref{framesync} options.
15195
15196 @section owdenoise
15197
15198 Apply Overcomplete Wavelet denoiser.
15199
15200 The filter accepts the following options:
15201
15202 @table @option
15203 @item depth
15204 Set depth.
15205
15206 Larger depth values will denoise lower frequency components more, but
15207 slow down filtering.
15208
15209 Must be an int in the range 8-16, default is @code{8}.
15210
15211 @item luma_strength, ls
15212 Set luma strength.
15213
15214 Must be a double value in the range 0-1000, default is @code{1.0}.
15215
15216 @item chroma_strength, cs
15217 Set chroma strength.
15218
15219 Must be a double value in the range 0-1000, default is @code{1.0}.
15220 @end table
15221
15222 @anchor{pad}
15223 @section pad
15224
15225 Add paddings to the input image, and place the original input at the
15226 provided @var{x}, @var{y} coordinates.
15227
15228 It accepts the following parameters:
15229
15230 @table @option
15231 @item width, w
15232 @item height, h
15233 Specify an expression for the size of the output image with the
15234 paddings added. If the value for @var{width} or @var{height} is 0, the
15235 corresponding input size is used for the output.
15236
15237 The @var{width} expression can reference the value set by the
15238 @var{height} expression, and vice versa.
15239
15240 The default value of @var{width} and @var{height} is 0.
15241
15242 @item x
15243 @item y
15244 Specify the offsets to place the input image at within the padded area,
15245 with respect to the top/left border of the output image.
15246
15247 The @var{x} expression can reference the value set by the @var{y}
15248 expression, and vice versa.
15249
15250 The default value of @var{x} and @var{y} is 0.
15251
15252 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
15253 so the input image is centered on the padded area.
15254
15255 @item color
15256 Specify the color of the padded area. For the syntax of this option,
15257 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
15258 manual,ffmpeg-utils}.
15259
15260 The default value of @var{color} is "black".
15261
15262 @item eval
15263 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
15264
15265 It accepts the following values:
15266
15267 @table @samp
15268 @item init
15269 Only evaluate expressions once during the filter initialization or when
15270 a command is processed.
15271
15272 @item frame
15273 Evaluate expressions for each incoming frame.
15274
15275 @end table
15276
15277 Default value is @samp{init}.
15278
15279 @item aspect
15280 Pad to aspect instead to a resolution.
15281
15282 @end table
15283
15284 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
15285 options are expressions containing the following constants:
15286
15287 @table @option
15288 @item in_w
15289 @item in_h
15290 The input video width and height.
15291
15292 @item iw
15293 @item ih
15294 These are the same as @var{in_w} and @var{in_h}.
15295
15296 @item out_w
15297 @item out_h
15298 The output width and height (the size of the padded area), as
15299 specified by the @var{width} and @var{height} expressions.
15300
15301 @item ow
15302 @item oh
15303 These are the same as @var{out_w} and @var{out_h}.
15304
15305 @item x
15306 @item y
15307 The x and y offsets as specified by the @var{x} and @var{y}
15308 expressions, or NAN if not yet specified.
15309
15310 @item a
15311 same as @var{iw} / @var{ih}
15312
15313 @item sar
15314 input sample aspect ratio
15315
15316 @item dar
15317 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
15318
15319 @item hsub
15320 @item vsub
15321 The horizontal and vertical chroma subsample values. For example for the
15322 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15323 @end table
15324
15325 @subsection Examples
15326
15327 @itemize
15328 @item
15329 Add paddings with the color "violet" to the input video. The output video
15330 size is 640x480, and the top-left corner of the input video is placed at
15331 column 0, row 40
15332 @example
15333 pad=640:480:0:40:violet
15334 @end example
15335
15336 The example above is equivalent to the following command:
15337 @example
15338 pad=width=640:height=480:x=0:y=40:color=violet
15339 @end example
15340
15341 @item
15342 Pad the input to get an output with dimensions increased by 3/2,
15343 and put the input video at the center of the padded area:
15344 @example
15345 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
15346 @end example
15347
15348 @item
15349 Pad the input to get a squared output with size equal to the maximum
15350 value between the input width and height, and put the input video at
15351 the center of the padded area:
15352 @example
15353 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
15354 @end example
15355
15356 @item
15357 Pad the input to get a final w/h ratio of 16:9:
15358 @example
15359 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
15360 @end example
15361
15362 @item
15363 In case of anamorphic video, in order to set the output display aspect
15364 correctly, it is necessary to use @var{sar} in the expression,
15365 according to the relation:
15366 @example
15367 (ih * X / ih) * sar = output_dar
15368 X = output_dar / sar
15369 @end example
15370
15371 Thus the previous example needs to be modified to:
15372 @example
15373 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
15374 @end example
15375
15376 @item
15377 Double the output size and put the input video in the bottom-right
15378 corner of the output padded area:
15379 @example
15380 pad="2*iw:2*ih:ow-iw:oh-ih"
15381 @end example
15382 @end itemize
15383
15384 @anchor{palettegen}
15385 @section palettegen
15386
15387 Generate one palette for a whole video stream.
15388
15389 It accepts the following options:
15390
15391 @table @option
15392 @item max_colors
15393 Set the maximum number of colors to quantize in the palette.
15394 Note: the palette will still contain 256 colors; the unused palette entries
15395 will be black.
15396
15397 @item reserve_transparent
15398 Create a palette of 255 colors maximum and reserve the last one for
15399 transparency. Reserving the transparency color is useful for GIF optimization.
15400 If not set, the maximum of colors in the palette will be 256. You probably want
15401 to disable this option for a standalone image.
15402 Set by default.
15403
15404 @item transparency_color
15405 Set the color that will be used as background for transparency.
15406
15407 @item stats_mode
15408 Set statistics mode.
15409
15410 It accepts the following values:
15411 @table @samp
15412 @item full
15413 Compute full frame histograms.
15414 @item diff
15415 Compute histograms only for the part that differs from previous frame. This
15416 might be relevant to give more importance to the moving part of your input if
15417 the background is static.
15418 @item single
15419 Compute new histogram for each frame.
15420 @end table
15421
15422 Default value is @var{full}.
15423 @end table
15424
15425 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
15426 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
15427 color quantization of the palette. This information is also visible at
15428 @var{info} logging level.
15429
15430 @subsection Examples
15431
15432 @itemize
15433 @item
15434 Generate a representative palette of a given video using @command{ffmpeg}:
15435 @example
15436 ffmpeg -i input.mkv -vf palettegen palette.png
15437 @end example
15438 @end itemize
15439
15440 @section paletteuse
15441
15442 Use a palette to downsample an input video stream.
15443
15444 The filter takes two inputs: one video stream and a palette. The palette must
15445 be a 256 pixels image.
15446
15447 It accepts the following options:
15448
15449 @table @option
15450 @item dither
15451 Select dithering mode. Available algorithms are:
15452 @table @samp
15453 @item bayer
15454 Ordered 8x8 bayer dithering (deterministic)
15455 @item heckbert
15456 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
15457 Note: this dithering is sometimes considered "wrong" and is included as a
15458 reference.
15459 @item floyd_steinberg
15460 Floyd and Steingberg dithering (error diffusion)
15461 @item sierra2
15462 Frankie Sierra dithering v2 (error diffusion)
15463 @item sierra2_4a
15464 Frankie Sierra dithering v2 "Lite" (error diffusion)
15465 @end table
15466
15467 Default is @var{sierra2_4a}.
15468
15469 @item bayer_scale
15470 When @var{bayer} dithering is selected, this option defines the scale of the
15471 pattern (how much the crosshatch pattern is visible). A low value means more
15472 visible pattern for less banding, and higher value means less visible pattern
15473 at the cost of more banding.
15474
15475 The option must be an integer value in the range [0,5]. Default is @var{2}.
15476
15477 @item diff_mode
15478 If set, define the zone to process
15479
15480 @table @samp
15481 @item rectangle
15482 Only the changing rectangle will be reprocessed. This is similar to GIF
15483 cropping/offsetting compression mechanism. This option can be useful for speed
15484 if only a part of the image is changing, and has use cases such as limiting the
15485 scope of the error diffusal @option{dither} to the rectangle that bounds the
15486 moving scene (it leads to more deterministic output if the scene doesn't change
15487 much, and as a result less moving noise and better GIF compression).
15488 @end table
15489
15490 Default is @var{none}.
15491
15492 @item new
15493 Take new palette for each output frame.
15494
15495 @item alpha_threshold
15496 Sets the alpha threshold for transparency. Alpha values above this threshold
15497 will be treated as completely opaque, and values below this threshold will be
15498 treated as completely transparent.
15499
15500 The option must be an integer value in the range [0,255]. Default is @var{128}.
15501 @end table
15502
15503 @subsection Examples
15504
15505 @itemize
15506 @item
15507 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
15508 using @command{ffmpeg}:
15509 @example
15510 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
15511 @end example
15512 @end itemize
15513
15514 @section perspective
15515
15516 Correct perspective of video not recorded perpendicular to the screen.
15517
15518 A description of the accepted parameters follows.
15519
15520 @table @option
15521 @item x0
15522 @item y0
15523 @item x1
15524 @item y1
15525 @item x2
15526 @item y2
15527 @item x3
15528 @item y3
15529 Set coordinates expression for top left, top right, bottom left and bottom right corners.
15530 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
15531 If the @code{sense} option is set to @code{source}, then the specified points will be sent
15532 to the corners of the destination. If the @code{sense} option is set to @code{destination},
15533 then the corners of the source will be sent to the specified coordinates.
15534
15535 The expressions can use the following variables:
15536
15537 @table @option
15538 @item W
15539 @item H
15540 the width and height of video frame.
15541 @item in
15542 Input frame count.
15543 @item on
15544 Output frame count.
15545 @end table
15546
15547 @item interpolation
15548 Set interpolation for perspective correction.
15549
15550 It accepts the following values:
15551 @table @samp
15552 @item linear
15553 @item cubic
15554 @end table
15555
15556 Default value is @samp{linear}.
15557
15558 @item sense
15559 Set interpretation of coordinate options.
15560
15561 It accepts the following values:
15562 @table @samp
15563 @item 0, source
15564
15565 Send point in the source specified by the given coordinates to
15566 the corners of the destination.
15567
15568 @item 1, destination
15569
15570 Send the corners of the source to the point in the destination specified
15571 by the given coordinates.
15572
15573 Default value is @samp{source}.
15574 @end table
15575
15576 @item eval
15577 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
15578
15579 It accepts the following values:
15580 @table @samp
15581 @item init
15582 only evaluate expressions once during the filter initialization or
15583 when a command is processed
15584
15585 @item frame
15586 evaluate expressions for each incoming frame
15587 @end table
15588
15589 Default value is @samp{init}.
15590 @end table
15591
15592 @section phase
15593
15594 Delay interlaced video by one field time so that the field order changes.
15595
15596 The intended use is to fix PAL movies that have been captured with the
15597 opposite field order to the film-to-video transfer.
15598
15599 A description of the accepted parameters follows.
15600
15601 @table @option
15602 @item mode
15603 Set phase mode.
15604
15605 It accepts the following values:
15606 @table @samp
15607 @item t
15608 Capture field order top-first, transfer bottom-first.
15609 Filter will delay the bottom field.
15610
15611 @item b
15612 Capture field order bottom-first, transfer top-first.
15613 Filter will delay the top field.
15614
15615 @item p
15616 Capture and transfer with the same field order. This mode only exists
15617 for the documentation of the other options to refer to, but if you
15618 actually select it, the filter will faithfully do nothing.
15619
15620 @item a
15621 Capture field order determined automatically by field flags, transfer
15622 opposite.
15623 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
15624 basis using field flags. If no field information is available,
15625 then this works just like @samp{u}.
15626
15627 @item u
15628 Capture unknown or varying, transfer opposite.
15629 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
15630 analyzing the images and selecting the alternative that produces best
15631 match between the fields.
15632
15633 @item T
15634 Capture top-first, transfer unknown or varying.
15635 Filter selects among @samp{t} and @samp{p} using image analysis.
15636
15637 @item B
15638 Capture bottom-first, transfer unknown or varying.
15639 Filter selects among @samp{b} and @samp{p} using image analysis.
15640
15641 @item A
15642 Capture determined by field flags, transfer unknown or varying.
15643 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
15644 image analysis. If no field information is available, then this works just
15645 like @samp{U}. This is the default mode.
15646
15647 @item U
15648 Both capture and transfer unknown or varying.
15649 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
15650 @end table
15651 @end table
15652
15653 @section photosensitivity
15654 Reduce various flashes in video, so to help users with epilepsy.
15655
15656 It accepts the following options:
15657 @table @option
15658 @item frames, f
15659 Set how many frames to use when filtering. Default is 30.
15660
15661 @item threshold, t
15662 Set detection threshold factor. Default is 1.
15663 Lower is stricter.
15664
15665 @item skip
15666 Set how many pixels to skip when sampling frames. Default is 1.
15667 Allowed range is from 1 to 1024.
15668
15669 @item bypass
15670 Leave frames unchanged. Default is disabled.
15671 @end table
15672
15673 @section pixdesctest
15674
15675 Pixel format descriptor test filter, mainly useful for internal
15676 testing. The output video should be equal to the input video.
15677
15678 For example:
15679 @example
15680 format=monow, pixdesctest
15681 @end example
15682
15683 can be used to test the monowhite pixel format descriptor definition.
15684
15685 @section pixscope
15686
15687 Display sample values of color channels. Mainly useful for checking color
15688 and levels. Minimum supported resolution is 640x480.
15689
15690 The filters accept the following options:
15691
15692 @table @option
15693 @item x
15694 Set scope X position, relative offset on X axis.
15695
15696 @item y
15697 Set scope Y position, relative offset on Y axis.
15698
15699 @item w
15700 Set scope width.
15701
15702 @item h
15703 Set scope height.
15704
15705 @item o
15706 Set window opacity. This window also holds statistics about pixel area.
15707
15708 @item wx
15709 Set window X position, relative offset on X axis.
15710
15711 @item wy
15712 Set window Y position, relative offset on Y axis.
15713 @end table
15714
15715 @section pp
15716
15717 Enable the specified chain of postprocessing subfilters using libpostproc. This
15718 library should be automatically selected with a GPL build (@code{--enable-gpl}).
15719 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
15720 Each subfilter and some options have a short and a long name that can be used
15721 interchangeably, i.e. dr/dering are the same.
15722
15723 The filters accept the following options:
15724
15725 @table @option
15726 @item subfilters
15727 Set postprocessing subfilters string.
15728 @end table
15729
15730 All subfilters share common options to determine their scope:
15731
15732 @table @option
15733 @item a/autoq
15734 Honor the quality commands for this subfilter.
15735
15736 @item c/chrom
15737 Do chrominance filtering, too (default).
15738
15739 @item y/nochrom
15740 Do luminance filtering only (no chrominance).
15741
15742 @item n/noluma
15743 Do chrominance filtering only (no luminance).
15744 @end table
15745
15746 These options can be appended after the subfilter name, separated by a '|'.
15747
15748 Available subfilters are:
15749
15750 @table @option
15751 @item hb/hdeblock[|difference[|flatness]]
15752 Horizontal deblocking filter
15753 @table @option
15754 @item difference
15755 Difference factor where higher values mean more deblocking (default: @code{32}).
15756 @item flatness
15757 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15758 @end table
15759
15760 @item vb/vdeblock[|difference[|flatness]]
15761 Vertical deblocking filter
15762 @table @option
15763 @item difference
15764 Difference factor where higher values mean more deblocking (default: @code{32}).
15765 @item flatness
15766 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15767 @end table
15768
15769 @item ha/hadeblock[|difference[|flatness]]
15770 Accurate horizontal deblocking filter
15771 @table @option
15772 @item difference
15773 Difference factor where higher values mean more deblocking (default: @code{32}).
15774 @item flatness
15775 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15776 @end table
15777
15778 @item va/vadeblock[|difference[|flatness]]
15779 Accurate vertical deblocking filter
15780 @table @option
15781 @item difference
15782 Difference factor where higher values mean more deblocking (default: @code{32}).
15783 @item flatness
15784 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15785 @end table
15786 @end table
15787
15788 The horizontal and vertical deblocking filters share the difference and
15789 flatness values so you cannot set different horizontal and vertical
15790 thresholds.
15791
15792 @table @option
15793 @item h1/x1hdeblock
15794 Experimental horizontal deblocking filter
15795
15796 @item v1/x1vdeblock
15797 Experimental vertical deblocking filter
15798
15799 @item dr/dering
15800 Deringing filter
15801
15802 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
15803 @table @option
15804 @item threshold1
15805 larger -> stronger filtering
15806 @item threshold2
15807 larger -> stronger filtering
15808 @item threshold3
15809 larger -> stronger filtering
15810 @end table
15811
15812 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
15813 @table @option
15814 @item f/fullyrange
15815 Stretch luminance to @code{0-255}.
15816 @end table
15817
15818 @item lb/linblenddeint
15819 Linear blend deinterlacing filter that deinterlaces the given block by
15820 filtering all lines with a @code{(1 2 1)} filter.
15821
15822 @item li/linipoldeint
15823 Linear interpolating deinterlacing filter that deinterlaces the given block by
15824 linearly interpolating every second line.
15825
15826 @item ci/cubicipoldeint
15827 Cubic interpolating deinterlacing filter deinterlaces the given block by
15828 cubically interpolating every second line.
15829
15830 @item md/mediandeint
15831 Median deinterlacing filter that deinterlaces the given block by applying a
15832 median filter to every second line.
15833
15834 @item fd/ffmpegdeint
15835 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
15836 second line with a @code{(-1 4 2 4 -1)} filter.
15837
15838 @item l5/lowpass5
15839 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
15840 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
15841
15842 @item fq/forceQuant[|quantizer]
15843 Overrides the quantizer table from the input with the constant quantizer you
15844 specify.
15845 @table @option
15846 @item quantizer
15847 Quantizer to use
15848 @end table
15849
15850 @item de/default
15851 Default pp filter combination (@code{hb|a,vb|a,dr|a})
15852
15853 @item fa/fast
15854 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
15855
15856 @item ac
15857 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
15858 @end table
15859
15860 @subsection Examples
15861
15862 @itemize
15863 @item
15864 Apply horizontal and vertical deblocking, deringing and automatic
15865 brightness/contrast:
15866 @example
15867 pp=hb/vb/dr/al
15868 @end example
15869
15870 @item
15871 Apply default filters without brightness/contrast correction:
15872 @example
15873 pp=de/-al
15874 @end example
15875
15876 @item
15877 Apply default filters and temporal denoiser:
15878 @example
15879 pp=default/tmpnoise|1|2|3
15880 @end example
15881
15882 @item
15883 Apply deblocking on luminance only, and switch vertical deblocking on or off
15884 automatically depending on available CPU time:
15885 @example
15886 pp=hb|y/vb|a
15887 @end example
15888 @end itemize
15889
15890 @section pp7
15891 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
15892 similar to spp = 6 with 7 point DCT, where only the center sample is
15893 used after IDCT.
15894
15895 The filter accepts the following options:
15896
15897 @table @option
15898 @item qp
15899 Force a constant quantization parameter. It accepts an integer in range
15900 0 to 63. If not set, the filter will use the QP from the video stream
15901 (if available).
15902
15903 @item mode
15904 Set thresholding mode. Available modes are:
15905
15906 @table @samp
15907 @item hard
15908 Set hard thresholding.
15909 @item soft
15910 Set soft thresholding (better de-ringing effect, but likely blurrier).
15911 @item medium
15912 Set medium thresholding (good results, default).
15913 @end table
15914 @end table
15915
15916 @section premultiply
15917 Apply alpha premultiply effect to input video stream using first plane
15918 of second stream as alpha.
15919
15920 Both streams must have same dimensions and same pixel format.
15921
15922 The filter accepts the following option:
15923
15924 @table @option
15925 @item planes
15926 Set which planes will be processed, unprocessed planes will be copied.
15927 By default value 0xf, all planes will be processed.
15928
15929 @item inplace
15930 Do not require 2nd input for processing, instead use alpha plane from input stream.
15931 @end table
15932
15933 @section prewitt
15934 Apply prewitt operator to input video stream.
15935
15936 The filter accepts the following option:
15937
15938 @table @option
15939 @item planes
15940 Set which planes will be processed, unprocessed planes will be copied.
15941 By default value 0xf, all planes will be processed.
15942
15943 @item scale
15944 Set value which will be multiplied with filtered result.
15945
15946 @item delta
15947 Set value which will be added to filtered result.
15948 @end table
15949
15950 @section pseudocolor
15951
15952 Alter frame colors in video with pseudocolors.
15953
15954 This filter accepts the following options:
15955
15956 @table @option
15957 @item c0
15958 set pixel first component expression
15959
15960 @item c1
15961 set pixel second component expression
15962
15963 @item c2
15964 set pixel third component expression
15965
15966 @item c3
15967 set pixel fourth component expression, corresponds to the alpha component
15968
15969 @item i
15970 set component to use as base for altering colors
15971 @end table
15972
15973 Each of them specifies the expression to use for computing the lookup table for
15974 the corresponding pixel component values.
15975
15976 The expressions can contain the following constants and functions:
15977
15978 @table @option
15979 @item w
15980 @item h
15981 The input width and height.
15982
15983 @item val
15984 The input value for the pixel component.
15985
15986 @item ymin, umin, vmin, amin
15987 The minimum allowed component value.
15988
15989 @item ymax, umax, vmax, amax
15990 The maximum allowed component value.
15991 @end table
15992
15993 All expressions default to "val".
15994
15995 @subsection Examples
15996
15997 @itemize
15998 @item
15999 Change too high luma values to gradient:
16000 @example
16001 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'"
16002 @end example
16003 @end itemize
16004
16005 @section psnr
16006
16007 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
16008 Ratio) between two input videos.
16009
16010 This filter takes in input two input videos, the first input is
16011 considered the "main" source and is passed unchanged to the
16012 output. The second input is used as a "reference" video for computing
16013 the PSNR.
16014
16015 Both video inputs must have the same resolution and pixel format for
16016 this filter to work correctly. Also it assumes that both inputs
16017 have the same number of frames, which are compared one by one.
16018
16019 The obtained average PSNR is printed through the logging system.
16020
16021 The filter stores the accumulated MSE (mean squared error) of each
16022 frame, and at the end of the processing it is averaged across all frames
16023 equally, and the following formula is applied to obtain the PSNR:
16024
16025 @example
16026 PSNR = 10*log10(MAX^2/MSE)
16027 @end example
16028
16029 Where MAX is the average of the maximum values of each component of the
16030 image.
16031
16032 The description of the accepted parameters follows.
16033
16034 @table @option
16035 @item stats_file, f
16036 If specified the filter will use the named file to save the PSNR of
16037 each individual frame. When filename equals "-" the data is sent to
16038 standard output.
16039
16040 @item stats_version
16041 Specifies which version of the stats file format to use. Details of
16042 each format are written below.
16043 Default value is 1.
16044
16045 @item stats_add_max
16046 Determines whether the max value is output to the stats log.
16047 Default value is 0.
16048 Requires stats_version >= 2. If this is set and stats_version < 2,
16049 the filter will return an error.
16050 @end table
16051
16052 This filter also supports the @ref{framesync} options.
16053
16054 The file printed if @var{stats_file} is selected, contains a sequence of
16055 key/value pairs of the form @var{key}:@var{value} for each compared
16056 couple of frames.
16057
16058 If a @var{stats_version} greater than 1 is specified, a header line precedes
16059 the list of per-frame-pair stats, with key value pairs following the frame
16060 format with the following parameters:
16061
16062 @table @option
16063 @item psnr_log_version
16064 The version of the log file format. Will match @var{stats_version}.
16065
16066 @item fields
16067 A comma separated list of the per-frame-pair parameters included in
16068 the log.
16069 @end table
16070
16071 A description of each shown per-frame-pair parameter follows:
16072
16073 @table @option
16074 @item n
16075 sequential number of the input frame, starting from 1
16076
16077 @item mse_avg
16078 Mean Square Error pixel-by-pixel average difference of the compared
16079 frames, averaged over all the image components.
16080
16081 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
16082 Mean Square Error pixel-by-pixel average difference of the compared
16083 frames for the component specified by the suffix.
16084
16085 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
16086 Peak Signal to Noise ratio of the compared frames for the component
16087 specified by the suffix.
16088
16089 @item max_avg, max_y, max_u, max_v
16090 Maximum allowed value for each channel, and average over all
16091 channels.
16092 @end table
16093
16094 @subsection Examples
16095 @itemize
16096 @item
16097 For example:
16098 @example
16099 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
16100 [main][ref] psnr="stats_file=stats.log" [out]
16101 @end example
16102
16103 On this example the input file being processed is compared with the
16104 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
16105 is stored in @file{stats.log}.
16106
16107 @item
16108 Another example with different containers:
16109 @example
16110 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 -
16111 @end example
16112 @end itemize
16113
16114 @anchor{pullup}
16115 @section pullup
16116
16117 Pulldown reversal (inverse telecine) filter, capable of handling mixed
16118 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
16119 content.
16120
16121 The pullup filter is designed to take advantage of future context in making
16122 its decisions. This filter is stateless in the sense that it does not lock
16123 onto a pattern to follow, but it instead looks forward to the following
16124 fields in order to identify matches and rebuild progressive frames.
16125
16126 To produce content with an even framerate, insert the fps filter after
16127 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
16128 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
16129
16130 The filter accepts the following options:
16131
16132 @table @option
16133 @item jl
16134 @item jr
16135 @item jt
16136 @item jb
16137 These options set the amount of "junk" to ignore at the left, right, top, and
16138 bottom of the image, respectively. Left and right are in units of 8 pixels,
16139 while top and bottom are in units of 2 lines.
16140 The default is 8 pixels on each side.
16141
16142 @item sb
16143 Set the strict breaks. Setting this option to 1 will reduce the chances of
16144 filter generating an occasional mismatched frame, but it may also cause an
16145 excessive number of frames to be dropped during high motion sequences.
16146 Conversely, setting it to -1 will make filter match fields more easily.
16147 This may help processing of video where there is slight blurring between
16148 the fields, but may also cause there to be interlaced frames in the output.
16149 Default value is @code{0}.
16150
16151 @item mp
16152 Set the metric plane to use. It accepts the following values:
16153 @table @samp
16154 @item l
16155 Use luma plane.
16156
16157 @item u
16158 Use chroma blue plane.
16159
16160 @item v
16161 Use chroma red plane.
16162 @end table
16163
16164 This option may be set to use chroma plane instead of the default luma plane
16165 for doing filter's computations. This may improve accuracy on very clean
16166 source material, but more likely will decrease accuracy, especially if there
16167 is chroma noise (rainbow effect) or any grayscale video.
16168 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
16169 load and make pullup usable in realtime on slow machines.
16170 @end table
16171
16172 For best results (without duplicated frames in the output file) it is
16173 necessary to change the output frame rate. For example, to inverse
16174 telecine NTSC input:
16175 @example
16176 ffmpeg -i input -vf pullup -r 24000/1001 ...
16177 @end example
16178
16179 @section qp
16180
16181 Change video quantization parameters (QP).
16182
16183 The filter accepts the following option:
16184
16185 @table @option
16186 @item qp
16187 Set expression for quantization parameter.
16188 @end table
16189
16190 The expression is evaluated through the eval API and can contain, among others,
16191 the following constants:
16192
16193 @table @var
16194 @item known
16195 1 if index is not 129, 0 otherwise.
16196
16197 @item qp
16198 Sequential index starting from -129 to 128.
16199 @end table
16200
16201 @subsection Examples
16202
16203 @itemize
16204 @item
16205 Some equation like:
16206 @example
16207 qp=2+2*sin(PI*qp)
16208 @end example
16209 @end itemize
16210
16211 @section random
16212
16213 Flush video frames from internal cache of frames into a random order.
16214 No frame is discarded.
16215 Inspired by @ref{frei0r} nervous filter.
16216
16217 @table @option
16218 @item frames
16219 Set size in number of frames of internal cache, in range from @code{2} to
16220 @code{512}. Default is @code{30}.
16221
16222 @item seed
16223 Set seed for random number generator, must be an integer included between
16224 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
16225 less than @code{0}, the filter will try to use a good random seed on a
16226 best effort basis.
16227 @end table
16228
16229 @section readeia608
16230
16231 Read closed captioning (EIA-608) information from the top lines of a video frame.
16232
16233 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
16234 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
16235 with EIA-608 data (starting from 0). A description of each metadata value follows:
16236
16237 @table @option
16238 @item lavfi.readeia608.X.cc
16239 The two bytes stored as EIA-608 data (printed in hexadecimal).
16240
16241 @item lavfi.readeia608.X.line
16242 The number of the line on which the EIA-608 data was identified and read.
16243 @end table
16244
16245 This filter accepts the following options:
16246
16247 @table @option
16248 @item scan_min
16249 Set the line to start scanning for EIA-608 data. Default is @code{0}.
16250
16251 @item scan_max
16252 Set the line to end scanning for EIA-608 data. Default is @code{29}.
16253
16254 @item spw
16255 Set the ratio of width reserved for sync code detection.
16256 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
16257
16258 @item chp
16259 Enable checking the parity bit. In the event of a parity error, the filter will output
16260 @code{0x00} for that character. Default is false.
16261
16262 @item lp
16263 Lowpass lines prior to further processing. Default is enabled.
16264 @end table
16265
16266 @subsection Commands
16267
16268 This filter supports the all above options as @ref{commands}.
16269
16270 @subsection Examples
16271
16272 @itemize
16273 @item
16274 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
16275 @example
16276 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
16277 @end example
16278 @end itemize
16279
16280 @section readvitc
16281
16282 Read vertical interval timecode (VITC) information from the top lines of a
16283 video frame.
16284
16285 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
16286 timecode value, if a valid timecode has been detected. Further metadata key
16287 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
16288 timecode data has been found or not.
16289
16290 This filter accepts the following options:
16291
16292 @table @option
16293 @item scan_max
16294 Set the maximum number of lines to scan for VITC data. If the value is set to
16295 @code{-1} the full video frame is scanned. Default is @code{45}.
16296
16297 @item thr_b
16298 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
16299 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
16300
16301 @item thr_w
16302 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
16303 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
16304 @end table
16305
16306 @subsection Examples
16307
16308 @itemize
16309 @item
16310 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
16311 draw @code{--:--:--:--} as a placeholder:
16312 @example
16313 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
16314 @end example
16315 @end itemize
16316
16317 @section remap
16318
16319 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
16320
16321 Destination pixel at position (X, Y) will be picked from source (x, y) position
16322 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
16323 value for pixel will be used for destination pixel.
16324
16325 Xmap and Ymap input video streams must be of same dimensions. Output video stream
16326 will have Xmap/Ymap video stream dimensions.
16327 Xmap and Ymap input video streams are 16bit depth, single channel.
16328
16329 @table @option
16330 @item format
16331 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
16332 Default is @code{color}.
16333
16334 @item fill
16335 Specify the color of the unmapped pixels. For the syntax of this option,
16336 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
16337 manual,ffmpeg-utils}. Default color is @code{black}.
16338 @end table
16339
16340 @section removegrain
16341
16342 The removegrain filter is a spatial denoiser for progressive video.
16343
16344 @table @option
16345 @item m0
16346 Set mode for the first plane.
16347
16348 @item m1
16349 Set mode for the second plane.
16350
16351 @item m2
16352 Set mode for the third plane.
16353
16354 @item m3
16355 Set mode for the fourth plane.
16356 @end table
16357
16358 Range of mode is from 0 to 24. Description of each mode follows:
16359
16360 @table @var
16361 @item 0
16362 Leave input plane unchanged. Default.
16363
16364 @item 1
16365 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
16366
16367 @item 2
16368 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
16369
16370 @item 3
16371 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
16372
16373 @item 4
16374 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
16375 This is equivalent to a median filter.
16376
16377 @item 5
16378 Line-sensitive clipping giving the minimal change.
16379
16380 @item 6
16381 Line-sensitive clipping, intermediate.
16382
16383 @item 7
16384 Line-sensitive clipping, intermediate.
16385
16386 @item 8
16387 Line-sensitive clipping, intermediate.
16388
16389 @item 9
16390 Line-sensitive clipping on a line where the neighbours pixels are the closest.
16391
16392 @item 10
16393 Replaces the target pixel with the closest neighbour.
16394
16395 @item 11
16396 [1 2 1] horizontal and vertical kernel blur.
16397
16398 @item 12
16399 Same as mode 11.
16400
16401 @item 13
16402 Bob mode, interpolates top field from the line where the neighbours
16403 pixels are the closest.
16404
16405 @item 14
16406 Bob mode, interpolates bottom field from the line where the neighbours
16407 pixels are the closest.
16408
16409 @item 15
16410 Bob mode, interpolates top field. Same as 13 but with a more complicated
16411 interpolation formula.
16412
16413 @item 16
16414 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
16415 interpolation formula.
16416
16417 @item 17
16418 Clips the pixel with the minimum and maximum of respectively the maximum and
16419 minimum of each pair of opposite neighbour pixels.
16420
16421 @item 18
16422 Line-sensitive clipping using opposite neighbours whose greatest distance from
16423 the current pixel is minimal.
16424
16425 @item 19
16426 Replaces the pixel with the average of its 8 neighbours.
16427
16428 @item 20
16429 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
16430
16431 @item 21
16432 Clips pixels using the averages of opposite neighbour.
16433
16434 @item 22
16435 Same as mode 21 but simpler and faster.
16436
16437 @item 23
16438 Small edge and halo removal, but reputed useless.
16439
16440 @item 24
16441 Similar as 23.
16442 @end table
16443
16444 @section removelogo
16445
16446 Suppress a TV station logo, using an image file to determine which
16447 pixels comprise the logo. It works by filling in the pixels that
16448 comprise the logo with neighboring pixels.
16449
16450 The filter accepts the following options:
16451
16452 @table @option
16453 @item filename, f
16454 Set the filter bitmap file, which can be any image format supported by
16455 libavformat. The width and height of the image file must match those of the
16456 video stream being processed.
16457 @end table
16458
16459 Pixels in the provided bitmap image with a value of zero are not
16460 considered part of the logo, non-zero pixels are considered part of
16461 the logo. If you use white (255) for the logo and black (0) for the
16462 rest, you will be safe. For making the filter bitmap, it is
16463 recommended to take a screen capture of a black frame with the logo
16464 visible, and then using a threshold filter followed by the erode
16465 filter once or twice.
16466
16467 If needed, little splotches can be fixed manually. Remember that if
16468 logo pixels are not covered, the filter quality will be much
16469 reduced. Marking too many pixels as part of the logo does not hurt as
16470 much, but it will increase the amount of blurring needed to cover over
16471 the image and will destroy more information than necessary, and extra
16472 pixels will slow things down on a large logo.
16473
16474 @section repeatfields
16475
16476 This filter uses the repeat_field flag from the Video ES headers and hard repeats
16477 fields based on its value.
16478
16479 @section reverse
16480
16481 Reverse a video clip.
16482
16483 Warning: This filter requires memory to buffer the entire clip, so trimming
16484 is suggested.
16485
16486 @subsection Examples
16487
16488 @itemize
16489 @item
16490 Take the first 5 seconds of a clip, and reverse it.
16491 @example
16492 trim=end=5,reverse
16493 @end example
16494 @end itemize
16495
16496 @section rgbashift
16497 Shift R/G/B/A pixels horizontally and/or vertically.
16498
16499 The filter accepts the following options:
16500 @table @option
16501 @item rh
16502 Set amount to shift red horizontally.
16503 @item rv
16504 Set amount to shift red vertically.
16505 @item gh
16506 Set amount to shift green horizontally.
16507 @item gv
16508 Set amount to shift green vertically.
16509 @item bh
16510 Set amount to shift blue horizontally.
16511 @item bv
16512 Set amount to shift blue vertically.
16513 @item ah
16514 Set amount to shift alpha horizontally.
16515 @item av
16516 Set amount to shift alpha vertically.
16517 @item edge
16518 Set edge mode, can be @var{smear}, default, or @var{warp}.
16519 @end table
16520
16521 @subsection Commands
16522
16523 This filter supports the all above options as @ref{commands}.
16524
16525 @section roberts
16526 Apply roberts cross operator to input video stream.
16527
16528 The filter accepts the following option:
16529
16530 @table @option
16531 @item planes
16532 Set which planes will be processed, unprocessed planes will be copied.
16533 By default value 0xf, all planes will be processed.
16534
16535 @item scale
16536 Set value which will be multiplied with filtered result.
16537
16538 @item delta
16539 Set value which will be added to filtered result.
16540 @end table
16541
16542 @section rotate
16543
16544 Rotate video by an arbitrary angle expressed in radians.
16545
16546 The filter accepts the following options:
16547
16548 A description of the optional parameters follows.
16549 @table @option
16550 @item angle, a
16551 Set an expression for the angle by which to rotate the input video
16552 clockwise, expressed as a number of radians. A negative value will
16553 result in a counter-clockwise rotation. By default it is set to "0".
16554
16555 This expression is evaluated for each frame.
16556
16557 @item out_w, ow
16558 Set the output width expression, default value is "iw".
16559 This expression is evaluated just once during configuration.
16560
16561 @item out_h, oh
16562 Set the output height expression, default value is "ih".
16563 This expression is evaluated just once during configuration.
16564
16565 @item bilinear
16566 Enable bilinear interpolation if set to 1, a value of 0 disables
16567 it. Default value is 1.
16568
16569 @item fillcolor, c
16570 Set the color used to fill the output area not covered by the rotated
16571 image. For the general syntax of this option, check the
16572 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16573 If the special value "none" is selected then no
16574 background is printed (useful for example if the background is never shown).
16575
16576 Default value is "black".
16577 @end table
16578
16579 The expressions for the angle and the output size can contain the
16580 following constants and functions:
16581
16582 @table @option
16583 @item n
16584 sequential number of the input frame, starting from 0. It is always NAN
16585 before the first frame is filtered.
16586
16587 @item t
16588 time in seconds of the input frame, it is set to 0 when the filter is
16589 configured. It is always NAN before the first frame is filtered.
16590
16591 @item hsub
16592 @item vsub
16593 horizontal and vertical chroma subsample values. For example for the
16594 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16595
16596 @item in_w, iw
16597 @item in_h, ih
16598 the input video width and height
16599
16600 @item out_w, ow
16601 @item out_h, oh
16602 the output width and height, that is the size of the padded area as
16603 specified by the @var{width} and @var{height} expressions
16604
16605 @item rotw(a)
16606 @item roth(a)
16607 the minimal width/height required for completely containing the input
16608 video rotated by @var{a} radians.
16609
16610 These are only available when computing the @option{out_w} and
16611 @option{out_h} expressions.
16612 @end table
16613
16614 @subsection Examples
16615
16616 @itemize
16617 @item
16618 Rotate the input by PI/6 radians clockwise:
16619 @example
16620 rotate=PI/6
16621 @end example
16622
16623 @item
16624 Rotate the input by PI/6 radians counter-clockwise:
16625 @example
16626 rotate=-PI/6
16627 @end example
16628
16629 @item
16630 Rotate the input by 45 degrees clockwise:
16631 @example
16632 rotate=45*PI/180
16633 @end example
16634
16635 @item
16636 Apply a constant rotation with period T, starting from an angle of PI/3:
16637 @example
16638 rotate=PI/3+2*PI*t/T
16639 @end example
16640
16641 @item
16642 Make the input video rotation oscillating with a period of T
16643 seconds and an amplitude of A radians:
16644 @example
16645 rotate=A*sin(2*PI/T*t)
16646 @end example
16647
16648 @item
16649 Rotate the video, output size is chosen so that the whole rotating
16650 input video is always completely contained in the output:
16651 @example
16652 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
16653 @end example
16654
16655 @item
16656 Rotate the video, reduce the output size so that no background is ever
16657 shown:
16658 @example
16659 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
16660 @end example
16661 @end itemize
16662
16663 @subsection Commands
16664
16665 The filter supports the following commands:
16666
16667 @table @option
16668 @item a, angle
16669 Set the angle expression.
16670 The command accepts the same syntax of the corresponding option.
16671
16672 If the specified expression is not valid, it is kept at its current
16673 value.
16674 @end table
16675
16676 @section sab
16677
16678 Apply Shape Adaptive Blur.
16679
16680 The filter accepts the following options:
16681
16682 @table @option
16683 @item luma_radius, lr
16684 Set luma blur filter strength, must be a value in range 0.1-4.0, default
16685 value is 1.0. A greater value will result in a more blurred image, and
16686 in slower processing.
16687
16688 @item luma_pre_filter_radius, lpfr
16689 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
16690 value is 1.0.
16691
16692 @item luma_strength, ls
16693 Set luma maximum difference between pixels to still be considered, must
16694 be a value in the 0.1-100.0 range, default value is 1.0.
16695
16696 @item chroma_radius, cr
16697 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
16698 greater value will result in a more blurred image, and in slower
16699 processing.
16700
16701 @item chroma_pre_filter_radius, cpfr
16702 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
16703
16704 @item chroma_strength, cs
16705 Set chroma maximum difference between pixels to still be considered,
16706 must be a value in the -0.9-100.0 range.
16707 @end table
16708
16709 Each chroma option value, if not explicitly specified, is set to the
16710 corresponding luma option value.
16711
16712 @anchor{scale}
16713 @section scale
16714
16715 Scale (resize) the input video, using the libswscale library.
16716
16717 The scale filter forces the output display aspect ratio to be the same
16718 of the input, by changing the output sample aspect ratio.
16719
16720 If the input image format is different from the format requested by
16721 the next filter, the scale filter will convert the input to the
16722 requested format.
16723
16724 @subsection Options
16725 The filter accepts the following options, or any of the options
16726 supported by the libswscale scaler.
16727
16728 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
16729 the complete list of scaler options.
16730
16731 @table @option
16732 @item width, w
16733 @item height, h
16734 Set the output video dimension expression. Default value is the input
16735 dimension.
16736
16737 If the @var{width} or @var{w} value is 0, the input width is used for
16738 the output. If the @var{height} or @var{h} value is 0, the input height
16739 is used for the output.
16740
16741 If one and only one of the values is -n with n >= 1, the scale filter
16742 will use a value that maintains the aspect ratio of the input image,
16743 calculated from the other specified dimension. After that it will,
16744 however, make sure that the calculated dimension is divisible by n and
16745 adjust the value if necessary.
16746
16747 If both values are -n with n >= 1, the behavior will be identical to
16748 both values being set to 0 as previously detailed.
16749
16750 See below for the list of accepted constants for use in the dimension
16751 expression.
16752
16753 @item eval
16754 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
16755
16756 @table @samp
16757 @item init
16758 Only evaluate expressions once during the filter initialization or when a command is processed.
16759
16760 @item frame
16761 Evaluate expressions for each incoming frame.
16762
16763 @end table
16764
16765 Default value is @samp{init}.
16766
16767
16768 @item interl
16769 Set the interlacing mode. It accepts the following values:
16770
16771 @table @samp
16772 @item 1
16773 Force interlaced aware scaling.
16774
16775 @item 0
16776 Do not apply interlaced scaling.
16777
16778 @item -1
16779 Select interlaced aware scaling depending on whether the source frames
16780 are flagged as interlaced or not.
16781 @end table
16782
16783 Default value is @samp{0}.
16784
16785 @item flags
16786 Set libswscale scaling flags. See
16787 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16788 complete list of values. If not explicitly specified the filter applies
16789 the default flags.
16790
16791
16792 @item param0, param1
16793 Set libswscale input parameters for scaling algorithms that need them. See
16794 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16795 complete documentation. If not explicitly specified the filter applies
16796 empty parameters.
16797
16798
16799
16800 @item size, s
16801 Set the video size. For the syntax of this option, check the
16802 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16803
16804 @item in_color_matrix
16805 @item out_color_matrix
16806 Set in/output YCbCr color space type.
16807
16808 This allows the autodetected value to be overridden as well as allows forcing
16809 a specific value used for the output and encoder.
16810
16811 If not specified, the color space type depends on the pixel format.
16812
16813 Possible values:
16814
16815 @table @samp
16816 @item auto
16817 Choose automatically.
16818
16819 @item bt709
16820 Format conforming to International Telecommunication Union (ITU)
16821 Recommendation BT.709.
16822
16823 @item fcc
16824 Set color space conforming to the United States Federal Communications
16825 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
16826
16827 @item bt601
16828 @item bt470
16829 @item smpte170m
16830 Set color space conforming to:
16831
16832 @itemize
16833 @item
16834 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
16835
16836 @item
16837 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
16838
16839 @item
16840 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
16841
16842 @end itemize
16843
16844 @item smpte240m
16845 Set color space conforming to SMPTE ST 240:1999.
16846
16847 @item bt2020
16848 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
16849 @end table
16850
16851 @item in_range
16852 @item out_range
16853 Set in/output YCbCr sample range.
16854
16855 This allows the autodetected value to be overridden as well as allows forcing
16856 a specific value used for the output and encoder. If not specified, the
16857 range depends on the pixel format. Possible values:
16858
16859 @table @samp
16860 @item auto/unknown
16861 Choose automatically.
16862
16863 @item jpeg/full/pc
16864 Set full range (0-255 in case of 8-bit luma).
16865
16866 @item mpeg/limited/tv
16867 Set "MPEG" range (16-235 in case of 8-bit luma).
16868 @end table
16869
16870 @item force_original_aspect_ratio
16871 Enable decreasing or increasing output video width or height if necessary to
16872 keep the original aspect ratio. Possible values:
16873
16874 @table @samp
16875 @item disable
16876 Scale the video as specified and disable this feature.
16877
16878 @item decrease
16879 The output video dimensions will automatically be decreased if needed.
16880
16881 @item increase
16882 The output video dimensions will automatically be increased if needed.
16883
16884 @end table
16885
16886 One useful instance of this option is that when you know a specific device's
16887 maximum allowed resolution, you can use this to limit the output video to
16888 that, while retaining the aspect ratio. For example, device A allows
16889 1280x720 playback, and your video is 1920x800. Using this option (set it to
16890 decrease) and specifying 1280x720 to the command line makes the output
16891 1280x533.
16892
16893 Please note that this is a different thing than specifying -1 for @option{w}
16894 or @option{h}, you still need to specify the output resolution for this option
16895 to work.
16896
16897 @item force_divisible_by
16898 Ensures that both the output dimensions, width and height, are divisible by the
16899 given integer when used together with @option{force_original_aspect_ratio}. This
16900 works similar to using @code{-n} in the @option{w} and @option{h} options.
16901
16902 This option respects the value set for @option{force_original_aspect_ratio},
16903 increasing or decreasing the resolution accordingly. The video's aspect ratio
16904 may be slightly modified.
16905
16906 This option can be handy if you need to have a video fit within or exceed
16907 a defined resolution using @option{force_original_aspect_ratio} but also have
16908 encoder restrictions on width or height divisibility.
16909
16910 @end table
16911
16912 The values of the @option{w} and @option{h} options are expressions
16913 containing the following constants:
16914
16915 @table @var
16916 @item in_w
16917 @item in_h
16918 The input width and height
16919
16920 @item iw
16921 @item ih
16922 These are the same as @var{in_w} and @var{in_h}.
16923
16924 @item out_w
16925 @item out_h
16926 The output (scaled) width and height
16927
16928 @item ow
16929 @item oh
16930 These are the same as @var{out_w} and @var{out_h}
16931
16932 @item a
16933 The same as @var{iw} / @var{ih}
16934
16935 @item sar
16936 input sample aspect ratio
16937
16938 @item dar
16939 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
16940
16941 @item hsub
16942 @item vsub
16943 horizontal and vertical input chroma subsample values. For example for the
16944 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16945
16946 @item ohsub
16947 @item ovsub
16948 horizontal and vertical output chroma subsample values. For example for the
16949 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16950
16951 @item n
16952 The (sequential) number of the input frame, starting from 0.
16953 Only available with @code{eval=frame}.
16954
16955 @item t
16956 The presentation timestamp of the input frame, expressed as a number of
16957 seconds. Only available with @code{eval=frame}.
16958
16959 @item pos
16960 The position (byte offset) of the frame in the input stream, or NaN if
16961 this information is unavailable and/or meaningless (for example in case of synthetic video).
16962 Only available with @code{eval=frame}.
16963 @end table
16964
16965 @subsection Examples
16966
16967 @itemize
16968 @item
16969 Scale the input video to a size of 200x100
16970 @example
16971 scale=w=200:h=100
16972 @end example
16973
16974 This is equivalent to:
16975 @example
16976 scale=200:100
16977 @end example
16978
16979 or:
16980 @example
16981 scale=200x100
16982 @end example
16983
16984 @item
16985 Specify a size abbreviation for the output size:
16986 @example
16987 scale=qcif
16988 @end example
16989
16990 which can also be written as:
16991 @example
16992 scale=size=qcif
16993 @end example
16994
16995 @item
16996 Scale the input to 2x:
16997 @example
16998 scale=w=2*iw:h=2*ih
16999 @end example
17000
17001 @item
17002 The above is the same as:
17003 @example
17004 scale=2*in_w:2*in_h
17005 @end example
17006
17007 @item
17008 Scale the input to 2x with forced interlaced scaling:
17009 @example
17010 scale=2*iw:2*ih:interl=1
17011 @end example
17012
17013 @item
17014 Scale the input to half size:
17015 @example
17016 scale=w=iw/2:h=ih/2
17017 @end example
17018
17019 @item
17020 Increase the width, and set the height to the same size:
17021 @example
17022 scale=3/2*iw:ow
17023 @end example
17024
17025 @item
17026 Seek Greek harmony:
17027 @example
17028 scale=iw:1/PHI*iw
17029 scale=ih*PHI:ih
17030 @end example
17031
17032 @item
17033 Increase the height, and set the width to 3/2 of the height:
17034 @example
17035 scale=w=3/2*oh:h=3/5*ih
17036 @end example
17037
17038 @item
17039 Increase the size, making the size a multiple of the chroma
17040 subsample values:
17041 @example
17042 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
17043 @end example
17044
17045 @item
17046 Increase the width to a maximum of 500 pixels,
17047 keeping the same aspect ratio as the input:
17048 @example
17049 scale=w='min(500\, iw*3/2):h=-1'
17050 @end example
17051
17052 @item
17053 Make pixels square by combining scale and setsar:
17054 @example
17055 scale='trunc(ih*dar):ih',setsar=1/1
17056 @end example
17057
17058 @item
17059 Make pixels square by combining scale and setsar,
17060 making sure the resulting resolution is even (required by some codecs):
17061 @example
17062 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
17063 @end example
17064 @end itemize
17065
17066 @subsection Commands
17067
17068 This filter supports the following commands:
17069 @table @option
17070 @item width, w
17071 @item height, h
17072 Set the output video dimension expression.
17073 The command accepts the same syntax of the corresponding option.
17074
17075 If the specified expression is not valid, it is kept at its current
17076 value.
17077 @end table
17078
17079 @section scale_npp
17080
17081 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
17082 format conversion on CUDA video frames. Setting the output width and height
17083 works in the same way as for the @var{scale} filter.
17084
17085 The following additional options are accepted:
17086 @table @option
17087 @item format
17088 The pixel format of the output CUDA frames. If set to the string "same" (the
17089 default), the input format will be kept. Note that automatic format negotiation
17090 and conversion is not yet supported for hardware frames
17091
17092 @item interp_algo
17093 The interpolation algorithm used for resizing. One of the following:
17094 @table @option
17095 @item nn
17096 Nearest neighbour.
17097
17098 @item linear
17099 @item cubic
17100 @item cubic2p_bspline
17101 2-parameter cubic (B=1, C=0)
17102
17103 @item cubic2p_catmullrom
17104 2-parameter cubic (B=0, C=1/2)
17105
17106 @item cubic2p_b05c03
17107 2-parameter cubic (B=1/2, C=3/10)
17108
17109 @item super
17110 Supersampling
17111
17112 @item lanczos
17113 @end table
17114
17115 @item force_original_aspect_ratio
17116 Enable decreasing or increasing output video width or height if necessary to
17117 keep the original aspect ratio. Possible values:
17118
17119 @table @samp
17120 @item disable
17121 Scale the video as specified and disable this feature.
17122
17123 @item decrease
17124 The output video dimensions will automatically be decreased if needed.
17125
17126 @item increase
17127 The output video dimensions will automatically be increased if needed.
17128
17129 @end table
17130
17131 One useful instance of this option is that when you know a specific device's
17132 maximum allowed resolution, you can use this to limit the output video to
17133 that, while retaining the aspect ratio. For example, device A allows
17134 1280x720 playback, and your video is 1920x800. Using this option (set it to
17135 decrease) and specifying 1280x720 to the command line makes the output
17136 1280x533.
17137
17138 Please note that this is a different thing than specifying -1 for @option{w}
17139 or @option{h}, you still need to specify the output resolution for this option
17140 to work.
17141
17142 @item force_divisible_by
17143 Ensures that both the output dimensions, width and height, are divisible by the
17144 given integer when used together with @option{force_original_aspect_ratio}. This
17145 works similar to using @code{-n} in the @option{w} and @option{h} options.
17146
17147 This option respects the value set for @option{force_original_aspect_ratio},
17148 increasing or decreasing the resolution accordingly. The video's aspect ratio
17149 may be slightly modified.
17150
17151 This option can be handy if you need to have a video fit within or exceed
17152 a defined resolution using @option{force_original_aspect_ratio} but also have
17153 encoder restrictions on width or height divisibility.
17154
17155 @end table
17156
17157 @section scale2ref
17158
17159 Scale (resize) the input video, based on a reference video.
17160
17161 See the scale filter for available options, scale2ref supports the same but
17162 uses the reference video instead of the main input as basis. scale2ref also
17163 supports the following additional constants for the @option{w} and
17164 @option{h} options:
17165
17166 @table @var
17167 @item main_w
17168 @item main_h
17169 The main input video's width and height
17170
17171 @item main_a
17172 The same as @var{main_w} / @var{main_h}
17173
17174 @item main_sar
17175 The main input video's sample aspect ratio
17176
17177 @item main_dar, mdar
17178 The main input video's display aspect ratio. Calculated from
17179 @code{(main_w / main_h) * main_sar}.
17180
17181 @item main_hsub
17182 @item main_vsub
17183 The main input video's horizontal and vertical chroma subsample values.
17184 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
17185 is 1.
17186
17187 @item main_n
17188 The (sequential) number of the main input frame, starting from 0.
17189 Only available with @code{eval=frame}.
17190
17191 @item main_t
17192 The presentation timestamp of the main input frame, expressed as a number of
17193 seconds. Only available with @code{eval=frame}.
17194
17195 @item main_pos
17196 The position (byte offset) of the frame in the main input stream, or NaN if
17197 this information is unavailable and/or meaningless (for example in case of synthetic video).
17198 Only available with @code{eval=frame}.
17199 @end table
17200
17201 @subsection Examples
17202
17203 @itemize
17204 @item
17205 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
17206 @example
17207 'scale2ref[b][a];[a][b]overlay'
17208 @end example
17209
17210 @item
17211 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
17212 @example
17213 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
17214 @end example
17215 @end itemize
17216
17217 @subsection Commands
17218
17219 This filter supports the following commands:
17220 @table @option
17221 @item width, w
17222 @item height, h
17223 Set the output video dimension expression.
17224 The command accepts the same syntax of the corresponding option.
17225
17226 If the specified expression is not valid, it is kept at its current
17227 value.
17228 @end table
17229
17230 @section scroll
17231 Scroll input video horizontally and/or vertically by constant speed.
17232
17233 The filter accepts the following options:
17234 @table @option
17235 @item horizontal, h
17236 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
17237 Negative values changes scrolling direction.
17238
17239 @item vertical, v
17240 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
17241 Negative values changes scrolling direction.
17242
17243 @item hpos
17244 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
17245
17246 @item vpos
17247 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
17248 @end table
17249
17250 @subsection Commands
17251
17252 This filter supports the following @ref{commands}:
17253 @table @option
17254 @item horizontal, h
17255 Set the horizontal scrolling speed.
17256 @item vertical, v
17257 Set the vertical scrolling speed.
17258 @end table
17259
17260 @anchor{scdet}
17261 @section scdet
17262
17263 Detect video scene change.
17264
17265 This filter sets frame metadata with mafd between frame, the scene score, and
17266 forward the frame to the next filter, so they can use these metadata to detect
17267 scene change or others.
17268
17269 In addition, this filter logs a message and sets frame metadata when it detects
17270 a scene change by @option{threshold}.
17271
17272 @code{lavfi.scd.mafd} metadata keys are set with mafd for every frame.
17273
17274 @code{lavfi.scd.score} metadata keys are set with scene change score for every frame
17275 to detect scene change.
17276
17277 @code{lavfi.scd.time} metadata keys are set with current filtered frame time which
17278 detect scene change with @option{threshold}.
17279
17280 The filter accepts the following options:
17281
17282 @table @option
17283 @item threshold, t
17284 Set the scene change detection threshold as a percentage of maximum change. Good
17285 values are in the @code{[8.0, 14.0]} range. The range for @option{threshold} is
17286 @code{[0., 100.]}.
17287
17288 Default value is @code{10.}.
17289
17290 @item sc_pass, s
17291 Set the flag to pass scene change frames to the next filter. Default value is @code{0}
17292 You can enable it if you want to get snapshot of scene change frames only.
17293 @end table
17294
17295 @anchor{selectivecolor}
17296 @section selectivecolor
17297
17298 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
17299 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
17300 by the "purity" of the color (that is, how saturated it already is).
17301
17302 This filter is similar to the Adobe Photoshop Selective Color tool.
17303
17304 The filter accepts the following options:
17305
17306 @table @option
17307 @item correction_method
17308 Select color correction method.
17309
17310 Available values are:
17311 @table @samp
17312 @item absolute
17313 Specified adjustments are applied "as-is" (added/subtracted to original pixel
17314 component value).
17315 @item relative
17316 Specified adjustments are relative to the original component value.
17317 @end table
17318 Default is @code{absolute}.
17319 @item reds
17320 Adjustments for red pixels (pixels where the red component is the maximum)
17321 @item yellows
17322 Adjustments for yellow pixels (pixels where the blue component is the minimum)
17323 @item greens
17324 Adjustments for green pixels (pixels where the green component is the maximum)
17325 @item cyans
17326 Adjustments for cyan pixels (pixels where the red component is the minimum)
17327 @item blues
17328 Adjustments for blue pixels (pixels where the blue component is the maximum)
17329 @item magentas
17330 Adjustments for magenta pixels (pixels where the green component is the minimum)
17331 @item whites
17332 Adjustments for white pixels (pixels where all components are greater than 128)
17333 @item neutrals
17334 Adjustments for all pixels except pure black and pure white
17335 @item blacks
17336 Adjustments for black pixels (pixels where all components are lesser than 128)
17337 @item psfile
17338 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
17339 @end table
17340
17341 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
17342 4 space separated floating point adjustment values in the [-1,1] range,
17343 respectively to adjust the amount of cyan, magenta, yellow and black for the
17344 pixels of its range.
17345
17346 @subsection Examples
17347
17348 @itemize
17349 @item
17350 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
17351 increase magenta by 27% in blue areas:
17352 @example
17353 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
17354 @end example
17355
17356 @item
17357 Use a Photoshop selective color preset:
17358 @example
17359 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
17360 @end example
17361 @end itemize
17362
17363 @anchor{separatefields}
17364 @section separatefields
17365
17366 The @code{separatefields} takes a frame-based video input and splits
17367 each frame into its components fields, producing a new half height clip
17368 with twice the frame rate and twice the frame count.
17369
17370 This filter use field-dominance information in frame to decide which
17371 of each pair of fields to place first in the output.
17372 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
17373
17374 @section setdar, setsar
17375
17376 The @code{setdar} filter sets the Display Aspect Ratio for the filter
17377 output video.
17378
17379 This is done by changing the specified Sample (aka Pixel) Aspect
17380 Ratio, according to the following equation:
17381 @example
17382 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
17383 @end example
17384
17385 Keep in mind that the @code{setdar} filter does not modify the pixel
17386 dimensions of the video frame. Also, the display aspect ratio set by
17387 this filter may be changed by later filters in the filterchain,
17388 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
17389 applied.
17390
17391 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
17392 the filter output video.
17393
17394 Note that as a consequence of the application of this filter, the
17395 output display aspect ratio will change according to the equation
17396 above.
17397
17398 Keep in mind that the sample aspect ratio set by the @code{setsar}
17399 filter may be changed by later filters in the filterchain, e.g. if
17400 another "setsar" or a "setdar" filter is applied.
17401
17402 It accepts the following parameters:
17403
17404 @table @option
17405 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
17406 Set the aspect ratio used by the filter.
17407
17408 The parameter can be a floating point number string, an expression, or
17409 a string of the form @var{num}:@var{den}, where @var{num} and
17410 @var{den} are the numerator and denominator of the aspect ratio. If
17411 the parameter is not specified, it is assumed the value "0".
17412 In case the form "@var{num}:@var{den}" is used, the @code{:} character
17413 should be escaped.
17414
17415 @item max
17416 Set the maximum integer value to use for expressing numerator and
17417 denominator when reducing the expressed aspect ratio to a rational.
17418 Default value is @code{100}.
17419
17420 @end table
17421
17422 The parameter @var{sar} is an expression containing
17423 the following constants:
17424
17425 @table @option
17426 @item E, PI, PHI
17427 These are approximated values for the mathematical constants e
17428 (Euler's number), pi (Greek pi), and phi (the golden ratio).
17429
17430 @item w, h
17431 The input width and height.
17432
17433 @item a
17434 These are the same as @var{w} / @var{h}.
17435
17436 @item sar
17437 The input sample aspect ratio.
17438
17439 @item dar
17440 The input display aspect ratio. It is the same as
17441 (@var{w} / @var{h}) * @var{sar}.
17442
17443 @item hsub, vsub
17444 Horizontal and vertical chroma subsample values. For example, for the
17445 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17446 @end table
17447
17448 @subsection Examples
17449
17450 @itemize
17451
17452 @item
17453 To change the display aspect ratio to 16:9, specify one of the following:
17454 @example
17455 setdar=dar=1.77777
17456 setdar=dar=16/9
17457 @end example
17458
17459 @item
17460 To change the sample aspect ratio to 10:11, specify:
17461 @example
17462 setsar=sar=10/11
17463 @end example
17464
17465 @item
17466 To set a display aspect ratio of 16:9, and specify a maximum integer value of
17467 1000 in the aspect ratio reduction, use the command:
17468 @example
17469 setdar=ratio=16/9:max=1000
17470 @end example
17471
17472 @end itemize
17473
17474 @anchor{setfield}
17475 @section setfield
17476
17477 Force field for the output video frame.
17478
17479 The @code{setfield} filter marks the interlace type field for the
17480 output frames. It does not change the input frame, but only sets the
17481 corresponding property, which affects how the frame is treated by
17482 following filters (e.g. @code{fieldorder} or @code{yadif}).
17483
17484 The filter accepts the following options:
17485
17486 @table @option
17487
17488 @item mode
17489 Available values are:
17490
17491 @table @samp
17492 @item auto
17493 Keep the same field property.
17494
17495 @item bff
17496 Mark the frame as bottom-field-first.
17497
17498 @item tff
17499 Mark the frame as top-field-first.
17500
17501 @item prog
17502 Mark the frame as progressive.
17503 @end table
17504 @end table
17505
17506 @anchor{setparams}
17507 @section setparams
17508
17509 Force frame parameter for the output video frame.
17510
17511 The @code{setparams} filter marks interlace and color range for the
17512 output frames. It does not change the input frame, but only sets the
17513 corresponding property, which affects how the frame is treated by
17514 filters/encoders.
17515
17516 @table @option
17517 @item field_mode
17518 Available values are:
17519
17520 @table @samp
17521 @item auto
17522 Keep the same field property (default).
17523
17524 @item bff
17525 Mark the frame as bottom-field-first.
17526
17527 @item tff
17528 Mark the frame as top-field-first.
17529
17530 @item prog
17531 Mark the frame as progressive.
17532 @end table
17533
17534 @item range
17535 Available values are:
17536
17537 @table @samp
17538 @item auto
17539 Keep the same color range property (default).
17540
17541 @item unspecified, unknown
17542 Mark the frame as unspecified color range.
17543
17544 @item limited, tv, mpeg
17545 Mark the frame as limited range.
17546
17547 @item full, pc, jpeg
17548 Mark the frame as full range.
17549 @end table
17550
17551 @item color_primaries
17552 Set the color primaries.
17553 Available values are:
17554
17555 @table @samp
17556 @item auto
17557 Keep the same color primaries property (default).
17558
17559 @item bt709
17560 @item unknown
17561 @item bt470m
17562 @item bt470bg
17563 @item smpte170m
17564 @item smpte240m
17565 @item film
17566 @item bt2020
17567 @item smpte428
17568 @item smpte431
17569 @item smpte432
17570 @item jedec-p22
17571 @end table
17572
17573 @item color_trc
17574 Set the color transfer.
17575 Available values are:
17576
17577 @table @samp
17578 @item auto
17579 Keep the same color trc property (default).
17580
17581 @item bt709
17582 @item unknown
17583 @item bt470m
17584 @item bt470bg
17585 @item smpte170m
17586 @item smpte240m
17587 @item linear
17588 @item log100
17589 @item log316
17590 @item iec61966-2-4
17591 @item bt1361e
17592 @item iec61966-2-1
17593 @item bt2020-10
17594 @item bt2020-12
17595 @item smpte2084
17596 @item smpte428
17597 @item arib-std-b67
17598 @end table
17599
17600 @item colorspace
17601 Set the colorspace.
17602 Available values are:
17603
17604 @table @samp
17605 @item auto
17606 Keep the same colorspace property (default).
17607
17608 @item gbr
17609 @item bt709
17610 @item unknown
17611 @item fcc
17612 @item bt470bg
17613 @item smpte170m
17614 @item smpte240m
17615 @item ycgco
17616 @item bt2020nc
17617 @item bt2020c
17618 @item smpte2085
17619 @item chroma-derived-nc
17620 @item chroma-derived-c
17621 @item ictcp
17622 @end table
17623 @end table
17624
17625 @section showinfo
17626
17627 Show a line containing various information for each input video frame.
17628 The input video is not modified.
17629
17630 This filter supports the following options:
17631
17632 @table @option
17633 @item checksum
17634 Calculate checksums of each plane. By default enabled.
17635 @end table
17636
17637 The shown line contains a sequence of key/value pairs of the form
17638 @var{key}:@var{value}.
17639
17640 The following values are shown in the output:
17641
17642 @table @option
17643 @item n
17644 The (sequential) number of the input frame, starting from 0.
17645
17646 @item pts
17647 The Presentation TimeStamp of the input frame, expressed as a number of
17648 time base units. The time base unit depends on the filter input pad.
17649
17650 @item pts_time
17651 The Presentation TimeStamp of the input frame, expressed as a number of
17652 seconds.
17653
17654 @item pos
17655 The position of the frame in the input stream, or -1 if this information is
17656 unavailable and/or meaningless (for example in case of synthetic video).
17657
17658 @item fmt
17659 The pixel format name.
17660
17661 @item sar
17662 The sample aspect ratio of the input frame, expressed in the form
17663 @var{num}/@var{den}.
17664
17665 @item s
17666 The size of the input frame. For the syntax of this option, check the
17667 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17668
17669 @item i
17670 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
17671 for bottom field first).
17672
17673 @item iskey
17674 This is 1 if the frame is a key frame, 0 otherwise.
17675
17676 @item type
17677 The picture type of the input frame ("I" for an I-frame, "P" for a
17678 P-frame, "B" for a B-frame, or "?" for an unknown type).
17679 Also refer to the documentation of the @code{AVPictureType} enum and of
17680 the @code{av_get_picture_type_char} function defined in
17681 @file{libavutil/avutil.h}.
17682
17683 @item checksum
17684 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
17685
17686 @item plane_checksum
17687 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
17688 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
17689
17690 @item mean
17691 The mean value of pixels in each plane of the input frame, expressed in the form
17692 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
17693
17694 @item stdev
17695 The standard deviation of pixel values in each plane of the input frame, expressed
17696 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
17697
17698 @end table
17699
17700 @section showpalette
17701
17702 Displays the 256 colors palette of each frame. This filter is only relevant for
17703 @var{pal8} pixel format frames.
17704
17705 It accepts the following option:
17706
17707 @table @option
17708 @item s
17709 Set the size of the box used to represent one palette color entry. Default is
17710 @code{30} (for a @code{30x30} pixel box).
17711 @end table
17712
17713 @section shuffleframes
17714
17715 Reorder and/or duplicate and/or drop video frames.
17716
17717 It accepts the following parameters:
17718
17719 @table @option
17720 @item mapping
17721 Set the destination indexes of input frames.
17722 This is space or '|' separated list of indexes that maps input frames to output
17723 frames. Number of indexes also sets maximal value that each index may have.
17724 '-1' index have special meaning and that is to drop frame.
17725 @end table
17726
17727 The first frame has the index 0. The default is to keep the input unchanged.
17728
17729 @subsection Examples
17730
17731 @itemize
17732 @item
17733 Swap second and third frame of every three frames of the input:
17734 @example
17735 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
17736 @end example
17737
17738 @item
17739 Swap 10th and 1st frame of every ten frames of the input:
17740 @example
17741 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
17742 @end example
17743 @end itemize
17744
17745 @section shuffleplanes
17746
17747 Reorder and/or duplicate video planes.
17748
17749 It accepts the following parameters:
17750
17751 @table @option
17752
17753 @item map0
17754 The index of the input plane to be used as the first output plane.
17755
17756 @item map1
17757 The index of the input plane to be used as the second output plane.
17758
17759 @item map2
17760 The index of the input plane to be used as the third output plane.
17761
17762 @item map3
17763 The index of the input plane to be used as the fourth output plane.
17764
17765 @end table
17766
17767 The first plane has the index 0. The default is to keep the input unchanged.
17768
17769 @subsection Examples
17770
17771 @itemize
17772 @item
17773 Swap the second and third planes of the input:
17774 @example
17775 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
17776 @end example
17777 @end itemize
17778
17779 @anchor{signalstats}
17780 @section signalstats
17781 Evaluate various visual metrics that assist in determining issues associated
17782 with the digitization of analog video media.
17783
17784 By default the filter will log these metadata values:
17785
17786 @table @option
17787 @item YMIN
17788 Display the minimal Y value contained within the input frame. Expressed in
17789 range of [0-255].
17790
17791 @item YLOW
17792 Display the Y value at the 10% percentile within the input frame. Expressed in
17793 range of [0-255].
17794
17795 @item YAVG
17796 Display the average Y value within the input frame. Expressed in range of
17797 [0-255].
17798
17799 @item YHIGH
17800 Display the Y value at the 90% percentile within the input frame. Expressed in
17801 range of [0-255].
17802
17803 @item YMAX
17804 Display the maximum Y value contained within the input frame. Expressed in
17805 range of [0-255].
17806
17807 @item UMIN
17808 Display the minimal U value contained within the input frame. Expressed in
17809 range of [0-255].
17810
17811 @item ULOW
17812 Display the U value at the 10% percentile within the input frame. Expressed in
17813 range of [0-255].
17814
17815 @item UAVG
17816 Display the average U value within the input frame. Expressed in range of
17817 [0-255].
17818
17819 @item UHIGH
17820 Display the U value at the 90% percentile within the input frame. Expressed in
17821 range of [0-255].
17822
17823 @item UMAX
17824 Display the maximum U value contained within the input frame. Expressed in
17825 range of [0-255].
17826
17827 @item VMIN
17828 Display the minimal V value contained within the input frame. Expressed in
17829 range of [0-255].
17830
17831 @item VLOW
17832 Display the V value at the 10% percentile within the input frame. Expressed in
17833 range of [0-255].
17834
17835 @item VAVG
17836 Display the average V value within the input frame. Expressed in range of
17837 [0-255].
17838
17839 @item VHIGH
17840 Display the V value at the 90% percentile within the input frame. Expressed in
17841 range of [0-255].
17842
17843 @item VMAX
17844 Display the maximum V value contained within the input frame. Expressed in
17845 range of [0-255].
17846
17847 @item SATMIN
17848 Display the minimal saturation value contained within the input frame.
17849 Expressed in range of [0-~181.02].
17850
17851 @item SATLOW
17852 Display the saturation value at the 10% percentile within the input frame.
17853 Expressed in range of [0-~181.02].
17854
17855 @item SATAVG
17856 Display the average saturation value within the input frame. Expressed in range
17857 of [0-~181.02].
17858
17859 @item SATHIGH
17860 Display the saturation value at the 90% percentile within the input frame.
17861 Expressed in range of [0-~181.02].
17862
17863 @item SATMAX
17864 Display the maximum saturation value contained within the input frame.
17865 Expressed in range of [0-~181.02].
17866
17867 @item HUEMED
17868 Display the median value for hue within the input frame. Expressed in range of
17869 [0-360].
17870
17871 @item HUEAVG
17872 Display the average value for hue within the input frame. Expressed in range of
17873 [0-360].
17874
17875 @item YDIF
17876 Display the average of sample value difference between all values of the Y
17877 plane in the current frame and corresponding values of the previous input frame.
17878 Expressed in range of [0-255].
17879
17880 @item UDIF
17881 Display the average of sample value difference between all values of the U
17882 plane in the current frame and corresponding values of the previous input frame.
17883 Expressed in range of [0-255].
17884
17885 @item VDIF
17886 Display the average of sample value difference between all values of the V
17887 plane in the current frame and corresponding values of the previous input frame.
17888 Expressed in range of [0-255].
17889
17890 @item YBITDEPTH
17891 Display bit depth of Y plane in current frame.
17892 Expressed in range of [0-16].
17893
17894 @item UBITDEPTH
17895 Display bit depth of U plane in current frame.
17896 Expressed in range of [0-16].
17897
17898 @item VBITDEPTH
17899 Display bit depth of V plane in current frame.
17900 Expressed in range of [0-16].
17901 @end table
17902
17903 The filter accepts the following options:
17904
17905 @table @option
17906 @item stat
17907 @item out
17908
17909 @option{stat} specify an additional form of image analysis.
17910 @option{out} output video with the specified type of pixel highlighted.
17911
17912 Both options accept the following values:
17913
17914 @table @samp
17915 @item tout
17916 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
17917 unlike the neighboring pixels of the same field. Examples of temporal outliers
17918 include the results of video dropouts, head clogs, or tape tracking issues.
17919
17920 @item vrep
17921 Identify @var{vertical line repetition}. Vertical line repetition includes
17922 similar rows of pixels within a frame. In born-digital video vertical line
17923 repetition is common, but this pattern is uncommon in video digitized from an
17924 analog source. When it occurs in video that results from the digitization of an
17925 analog source it can indicate concealment from a dropout compensator.
17926
17927 @item brng
17928 Identify pixels that fall outside of legal broadcast range.
17929 @end table
17930
17931 @item color, c
17932 Set the highlight color for the @option{out} option. The default color is
17933 yellow.
17934 @end table
17935
17936 @subsection Examples
17937
17938 @itemize
17939 @item
17940 Output data of various video metrics:
17941 @example
17942 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
17943 @end example
17944
17945 @item
17946 Output specific data about the minimum and maximum values of the Y plane per frame:
17947 @example
17948 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
17949 @end example
17950
17951 @item
17952 Playback video while highlighting pixels that are outside of broadcast range in red.
17953 @example
17954 ffplay example.mov -vf signalstats="out=brng:color=red"
17955 @end example
17956
17957 @item
17958 Playback video with signalstats metadata drawn over the frame.
17959 @example
17960 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
17961 @end example
17962
17963 The contents of signalstat_drawtext.txt used in the command are:
17964 @example
17965 time %@{pts:hms@}
17966 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
17967 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
17968 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
17969 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
17970
17971 @end example
17972 @end itemize
17973
17974 @anchor{signature}
17975 @section signature
17976
17977 Calculates the MPEG-7 Video Signature. The filter can handle more than one
17978 input. In this case the matching between the inputs can be calculated additionally.
17979 The filter always passes through the first input. The signature of each stream can
17980 be written into a file.
17981
17982 It accepts the following options:
17983
17984 @table @option
17985 @item detectmode
17986 Enable or disable the matching process.
17987
17988 Available values are:
17989
17990 @table @samp
17991 @item off
17992 Disable the calculation of a matching (default).
17993 @item full
17994 Calculate the matching for the whole video and output whether the whole video
17995 matches or only parts.
17996 @item fast
17997 Calculate only until a matching is found or the video ends. Should be faster in
17998 some cases.
17999 @end table
18000
18001 @item nb_inputs
18002 Set the number of inputs. The option value must be a non negative integer.
18003 Default value is 1.
18004
18005 @item filename
18006 Set the path to which the output is written. If there is more than one input,
18007 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
18008 integer), that will be replaced with the input number. If no filename is
18009 specified, no output will be written. This is the default.
18010
18011 @item format
18012 Choose the output format.
18013
18014 Available values are:
18015
18016 @table @samp
18017 @item binary
18018 Use the specified binary representation (default).
18019 @item xml
18020 Use the specified xml representation.
18021 @end table
18022
18023 @item th_d
18024 Set threshold to detect one word as similar. The option value must be an integer
18025 greater than zero. The default value is 9000.
18026
18027 @item th_dc
18028 Set threshold to detect all words as similar. The option value must be an integer
18029 greater than zero. The default value is 60000.
18030
18031 @item th_xh
18032 Set threshold to detect frames as similar. The option value must be an integer
18033 greater than zero. The default value is 116.
18034
18035 @item th_di
18036 Set the minimum length of a sequence in frames to recognize it as matching
18037 sequence. The option value must be a non negative integer value.
18038 The default value is 0.
18039
18040 @item th_it
18041 Set the minimum relation, that matching frames to all frames must have.
18042 The option value must be a double value between 0 and 1. The default value is 0.5.
18043 @end table
18044
18045 @subsection Examples
18046
18047 @itemize
18048 @item
18049 To calculate the signature of an input video and store it in signature.bin:
18050 @example
18051 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
18052 @end example
18053
18054 @item
18055 To detect whether two videos match and store the signatures in XML format in
18056 signature0.xml and signature1.xml:
18057 @example
18058 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 -
18059 @end example
18060
18061 @end itemize
18062
18063 @anchor{smartblur}
18064 @section smartblur
18065
18066 Blur the input video without impacting the outlines.
18067
18068 It accepts the following options:
18069
18070 @table @option
18071 @item luma_radius, lr
18072 Set the luma radius. The option value must be a float number in
18073 the range [0.1,5.0] that specifies the variance of the gaussian filter
18074 used to blur the image (slower if larger). Default value is 1.0.
18075
18076 @item luma_strength, ls
18077 Set the luma strength. The option value must be a float number
18078 in the range [-1.0,1.0] that configures the blurring. A value included
18079 in [0.0,1.0] will blur the image whereas a value included in
18080 [-1.0,0.0] will sharpen the image. Default value is 1.0.
18081
18082 @item luma_threshold, lt
18083 Set the luma threshold used as a coefficient to determine
18084 whether a pixel should be blurred or not. The option value must be an
18085 integer in the range [-30,30]. A value of 0 will filter all the image,
18086 a value included in [0,30] will filter flat areas and a value included
18087 in [-30,0] will filter edges. Default value is 0.
18088
18089 @item chroma_radius, cr
18090 Set the chroma radius. The option value must be a float number in
18091 the range [0.1,5.0] that specifies the variance of the gaussian filter
18092 used to blur the image (slower if larger). Default value is @option{luma_radius}.
18093
18094 @item chroma_strength, cs
18095 Set the chroma strength. The option value must be a float number
18096 in the range [-1.0,1.0] that configures the blurring. A value included
18097 in [0.0,1.0] will blur the image whereas a value included in
18098 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
18099
18100 @item chroma_threshold, ct
18101 Set the chroma threshold used as a coefficient to determine
18102 whether a pixel should be blurred or not. The option value must be an
18103 integer in the range [-30,30]. A value of 0 will filter all the image,
18104 a value included in [0,30] will filter flat areas and a value included
18105 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
18106 @end table
18107
18108 If a chroma option is not explicitly set, the corresponding luma value
18109 is set.
18110
18111 @section sobel
18112 Apply sobel operator to input video stream.
18113
18114 The filter accepts the following option:
18115
18116 @table @option
18117 @item planes
18118 Set which planes will be processed, unprocessed planes will be copied.
18119 By default value 0xf, all planes will be processed.
18120
18121 @item scale
18122 Set value which will be multiplied with filtered result.
18123
18124 @item delta
18125 Set value which will be added to filtered result.
18126 @end table
18127
18128 @anchor{spp}
18129 @section spp
18130
18131 Apply a simple postprocessing filter that compresses and decompresses the image
18132 at several (or - in the case of @option{quality} level @code{6} - all) shifts
18133 and average the results.
18134
18135 The filter accepts the following options:
18136
18137 @table @option
18138 @item quality
18139 Set quality. This option defines the number of levels for averaging. It accepts
18140 an integer in the range 0-6. If set to @code{0}, the filter will have no
18141 effect. A value of @code{6} means the higher quality. For each increment of
18142 that value the speed drops by a factor of approximately 2.  Default value is
18143 @code{3}.
18144
18145 @item qp
18146 Force a constant quantization parameter. If not set, the filter will use the QP
18147 from the video stream (if available).
18148
18149 @item mode
18150 Set thresholding mode. Available modes are:
18151
18152 @table @samp
18153 @item hard
18154 Set hard thresholding (default).
18155 @item soft
18156 Set soft thresholding (better de-ringing effect, but likely blurrier).
18157 @end table
18158
18159 @item use_bframe_qp
18160 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
18161 option may cause flicker since the B-Frames have often larger QP. Default is
18162 @code{0} (not enabled).
18163 @end table
18164
18165 @subsection Commands
18166
18167 This filter supports the following commands:
18168 @table @option
18169 @item quality, level
18170 Set quality level. The value @code{max} can be used to set the maximum level,
18171 currently @code{6}.
18172 @end table
18173
18174 @anchor{sr}
18175 @section sr
18176
18177 Scale the input by applying one of the super-resolution methods based on
18178 convolutional neural networks. Supported models:
18179
18180 @itemize
18181 @item
18182 Super-Resolution Convolutional Neural Network model (SRCNN).
18183 See @url{https://arxiv.org/abs/1501.00092}.
18184
18185 @item
18186 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
18187 See @url{https://arxiv.org/abs/1609.05158}.
18188 @end itemize
18189
18190 Training scripts as well as scripts for model file (.pb) saving can be found at
18191 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
18192 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
18193
18194 Native model files (.model) can be generated from TensorFlow model
18195 files (.pb) by using tools/python/convert.py
18196
18197 The filter accepts the following options:
18198
18199 @table @option
18200 @item dnn_backend
18201 Specify which DNN backend to use for model loading and execution. This option accepts
18202 the following values:
18203
18204 @table @samp
18205 @item native
18206 Native implementation of DNN loading and execution.
18207
18208 @item tensorflow
18209 TensorFlow backend. To enable this backend you
18210 need to install the TensorFlow for C library (see
18211 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
18212 @code{--enable-libtensorflow}
18213 @end table
18214
18215 Default value is @samp{native}.
18216
18217 @item model
18218 Set path to model file specifying network architecture and its parameters.
18219 Note that different backends use different file formats. TensorFlow backend
18220 can load files for both formats, while native backend can load files for only
18221 its format.
18222
18223 @item scale_factor
18224 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
18225 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
18226 input upscaled using bicubic upscaling with proper scale factor.
18227 @end table
18228
18229 This feature can also be finished with @ref{dnn_processing} filter.
18230
18231 @section ssim
18232
18233 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
18234
18235 This filter takes in input two input videos, the first input is
18236 considered the "main" source and is passed unchanged to the
18237 output. The second input is used as a "reference" video for computing
18238 the SSIM.
18239
18240 Both video inputs must have the same resolution and pixel format for
18241 this filter to work correctly. Also it assumes that both inputs
18242 have the same number of frames, which are compared one by one.
18243
18244 The filter stores the calculated SSIM of each frame.
18245
18246 The description of the accepted parameters follows.
18247
18248 @table @option
18249 @item stats_file, f
18250 If specified the filter will use the named file to save the SSIM of
18251 each individual frame. When filename equals "-" the data is sent to
18252 standard output.
18253 @end table
18254
18255 The file printed if @var{stats_file} is selected, contains a sequence of
18256 key/value pairs of the form @var{key}:@var{value} for each compared
18257 couple of frames.
18258
18259 A description of each shown parameter follows:
18260
18261 @table @option
18262 @item n
18263 sequential number of the input frame, starting from 1
18264
18265 @item Y, U, V, R, G, B
18266 SSIM of the compared frames for the component specified by the suffix.
18267
18268 @item All
18269 SSIM of the compared frames for the whole frame.
18270
18271 @item dB
18272 Same as above but in dB representation.
18273 @end table
18274
18275 This filter also supports the @ref{framesync} options.
18276
18277 @subsection Examples
18278 @itemize
18279 @item
18280 For example:
18281 @example
18282 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
18283 [main][ref] ssim="stats_file=stats.log" [out]
18284 @end example
18285
18286 On this example the input file being processed is compared with the
18287 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
18288 is stored in @file{stats.log}.
18289
18290 @item
18291 Another example with both psnr and ssim at same time:
18292 @example
18293 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
18294 @end example
18295
18296 @item
18297 Another example with different containers:
18298 @example
18299 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 -
18300 @end example
18301 @end itemize
18302
18303 @section stereo3d
18304
18305 Convert between different stereoscopic image formats.
18306
18307 The filters accept the following options:
18308
18309 @table @option
18310 @item in
18311 Set stereoscopic image format of input.
18312
18313 Available values for input image formats are:
18314 @table @samp
18315 @item sbsl
18316 side by side parallel (left eye left, right eye right)
18317
18318 @item sbsr
18319 side by side crosseye (right eye left, left eye right)
18320
18321 @item sbs2l
18322 side by side parallel with half width resolution
18323 (left eye left, right eye right)
18324
18325 @item sbs2r
18326 side by side crosseye with half width resolution
18327 (right eye left, left eye right)
18328
18329 @item abl
18330 @item tbl
18331 above-below (left eye above, right eye below)
18332
18333 @item abr
18334 @item tbr
18335 above-below (right eye above, left eye below)
18336
18337 @item ab2l
18338 @item tb2l
18339 above-below with half height resolution
18340 (left eye above, right eye below)
18341
18342 @item ab2r
18343 @item tb2r
18344 above-below with half height resolution
18345 (right eye above, left eye below)
18346
18347 @item al
18348 alternating frames (left eye first, right eye second)
18349
18350 @item ar
18351 alternating frames (right eye first, left eye second)
18352
18353 @item irl
18354 interleaved rows (left eye has top row, right eye starts on next row)
18355
18356 @item irr
18357 interleaved rows (right eye has top row, left eye starts on next row)
18358
18359 @item icl
18360 interleaved columns, left eye first
18361
18362 @item icr
18363 interleaved columns, right eye first
18364
18365 Default value is @samp{sbsl}.
18366 @end table
18367
18368 @item out
18369 Set stereoscopic image format of output.
18370
18371 @table @samp
18372 @item sbsl
18373 side by side parallel (left eye left, right eye right)
18374
18375 @item sbsr
18376 side by side crosseye (right eye left, left eye right)
18377
18378 @item sbs2l
18379 side by side parallel with half width resolution
18380 (left eye left, right eye right)
18381
18382 @item sbs2r
18383 side by side crosseye with half width resolution
18384 (right eye left, left eye right)
18385
18386 @item abl
18387 @item tbl
18388 above-below (left eye above, right eye below)
18389
18390 @item abr
18391 @item tbr
18392 above-below (right eye above, left eye below)
18393
18394 @item ab2l
18395 @item tb2l
18396 above-below with half height resolution
18397 (left eye above, right eye below)
18398
18399 @item ab2r
18400 @item tb2r
18401 above-below with half height resolution
18402 (right eye above, left eye below)
18403
18404 @item al
18405 alternating frames (left eye first, right eye second)
18406
18407 @item ar
18408 alternating frames (right eye first, left eye second)
18409
18410 @item irl
18411 interleaved rows (left eye has top row, right eye starts on next row)
18412
18413 @item irr
18414 interleaved rows (right eye has top row, left eye starts on next row)
18415
18416 @item arbg
18417 anaglyph red/blue gray
18418 (red filter on left eye, blue filter on right eye)
18419
18420 @item argg
18421 anaglyph red/green gray
18422 (red filter on left eye, green filter on right eye)
18423
18424 @item arcg
18425 anaglyph red/cyan gray
18426 (red filter on left eye, cyan filter on right eye)
18427
18428 @item arch
18429 anaglyph red/cyan half colored
18430 (red filter on left eye, cyan filter on right eye)
18431
18432 @item arcc
18433 anaglyph red/cyan color
18434 (red filter on left eye, cyan filter on right eye)
18435
18436 @item arcd
18437 anaglyph red/cyan color optimized with the least squares projection of dubois
18438 (red filter on left eye, cyan filter on right eye)
18439
18440 @item agmg
18441 anaglyph green/magenta gray
18442 (green filter on left eye, magenta filter on right eye)
18443
18444 @item agmh
18445 anaglyph green/magenta half colored
18446 (green filter on left eye, magenta filter on right eye)
18447
18448 @item agmc
18449 anaglyph green/magenta colored
18450 (green filter on left eye, magenta filter on right eye)
18451
18452 @item agmd
18453 anaglyph green/magenta color optimized with the least squares projection of dubois
18454 (green filter on left eye, magenta filter on right eye)
18455
18456 @item aybg
18457 anaglyph yellow/blue gray
18458 (yellow filter on left eye, blue filter on right eye)
18459
18460 @item aybh
18461 anaglyph yellow/blue half colored
18462 (yellow filter on left eye, blue filter on right eye)
18463
18464 @item aybc
18465 anaglyph yellow/blue colored
18466 (yellow filter on left eye, blue filter on right eye)
18467
18468 @item aybd
18469 anaglyph yellow/blue color optimized with the least squares projection of dubois
18470 (yellow filter on left eye, blue filter on right eye)
18471
18472 @item ml
18473 mono output (left eye only)
18474
18475 @item mr
18476 mono output (right eye only)
18477
18478 @item chl
18479 checkerboard, left eye first
18480
18481 @item chr
18482 checkerboard, right eye first
18483
18484 @item icl
18485 interleaved columns, left eye first
18486
18487 @item icr
18488 interleaved columns, right eye first
18489
18490 @item hdmi
18491 HDMI frame pack
18492 @end table
18493
18494 Default value is @samp{arcd}.
18495 @end table
18496
18497 @subsection Examples
18498
18499 @itemize
18500 @item
18501 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
18502 @example
18503 stereo3d=sbsl:aybd
18504 @end example
18505
18506 @item
18507 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
18508 @example
18509 stereo3d=abl:sbsr
18510 @end example
18511 @end itemize
18512
18513 @section streamselect, astreamselect
18514 Select video or audio streams.
18515
18516 The filter accepts the following options:
18517
18518 @table @option
18519 @item inputs
18520 Set number of inputs. Default is 2.
18521
18522 @item map
18523 Set input indexes to remap to outputs.
18524 @end table
18525
18526 @subsection Commands
18527
18528 The @code{streamselect} and @code{astreamselect} filter supports the following
18529 commands:
18530
18531 @table @option
18532 @item map
18533 Set input indexes to remap to outputs.
18534 @end table
18535
18536 @subsection Examples
18537
18538 @itemize
18539 @item
18540 Select first 5 seconds 1st stream and rest of time 2nd stream:
18541 @example
18542 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
18543 @end example
18544
18545 @item
18546 Same as above, but for audio:
18547 @example
18548 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
18549 @end example
18550 @end itemize
18551
18552 @anchor{subtitles}
18553 @section subtitles
18554
18555 Draw subtitles on top of input video using the libass library.
18556
18557 To enable compilation of this filter you need to configure FFmpeg with
18558 @code{--enable-libass}. This filter also requires a build with libavcodec and
18559 libavformat to convert the passed subtitles file to ASS (Advanced Substation
18560 Alpha) subtitles format.
18561
18562 The filter accepts the following options:
18563
18564 @table @option
18565 @item filename, f
18566 Set the filename of the subtitle file to read. It must be specified.
18567
18568 @item original_size
18569 Specify the size of the original video, the video for which the ASS file
18570 was composed. For the syntax of this option, check the
18571 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18572 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
18573 correctly scale the fonts if the aspect ratio has been changed.
18574
18575 @item fontsdir
18576 Set a directory path containing fonts that can be used by the filter.
18577 These fonts will be used in addition to whatever the font provider uses.
18578
18579 @item alpha
18580 Process alpha channel, by default alpha channel is untouched.
18581
18582 @item charenc
18583 Set subtitles input character encoding. @code{subtitles} filter only. Only
18584 useful if not UTF-8.
18585
18586 @item stream_index, si
18587 Set subtitles stream index. @code{subtitles} filter only.
18588
18589 @item force_style
18590 Override default style or script info parameters of the subtitles. It accepts a
18591 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
18592 @end table
18593
18594 If the first key is not specified, it is assumed that the first value
18595 specifies the @option{filename}.
18596
18597 For example, to render the file @file{sub.srt} on top of the input
18598 video, use the command:
18599 @example
18600 subtitles=sub.srt
18601 @end example
18602
18603 which is equivalent to:
18604 @example
18605 subtitles=filename=sub.srt
18606 @end example
18607
18608 To render the default subtitles stream from file @file{video.mkv}, use:
18609 @example
18610 subtitles=video.mkv
18611 @end example
18612
18613 To render the second subtitles stream from that file, use:
18614 @example
18615 subtitles=video.mkv:si=1
18616 @end example
18617
18618 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
18619 @code{DejaVu Serif}, use:
18620 @example
18621 subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
18622 @end example
18623
18624 @section super2xsai
18625
18626 Scale the input by 2x and smooth using the Super2xSaI (Scale and
18627 Interpolate) pixel art scaling algorithm.
18628
18629 Useful for enlarging pixel art images without reducing sharpness.
18630
18631 @section swaprect
18632
18633 Swap two rectangular objects in video.
18634
18635 This filter accepts the following options:
18636
18637 @table @option
18638 @item w
18639 Set object width.
18640
18641 @item h
18642 Set object height.
18643
18644 @item x1
18645 Set 1st rect x coordinate.
18646
18647 @item y1
18648 Set 1st rect y coordinate.
18649
18650 @item x2
18651 Set 2nd rect x coordinate.
18652
18653 @item y2
18654 Set 2nd rect y coordinate.
18655
18656 All expressions are evaluated once for each frame.
18657 @end table
18658
18659 The all options are expressions containing the following constants:
18660
18661 @table @option
18662 @item w
18663 @item h
18664 The input width and height.
18665
18666 @item a
18667 same as @var{w} / @var{h}
18668
18669 @item sar
18670 input sample aspect ratio
18671
18672 @item dar
18673 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
18674
18675 @item n
18676 The number of the input frame, starting from 0.
18677
18678 @item t
18679 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
18680
18681 @item pos
18682 the position in the file of the input frame, NAN if unknown
18683 @end table
18684
18685 @section swapuv
18686 Swap U & V plane.
18687
18688 @section tblend
18689 Blend successive video frames.
18690
18691 See @ref{blend}
18692
18693 @section telecine
18694
18695 Apply telecine process to the video.
18696
18697 This filter accepts the following options:
18698
18699 @table @option
18700 @item first_field
18701 @table @samp
18702 @item top, t
18703 top field first
18704 @item bottom, b
18705 bottom field first
18706 The default value is @code{top}.
18707 @end table
18708
18709 @item pattern
18710 A string of numbers representing the pulldown pattern you wish to apply.
18711 The default value is @code{23}.
18712 @end table
18713
18714 @example
18715 Some typical patterns:
18716
18717 NTSC output (30i):
18718 27.5p: 32222
18719 24p: 23 (classic)
18720 24p: 2332 (preferred)
18721 20p: 33
18722 18p: 334
18723 16p: 3444
18724
18725 PAL output (25i):
18726 27.5p: 12222
18727 24p: 222222222223 ("Euro pulldown")
18728 16.67p: 33
18729 16p: 33333334
18730 @end example
18731
18732 @section thistogram
18733
18734 Compute and draw a color distribution histogram for the input video across time.
18735
18736 Unlike @ref{histogram} video filter which only shows histogram of single input frame
18737 at certain time, this filter shows also past histograms of number of frames defined
18738 by @code{width} option.
18739
18740 The computed histogram is a representation of the color component
18741 distribution in an image.
18742
18743 The filter accepts the following options:
18744
18745 @table @option
18746 @item width, w
18747 Set width of single color component output. Default value is @code{0}.
18748 Value of @code{0} means width will be picked from input video.
18749 This also set number of passed histograms to keep.
18750 Allowed range is [0, 8192].
18751
18752 @item display_mode, d
18753 Set display mode.
18754 It accepts the following values:
18755 @table @samp
18756 @item stack
18757 Per color component graphs are placed below each other.
18758
18759 @item parade
18760 Per color component graphs are placed side by side.
18761
18762 @item overlay
18763 Presents information identical to that in the @code{parade}, except
18764 that the graphs representing color components are superimposed directly
18765 over one another.
18766 @end table
18767 Default is @code{stack}.
18768
18769 @item levels_mode, m
18770 Set mode. Can be either @code{linear}, or @code{logarithmic}.
18771 Default is @code{linear}.
18772
18773 @item components, c
18774 Set what color components to display.
18775 Default is @code{7}.
18776
18777 @item bgopacity, b
18778 Set background opacity. Default is @code{0.9}.
18779
18780 @item envelope, e
18781 Show envelope. Default is disabled.
18782
18783 @item ecolor, ec
18784 Set envelope color. Default is @code{gold}.
18785
18786 @item slide
18787 Set slide mode.
18788
18789 Available values for slide is:
18790 @table @samp
18791 @item frame
18792 Draw new frame when right border is reached.
18793
18794 @item replace
18795 Replace old columns with new ones.
18796
18797 @item scroll
18798 Scroll from right to left.
18799
18800 @item rscroll
18801 Scroll from left to right.
18802
18803 @item picture
18804 Draw single picture.
18805 @end table
18806
18807 Default is @code{replace}.
18808 @end table
18809
18810 @section threshold
18811
18812 Apply threshold effect to video stream.
18813
18814 This filter needs four video streams to perform thresholding.
18815 First stream is stream we are filtering.
18816 Second stream is holding threshold values, third stream is holding min values,
18817 and last, fourth stream is holding max values.
18818
18819 The filter accepts the following option:
18820
18821 @table @option
18822 @item planes
18823 Set which planes will be processed, unprocessed planes will be copied.
18824 By default value 0xf, all planes will be processed.
18825 @end table
18826
18827 For example if first stream pixel's component value is less then threshold value
18828 of pixel component from 2nd threshold stream, third stream value will picked,
18829 otherwise fourth stream pixel component value will be picked.
18830
18831 Using color source filter one can perform various types of thresholding:
18832
18833 @subsection Examples
18834
18835 @itemize
18836 @item
18837 Binary threshold, using gray color as threshold:
18838 @example
18839 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
18840 @end example
18841
18842 @item
18843 Inverted binary threshold, using gray color as threshold:
18844 @example
18845 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
18846 @end example
18847
18848 @item
18849 Truncate binary threshold, using gray color as threshold:
18850 @example
18851 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
18852 @end example
18853
18854 @item
18855 Threshold to zero, using gray color as threshold:
18856 @example
18857 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
18858 @end example
18859
18860 @item
18861 Inverted threshold to zero, using gray color as threshold:
18862 @example
18863 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
18864 @end example
18865 @end itemize
18866
18867 @section thumbnail
18868 Select the most representative frame in a given sequence of consecutive frames.
18869
18870 The filter accepts the following options:
18871
18872 @table @option
18873 @item n
18874 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
18875 will pick one of them, and then handle the next batch of @var{n} frames until
18876 the end. Default is @code{100}.
18877 @end table
18878
18879 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
18880 value will result in a higher memory usage, so a high value is not recommended.
18881
18882 @subsection Examples
18883
18884 @itemize
18885 @item
18886 Extract one picture each 50 frames:
18887 @example
18888 thumbnail=50
18889 @end example
18890
18891 @item
18892 Complete example of a thumbnail creation with @command{ffmpeg}:
18893 @example
18894 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
18895 @end example
18896 @end itemize
18897
18898 @anchor{tile}
18899 @section tile
18900
18901 Tile several successive frames together.
18902
18903 The @ref{untile} filter can do the reverse.
18904
18905 The filter accepts the following options:
18906
18907 @table @option
18908
18909 @item layout
18910 Set the grid size (i.e. the number of lines and columns). For the syntax of
18911 this option, check the
18912 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18913
18914 @item nb_frames
18915 Set the maximum number of frames to render in the given area. It must be less
18916 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
18917 the area will be used.
18918
18919 @item margin
18920 Set the outer border margin in pixels.
18921
18922 @item padding
18923 Set the inner border thickness (i.e. the number of pixels between frames). For
18924 more advanced padding options (such as having different values for the edges),
18925 refer to the pad video filter.
18926
18927 @item color
18928 Specify the color of the unused area. For the syntax of this option, check the
18929 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18930 The default value of @var{color} is "black".
18931
18932 @item overlap
18933 Set the number of frames to overlap when tiling several successive frames together.
18934 The value must be between @code{0} and @var{nb_frames - 1}.
18935
18936 @item init_padding
18937 Set the number of frames to initially be empty before displaying first output frame.
18938 This controls how soon will one get first output frame.
18939 The value must be between @code{0} and @var{nb_frames - 1}.
18940 @end table
18941
18942 @subsection Examples
18943
18944 @itemize
18945 @item
18946 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
18947 @example
18948 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
18949 @end example
18950 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
18951 duplicating each output frame to accommodate the originally detected frame
18952 rate.
18953
18954 @item
18955 Display @code{5} pictures in an area of @code{3x2} frames,
18956 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
18957 mixed flat and named options:
18958 @example
18959 tile=3x2:nb_frames=5:padding=7:margin=2
18960 @end example
18961 @end itemize
18962
18963 @section tinterlace
18964
18965 Perform various types of temporal field interlacing.
18966
18967 Frames are counted starting from 1, so the first input frame is
18968 considered odd.
18969
18970 The filter accepts the following options:
18971
18972 @table @option
18973
18974 @item mode
18975 Specify the mode of the interlacing. This option can also be specified
18976 as a value alone. See below for a list of values for this option.
18977
18978 Available values are:
18979
18980 @table @samp
18981 @item merge, 0
18982 Move odd frames into the upper field, even into the lower field,
18983 generating a double height frame at half frame rate.
18984 @example
18985  ------> time
18986 Input:
18987 Frame 1         Frame 2         Frame 3         Frame 4
18988
18989 11111           22222           33333           44444
18990 11111           22222           33333           44444
18991 11111           22222           33333           44444
18992 11111           22222           33333           44444
18993
18994 Output:
18995 11111                           33333
18996 22222                           44444
18997 11111                           33333
18998 22222                           44444
18999 11111                           33333
19000 22222                           44444
19001 11111                           33333
19002 22222                           44444
19003 @end example
19004
19005 @item drop_even, 1
19006 Only output odd frames, even frames are dropped, generating a frame with
19007 unchanged height at half frame rate.
19008
19009 @example
19010  ------> time
19011 Input:
19012 Frame 1         Frame 2         Frame 3         Frame 4
19013
19014 11111           22222           33333           44444
19015 11111           22222           33333           44444
19016 11111           22222           33333           44444
19017 11111           22222           33333           44444
19018
19019 Output:
19020 11111                           33333
19021 11111                           33333
19022 11111                           33333
19023 11111                           33333
19024 @end example
19025
19026 @item drop_odd, 2
19027 Only output even frames, odd frames are dropped, generating a frame with
19028 unchanged height at half frame rate.
19029
19030 @example
19031  ------> time
19032 Input:
19033 Frame 1         Frame 2         Frame 3         Frame 4
19034
19035 11111           22222           33333           44444
19036 11111           22222           33333           44444
19037 11111           22222           33333           44444
19038 11111           22222           33333           44444
19039
19040 Output:
19041                 22222                           44444
19042                 22222                           44444
19043                 22222                           44444
19044                 22222                           44444
19045 @end example
19046
19047 @item pad, 3
19048 Expand each frame to full height, but pad alternate lines with black,
19049 generating a frame with double height at the same input frame rate.
19050
19051 @example
19052  ------> time
19053 Input:
19054 Frame 1         Frame 2         Frame 3         Frame 4
19055
19056 11111           22222           33333           44444
19057 11111           22222           33333           44444
19058 11111           22222           33333           44444
19059 11111           22222           33333           44444
19060
19061 Output:
19062 11111           .....           33333           .....
19063 .....           22222           .....           44444
19064 11111           .....           33333           .....
19065 .....           22222           .....           44444
19066 11111           .....           33333           .....
19067 .....           22222           .....           44444
19068 11111           .....           33333           .....
19069 .....           22222           .....           44444
19070 @end example
19071
19072
19073 @item interleave_top, 4
19074 Interleave the upper field from odd frames with the lower field from
19075 even frames, generating a frame with unchanged height at half frame rate.
19076
19077 @example
19078  ------> time
19079 Input:
19080 Frame 1         Frame 2         Frame 3         Frame 4
19081
19082 11111<-         22222           33333<-         44444
19083 11111           22222<-         33333           44444<-
19084 11111<-         22222           33333<-         44444
19085 11111           22222<-         33333           44444<-
19086
19087 Output:
19088 11111                           33333
19089 22222                           44444
19090 11111                           33333
19091 22222                           44444
19092 @end example
19093
19094
19095 @item interleave_bottom, 5
19096 Interleave the lower field from odd frames with the upper field from
19097 even frames, generating a frame with unchanged height at half frame rate.
19098
19099 @example
19100  ------> time
19101 Input:
19102 Frame 1         Frame 2         Frame 3         Frame 4
19103
19104 11111           22222<-         33333           44444<-
19105 11111<-         22222           33333<-         44444
19106 11111           22222<-         33333           44444<-
19107 11111<-         22222           33333<-         44444
19108
19109 Output:
19110 22222                           44444
19111 11111                           33333
19112 22222                           44444
19113 11111                           33333
19114 @end example
19115
19116
19117 @item interlacex2, 6
19118 Double frame rate with unchanged height. Frames are inserted each
19119 containing the second temporal field from the previous input frame and
19120 the first temporal field from the next input frame. This mode relies on
19121 the top_field_first flag. Useful for interlaced video displays with no
19122 field synchronisation.
19123
19124 @example
19125  ------> time
19126 Input:
19127 Frame 1         Frame 2         Frame 3         Frame 4
19128
19129 11111           22222           33333           44444
19130  11111           22222           33333           44444
19131 11111           22222           33333           44444
19132  11111           22222           33333           44444
19133
19134 Output:
19135 11111   22222   22222   33333   33333   44444   44444
19136  11111   11111   22222   22222   33333   33333   44444
19137 11111   22222   22222   33333   33333   44444   44444
19138  11111   11111   22222   22222   33333   33333   44444
19139 @end example
19140
19141
19142 @item mergex2, 7
19143 Move odd frames into the upper field, even into the lower field,
19144 generating a double height frame at same frame rate.
19145
19146 @example
19147  ------> time
19148 Input:
19149 Frame 1         Frame 2         Frame 3         Frame 4
19150
19151 11111           22222           33333           44444
19152 11111           22222           33333           44444
19153 11111           22222           33333           44444
19154 11111           22222           33333           44444
19155
19156 Output:
19157 11111           33333           33333           55555
19158 22222           22222           44444           44444
19159 11111           33333           33333           55555
19160 22222           22222           44444           44444
19161 11111           33333           33333           55555
19162 22222           22222           44444           44444
19163 11111           33333           33333           55555
19164 22222           22222           44444           44444
19165 @end example
19166
19167 @end table
19168
19169 Numeric values are deprecated but are accepted for backward
19170 compatibility reasons.
19171
19172 Default mode is @code{merge}.
19173
19174 @item flags
19175 Specify flags influencing the filter process.
19176
19177 Available value for @var{flags} is:
19178
19179 @table @option
19180 @item low_pass_filter, vlpf
19181 Enable linear vertical low-pass filtering in the filter.
19182 Vertical low-pass filtering is required when creating an interlaced
19183 destination from a progressive source which contains high-frequency
19184 vertical detail. Filtering will reduce interlace 'twitter' and Moire
19185 patterning.
19186
19187 @item complex_filter, cvlpf
19188 Enable complex vertical low-pass filtering.
19189 This will slightly less reduce interlace 'twitter' and Moire
19190 patterning but better retain detail and subjective sharpness impression.
19191
19192 @item bypass_il
19193 Bypass already interlaced frames, only adjust the frame rate.
19194 @end table
19195
19196 Vertical low-pass filtering and bypassing already interlaced frames can only be
19197 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
19198
19199 @end table
19200
19201 @section tmedian
19202 Pick median pixels from several successive input video frames.
19203
19204 The filter accepts the following options:
19205
19206 @table @option
19207 @item radius
19208 Set radius of median filter.
19209 Default is 1. Allowed range is from 1 to 127.
19210
19211 @item planes
19212 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
19213
19214 @item percentile
19215 Set median percentile. Default value is @code{0.5}.
19216 Default value of @code{0.5} will pick always median values, while @code{0} will pick
19217 minimum values, and @code{1} maximum values.
19218 @end table
19219
19220 @section tmix
19221
19222 Mix successive video frames.
19223
19224 A description of the accepted options follows.
19225
19226 @table @option
19227 @item frames
19228 The number of successive frames to mix. If unspecified, it defaults to 3.
19229
19230 @item weights
19231 Specify weight of each input video frame.
19232 Each weight is separated by space. If number of weights is smaller than
19233 number of @var{frames} last specified weight will be used for all remaining
19234 unset weights.
19235
19236 @item scale
19237 Specify scale, if it is set it will be multiplied with sum
19238 of each weight multiplied with pixel values to give final destination
19239 pixel value. By default @var{scale} is auto scaled to sum of weights.
19240 @end table
19241
19242 @subsection Examples
19243
19244 @itemize
19245 @item
19246 Average 7 successive frames:
19247 @example
19248 tmix=frames=7:weights="1 1 1 1 1 1 1"
19249 @end example
19250
19251 @item
19252 Apply simple temporal convolution:
19253 @example
19254 tmix=frames=3:weights="-1 3 -1"
19255 @end example
19256
19257 @item
19258 Similar as above but only showing temporal differences:
19259 @example
19260 tmix=frames=3:weights="-1 2 -1":scale=1
19261 @end example
19262 @end itemize
19263
19264 @anchor{tonemap}
19265 @section tonemap
19266 Tone map colors from different dynamic ranges.
19267
19268 This filter expects data in single precision floating point, as it needs to
19269 operate on (and can output) out-of-range values. Another filter, such as
19270 @ref{zscale}, is needed to convert the resulting frame to a usable format.
19271
19272 The tonemapping algorithms implemented only work on linear light, so input
19273 data should be linearized beforehand (and possibly correctly tagged).
19274
19275 @example
19276 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
19277 @end example
19278
19279 @subsection Options
19280 The filter accepts the following options.
19281
19282 @table @option
19283 @item tonemap
19284 Set the tone map algorithm to use.
19285
19286 Possible values are:
19287 @table @var
19288 @item none
19289 Do not apply any tone map, only desaturate overbright pixels.
19290
19291 @item clip
19292 Hard-clip any out-of-range values. Use it for perfect color accuracy for
19293 in-range values, while distorting out-of-range values.
19294
19295 @item linear
19296 Stretch the entire reference gamut to a linear multiple of the display.
19297
19298 @item gamma
19299 Fit a logarithmic transfer between the tone curves.
19300
19301 @item reinhard
19302 Preserve overall image brightness with a simple curve, using nonlinear
19303 contrast, which results in flattening details and degrading color accuracy.
19304
19305 @item hable
19306 Preserve both dark and bright details better than @var{reinhard}, at the cost
19307 of slightly darkening everything. Use it when detail preservation is more
19308 important than color and brightness accuracy.
19309
19310 @item mobius
19311 Smoothly map out-of-range values, while retaining contrast and colors for
19312 in-range material as much as possible. Use it when color accuracy is more
19313 important than detail preservation.
19314 @end table
19315
19316 Default is none.
19317
19318 @item param
19319 Tune the tone mapping algorithm.
19320
19321 This affects the following algorithms:
19322 @table @var
19323 @item none
19324 Ignored.
19325
19326 @item linear
19327 Specifies the scale factor to use while stretching.
19328 Default to 1.0.
19329
19330 @item gamma
19331 Specifies the exponent of the function.
19332 Default to 1.8.
19333
19334 @item clip
19335 Specify an extra linear coefficient to multiply into the signal before clipping.
19336 Default to 1.0.
19337
19338 @item reinhard
19339 Specify the local contrast coefficient at the display peak.
19340 Default to 0.5, which means that in-gamut values will be about half as bright
19341 as when clipping.
19342
19343 @item hable
19344 Ignored.
19345
19346 @item mobius
19347 Specify the transition point from linear to mobius transform. Every value
19348 below this point is guaranteed to be mapped 1:1. The higher the value, the
19349 more accurate the result will be, at the cost of losing bright details.
19350 Default to 0.3, which due to the steep initial slope still preserves in-range
19351 colors fairly accurately.
19352 @end table
19353
19354 @item desat
19355 Apply desaturation for highlights that exceed this level of brightness. The
19356 higher the parameter, the more color information will be preserved. This
19357 setting helps prevent unnaturally blown-out colors for super-highlights, by
19358 (smoothly) turning into white instead. This makes images feel more natural,
19359 at the cost of reducing information about out-of-range colors.
19360
19361 The default of 2.0 is somewhat conservative and will mostly just apply to
19362 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
19363
19364 This option works only if the input frame has a supported color tag.
19365
19366 @item peak
19367 Override signal/nominal/reference peak with this value. Useful when the
19368 embedded peak information in display metadata is not reliable or when tone
19369 mapping from a lower range to a higher range.
19370 @end table
19371
19372 @section tpad
19373
19374 Temporarily pad video frames.
19375
19376 The filter accepts the following options:
19377
19378 @table @option
19379 @item start
19380 Specify number of delay frames before input video stream. Default is 0.
19381
19382 @item stop
19383 Specify number of padding frames after input video stream.
19384 Set to -1 to pad indefinitely. Default is 0.
19385
19386 @item start_mode
19387 Set kind of frames added to beginning of stream.
19388 Can be either @var{add} or @var{clone}.
19389 With @var{add} frames of solid-color are added.
19390 With @var{clone} frames are clones of first frame.
19391 Default is @var{add}.
19392
19393 @item stop_mode
19394 Set kind of frames added to end of stream.
19395 Can be either @var{add} or @var{clone}.
19396 With @var{add} frames of solid-color are added.
19397 With @var{clone} frames are clones of last frame.
19398 Default is @var{add}.
19399
19400 @item start_duration, stop_duration
19401 Specify the duration of the start/stop delay. See
19402 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19403 for the accepted syntax.
19404 These options override @var{start} and @var{stop}. Default is 0.
19405
19406 @item color
19407 Specify the color of the padded area. For the syntax of this option,
19408 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
19409 manual,ffmpeg-utils}.
19410
19411 The default value of @var{color} is "black".
19412 @end table
19413
19414 @anchor{transpose}
19415 @section transpose
19416
19417 Transpose rows with columns in the input video and optionally flip it.
19418
19419 It accepts the following parameters:
19420
19421 @table @option
19422
19423 @item dir
19424 Specify the transposition direction.
19425
19426 Can assume the following values:
19427 @table @samp
19428 @item 0, 4, cclock_flip
19429 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
19430 @example
19431 L.R     L.l
19432 . . ->  . .
19433 l.r     R.r
19434 @end example
19435
19436 @item 1, 5, clock
19437 Rotate by 90 degrees clockwise, that is:
19438 @example
19439 L.R     l.L
19440 . . ->  . .
19441 l.r     r.R
19442 @end example
19443
19444 @item 2, 6, cclock
19445 Rotate by 90 degrees counterclockwise, that is:
19446 @example
19447 L.R     R.r
19448 . . ->  . .
19449 l.r     L.l
19450 @end example
19451
19452 @item 3, 7, clock_flip
19453 Rotate by 90 degrees clockwise and vertically flip, that is:
19454 @example
19455 L.R     r.R
19456 . . ->  . .
19457 l.r     l.L
19458 @end example
19459 @end table
19460
19461 For values between 4-7, the transposition is only done if the input
19462 video geometry is portrait and not landscape. These values are
19463 deprecated, the @code{passthrough} option should be used instead.
19464
19465 Numerical values are deprecated, and should be dropped in favor of
19466 symbolic constants.
19467
19468 @item passthrough
19469 Do not apply the transposition if the input geometry matches the one
19470 specified by the specified value. It accepts the following values:
19471 @table @samp
19472 @item none
19473 Always apply transposition.
19474 @item portrait
19475 Preserve portrait geometry (when @var{height} >= @var{width}).
19476 @item landscape
19477 Preserve landscape geometry (when @var{width} >= @var{height}).
19478 @end table
19479
19480 Default value is @code{none}.
19481 @end table
19482
19483 For example to rotate by 90 degrees clockwise and preserve portrait
19484 layout:
19485 @example
19486 transpose=dir=1:passthrough=portrait
19487 @end example
19488
19489 The command above can also be specified as:
19490 @example
19491 transpose=1:portrait
19492 @end example
19493
19494 @section transpose_npp
19495
19496 Transpose rows with columns in the input video and optionally flip it.
19497 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
19498
19499 It accepts the following parameters:
19500
19501 @table @option
19502
19503 @item dir
19504 Specify the transposition direction.
19505
19506 Can assume the following values:
19507 @table @samp
19508 @item cclock_flip
19509 Rotate by 90 degrees counterclockwise and vertically flip. (default)
19510
19511 @item clock
19512 Rotate by 90 degrees clockwise.
19513
19514 @item cclock
19515 Rotate by 90 degrees counterclockwise.
19516
19517 @item clock_flip
19518 Rotate by 90 degrees clockwise and vertically flip.
19519 @end table
19520
19521 @item passthrough
19522 Do not apply the transposition if the input geometry matches the one
19523 specified by the specified value. It accepts the following values:
19524 @table @samp
19525 @item none
19526 Always apply transposition. (default)
19527 @item portrait
19528 Preserve portrait geometry (when @var{height} >= @var{width}).
19529 @item landscape
19530 Preserve landscape geometry (when @var{width} >= @var{height}).
19531 @end table
19532
19533 @end table
19534
19535 @section trim
19536 Trim the input so that the output contains one continuous subpart of the input.
19537
19538 It accepts the following parameters:
19539 @table @option
19540 @item start
19541 Specify the time of the start of the kept section, i.e. the frame with the
19542 timestamp @var{start} will be the first frame in the output.
19543
19544 @item end
19545 Specify the time of the first frame that will be dropped, i.e. the frame
19546 immediately preceding the one with the timestamp @var{end} will be the last
19547 frame in the output.
19548
19549 @item start_pts
19550 This is the same as @var{start}, except this option sets the start timestamp
19551 in timebase units instead of seconds.
19552
19553 @item end_pts
19554 This is the same as @var{end}, except this option sets the end timestamp
19555 in timebase units instead of seconds.
19556
19557 @item duration
19558 The maximum duration of the output in seconds.
19559
19560 @item start_frame
19561 The number of the first frame that should be passed to the output.
19562
19563 @item end_frame
19564 The number of the first frame that should be dropped.
19565 @end table
19566
19567 @option{start}, @option{end}, and @option{duration} are expressed as time
19568 duration specifications; see
19569 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19570 for the accepted syntax.
19571
19572 Note that the first two sets of the start/end options and the @option{duration}
19573 option look at the frame timestamp, while the _frame variants simply count the
19574 frames that pass through the filter. Also note that this filter does not modify
19575 the timestamps. If you wish for the output timestamps to start at zero, insert a
19576 setpts filter after the trim filter.
19577
19578 If multiple start or end options are set, this filter tries to be greedy and
19579 keep all the frames that match at least one of the specified constraints. To keep
19580 only the part that matches all the constraints at once, chain multiple trim
19581 filters.
19582
19583 The defaults are such that all the input is kept. So it is possible to set e.g.
19584 just the end values to keep everything before the specified time.
19585
19586 Examples:
19587 @itemize
19588 @item
19589 Drop everything except the second minute of input:
19590 @example
19591 ffmpeg -i INPUT -vf trim=60:120
19592 @end example
19593
19594 @item
19595 Keep only the first second:
19596 @example
19597 ffmpeg -i INPUT -vf trim=duration=1
19598 @end example
19599
19600 @end itemize
19601
19602 @section unpremultiply
19603 Apply alpha unpremultiply effect to input video stream using first plane
19604 of second stream as alpha.
19605
19606 Both streams must have same dimensions and same pixel format.
19607
19608 The filter accepts the following option:
19609
19610 @table @option
19611 @item planes
19612 Set which planes will be processed, unprocessed planes will be copied.
19613 By default value 0xf, all planes will be processed.
19614
19615 If the format has 1 or 2 components, then luma is bit 0.
19616 If the format has 3 or 4 components:
19617 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
19618 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
19619 If present, the alpha channel is always the last bit.
19620
19621 @item inplace
19622 Do not require 2nd input for processing, instead use alpha plane from input stream.
19623 @end table
19624
19625 @anchor{unsharp}
19626 @section unsharp
19627
19628 Sharpen or blur the input video.
19629
19630 It accepts the following parameters:
19631
19632 @table @option
19633 @item luma_msize_x, lx
19634 Set the luma matrix horizontal size. It must be an odd integer between
19635 3 and 23. The default value is 5.
19636
19637 @item luma_msize_y, ly
19638 Set the luma matrix vertical size. It must be an odd integer between 3
19639 and 23. The default value is 5.
19640
19641 @item luma_amount, la
19642 Set the luma effect strength. It must be a floating point number, reasonable
19643 values lay between -1.5 and 1.5.
19644
19645 Negative values will blur the input video, while positive values will
19646 sharpen it, a value of zero will disable the effect.
19647
19648 Default value is 1.0.
19649
19650 @item chroma_msize_x, cx
19651 Set the chroma matrix horizontal size. It must be an odd integer
19652 between 3 and 23. The default value is 5.
19653
19654 @item chroma_msize_y, cy
19655 Set the chroma matrix vertical size. It must be an odd integer
19656 between 3 and 23. The default value is 5.
19657
19658 @item chroma_amount, ca
19659 Set the chroma effect strength. It must be a floating point number, reasonable
19660 values lay between -1.5 and 1.5.
19661
19662 Negative values will blur the input video, while positive values will
19663 sharpen it, a value of zero will disable the effect.
19664
19665 Default value is 0.0.
19666
19667 @end table
19668
19669 All parameters are optional and default to the equivalent of the
19670 string '5:5:1.0:5:5:0.0'.
19671
19672 @subsection Examples
19673
19674 @itemize
19675 @item
19676 Apply strong luma sharpen effect:
19677 @example
19678 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
19679 @end example
19680
19681 @item
19682 Apply a strong blur of both luma and chroma parameters:
19683 @example
19684 unsharp=7:7:-2:7:7:-2
19685 @end example
19686 @end itemize
19687
19688 @anchor{untile}
19689 @section untile
19690
19691 Decompose a video made of tiled images into the individual images.
19692
19693 The frame rate of the output video is the frame rate of the input video
19694 multiplied by the number of tiles.
19695
19696 This filter does the reverse of @ref{tile}.
19697
19698 The filter accepts the following options:
19699
19700 @table @option
19701
19702 @item layout
19703 Set the grid size (i.e. the number of lines and columns). For the syntax of
19704 this option, check the
19705 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19706 @end table
19707
19708 @subsection Examples
19709
19710 @itemize
19711 @item
19712 Produce a 1-second video from a still image file made of 25 frames stacked
19713 vertically, like an analogic film reel:
19714 @example
19715 ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
19716 @end example
19717 @end itemize
19718
19719 @section uspp
19720
19721 Apply ultra slow/simple postprocessing filter that compresses and decompresses
19722 the image at several (or - in the case of @option{quality} level @code{8} - all)
19723 shifts and average the results.
19724
19725 The way this differs from the behavior of spp is that uspp actually encodes &
19726 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
19727 DCT similar to MJPEG.
19728
19729 The filter accepts the following options:
19730
19731 @table @option
19732 @item quality
19733 Set quality. This option defines the number of levels for averaging. It accepts
19734 an integer in the range 0-8. If set to @code{0}, the filter will have no
19735 effect. A value of @code{8} means the higher quality. For each increment of
19736 that value the speed drops by a factor of approximately 2.  Default value is
19737 @code{3}.
19738
19739 @item qp
19740 Force a constant quantization parameter. If not set, the filter will use the QP
19741 from the video stream (if available).
19742 @end table
19743
19744 @section v360
19745
19746 Convert 360 videos between various formats.
19747
19748 The filter accepts the following options:
19749
19750 @table @option
19751
19752 @item input
19753 @item output
19754 Set format of the input/output video.
19755
19756 Available formats:
19757
19758 @table @samp
19759
19760 @item e
19761 @item equirect
19762 Equirectangular projection.
19763
19764 @item c3x2
19765 @item c6x1
19766 @item c1x6
19767 Cubemap with 3x2/6x1/1x6 layout.
19768
19769 Format specific options:
19770
19771 @table @option
19772 @item in_pad
19773 @item out_pad
19774 Set padding proportion for the input/output cubemap. Values in decimals.
19775
19776 Example values:
19777 @table @samp
19778 @item 0
19779 No padding.
19780 @item 0.01
19781 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)
19782 @end table
19783
19784 Default value is @b{@samp{0}}.
19785 Maximum value is @b{@samp{0.1}}.
19786
19787 @item fin_pad
19788 @item fout_pad
19789 Set fixed padding for the input/output cubemap. Values in pixels.
19790
19791 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
19792
19793 @item in_forder
19794 @item out_forder
19795 Set order of faces for the input/output cubemap. Choose one direction for each position.
19796
19797 Designation of directions:
19798 @table @samp
19799 @item r
19800 right
19801 @item l
19802 left
19803 @item u
19804 up
19805 @item d
19806 down
19807 @item f
19808 forward
19809 @item b
19810 back
19811 @end table
19812
19813 Default value is @b{@samp{rludfb}}.
19814
19815 @item in_frot
19816 @item out_frot
19817 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
19818
19819 Designation of angles:
19820 @table @samp
19821 @item 0
19822 0 degrees clockwise
19823 @item 1
19824 90 degrees clockwise
19825 @item 2
19826 180 degrees clockwise
19827 @item 3
19828 270 degrees clockwise
19829 @end table
19830
19831 Default value is @b{@samp{000000}}.
19832 @end table
19833
19834 @item eac
19835 Equi-Angular Cubemap.
19836
19837 @item flat
19838 @item gnomonic
19839 @item rectilinear
19840 Regular video.
19841
19842 Format specific options:
19843 @table @option
19844 @item h_fov
19845 @item v_fov
19846 @item d_fov
19847 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19848
19849 If diagonal field of view is set it overrides horizontal and vertical field of view.
19850
19851 @item ih_fov
19852 @item iv_fov
19853 @item id_fov
19854 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19855
19856 If diagonal field of view is set it overrides horizontal and vertical field of view.
19857 @end table
19858
19859 @item dfisheye
19860 Dual fisheye.
19861
19862 Format specific options:
19863 @table @option
19864 @item h_fov
19865 @item v_fov
19866 @item d_fov
19867 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19868
19869 If diagonal field of view is set it overrides horizontal and vertical field of view.
19870
19871 @item ih_fov
19872 @item iv_fov
19873 @item id_fov
19874 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19875
19876 If diagonal field of view is set it overrides horizontal and vertical field of view.
19877 @end table
19878
19879 @item barrel
19880 @item fb
19881 @item barrelsplit
19882 Facebook's 360 formats.
19883
19884 @item sg
19885 Stereographic format.
19886
19887 Format specific options:
19888 @table @option
19889 @item h_fov
19890 @item v_fov
19891 @item d_fov
19892 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19893
19894 If diagonal field of view is set it overrides horizontal and vertical field of view.
19895
19896 @item ih_fov
19897 @item iv_fov
19898 @item id_fov
19899 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19900
19901 If diagonal field of view is set it overrides horizontal and vertical field of view.
19902 @end table
19903
19904 @item mercator
19905 Mercator format.
19906
19907 @item ball
19908 Ball format, gives significant distortion toward the back.
19909
19910 @item hammer
19911 Hammer-Aitoff map projection format.
19912
19913 @item sinusoidal
19914 Sinusoidal map projection format.
19915
19916 @item fisheye
19917 Fisheye projection.
19918
19919 Format specific options:
19920 @table @option
19921 @item h_fov
19922 @item v_fov
19923 @item d_fov
19924 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19925
19926 If diagonal field of view is set it overrides horizontal and vertical field of view.
19927
19928 @item ih_fov
19929 @item iv_fov
19930 @item id_fov
19931 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19932
19933 If diagonal field of view is set it overrides horizontal and vertical field of view.
19934 @end table
19935
19936 @item pannini
19937 Pannini projection.
19938
19939 Format specific options:
19940 @table @option
19941 @item h_fov
19942 Set output pannini parameter.
19943
19944 @item ih_fov
19945 Set input pannini parameter.
19946 @end table
19947
19948 @item cylindrical
19949 Cylindrical projection.
19950
19951 Format specific options:
19952 @table @option
19953 @item h_fov
19954 @item v_fov
19955 @item d_fov
19956 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19957
19958 If diagonal field of view is set it overrides horizontal and vertical field of view.
19959
19960 @item ih_fov
19961 @item iv_fov
19962 @item id_fov
19963 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19964
19965 If diagonal field of view is set it overrides horizontal and vertical field of view.
19966 @end table
19967
19968 @item perspective
19969 Perspective projection. @i{(output only)}
19970
19971 Format specific options:
19972 @table @option
19973 @item v_fov
19974 Set perspective parameter.
19975 @end table
19976
19977 @item tetrahedron
19978 Tetrahedron projection.
19979
19980 @item tsp
19981 Truncated square pyramid projection.
19982
19983 @item he
19984 @item hequirect
19985 Half equirectangular projection.
19986
19987 @item equisolid
19988 Equisolid format.
19989
19990 Format specific options:
19991 @table @option
19992 @item h_fov
19993 @item v_fov
19994 @item d_fov
19995 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19996
19997 If diagonal field of view is set it overrides horizontal and vertical field of view.
19998
19999 @item ih_fov
20000 @item iv_fov
20001 @item id_fov
20002 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20003
20004 If diagonal field of view is set it overrides horizontal and vertical field of view.
20005 @end table
20006
20007 @item og
20008 Orthographic format.
20009
20010 Format specific options:
20011 @table @option
20012 @item h_fov
20013 @item v_fov
20014 @item d_fov
20015 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20016
20017 If diagonal field of view is set it overrides horizontal and vertical field of view.
20018
20019 @item ih_fov
20020 @item iv_fov
20021 @item id_fov
20022 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20023
20024 If diagonal field of view is set it overrides horizontal and vertical field of view.
20025 @end table
20026
20027 @item octahedron
20028 Octahedron projection.
20029 @end table
20030
20031 @item interp
20032 Set interpolation method.@*
20033 @i{Note: more complex interpolation methods require much more memory to run.}
20034
20035 Available methods:
20036
20037 @table @samp
20038 @item near
20039 @item nearest
20040 Nearest neighbour.
20041 @item line
20042 @item linear
20043 Bilinear interpolation.
20044 @item lagrange9
20045 Lagrange9 interpolation.
20046 @item cube
20047 @item cubic
20048 Bicubic interpolation.
20049 @item lanc
20050 @item lanczos
20051 Lanczos interpolation.
20052 @item sp16
20053 @item spline16
20054 Spline16 interpolation.
20055 @item gauss
20056 @item gaussian
20057 Gaussian interpolation.
20058 @item mitchell
20059 Mitchell interpolation.
20060 @end table
20061
20062 Default value is @b{@samp{line}}.
20063
20064 @item w
20065 @item h
20066 Set the output video resolution.
20067
20068 Default resolution depends on formats.
20069
20070 @item in_stereo
20071 @item out_stereo
20072 Set the input/output stereo format.
20073
20074 @table @samp
20075 @item 2d
20076 2D mono
20077 @item sbs
20078 Side by side
20079 @item tb
20080 Top bottom
20081 @end table
20082
20083 Default value is @b{@samp{2d}} for input and output format.
20084
20085 @item yaw
20086 @item pitch
20087 @item roll
20088 Set rotation for the output video. Values in degrees.
20089
20090 @item rorder
20091 Set rotation order for the output video. Choose one item for each position.
20092
20093 @table @samp
20094 @item y, Y
20095 yaw
20096 @item p, P
20097 pitch
20098 @item r, R
20099 roll
20100 @end table
20101
20102 Default value is @b{@samp{ypr}}.
20103
20104 @item h_flip
20105 @item v_flip
20106 @item d_flip
20107 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
20108
20109 @item ih_flip
20110 @item iv_flip
20111 Set if input video is flipped horizontally/vertically. Boolean values.
20112
20113 @item in_trans
20114 Set if input video is transposed. Boolean value, by default disabled.
20115
20116 @item out_trans
20117 Set if output video needs to be transposed. Boolean value, by default disabled.
20118
20119 @item alpha_mask
20120 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
20121 @end table
20122
20123 @subsection Examples
20124
20125 @itemize
20126 @item
20127 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
20128 @example
20129 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
20130 @end example
20131 @item
20132 Extract back view of Equi-Angular Cubemap:
20133 @example
20134 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
20135 @end example
20136 @item
20137 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
20138 @example
20139 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
20140 @end example
20141 @end itemize
20142
20143 @subsection Commands
20144
20145 This filter supports subset of above options as @ref{commands}.
20146
20147 @section vaguedenoiser
20148
20149 Apply a wavelet based denoiser.
20150
20151 It transforms each frame from the video input into the wavelet domain,
20152 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
20153 the obtained coefficients. It does an inverse wavelet transform after.
20154 Due to wavelet properties, it should give a nice smoothed result, and
20155 reduced noise, without blurring picture features.
20156
20157 This filter accepts the following options:
20158
20159 @table @option
20160 @item threshold
20161 The filtering strength. The higher, the more filtered the video will be.
20162 Hard thresholding can use a higher threshold than soft thresholding
20163 before the video looks overfiltered. Default value is 2.
20164
20165 @item method
20166 The filtering method the filter will use.
20167
20168 It accepts the following values:
20169 @table @samp
20170 @item hard
20171 All values under the threshold will be zeroed.
20172
20173 @item soft
20174 All values under the threshold will be zeroed. All values above will be
20175 reduced by the threshold.
20176
20177 @item garrote
20178 Scales or nullifies coefficients - intermediary between (more) soft and
20179 (less) hard thresholding.
20180 @end table
20181
20182 Default is garrote.
20183
20184 @item nsteps
20185 Number of times, the wavelet will decompose the picture. Picture can't
20186 be decomposed beyond a particular point (typically, 8 for a 640x480
20187 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
20188
20189 @item percent
20190 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
20191
20192 @item planes
20193 A list of the planes to process. By default all planes are processed.
20194
20195 @item type
20196 The threshold type the filter will use.
20197
20198 It accepts the following values:
20199 @table @samp
20200 @item universal
20201 Threshold used is same for all decompositions.
20202
20203 @item bayes
20204 Threshold used depends also on each decomposition coefficients.
20205 @end table
20206
20207 Default is universal.
20208 @end table
20209
20210 @section vectorscope
20211
20212 Display 2 color component values in the two dimensional graph (which is called
20213 a vectorscope).
20214
20215 This filter accepts the following options:
20216
20217 @table @option
20218 @item mode, m
20219 Set vectorscope mode.
20220
20221 It accepts the following values:
20222 @table @samp
20223 @item gray
20224 @item tint
20225 Gray values are displayed on graph, higher brightness means more pixels have
20226 same component color value on location in graph. This is the default mode.
20227
20228 @item color
20229 Gray values are displayed on graph. Surrounding pixels values which are not
20230 present in video frame are drawn in gradient of 2 color components which are
20231 set by option @code{x} and @code{y}. The 3rd color component is static.
20232
20233 @item color2
20234 Actual color components values present in video frame are displayed on graph.
20235
20236 @item color3
20237 Similar as color2 but higher frequency of same values @code{x} and @code{y}
20238 on graph increases value of another color component, which is luminance by
20239 default values of @code{x} and @code{y}.
20240
20241 @item color4
20242 Actual colors present in video frame are displayed on graph. If two different
20243 colors map to same position on graph then color with higher value of component
20244 not present in graph is picked.
20245
20246 @item color5
20247 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
20248 component picked from radial gradient.
20249 @end table
20250
20251 @item x
20252 Set which color component will be represented on X-axis. Default is @code{1}.
20253
20254 @item y
20255 Set which color component will be represented on Y-axis. Default is @code{2}.
20256
20257 @item intensity, i
20258 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
20259 of color component which represents frequency of (X, Y) location in graph.
20260
20261 @item envelope, e
20262 @table @samp
20263 @item none
20264 No envelope, this is default.
20265
20266 @item instant
20267 Instant envelope, even darkest single pixel will be clearly highlighted.
20268
20269 @item peak
20270 Hold maximum and minimum values presented in graph over time. This way you
20271 can still spot out of range values without constantly looking at vectorscope.
20272
20273 @item peak+instant
20274 Peak and instant envelope combined together.
20275 @end table
20276
20277 @item graticule, g
20278 Set what kind of graticule to draw.
20279 @table @samp
20280 @item none
20281 @item green
20282 @item color
20283 @item invert
20284 @end table
20285
20286 @item opacity, o
20287 Set graticule opacity.
20288
20289 @item flags, f
20290 Set graticule flags.
20291
20292 @table @samp
20293 @item white
20294 Draw graticule for white point.
20295
20296 @item black
20297 Draw graticule for black point.
20298
20299 @item name
20300 Draw color points short names.
20301 @end table
20302
20303 @item bgopacity, b
20304 Set background opacity.
20305
20306 @item lthreshold, l
20307 Set low threshold for color component not represented on X or Y axis.
20308 Values lower than this value will be ignored. Default is 0.
20309 Note this value is multiplied with actual max possible value one pixel component
20310 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
20311 is 0.1 * 255 = 25.
20312
20313 @item hthreshold, h
20314 Set high threshold for color component not represented on X or Y axis.
20315 Values higher than this value will be ignored. Default is 1.
20316 Note this value is multiplied with actual max possible value one pixel component
20317 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
20318 is 0.9 * 255 = 230.
20319
20320 @item colorspace, c
20321 Set what kind of colorspace to use when drawing graticule.
20322 @table @samp
20323 @item auto
20324 @item 601
20325 @item 709
20326 @end table
20327 Default is auto.
20328
20329 @item tint0, t0
20330 @item tint1, t1
20331 Set color tint for gray/tint vectorscope mode. By default both options are zero.
20332 This means no tint, and output will remain gray.
20333 @end table
20334
20335 @anchor{vidstabdetect}
20336 @section vidstabdetect
20337
20338 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
20339 @ref{vidstabtransform} for pass 2.
20340
20341 This filter generates a file with relative translation and rotation
20342 transform information about subsequent frames, which is then used by
20343 the @ref{vidstabtransform} filter.
20344
20345 To enable compilation of this filter you need to configure FFmpeg with
20346 @code{--enable-libvidstab}.
20347
20348 This filter accepts the following options:
20349
20350 @table @option
20351 @item result
20352 Set the path to the file used to write the transforms information.
20353 Default value is @file{transforms.trf}.
20354
20355 @item shakiness
20356 Set how shaky the video is and how quick the camera is. It accepts an
20357 integer in the range 1-10, a value of 1 means little shakiness, a
20358 value of 10 means strong shakiness. Default value is 5.
20359
20360 @item accuracy
20361 Set the accuracy of the detection process. It must be a value in the
20362 range 1-15. A value of 1 means low accuracy, a value of 15 means high
20363 accuracy. Default value is 15.
20364
20365 @item stepsize
20366 Set stepsize of the search process. The region around minimum is
20367 scanned with 1 pixel resolution. Default value is 6.
20368
20369 @item mincontrast
20370 Set minimum contrast. Below this value a local measurement field is
20371 discarded. Must be a floating point value in the range 0-1. Default
20372 value is 0.3.
20373
20374 @item tripod
20375 Set reference frame number for tripod mode.
20376
20377 If enabled, the motion of the frames is compared to a reference frame
20378 in the filtered stream, identified by the specified number. The idea
20379 is to compensate all movements in a more-or-less static scene and keep
20380 the camera view absolutely still.
20381
20382 If set to 0, it is disabled. The frames are counted starting from 1.
20383
20384 @item show
20385 Show fields and transforms in the resulting frames. It accepts an
20386 integer in the range 0-2. Default value is 0, which disables any
20387 visualization.
20388 @end table
20389
20390 @subsection Examples
20391
20392 @itemize
20393 @item
20394 Use default values:
20395 @example
20396 vidstabdetect
20397 @end example
20398
20399 @item
20400 Analyze strongly shaky movie and put the results in file
20401 @file{mytransforms.trf}:
20402 @example
20403 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
20404 @end example
20405
20406 @item
20407 Visualize the result of internal transformations in the resulting
20408 video:
20409 @example
20410 vidstabdetect=show=1
20411 @end example
20412
20413 @item
20414 Analyze a video with medium shakiness using @command{ffmpeg}:
20415 @example
20416 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
20417 @end example
20418 @end itemize
20419
20420 @anchor{vidstabtransform}
20421 @section vidstabtransform
20422
20423 Video stabilization/deshaking: pass 2 of 2,
20424 see @ref{vidstabdetect} for pass 1.
20425
20426 Read a file with transform information for each frame and
20427 apply/compensate them. Together with the @ref{vidstabdetect}
20428 filter this can be used to deshake videos. See also
20429 @url{http://public.hronopik.de/vid.stab}. It is important to also use
20430 the @ref{unsharp} filter, see below.
20431
20432 To enable compilation of this filter you need to configure FFmpeg with
20433 @code{--enable-libvidstab}.
20434
20435 @subsection Options
20436
20437 @table @option
20438 @item input
20439 Set path to the file used to read the transforms. Default value is
20440 @file{transforms.trf}.
20441
20442 @item smoothing
20443 Set the number of frames (value*2 + 1) used for lowpass filtering the
20444 camera movements. Default value is 10.
20445
20446 For example a number of 10 means that 21 frames are used (10 in the
20447 past and 10 in the future) to smoothen the motion in the video. A
20448 larger value leads to a smoother video, but limits the acceleration of
20449 the camera (pan/tilt movements). 0 is a special case where a static
20450 camera is simulated.
20451
20452 @item optalgo
20453 Set the camera path optimization algorithm.
20454
20455 Accepted values are:
20456 @table @samp
20457 @item gauss
20458 gaussian kernel low-pass filter on camera motion (default)
20459 @item avg
20460 averaging on transformations
20461 @end table
20462
20463 @item maxshift
20464 Set maximal number of pixels to translate frames. Default value is -1,
20465 meaning no limit.
20466
20467 @item maxangle
20468 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
20469 value is -1, meaning no limit.
20470
20471 @item crop
20472 Specify how to deal with borders that may be visible due to movement
20473 compensation.
20474
20475 Available values are:
20476 @table @samp
20477 @item keep
20478 keep image information from previous frame (default)
20479 @item black
20480 fill the border black
20481 @end table
20482
20483 @item invert
20484 Invert transforms if set to 1. Default value is 0.
20485
20486 @item relative
20487 Consider transforms as relative to previous frame if set to 1,
20488 absolute if set to 0. Default value is 0.
20489
20490 @item zoom
20491 Set percentage to zoom. A positive value will result in a zoom-in
20492 effect, a negative value in a zoom-out effect. Default value is 0 (no
20493 zoom).
20494
20495 @item optzoom
20496 Set optimal zooming to avoid borders.
20497
20498 Accepted values are:
20499 @table @samp
20500 @item 0
20501 disabled
20502 @item 1
20503 optimal static zoom value is determined (only very strong movements
20504 will lead to visible borders) (default)
20505 @item 2
20506 optimal adaptive zoom value is determined (no borders will be
20507 visible), see @option{zoomspeed}
20508 @end table
20509
20510 Note that the value given at zoom is added to the one calculated here.
20511
20512 @item zoomspeed
20513 Set percent to zoom maximally each frame (enabled when
20514 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
20515 0.25.
20516
20517 @item interpol
20518 Specify type of interpolation.
20519
20520 Available values are:
20521 @table @samp
20522 @item no
20523 no interpolation
20524 @item linear
20525 linear only horizontal
20526 @item bilinear
20527 linear in both directions (default)
20528 @item bicubic
20529 cubic in both directions (slow)
20530 @end table
20531
20532 @item tripod
20533 Enable virtual tripod mode if set to 1, which is equivalent to
20534 @code{relative=0:smoothing=0}. Default value is 0.
20535
20536 Use also @code{tripod} option of @ref{vidstabdetect}.
20537
20538 @item debug
20539 Increase log verbosity if set to 1. Also the detected global motions
20540 are written to the temporary file @file{global_motions.trf}. Default
20541 value is 0.
20542 @end table
20543
20544 @subsection Examples
20545
20546 @itemize
20547 @item
20548 Use @command{ffmpeg} for a typical stabilization with default values:
20549 @example
20550 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
20551 @end example
20552
20553 Note the use of the @ref{unsharp} filter which is always recommended.
20554
20555 @item
20556 Zoom in a bit more and load transform data from a given file:
20557 @example
20558 vidstabtransform=zoom=5:input="mytransforms.trf"
20559 @end example
20560
20561 @item
20562 Smoothen the video even more:
20563 @example
20564 vidstabtransform=smoothing=30
20565 @end example
20566 @end itemize
20567
20568 @section vflip
20569
20570 Flip the input video vertically.
20571
20572 For example, to vertically flip a video with @command{ffmpeg}:
20573 @example
20574 ffmpeg -i in.avi -vf "vflip" out.avi
20575 @end example
20576
20577 @section vfrdet
20578
20579 Detect variable frame rate video.
20580
20581 This filter tries to detect if the input is variable or constant frame rate.
20582
20583 At end it will output number of frames detected as having variable delta pts,
20584 and ones with constant delta pts.
20585 If there was frames with variable delta, than it will also show min, max and
20586 average delta encountered.
20587
20588 @section vibrance
20589
20590 Boost or alter saturation.
20591
20592 The filter accepts the following options:
20593 @table @option
20594 @item intensity
20595 Set strength of boost if positive value or strength of alter if negative value.
20596 Default is 0. Allowed range is from -2 to 2.
20597
20598 @item rbal
20599 Set the red balance. Default is 1. Allowed range is from -10 to 10.
20600
20601 @item gbal
20602 Set the green balance. Default is 1. Allowed range is from -10 to 10.
20603
20604 @item bbal
20605 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
20606
20607 @item rlum
20608 Set the red luma coefficient.
20609
20610 @item glum
20611 Set the green luma coefficient.
20612
20613 @item blum
20614 Set the blue luma coefficient.
20615
20616 @item alternate
20617 If @code{intensity} is negative and this is set to 1, colors will change,
20618 otherwise colors will be less saturated, more towards gray.
20619 @end table
20620
20621 @subsection Commands
20622
20623 This filter supports the all above options as @ref{commands}.
20624
20625 @anchor{vignette}
20626 @section vignette
20627
20628 Make or reverse a natural vignetting effect.
20629
20630 The filter accepts the following options:
20631
20632 @table @option
20633 @item angle, a
20634 Set lens angle expression as a number of radians.
20635
20636 The value is clipped in the @code{[0,PI/2]} range.
20637
20638 Default value: @code{"PI/5"}
20639
20640 @item x0
20641 @item y0
20642 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
20643 by default.
20644
20645 @item mode
20646 Set forward/backward mode.
20647
20648 Available modes are:
20649 @table @samp
20650 @item forward
20651 The larger the distance from the central point, the darker the image becomes.
20652
20653 @item backward
20654 The larger the distance from the central point, the brighter the image becomes.
20655 This can be used to reverse a vignette effect, though there is no automatic
20656 detection to extract the lens @option{angle} and other settings (yet). It can
20657 also be used to create a burning effect.
20658 @end table
20659
20660 Default value is @samp{forward}.
20661
20662 @item eval
20663 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
20664
20665 It accepts the following values:
20666 @table @samp
20667 @item init
20668 Evaluate expressions only once during the filter initialization.
20669
20670 @item frame
20671 Evaluate expressions for each incoming frame. This is way slower than the
20672 @samp{init} mode since it requires all the scalers to be re-computed, but it
20673 allows advanced dynamic expressions.
20674 @end table
20675
20676 Default value is @samp{init}.
20677
20678 @item dither
20679 Set dithering to reduce the circular banding effects. Default is @code{1}
20680 (enabled).
20681
20682 @item aspect
20683 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
20684 Setting this value to the SAR of the input will make a rectangular vignetting
20685 following the dimensions of the video.
20686
20687 Default is @code{1/1}.
20688 @end table
20689
20690 @subsection Expressions
20691
20692 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
20693 following parameters.
20694
20695 @table @option
20696 @item w
20697 @item h
20698 input width and height
20699
20700 @item n
20701 the number of input frame, starting from 0
20702
20703 @item pts
20704 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
20705 @var{TB} units, NAN if undefined
20706
20707 @item r
20708 frame rate of the input video, NAN if the input frame rate is unknown
20709
20710 @item t
20711 the PTS (Presentation TimeStamp) of the filtered video frame,
20712 expressed in seconds, NAN if undefined
20713
20714 @item tb
20715 time base of the input video
20716 @end table
20717
20718
20719 @subsection Examples
20720
20721 @itemize
20722 @item
20723 Apply simple strong vignetting effect:
20724 @example
20725 vignette=PI/4
20726 @end example
20727
20728 @item
20729 Make a flickering vignetting:
20730 @example
20731 vignette='PI/4+random(1)*PI/50':eval=frame
20732 @end example
20733
20734 @end itemize
20735
20736 @section vmafmotion
20737
20738 Obtain the average VMAF motion score of a video.
20739 It is one of the component metrics of VMAF.
20740
20741 The obtained average motion score is printed through the logging system.
20742
20743 The filter accepts the following options:
20744
20745 @table @option
20746 @item stats_file
20747 If specified, the filter will use the named file to save the motion score of
20748 each frame with respect to the previous frame.
20749 When filename equals "-" the data is sent to standard output.
20750 @end table
20751
20752 Example:
20753 @example
20754 ffmpeg -i ref.mpg -vf vmafmotion -f null -
20755 @end example
20756
20757 @section vstack
20758 Stack input videos vertically.
20759
20760 All streams must be of same pixel format and of same width.
20761
20762 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
20763 to create same output.
20764
20765 The filter accepts the following options:
20766
20767 @table @option
20768 @item inputs
20769 Set number of input streams. Default is 2.
20770
20771 @item shortest
20772 If set to 1, force the output to terminate when the shortest input
20773 terminates. Default value is 0.
20774 @end table
20775
20776 @section w3fdif
20777
20778 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
20779 Deinterlacing Filter").
20780
20781 Based on the process described by Martin Weston for BBC R&D, and
20782 implemented based on the de-interlace algorithm written by Jim
20783 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
20784 uses filter coefficients calculated by BBC R&D.
20785
20786 This filter uses field-dominance information in frame to decide which
20787 of each pair of fields to place first in the output.
20788 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
20789
20790 There are two sets of filter coefficients, so called "simple"
20791 and "complex". Which set of filter coefficients is used can
20792 be set by passing an optional parameter:
20793
20794 @table @option
20795 @item filter
20796 Set the interlacing filter coefficients. Accepts one of the following values:
20797
20798 @table @samp
20799 @item simple
20800 Simple filter coefficient set.
20801 @item complex
20802 More-complex filter coefficient set.
20803 @end table
20804 Default value is @samp{complex}.
20805
20806 @item deint
20807 Specify which frames to deinterlace. Accepts one of the following values:
20808
20809 @table @samp
20810 @item all
20811 Deinterlace all frames,
20812 @item interlaced
20813 Only deinterlace frames marked as interlaced.
20814 @end table
20815
20816 Default value is @samp{all}.
20817 @end table
20818
20819 @section waveform
20820 Video waveform monitor.
20821
20822 The waveform monitor plots color component intensity. By default luminance
20823 only. Each column of the waveform corresponds to a column of pixels in the
20824 source video.
20825
20826 It accepts the following options:
20827
20828 @table @option
20829 @item mode, m
20830 Can be either @code{row}, or @code{column}. Default is @code{column}.
20831 In row mode, the graph on the left side represents color component value 0 and
20832 the right side represents value = 255. In column mode, the top side represents
20833 color component value = 0 and bottom side represents value = 255.
20834
20835 @item intensity, i
20836 Set intensity. Smaller values are useful to find out how many values of the same
20837 luminance are distributed across input rows/columns.
20838 Default value is @code{0.04}. Allowed range is [0, 1].
20839
20840 @item mirror, r
20841 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
20842 In mirrored mode, higher values will be represented on the left
20843 side for @code{row} mode and at the top for @code{column} mode. Default is
20844 @code{1} (mirrored).
20845
20846 @item display, d
20847 Set display mode.
20848 It accepts the following values:
20849 @table @samp
20850 @item overlay
20851 Presents information identical to that in the @code{parade}, except
20852 that the graphs representing color components are superimposed directly
20853 over one another.
20854
20855 This display mode makes it easier to spot relative differences or similarities
20856 in overlapping areas of the color components that are supposed to be identical,
20857 such as neutral whites, grays, or blacks.
20858
20859 @item stack
20860 Display separate graph for the color components side by side in
20861 @code{row} mode or one below the other in @code{column} mode.
20862
20863 @item parade
20864 Display separate graph for the color components side by side in
20865 @code{column} mode or one below the other in @code{row} mode.
20866
20867 Using this display mode makes it easy to spot color casts in the highlights
20868 and shadows of an image, by comparing the contours of the top and the bottom
20869 graphs of each waveform. Since whites, grays, and blacks are characterized
20870 by exactly equal amounts of red, green, and blue, neutral areas of the picture
20871 should display three waveforms of roughly equal width/height. If not, the
20872 correction is easy to perform by making level adjustments the three waveforms.
20873 @end table
20874 Default is @code{stack}.
20875
20876 @item components, c
20877 Set which color components to display. Default is 1, which means only luminance
20878 or red color component if input is in RGB colorspace. If is set for example to
20879 7 it will display all 3 (if) available color components.
20880
20881 @item envelope, e
20882 @table @samp
20883 @item none
20884 No envelope, this is default.
20885
20886 @item instant
20887 Instant envelope, minimum and maximum values presented in graph will be easily
20888 visible even with small @code{step} value.
20889
20890 @item peak
20891 Hold minimum and maximum values presented in graph across time. This way you
20892 can still spot out of range values without constantly looking at waveforms.
20893
20894 @item peak+instant
20895 Peak and instant envelope combined together.
20896 @end table
20897
20898 @item filter, f
20899 @table @samp
20900 @item lowpass
20901 No filtering, this is default.
20902
20903 @item flat
20904 Luma and chroma combined together.
20905
20906 @item aflat
20907 Similar as above, but shows difference between blue and red chroma.
20908
20909 @item xflat
20910 Similar as above, but use different colors.
20911
20912 @item yflat
20913 Similar as above, but again with different colors.
20914
20915 @item chroma
20916 Displays only chroma.
20917
20918 @item color
20919 Displays actual color value on waveform.
20920
20921 @item acolor
20922 Similar as above, but with luma showing frequency of chroma values.
20923 @end table
20924
20925 @item graticule, g
20926 Set which graticule to display.
20927
20928 @table @samp
20929 @item none
20930 Do not display graticule.
20931
20932 @item green
20933 Display green graticule showing legal broadcast ranges.
20934
20935 @item orange
20936 Display orange graticule showing legal broadcast ranges.
20937
20938 @item invert
20939 Display invert graticule showing legal broadcast ranges.
20940 @end table
20941
20942 @item opacity, o
20943 Set graticule opacity.
20944
20945 @item flags, fl
20946 Set graticule flags.
20947
20948 @table @samp
20949 @item numbers
20950 Draw numbers above lines. By default enabled.
20951
20952 @item dots
20953 Draw dots instead of lines.
20954 @end table
20955
20956 @item scale, s
20957 Set scale used for displaying graticule.
20958
20959 @table @samp
20960 @item digital
20961 @item millivolts
20962 @item ire
20963 @end table
20964 Default is digital.
20965
20966 @item bgopacity, b
20967 Set background opacity.
20968
20969 @item tint0, t0
20970 @item tint1, t1
20971 Set tint for output.
20972 Only used with lowpass filter and when display is not overlay and input
20973 pixel formats are not RGB.
20974 @end table
20975
20976 @section weave, doubleweave
20977
20978 The @code{weave} takes a field-based video input and join
20979 each two sequential fields into single frame, producing a new double
20980 height clip with half the frame rate and half the frame count.
20981
20982 The @code{doubleweave} works same as @code{weave} but without
20983 halving frame rate and frame count.
20984
20985 It accepts the following option:
20986
20987 @table @option
20988 @item first_field
20989 Set first field. Available values are:
20990
20991 @table @samp
20992 @item top, t
20993 Set the frame as top-field-first.
20994
20995 @item bottom, b
20996 Set the frame as bottom-field-first.
20997 @end table
20998 @end table
20999
21000 @subsection Examples
21001
21002 @itemize
21003 @item
21004 Interlace video using @ref{select} and @ref{separatefields} filter:
21005 @example
21006 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
21007 @end example
21008 @end itemize
21009
21010 @section xbr
21011 Apply the xBR high-quality magnification filter which is designed for pixel
21012 art. It follows a set of edge-detection rules, see
21013 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
21014
21015 It accepts the following option:
21016
21017 @table @option
21018 @item n
21019 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
21020 @code{3xBR} and @code{4} for @code{4xBR}.
21021 Default is @code{3}.
21022 @end table
21023
21024 @section xfade
21025
21026 Apply cross fade from one input video stream to another input video stream.
21027 The cross fade is applied for specified duration.
21028
21029 The filter accepts the following options:
21030
21031 @table @option
21032 @item transition
21033 Set one of available transition effects:
21034
21035 @table @samp
21036 @item custom
21037 @item fade
21038 @item wipeleft
21039 @item wiperight
21040 @item wipeup
21041 @item wipedown
21042 @item slideleft
21043 @item slideright
21044 @item slideup
21045 @item slidedown
21046 @item circlecrop
21047 @item rectcrop
21048 @item distance
21049 @item fadeblack
21050 @item fadewhite
21051 @item radial
21052 @item smoothleft
21053 @item smoothright
21054 @item smoothup
21055 @item smoothdown
21056 @item circleopen
21057 @item circleclose
21058 @item vertopen
21059 @item vertclose
21060 @item horzopen
21061 @item horzclose
21062 @item dissolve
21063 @item pixelize
21064 @item diagtl
21065 @item diagtr
21066 @item diagbl
21067 @item diagbr
21068 @item hlslice
21069 @item hrslice
21070 @item vuslice
21071 @item vdslice
21072 @item hblur
21073 @item fadegrays
21074 @item wipetl
21075 @item wipetr
21076 @item wipebl
21077 @item wipebr
21078 @item squeezeh
21079 @item squeezev
21080 @end table
21081 Default transition effect is fade.
21082
21083 @item duration
21084 Set cross fade duration in seconds.
21085 Default duration is 1 second.
21086
21087 @item offset
21088 Set cross fade start relative to first input stream in seconds.
21089 Default offset is 0.
21090
21091 @item expr
21092 Set expression for custom transition effect.
21093
21094 The expressions can use the following variables and functions:
21095
21096 @table @option
21097 @item X
21098 @item Y
21099 The coordinates of the current sample.
21100
21101 @item W
21102 @item H
21103 The width and height of the image.
21104
21105 @item P
21106 Progress of transition effect.
21107
21108 @item PLANE
21109 Currently processed plane.
21110
21111 @item A
21112 Return value of first input at current location and plane.
21113
21114 @item B
21115 Return value of second input at current location and plane.
21116
21117 @item a0(x, y)
21118 @item a1(x, y)
21119 @item a2(x, y)
21120 @item a3(x, y)
21121 Return the value of the pixel at location (@var{x},@var{y}) of the
21122 first/second/third/fourth component of first input.
21123
21124 @item b0(x, y)
21125 @item b1(x, y)
21126 @item b2(x, y)
21127 @item b3(x, y)
21128 Return the value of the pixel at location (@var{x},@var{y}) of the
21129 first/second/third/fourth component of second input.
21130 @end table
21131 @end table
21132
21133 @subsection Examples
21134
21135 @itemize
21136 @item
21137 Cross fade from one input video to another input video, with fade transition and duration of transition
21138 of 2 seconds starting at offset of 5 seconds:
21139 @example
21140 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
21141 @end example
21142 @end itemize
21143
21144 @section xmedian
21145 Pick median pixels from several input videos.
21146
21147 The filter accepts the following options:
21148
21149 @table @option
21150 @item inputs
21151 Set number of inputs.
21152 Default is 3. Allowed range is from 3 to 255.
21153 If number of inputs is even number, than result will be mean value between two median values.
21154
21155 @item planes
21156 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
21157
21158 @item percentile
21159 Set median percentile. Default value is @code{0.5}.
21160 Default value of @code{0.5} will pick always median values, while @code{0} will pick
21161 minimum values, and @code{1} maximum values.
21162 @end table
21163
21164 @section xstack
21165 Stack video inputs into custom layout.
21166
21167 All streams must be of same pixel format.
21168
21169 The filter accepts the following options:
21170
21171 @table @option
21172 @item inputs
21173 Set number of input streams. Default is 2.
21174
21175 @item layout
21176 Specify layout of inputs.
21177 This option requires the desired layout configuration to be explicitly set by the user.
21178 This sets position of each video input in output. Each input
21179 is separated by '|'.
21180 The first number represents the column, and the second number represents the row.
21181 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
21182 where X is video input from which to take width or height.
21183 Multiple values can be used when separated by '+'. In such
21184 case values are summed together.
21185
21186 Note that if inputs are of different sizes gaps may appear, as not all of
21187 the output video frame will be filled. Similarly, videos can overlap each
21188 other if their position doesn't leave enough space for the full frame of
21189 adjoining videos.
21190
21191 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
21192 a layout must be set by the user.
21193
21194 @item shortest
21195 If set to 1, force the output to terminate when the shortest input
21196 terminates. Default value is 0.
21197
21198 @item fill
21199 If set to valid color, all unused pixels will be filled with that color.
21200 By default fill is set to none, so it is disabled.
21201 @end table
21202
21203 @subsection Examples
21204
21205 @itemize
21206 @item
21207 Display 4 inputs into 2x2 grid.
21208
21209 Layout:
21210 @example
21211 input1(0, 0)  | input3(w0, 0)
21212 input2(0, h0) | input4(w0, h0)
21213 @end example
21214
21215 @example
21216 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
21217 @end example
21218
21219 Note that if inputs are of different sizes, gaps or overlaps may occur.
21220
21221 @item
21222 Display 4 inputs into 1x4 grid.
21223
21224 Layout:
21225 @example
21226 input1(0, 0)
21227 input2(0, h0)
21228 input3(0, h0+h1)
21229 input4(0, h0+h1+h2)
21230 @end example
21231
21232 @example
21233 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
21234 @end example
21235
21236 Note that if inputs are of different widths, unused space will appear.
21237
21238 @item
21239 Display 9 inputs into 3x3 grid.
21240
21241 Layout:
21242 @example
21243 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
21244 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
21245 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
21246 @end example
21247
21248 @example
21249 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
21250 @end example
21251
21252 Note that if inputs are of different sizes, gaps or overlaps may occur.
21253
21254 @item
21255 Display 16 inputs into 4x4 grid.
21256
21257 Layout:
21258 @example
21259 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
21260 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
21261 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
21262 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
21263 @end example
21264
21265 @example
21266 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|
21267 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
21268 @end example
21269
21270 Note that if inputs are of different sizes, gaps or overlaps may occur.
21271
21272 @end itemize
21273
21274 @anchor{yadif}
21275 @section yadif
21276
21277 Deinterlace the input video ("yadif" means "yet another deinterlacing
21278 filter").
21279
21280 It accepts the following parameters:
21281
21282
21283 @table @option
21284
21285 @item mode
21286 The interlacing mode to adopt. It accepts one of the following values:
21287
21288 @table @option
21289 @item 0, send_frame
21290 Output one frame for each frame.
21291 @item 1, send_field
21292 Output one frame for each field.
21293 @item 2, send_frame_nospatial
21294 Like @code{send_frame}, but it skips the spatial interlacing check.
21295 @item 3, send_field_nospatial
21296 Like @code{send_field}, but it skips the spatial interlacing check.
21297 @end table
21298
21299 The default value is @code{send_frame}.
21300
21301 @item parity
21302 The picture field parity assumed for the input interlaced video. It accepts one
21303 of the following values:
21304
21305 @table @option
21306 @item 0, tff
21307 Assume the top field is first.
21308 @item 1, bff
21309 Assume the bottom field is first.
21310 @item -1, auto
21311 Enable automatic detection of field parity.
21312 @end table
21313
21314 The default value is @code{auto}.
21315 If the interlacing is unknown or the decoder does not export this information,
21316 top field first will be assumed.
21317
21318 @item deint
21319 Specify which frames to deinterlace. Accepts one of the following
21320 values:
21321
21322 @table @option
21323 @item 0, all
21324 Deinterlace all frames.
21325 @item 1, interlaced
21326 Only deinterlace frames marked as interlaced.
21327 @end table
21328
21329 The default value is @code{all}.
21330 @end table
21331
21332 @section yadif_cuda
21333
21334 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
21335 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
21336 and/or nvenc.
21337
21338 It accepts the following parameters:
21339
21340
21341 @table @option
21342
21343 @item mode
21344 The interlacing mode to adopt. It accepts one of the following values:
21345
21346 @table @option
21347 @item 0, send_frame
21348 Output one frame for each frame.
21349 @item 1, send_field
21350 Output one frame for each field.
21351 @item 2, send_frame_nospatial
21352 Like @code{send_frame}, but it skips the spatial interlacing check.
21353 @item 3, send_field_nospatial
21354 Like @code{send_field}, but it skips the spatial interlacing check.
21355 @end table
21356
21357 The default value is @code{send_frame}.
21358
21359 @item parity
21360 The picture field parity assumed for the input interlaced video. It accepts one
21361 of the following values:
21362
21363 @table @option
21364 @item 0, tff
21365 Assume the top field is first.
21366 @item 1, bff
21367 Assume the bottom field is first.
21368 @item -1, auto
21369 Enable automatic detection of field parity.
21370 @end table
21371
21372 The default value is @code{auto}.
21373 If the interlacing is unknown or the decoder does not export this information,
21374 top field first will be assumed.
21375
21376 @item deint
21377 Specify which frames to deinterlace. Accepts one of the following
21378 values:
21379
21380 @table @option
21381 @item 0, all
21382 Deinterlace all frames.
21383 @item 1, interlaced
21384 Only deinterlace frames marked as interlaced.
21385 @end table
21386
21387 The default value is @code{all}.
21388 @end table
21389
21390 @section yaepblur
21391
21392 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
21393 The algorithm is described in
21394 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
21395
21396 It accepts the following parameters:
21397
21398 @table @option
21399 @item radius, r
21400 Set the window radius. Default value is 3.
21401
21402 @item planes, p
21403 Set which planes to filter. Default is only the first plane.
21404
21405 @item sigma, s
21406 Set blur strength. Default value is 128.
21407 @end table
21408
21409 @subsection Commands
21410 This filter supports same @ref{commands} as options.
21411
21412 @section zoompan
21413
21414 Apply Zoom & Pan effect.
21415
21416 This filter accepts the following options:
21417
21418 @table @option
21419 @item zoom, z
21420 Set the zoom expression. Range is 1-10. Default is 1.
21421
21422 @item x
21423 @item y
21424 Set the x and y expression. Default is 0.
21425
21426 @item d
21427 Set the duration expression in number of frames.
21428 This sets for how many number of frames effect will last for
21429 single input image.
21430
21431 @item s
21432 Set the output image size, default is 'hd720'.
21433
21434 @item fps
21435 Set the output frame rate, default is '25'.
21436 @end table
21437
21438 Each expression can contain the following constants:
21439
21440 @table @option
21441 @item in_w, iw
21442 Input width.
21443
21444 @item in_h, ih
21445 Input height.
21446
21447 @item out_w, ow
21448 Output width.
21449
21450 @item out_h, oh
21451 Output height.
21452
21453 @item in
21454 Input frame count.
21455
21456 @item on
21457 Output frame count.
21458
21459 @item in_time, it
21460 The input timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
21461
21462 @item out_time, time, ot
21463 The output timestamp expressed in seconds.
21464
21465 @item x
21466 @item y
21467 Last calculated 'x' and 'y' position from 'x' and 'y' expression
21468 for current input frame.
21469
21470 @item px
21471 @item py
21472 'x' and 'y' of last output frame of previous input frame or 0 when there was
21473 not yet such frame (first input frame).
21474
21475 @item zoom
21476 Last calculated zoom from 'z' expression for current input frame.
21477
21478 @item pzoom
21479 Last calculated zoom of last output frame of previous input frame.
21480
21481 @item duration
21482 Number of output frames for current input frame. Calculated from 'd' expression
21483 for each input frame.
21484
21485 @item pduration
21486 number of output frames created for previous input frame
21487
21488 @item a
21489 Rational number: input width / input height
21490
21491 @item sar
21492 sample aspect ratio
21493
21494 @item dar
21495 display aspect ratio
21496
21497 @end table
21498
21499 @subsection Examples
21500
21501 @itemize
21502 @item
21503 Zoom in up to 1.5x and pan at same time to some spot near center of picture:
21504 @example
21505 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
21506 @end example
21507
21508 @item
21509 Zoom in up to 1.5x and pan always at center of picture:
21510 @example
21511 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21512 @end example
21513
21514 @item
21515 Same as above but without pausing:
21516 @example
21517 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21518 @end example
21519
21520 @item
21521 Zoom in 2x into center of picture only for the first second of the input video:
21522 @example
21523 zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21524 @end example
21525
21526 @end itemize
21527
21528 @anchor{zscale}
21529 @section zscale
21530 Scale (resize) the input video, using the z.lib library:
21531 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
21532 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
21533
21534 The zscale filter forces the output display aspect ratio to be the same
21535 as the input, by changing the output sample aspect ratio.
21536
21537 If the input image format is different from the format requested by
21538 the next filter, the zscale filter will convert the input to the
21539 requested format.
21540
21541 @subsection Options
21542 The filter accepts the following options.
21543
21544 @table @option
21545 @item width, w
21546 @item height, h
21547 Set the output video dimension expression. Default value is the input
21548 dimension.
21549
21550 If the @var{width} or @var{w} value is 0, the input width is used for
21551 the output. If the @var{height} or @var{h} value is 0, the input height
21552 is used for the output.
21553
21554 If one and only one of the values is -n with n >= 1, the zscale filter
21555 will use a value that maintains the aspect ratio of the input image,
21556 calculated from the other specified dimension. After that it will,
21557 however, make sure that the calculated dimension is divisible by n and
21558 adjust the value if necessary.
21559
21560 If both values are -n with n >= 1, the behavior will be identical to
21561 both values being set to 0 as previously detailed.
21562
21563 See below for the list of accepted constants for use in the dimension
21564 expression.
21565
21566 @item size, s
21567 Set the video size. For the syntax of this option, check the
21568 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21569
21570 @item dither, d
21571 Set the dither type.
21572
21573 Possible values are:
21574 @table @var
21575 @item none
21576 @item ordered
21577 @item random
21578 @item error_diffusion
21579 @end table
21580
21581 Default is none.
21582
21583 @item filter, f
21584 Set the resize filter type.
21585
21586 Possible values are:
21587 @table @var
21588 @item point
21589 @item bilinear
21590 @item bicubic
21591 @item spline16
21592 @item spline36
21593 @item lanczos
21594 @end table
21595
21596 Default is bilinear.
21597
21598 @item range, r
21599 Set the color range.
21600
21601 Possible values are:
21602 @table @var
21603 @item input
21604 @item limited
21605 @item full
21606 @end table
21607
21608 Default is same as input.
21609
21610 @item primaries, p
21611 Set the color primaries.
21612
21613 Possible values are:
21614 @table @var
21615 @item input
21616 @item 709
21617 @item unspecified
21618 @item 170m
21619 @item 240m
21620 @item 2020
21621 @end table
21622
21623 Default is same as input.
21624
21625 @item transfer, t
21626 Set the transfer characteristics.
21627
21628 Possible values are:
21629 @table @var
21630 @item input
21631 @item 709
21632 @item unspecified
21633 @item 601
21634 @item linear
21635 @item 2020_10
21636 @item 2020_12
21637 @item smpte2084
21638 @item iec61966-2-1
21639 @item arib-std-b67
21640 @end table
21641
21642 Default is same as input.
21643
21644 @item matrix, m
21645 Set the colorspace matrix.
21646
21647 Possible value are:
21648 @table @var
21649 @item input
21650 @item 709
21651 @item unspecified
21652 @item 470bg
21653 @item 170m
21654 @item 2020_ncl
21655 @item 2020_cl
21656 @end table
21657
21658 Default is same as input.
21659
21660 @item rangein, rin
21661 Set the input color range.
21662
21663 Possible values are:
21664 @table @var
21665 @item input
21666 @item limited
21667 @item full
21668 @end table
21669
21670 Default is same as input.
21671
21672 @item primariesin, pin
21673 Set the input color primaries.
21674
21675 Possible values are:
21676 @table @var
21677 @item input
21678 @item 709
21679 @item unspecified
21680 @item 170m
21681 @item 240m
21682 @item 2020
21683 @end table
21684
21685 Default is same as input.
21686
21687 @item transferin, tin
21688 Set the input transfer characteristics.
21689
21690 Possible values are:
21691 @table @var
21692 @item input
21693 @item 709
21694 @item unspecified
21695 @item 601
21696 @item linear
21697 @item 2020_10
21698 @item 2020_12
21699 @end table
21700
21701 Default is same as input.
21702
21703 @item matrixin, min
21704 Set the input colorspace matrix.
21705
21706 Possible value are:
21707 @table @var
21708 @item input
21709 @item 709
21710 @item unspecified
21711 @item 470bg
21712 @item 170m
21713 @item 2020_ncl
21714 @item 2020_cl
21715 @end table
21716
21717 @item chromal, c
21718 Set the output chroma location.
21719
21720 Possible values are:
21721 @table @var
21722 @item input
21723 @item left
21724 @item center
21725 @item topleft
21726 @item top
21727 @item bottomleft
21728 @item bottom
21729 @end table
21730
21731 @item chromalin, cin
21732 Set the input chroma location.
21733
21734 Possible values are:
21735 @table @var
21736 @item input
21737 @item left
21738 @item center
21739 @item topleft
21740 @item top
21741 @item bottomleft
21742 @item bottom
21743 @end table
21744
21745 @item npl
21746 Set the nominal peak luminance.
21747 @end table
21748
21749 The values of the @option{w} and @option{h} options are expressions
21750 containing the following constants:
21751
21752 @table @var
21753 @item in_w
21754 @item in_h
21755 The input width and height
21756
21757 @item iw
21758 @item ih
21759 These are the same as @var{in_w} and @var{in_h}.
21760
21761 @item out_w
21762 @item out_h
21763 The output (scaled) width and height
21764
21765 @item ow
21766 @item oh
21767 These are the same as @var{out_w} and @var{out_h}
21768
21769 @item a
21770 The same as @var{iw} / @var{ih}
21771
21772 @item sar
21773 input sample aspect ratio
21774
21775 @item dar
21776 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
21777
21778 @item hsub
21779 @item vsub
21780 horizontal and vertical input chroma subsample values. For example for the
21781 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21782
21783 @item ohsub
21784 @item ovsub
21785 horizontal and vertical output chroma subsample values. For example for the
21786 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21787 @end table
21788
21789 @subsection Commands
21790
21791 This filter supports the following commands:
21792 @table @option
21793 @item width, w
21794 @item height, h
21795 Set the output video dimension expression.
21796 The command accepts the same syntax of the corresponding option.
21797
21798 If the specified expression is not valid, it is kept at its current
21799 value.
21800 @end table
21801
21802 @c man end VIDEO FILTERS
21803
21804 @chapter OpenCL Video Filters
21805 @c man begin OPENCL VIDEO FILTERS
21806
21807 Below is a description of the currently available OpenCL video filters.
21808
21809 To enable compilation of these filters you need to configure FFmpeg with
21810 @code{--enable-opencl}.
21811
21812 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
21813 @table @option
21814
21815 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
21816 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
21817 given device parameters.
21818
21819 @item -filter_hw_device @var{name}
21820 Pass the hardware device called @var{name} to all filters in any filter graph.
21821
21822 @end table
21823
21824 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
21825
21826 @itemize
21827 @item
21828 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
21829 @example
21830 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
21831 @end example
21832 @end itemize
21833
21834 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.
21835
21836 @section avgblur_opencl
21837
21838 Apply average blur filter.
21839
21840 The filter accepts the following options:
21841
21842 @table @option
21843 @item sizeX
21844 Set horizontal radius size.
21845 Range is @code{[1, 1024]} and default value is @code{1}.
21846
21847 @item planes
21848 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21849
21850 @item sizeY
21851 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
21852 @end table
21853
21854 @subsection Example
21855
21856 @itemize
21857 @item
21858 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.
21859 @example
21860 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
21861 @end example
21862 @end itemize
21863
21864 @section boxblur_opencl
21865
21866 Apply a boxblur algorithm to the input video.
21867
21868 It accepts the following parameters:
21869
21870 @table @option
21871
21872 @item luma_radius, lr
21873 @item luma_power, lp
21874 @item chroma_radius, cr
21875 @item chroma_power, cp
21876 @item alpha_radius, ar
21877 @item alpha_power, ap
21878
21879 @end table
21880
21881 A description of the accepted options follows.
21882
21883 @table @option
21884 @item luma_radius, lr
21885 @item chroma_radius, cr
21886 @item alpha_radius, ar
21887 Set an expression for the box radius in pixels used for blurring the
21888 corresponding input plane.
21889
21890 The radius value must be a non-negative number, and must not be
21891 greater than the value of the expression @code{min(w,h)/2} for the
21892 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
21893 planes.
21894
21895 Default value for @option{luma_radius} is "2". If not specified,
21896 @option{chroma_radius} and @option{alpha_radius} default to the
21897 corresponding value set for @option{luma_radius}.
21898
21899 The expressions can contain the following constants:
21900 @table @option
21901 @item w
21902 @item h
21903 The input width and height in pixels.
21904
21905 @item cw
21906 @item ch
21907 The input chroma image width and height in pixels.
21908
21909 @item hsub
21910 @item vsub
21911 The horizontal and vertical chroma subsample values. For example, for the
21912 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
21913 @end table
21914
21915 @item luma_power, lp
21916 @item chroma_power, cp
21917 @item alpha_power, ap
21918 Specify how many times the boxblur filter is applied to the
21919 corresponding plane.
21920
21921 Default value for @option{luma_power} is 2. If not specified,
21922 @option{chroma_power} and @option{alpha_power} default to the
21923 corresponding value set for @option{luma_power}.
21924
21925 A value of 0 will disable the effect.
21926 @end table
21927
21928 @subsection Examples
21929
21930 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.
21931
21932 @itemize
21933 @item
21934 Apply a boxblur filter with the luma, chroma, and alpha radius
21935 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.
21936 @example
21937 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
21938 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
21939 @end example
21940
21941 @item
21942 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.
21943
21944 For the luma plane, a 2x2 box radius will be run once.
21945
21946 For the chroma plane, a 4x4 box radius will be run 5 times.
21947
21948 For the alpha plane, a 3x3 box radius will be run 7 times.
21949 @example
21950 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
21951 @end example
21952 @end itemize
21953
21954 @section colorkey_opencl
21955 RGB colorspace color keying.
21956
21957 The filter accepts the following options:
21958
21959 @table @option
21960 @item color
21961 The color which will be replaced with transparency.
21962
21963 @item similarity
21964 Similarity percentage with the key color.
21965
21966 0.01 matches only the exact key color, while 1.0 matches everything.
21967
21968 @item blend
21969 Blend percentage.
21970
21971 0.0 makes pixels either fully transparent, or not transparent at all.
21972
21973 Higher values result in semi-transparent pixels, with a higher transparency
21974 the more similar the pixels color is to the key color.
21975 @end table
21976
21977 @subsection Examples
21978
21979 @itemize
21980 @item
21981 Make every semi-green pixel in the input transparent with some slight blending:
21982 @example
21983 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
21984 @end example
21985 @end itemize
21986
21987 @section convolution_opencl
21988
21989 Apply convolution of 3x3, 5x5, 7x7 matrix.
21990
21991 The filter accepts the following options:
21992
21993 @table @option
21994 @item 0m
21995 @item 1m
21996 @item 2m
21997 @item 3m
21998 Set matrix for each plane.
21999 Matrix is sequence of 9, 25 or 49 signed numbers.
22000 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
22001
22002 @item 0rdiv
22003 @item 1rdiv
22004 @item 2rdiv
22005 @item 3rdiv
22006 Set multiplier for calculated value for each plane.
22007 If unset or 0, it will be sum of all matrix elements.
22008 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
22009
22010 @item 0bias
22011 @item 1bias
22012 @item 2bias
22013 @item 3bias
22014 Set bias for each plane. This value is added to the result of the multiplication.
22015 Useful for making the overall image brighter or darker.
22016 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
22017
22018 @end table
22019
22020 @subsection Examples
22021
22022 @itemize
22023 @item
22024 Apply sharpen:
22025 @example
22026 -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
22027 @end example
22028
22029 @item
22030 Apply blur:
22031 @example
22032 -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
22033 @end example
22034
22035 @item
22036 Apply edge enhance:
22037 @example
22038 -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
22039 @end example
22040
22041 @item
22042 Apply edge detect:
22043 @example
22044 -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
22045 @end example
22046
22047 @item
22048 Apply laplacian edge detector which includes diagonals:
22049 @example
22050 -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
22051 @end example
22052
22053 @item
22054 Apply emboss:
22055 @example
22056 -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
22057 @end example
22058 @end itemize
22059
22060 @section erosion_opencl
22061
22062 Apply erosion effect to the video.
22063
22064 This filter replaces the pixel by the local(3x3) minimum.
22065
22066 It accepts the following options:
22067
22068 @table @option
22069 @item threshold0
22070 @item threshold1
22071 @item threshold2
22072 @item threshold3
22073 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
22074 If @code{0}, plane will remain unchanged.
22075
22076 @item coordinates
22077 Flag which specifies the pixel to refer to.
22078 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
22079
22080 Flags to local 3x3 coordinates region centered on @code{x}:
22081
22082     1 2 3
22083
22084     4 x 5
22085
22086     6 7 8
22087 @end table
22088
22089 @subsection Example
22090
22091 @itemize
22092 @item
22093 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.
22094 @example
22095 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
22096 @end example
22097 @end itemize
22098
22099 @section deshake_opencl
22100 Feature-point based video stabilization filter.
22101
22102 The filter accepts the following options:
22103
22104 @table @option
22105 @item tripod
22106 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
22107
22108 @item debug
22109 Whether or not additional debug info should be displayed, both in the processed output and in the console.
22110
22111 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
22112
22113 Viewing point matches in the output video is only supported for RGB input.
22114
22115 Defaults to @code{0}.
22116
22117 @item adaptive_crop
22118 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
22119
22120 Defaults to @code{1}.
22121
22122 @item refine_features
22123 Whether or not feature points should be refined at a sub-pixel level.
22124
22125 This can be turned off for a slight performance gain at the cost of precision.
22126
22127 Defaults to @code{1}.
22128
22129 @item smooth_strength
22130 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
22131
22132 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
22133
22134 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
22135
22136 Defaults to @code{0.0}.
22137
22138 @item smooth_window_multiplier
22139 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
22140
22141 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
22142
22143 Acceptable values range from @code{0.1} to @code{10.0}.
22144
22145 Larger values increase the amount of motion data available for determining how to smooth the camera path,
22146 potentially improving smoothness, but also increase latency and memory usage.
22147
22148 Defaults to @code{2.0}.
22149
22150 @end table
22151
22152 @subsection Examples
22153
22154 @itemize
22155 @item
22156 Stabilize a video with a fixed, medium smoothing strength:
22157 @example
22158 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
22159 @end example
22160
22161 @item
22162 Stabilize a video with debugging (both in console and in rendered video):
22163 @example
22164 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
22165 @end example
22166 @end itemize
22167
22168 @section dilation_opencl
22169
22170 Apply dilation effect to the video.
22171
22172 This filter replaces the pixel by the local(3x3) maximum.
22173
22174 It accepts the following options:
22175
22176 @table @option
22177 @item threshold0
22178 @item threshold1
22179 @item threshold2
22180 @item threshold3
22181 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
22182 If @code{0}, plane will remain unchanged.
22183
22184 @item coordinates
22185 Flag which specifies the pixel to refer to.
22186 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
22187
22188 Flags to local 3x3 coordinates region centered on @code{x}:
22189
22190     1 2 3
22191
22192     4 x 5
22193
22194     6 7 8
22195 @end table
22196
22197 @subsection Example
22198
22199 @itemize
22200 @item
22201 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.
22202 @example
22203 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
22204 @end example
22205 @end itemize
22206
22207 @section nlmeans_opencl
22208
22209 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
22210
22211 @section overlay_opencl
22212
22213 Overlay one video on top of another.
22214
22215 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
22216 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
22217
22218 The filter accepts the following options:
22219
22220 @table @option
22221
22222 @item x
22223 Set the x coordinate of the overlaid video on the main video.
22224 Default value is @code{0}.
22225
22226 @item y
22227 Set the y coordinate of the overlaid video on the main video.
22228 Default value is @code{0}.
22229
22230 @end table
22231
22232 @subsection Examples
22233
22234 @itemize
22235 @item
22236 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
22237 @example
22238 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22239 @end example
22240 @item
22241 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
22242 @example
22243 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22244 @end example
22245
22246 @end itemize
22247
22248 @section pad_opencl
22249
22250 Add paddings to the input image, and place the original input at the
22251 provided @var{x}, @var{y} coordinates.
22252
22253 It accepts the following options:
22254
22255 @table @option
22256 @item width, w
22257 @item height, h
22258 Specify an expression for the size of the output image with the
22259 paddings added. If the value for @var{width} or @var{height} is 0, the
22260 corresponding input size is used for the output.
22261
22262 The @var{width} expression can reference the value set by the
22263 @var{height} expression, and vice versa.
22264
22265 The default value of @var{width} and @var{height} is 0.
22266
22267 @item x
22268 @item y
22269 Specify the offsets to place the input image at within the padded area,
22270 with respect to the top/left border of the output image.
22271
22272 The @var{x} expression can reference the value set by the @var{y}
22273 expression, and vice versa.
22274
22275 The default value of @var{x} and @var{y} is 0.
22276
22277 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
22278 so the input image is centered on the padded area.
22279
22280 @item color
22281 Specify the color of the padded area. For the syntax of this option,
22282 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
22283 manual,ffmpeg-utils}.
22284
22285 @item aspect
22286 Pad to an aspect instead to a resolution.
22287 @end table
22288
22289 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
22290 options are expressions containing the following constants:
22291
22292 @table @option
22293 @item in_w
22294 @item in_h
22295 The input video width and height.
22296
22297 @item iw
22298 @item ih
22299 These are the same as @var{in_w} and @var{in_h}.
22300
22301 @item out_w
22302 @item out_h
22303 The output width and height (the size of the padded area), as
22304 specified by the @var{width} and @var{height} expressions.
22305
22306 @item ow
22307 @item oh
22308 These are the same as @var{out_w} and @var{out_h}.
22309
22310 @item x
22311 @item y
22312 The x and y offsets as specified by the @var{x} and @var{y}
22313 expressions, or NAN if not yet specified.
22314
22315 @item a
22316 same as @var{iw} / @var{ih}
22317
22318 @item sar
22319 input sample aspect ratio
22320
22321 @item dar
22322 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
22323 @end table
22324
22325 @section prewitt_opencl
22326
22327 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
22328
22329 The filter accepts the following option:
22330
22331 @table @option
22332 @item planes
22333 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22334
22335 @item scale
22336 Set value which will be multiplied with filtered result.
22337 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22338
22339 @item delta
22340 Set value which will be added to filtered result.
22341 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22342 @end table
22343
22344 @subsection Example
22345
22346 @itemize
22347 @item
22348 Apply the Prewitt operator with scale set to 2 and delta set to 10.
22349 @example
22350 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
22351 @end example
22352 @end itemize
22353
22354 @anchor{program_opencl}
22355 @section program_opencl
22356
22357 Filter video using an OpenCL program.
22358
22359 @table @option
22360
22361 @item source
22362 OpenCL program source file.
22363
22364 @item kernel
22365 Kernel name in program.
22366
22367 @item inputs
22368 Number of inputs to the filter.  Defaults to 1.
22369
22370 @item size, s
22371 Size of output frames.  Defaults to the same as the first input.
22372
22373 @end table
22374
22375 The @code{program_opencl} filter also supports the @ref{framesync} options.
22376
22377 The program source file must contain a kernel function with the given name,
22378 which will be run once for each plane of the output.  Each run on a plane
22379 gets enqueued as a separate 2D global NDRange with one work-item for each
22380 pixel to be generated.  The global ID offset for each work-item is therefore
22381 the coordinates of a pixel in the destination image.
22382
22383 The kernel function needs to take the following arguments:
22384 @itemize
22385 @item
22386 Destination image, @var{__write_only image2d_t}.
22387
22388 This image will become the output; the kernel should write all of it.
22389 @item
22390 Frame index, @var{unsigned int}.
22391
22392 This is a counter starting from zero and increasing by one for each frame.
22393 @item
22394 Source images, @var{__read_only image2d_t}.
22395
22396 These are the most recent images on each input.  The kernel may read from
22397 them to generate the output, but they can't be written to.
22398 @end itemize
22399
22400 Example programs:
22401
22402 @itemize
22403 @item
22404 Copy the input to the output (output must be the same size as the input).
22405 @verbatim
22406 __kernel void copy(__write_only image2d_t destination,
22407                    unsigned int index,
22408                    __read_only  image2d_t source)
22409 {
22410     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
22411
22412     int2 location = (int2)(get_global_id(0), get_global_id(1));
22413
22414     float4 value = read_imagef(source, sampler, location);
22415
22416     write_imagef(destination, location, value);
22417 }
22418 @end verbatim
22419
22420 @item
22421 Apply a simple transformation, rotating the input by an amount increasing
22422 with the index counter.  Pixel values are linearly interpolated by the
22423 sampler, and the output need not have the same dimensions as the input.
22424 @verbatim
22425 __kernel void rotate_image(__write_only image2d_t dst,
22426                            unsigned int index,
22427                            __read_only  image2d_t src)
22428 {
22429     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22430                                CLK_FILTER_LINEAR);
22431
22432     float angle = (float)index / 100.0f;
22433
22434     float2 dst_dim = convert_float2(get_image_dim(dst));
22435     float2 src_dim = convert_float2(get_image_dim(src));
22436
22437     float2 dst_cen = dst_dim / 2.0f;
22438     float2 src_cen = src_dim / 2.0f;
22439
22440     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
22441
22442     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
22443     float2 src_pos = {
22444         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
22445         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
22446     };
22447     src_pos = src_pos * src_dim / dst_dim;
22448
22449     float2 src_loc = src_pos + src_cen;
22450
22451     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
22452         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
22453         write_imagef(dst, dst_loc, 0.5f);
22454     else
22455         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
22456 }
22457 @end verbatim
22458
22459 @item
22460 Blend two inputs together, with the amount of each input used varying
22461 with the index counter.
22462 @verbatim
22463 __kernel void blend_images(__write_only image2d_t dst,
22464                            unsigned int index,
22465                            __read_only  image2d_t src1,
22466                            __read_only  image2d_t src2)
22467 {
22468     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22469                                CLK_FILTER_LINEAR);
22470
22471     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
22472
22473     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
22474     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
22475     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
22476
22477     float4 val1 = read_imagef(src1, sampler, src1_loc);
22478     float4 val2 = read_imagef(src2, sampler, src2_loc);
22479
22480     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
22481 }
22482 @end verbatim
22483
22484 @end itemize
22485
22486 @section roberts_opencl
22487 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
22488
22489 The filter accepts the following option:
22490
22491 @table @option
22492 @item planes
22493 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22494
22495 @item scale
22496 Set value which will be multiplied with filtered result.
22497 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22498
22499 @item delta
22500 Set value which will be added to filtered result.
22501 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22502 @end table
22503
22504 @subsection Example
22505
22506 @itemize
22507 @item
22508 Apply the Roberts cross operator with scale set to 2 and delta set to 10
22509 @example
22510 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
22511 @end example
22512 @end itemize
22513
22514 @section sobel_opencl
22515
22516 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
22517
22518 The filter accepts the following option:
22519
22520 @table @option
22521 @item planes
22522 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22523
22524 @item scale
22525 Set value which will be multiplied with filtered result.
22526 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22527
22528 @item delta
22529 Set value which will be added to filtered result.
22530 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22531 @end table
22532
22533 @subsection Example
22534
22535 @itemize
22536 @item
22537 Apply sobel operator with scale set to 2 and delta set to 10
22538 @example
22539 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
22540 @end example
22541 @end itemize
22542
22543 @section tonemap_opencl
22544
22545 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
22546
22547 It accepts the following parameters:
22548
22549 @table @option
22550 @item tonemap
22551 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
22552
22553 @item param
22554 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
22555
22556 @item desat
22557 Apply desaturation for highlights that exceed this level of brightness. The
22558 higher the parameter, the more color information will be preserved. This
22559 setting helps prevent unnaturally blown-out colors for super-highlights, by
22560 (smoothly) turning into white instead. This makes images feel more natural,
22561 at the cost of reducing information about out-of-range colors.
22562
22563 The default value is 0.5, and the algorithm here is a little different from
22564 the cpu version tonemap currently. A setting of 0.0 disables this option.
22565
22566 @item threshold
22567 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
22568 is used to detect whether the scene has changed or not. If the distance between
22569 the current frame average brightness and the current running average exceeds
22570 a threshold value, we would re-calculate scene average and peak brightness.
22571 The default value is 0.2.
22572
22573 @item format
22574 Specify the output pixel format.
22575
22576 Currently supported formats are:
22577 @table @var
22578 @item p010
22579 @item nv12
22580 @end table
22581
22582 @item range, r
22583 Set the output color range.
22584
22585 Possible values are:
22586 @table @var
22587 @item tv/mpeg
22588 @item pc/jpeg
22589 @end table
22590
22591 Default is same as input.
22592
22593 @item primaries, p
22594 Set the output color primaries.
22595
22596 Possible values are:
22597 @table @var
22598 @item bt709
22599 @item bt2020
22600 @end table
22601
22602 Default is same as input.
22603
22604 @item transfer, t
22605 Set the output transfer characteristics.
22606
22607 Possible values are:
22608 @table @var
22609 @item bt709
22610 @item bt2020
22611 @end table
22612
22613 Default is bt709.
22614
22615 @item matrix, m
22616 Set the output colorspace matrix.
22617
22618 Possible value are:
22619 @table @var
22620 @item bt709
22621 @item bt2020
22622 @end table
22623
22624 Default is same as input.
22625
22626 @end table
22627
22628 @subsection Example
22629
22630 @itemize
22631 @item
22632 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
22633 @example
22634 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
22635 @end example
22636 @end itemize
22637
22638 @section unsharp_opencl
22639
22640 Sharpen or blur the input video.
22641
22642 It accepts the following parameters:
22643
22644 @table @option
22645 @item luma_msize_x, lx
22646 Set the luma matrix horizontal size.
22647 Range is @code{[1, 23]} and default value is @code{5}.
22648
22649 @item luma_msize_y, ly
22650 Set the luma matrix vertical size.
22651 Range is @code{[1, 23]} and default value is @code{5}.
22652
22653 @item luma_amount, la
22654 Set the luma effect strength.
22655 Range is @code{[-10, 10]} and default value is @code{1.0}.
22656
22657 Negative values will blur the input video, while positive values will
22658 sharpen it, a value of zero will disable the effect.
22659
22660 @item chroma_msize_x, cx
22661 Set the chroma matrix horizontal size.
22662 Range is @code{[1, 23]} and default value is @code{5}.
22663
22664 @item chroma_msize_y, cy
22665 Set the chroma matrix vertical size.
22666 Range is @code{[1, 23]} and default value is @code{5}.
22667
22668 @item chroma_amount, ca
22669 Set the chroma effect strength.
22670 Range is @code{[-10, 10]} and default value is @code{0.0}.
22671
22672 Negative values will blur the input video, while positive values will
22673 sharpen it, a value of zero will disable the effect.
22674
22675 @end table
22676
22677 All parameters are optional and default to the equivalent of the
22678 string '5:5:1.0:5:5:0.0'.
22679
22680 @subsection Examples
22681
22682 @itemize
22683 @item
22684 Apply strong luma sharpen effect:
22685 @example
22686 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
22687 @end example
22688
22689 @item
22690 Apply a strong blur of both luma and chroma parameters:
22691 @example
22692 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
22693 @end example
22694 @end itemize
22695
22696 @section xfade_opencl
22697
22698 Cross fade two videos with custom transition effect by using OpenCL.
22699
22700 It accepts the following options:
22701
22702 @table @option
22703 @item transition
22704 Set one of possible transition effects.
22705
22706 @table @option
22707 @item custom
22708 Select custom transition effect, the actual transition description
22709 will be picked from source and kernel options.
22710
22711 @item fade
22712 @item wipeleft
22713 @item wiperight
22714 @item wipeup
22715 @item wipedown
22716 @item slideleft
22717 @item slideright
22718 @item slideup
22719 @item slidedown
22720
22721 Default transition is fade.
22722 @end table
22723
22724 @item source
22725 OpenCL program source file for custom transition.
22726
22727 @item kernel
22728 Set name of kernel to use for custom transition from program source file.
22729
22730 @item duration
22731 Set duration of video transition.
22732
22733 @item offset
22734 Set time of start of transition relative to first video.
22735 @end table
22736
22737 The program source file must contain a kernel function with the given name,
22738 which will be run once for each plane of the output.  Each run on a plane
22739 gets enqueued as a separate 2D global NDRange with one work-item for each
22740 pixel to be generated.  The global ID offset for each work-item is therefore
22741 the coordinates of a pixel in the destination image.
22742
22743 The kernel function needs to take the following arguments:
22744 @itemize
22745 @item
22746 Destination image, @var{__write_only image2d_t}.
22747
22748 This image will become the output; the kernel should write all of it.
22749
22750 @item
22751 First Source image, @var{__read_only image2d_t}.
22752 Second Source image, @var{__read_only image2d_t}.
22753
22754 These are the most recent images on each input.  The kernel may read from
22755 them to generate the output, but they can't be written to.
22756
22757 @item
22758 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
22759 @end itemize
22760
22761 Example programs:
22762
22763 @itemize
22764 @item
22765 Apply dots curtain transition effect:
22766 @verbatim
22767 __kernel void blend_images(__write_only image2d_t dst,
22768                            __read_only  image2d_t src1,
22769                            __read_only  image2d_t src2,
22770                            float progress)
22771 {
22772     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22773                                CLK_FILTER_LINEAR);
22774     int2  p = (int2)(get_global_id(0), get_global_id(1));
22775     float2 rp = (float2)(get_global_id(0), get_global_id(1));
22776     float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
22777     rp = rp / dim;
22778
22779     float2 dots = (float2)(20.0, 20.0);
22780     float2 center = (float2)(0,0);
22781     float2 unused;
22782
22783     float4 val1 = read_imagef(src1, sampler, p);
22784     float4 val2 = read_imagef(src2, sampler, p);
22785     bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
22786
22787     write_imagef(dst, p, next ? val1 : val2);
22788 }
22789 @end verbatim
22790
22791 @end itemize
22792
22793 @c man end OPENCL VIDEO FILTERS
22794
22795 @chapter VAAPI Video Filters
22796 @c man begin VAAPI VIDEO FILTERS
22797
22798 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
22799
22800 To enable compilation of these filters you need to configure FFmpeg with
22801 @code{--enable-vaapi}.
22802
22803 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}
22804
22805 @section tonemap_vaapi
22806
22807 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
22808 It maps the dynamic range of HDR10 content to the SDR content.
22809 It currently only accepts HDR10 as input.
22810
22811 It accepts the following parameters:
22812
22813 @table @option
22814 @item format
22815 Specify the output pixel format.
22816
22817 Currently supported formats are:
22818 @table @var
22819 @item p010
22820 @item nv12
22821 @end table
22822
22823 Default is nv12.
22824
22825 @item primaries, p
22826 Set the output color primaries.
22827
22828 Default is same as input.
22829
22830 @item transfer, t
22831 Set the output transfer characteristics.
22832
22833 Default is bt709.
22834
22835 @item matrix, m
22836 Set the output colorspace matrix.
22837
22838 Default is same as input.
22839
22840 @end table
22841
22842 @subsection Example
22843
22844 @itemize
22845 @item
22846 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
22847 @example
22848 tonemap_vaapi=format=p010:t=bt2020-10
22849 @end example
22850 @end itemize
22851
22852 @c man end VAAPI VIDEO FILTERS
22853
22854 @chapter Video Sources
22855 @c man begin VIDEO SOURCES
22856
22857 Below is a description of the currently available video sources.
22858
22859 @section buffer
22860
22861 Buffer video frames, and make them available to the filter chain.
22862
22863 This source is mainly intended for a programmatic use, in particular
22864 through the interface defined in @file{libavfilter/buffersrc.h}.
22865
22866 It accepts the following parameters:
22867
22868 @table @option
22869
22870 @item video_size
22871 Specify the size (width and height) of the buffered video frames. For the
22872 syntax of this option, check the
22873 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22874
22875 @item width
22876 The input video width.
22877
22878 @item height
22879 The input video height.
22880
22881 @item pix_fmt
22882 A string representing the pixel format of the buffered video frames.
22883 It may be a number corresponding to a pixel format, or a pixel format
22884 name.
22885
22886 @item time_base
22887 Specify the timebase assumed by the timestamps of the buffered frames.
22888
22889 @item frame_rate
22890 Specify the frame rate expected for the video stream.
22891
22892 @item pixel_aspect, sar
22893 The sample (pixel) aspect ratio of the input video.
22894
22895 @item sws_param
22896 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
22897 to the filtergraph description to specify swscale flags for automatically
22898 inserted scalers. See @ref{Filtergraph syntax}.
22899
22900 @item hw_frames_ctx
22901 When using a hardware pixel format, this should be a reference to an
22902 AVHWFramesContext describing input frames.
22903 @end table
22904
22905 For example:
22906 @example
22907 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
22908 @end example
22909
22910 will instruct the source to accept video frames with size 320x240 and
22911 with format "yuv410p", assuming 1/24 as the timestamps timebase and
22912 square pixels (1:1 sample aspect ratio).
22913 Since the pixel format with name "yuv410p" corresponds to the number 6
22914 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
22915 this example corresponds to:
22916 @example
22917 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
22918 @end example
22919
22920 Alternatively, the options can be specified as a flat string, but this
22921 syntax is deprecated:
22922
22923 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
22924
22925 @section cellauto
22926
22927 Create a pattern generated by an elementary cellular automaton.
22928
22929 The initial state of the cellular automaton can be defined through the
22930 @option{filename} and @option{pattern} options. If such options are
22931 not specified an initial state is created randomly.
22932
22933 At each new frame a new row in the video is filled with the result of
22934 the cellular automaton next generation. The behavior when the whole
22935 frame is filled is defined by the @option{scroll} option.
22936
22937 This source accepts the following options:
22938
22939 @table @option
22940 @item filename, f
22941 Read the initial cellular automaton state, i.e. the starting row, from
22942 the specified file.
22943 In the file, each non-whitespace character is considered an alive
22944 cell, a newline will terminate the row, and further characters in the
22945 file will be ignored.
22946
22947 @item pattern, p
22948 Read the initial cellular automaton state, i.e. the starting row, from
22949 the specified string.
22950
22951 Each non-whitespace character in the string is considered an alive
22952 cell, a newline will terminate the row, and further characters in the
22953 string will be ignored.
22954
22955 @item rate, r
22956 Set the video rate, that is the number of frames generated per second.
22957 Default is 25.
22958
22959 @item random_fill_ratio, ratio
22960 Set the random fill ratio for the initial cellular automaton row. It
22961 is a floating point number value ranging from 0 to 1, defaults to
22962 1/PHI.
22963
22964 This option is ignored when a file or a pattern is specified.
22965
22966 @item random_seed, seed
22967 Set the seed for filling randomly the initial row, must be an integer
22968 included between 0 and UINT32_MAX. If not specified, or if explicitly
22969 set to -1, the filter will try to use a good random seed on a best
22970 effort basis.
22971
22972 @item rule
22973 Set the cellular automaton rule, it is a number ranging from 0 to 255.
22974 Default value is 110.
22975
22976 @item size, s
22977 Set the size of the output video. For the syntax of this option, check the
22978 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22979
22980 If @option{filename} or @option{pattern} is specified, the size is set
22981 by default to the width of the specified initial state row, and the
22982 height is set to @var{width} * PHI.
22983
22984 If @option{size} is set, it must contain the width of the specified
22985 pattern string, and the specified pattern will be centered in the
22986 larger row.
22987
22988 If a filename or a pattern string is not specified, the size value
22989 defaults to "320x518" (used for a randomly generated initial state).
22990
22991 @item scroll
22992 If set to 1, scroll the output upward when all the rows in the output
22993 have been already filled. If set to 0, the new generated row will be
22994 written over the top row just after the bottom row is filled.
22995 Defaults to 1.
22996
22997 @item start_full, full
22998 If set to 1, completely fill the output with generated rows before
22999 outputting the first frame.
23000 This is the default behavior, for disabling set the value to 0.
23001
23002 @item stitch
23003 If set to 1, stitch the left and right row edges together.
23004 This is the default behavior, for disabling set the value to 0.
23005 @end table
23006
23007 @subsection Examples
23008
23009 @itemize
23010 @item
23011 Read the initial state from @file{pattern}, and specify an output of
23012 size 200x400.
23013 @example
23014 cellauto=f=pattern:s=200x400
23015 @end example
23016
23017 @item
23018 Generate a random initial row with a width of 200 cells, with a fill
23019 ratio of 2/3:
23020 @example
23021 cellauto=ratio=2/3:s=200x200
23022 @end example
23023
23024 @item
23025 Create a pattern generated by rule 18 starting by a single alive cell
23026 centered on an initial row with width 100:
23027 @example
23028 cellauto=p=@@:s=100x400:full=0:rule=18
23029 @end example
23030
23031 @item
23032 Specify a more elaborated initial pattern:
23033 @example
23034 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
23035 @end example
23036
23037 @end itemize
23038
23039 @anchor{coreimagesrc}
23040 @section coreimagesrc
23041 Video source generated on GPU using Apple's CoreImage API on OSX.
23042
23043 This video source is a specialized version of the @ref{coreimage} video filter.
23044 Use a core image generator at the beginning of the applied filterchain to
23045 generate the content.
23046
23047 The coreimagesrc video source accepts the following options:
23048 @table @option
23049 @item list_generators
23050 List all available generators along with all their respective options as well as
23051 possible minimum and maximum values along with the default values.
23052 @example
23053 list_generators=true
23054 @end example
23055
23056 @item size, s
23057 Specify the size of the sourced video. For the syntax of this option, check the
23058 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23059 The default value is @code{320x240}.
23060
23061 @item rate, r
23062 Specify the frame rate of the sourced video, as the number of frames
23063 generated per second. It has to be a string in the format
23064 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23065 number or a valid video frame rate abbreviation. The default value is
23066 "25".
23067
23068 @item sar
23069 Set the sample aspect ratio of the sourced video.
23070
23071 @item duration, d
23072 Set the duration of the sourced video. See
23073 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23074 for the accepted syntax.
23075
23076 If not specified, or the expressed duration is negative, the video is
23077 supposed to be generated forever.
23078 @end table
23079
23080 Additionally, all options of the @ref{coreimage} video filter are accepted.
23081 A complete filterchain can be used for further processing of the
23082 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
23083 and examples for details.
23084
23085 @subsection Examples
23086
23087 @itemize
23088
23089 @item
23090 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
23091 given as complete and escaped command-line for Apple's standard bash shell:
23092 @example
23093 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
23094 @end example
23095 This example is equivalent to the QRCode example of @ref{coreimage} without the
23096 need for a nullsrc video source.
23097 @end itemize
23098
23099
23100 @section gradients
23101 Generate several gradients.
23102
23103 @table @option
23104 @item size, s
23105 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23106 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23107
23108 @item rate, r
23109 Set frame rate, expressed as number of frames per second. Default
23110 value is "25".
23111
23112 @item c0, c1, c2, c3, c4, c5, c6, c7
23113 Set 8 colors. Default values for colors is to pick random one.
23114
23115 @item x0, y0, y0, y1
23116 Set gradient line source and destination points. If negative or out of range, random ones
23117 are picked.
23118
23119 @item nb_colors, n
23120 Set number of colors to use at once. Allowed range is from 2 to 8. Default value is 2.
23121
23122 @item seed
23123 Set seed for picking gradient line points.
23124
23125 @item duration, d
23126 Set the duration of the sourced video. See
23127 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23128 for the accepted syntax.
23129
23130 If not specified, or the expressed duration is negative, the video is
23131 supposed to be generated forever.
23132
23133 @item speed
23134 Set speed of gradients rotation.
23135 @end table
23136
23137
23138 @section mandelbrot
23139
23140 Generate a Mandelbrot set fractal, and progressively zoom towards the
23141 point specified with @var{start_x} and @var{start_y}.
23142
23143 This source accepts the following options:
23144
23145 @table @option
23146
23147 @item end_pts
23148 Set the terminal pts value. Default value is 400.
23149
23150 @item end_scale
23151 Set the terminal scale value.
23152 Must be a floating point value. Default value is 0.3.
23153
23154 @item inner
23155 Set the inner coloring mode, that is the algorithm used to draw the
23156 Mandelbrot fractal internal region.
23157
23158 It shall assume one of the following values:
23159 @table @option
23160 @item black
23161 Set black mode.
23162 @item convergence
23163 Show time until convergence.
23164 @item mincol
23165 Set color based on point closest to the origin of the iterations.
23166 @item period
23167 Set period mode.
23168 @end table
23169
23170 Default value is @var{mincol}.
23171
23172 @item bailout
23173 Set the bailout value. Default value is 10.0.
23174
23175 @item maxiter
23176 Set the maximum of iterations performed by the rendering
23177 algorithm. Default value is 7189.
23178
23179 @item outer
23180 Set outer coloring mode.
23181 It shall assume one of following values:
23182 @table @option
23183 @item iteration_count
23184 Set iteration count mode.
23185 @item normalized_iteration_count
23186 set normalized iteration count mode.
23187 @end table
23188 Default value is @var{normalized_iteration_count}.
23189
23190 @item rate, r
23191 Set frame rate, expressed as number of frames per second. Default
23192 value is "25".
23193
23194 @item size, s
23195 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23196 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23197
23198 @item start_scale
23199 Set the initial scale value. Default value is 3.0.
23200
23201 @item start_x
23202 Set the initial x position. Must be a floating point value between
23203 -100 and 100. Default value is -0.743643887037158704752191506114774.
23204
23205 @item start_y
23206 Set the initial y position. Must be a floating point value between
23207 -100 and 100. Default value is -0.131825904205311970493132056385139.
23208 @end table
23209
23210 @section mptestsrc
23211
23212 Generate various test patterns, as generated by the MPlayer test filter.
23213
23214 The size of the generated video is fixed, and is 256x256.
23215 This source is useful in particular for testing encoding features.
23216
23217 This source accepts the following options:
23218
23219 @table @option
23220
23221 @item rate, r
23222 Specify the frame rate of the sourced video, as the number of frames
23223 generated per second. It has to be a string in the format
23224 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23225 number or a valid video frame rate abbreviation. The default value is
23226 "25".
23227
23228 @item duration, d
23229 Set the duration of the sourced video. See
23230 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23231 for the accepted syntax.
23232
23233 If not specified, or the expressed duration is negative, the video is
23234 supposed to be generated forever.
23235
23236 @item test, t
23237
23238 Set the number or the name of the test to perform. Supported tests are:
23239 @table @option
23240 @item dc_luma
23241 @item dc_chroma
23242 @item freq_luma
23243 @item freq_chroma
23244 @item amp_luma
23245 @item amp_chroma
23246 @item cbp
23247 @item mv
23248 @item ring1
23249 @item ring2
23250 @item all
23251
23252 @item max_frames, m
23253 Set the maximum number of frames generated for each test, default value is 30.
23254
23255 @end table
23256
23257 Default value is "all", which will cycle through the list of all tests.
23258 @end table
23259
23260 Some examples:
23261 @example
23262 mptestsrc=t=dc_luma
23263 @end example
23264
23265 will generate a "dc_luma" test pattern.
23266
23267 @section frei0r_src
23268
23269 Provide a frei0r source.
23270
23271 To enable compilation of this filter you need to install the frei0r
23272 header and configure FFmpeg with @code{--enable-frei0r}.
23273
23274 This source accepts the following parameters:
23275
23276 @table @option
23277
23278 @item size
23279 The size of the video to generate. For the syntax of this option, check the
23280 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23281
23282 @item framerate
23283 The framerate of the generated video. It may be a string of the form
23284 @var{num}/@var{den} or a frame rate abbreviation.
23285
23286 @item filter_name
23287 The name to the frei0r source to load. For more information regarding frei0r and
23288 how to set the parameters, read the @ref{frei0r} section in the video filters
23289 documentation.
23290
23291 @item filter_params
23292 A '|'-separated list of parameters to pass to the frei0r source.
23293
23294 @end table
23295
23296 For example, to generate a frei0r partik0l source with size 200x200
23297 and frame rate 10 which is overlaid on the overlay filter main input:
23298 @example
23299 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
23300 @end example
23301
23302 @section life
23303
23304 Generate a life pattern.
23305
23306 This source is based on a generalization of John Conway's life game.
23307
23308 The sourced input represents a life grid, each pixel represents a cell
23309 which can be in one of two possible states, alive or dead. Every cell
23310 interacts with its eight neighbours, which are the cells that are
23311 horizontally, vertically, or diagonally adjacent.
23312
23313 At each interaction the grid evolves according to the adopted rule,
23314 which specifies the number of neighbor alive cells which will make a
23315 cell stay alive or born. The @option{rule} option allows one to specify
23316 the rule to adopt.
23317
23318 This source accepts the following options:
23319
23320 @table @option
23321 @item filename, f
23322 Set the file from which to read the initial grid state. In the file,
23323 each non-whitespace character is considered an alive cell, and newline
23324 is used to delimit the end of each row.
23325
23326 If this option is not specified, the initial grid is generated
23327 randomly.
23328
23329 @item rate, r
23330 Set the video rate, that is the number of frames generated per second.
23331 Default is 25.
23332
23333 @item random_fill_ratio, ratio
23334 Set the random fill ratio for the initial random grid. It is a
23335 floating point number value ranging from 0 to 1, defaults to 1/PHI.
23336 It is ignored when a file is specified.
23337
23338 @item random_seed, seed
23339 Set the seed for filling the initial random grid, must be an integer
23340 included between 0 and UINT32_MAX. If not specified, or if explicitly
23341 set to -1, the filter will try to use a good random seed on a best
23342 effort basis.
23343
23344 @item rule
23345 Set the life rule.
23346
23347 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
23348 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
23349 @var{NS} specifies the number of alive neighbor cells which make a
23350 live cell stay alive, and @var{NB} the number of alive neighbor cells
23351 which make a dead cell to become alive (i.e. to "born").
23352 "s" and "b" can be used in place of "S" and "B", respectively.
23353
23354 Alternatively a rule can be specified by an 18-bits integer. The 9
23355 high order bits are used to encode the next cell state if it is alive
23356 for each number of neighbor alive cells, the low order bits specify
23357 the rule for "borning" new cells. Higher order bits encode for an
23358 higher number of neighbor cells.
23359 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
23360 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
23361
23362 Default value is "S23/B3", which is the original Conway's game of life
23363 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
23364 cells, and will born a new cell if there are three alive cells around
23365 a dead cell.
23366
23367 @item size, s
23368 Set the size of the output video. For the syntax of this option, check the
23369 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23370
23371 If @option{filename} is specified, the size is set by default to the
23372 same size of the input file. If @option{size} is set, it must contain
23373 the size specified in the input file, and the initial grid defined in
23374 that file is centered in the larger resulting area.
23375
23376 If a filename is not specified, the size value defaults to "320x240"
23377 (used for a randomly generated initial grid).
23378
23379 @item stitch
23380 If set to 1, stitch the left and right grid edges together, and the
23381 top and bottom edges also. Defaults to 1.
23382
23383 @item mold
23384 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
23385 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
23386 value from 0 to 255.
23387
23388 @item life_color
23389 Set the color of living (or new born) cells.
23390
23391 @item death_color
23392 Set the color of dead cells. If @option{mold} is set, this is the first color
23393 used to represent a dead cell.
23394
23395 @item mold_color
23396 Set mold color, for definitely dead and moldy cells.
23397
23398 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
23399 ffmpeg-utils manual,ffmpeg-utils}.
23400 @end table
23401
23402 @subsection Examples
23403
23404 @itemize
23405 @item
23406 Read a grid from @file{pattern}, and center it on a grid of size
23407 300x300 pixels:
23408 @example
23409 life=f=pattern:s=300x300
23410 @end example
23411
23412 @item
23413 Generate a random grid of size 200x200, with a fill ratio of 2/3:
23414 @example
23415 life=ratio=2/3:s=200x200
23416 @end example
23417
23418 @item
23419 Specify a custom rule for evolving a randomly generated grid:
23420 @example
23421 life=rule=S14/B34
23422 @end example
23423
23424 @item
23425 Full example with slow death effect (mold) using @command{ffplay}:
23426 @example
23427 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
23428 @end example
23429 @end itemize
23430
23431 @anchor{allrgb}
23432 @anchor{allyuv}
23433 @anchor{color}
23434 @anchor{haldclutsrc}
23435 @anchor{nullsrc}
23436 @anchor{pal75bars}
23437 @anchor{pal100bars}
23438 @anchor{rgbtestsrc}
23439 @anchor{smptebars}
23440 @anchor{smptehdbars}
23441 @anchor{testsrc}
23442 @anchor{testsrc2}
23443 @anchor{yuvtestsrc}
23444 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
23445
23446 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
23447
23448 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
23449
23450 The @code{color} source provides an uniformly colored input.
23451
23452 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
23453 @ref{haldclut} filter.
23454
23455 The @code{nullsrc} source returns unprocessed video frames. It is
23456 mainly useful to be employed in analysis / debugging tools, or as the
23457 source for filters which ignore the input data.
23458
23459 The @code{pal75bars} source generates a color bars pattern, based on
23460 EBU PAL recommendations with 75% color levels.
23461
23462 The @code{pal100bars} source generates a color bars pattern, based on
23463 EBU PAL recommendations with 100% color levels.
23464
23465 The @code{rgbtestsrc} source generates an RGB test pattern useful for
23466 detecting RGB vs BGR issues. You should see a red, green and blue
23467 stripe from top to bottom.
23468
23469 The @code{smptebars} source generates a color bars pattern, based on
23470 the SMPTE Engineering Guideline EG 1-1990.
23471
23472 The @code{smptehdbars} source generates a color bars pattern, based on
23473 the SMPTE RP 219-2002.
23474
23475 The @code{testsrc} source generates a test video pattern, showing a
23476 color pattern, a scrolling gradient and a timestamp. This is mainly
23477 intended for testing purposes.
23478
23479 The @code{testsrc2} source is similar to testsrc, but supports more
23480 pixel formats instead of just @code{rgb24}. This allows using it as an
23481 input for other tests without requiring a format conversion.
23482
23483 The @code{yuvtestsrc} source generates an YUV test pattern. You should
23484 see a y, cb and cr stripe from top to bottom.
23485
23486 The sources accept the following parameters:
23487
23488 @table @option
23489
23490 @item level
23491 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
23492 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
23493 pixels to be used as identity matrix for 3D lookup tables. Each component is
23494 coded on a @code{1/(N*N)} scale.
23495
23496 @item color, c
23497 Specify the color of the source, only available in the @code{color}
23498 source. For the syntax of this option, check the
23499 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
23500
23501 @item size, s
23502 Specify the size of the sourced video. For the syntax of this option, check the
23503 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23504 The default value is @code{320x240}.
23505
23506 This option is not available with the @code{allrgb}, @code{allyuv}, and
23507 @code{haldclutsrc} filters.
23508
23509 @item rate, r
23510 Specify the frame rate of the sourced video, as the number of frames
23511 generated per second. It has to be a string in the format
23512 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23513 number or a valid video frame rate abbreviation. The default value is
23514 "25".
23515
23516 @item duration, d
23517 Set the duration of the sourced video. See
23518 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23519 for the accepted syntax.
23520
23521 If not specified, or the expressed duration is negative, the video is
23522 supposed to be generated forever.
23523
23524 Since the frame rate is used as time base, all frames including the last one
23525 will have their full duration. If the specified duration is not a multiple
23526 of the frame duration, it will be rounded up.
23527
23528 @item sar
23529 Set the sample aspect ratio of the sourced video.
23530
23531 @item alpha
23532 Specify the alpha (opacity) of the background, only available in the
23533 @code{testsrc2} source. The value must be between 0 (fully transparent) and
23534 255 (fully opaque, the default).
23535
23536 @item decimals, n
23537 Set the number of decimals to show in the timestamp, only available in the
23538 @code{testsrc} source.
23539
23540 The displayed timestamp value will correspond to the original
23541 timestamp value multiplied by the power of 10 of the specified
23542 value. Default value is 0.
23543 @end table
23544
23545 @subsection Examples
23546
23547 @itemize
23548 @item
23549 Generate a video with a duration of 5.3 seconds, with size
23550 176x144 and a frame rate of 10 frames per second:
23551 @example
23552 testsrc=duration=5.3:size=qcif:rate=10
23553 @end example
23554
23555 @item
23556 The following graph description will generate a red source
23557 with an opacity of 0.2, with size "qcif" and a frame rate of 10
23558 frames per second:
23559 @example
23560 color=c=red@@0.2:s=qcif:r=10
23561 @end example
23562
23563 @item
23564 If the input content is to be ignored, @code{nullsrc} can be used. The
23565 following command generates noise in the luminance plane by employing
23566 the @code{geq} filter:
23567 @example
23568 nullsrc=s=256x256, geq=random(1)*255:128:128
23569 @end example
23570 @end itemize
23571
23572 @subsection Commands
23573
23574 The @code{color} source supports the following commands:
23575
23576 @table @option
23577 @item c, color
23578 Set the color of the created image. Accepts the same syntax of the
23579 corresponding @option{color} option.
23580 @end table
23581
23582 @section openclsrc
23583
23584 Generate video using an OpenCL program.
23585
23586 @table @option
23587
23588 @item source
23589 OpenCL program source file.
23590
23591 @item kernel
23592 Kernel name in program.
23593
23594 @item size, s
23595 Size of frames to generate.  This must be set.
23596
23597 @item format
23598 Pixel format to use for the generated frames.  This must be set.
23599
23600 @item rate, r
23601 Number of frames generated every second.  Default value is '25'.
23602
23603 @end table
23604
23605 For details of how the program loading works, see the @ref{program_opencl}
23606 filter.
23607
23608 Example programs:
23609
23610 @itemize
23611 @item
23612 Generate a colour ramp by setting pixel values from the position of the pixel
23613 in the output image.  (Note that this will work with all pixel formats, but
23614 the generated output will not be the same.)
23615 @verbatim
23616 __kernel void ramp(__write_only image2d_t dst,
23617                    unsigned int index)
23618 {
23619     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23620
23621     float4 val;
23622     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
23623
23624     write_imagef(dst, loc, val);
23625 }
23626 @end verbatim
23627
23628 @item
23629 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
23630 @verbatim
23631 __kernel void sierpinski_carpet(__write_only image2d_t dst,
23632                                 unsigned int index)
23633 {
23634     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23635
23636     float4 value = 0.0f;
23637     int x = loc.x + index;
23638     int y = loc.y + index;
23639     while (x > 0 || y > 0) {
23640         if (x % 3 == 1 && y % 3 == 1) {
23641             value = 1.0f;
23642             break;
23643         }
23644         x /= 3;
23645         y /= 3;
23646     }
23647
23648     write_imagef(dst, loc, value);
23649 }
23650 @end verbatim
23651
23652 @end itemize
23653
23654 @section sierpinski
23655
23656 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
23657
23658 This source accepts the following options:
23659
23660 @table @option
23661 @item size, s
23662 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23663 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23664
23665 @item rate, r
23666 Set frame rate, expressed as number of frames per second. Default
23667 value is "25".
23668
23669 @item seed
23670 Set seed which is used for random panning.
23671
23672 @item jump
23673 Set max jump for single pan destination. Allowed range is from 1 to 10000.
23674
23675 @item type
23676 Set fractal type, can be default @code{carpet} or @code{triangle}.
23677 @end table
23678
23679 @c man end VIDEO SOURCES
23680
23681 @chapter Video Sinks
23682 @c man begin VIDEO SINKS
23683
23684 Below is a description of the currently available video sinks.
23685
23686 @section buffersink
23687
23688 Buffer video frames, and make them available to the end of the filter
23689 graph.
23690
23691 This sink is mainly intended for programmatic use, in particular
23692 through the interface defined in @file{libavfilter/buffersink.h}
23693 or the options system.
23694
23695 It accepts a pointer to an AVBufferSinkContext structure, which
23696 defines the incoming buffers' formats, to be passed as the opaque
23697 parameter to @code{avfilter_init_filter} for initialization.
23698
23699 @section nullsink
23700
23701 Null video sink: do absolutely nothing with the input video. It is
23702 mainly useful as a template and for use in analysis / debugging
23703 tools.
23704
23705 @c man end VIDEO SINKS
23706
23707 @chapter Multimedia Filters
23708 @c man begin MULTIMEDIA FILTERS
23709
23710 Below is a description of the currently available multimedia filters.
23711
23712 @section abitscope
23713
23714 Convert input audio to a video output, displaying the audio bit scope.
23715
23716 The filter accepts the following options:
23717
23718 @table @option
23719 @item rate, r
23720 Set frame rate, expressed as number of frames per second. Default
23721 value is "25".
23722
23723 @item size, s
23724 Specify the video size for the output. For the syntax of this option, check the
23725 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23726 Default value is @code{1024x256}.
23727
23728 @item colors
23729 Specify list of colors separated by space or by '|' which will be used to
23730 draw channels. Unrecognized or missing colors will be replaced
23731 by white color.
23732 @end table
23733
23734 @section adrawgraph
23735 Draw a graph using input audio metadata.
23736
23737 See @ref{drawgraph}
23738
23739 @section agraphmonitor
23740
23741 See @ref{graphmonitor}.
23742
23743 @section ahistogram
23744
23745 Convert input audio to a video output, displaying the volume histogram.
23746
23747 The filter accepts the following options:
23748
23749 @table @option
23750 @item dmode
23751 Specify how histogram is calculated.
23752
23753 It accepts the following values:
23754 @table @samp
23755 @item single
23756 Use single histogram for all channels.
23757 @item separate
23758 Use separate histogram for each channel.
23759 @end table
23760 Default is @code{single}.
23761
23762 @item rate, r
23763 Set frame rate, expressed as number of frames per second. Default
23764 value is "25".
23765
23766 @item size, s
23767 Specify the video size for the output. For the syntax of this option, check the
23768 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23769 Default value is @code{hd720}.
23770
23771 @item scale
23772 Set display scale.
23773
23774 It accepts the following values:
23775 @table @samp
23776 @item log
23777 logarithmic
23778 @item sqrt
23779 square root
23780 @item cbrt
23781 cubic root
23782 @item lin
23783 linear
23784 @item rlog
23785 reverse logarithmic
23786 @end table
23787 Default is @code{log}.
23788
23789 @item ascale
23790 Set amplitude scale.
23791
23792 It accepts the following values:
23793 @table @samp
23794 @item log
23795 logarithmic
23796 @item lin
23797 linear
23798 @end table
23799 Default is @code{log}.
23800
23801 @item acount
23802 Set how much frames to accumulate in histogram.
23803 Default is 1. Setting this to -1 accumulates all frames.
23804
23805 @item rheight
23806 Set histogram ratio of window height.
23807
23808 @item slide
23809 Set sonogram sliding.
23810
23811 It accepts the following values:
23812 @table @samp
23813 @item replace
23814 replace old rows with new ones.
23815 @item scroll
23816 scroll from top to bottom.
23817 @end table
23818 Default is @code{replace}.
23819 @end table
23820
23821 @section aphasemeter
23822
23823 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
23824 representing mean phase of current audio frame. A video output can also be produced and is
23825 enabled by default. The audio is passed through as first output.
23826
23827 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
23828 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
23829 and @code{1} means channels are in phase.
23830
23831 The filter accepts the following options, all related to its video output:
23832
23833 @table @option
23834 @item rate, r
23835 Set the output frame rate. Default value is @code{25}.
23836
23837 @item size, s
23838 Set the video size for the output. For the syntax of this option, check the
23839 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23840 Default value is @code{800x400}.
23841
23842 @item rc
23843 @item gc
23844 @item bc
23845 Specify the red, green, blue contrast. Default values are @code{2},
23846 @code{7} and @code{1}.
23847 Allowed range is @code{[0, 255]}.
23848
23849 @item mpc
23850 Set color which will be used for drawing median phase. If color is
23851 @code{none} which is default, no median phase value will be drawn.
23852
23853 @item video
23854 Enable video output. Default is enabled.
23855 @end table
23856
23857 @subsection phasing detection
23858
23859 The filter also detects out of phase and mono sequences in stereo streams.
23860 It logs the sequence start, end and duration when it lasts longer or as long as the minimum set.
23861
23862 The filter accepts the following options for this detection:
23863
23864 @table @option
23865 @item phasing
23866 Enable mono and out of phase detection. Default is disabled.
23867
23868 @item tolerance, t
23869 Set phase tolerance for mono detection, in amplitude ratio. Default is @code{0}.
23870 Allowed range is @code{[0, 1]}.
23871
23872 @item angle, a
23873 Set angle threshold for out of phase detection, in degree. Default is @code{170}.
23874 Allowed range is @code{[90, 180]}.
23875
23876 @item duration, d
23877 Set mono or out of phase duration until notification, expressed in seconds. Default is @code{2}.
23878 @end table
23879
23880 @subsection Examples
23881
23882 @itemize
23883 @item
23884 Complete example with @command{ffmpeg} to detect 1 second of mono with 0.001 phase tolerance:
23885 @example
23886 ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
23887 @end example
23888 @end itemize
23889
23890 @section avectorscope
23891
23892 Convert input audio to a video output, representing the audio vector
23893 scope.
23894
23895 The filter is used to measure the difference between channels of stereo
23896 audio stream. A monaural signal, consisting of identical left and right
23897 signal, results in straight vertical line. Any stereo separation is visible
23898 as a deviation from this line, creating a Lissajous figure.
23899 If the straight (or deviation from it) but horizontal line appears this
23900 indicates that the left and right channels are out of phase.
23901
23902 The filter accepts the following options:
23903
23904 @table @option
23905 @item mode, m
23906 Set the vectorscope mode.
23907
23908 Available values are:
23909 @table @samp
23910 @item lissajous
23911 Lissajous rotated by 45 degrees.
23912
23913 @item lissajous_xy
23914 Same as above but not rotated.
23915
23916 @item polar
23917 Shape resembling half of circle.
23918 @end table
23919
23920 Default value is @samp{lissajous}.
23921
23922 @item size, s
23923 Set the video size for the output. For the syntax of this option, check the
23924 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23925 Default value is @code{400x400}.
23926
23927 @item rate, r
23928 Set the output frame rate. Default value is @code{25}.
23929
23930 @item rc
23931 @item gc
23932 @item bc
23933 @item ac
23934 Specify the red, green, blue and alpha contrast. Default values are @code{40},
23935 @code{160}, @code{80} and @code{255}.
23936 Allowed range is @code{[0, 255]}.
23937
23938 @item rf
23939 @item gf
23940 @item bf
23941 @item af
23942 Specify the red, green, blue and alpha fade. Default values are @code{15},
23943 @code{10}, @code{5} and @code{5}.
23944 Allowed range is @code{[0, 255]}.
23945
23946 @item zoom
23947 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
23948 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
23949
23950 @item draw
23951 Set the vectorscope drawing mode.
23952
23953 Available values are:
23954 @table @samp
23955 @item dot
23956 Draw dot for each sample.
23957
23958 @item line
23959 Draw line between previous and current sample.
23960 @end table
23961
23962 Default value is @samp{dot}.
23963
23964 @item scale
23965 Specify amplitude scale of audio samples.
23966
23967 Available values are:
23968 @table @samp
23969 @item lin
23970 Linear.
23971
23972 @item sqrt
23973 Square root.
23974
23975 @item cbrt
23976 Cubic root.
23977
23978 @item log
23979 Logarithmic.
23980 @end table
23981
23982 @item swap
23983 Swap left channel axis with right channel axis.
23984
23985 @item mirror
23986 Mirror axis.
23987
23988 @table @samp
23989 @item none
23990 No mirror.
23991
23992 @item x
23993 Mirror only x axis.
23994
23995 @item y
23996 Mirror only y axis.
23997
23998 @item xy
23999 Mirror both axis.
24000 @end table
24001
24002 @end table
24003
24004 @subsection Examples
24005
24006 @itemize
24007 @item
24008 Complete example using @command{ffplay}:
24009 @example
24010 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
24011              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
24012 @end example
24013 @end itemize
24014
24015 @section bench, abench
24016
24017 Benchmark part of a filtergraph.
24018
24019 The filter accepts the following options:
24020
24021 @table @option
24022 @item action
24023 Start or stop a timer.
24024
24025 Available values are:
24026 @table @samp
24027 @item start
24028 Get the current time, set it as frame metadata (using the key
24029 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
24030
24031 @item stop
24032 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
24033 the input frame metadata to get the time difference. Time difference, average,
24034 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
24035 @code{min}) are then printed. The timestamps are expressed in seconds.
24036 @end table
24037 @end table
24038
24039 @subsection Examples
24040
24041 @itemize
24042 @item
24043 Benchmark @ref{selectivecolor} filter:
24044 @example
24045 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
24046 @end example
24047 @end itemize
24048
24049 @section concat
24050
24051 Concatenate audio and video streams, joining them together one after the
24052 other.
24053
24054 The filter works on segments of synchronized video and audio streams. All
24055 segments must have the same number of streams of each type, and that will
24056 also be the number of streams at output.
24057
24058 The filter accepts the following options:
24059
24060 @table @option
24061
24062 @item n
24063 Set the number of segments. Default is 2.
24064
24065 @item v
24066 Set the number of output video streams, that is also the number of video
24067 streams in each segment. Default is 1.
24068
24069 @item a
24070 Set the number of output audio streams, that is also the number of audio
24071 streams in each segment. Default is 0.
24072
24073 @item unsafe
24074 Activate unsafe mode: do not fail if segments have a different format.
24075
24076 @end table
24077
24078 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
24079 @var{a} audio outputs.
24080
24081 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
24082 segment, in the same order as the outputs, then the inputs for the second
24083 segment, etc.
24084
24085 Related streams do not always have exactly the same duration, for various
24086 reasons including codec frame size or sloppy authoring. For that reason,
24087 related synchronized streams (e.g. a video and its audio track) should be
24088 concatenated at once. The concat filter will use the duration of the longest
24089 stream in each segment (except the last one), and if necessary pad shorter
24090 audio streams with silence.
24091
24092 For this filter to work correctly, all segments must start at timestamp 0.
24093
24094 All corresponding streams must have the same parameters in all segments; the
24095 filtering system will automatically select a common pixel format for video
24096 streams, and a common sample format, sample rate and channel layout for
24097 audio streams, but other settings, such as resolution, must be converted
24098 explicitly by the user.
24099
24100 Different frame rates are acceptable but will result in variable frame rate
24101 at output; be sure to configure the output file to handle it.
24102
24103 @subsection Examples
24104
24105 @itemize
24106 @item
24107 Concatenate an opening, an episode and an ending, all in bilingual version
24108 (video in stream 0, audio in streams 1 and 2):
24109 @example
24110 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
24111   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
24112    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
24113   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
24114 @end example
24115
24116 @item
24117 Concatenate two parts, handling audio and video separately, using the
24118 (a)movie sources, and adjusting the resolution:
24119 @example
24120 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
24121 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
24122 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
24123 @end example
24124 Note that a desync will happen at the stitch if the audio and video streams
24125 do not have exactly the same duration in the first file.
24126
24127 @end itemize
24128
24129 @subsection Commands
24130
24131 This filter supports the following commands:
24132 @table @option
24133 @item next
24134 Close the current segment and step to the next one
24135 @end table
24136
24137 @anchor{ebur128}
24138 @section ebur128
24139
24140 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
24141 level. By default, it logs a message at a frequency of 10Hz with the
24142 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
24143 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
24144
24145 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
24146 sample format is double-precision floating point. The input stream will be converted to
24147 this specification, if needed. Users may need to insert aformat and/or aresample filters
24148 after this filter to obtain the original parameters.
24149
24150 The filter also has a video output (see the @var{video} option) with a real
24151 time graph to observe the loudness evolution. The graphic contains the logged
24152 message mentioned above, so it is not printed anymore when this option is set,
24153 unless the verbose logging is set. The main graphing area contains the
24154 short-term loudness (3 seconds of analysis), and the gauge on the right is for
24155 the momentary loudness (400 milliseconds), but can optionally be configured
24156 to instead display short-term loudness (see @var{gauge}).
24157
24158 The green area marks a  +/- 1LU target range around the target loudness
24159 (-23LUFS by default, unless modified through @var{target}).
24160
24161 More information about the Loudness Recommendation EBU R128 on
24162 @url{http://tech.ebu.ch/loudness}.
24163
24164 The filter accepts the following options:
24165
24166 @table @option
24167
24168 @item video
24169 Activate the video output. The audio stream is passed unchanged whether this
24170 option is set or no. The video stream will be the first output stream if
24171 activated. Default is @code{0}.
24172
24173 @item size
24174 Set the video size. This option is for video only. For the syntax of this
24175 option, check the
24176 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24177 Default and minimum resolution is @code{640x480}.
24178
24179 @item meter
24180 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
24181 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
24182 other integer value between this range is allowed.
24183
24184 @item metadata
24185 Set metadata injection. If set to @code{1}, the audio input will be segmented
24186 into 100ms output frames, each of them containing various loudness information
24187 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
24188
24189 Default is @code{0}.
24190
24191 @item framelog
24192 Force the frame logging level.
24193
24194 Available values are:
24195 @table @samp
24196 @item info
24197 information logging level
24198 @item verbose
24199 verbose logging level
24200 @end table
24201
24202 By default, the logging level is set to @var{info}. If the @option{video} or
24203 the @option{metadata} options are set, it switches to @var{verbose}.
24204
24205 @item peak
24206 Set peak mode(s).
24207
24208 Available modes can be cumulated (the option is a @code{flag} type). Possible
24209 values are:
24210 @table @samp
24211 @item none
24212 Disable any peak mode (default).
24213 @item sample
24214 Enable sample-peak mode.
24215
24216 Simple peak mode looking for the higher sample value. It logs a message
24217 for sample-peak (identified by @code{SPK}).
24218 @item true
24219 Enable true-peak mode.
24220
24221 If enabled, the peak lookup is done on an over-sampled version of the input
24222 stream for better peak accuracy. It logs a message for true-peak.
24223 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
24224 This mode requires a build with @code{libswresample}.
24225 @end table
24226
24227 @item dualmono
24228 Treat mono input files as "dual mono". If a mono file is intended for playback
24229 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
24230 If set to @code{true}, this option will compensate for this effect.
24231 Multi-channel input files are not affected by this option.
24232
24233 @item panlaw
24234 Set a specific pan law to be used for the measurement of dual mono files.
24235 This parameter is optional, and has a default value of -3.01dB.
24236
24237 @item target
24238 Set a specific target level (in LUFS) used as relative zero in the visualization.
24239 This parameter is optional and has a default value of -23LUFS as specified
24240 by EBU R128. However, material published online may prefer a level of -16LUFS
24241 (e.g. for use with podcasts or video platforms).
24242
24243 @item gauge
24244 Set the value displayed by the gauge. Valid values are @code{momentary} and s
24245 @code{shortterm}. By default the momentary value will be used, but in certain
24246 scenarios it may be more useful to observe the short term value instead (e.g.
24247 live mixing).
24248
24249 @item scale
24250 Sets the display scale for the loudness. Valid parameters are @code{absolute}
24251 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
24252 video output, not the summary or continuous log output.
24253 @end table
24254
24255 @subsection Examples
24256
24257 @itemize
24258 @item
24259 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
24260 @example
24261 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
24262 @end example
24263
24264 @item
24265 Run an analysis with @command{ffmpeg}:
24266 @example
24267 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
24268 @end example
24269 @end itemize
24270
24271 @section interleave, ainterleave
24272
24273 Temporally interleave frames from several inputs.
24274
24275 @code{interleave} works with video inputs, @code{ainterleave} with audio.
24276
24277 These filters read frames from several inputs and send the oldest
24278 queued frame to the output.
24279
24280 Input streams must have well defined, monotonically increasing frame
24281 timestamp values.
24282
24283 In order to submit one frame to output, these filters need to enqueue
24284 at least one frame for each input, so they cannot work in case one
24285 input is not yet terminated and will not receive incoming frames.
24286
24287 For example consider the case when one input is a @code{select} filter
24288 which always drops input frames. The @code{interleave} filter will keep
24289 reading from that input, but it will never be able to send new frames
24290 to output until the input sends an end-of-stream signal.
24291
24292 Also, depending on inputs synchronization, the filters will drop
24293 frames in case one input receives more frames than the other ones, and
24294 the queue is already filled.
24295
24296 These filters accept the following options:
24297
24298 @table @option
24299 @item nb_inputs, n
24300 Set the number of different inputs, it is 2 by default.
24301
24302 @item duration
24303 How to determine the end-of-stream.
24304
24305 @table @option
24306 @item longest
24307 The duration of the longest input. (default)
24308
24309 @item shortest
24310 The duration of the shortest input.
24311
24312 @item first
24313 The duration of the first input.
24314 @end table
24315
24316 @end table
24317
24318 @subsection Examples
24319
24320 @itemize
24321 @item
24322 Interleave frames belonging to different streams using @command{ffmpeg}:
24323 @example
24324 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
24325 @end example
24326
24327 @item
24328 Add flickering blur effect:
24329 @example
24330 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
24331 @end example
24332 @end itemize
24333
24334 @section metadata, ametadata
24335
24336 Manipulate frame metadata.
24337
24338 This filter accepts the following options:
24339
24340 @table @option
24341 @item mode
24342 Set mode of operation of the filter.
24343
24344 Can be one of the following:
24345
24346 @table @samp
24347 @item select
24348 If both @code{value} and @code{key} is set, select frames
24349 which have such metadata. If only @code{key} is set, select
24350 every frame that has such key in metadata.
24351
24352 @item add
24353 Add new metadata @code{key} and @code{value}. If key is already available
24354 do nothing.
24355
24356 @item modify
24357 Modify value of already present key.
24358
24359 @item delete
24360 If @code{value} is set, delete only keys that have such value.
24361 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
24362 the frame.
24363
24364 @item print
24365 Print key and its value if metadata was found. If @code{key} is not set print all
24366 metadata values available in frame.
24367 @end table
24368
24369 @item key
24370 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
24371
24372 @item value
24373 Set metadata value which will be used. This option is mandatory for
24374 @code{modify} and @code{add} mode.
24375
24376 @item function
24377 Which function to use when comparing metadata value and @code{value}.
24378
24379 Can be one of following:
24380
24381 @table @samp
24382 @item same_str
24383 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
24384
24385 @item starts_with
24386 Values are interpreted as strings, returns true if metadata value starts with
24387 the @code{value} option string.
24388
24389 @item less
24390 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
24391
24392 @item equal
24393 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
24394
24395 @item greater
24396 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
24397
24398 @item expr
24399 Values are interpreted as floats, returns true if expression from option @code{expr}
24400 evaluates to true.
24401
24402 @item ends_with
24403 Values are interpreted as strings, returns true if metadata value ends with
24404 the @code{value} option string.
24405 @end table
24406
24407 @item expr
24408 Set expression which is used when @code{function} is set to @code{expr}.
24409 The expression is evaluated through the eval API and can contain the following
24410 constants:
24411
24412 @table @option
24413 @item VALUE1
24414 Float representation of @code{value} from metadata key.
24415
24416 @item VALUE2
24417 Float representation of @code{value} as supplied by user in @code{value} option.
24418 @end table
24419
24420 @item file
24421 If specified in @code{print} mode, output is written to the named file. Instead of
24422 plain filename any writable url can be specified. Filename ``-'' is a shorthand
24423 for standard output. If @code{file} option is not set, output is written to the log
24424 with AV_LOG_INFO loglevel.
24425
24426 @item direct
24427 Reduces buffering in print mode when output is written to a URL set using @var{file}.
24428
24429 @end table
24430
24431 @subsection Examples
24432
24433 @itemize
24434 @item
24435 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
24436 between 0 and 1.
24437 @example
24438 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
24439 @end example
24440 @item
24441 Print silencedetect output to file @file{metadata.txt}.
24442 @example
24443 silencedetect,ametadata=mode=print:file=metadata.txt
24444 @end example
24445 @item
24446 Direct all metadata to a pipe with file descriptor 4.
24447 @example
24448 metadata=mode=print:file='pipe\:4'
24449 @end example
24450 @end itemize
24451
24452 @section perms, aperms
24453
24454 Set read/write permissions for the output frames.
24455
24456 These filters are mainly aimed at developers to test direct path in the
24457 following filter in the filtergraph.
24458
24459 The filters accept the following options:
24460
24461 @table @option
24462 @item mode
24463 Select the permissions mode.
24464
24465 It accepts the following values:
24466 @table @samp
24467 @item none
24468 Do nothing. This is the default.
24469 @item ro
24470 Set all the output frames read-only.
24471 @item rw
24472 Set all the output frames directly writable.
24473 @item toggle
24474 Make the frame read-only if writable, and writable if read-only.
24475 @item random
24476 Set each output frame read-only or writable randomly.
24477 @end table
24478
24479 @item seed
24480 Set the seed for the @var{random} mode, must be an integer included between
24481 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
24482 @code{-1}, the filter will try to use a good random seed on a best effort
24483 basis.
24484 @end table
24485
24486 Note: in case of auto-inserted filter between the permission filter and the
24487 following one, the permission might not be received as expected in that
24488 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
24489 perms/aperms filter can avoid this problem.
24490
24491 @section realtime, arealtime
24492
24493 Slow down filtering to match real time approximately.
24494
24495 These filters will pause the filtering for a variable amount of time to
24496 match the output rate with the input timestamps.
24497 They are similar to the @option{re} option to @code{ffmpeg}.
24498
24499 They accept the following options:
24500
24501 @table @option
24502 @item limit
24503 Time limit for the pauses. Any pause longer than that will be considered
24504 a timestamp discontinuity and reset the timer. Default is 2 seconds.
24505 @item speed
24506 Speed factor for processing. The value must be a float larger than zero.
24507 Values larger than 1.0 will result in faster than realtime processing,
24508 smaller will slow processing down. The @var{limit} is automatically adapted
24509 accordingly. Default is 1.0.
24510
24511 A processing speed faster than what is possible without these filters cannot
24512 be achieved.
24513 @end table
24514
24515 @anchor{select}
24516 @section select, aselect
24517
24518 Select frames to pass in output.
24519
24520 This filter accepts the following options:
24521
24522 @table @option
24523
24524 @item expr, e
24525 Set expression, which is evaluated for each input frame.
24526
24527 If the expression is evaluated to zero, the frame is discarded.
24528
24529 If the evaluation result is negative or NaN, the frame is sent to the
24530 first output; otherwise it is sent to the output with index
24531 @code{ceil(val)-1}, assuming that the input index starts from 0.
24532
24533 For example a value of @code{1.2} corresponds to the output with index
24534 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
24535
24536 @item outputs, n
24537 Set the number of outputs. The output to which to send the selected
24538 frame is based on the result of the evaluation. Default value is 1.
24539 @end table
24540
24541 The expression can contain the following constants:
24542
24543 @table @option
24544 @item n
24545 The (sequential) number of the filtered frame, starting from 0.
24546
24547 @item selected_n
24548 The (sequential) number of the selected frame, starting from 0.
24549
24550 @item prev_selected_n
24551 The sequential number of the last selected frame. It's NAN if undefined.
24552
24553 @item TB
24554 The timebase of the input timestamps.
24555
24556 @item pts
24557 The PTS (Presentation TimeStamp) of the filtered video frame,
24558 expressed in @var{TB} units. It's NAN if undefined.
24559
24560 @item t
24561 The PTS of the filtered video frame,
24562 expressed in seconds. It's NAN if undefined.
24563
24564 @item prev_pts
24565 The PTS of the previously filtered video frame. It's NAN if undefined.
24566
24567 @item prev_selected_pts
24568 The PTS of the last previously filtered video frame. It's NAN if undefined.
24569
24570 @item prev_selected_t
24571 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
24572
24573 @item start_pts
24574 The PTS of the first video frame in the video. It's NAN if undefined.
24575
24576 @item start_t
24577 The time of the first video frame in the video. It's NAN if undefined.
24578
24579 @item pict_type @emph{(video only)}
24580 The type of the filtered frame. It can assume one of the following
24581 values:
24582 @table @option
24583 @item I
24584 @item P
24585 @item B
24586 @item S
24587 @item SI
24588 @item SP
24589 @item BI
24590 @end table
24591
24592 @item interlace_type @emph{(video only)}
24593 The frame interlace type. It can assume one of the following values:
24594 @table @option
24595 @item PROGRESSIVE
24596 The frame is progressive (not interlaced).
24597 @item TOPFIRST
24598 The frame is top-field-first.
24599 @item BOTTOMFIRST
24600 The frame is bottom-field-first.
24601 @end table
24602
24603 @item consumed_sample_n @emph{(audio only)}
24604 the number of selected samples before the current frame
24605
24606 @item samples_n @emph{(audio only)}
24607 the number of samples in the current frame
24608
24609 @item sample_rate @emph{(audio only)}
24610 the input sample rate
24611
24612 @item key
24613 This is 1 if the filtered frame is a key-frame, 0 otherwise.
24614
24615 @item pos
24616 the position in the file of the filtered frame, -1 if the information
24617 is not available (e.g. for synthetic video)
24618
24619 @item scene @emph{(video only)}
24620 value between 0 and 1 to indicate a new scene; a low value reflects a low
24621 probability for the current frame to introduce a new scene, while a higher
24622 value means the current frame is more likely to be one (see the example below)
24623
24624 @item concatdec_select
24625 The concat demuxer can select only part of a concat input file by setting an
24626 inpoint and an outpoint, but the output packets may not be entirely contained
24627 in the selected interval. By using this variable, it is possible to skip frames
24628 generated by the concat demuxer which are not exactly contained in the selected
24629 interval.
24630
24631 This works by comparing the frame pts against the @var{lavf.concat.start_time}
24632 and the @var{lavf.concat.duration} packet metadata values which are also
24633 present in the decoded frames.
24634
24635 The @var{concatdec_select} variable is -1 if the frame pts is at least
24636 start_time and either the duration metadata is missing or the frame pts is less
24637 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
24638 missing.
24639
24640 That basically means that an input frame is selected if its pts is within the
24641 interval set by the concat demuxer.
24642
24643 @end table
24644
24645 The default value of the select expression is "1".
24646
24647 @subsection Examples
24648
24649 @itemize
24650 @item
24651 Select all frames in input:
24652 @example
24653 select
24654 @end example
24655
24656 The example above is the same as:
24657 @example
24658 select=1
24659 @end example
24660
24661 @item
24662 Skip all frames:
24663 @example
24664 select=0
24665 @end example
24666
24667 @item
24668 Select only I-frames:
24669 @example
24670 select='eq(pict_type\,I)'
24671 @end example
24672
24673 @item
24674 Select one frame every 100:
24675 @example
24676 select='not(mod(n\,100))'
24677 @end example
24678
24679 @item
24680 Select only frames contained in the 10-20 time interval:
24681 @example
24682 select=between(t\,10\,20)
24683 @end example
24684
24685 @item
24686 Select only I-frames contained in the 10-20 time interval:
24687 @example
24688 select=between(t\,10\,20)*eq(pict_type\,I)
24689 @end example
24690
24691 @item
24692 Select frames with a minimum distance of 10 seconds:
24693 @example
24694 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
24695 @end example
24696
24697 @item
24698 Use aselect to select only audio frames with samples number > 100:
24699 @example
24700 aselect='gt(samples_n\,100)'
24701 @end example
24702
24703 @item
24704 Create a mosaic of the first scenes:
24705 @example
24706 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
24707 @end example
24708
24709 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
24710 choice.
24711
24712 @item
24713 Send even and odd frames to separate outputs, and compose them:
24714 @example
24715 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
24716 @end example
24717
24718 @item
24719 Select useful frames from an ffconcat file which is using inpoints and
24720 outpoints but where the source files are not intra frame only.
24721 @example
24722 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
24723 @end example
24724 @end itemize
24725
24726 @section sendcmd, asendcmd
24727
24728 Send commands to filters in the filtergraph.
24729
24730 These filters read commands to be sent to other filters in the
24731 filtergraph.
24732
24733 @code{sendcmd} must be inserted between two video filters,
24734 @code{asendcmd} must be inserted between two audio filters, but apart
24735 from that they act the same way.
24736
24737 The specification of commands can be provided in the filter arguments
24738 with the @var{commands} option, or in a file specified by the
24739 @var{filename} option.
24740
24741 These filters accept the following options:
24742 @table @option
24743 @item commands, c
24744 Set the commands to be read and sent to the other filters.
24745 @item filename, f
24746 Set the filename of the commands to be read and sent to the other
24747 filters.
24748 @end table
24749
24750 @subsection Commands syntax
24751
24752 A commands description consists of a sequence of interval
24753 specifications, comprising a list of commands to be executed when a
24754 particular event related to that interval occurs. The occurring event
24755 is typically the current frame time entering or leaving a given time
24756 interval.
24757
24758 An interval is specified by the following syntax:
24759 @example
24760 @var{START}[-@var{END}] @var{COMMANDS};
24761 @end example
24762
24763 The time interval is specified by the @var{START} and @var{END} times.
24764 @var{END} is optional and defaults to the maximum time.
24765
24766 The current frame time is considered within the specified interval if
24767 it is included in the interval [@var{START}, @var{END}), that is when
24768 the time is greater or equal to @var{START} and is lesser than
24769 @var{END}.
24770
24771 @var{COMMANDS} consists of a sequence of one or more command
24772 specifications, separated by ",", relating to that interval.  The
24773 syntax of a command specification is given by:
24774 @example
24775 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
24776 @end example
24777
24778 @var{FLAGS} is optional and specifies the type of events relating to
24779 the time interval which enable sending the specified command, and must
24780 be a non-null sequence of identifier flags separated by "+" or "|" and
24781 enclosed between "[" and "]".
24782
24783 The following flags are recognized:
24784 @table @option
24785 @item enter
24786 The command is sent when the current frame timestamp enters the
24787 specified interval. In other words, the command is sent when the
24788 previous frame timestamp was not in the given interval, and the
24789 current is.
24790
24791 @item leave
24792 The command is sent when the current frame timestamp leaves the
24793 specified interval. In other words, the command is sent when the
24794 previous frame timestamp was in the given interval, and the
24795 current is not.
24796
24797 @item expr
24798 The command @var{ARG} is interpreted as expression and result of
24799 expression is passed as @var{ARG}.
24800
24801 The expression is evaluated through the eval API and can contain the following
24802 constants:
24803
24804 @table @option
24805 @item POS
24806 Original position in the file of the frame, or undefined if undefined
24807 for the current frame.
24808
24809 @item PTS
24810 The presentation timestamp in input.
24811
24812 @item N
24813 The count of the input frame for video or audio, starting from 0.
24814
24815 @item T
24816 The time in seconds of the current frame.
24817
24818 @item TS
24819 The start time in seconds of the current command interval.
24820
24821 @item TE
24822 The end time in seconds of the current command interval.
24823
24824 @item TI
24825 The interpolated time of the current command interval, TI = (T - TS) / (TE - TS).
24826 @end table
24827
24828 @end table
24829
24830 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
24831 assumed.
24832
24833 @var{TARGET} specifies the target of the command, usually the name of
24834 the filter class or a specific filter instance name.
24835
24836 @var{COMMAND} specifies the name of the command for the target filter.
24837
24838 @var{ARG} is optional and specifies the optional list of argument for
24839 the given @var{COMMAND}.
24840
24841 Between one interval specification and another, whitespaces, or
24842 sequences of characters starting with @code{#} until the end of line,
24843 are ignored and can be used to annotate comments.
24844
24845 A simplified BNF description of the commands specification syntax
24846 follows:
24847 @example
24848 @var{COMMAND_FLAG}  ::= "enter" | "leave"
24849 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
24850 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
24851 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
24852 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
24853 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
24854 @end example
24855
24856 @subsection Examples
24857
24858 @itemize
24859 @item
24860 Specify audio tempo change at second 4:
24861 @example
24862 asendcmd=c='4.0 atempo tempo 1.5',atempo
24863 @end example
24864
24865 @item
24866 Target a specific filter instance:
24867 @example
24868 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
24869 @end example
24870
24871 @item
24872 Specify a list of drawtext and hue commands in a file.
24873 @example
24874 # show text in the interval 5-10
24875 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
24876          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
24877
24878 # desaturate the image in the interval 15-20
24879 15.0-20.0 [enter] hue s 0,
24880           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
24881           [leave] hue s 1,
24882           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
24883
24884 # apply an exponential saturation fade-out effect, starting from time 25
24885 25 [enter] hue s exp(25-t)
24886 @end example
24887
24888 A filtergraph allowing to read and process the above command list
24889 stored in a file @file{test.cmd}, can be specified with:
24890 @example
24891 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
24892 @end example
24893 @end itemize
24894
24895 @anchor{setpts}
24896 @section setpts, asetpts
24897
24898 Change the PTS (presentation timestamp) of the input frames.
24899
24900 @code{setpts} works on video frames, @code{asetpts} on audio frames.
24901
24902 This filter accepts the following options:
24903
24904 @table @option
24905
24906 @item expr
24907 The expression which is evaluated for each frame to construct its timestamp.
24908
24909 @end table
24910
24911 The expression is evaluated through the eval API and can contain the following
24912 constants:
24913
24914 @table @option
24915 @item FRAME_RATE, FR
24916 frame rate, only defined for constant frame-rate video
24917
24918 @item PTS
24919 The presentation timestamp in input
24920
24921 @item N
24922 The count of the input frame for video or the number of consumed samples,
24923 not including the current frame for audio, starting from 0.
24924
24925 @item NB_CONSUMED_SAMPLES
24926 The number of consumed samples, not including the current frame (only
24927 audio)
24928
24929 @item NB_SAMPLES, S
24930 The number of samples in the current frame (only audio)
24931
24932 @item SAMPLE_RATE, SR
24933 The audio sample rate.
24934
24935 @item STARTPTS
24936 The PTS of the first frame.
24937
24938 @item STARTT
24939 the time in seconds of the first frame
24940
24941 @item INTERLACED
24942 State whether the current frame is interlaced.
24943
24944 @item T
24945 the time in seconds of the current frame
24946
24947 @item POS
24948 original position in the file of the frame, or undefined if undefined
24949 for the current frame
24950
24951 @item PREV_INPTS
24952 The previous input PTS.
24953
24954 @item PREV_INT
24955 previous input time in seconds
24956
24957 @item PREV_OUTPTS
24958 The previous output PTS.
24959
24960 @item PREV_OUTT
24961 previous output time in seconds
24962
24963 @item RTCTIME
24964 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
24965 instead.
24966
24967 @item RTCSTART
24968 The wallclock (RTC) time at the start of the movie in microseconds.
24969
24970 @item TB
24971 The timebase of the input timestamps.
24972
24973 @end table
24974
24975 @subsection Examples
24976
24977 @itemize
24978 @item
24979 Start counting PTS from zero
24980 @example
24981 setpts=PTS-STARTPTS
24982 @end example
24983
24984 @item
24985 Apply fast motion effect:
24986 @example
24987 setpts=0.5*PTS
24988 @end example
24989
24990 @item
24991 Apply slow motion effect:
24992 @example
24993 setpts=2.0*PTS
24994 @end example
24995
24996 @item
24997 Set fixed rate of 25 frames per second:
24998 @example
24999 setpts=N/(25*TB)
25000 @end example
25001
25002 @item
25003 Set fixed rate 25 fps with some jitter:
25004 @example
25005 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
25006 @end example
25007
25008 @item
25009 Apply an offset of 10 seconds to the input PTS:
25010 @example
25011 setpts=PTS+10/TB
25012 @end example
25013
25014 @item
25015 Generate timestamps from a "live source" and rebase onto the current timebase:
25016 @example
25017 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
25018 @end example
25019
25020 @item
25021 Generate timestamps by counting samples:
25022 @example
25023 asetpts=N/SR/TB
25024 @end example
25025
25026 @end itemize
25027
25028 @section setrange
25029
25030 Force color range for the output video frame.
25031
25032 The @code{setrange} filter marks the color range property for the
25033 output frames. It does not change the input frame, but only sets the
25034 corresponding property, which affects how the frame is treated by
25035 following filters.
25036
25037 The filter accepts the following options:
25038
25039 @table @option
25040
25041 @item range
25042 Available values are:
25043
25044 @table @samp
25045 @item auto
25046 Keep the same color range property.
25047
25048 @item unspecified, unknown
25049 Set the color range as unspecified.
25050
25051 @item limited, tv, mpeg
25052 Set the color range as limited.
25053
25054 @item full, pc, jpeg
25055 Set the color range as full.
25056 @end table
25057 @end table
25058
25059 @section settb, asettb
25060
25061 Set the timebase to use for the output frames timestamps.
25062 It is mainly useful for testing timebase configuration.
25063
25064 It accepts the following parameters:
25065
25066 @table @option
25067
25068 @item expr, tb
25069 The expression which is evaluated into the output timebase.
25070
25071 @end table
25072
25073 The value for @option{tb} is an arithmetic expression representing a
25074 rational. The expression can contain the constants "AVTB" (the default
25075 timebase), "intb" (the input timebase) and "sr" (the sample rate,
25076 audio only). Default value is "intb".
25077
25078 @subsection Examples
25079
25080 @itemize
25081 @item
25082 Set the timebase to 1/25:
25083 @example
25084 settb=expr=1/25
25085 @end example
25086
25087 @item
25088 Set the timebase to 1/10:
25089 @example
25090 settb=expr=0.1
25091 @end example
25092
25093 @item
25094 Set the timebase to 1001/1000:
25095 @example
25096 settb=1+0.001
25097 @end example
25098
25099 @item
25100 Set the timebase to 2*intb:
25101 @example
25102 settb=2*intb
25103 @end example
25104
25105 @item
25106 Set the default timebase value:
25107 @example
25108 settb=AVTB
25109 @end example
25110 @end itemize
25111
25112 @section showcqt
25113 Convert input audio to a video output representing frequency spectrum
25114 logarithmically using Brown-Puckette constant Q transform algorithm with
25115 direct frequency domain coefficient calculation (but the transform itself
25116 is not really constant Q, instead the Q factor is actually variable/clamped),
25117 with musical tone scale, from E0 to D#10.
25118
25119 The filter accepts the following options:
25120
25121 @table @option
25122 @item size, s
25123 Specify the video size for the output. It must be even. For the syntax of this option,
25124 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25125 Default value is @code{1920x1080}.
25126
25127 @item fps, rate, r
25128 Set the output frame rate. Default value is @code{25}.
25129
25130 @item bar_h
25131 Set the bargraph height. It must be even. Default value is @code{-1} which
25132 computes the bargraph height automatically.
25133
25134 @item axis_h
25135 Set the axis height. It must be even. Default value is @code{-1} which computes
25136 the axis height automatically.
25137
25138 @item sono_h
25139 Set the sonogram height. It must be even. Default value is @code{-1} which
25140 computes the sonogram height automatically.
25141
25142 @item fullhd
25143 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
25144 instead. Default value is @code{1}.
25145
25146 @item sono_v, volume
25147 Specify the sonogram volume expression. It can contain variables:
25148 @table @option
25149 @item bar_v
25150 the @var{bar_v} evaluated expression
25151 @item frequency, freq, f
25152 the frequency where it is evaluated
25153 @item timeclamp, tc
25154 the value of @var{timeclamp} option
25155 @end table
25156 and functions:
25157 @table @option
25158 @item a_weighting(f)
25159 A-weighting of equal loudness
25160 @item b_weighting(f)
25161 B-weighting of equal loudness
25162 @item c_weighting(f)
25163 C-weighting of equal loudness.
25164 @end table
25165 Default value is @code{16}.
25166
25167 @item bar_v, volume2
25168 Specify the bargraph volume expression. It can contain variables:
25169 @table @option
25170 @item sono_v
25171 the @var{sono_v} evaluated expression
25172 @item frequency, freq, f
25173 the frequency where it is evaluated
25174 @item timeclamp, tc
25175 the value of @var{timeclamp} option
25176 @end table
25177 and functions:
25178 @table @option
25179 @item a_weighting(f)
25180 A-weighting of equal loudness
25181 @item b_weighting(f)
25182 B-weighting of equal loudness
25183 @item c_weighting(f)
25184 C-weighting of equal loudness.
25185 @end table
25186 Default value is @code{sono_v}.
25187
25188 @item sono_g, gamma
25189 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
25190 higher gamma makes the spectrum having more range. Default value is @code{3}.
25191 Acceptable range is @code{[1, 7]}.
25192
25193 @item bar_g, gamma2
25194 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
25195 @code{[1, 7]}.
25196
25197 @item bar_t
25198 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
25199 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
25200
25201 @item timeclamp, tc
25202 Specify the transform timeclamp. At low frequency, there is trade-off between
25203 accuracy in time domain and frequency domain. If timeclamp is lower,
25204 event in time domain is represented more accurately (such as fast bass drum),
25205 otherwise event in frequency domain is represented more accurately
25206 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
25207
25208 @item attack
25209 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
25210 limits future samples by applying asymmetric windowing in time domain, useful
25211 when low latency is required. Accepted range is @code{[0, 1]}.
25212
25213 @item basefreq
25214 Specify the transform base frequency. Default value is @code{20.01523126408007475},
25215 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
25216
25217 @item endfreq
25218 Specify the transform end frequency. Default value is @code{20495.59681441799654},
25219 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
25220
25221 @item coeffclamp
25222 This option is deprecated and ignored.
25223
25224 @item tlength
25225 Specify the transform length in time domain. Use this option to control accuracy
25226 trade-off between time domain and frequency domain at every frequency sample.
25227 It can contain variables:
25228 @table @option
25229 @item frequency, freq, f
25230 the frequency where it is evaluated
25231 @item timeclamp, tc
25232 the value of @var{timeclamp} option.
25233 @end table
25234 Default value is @code{384*tc/(384+tc*f)}.
25235
25236 @item count
25237 Specify the transform count for every video frame. Default value is @code{6}.
25238 Acceptable range is @code{[1, 30]}.
25239
25240 @item fcount
25241 Specify the transform count for every single pixel. Default value is @code{0},
25242 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
25243
25244 @item fontfile
25245 Specify font file for use with freetype to draw the axis. If not specified,
25246 use embedded font. Note that drawing with font file or embedded font is not
25247 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
25248 option instead.
25249
25250 @item font
25251 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
25252 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
25253 escaping.
25254
25255 @item fontcolor
25256 Specify font color expression. This is arithmetic expression that should return
25257 integer value 0xRRGGBB. It can contain variables:
25258 @table @option
25259 @item frequency, freq, f
25260 the frequency where it is evaluated
25261 @item timeclamp, tc
25262 the value of @var{timeclamp} option
25263 @end table
25264 and functions:
25265 @table @option
25266 @item midi(f)
25267 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
25268 @item r(x), g(x), b(x)
25269 red, green, and blue value of intensity x.
25270 @end table
25271 Default value is @code{st(0, (midi(f)-59.5)/12);
25272 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
25273 r(1-ld(1)) + b(ld(1))}.
25274
25275 @item axisfile
25276 Specify image file to draw the axis. This option override @var{fontfile} and
25277 @var{fontcolor} option.
25278
25279 @item axis, text
25280 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
25281 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
25282 Default value is @code{1}.
25283
25284 @item csp
25285 Set colorspace. The accepted values are:
25286 @table @samp
25287 @item unspecified
25288 Unspecified (default)
25289
25290 @item bt709
25291 BT.709
25292
25293 @item fcc
25294 FCC
25295
25296 @item bt470bg
25297 BT.470BG or BT.601-6 625
25298
25299 @item smpte170m
25300 SMPTE-170M or BT.601-6 525
25301
25302 @item smpte240m
25303 SMPTE-240M
25304
25305 @item bt2020ncl
25306 BT.2020 with non-constant luminance
25307
25308 @end table
25309
25310 @item cscheme
25311 Set spectrogram color scheme. This is list of floating point values with format
25312 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
25313 The default is @code{1|0.5|0|0|0.5|1}.
25314
25315 @end table
25316
25317 @subsection Examples
25318
25319 @itemize
25320 @item
25321 Playing audio while showing the spectrum:
25322 @example
25323 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
25324 @end example
25325
25326 @item
25327 Same as above, but with frame rate 30 fps:
25328 @example
25329 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
25330 @end example
25331
25332 @item
25333 Playing at 1280x720:
25334 @example
25335 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
25336 @end example
25337
25338 @item
25339 Disable sonogram display:
25340 @example
25341 sono_h=0
25342 @end example
25343
25344 @item
25345 A1 and its harmonics: A1, A2, (near)E3, A3:
25346 @example
25347 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),
25348                  asplit[a][out1]; [a] showcqt [out0]'
25349 @end example
25350
25351 @item
25352 Same as above, but with more accuracy in frequency domain:
25353 @example
25354 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),
25355                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
25356 @end example
25357
25358 @item
25359 Custom volume:
25360 @example
25361 bar_v=10:sono_v=bar_v*a_weighting(f)
25362 @end example
25363
25364 @item
25365 Custom gamma, now spectrum is linear to the amplitude.
25366 @example
25367 bar_g=2:sono_g=2
25368 @end example
25369
25370 @item
25371 Custom tlength equation:
25372 @example
25373 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)))'
25374 @end example
25375
25376 @item
25377 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
25378 @example
25379 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
25380 @end example
25381
25382 @item
25383 Custom font using fontconfig:
25384 @example
25385 font='Courier New,Monospace,mono|bold'
25386 @end example
25387
25388 @item
25389 Custom frequency range with custom axis using image file:
25390 @example
25391 axisfile=myaxis.png:basefreq=40:endfreq=10000
25392 @end example
25393 @end itemize
25394
25395 @section showfreqs
25396
25397 Convert input audio to video output representing the audio power spectrum.
25398 Audio amplitude is on Y-axis while frequency is on X-axis.
25399
25400 The filter accepts the following options:
25401
25402 @table @option
25403 @item size, s
25404 Specify size of video. For the syntax of this option, check the
25405 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25406 Default is @code{1024x512}.
25407
25408 @item mode
25409 Set display mode.
25410 This set how each frequency bin will be represented.
25411
25412 It accepts the following values:
25413 @table @samp
25414 @item line
25415 @item bar
25416 @item dot
25417 @end table
25418 Default is @code{bar}.
25419
25420 @item ascale
25421 Set amplitude scale.
25422
25423 It accepts the following values:
25424 @table @samp
25425 @item lin
25426 Linear scale.
25427
25428 @item sqrt
25429 Square root scale.
25430
25431 @item cbrt
25432 Cubic root scale.
25433
25434 @item log
25435 Logarithmic scale.
25436 @end table
25437 Default is @code{log}.
25438
25439 @item fscale
25440 Set frequency scale.
25441
25442 It accepts the following values:
25443 @table @samp
25444 @item lin
25445 Linear scale.
25446
25447 @item log
25448 Logarithmic scale.
25449
25450 @item rlog
25451 Reverse logarithmic scale.
25452 @end table
25453 Default is @code{lin}.
25454
25455 @item win_size
25456 Set window size. Allowed range is from 16 to 65536.
25457
25458 Default is @code{2048}
25459
25460 @item win_func
25461 Set windowing function.
25462
25463 It accepts the following values:
25464 @table @samp
25465 @item rect
25466 @item bartlett
25467 @item hanning
25468 @item hamming
25469 @item blackman
25470 @item welch
25471 @item flattop
25472 @item bharris
25473 @item bnuttall
25474 @item bhann
25475 @item sine
25476 @item nuttall
25477 @item lanczos
25478 @item gauss
25479 @item tukey
25480 @item dolph
25481 @item cauchy
25482 @item parzen
25483 @item poisson
25484 @item bohman
25485 @end table
25486 Default is @code{hanning}.
25487
25488 @item overlap
25489 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25490 which means optimal overlap for selected window function will be picked.
25491
25492 @item averaging
25493 Set time averaging. Setting this to 0 will display current maximal peaks.
25494 Default is @code{1}, which means time averaging is disabled.
25495
25496 @item colors
25497 Specify list of colors separated by space or by '|' which will be used to
25498 draw channel frequencies. Unrecognized or missing colors will be replaced
25499 by white color.
25500
25501 @item cmode
25502 Set channel display mode.
25503
25504 It accepts the following values:
25505 @table @samp
25506 @item combined
25507 @item separate
25508 @end table
25509 Default is @code{combined}.
25510
25511 @item minamp
25512 Set minimum amplitude used in @code{log} amplitude scaler.
25513
25514 @item data
25515 Set data display mode.
25516
25517 It accepts the following values:
25518 @table @samp
25519 @item magnitude
25520 @item phase
25521 @item delay
25522 @end table
25523 Default is @code{magnitude}.
25524 @end table
25525
25526 @section showspatial
25527
25528 Convert stereo input audio to a video output, representing the spatial relationship
25529 between two channels.
25530
25531 The filter accepts the following options:
25532
25533 @table @option
25534 @item size, s
25535 Specify the video size for the output. For the syntax of this option, check the
25536 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25537 Default value is @code{512x512}.
25538
25539 @item win_size
25540 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
25541
25542 @item win_func
25543 Set window function.
25544
25545 It accepts the following values:
25546 @table @samp
25547 @item rect
25548 @item bartlett
25549 @item hann
25550 @item hanning
25551 @item hamming
25552 @item blackman
25553 @item welch
25554 @item flattop
25555 @item bharris
25556 @item bnuttall
25557 @item bhann
25558 @item sine
25559 @item nuttall
25560 @item lanczos
25561 @item gauss
25562 @item tukey
25563 @item dolph
25564 @item cauchy
25565 @item parzen
25566 @item poisson
25567 @item bohman
25568 @end table
25569
25570 Default value is @code{hann}.
25571
25572 @item overlap
25573 Set ratio of overlap window. Default value is @code{0.5}.
25574 When value is @code{1} overlap is set to recommended size for specific
25575 window function currently used.
25576 @end table
25577
25578 @anchor{showspectrum}
25579 @section showspectrum
25580
25581 Convert input audio to a video output, representing the audio frequency
25582 spectrum.
25583
25584 The filter accepts the following options:
25585
25586 @table @option
25587 @item size, s
25588 Specify the video size for the output. For the syntax of this option, check the
25589 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25590 Default value is @code{640x512}.
25591
25592 @item slide
25593 Specify how the spectrum should slide along the window.
25594
25595 It accepts the following values:
25596 @table @samp
25597 @item replace
25598 the samples start again on the left when they reach the right
25599 @item scroll
25600 the samples scroll from right to left
25601 @item fullframe
25602 frames are only produced when the samples reach the right
25603 @item rscroll
25604 the samples scroll from left to right
25605 @end table
25606
25607 Default value is @code{replace}.
25608
25609 @item mode
25610 Specify display mode.
25611
25612 It accepts the following values:
25613 @table @samp
25614 @item combined
25615 all channels are displayed in the same row
25616 @item separate
25617 all channels are displayed in separate rows
25618 @end table
25619
25620 Default value is @samp{combined}.
25621
25622 @item color
25623 Specify display color mode.
25624
25625 It accepts the following values:
25626 @table @samp
25627 @item channel
25628 each channel is displayed in a separate color
25629 @item intensity
25630 each channel is displayed using the same color scheme
25631 @item rainbow
25632 each channel is displayed using the rainbow color scheme
25633 @item moreland
25634 each channel is displayed using the moreland color scheme
25635 @item nebulae
25636 each channel is displayed using the nebulae color scheme
25637 @item fire
25638 each channel is displayed using the fire color scheme
25639 @item fiery
25640 each channel is displayed using the fiery color scheme
25641 @item fruit
25642 each channel is displayed using the fruit color scheme
25643 @item cool
25644 each channel is displayed using the cool color scheme
25645 @item magma
25646 each channel is displayed using the magma color scheme
25647 @item green
25648 each channel is displayed using the green color scheme
25649 @item viridis
25650 each channel is displayed using the viridis color scheme
25651 @item plasma
25652 each channel is displayed using the plasma color scheme
25653 @item cividis
25654 each channel is displayed using the cividis color scheme
25655 @item terrain
25656 each channel is displayed using the terrain color scheme
25657 @end table
25658
25659 Default value is @samp{channel}.
25660
25661 @item scale
25662 Specify scale used for calculating intensity color values.
25663
25664 It accepts the following values:
25665 @table @samp
25666 @item lin
25667 linear
25668 @item sqrt
25669 square root, default
25670 @item cbrt
25671 cubic root
25672 @item log
25673 logarithmic
25674 @item 4thrt
25675 4th root
25676 @item 5thrt
25677 5th root
25678 @end table
25679
25680 Default value is @samp{sqrt}.
25681
25682 @item fscale
25683 Specify frequency scale.
25684
25685 It accepts the following values:
25686 @table @samp
25687 @item lin
25688 linear
25689 @item log
25690 logarithmic
25691 @end table
25692
25693 Default value is @samp{lin}.
25694
25695 @item saturation
25696 Set saturation modifier for displayed colors. Negative values provide
25697 alternative color scheme. @code{0} is no saturation at all.
25698 Saturation must be in [-10.0, 10.0] range.
25699 Default value is @code{1}.
25700
25701 @item win_func
25702 Set window function.
25703
25704 It accepts the following values:
25705 @table @samp
25706 @item rect
25707 @item bartlett
25708 @item hann
25709 @item hanning
25710 @item hamming
25711 @item blackman
25712 @item welch
25713 @item flattop
25714 @item bharris
25715 @item bnuttall
25716 @item bhann
25717 @item sine
25718 @item nuttall
25719 @item lanczos
25720 @item gauss
25721 @item tukey
25722 @item dolph
25723 @item cauchy
25724 @item parzen
25725 @item poisson
25726 @item bohman
25727 @end table
25728
25729 Default value is @code{hann}.
25730
25731 @item orientation
25732 Set orientation of time vs frequency axis. Can be @code{vertical} or
25733 @code{horizontal}. Default is @code{vertical}.
25734
25735 @item overlap
25736 Set ratio of overlap window. Default value is @code{0}.
25737 When value is @code{1} overlap is set to recommended size for specific
25738 window function currently used.
25739
25740 @item gain
25741 Set scale gain for calculating intensity color values.
25742 Default value is @code{1}.
25743
25744 @item data
25745 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
25746
25747 @item rotation
25748 Set color rotation, must be in [-1.0, 1.0] range.
25749 Default value is @code{0}.
25750
25751 @item start
25752 Set start frequency from which to display spectrogram. Default is @code{0}.
25753
25754 @item stop
25755 Set stop frequency to which to display spectrogram. Default is @code{0}.
25756
25757 @item fps
25758 Set upper frame rate limit. Default is @code{auto}, unlimited.
25759
25760 @item legend
25761 Draw time and frequency axes and legends. Default is disabled.
25762 @end table
25763
25764 The usage is very similar to the showwaves filter; see the examples in that
25765 section.
25766
25767 @subsection Examples
25768
25769 @itemize
25770 @item
25771 Large window with logarithmic color scaling:
25772 @example
25773 showspectrum=s=1280x480:scale=log
25774 @end example
25775
25776 @item
25777 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
25778 @example
25779 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
25780              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
25781 @end example
25782 @end itemize
25783
25784 @section showspectrumpic
25785
25786 Convert input audio to a single video frame, representing the audio frequency
25787 spectrum.
25788
25789 The filter accepts the following options:
25790
25791 @table @option
25792 @item size, s
25793 Specify the video size for the output. For the syntax of this option, check the
25794 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25795 Default value is @code{4096x2048}.
25796
25797 @item mode
25798 Specify display mode.
25799
25800 It accepts the following values:
25801 @table @samp
25802 @item combined
25803 all channels are displayed in the same row
25804 @item separate
25805 all channels are displayed in separate rows
25806 @end table
25807 Default value is @samp{combined}.
25808
25809 @item color
25810 Specify display color mode.
25811
25812 It accepts the following values:
25813 @table @samp
25814 @item channel
25815 each channel is displayed in a separate color
25816 @item intensity
25817 each channel is displayed using the same color scheme
25818 @item rainbow
25819 each channel is displayed using the rainbow color scheme
25820 @item moreland
25821 each channel is displayed using the moreland color scheme
25822 @item nebulae
25823 each channel is displayed using the nebulae color scheme
25824 @item fire
25825 each channel is displayed using the fire color scheme
25826 @item fiery
25827 each channel is displayed using the fiery color scheme
25828 @item fruit
25829 each channel is displayed using the fruit color scheme
25830 @item cool
25831 each channel is displayed using the cool color scheme
25832 @item magma
25833 each channel is displayed using the magma color scheme
25834 @item green
25835 each channel is displayed using the green color scheme
25836 @item viridis
25837 each channel is displayed using the viridis color scheme
25838 @item plasma
25839 each channel is displayed using the plasma color scheme
25840 @item cividis
25841 each channel is displayed using the cividis color scheme
25842 @item terrain
25843 each channel is displayed using the terrain color scheme
25844 @end table
25845 Default value is @samp{intensity}.
25846
25847 @item scale
25848 Specify scale used for calculating intensity color values.
25849
25850 It accepts the following values:
25851 @table @samp
25852 @item lin
25853 linear
25854 @item sqrt
25855 square root, default
25856 @item cbrt
25857 cubic root
25858 @item log
25859 logarithmic
25860 @item 4thrt
25861 4th root
25862 @item 5thrt
25863 5th root
25864 @end table
25865 Default value is @samp{log}.
25866
25867 @item fscale
25868 Specify frequency scale.
25869
25870 It accepts the following values:
25871 @table @samp
25872 @item lin
25873 linear
25874 @item log
25875 logarithmic
25876 @end table
25877
25878 Default value is @samp{lin}.
25879
25880 @item saturation
25881 Set saturation modifier for displayed colors. Negative values provide
25882 alternative color scheme. @code{0} is no saturation at all.
25883 Saturation must be in [-10.0, 10.0] range.
25884 Default value is @code{1}.
25885
25886 @item win_func
25887 Set window function.
25888
25889 It accepts the following values:
25890 @table @samp
25891 @item rect
25892 @item bartlett
25893 @item hann
25894 @item hanning
25895 @item hamming
25896 @item blackman
25897 @item welch
25898 @item flattop
25899 @item bharris
25900 @item bnuttall
25901 @item bhann
25902 @item sine
25903 @item nuttall
25904 @item lanczos
25905 @item gauss
25906 @item tukey
25907 @item dolph
25908 @item cauchy
25909 @item parzen
25910 @item poisson
25911 @item bohman
25912 @end table
25913 Default value is @code{hann}.
25914
25915 @item orientation
25916 Set orientation of time vs frequency axis. Can be @code{vertical} or
25917 @code{horizontal}. Default is @code{vertical}.
25918
25919 @item gain
25920 Set scale gain for calculating intensity color values.
25921 Default value is @code{1}.
25922
25923 @item legend
25924 Draw time and frequency axes and legends. Default is enabled.
25925
25926 @item rotation
25927 Set color rotation, must be in [-1.0, 1.0] range.
25928 Default value is @code{0}.
25929
25930 @item start
25931 Set start frequency from which to display spectrogram. Default is @code{0}.
25932
25933 @item stop
25934 Set stop frequency to which to display spectrogram. Default is @code{0}.
25935 @end table
25936
25937 @subsection Examples
25938
25939 @itemize
25940 @item
25941 Extract an audio spectrogram of a whole audio track
25942 in a 1024x1024 picture using @command{ffmpeg}:
25943 @example
25944 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
25945 @end example
25946 @end itemize
25947
25948 @section showvolume
25949
25950 Convert input audio volume to a video output.
25951
25952 The filter accepts the following options:
25953
25954 @table @option
25955 @item rate, r
25956 Set video rate.
25957
25958 @item b
25959 Set border width, allowed range is [0, 5]. Default is 1.
25960
25961 @item w
25962 Set channel width, allowed range is [80, 8192]. Default is 400.
25963
25964 @item h
25965 Set channel height, allowed range is [1, 900]. Default is 20.
25966
25967 @item f
25968 Set fade, allowed range is [0, 1]. Default is 0.95.
25969
25970 @item c
25971 Set volume color expression.
25972
25973 The expression can use the following variables:
25974
25975 @table @option
25976 @item VOLUME
25977 Current max volume of channel in dB.
25978
25979 @item PEAK
25980 Current peak.
25981
25982 @item CHANNEL
25983 Current channel number, starting from 0.
25984 @end table
25985
25986 @item t
25987 If set, displays channel names. Default is enabled.
25988
25989 @item v
25990 If set, displays volume values. Default is enabled.
25991
25992 @item o
25993 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
25994 default is @code{h}.
25995
25996 @item s
25997 Set step size, allowed range is [0, 5]. Default is 0, which means
25998 step is disabled.
25999
26000 @item p
26001 Set background opacity, allowed range is [0, 1]. Default is 0.
26002
26003 @item m
26004 Set metering mode, can be peak: @code{p} or rms: @code{r},
26005 default is @code{p}.
26006
26007 @item ds
26008 Set display scale, can be linear: @code{lin} or log: @code{log},
26009 default is @code{lin}.
26010
26011 @item dm
26012 In second.
26013 If set to > 0., display a line for the max level
26014 in the previous seconds.
26015 default is disabled: @code{0.}
26016
26017 @item dmc
26018 The color of the max line. Use when @code{dm} option is set to > 0.
26019 default is: @code{orange}
26020 @end table
26021
26022 @section showwaves
26023
26024 Convert input audio to a video output, representing the samples waves.
26025
26026 The filter accepts the following options:
26027
26028 @table @option
26029 @item size, s
26030 Specify the video size for the output. For the syntax of this option, check the
26031 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26032 Default value is @code{600x240}.
26033
26034 @item mode
26035 Set display mode.
26036
26037 Available values are:
26038 @table @samp
26039 @item point
26040 Draw a point for each sample.
26041
26042 @item line
26043 Draw a vertical line for each sample.
26044
26045 @item p2p
26046 Draw a point for each sample and a line between them.
26047
26048 @item cline
26049 Draw a centered vertical line for each sample.
26050 @end table
26051
26052 Default value is @code{point}.
26053
26054 @item n
26055 Set the number of samples which are printed on the same column. A
26056 larger value will decrease the frame rate. Must be a positive
26057 integer. This option can be set only if the value for @var{rate}
26058 is not explicitly specified.
26059
26060 @item rate, r
26061 Set the (approximate) output frame rate. This is done by setting the
26062 option @var{n}. Default value is "25".
26063
26064 @item split_channels
26065 Set if channels should be drawn separately or overlap. Default value is 0.
26066
26067 @item colors
26068 Set colors separated by '|' which are going to be used for drawing of each channel.
26069
26070 @item scale
26071 Set amplitude scale.
26072
26073 Available values are:
26074 @table @samp
26075 @item lin
26076 Linear.
26077
26078 @item log
26079 Logarithmic.
26080
26081 @item sqrt
26082 Square root.
26083
26084 @item cbrt
26085 Cubic root.
26086 @end table
26087
26088 Default is linear.
26089
26090 @item draw
26091 Set the draw mode. This is mostly useful to set for high @var{n}.
26092
26093 Available values are:
26094 @table @samp
26095 @item scale
26096 Scale pixel values for each drawn sample.
26097
26098 @item full
26099 Draw every sample directly.
26100 @end table
26101
26102 Default value is @code{scale}.
26103 @end table
26104
26105 @subsection Examples
26106
26107 @itemize
26108 @item
26109 Output the input file audio and the corresponding video representation
26110 at the same time:
26111 @example
26112 amovie=a.mp3,asplit[out0],showwaves[out1]
26113 @end example
26114
26115 @item
26116 Create a synthetic signal and show it with showwaves, forcing a
26117 frame rate of 30 frames per second:
26118 @example
26119 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
26120 @end example
26121 @end itemize
26122
26123 @section showwavespic
26124
26125 Convert input audio to a single video frame, representing the samples waves.
26126
26127 The filter accepts the following options:
26128
26129 @table @option
26130 @item size, s
26131 Specify the video size for the output. For the syntax of this option, check the
26132 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26133 Default value is @code{600x240}.
26134
26135 @item split_channels
26136 Set if channels should be drawn separately or overlap. Default value is 0.
26137
26138 @item colors
26139 Set colors separated by '|' which are going to be used for drawing of each channel.
26140
26141 @item scale
26142 Set amplitude scale.
26143
26144 Available values are:
26145 @table @samp
26146 @item lin
26147 Linear.
26148
26149 @item log
26150 Logarithmic.
26151
26152 @item sqrt
26153 Square root.
26154
26155 @item cbrt
26156 Cubic root.
26157 @end table
26158
26159 Default is linear.
26160
26161 @item draw
26162 Set the draw mode.
26163
26164 Available values are:
26165 @table @samp
26166 @item scale
26167 Scale pixel values for each drawn sample.
26168
26169 @item full
26170 Draw every sample directly.
26171 @end table
26172
26173 Default value is @code{scale}.
26174
26175 @item filter
26176 Set the filter mode.
26177
26178 Available values are:
26179 @table @samp
26180 @item average
26181 Use average samples values for each drawn sample.
26182
26183 @item peak
26184 Use peak samples values for each drawn sample.
26185 @end table
26186
26187 Default value is @code{average}.
26188 @end table
26189
26190 @subsection Examples
26191
26192 @itemize
26193 @item
26194 Extract a channel split representation of the wave form of a whole audio track
26195 in a 1024x800 picture using @command{ffmpeg}:
26196 @example
26197 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
26198 @end example
26199 @end itemize
26200
26201 @section sidedata, asidedata
26202
26203 Delete frame side data, or select frames based on it.
26204
26205 This filter accepts the following options:
26206
26207 @table @option
26208 @item mode
26209 Set mode of operation of the filter.
26210
26211 Can be one of the following:
26212
26213 @table @samp
26214 @item select
26215 Select every frame with side data of @code{type}.
26216
26217 @item delete
26218 Delete side data of @code{type}. If @code{type} is not set, delete all side
26219 data in the frame.
26220
26221 @end table
26222
26223 @item type
26224 Set side data type used with all modes. Must be set for @code{select} mode. For
26225 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
26226 in @file{libavutil/frame.h}. For example, to choose
26227 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
26228
26229 @end table
26230
26231 @section spectrumsynth
26232
26233 Synthesize audio from 2 input video spectrums, first input stream represents
26234 magnitude across time and second represents phase across time.
26235 The filter will transform from frequency domain as displayed in videos back
26236 to time domain as presented in audio output.
26237
26238 This filter is primarily created for reversing processed @ref{showspectrum}
26239 filter outputs, but can synthesize sound from other spectrograms too.
26240 But in such case results are going to be poor if the phase data is not
26241 available, because in such cases phase data need to be recreated, usually
26242 it's just recreated from random noise.
26243 For best results use gray only output (@code{channel} color mode in
26244 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
26245 @code{lin} scale for phase video. To produce phase, for 2nd video, use
26246 @code{data} option. Inputs videos should generally use @code{fullframe}
26247 slide mode as that saves resources needed for decoding video.
26248
26249 The filter accepts the following options:
26250
26251 @table @option
26252 @item sample_rate
26253 Specify sample rate of output audio, the sample rate of audio from which
26254 spectrum was generated may differ.
26255
26256 @item channels
26257 Set number of channels represented in input video spectrums.
26258
26259 @item scale
26260 Set scale which was used when generating magnitude input spectrum.
26261 Can be @code{lin} or @code{log}. Default is @code{log}.
26262
26263 @item slide
26264 Set slide which was used when generating inputs spectrums.
26265 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
26266 Default is @code{fullframe}.
26267
26268 @item win_func
26269 Set window function used for resynthesis.
26270
26271 @item overlap
26272 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
26273 which means optimal overlap for selected window function will be picked.
26274
26275 @item orientation
26276 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
26277 Default is @code{vertical}.
26278 @end table
26279
26280 @subsection Examples
26281
26282 @itemize
26283 @item
26284 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
26285 then resynthesize videos back to audio with spectrumsynth:
26286 @example
26287 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
26288 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
26289 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
26290 @end example
26291 @end itemize
26292
26293 @section split, asplit
26294
26295 Split input into several identical outputs.
26296
26297 @code{asplit} works with audio input, @code{split} with video.
26298
26299 The filter accepts a single parameter which specifies the number of outputs. If
26300 unspecified, it defaults to 2.
26301
26302 @subsection Examples
26303
26304 @itemize
26305 @item
26306 Create two separate outputs from the same input:
26307 @example
26308 [in] split [out0][out1]
26309 @end example
26310
26311 @item
26312 To create 3 or more outputs, you need to specify the number of
26313 outputs, like in:
26314 @example
26315 [in] asplit=3 [out0][out1][out2]
26316 @end example
26317
26318 @item
26319 Create two separate outputs from the same input, one cropped and
26320 one padded:
26321 @example
26322 [in] split [splitout1][splitout2];
26323 [splitout1] crop=100:100:0:0    [cropout];
26324 [splitout2] pad=200:200:100:100 [padout];
26325 @end example
26326
26327 @item
26328 Create 5 copies of the input audio with @command{ffmpeg}:
26329 @example
26330 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
26331 @end example
26332 @end itemize
26333
26334 @section zmq, azmq
26335
26336 Receive commands sent through a libzmq client, and forward them to
26337 filters in the filtergraph.
26338
26339 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
26340 must be inserted between two video filters, @code{azmq} between two
26341 audio filters. Both are capable to send messages to any filter type.
26342
26343 To enable these filters you need to install the libzmq library and
26344 headers and configure FFmpeg with @code{--enable-libzmq}.
26345
26346 For more information about libzmq see:
26347 @url{http://www.zeromq.org/}
26348
26349 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
26350 receives messages sent through a network interface defined by the
26351 @option{bind_address} (or the abbreviation "@option{b}") option.
26352 Default value of this option is @file{tcp://localhost:5555}. You may
26353 want to alter this value to your needs, but do not forget to escape any
26354 ':' signs (see @ref{filtergraph escaping}).
26355
26356 The received message must be in the form:
26357 @example
26358 @var{TARGET} @var{COMMAND} [@var{ARG}]
26359 @end example
26360
26361 @var{TARGET} specifies the target of the command, usually the name of
26362 the filter class or a specific filter instance name. The default
26363 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
26364 but you can override this by using the @samp{filter_name@@id} syntax
26365 (see @ref{Filtergraph syntax}).
26366
26367 @var{COMMAND} specifies the name of the command for the target filter.
26368
26369 @var{ARG} is optional and specifies the optional argument list for the
26370 given @var{COMMAND}.
26371
26372 Upon reception, the message is processed and the corresponding command
26373 is injected into the filtergraph. Depending on the result, the filter
26374 will send a reply to the client, adopting the format:
26375 @example
26376 @var{ERROR_CODE} @var{ERROR_REASON}
26377 @var{MESSAGE}
26378 @end example
26379
26380 @var{MESSAGE} is optional.
26381
26382 @subsection Examples
26383
26384 Look at @file{tools/zmqsend} for an example of a zmq client which can
26385 be used to send commands processed by these filters.
26386
26387 Consider the following filtergraph generated by @command{ffplay}.
26388 In this example the last overlay filter has an instance name. All other
26389 filters will have default instance names.
26390
26391 @example
26392 ffplay -dumpgraph 1 -f lavfi "
26393 color=s=100x100:c=red  [l];
26394 color=s=100x100:c=blue [r];
26395 nullsrc=s=200x100, zmq [bg];
26396 [bg][l]   overlay     [bg+l];
26397 [bg+l][r] overlay@@my=x=100 "
26398 @end example
26399
26400 To change the color of the left side of the video, the following
26401 command can be used:
26402 @example
26403 echo Parsed_color_0 c yellow | tools/zmqsend
26404 @end example
26405
26406 To change the right side:
26407 @example
26408 echo Parsed_color_1 c pink | tools/zmqsend
26409 @end example
26410
26411 To change the position of the right side:
26412 @example
26413 echo overlay@@my x 150 | tools/zmqsend
26414 @end example
26415
26416
26417 @c man end MULTIMEDIA FILTERS
26418
26419 @chapter Multimedia Sources
26420 @c man begin MULTIMEDIA SOURCES
26421
26422 Below is a description of the currently available multimedia sources.
26423
26424 @section amovie
26425
26426 This is the same as @ref{movie} source, except it selects an audio
26427 stream by default.
26428
26429 @anchor{movie}
26430 @section movie
26431
26432 Read audio and/or video stream(s) from a movie container.
26433
26434 It accepts the following parameters:
26435
26436 @table @option
26437 @item filename
26438 The name of the resource to read (not necessarily a file; it can also be a
26439 device or a stream accessed through some protocol).
26440
26441 @item format_name, f
26442 Specifies the format assumed for the movie to read, and can be either
26443 the name of a container or an input device. If not specified, the
26444 format is guessed from @var{movie_name} or by probing.
26445
26446 @item seek_point, sp
26447 Specifies the seek point in seconds. The frames will be output
26448 starting from this seek point. The parameter is evaluated with
26449 @code{av_strtod}, so the numerical value may be suffixed by an IS
26450 postfix. The default value is "0".
26451
26452 @item streams, s
26453 Specifies the streams to read. Several streams can be specified,
26454 separated by "+". The source will then have as many outputs, in the
26455 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
26456 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
26457 respectively the default (best suited) video and audio stream. Default
26458 is "dv", or "da" if the filter is called as "amovie".
26459
26460 @item stream_index, si
26461 Specifies the index of the video stream to read. If the value is -1,
26462 the most suitable video stream will be automatically selected. The default
26463 value is "-1". Deprecated. If the filter is called "amovie", it will select
26464 audio instead of video.
26465
26466 @item loop
26467 Specifies how many times to read the stream in sequence.
26468 If the value is 0, the stream will be looped infinitely.
26469 Default value is "1".
26470
26471 Note that when the movie is looped the source timestamps are not
26472 changed, so it will generate non monotonically increasing timestamps.
26473
26474 @item discontinuity
26475 Specifies the time difference between frames above which the point is
26476 considered a timestamp discontinuity which is removed by adjusting the later
26477 timestamps.
26478 @end table
26479
26480 It allows overlaying a second video on top of the main input of
26481 a filtergraph, as shown in this graph:
26482 @example
26483 input -----------> deltapts0 --> overlay --> output
26484                                     ^
26485                                     |
26486 movie --> scale--> deltapts1 -------+
26487 @end example
26488 @subsection Examples
26489
26490 @itemize
26491 @item
26492 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
26493 on top of the input labelled "in":
26494 @example
26495 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
26496 [in] setpts=PTS-STARTPTS [main];
26497 [main][over] overlay=16:16 [out]
26498 @end example
26499
26500 @item
26501 Read from a video4linux2 device, and overlay it on top of the input
26502 labelled "in":
26503 @example
26504 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
26505 [in] setpts=PTS-STARTPTS [main];
26506 [main][over] overlay=16:16 [out]
26507 @end example
26508
26509 @item
26510 Read the first video stream and the audio stream with id 0x81 from
26511 dvd.vob; the video is connected to the pad named "video" and the audio is
26512 connected to the pad named "audio":
26513 @example
26514 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
26515 @end example
26516 @end itemize
26517
26518 @subsection Commands
26519
26520 Both movie and amovie support the following commands:
26521 @table @option
26522 @item seek
26523 Perform seek using "av_seek_frame".
26524 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
26525 @itemize
26526 @item
26527 @var{stream_index}: If stream_index is -1, a default
26528 stream is selected, and @var{timestamp} is automatically converted
26529 from AV_TIME_BASE units to the stream specific time_base.
26530 @item
26531 @var{timestamp}: Timestamp in AVStream.time_base units
26532 or, if no stream is specified, in AV_TIME_BASE units.
26533 @item
26534 @var{flags}: Flags which select direction and seeking mode.
26535 @end itemize
26536
26537 @item get_duration
26538 Get movie duration in AV_TIME_BASE units.
26539
26540 @end table
26541
26542 @c man end MULTIMEDIA SOURCES