]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avfilter/af_afade: add support for commands to afade filter
[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 Commands
1090
1091 This filter supports the all above options as @ref{commands}.
1092
1093 @subsection Examples
1094
1095 @itemize
1096 @item
1097 Fade in first 15 seconds of audio:
1098 @example
1099 afade=t=in:ss=0:d=15
1100 @end example
1101
1102 @item
1103 Fade out last 25 seconds of a 900 seconds audio:
1104 @example
1105 afade=t=out:st=875:d=25
1106 @end example
1107 @end itemize
1108
1109 @section afftdn
1110 Denoise audio samples with FFT.
1111
1112 A description of the accepted parameters follows.
1113
1114 @table @option
1115 @item nr
1116 Set the noise reduction in dB, allowed range is 0.01 to 97.
1117 Default value is 12 dB.
1118
1119 @item nf
1120 Set the noise floor in dB, allowed range is -80 to -20.
1121 Default value is -50 dB.
1122
1123 @item nt
1124 Set the noise type.
1125
1126 It accepts the following values:
1127 @table @option
1128 @item w
1129 Select white noise.
1130
1131 @item v
1132 Select vinyl noise.
1133
1134 @item s
1135 Select shellac noise.
1136
1137 @item c
1138 Select custom noise, defined in @code{bn} option.
1139
1140 Default value is white noise.
1141 @end table
1142
1143 @item bn
1144 Set custom band noise for every one of 15 bands.
1145 Bands are separated by ' ' or '|'.
1146
1147 @item rf
1148 Set the residual floor in dB, allowed range is -80 to -20.
1149 Default value is -38 dB.
1150
1151 @item tn
1152 Enable noise tracking. By default is disabled.
1153 With this enabled, noise floor is automatically adjusted.
1154
1155 @item tr
1156 Enable residual tracking. By default is disabled.
1157
1158 @item om
1159 Set the output mode.
1160
1161 It accepts the following values:
1162 @table @option
1163 @item i
1164 Pass input unchanged.
1165
1166 @item o
1167 Pass noise filtered out.
1168
1169 @item n
1170 Pass only noise.
1171
1172 Default value is @var{o}.
1173 @end table
1174 @end table
1175
1176 @subsection Commands
1177
1178 This filter supports the following commands:
1179 @table @option
1180 @item sample_noise, sn
1181 Start or stop measuring noise profile.
1182 Syntax for the command is : "start" or "stop" string.
1183 After measuring noise profile is stopped it will be
1184 automatically applied in filtering.
1185
1186 @item noise_reduction, nr
1187 Change noise reduction. Argument is single float number.
1188 Syntax for the command is : "@var{noise_reduction}"
1189
1190 @item noise_floor, nf
1191 Change noise floor. Argument is single float number.
1192 Syntax for the command is : "@var{noise_floor}"
1193
1194 @item output_mode, om
1195 Change output mode operation.
1196 Syntax for the command is : "i", "o" or "n" string.
1197 @end table
1198
1199 @section afftfilt
1200 Apply arbitrary expressions to samples in frequency domain.
1201
1202 @table @option
1203 @item real
1204 Set frequency domain real expression for each separate channel separated
1205 by '|'. Default is "re".
1206 If the number of input channels is greater than the number of
1207 expressions, the last specified expression is used for the remaining
1208 output channels.
1209
1210 @item imag
1211 Set frequency domain imaginary expression for each separate channel
1212 separated by '|'. Default is "im".
1213
1214 Each expression in @var{real} and @var{imag} can contain the following
1215 constants and functions:
1216
1217 @table @option
1218 @item sr
1219 sample rate
1220
1221 @item b
1222 current frequency bin number
1223
1224 @item nb
1225 number of available bins
1226
1227 @item ch
1228 channel number of the current expression
1229
1230 @item chs
1231 number of channels
1232
1233 @item pts
1234 current frame pts
1235
1236 @item re
1237 current real part of frequency bin of current channel
1238
1239 @item im
1240 current imaginary part of frequency bin of current channel
1241
1242 @item real(b, ch)
1243 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1244
1245 @item imag(b, ch)
1246 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1247 @end table
1248
1249 @item win_size
1250 Set window size. Allowed range is from 16 to 131072.
1251 Default is @code{4096}
1252
1253 @item win_func
1254 Set window function. Default is @code{hann}.
1255
1256 @item overlap
1257 Set window overlap. If set to 1, the recommended overlap for selected
1258 window function will be picked. Default is @code{0.75}.
1259 @end table
1260
1261 @subsection Examples
1262
1263 @itemize
1264 @item
1265 Leave almost only low frequencies in audio:
1266 @example
1267 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1268 @end example
1269
1270 @item
1271 Apply robotize effect:
1272 @example
1273 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1274 @end example
1275
1276 @item
1277 Apply whisper effect:
1278 @example
1279 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"
1280 @end example
1281 @end itemize
1282
1283 @anchor{afir}
1284 @section afir
1285
1286 Apply an arbitrary Finite Impulse Response filter.
1287
1288 This filter is designed for applying long FIR filters,
1289 up to 60 seconds long.
1290
1291 It can be used as component for digital crossover filters,
1292 room equalization, cross talk cancellation, wavefield synthesis,
1293 auralization, ambiophonics, ambisonics and spatialization.
1294
1295 This filter uses the streams higher than first one as FIR coefficients.
1296 If the non-first stream holds a single channel, it will be used
1297 for all input channels in the first stream, otherwise
1298 the number of channels in the non-first stream must be same as
1299 the number of channels in the first stream.
1300
1301 It accepts the following parameters:
1302
1303 @table @option
1304 @item dry
1305 Set dry gain. This sets input gain.
1306
1307 @item wet
1308 Set wet gain. This sets final output gain.
1309
1310 @item length
1311 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1312
1313 @item gtype
1314 Enable applying gain measured from power of IR.
1315
1316 Set which approach to use for auto gain measurement.
1317
1318 @table @option
1319 @item none
1320 Do not apply any gain.
1321
1322 @item peak
1323 select peak gain, very conservative approach. This is default value.
1324
1325 @item dc
1326 select DC gain, limited application.
1327
1328 @item gn
1329 select gain to noise approach, this is most popular one.
1330 @end table
1331
1332 @item irgain
1333 Set gain to be applied to IR coefficients before filtering.
1334 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1335
1336 @item irfmt
1337 Set format of IR stream. Can be @code{mono} or @code{input}.
1338 Default is @code{input}.
1339
1340 @item maxir
1341 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1342 Allowed range is 0.1 to 60 seconds.
1343
1344 @item response
1345 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1346 By default it is disabled.
1347
1348 @item channel
1349 Set for which IR channel to display frequency response. By default is first channel
1350 displayed. This option is used only when @var{response} is enabled.
1351
1352 @item size
1353 Set video stream size. This option is used only when @var{response} is enabled.
1354
1355 @item rate
1356 Set video stream frame rate. This option is used only when @var{response} is enabled.
1357
1358 @item minp
1359 Set minimal partition size used for convolution. Default is @var{8192}.
1360 Allowed range is from @var{1} to @var{32768}.
1361 Lower values decreases latency at cost of higher CPU usage.
1362
1363 @item maxp
1364 Set maximal partition size used for convolution. Default is @var{8192}.
1365 Allowed range is from @var{8} to @var{32768}.
1366 Lower values may increase CPU usage.
1367
1368 @item nbirs
1369 Set number of input impulse responses streams which will be switchable at runtime.
1370 Allowed range is from @var{1} to @var{32}. Default is @var{1}.
1371
1372 @item ir
1373 Set IR stream which will be used for convolution, starting from @var{0}, should always be
1374 lower than supplied value by @code{nbirs} option. Default is @var{0}.
1375 This option can be changed at runtime via @ref{commands}.
1376 @end table
1377
1378 @subsection Examples
1379
1380 @itemize
1381 @item
1382 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1383 @example
1384 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1385 @end example
1386 @end itemize
1387
1388 @anchor{aformat}
1389 @section aformat
1390
1391 Set output format constraints for the input audio. The framework will
1392 negotiate the most appropriate format to minimize conversions.
1393
1394 It accepts the following parameters:
1395 @table @option
1396
1397 @item sample_fmts, f
1398 A '|'-separated list of requested sample formats.
1399
1400 @item sample_rates, r
1401 A '|'-separated list of requested sample rates.
1402
1403 @item channel_layouts, cl
1404 A '|'-separated list of requested channel layouts.
1405
1406 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1407 for the required syntax.
1408 @end table
1409
1410 If a parameter is omitted, all values are allowed.
1411
1412 Force the output to either unsigned 8-bit or signed 16-bit stereo
1413 @example
1414 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1415 @end example
1416
1417 @section afreqshift
1418 Apply frequency shift to input audio samples.
1419
1420 The filter accepts the following options:
1421
1422 @table @option
1423 @item shift
1424 Specify frequency shift. Allowed range is -INT_MAX to INT_MAX.
1425 Default value is 0.0.
1426
1427 @item level
1428 Set output gain applied to final output. Allowed range is from 0.0 to 1.0.
1429 Default value is 1.0.
1430 @end table
1431
1432 @subsection Commands
1433
1434 This filter supports the all above options as @ref{commands}.
1435
1436 @section agate
1437
1438 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1439 processing reduces disturbing noise between useful signals.
1440
1441 Gating is done by detecting the volume below a chosen level @var{threshold}
1442 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1443 floor is set via @var{range}. Because an exact manipulation of the signal
1444 would cause distortion of the waveform the reduction can be levelled over
1445 time. This is done by setting @var{attack} and @var{release}.
1446
1447 @var{attack} determines how long the signal has to fall below the threshold
1448 before any reduction will occur and @var{release} sets the time the signal
1449 has to rise above the threshold to reduce the reduction again.
1450 Shorter signals than the chosen attack time will be left untouched.
1451
1452 @table @option
1453 @item level_in
1454 Set input level before filtering.
1455 Default is 1. Allowed range is from 0.015625 to 64.
1456
1457 @item mode
1458 Set the mode of operation. Can be @code{upward} or @code{downward}.
1459 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1460 will be amplified, expanding dynamic range in upward direction.
1461 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1462
1463 @item range
1464 Set the level of gain reduction when the signal is below the threshold.
1465 Default is 0.06125. Allowed range is from 0 to 1.
1466 Setting this to 0 disables reduction and then filter behaves like expander.
1467
1468 @item threshold
1469 If a signal rises above this level the gain reduction is released.
1470 Default is 0.125. Allowed range is from 0 to 1.
1471
1472 @item ratio
1473 Set a ratio by which the signal is reduced.
1474 Default is 2. Allowed range is from 1 to 9000.
1475
1476 @item attack
1477 Amount of milliseconds the signal has to rise above the threshold before gain
1478 reduction stops.
1479 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1480
1481 @item release
1482 Amount of milliseconds the signal has to fall below the threshold before the
1483 reduction is increased again. Default is 250 milliseconds.
1484 Allowed range is from 0.01 to 9000.
1485
1486 @item makeup
1487 Set amount of amplification of signal after processing.
1488 Default is 1. Allowed range is from 1 to 64.
1489
1490 @item knee
1491 Curve the sharp knee around the threshold to enter gain reduction more softly.
1492 Default is 2.828427125. Allowed range is from 1 to 8.
1493
1494 @item detection
1495 Choose if exact signal should be taken for detection or an RMS like one.
1496 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1497
1498 @item link
1499 Choose if the average level between all channels or the louder channel affects
1500 the reduction.
1501 Default is @code{average}. Can be @code{average} or @code{maximum}.
1502 @end table
1503
1504 @subsection Commands
1505
1506 This filter supports the all above options as @ref{commands}.
1507
1508 @section aiir
1509
1510 Apply an arbitrary Infinite Impulse Response filter.
1511
1512 It accepts the following parameters:
1513
1514 @table @option
1515 @item zeros, z
1516 Set B/numerator/zeros/reflection coefficients.
1517
1518 @item poles, p
1519 Set A/denominator/poles/ladder coefficients.
1520
1521 @item gains, k
1522 Set channels gains.
1523
1524 @item dry_gain
1525 Set input gain.
1526
1527 @item wet_gain
1528 Set output gain.
1529
1530 @item format, f
1531 Set coefficients format.
1532
1533 @table @samp
1534 @item ll
1535 lattice-ladder function
1536 @item sf
1537 analog transfer function
1538 @item tf
1539 digital transfer function
1540 @item zp
1541 Z-plane zeros/poles, cartesian (default)
1542 @item pr
1543 Z-plane zeros/poles, polar radians
1544 @item pd
1545 Z-plane zeros/poles, polar degrees
1546 @item sp
1547 S-plane zeros/poles
1548 @end table
1549
1550 @item process, r
1551 Set type of processing.
1552
1553 @table @samp
1554 @item d
1555 direct processing
1556 @item s
1557 serial processing
1558 @item p
1559 parallel processing
1560 @end table
1561
1562 @item precision, e
1563 Set filtering precision.
1564
1565 @table @samp
1566 @item dbl
1567 double-precision floating-point (default)
1568 @item flt
1569 single-precision floating-point
1570 @item i32
1571 32-bit integers
1572 @item i16
1573 16-bit integers
1574 @end table
1575
1576 @item normalize, n
1577 Normalize filter coefficients, by default is enabled.
1578 Enabling it will normalize magnitude response at DC to 0dB.
1579
1580 @item mix
1581 How much to use filtered signal in output. Default is 1.
1582 Range is between 0 and 1.
1583
1584 @item response
1585 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1586 By default it is disabled.
1587
1588 @item channel
1589 Set for which IR channel to display frequency response. By default is first channel
1590 displayed. This option is used only when @var{response} is enabled.
1591
1592 @item size
1593 Set video stream size. This option is used only when @var{response} is enabled.
1594 @end table
1595
1596 Coefficients in @code{tf} and @code{sf} format are separated by spaces and are in ascending
1597 order.
1598
1599 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1600 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1601 imaginary unit.
1602
1603 Different coefficients and gains can be provided for every channel, in such case
1604 use '|' to separate coefficients or gains. Last provided coefficients will be
1605 used for all remaining channels.
1606
1607 @subsection Examples
1608
1609 @itemize
1610 @item
1611 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1612 @example
1613 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
1614 @end example
1615
1616 @item
1617 Same as above but in @code{zp} format:
1618 @example
1619 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
1620 @end example
1621
1622 @item
1623 Apply 3-rd order analog normalized Butterworth low-pass filter, using analog transfer function format:
1624 @example
1625 aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
1626 @end example
1627 @end itemize
1628
1629 @section alimiter
1630
1631 The limiter prevents an input signal from rising over a desired threshold.
1632 This limiter uses lookahead technology to prevent your signal from distorting.
1633 It means that there is a small delay after the signal is processed. Keep in mind
1634 that the delay it produces is the attack time you set.
1635
1636 The filter accepts the following options:
1637
1638 @table @option
1639 @item level_in
1640 Set input gain. Default is 1.
1641
1642 @item level_out
1643 Set output gain. Default is 1.
1644
1645 @item limit
1646 Don't let signals above this level pass the limiter. Default is 1.
1647
1648 @item attack
1649 The limiter will reach its attenuation level in this amount of time in
1650 milliseconds. Default is 5 milliseconds.
1651
1652 @item release
1653 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1654 Default is 50 milliseconds.
1655
1656 @item asc
1657 When gain reduction is always needed ASC takes care of releasing to an
1658 average reduction level rather than reaching a reduction of 0 in the release
1659 time.
1660
1661 @item asc_level
1662 Select how much the release time is affected by ASC, 0 means nearly no changes
1663 in release time while 1 produces higher release times.
1664
1665 @item level
1666 Auto level output signal. Default is enabled.
1667 This normalizes audio back to 0dB if enabled.
1668 @end table
1669
1670 Depending on picked setting it is recommended to upsample input 2x or 4x times
1671 with @ref{aresample} before applying this filter.
1672
1673 @section allpass
1674
1675 Apply a two-pole all-pass filter with central frequency (in Hz)
1676 @var{frequency}, and filter-width @var{width}.
1677 An all-pass filter changes the audio's frequency to phase relationship
1678 without changing its frequency to amplitude relationship.
1679
1680 The filter accepts the following options:
1681
1682 @table @option
1683 @item frequency, f
1684 Set frequency in Hz.
1685
1686 @item width_type, t
1687 Set method to specify band-width of filter.
1688 @table @option
1689 @item h
1690 Hz
1691 @item q
1692 Q-Factor
1693 @item o
1694 octave
1695 @item s
1696 slope
1697 @item k
1698 kHz
1699 @end table
1700
1701 @item width, w
1702 Specify the band-width of a filter in width_type units.
1703
1704 @item mix, m
1705 How much to use filtered signal in output. Default is 1.
1706 Range is between 0 and 1.
1707
1708 @item channels, c
1709 Specify which channels to filter, by default all available are filtered.
1710
1711 @item normalize, n
1712 Normalize biquad coefficients, by default is disabled.
1713 Enabling it will normalize magnitude response at DC to 0dB.
1714
1715 @item order, o
1716 Set the filter order, can be 1 or 2. Default is 2.
1717
1718 @item transform, a
1719 Set transform type of IIR filter.
1720 @table @option
1721 @item di
1722 @item dii
1723 @item tdii
1724 @item latt
1725 @end table
1726
1727 @item precision, r
1728 Set precison of filtering.
1729 @table @option
1730 @item auto
1731 Pick automatic sample format depending on surround filters.
1732 @item s16
1733 Always use signed 16-bit.
1734 @item s32
1735 Always use signed 32-bit.
1736 @item f32
1737 Always use float 32-bit.
1738 @item f64
1739 Always use float 64-bit.
1740 @end table
1741 @end table
1742
1743 @subsection Commands
1744
1745 This filter supports the following commands:
1746 @table @option
1747 @item frequency, f
1748 Change allpass frequency.
1749 Syntax for the command is : "@var{frequency}"
1750
1751 @item width_type, t
1752 Change allpass width_type.
1753 Syntax for the command is : "@var{width_type}"
1754
1755 @item width, w
1756 Change allpass width.
1757 Syntax for the command is : "@var{width}"
1758
1759 @item mix, m
1760 Change allpass mix.
1761 Syntax for the command is : "@var{mix}"
1762 @end table
1763
1764 @section aloop
1765
1766 Loop audio samples.
1767
1768 The filter accepts the following options:
1769
1770 @table @option
1771 @item loop
1772 Set the number of loops. Setting this value to -1 will result in infinite loops.
1773 Default is 0.
1774
1775 @item size
1776 Set maximal number of samples. Default is 0.
1777
1778 @item start
1779 Set first sample of loop. Default is 0.
1780 @end table
1781
1782 @anchor{amerge}
1783 @section amerge
1784
1785 Merge two or more audio streams into a single multi-channel stream.
1786
1787 The filter accepts the following options:
1788
1789 @table @option
1790
1791 @item inputs
1792 Set the number of inputs. Default is 2.
1793
1794 @end table
1795
1796 If the channel layouts of the inputs are disjoint, and therefore compatible,
1797 the channel layout of the output will be set accordingly and the channels
1798 will be reordered as necessary. If the channel layouts of the inputs are not
1799 disjoint, the output will have all the channels of the first input then all
1800 the channels of the second input, in that order, and the channel layout of
1801 the output will be the default value corresponding to the total number of
1802 channels.
1803
1804 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1805 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1806 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1807 first input, b1 is the first channel of the second input).
1808
1809 On the other hand, if both input are in stereo, the output channels will be
1810 in the default order: a1, a2, b1, b2, and the channel layout will be
1811 arbitrarily set to 4.0, which may or may not be the expected value.
1812
1813 All inputs must have the same sample rate, and format.
1814
1815 If inputs do not have the same duration, the output will stop with the
1816 shortest.
1817
1818 @subsection Examples
1819
1820 @itemize
1821 @item
1822 Merge two mono files into a stereo stream:
1823 @example
1824 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1825 @end example
1826
1827 @item
1828 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1829 @example
1830 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
1831 @end example
1832 @end itemize
1833
1834 @section amix
1835
1836 Mixes multiple audio inputs into a single output.
1837
1838 Note that this filter only supports float samples (the @var{amerge}
1839 and @var{pan} audio filters support many formats). If the @var{amix}
1840 input has integer samples then @ref{aresample} will be automatically
1841 inserted to perform the conversion to float samples.
1842
1843 For example
1844 @example
1845 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1846 @end example
1847 will mix 3 input audio streams to a single output with the same duration as the
1848 first input and a dropout transition time of 3 seconds.
1849
1850 It accepts the following parameters:
1851 @table @option
1852
1853 @item inputs
1854 The number of inputs. If unspecified, it defaults to 2.
1855
1856 @item duration
1857 How to determine the end-of-stream.
1858 @table @option
1859
1860 @item longest
1861 The duration of the longest input. (default)
1862
1863 @item shortest
1864 The duration of the shortest input.
1865
1866 @item first
1867 The duration of the first input.
1868
1869 @end table
1870
1871 @item dropout_transition
1872 The transition time, in seconds, for volume renormalization when an input
1873 stream ends. The default value is 2 seconds.
1874
1875 @item weights
1876 Specify weight of each input audio stream as sequence.
1877 Each weight is separated by space. By default all inputs have same weight.
1878 @end table
1879
1880 @subsection Commands
1881
1882 This filter supports the following commands:
1883 @table @option
1884 @item weights
1885 Syntax is same as option with same name.
1886 @end table
1887
1888 @section amultiply
1889
1890 Multiply first audio stream with second audio stream and store result
1891 in output audio stream. Multiplication is done by multiplying each
1892 sample from first stream with sample at same position from second stream.
1893
1894 With this element-wise multiplication one can create amplitude fades and
1895 amplitude modulations.
1896
1897 @section anequalizer
1898
1899 High-order parametric multiband equalizer for each channel.
1900
1901 It accepts the following parameters:
1902 @table @option
1903 @item params
1904
1905 This option string is in format:
1906 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1907 Each equalizer band is separated by '|'.
1908
1909 @table @option
1910 @item chn
1911 Set channel number to which equalization will be applied.
1912 If input doesn't have that channel the entry is ignored.
1913
1914 @item f
1915 Set central frequency for band.
1916 If input doesn't have that frequency the entry is ignored.
1917
1918 @item w
1919 Set band width in Hertz.
1920
1921 @item g
1922 Set band gain in dB.
1923
1924 @item t
1925 Set filter type for band, optional, can be:
1926
1927 @table @samp
1928 @item 0
1929 Butterworth, this is default.
1930
1931 @item 1
1932 Chebyshev type 1.
1933
1934 @item 2
1935 Chebyshev type 2.
1936 @end table
1937 @end table
1938
1939 @item curves
1940 With this option activated frequency response of anequalizer is displayed
1941 in video stream.
1942
1943 @item size
1944 Set video stream size. Only useful if curves option is activated.
1945
1946 @item mgain
1947 Set max gain that will be displayed. Only useful if curves option is activated.
1948 Setting this to a reasonable value makes it possible to display gain which is derived from
1949 neighbour bands which are too close to each other and thus produce higher gain
1950 when both are activated.
1951
1952 @item fscale
1953 Set frequency scale used to draw frequency response in video output.
1954 Can be linear or logarithmic. Default is logarithmic.
1955
1956 @item colors
1957 Set color for each channel curve which is going to be displayed in video stream.
1958 This is list of color names separated by space or by '|'.
1959 Unrecognised or missing colors will be replaced by white color.
1960 @end table
1961
1962 @subsection Examples
1963
1964 @itemize
1965 @item
1966 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1967 for first 2 channels using Chebyshev type 1 filter:
1968 @example
1969 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1970 @end example
1971 @end itemize
1972
1973 @subsection Commands
1974
1975 This filter supports the following commands:
1976 @table @option
1977 @item change
1978 Alter existing filter parameters.
1979 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1980
1981 @var{fN} is existing filter number, starting from 0, if no such filter is available
1982 error is returned.
1983 @var{freq} set new frequency parameter.
1984 @var{width} set new width parameter in Hertz.
1985 @var{gain} set new gain parameter in dB.
1986
1987 Full filter invocation with asendcmd may look like this:
1988 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1989 @end table
1990
1991 @section anlmdn
1992
1993 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1994
1995 Each sample is adjusted by looking for other samples with similar contexts. This
1996 context similarity is defined by comparing their surrounding patches of size
1997 @option{p}. Patches are searched in an area of @option{r} around the sample.
1998
1999 The filter accepts the following options:
2000
2001 @table @option
2002 @item s
2003 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
2004
2005 @item p
2006 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
2007 Default value is 2 milliseconds.
2008
2009 @item r
2010 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
2011 Default value is 6 milliseconds.
2012
2013 @item o
2014 Set the output mode.
2015
2016 It accepts the following values:
2017 @table @option
2018 @item i
2019 Pass input unchanged.
2020
2021 @item o
2022 Pass noise filtered out.
2023
2024 @item n
2025 Pass only noise.
2026
2027 Default value is @var{o}.
2028 @end table
2029
2030 @item m
2031 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
2032 @end table
2033
2034 @subsection Commands
2035
2036 This filter supports the all above options as @ref{commands}.
2037
2038 @section anlms
2039 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
2040
2041 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
2042 relate to producing the least mean square of the error signal (difference between the desired,
2043 2nd input audio stream and the actual signal, the 1st input audio stream).
2044
2045 A description of the accepted options follows.
2046
2047 @table @option
2048 @item order
2049 Set filter order.
2050
2051 @item mu
2052 Set filter mu.
2053
2054 @item eps
2055 Set the filter eps.
2056
2057 @item leakage
2058 Set the filter leakage.
2059
2060 @item out_mode
2061 It accepts the following values:
2062 @table @option
2063 @item i
2064 Pass the 1st input.
2065
2066 @item d
2067 Pass the 2nd input.
2068
2069 @item o
2070 Pass filtered samples.
2071
2072 @item n
2073 Pass difference between desired and filtered samples.
2074
2075 Default value is @var{o}.
2076 @end table
2077 @end table
2078
2079 @subsection Examples
2080
2081 @itemize
2082 @item
2083 One of many usages of this filter is noise reduction, input audio is filtered
2084 with same samples that are delayed by fixed amount, one such example for stereo audio is:
2085 @example
2086 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
2087 @end example
2088 @end itemize
2089
2090 @subsection Commands
2091
2092 This filter supports the same commands as options, excluding option @code{order}.
2093
2094 @section anull
2095
2096 Pass the audio source unchanged to the output.
2097
2098 @section apad
2099
2100 Pad the end of an audio stream with silence.
2101
2102 This can be used together with @command{ffmpeg} @option{-shortest} to
2103 extend audio streams to the same length as the video stream.
2104
2105 A description of the accepted options follows.
2106
2107 @table @option
2108 @item packet_size
2109 Set silence packet size. Default value is 4096.
2110
2111 @item pad_len
2112 Set the number of samples of silence to add to the end. After the
2113 value is reached, the stream is terminated. This option is mutually
2114 exclusive with @option{whole_len}.
2115
2116 @item whole_len
2117 Set the minimum total number of samples in the output audio stream. If
2118 the value is longer than the input audio length, silence is added to
2119 the end, until the value is reached. This option is mutually exclusive
2120 with @option{pad_len}.
2121
2122 @item pad_dur
2123 Specify the duration of samples of silence to add. See
2124 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2125 for the accepted syntax. Used only if set to non-zero value.
2126
2127 @item whole_dur
2128 Specify the minimum total duration in the output audio stream. See
2129 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2130 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
2131 the input audio length, silence is added to the end, until the value is reached.
2132 This option is mutually exclusive with @option{pad_dur}
2133 @end table
2134
2135 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
2136 nor @option{whole_dur} option is set, the filter will add silence to the end of
2137 the input stream indefinitely.
2138
2139 @subsection Examples
2140
2141 @itemize
2142 @item
2143 Add 1024 samples of silence to the end of the input:
2144 @example
2145 apad=pad_len=1024
2146 @end example
2147
2148 @item
2149 Make sure the audio output will contain at least 10000 samples, pad
2150 the input with silence if required:
2151 @example
2152 apad=whole_len=10000
2153 @end example
2154
2155 @item
2156 Use @command{ffmpeg} to pad the audio input with silence, so that the
2157 video stream will always result the shortest and will be converted
2158 until the end in the output file when using the @option{shortest}
2159 option:
2160 @example
2161 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
2162 @end example
2163 @end itemize
2164
2165 @section aphaser
2166 Add a phasing effect to the input audio.
2167
2168 A phaser filter creates series of peaks and troughs in the frequency spectrum.
2169 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
2170
2171 A description of the accepted parameters follows.
2172
2173 @table @option
2174 @item in_gain
2175 Set input gain. Default is 0.4.
2176
2177 @item out_gain
2178 Set output gain. Default is 0.74
2179
2180 @item delay
2181 Set delay in milliseconds. Default is 3.0.
2182
2183 @item decay
2184 Set decay. Default is 0.4.
2185
2186 @item speed
2187 Set modulation speed in Hz. Default is 0.5.
2188
2189 @item type
2190 Set modulation type. Default is triangular.
2191
2192 It accepts the following values:
2193 @table @samp
2194 @item triangular, t
2195 @item sinusoidal, s
2196 @end table
2197 @end table
2198
2199 @section aphaseshift
2200 Apply phase shift to input audio samples.
2201
2202 The filter accepts the following options:
2203
2204 @table @option
2205 @item shift
2206 Specify phase shift. Allowed range is from -1.0 to 1.0.
2207 Default value is 0.0.
2208
2209 @item level
2210 Set output gain applied to final output. Allowed range is from 0.0 to 1.0.
2211 Default value is 1.0.
2212 @end table
2213
2214 @subsection Commands
2215
2216 This filter supports the all above options as @ref{commands}.
2217
2218 @section apulsator
2219
2220 Audio pulsator is something between an autopanner and a tremolo.
2221 But it can produce funny stereo effects as well. Pulsator changes the volume
2222 of the left and right channel based on a LFO (low frequency oscillator) with
2223 different waveforms and shifted phases.
2224 This filter have the ability to define an offset between left and right
2225 channel. An offset of 0 means that both LFO shapes match each other.
2226 The left and right channel are altered equally - a conventional tremolo.
2227 An offset of 50% means that the shape of the right channel is exactly shifted
2228 in phase (or moved backwards about half of the frequency) - pulsator acts as
2229 an autopanner. At 1 both curves match again. Every setting in between moves the
2230 phase shift gapless between all stages and produces some "bypassing" sounds with
2231 sine and triangle waveforms. The more you set the offset near 1 (starting from
2232 the 0.5) the faster the signal passes from the left to the right speaker.
2233
2234 The filter accepts the following options:
2235
2236 @table @option
2237 @item level_in
2238 Set input gain. By default it is 1. Range is [0.015625 - 64].
2239
2240 @item level_out
2241 Set output gain. By default it is 1. Range is [0.015625 - 64].
2242
2243 @item mode
2244 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2245 sawup or sawdown. Default is sine.
2246
2247 @item amount
2248 Set modulation. Define how much of original signal is affected by the LFO.
2249
2250 @item offset_l
2251 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2252
2253 @item offset_r
2254 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2255
2256 @item width
2257 Set pulse width. Default is 1. Allowed range is [0 - 2].
2258
2259 @item timing
2260 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2261
2262 @item bpm
2263 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2264 is set to bpm.
2265
2266 @item ms
2267 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2268 is set to ms.
2269
2270 @item hz
2271 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2272 if timing is set to hz.
2273 @end table
2274
2275 @anchor{aresample}
2276 @section aresample
2277
2278 Resample the input audio to the specified parameters, using the
2279 libswresample library. If none are specified then the filter will
2280 automatically convert between its input and output.
2281
2282 This filter is also able to stretch/squeeze the audio data to make it match
2283 the timestamps or to inject silence / cut out audio to make it match the
2284 timestamps, do a combination of both or do neither.
2285
2286 The filter accepts the syntax
2287 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2288 expresses a sample rate and @var{resampler_options} is a list of
2289 @var{key}=@var{value} pairs, separated by ":". See the
2290 @ref{Resampler Options,,"Resampler Options" section in the
2291 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2292 for the complete list of supported options.
2293
2294 @subsection Examples
2295
2296 @itemize
2297 @item
2298 Resample the input audio to 44100Hz:
2299 @example
2300 aresample=44100
2301 @end example
2302
2303 @item
2304 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2305 samples per second compensation:
2306 @example
2307 aresample=async=1000
2308 @end example
2309 @end itemize
2310
2311 @section areverse
2312
2313 Reverse an audio clip.
2314
2315 Warning: This filter requires memory to buffer the entire clip, so trimming
2316 is suggested.
2317
2318 @subsection Examples
2319
2320 @itemize
2321 @item
2322 Take the first 5 seconds of a clip, and reverse it.
2323 @example
2324 atrim=end=5,areverse
2325 @end example
2326 @end itemize
2327
2328 @section arnndn
2329
2330 Reduce noise from speech using Recurrent Neural Networks.
2331
2332 This filter accepts the following options:
2333
2334 @table @option
2335 @item model, m
2336 Set train model file to load. This option is always required.
2337
2338 @item mix
2339 Set how much to mix filtered samples into final output.
2340 Allowed range is from -1 to 1. Default value is 1.
2341 Negative values are special, they set how much to keep filtered noise
2342 in the final filter output. Set this option to -1 to hear actual
2343 noise removed from input signal.
2344 @end table
2345
2346 @section asetnsamples
2347
2348 Set the number of samples per each output audio frame.
2349
2350 The last output packet may contain a different number of samples, as
2351 the filter will flush all the remaining samples when the input audio
2352 signals its end.
2353
2354 The filter accepts the following options:
2355
2356 @table @option
2357
2358 @item nb_out_samples, n
2359 Set the number of frames per each output audio frame. The number is
2360 intended as the number of samples @emph{per each channel}.
2361 Default value is 1024.
2362
2363 @item pad, p
2364 If set to 1, the filter will pad the last audio frame with zeroes, so
2365 that the last frame will contain the same number of samples as the
2366 previous ones. Default value is 1.
2367 @end table
2368
2369 For example, to set the number of per-frame samples to 1234 and
2370 disable padding for the last frame, use:
2371 @example
2372 asetnsamples=n=1234:p=0
2373 @end example
2374
2375 @section asetrate
2376
2377 Set the sample rate without altering the PCM data.
2378 This will result in a change of speed and pitch.
2379
2380 The filter accepts the following options:
2381
2382 @table @option
2383 @item sample_rate, r
2384 Set the output sample rate. Default is 44100 Hz.
2385 @end table
2386
2387 @section ashowinfo
2388
2389 Show a line containing various information for each input audio frame.
2390 The input audio is not modified.
2391
2392 The shown line contains a sequence of key/value pairs of the form
2393 @var{key}:@var{value}.
2394
2395 The following values are shown in the output:
2396
2397 @table @option
2398 @item n
2399 The (sequential) number of the input frame, starting from 0.
2400
2401 @item pts
2402 The presentation timestamp of the input frame, in time base units; the time base
2403 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2404
2405 @item pts_time
2406 The presentation timestamp of the input frame in seconds.
2407
2408 @item pos
2409 position of the frame in the input stream, -1 if this information in
2410 unavailable and/or meaningless (for example in case of synthetic audio)
2411
2412 @item fmt
2413 The sample format.
2414
2415 @item chlayout
2416 The channel layout.
2417
2418 @item rate
2419 The sample rate for the audio frame.
2420
2421 @item nb_samples
2422 The number of samples (per channel) in the frame.
2423
2424 @item checksum
2425 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2426 audio, the data is treated as if all the planes were concatenated.
2427
2428 @item plane_checksums
2429 A list of Adler-32 checksums for each data plane.
2430 @end table
2431
2432 @section asoftclip
2433 Apply audio soft clipping.
2434
2435 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2436 along a smooth curve, rather than the abrupt shape of hard-clipping.
2437
2438 This filter accepts the following options:
2439
2440 @table @option
2441 @item type
2442 Set type of soft-clipping.
2443
2444 It accepts the following values:
2445 @table @option
2446 @item hard
2447 @item tanh
2448 @item atan
2449 @item cubic
2450 @item exp
2451 @item alg
2452 @item quintic
2453 @item sin
2454 @item erf
2455 @end table
2456
2457 @item param
2458 Set additional parameter which controls sigmoid function.
2459
2460 @item oversample
2461 Set oversampling factor.
2462 @end table
2463
2464 @subsection Commands
2465
2466 This filter supports the all above options as @ref{commands}.
2467
2468 @section asr
2469 Automatic Speech Recognition
2470
2471 This filter uses PocketSphinx for speech recognition. To enable
2472 compilation of this filter, you need to configure FFmpeg with
2473 @code{--enable-pocketsphinx}.
2474
2475 It accepts the following options:
2476
2477 @table @option
2478 @item rate
2479 Set sampling rate of input audio. Defaults is @code{16000}.
2480 This need to match speech models, otherwise one will get poor results.
2481
2482 @item hmm
2483 Set dictionary containing acoustic model files.
2484
2485 @item dict
2486 Set pronunciation dictionary.
2487
2488 @item lm
2489 Set language model file.
2490
2491 @item lmctl
2492 Set language model set.
2493
2494 @item lmname
2495 Set which language model to use.
2496
2497 @item logfn
2498 Set output for log messages.
2499 @end table
2500
2501 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2502
2503 @anchor{astats}
2504 @section astats
2505
2506 Display time domain statistical information about the audio channels.
2507 Statistics are calculated and displayed for each audio channel and,
2508 where applicable, an overall figure is also given.
2509
2510 It accepts the following option:
2511 @table @option
2512 @item length
2513 Short window length in seconds, used for peak and trough RMS measurement.
2514 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2515
2516 @item metadata
2517
2518 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2519 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2520 disabled.
2521
2522 Available keys for each channel are:
2523 DC_offset
2524 Min_level
2525 Max_level
2526 Min_difference
2527 Max_difference
2528 Mean_difference
2529 RMS_difference
2530 Peak_level
2531 RMS_peak
2532 RMS_trough
2533 Crest_factor
2534 Flat_factor
2535 Peak_count
2536 Noise_floor
2537 Noise_floor_count
2538 Bit_depth
2539 Dynamic_range
2540 Zero_crossings
2541 Zero_crossings_rate
2542 Number_of_NaNs
2543 Number_of_Infs
2544 Number_of_denormals
2545
2546 and for Overall:
2547 DC_offset
2548 Min_level
2549 Max_level
2550 Min_difference
2551 Max_difference
2552 Mean_difference
2553 RMS_difference
2554 Peak_level
2555 RMS_level
2556 RMS_peak
2557 RMS_trough
2558 Flat_factor
2559 Peak_count
2560 Noise_floor
2561 Noise_floor_count
2562 Bit_depth
2563 Number_of_samples
2564 Number_of_NaNs
2565 Number_of_Infs
2566 Number_of_denormals
2567
2568 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2569 this @code{lavfi.astats.Overall.Peak_count}.
2570
2571 For description what each key means read below.
2572
2573 @item reset
2574 Set number of frame after which stats are going to be recalculated.
2575 Default is disabled.
2576
2577 @item measure_perchannel
2578 Select the entries which need to be measured per channel. The metadata keys can
2579 be used as flags, default is @option{all} which measures everything.
2580 @option{none} disables all per channel measurement.
2581
2582 @item measure_overall
2583 Select the entries which need to be measured overall. The metadata keys can
2584 be used as flags, default is @option{all} which measures everything.
2585 @option{none} disables all overall measurement.
2586
2587 @end table
2588
2589 A description of each shown parameter follows:
2590
2591 @table @option
2592 @item DC offset
2593 Mean amplitude displacement from zero.
2594
2595 @item Min level
2596 Minimal sample level.
2597
2598 @item Max level
2599 Maximal sample level.
2600
2601 @item Min difference
2602 Minimal difference between two consecutive samples.
2603
2604 @item Max difference
2605 Maximal difference between two consecutive samples.
2606
2607 @item Mean difference
2608 Mean difference between two consecutive samples.
2609 The average of each difference between two consecutive samples.
2610
2611 @item RMS difference
2612 Root Mean Square difference between two consecutive samples.
2613
2614 @item Peak level dB
2615 @item RMS level dB
2616 Standard peak and RMS level measured in dBFS.
2617
2618 @item RMS peak dB
2619 @item RMS trough dB
2620 Peak and trough values for RMS level measured over a short window.
2621
2622 @item Crest factor
2623 Standard ratio of peak to RMS level (note: not in dB).
2624
2625 @item Flat factor
2626 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2627 (i.e. either @var{Min level} or @var{Max level}).
2628
2629 @item Peak count
2630 Number of occasions (not the number of samples) that the signal attained either
2631 @var{Min level} or @var{Max level}.
2632
2633 @item Noise floor dB
2634 Minimum local peak measured in dBFS over a short window.
2635
2636 @item Noise floor count
2637 Number of occasions (not the number of samples) that the signal attained
2638 @var{Noise floor}.
2639
2640 @item Bit depth
2641 Overall bit depth of audio. Number of bits used for each sample.
2642
2643 @item Dynamic range
2644 Measured dynamic range of audio in dB.
2645
2646 @item Zero crossings
2647 Number of points where the waveform crosses the zero level axis.
2648
2649 @item Zero crossings rate
2650 Rate of Zero crossings and number of audio samples.
2651 @end table
2652
2653 @section asubboost
2654 Boost subwoofer frequencies.
2655
2656 The filter accepts the following options:
2657
2658 @table @option
2659 @item dry
2660 Set dry gain, how much of original signal is kept. Allowed range is from 0 to 1.
2661 Default value is 0.7.
2662
2663 @item wet
2664 Set wet gain, how much of filtered signal is kept. Allowed range is from 0 to 1.
2665 Default value is 0.7.
2666
2667 @item decay
2668 Set delay line decay gain value. Allowed range is from 0 to 1.
2669 Default value is 0.7.
2670
2671 @item feedback
2672 Set delay line feedback gain value. Allowed range is from 0 to 1.
2673 Default value is 0.9.
2674
2675 @item cutoff
2676 Set cutoff frequency in Hertz. Allowed range is 50 to 900.
2677 Default value is 100.
2678
2679 @item slope
2680 Set slope amount for cutoff frequency. Allowed range is 0.0001 to 1.
2681 Default value is 0.5.
2682
2683 @item delay
2684 Set delay. Allowed range is from 1 to 100.
2685 Default value is 20.
2686 @end table
2687
2688 @subsection Commands
2689
2690 This filter supports the all above options as @ref{commands}.
2691
2692 @section asubcut
2693 Cut subwoofer frequencies.
2694
2695 This filter allows to set custom, steeper
2696 roll off than highpass filter, and thus is able to more attenuate
2697 frequency content in stop-band.
2698
2699 The filter accepts the following options:
2700
2701 @table @option
2702 @item cutoff
2703 Set cutoff frequency in Hertz. Allowed range is 2 to 200.
2704 Default value is 20.
2705
2706 @item order
2707 Set filter order. Available values are from 3 to 20.
2708 Default value is 10.
2709
2710 @item level
2711 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
2712 @end table
2713
2714 @subsection Commands
2715
2716 This filter supports the all above options as @ref{commands}.
2717
2718 @section asupercut
2719 Cut super frequencies.
2720
2721 The filter accepts the following options:
2722
2723 @table @option
2724 @item cutoff
2725 Set cutoff frequency in Hertz. Allowed range is 20000 to 192000.
2726 Default value is 20000.
2727
2728 @item order
2729 Set filter order. Available values are from 3 to 20.
2730 Default value is 10.
2731
2732 @item level
2733 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
2734 @end table
2735
2736 @subsection Commands
2737
2738 This filter supports the all above options as @ref{commands}.
2739
2740 @section asuperpass
2741 Apply high order Butterworth band-pass filter.
2742
2743 The filter accepts the following options:
2744
2745 @table @option
2746 @item centerf
2747 Set center frequency in Hertz. Allowed range is 2 to 999999.
2748 Default value is 1000.
2749
2750 @item order
2751 Set filter order. Available values are from 4 to 20.
2752 Default value is 4.
2753
2754 @item qfactor
2755 Set Q-factor. Allowed range is from 0.01 to 100. Default value is 1.
2756
2757 @item level
2758 Set input gain level. Allowed range is from 0 to 2. Default value is 1.
2759 @end table
2760
2761 @subsection Commands
2762
2763 This filter supports the all above options as @ref{commands}.
2764
2765 @section asuperstop
2766 Apply high order Butterworth band-stop filter.
2767
2768 The filter accepts the following options:
2769
2770 @table @option
2771 @item centerf
2772 Set center frequency in Hertz. Allowed range is 2 to 999999.
2773 Default value is 1000.
2774
2775 @item order
2776 Set filter order. Available values are from 4 to 20.
2777 Default value is 4.
2778
2779 @item qfactor
2780 Set Q-factor. Allowed range is from 0.01 to 100. Default value is 1.
2781
2782 @item level
2783 Set input gain level. Allowed range is from 0 to 2. Default value is 1.
2784 @end table
2785
2786 @subsection Commands
2787
2788 This filter supports the all above options as @ref{commands}.
2789
2790 @section atempo
2791
2792 Adjust audio tempo.
2793
2794 The filter accepts exactly one parameter, the audio tempo. If not
2795 specified then the filter will assume nominal 1.0 tempo. Tempo must
2796 be in the [0.5, 100.0] range.
2797
2798 Note that tempo greater than 2 will skip some samples rather than
2799 blend them in.  If for any reason this is a concern it is always
2800 possible to daisy-chain several instances of atempo to achieve the
2801 desired product tempo.
2802
2803 @subsection Examples
2804
2805 @itemize
2806 @item
2807 Slow down audio to 80% tempo:
2808 @example
2809 atempo=0.8
2810 @end example
2811
2812 @item
2813 To speed up audio to 300% tempo:
2814 @example
2815 atempo=3
2816 @end example
2817
2818 @item
2819 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2820 @example
2821 atempo=sqrt(3),atempo=sqrt(3)
2822 @end example
2823 @end itemize
2824
2825 @subsection Commands
2826
2827 This filter supports the following commands:
2828 @table @option
2829 @item tempo
2830 Change filter tempo scale factor.
2831 Syntax for the command is : "@var{tempo}"
2832 @end table
2833
2834 @section atrim
2835
2836 Trim the input so that the output contains one continuous subpart of the input.
2837
2838 It accepts the following parameters:
2839 @table @option
2840 @item start
2841 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2842 sample with the timestamp @var{start} will be the first sample in the output.
2843
2844 @item end
2845 Specify time of the first audio sample that will be dropped, i.e. the
2846 audio sample immediately preceding the one with the timestamp @var{end} will be
2847 the last sample in the output.
2848
2849 @item start_pts
2850 Same as @var{start}, except this option sets the start timestamp in samples
2851 instead of seconds.
2852
2853 @item end_pts
2854 Same as @var{end}, except this option sets the end timestamp in samples instead
2855 of seconds.
2856
2857 @item duration
2858 The maximum duration of the output in seconds.
2859
2860 @item start_sample
2861 The number of the first sample that should be output.
2862
2863 @item end_sample
2864 The number of the first sample that should be dropped.
2865 @end table
2866
2867 @option{start}, @option{end}, and @option{duration} are expressed as time
2868 duration specifications; see
2869 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2870
2871 Note that the first two sets of the start/end options and the @option{duration}
2872 option look at the frame timestamp, while the _sample options simply count the
2873 samples that pass through the filter. So start/end_pts and start/end_sample will
2874 give different results when the timestamps are wrong, inexact or do not start at
2875 zero. Also note that this filter does not modify the timestamps. If you wish
2876 to have the output timestamps start at zero, insert the asetpts filter after the
2877 atrim filter.
2878
2879 If multiple start or end options are set, this filter tries to be greedy and
2880 keep all samples that match at least one of the specified constraints. To keep
2881 only the part that matches all the constraints at once, chain multiple atrim
2882 filters.
2883
2884 The defaults are such that all the input is kept. So it is possible to set e.g.
2885 just the end values to keep everything before the specified time.
2886
2887 Examples:
2888 @itemize
2889 @item
2890 Drop everything except the second minute of input:
2891 @example
2892 ffmpeg -i INPUT -af atrim=60:120
2893 @end example
2894
2895 @item
2896 Keep only the first 1000 samples:
2897 @example
2898 ffmpeg -i INPUT -af atrim=end_sample=1000
2899 @end example
2900
2901 @end itemize
2902
2903 @section axcorrelate
2904 Calculate normalized cross-correlation between two input audio streams.
2905
2906 Resulted samples are always between -1 and 1 inclusive.
2907 If result is 1 it means two input samples are highly correlated in that selected segment.
2908 Result 0 means they are not correlated at all.
2909 If result is -1 it means two input samples are out of phase, which means they cancel each
2910 other.
2911
2912 The filter accepts the following options:
2913
2914 @table @option
2915 @item size
2916 Set size of segment over which cross-correlation is calculated.
2917 Default is 256. Allowed range is from 2 to 131072.
2918
2919 @item algo
2920 Set algorithm for cross-correlation. Can be @code{slow} or @code{fast}.
2921 Default is @code{slow}. Fast algorithm assumes mean values over any given segment
2922 are always zero and thus need much less calculations to make.
2923 This is generally not true, but is valid for typical audio streams.
2924 @end table
2925
2926 @subsection Examples
2927
2928 @itemize
2929 @item
2930 Calculate correlation between channels in stereo audio stream:
2931 @example
2932 ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
2933 @end example
2934 @end itemize
2935
2936 @section bandpass
2937
2938 Apply a two-pole Butterworth band-pass filter with central
2939 frequency @var{frequency}, and (3dB-point) band-width width.
2940 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2941 instead of the default: constant 0dB peak gain.
2942 The filter roll off at 6dB per octave (20dB per decade).
2943
2944 The filter accepts the following options:
2945
2946 @table @option
2947 @item frequency, f
2948 Set the filter's central frequency. Default is @code{3000}.
2949
2950 @item csg
2951 Constant skirt gain if set to 1. Defaults to 0.
2952
2953 @item width_type, t
2954 Set method to specify band-width of filter.
2955 @table @option
2956 @item h
2957 Hz
2958 @item q
2959 Q-Factor
2960 @item o
2961 octave
2962 @item s
2963 slope
2964 @item k
2965 kHz
2966 @end table
2967
2968 @item width, w
2969 Specify the band-width of a filter in width_type units.
2970
2971 @item mix, m
2972 How much to use filtered signal in output. Default is 1.
2973 Range is between 0 and 1.
2974
2975 @item channels, c
2976 Specify which channels to filter, by default all available are filtered.
2977
2978 @item normalize, n
2979 Normalize biquad coefficients, by default is disabled.
2980 Enabling it will normalize magnitude response at DC to 0dB.
2981
2982 @item transform, a
2983 Set transform type of IIR filter.
2984 @table @option
2985 @item di
2986 @item dii
2987 @item tdii
2988 @item latt
2989 @end table
2990
2991 @item precision, r
2992 Set precison of filtering.
2993 @table @option
2994 @item auto
2995 Pick automatic sample format depending on surround filters.
2996 @item s16
2997 Always use signed 16-bit.
2998 @item s32
2999 Always use signed 32-bit.
3000 @item f32
3001 Always use float 32-bit.
3002 @item f64
3003 Always use float 64-bit.
3004 @end table
3005 @end table
3006
3007 @subsection Commands
3008
3009 This filter supports the following commands:
3010 @table @option
3011 @item frequency, f
3012 Change bandpass frequency.
3013 Syntax for the command is : "@var{frequency}"
3014
3015 @item width_type, t
3016 Change bandpass width_type.
3017 Syntax for the command is : "@var{width_type}"
3018
3019 @item width, w
3020 Change bandpass width.
3021 Syntax for the command is : "@var{width}"
3022
3023 @item mix, m
3024 Change bandpass mix.
3025 Syntax for the command is : "@var{mix}"
3026 @end table
3027
3028 @section bandreject
3029
3030 Apply a two-pole Butterworth band-reject filter with central
3031 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
3032 The filter roll off at 6dB per octave (20dB per decade).
3033
3034 The filter accepts the following options:
3035
3036 @table @option
3037 @item frequency, f
3038 Set the filter's central frequency. Default is @code{3000}.
3039
3040 @item width_type, t
3041 Set method to specify band-width of filter.
3042 @table @option
3043 @item h
3044 Hz
3045 @item q
3046 Q-Factor
3047 @item o
3048 octave
3049 @item s
3050 slope
3051 @item k
3052 kHz
3053 @end table
3054
3055 @item width, w
3056 Specify the band-width of a filter in width_type units.
3057
3058 @item mix, m
3059 How much to use filtered signal in output. Default is 1.
3060 Range is between 0 and 1.
3061
3062 @item channels, c
3063 Specify which channels to filter, by default all available are filtered.
3064
3065 @item normalize, n
3066 Normalize biquad coefficients, by default is disabled.
3067 Enabling it will normalize magnitude response at DC to 0dB.
3068
3069 @item transform, a
3070 Set transform type of IIR filter.
3071 @table @option
3072 @item di
3073 @item dii
3074 @item tdii
3075 @item latt
3076 @end table
3077
3078 @item precision, r
3079 Set precison of filtering.
3080 @table @option
3081 @item auto
3082 Pick automatic sample format depending on surround filters.
3083 @item s16
3084 Always use signed 16-bit.
3085 @item s32
3086 Always use signed 32-bit.
3087 @item f32
3088 Always use float 32-bit.
3089 @item f64
3090 Always use float 64-bit.
3091 @end table
3092 @end table
3093
3094 @subsection Commands
3095
3096 This filter supports the following commands:
3097 @table @option
3098 @item frequency, f
3099 Change bandreject frequency.
3100 Syntax for the command is : "@var{frequency}"
3101
3102 @item width_type, t
3103 Change bandreject width_type.
3104 Syntax for the command is : "@var{width_type}"
3105
3106 @item width, w
3107 Change bandreject width.
3108 Syntax for the command is : "@var{width}"
3109
3110 @item mix, m
3111 Change bandreject mix.
3112 Syntax for the command is : "@var{mix}"
3113 @end table
3114
3115 @section bass, lowshelf
3116
3117 Boost or cut the bass (lower) frequencies of the audio using a two-pole
3118 shelving filter with a response similar to that of a standard
3119 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
3120
3121 The filter accepts the following options:
3122
3123 @table @option
3124 @item gain, g
3125 Give the gain at 0 Hz. Its useful range is about -20
3126 (for a large cut) to +20 (for a large boost).
3127 Beware of clipping when using a positive gain.
3128
3129 @item frequency, f
3130 Set the filter's central frequency and so can be used
3131 to extend or reduce the frequency range to be boosted or cut.
3132 The default value is @code{100} Hz.
3133
3134 @item width_type, t
3135 Set method to specify band-width of filter.
3136 @table @option
3137 @item h
3138 Hz
3139 @item q
3140 Q-Factor
3141 @item o
3142 octave
3143 @item s
3144 slope
3145 @item k
3146 kHz
3147 @end table
3148
3149 @item width, w
3150 Determine how steep is the filter's shelf transition.
3151
3152 @item mix, m
3153 How much to use filtered signal in output. Default is 1.
3154 Range is between 0 and 1.
3155
3156 @item channels, c
3157 Specify which channels to filter, by default all available are filtered.
3158
3159 @item normalize, n
3160 Normalize biquad coefficients, by default is disabled.
3161 Enabling it will normalize magnitude response at DC to 0dB.
3162
3163 @item transform, a
3164 Set transform type of IIR filter.
3165 @table @option
3166 @item di
3167 @item dii
3168 @item tdii
3169 @item latt
3170 @end table
3171
3172 @item precision, r
3173 Set precison of filtering.
3174 @table @option
3175 @item auto
3176 Pick automatic sample format depending on surround filters.
3177 @item s16
3178 Always use signed 16-bit.
3179 @item s32
3180 Always use signed 32-bit.
3181 @item f32
3182 Always use float 32-bit.
3183 @item f64
3184 Always use float 64-bit.
3185 @end table
3186 @end table
3187
3188 @subsection Commands
3189
3190 This filter supports the following commands:
3191 @table @option
3192 @item frequency, f
3193 Change bass frequency.
3194 Syntax for the command is : "@var{frequency}"
3195
3196 @item width_type, t
3197 Change bass width_type.
3198 Syntax for the command is : "@var{width_type}"
3199
3200 @item width, w
3201 Change bass width.
3202 Syntax for the command is : "@var{width}"
3203
3204 @item gain, g
3205 Change bass gain.
3206 Syntax for the command is : "@var{gain}"
3207
3208 @item mix, m
3209 Change bass mix.
3210 Syntax for the command is : "@var{mix}"
3211 @end table
3212
3213 @section biquad
3214
3215 Apply a biquad IIR filter with the given coefficients.
3216 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
3217 are the numerator and denominator coefficients respectively.
3218 and @var{channels}, @var{c} specify which channels to filter, by default all
3219 available are filtered.
3220
3221 @subsection Commands
3222
3223 This filter supports the following commands:
3224 @table @option
3225 @item a0
3226 @item a1
3227 @item a2
3228 @item b0
3229 @item b1
3230 @item b2
3231 Change biquad parameter.
3232 Syntax for the command is : "@var{value}"
3233
3234 @item mix, m
3235 How much to use filtered signal in output. Default is 1.
3236 Range is between 0 and 1.
3237
3238 @item channels, c
3239 Specify which channels to filter, by default all available are filtered.
3240
3241 @item normalize, n
3242 Normalize biquad coefficients, by default is disabled.
3243 Enabling it will normalize magnitude response at DC to 0dB.
3244
3245 @item transform, a
3246 Set transform type of IIR filter.
3247 @table @option
3248 @item di
3249 @item dii
3250 @item tdii
3251 @item latt
3252 @end table
3253
3254 @item precision, r
3255 Set precison of filtering.
3256 @table @option
3257 @item auto
3258 Pick automatic sample format depending on surround filters.
3259 @item s16
3260 Always use signed 16-bit.
3261 @item s32
3262 Always use signed 32-bit.
3263 @item f32
3264 Always use float 32-bit.
3265 @item f64
3266 Always use float 64-bit.
3267 @end table
3268 @end table
3269
3270 @section bs2b
3271 Bauer stereo to binaural transformation, which improves headphone listening of
3272 stereo audio records.
3273
3274 To enable compilation of this filter you need to configure FFmpeg with
3275 @code{--enable-libbs2b}.
3276
3277 It accepts the following parameters:
3278 @table @option
3279
3280 @item profile
3281 Pre-defined crossfeed level.
3282 @table @option
3283
3284 @item default
3285 Default level (fcut=700, feed=50).
3286
3287 @item cmoy
3288 Chu Moy circuit (fcut=700, feed=60).
3289
3290 @item jmeier
3291 Jan Meier circuit (fcut=650, feed=95).
3292
3293 @end table
3294
3295 @item fcut
3296 Cut frequency (in Hz).
3297
3298 @item feed
3299 Feed level (in Hz).
3300
3301 @end table
3302
3303 @section channelmap
3304
3305 Remap input channels to new locations.
3306
3307 It accepts the following parameters:
3308 @table @option
3309 @item map
3310 Map channels from input to output. The argument is a '|'-separated list of
3311 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
3312 @var{in_channel} form. @var{in_channel} can be either the name of the input
3313 channel (e.g. FL for front left) or its index in the input channel layout.
3314 @var{out_channel} is the name of the output channel or its index in the output
3315 channel layout. If @var{out_channel} is not given then it is implicitly an
3316 index, starting with zero and increasing by one for each mapping.
3317
3318 @item channel_layout
3319 The channel layout of the output stream.
3320 @end table
3321
3322 If no mapping is present, the filter will implicitly map input channels to
3323 output channels, preserving indices.
3324
3325 @subsection Examples
3326
3327 @itemize
3328 @item
3329 For example, assuming a 5.1+downmix input MOV file,
3330 @example
3331 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
3332 @end example
3333 will create an output WAV file tagged as stereo from the downmix channels of
3334 the input.
3335
3336 @item
3337 To fix a 5.1 WAV improperly encoded in AAC's native channel order
3338 @example
3339 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
3340 @end example
3341 @end itemize
3342
3343 @section channelsplit
3344
3345 Split each channel from an input audio stream into a separate output stream.
3346
3347 It accepts the following parameters:
3348 @table @option
3349 @item channel_layout
3350 The channel layout of the input stream. The default is "stereo".
3351 @item channels
3352 A channel layout describing the channels to be extracted as separate output streams
3353 or "all" to extract each input channel as a separate stream. The default is "all".
3354
3355 Choosing channels not present in channel layout in the input will result in an error.
3356 @end table
3357
3358 @subsection Examples
3359
3360 @itemize
3361 @item
3362 For example, assuming a stereo input MP3 file,
3363 @example
3364 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
3365 @end example
3366 will create an output Matroska file with two audio streams, one containing only
3367 the left channel and the other the right channel.
3368
3369 @item
3370 Split a 5.1 WAV file into per-channel files:
3371 @example
3372 ffmpeg -i in.wav -filter_complex
3373 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
3374 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
3375 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
3376 side_right.wav
3377 @end example
3378
3379 @item
3380 Extract only LFE from a 5.1 WAV file:
3381 @example
3382 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
3383 -map '[LFE]' lfe.wav
3384 @end example
3385 @end itemize
3386
3387 @section chorus
3388 Add a chorus effect to the audio.
3389
3390 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
3391
3392 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
3393 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
3394 The modulation depth defines the range the modulated delay is played before or after
3395 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
3396 sound tuned around the original one, like in a chorus where some vocals are slightly
3397 off key.
3398
3399 It accepts the following parameters:
3400 @table @option
3401 @item in_gain
3402 Set input gain. Default is 0.4.
3403
3404 @item out_gain
3405 Set output gain. Default is 0.4.
3406
3407 @item delays
3408 Set delays. A typical delay is around 40ms to 60ms.
3409
3410 @item decays
3411 Set decays.
3412
3413 @item speeds
3414 Set speeds.
3415
3416 @item depths
3417 Set depths.
3418 @end table
3419
3420 @subsection Examples
3421
3422 @itemize
3423 @item
3424 A single delay:
3425 @example
3426 chorus=0.7:0.9:55:0.4:0.25:2
3427 @end example
3428
3429 @item
3430 Two delays:
3431 @example
3432 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
3433 @end example
3434
3435 @item
3436 Fuller sounding chorus with three delays:
3437 @example
3438 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
3439 @end example
3440 @end itemize
3441
3442 @section compand
3443 Compress or expand the audio's dynamic range.
3444
3445 It accepts the following parameters:
3446
3447 @table @option
3448
3449 @item attacks
3450 @item decays
3451 A list of times in seconds for each channel over which the instantaneous level
3452 of the input signal is averaged to determine its volume. @var{attacks} refers to
3453 increase of volume and @var{decays} refers to decrease of volume. For most
3454 situations, the attack time (response to the audio getting louder) should be
3455 shorter than the decay time, because the human ear is more sensitive to sudden
3456 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
3457 a typical value for decay is 0.8 seconds.
3458 If specified number of attacks & decays is lower than number of channels, the last
3459 set attack/decay will be used for all remaining channels.
3460
3461 @item points
3462 A list of points for the transfer function, specified in dB relative to the
3463 maximum possible signal amplitude. Each key points list must be defined using
3464 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
3465 @code{x0/y0 x1/y1 x2/y2 ....}
3466
3467 The input values must be in strictly increasing order but the transfer function
3468 does not have to be monotonically rising. The point @code{0/0} is assumed but
3469 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
3470 function are @code{-70/-70|-60/-20|1/0}.
3471
3472 @item soft-knee
3473 Set the curve radius in dB for all joints. It defaults to 0.01.
3474
3475 @item gain
3476 Set the additional gain in dB to be applied at all points on the transfer
3477 function. This allows for easy adjustment of the overall gain.
3478 It defaults to 0.
3479
3480 @item volume
3481 Set an initial volume, in dB, to be assumed for each channel when filtering
3482 starts. This permits the user to supply a nominal level initially, so that, for
3483 example, a very large gain is not applied to initial signal levels before the
3484 companding has begun to operate. A typical value for audio which is initially
3485 quiet is -90 dB. It defaults to 0.
3486
3487 @item delay
3488 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
3489 delayed before being fed to the volume adjuster. Specifying a delay
3490 approximately equal to the attack/decay times allows the filter to effectively
3491 operate in predictive rather than reactive mode. It defaults to 0.
3492
3493 @end table
3494
3495 @subsection Examples
3496
3497 @itemize
3498 @item
3499 Make music with both quiet and loud passages suitable for listening to in a
3500 noisy environment:
3501 @example
3502 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
3503 @end example
3504
3505 Another example for audio with whisper and explosion parts:
3506 @example
3507 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
3508 @end example
3509
3510 @item
3511 A noise gate for when the noise is at a lower level than the signal:
3512 @example
3513 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
3514 @end example
3515
3516 @item
3517 Here is another noise gate, this time for when the noise is at a higher level
3518 than the signal (making it, in some ways, similar to squelch):
3519 @example
3520 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3521 @end example
3522
3523 @item
3524 2:1 compression starting at -6dB:
3525 @example
3526 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3527 @end example
3528
3529 @item
3530 2:1 compression starting at -9dB:
3531 @example
3532 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3533 @end example
3534
3535 @item
3536 2:1 compression starting at -12dB:
3537 @example
3538 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3539 @end example
3540
3541 @item
3542 2:1 compression starting at -18dB:
3543 @example
3544 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3545 @end example
3546
3547 @item
3548 3:1 compression starting at -15dB:
3549 @example
3550 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3551 @end example
3552
3553 @item
3554 Compressor/Gate:
3555 @example
3556 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3557 @end example
3558
3559 @item
3560 Expander:
3561 @example
3562 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
3563 @end example
3564
3565 @item
3566 Hard limiter at -6dB:
3567 @example
3568 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3569 @end example
3570
3571 @item
3572 Hard limiter at -12dB:
3573 @example
3574 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3575 @end example
3576
3577 @item
3578 Hard noise gate at -35 dB:
3579 @example
3580 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3581 @end example
3582
3583 @item
3584 Soft limiter:
3585 @example
3586 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3587 @end example
3588 @end itemize
3589
3590 @section compensationdelay
3591
3592 Compensation Delay Line is a metric based delay to compensate differing
3593 positions of microphones or speakers.
3594
3595 For example, you have recorded guitar with two microphones placed in
3596 different locations. Because the front of sound wave has fixed speed in
3597 normal conditions, the phasing of microphones can vary and depends on
3598 their location and interposition. The best sound mix can be achieved when
3599 these microphones are in phase (synchronized). Note that a distance of
3600 ~30 cm between microphones makes one microphone capture the signal in
3601 antiphase to the other microphone. That makes the final mix sound moody.
3602 This filter helps to solve phasing problems by adding different delays
3603 to each microphone track and make them synchronized.
3604
3605 The best result can be reached when you take one track as base and
3606 synchronize other tracks one by one with it.
3607 Remember that synchronization/delay tolerance depends on sample rate, too.
3608 Higher sample rates will give more tolerance.
3609
3610 The filter accepts the following parameters:
3611
3612 @table @option
3613 @item mm
3614 Set millimeters distance. This is compensation distance for fine tuning.
3615 Default is 0.
3616
3617 @item cm
3618 Set cm distance. This is compensation distance for tightening distance setup.
3619 Default is 0.
3620
3621 @item m
3622 Set meters distance. This is compensation distance for hard distance setup.
3623 Default is 0.
3624
3625 @item dry
3626 Set dry amount. Amount of unprocessed (dry) signal.
3627 Default is 0.
3628
3629 @item wet
3630 Set wet amount. Amount of processed (wet) signal.
3631 Default is 1.
3632
3633 @item temp
3634 Set temperature in degrees Celsius. This is the temperature of the environment.
3635 Default is 20.
3636 @end table
3637
3638 @section crossfeed
3639 Apply headphone crossfeed filter.
3640
3641 Crossfeed is the process of blending the left and right channels of stereo
3642 audio recording.
3643 It is mainly used to reduce extreme stereo separation of low frequencies.
3644
3645 The intent is to produce more speaker like sound to the listener.
3646
3647 The filter accepts the following options:
3648
3649 @table @option
3650 @item strength
3651 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3652 This sets gain of low shelf filter for side part of stereo image.
3653 Default is -6dB. Max allowed is -30db when strength is set to 1.
3654
3655 @item range
3656 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3657 This sets cut off frequency of low shelf filter. Default is cut off near
3658 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3659
3660 @item slope
3661 Set curve slope of low shelf filter. Default is 0.5.
3662 Allowed range is from 0.01 to 1.
3663
3664 @item level_in
3665 Set input gain. Default is 0.9.
3666
3667 @item level_out
3668 Set output gain. Default is 1.
3669 @end table
3670
3671 @subsection Commands
3672
3673 This filter supports the all above options as @ref{commands}.
3674
3675 @section crystalizer
3676 Simple algorithm to expand audio dynamic range.
3677
3678 The filter accepts the following options:
3679
3680 @table @option
3681 @item i
3682 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3683 (unchanged sound) to 10.0 (maximum effect).
3684
3685 @item c
3686 Enable clipping. By default is enabled.
3687 @end table
3688
3689 @subsection Commands
3690
3691 This filter supports the all above options as @ref{commands}.
3692
3693 @section dcshift
3694 Apply a DC shift to the audio.
3695
3696 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3697 in the recording chain) from the audio. The effect of a DC offset is reduced
3698 headroom and hence volume. The @ref{astats} filter can be used to determine if
3699 a signal has a DC offset.
3700
3701 @table @option
3702 @item shift
3703 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3704 the audio.
3705
3706 @item limitergain
3707 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3708 used to prevent clipping.
3709 @end table
3710
3711 @section deesser
3712
3713 Apply de-essing to the audio samples.
3714
3715 @table @option
3716 @item i
3717 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3718 Default is 0.
3719
3720 @item m
3721 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3722 Default is 0.5.
3723
3724 @item f
3725 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3726 Default is 0.5.
3727
3728 @item s
3729 Set the output mode.
3730
3731 It accepts the following values:
3732 @table @option
3733 @item i
3734 Pass input unchanged.
3735
3736 @item o
3737 Pass ess filtered out.
3738
3739 @item e
3740 Pass only ess.
3741
3742 Default value is @var{o}.
3743 @end table
3744
3745 @end table
3746
3747 @section drmeter
3748 Measure audio dynamic range.
3749
3750 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3751 is found in transition material. And anything less that 8 have very poor dynamics
3752 and is very compressed.
3753
3754 The filter accepts the following options:
3755
3756 @table @option
3757 @item length
3758 Set window length in seconds used to split audio into segments of equal length.
3759 Default is 3 seconds.
3760 @end table
3761
3762 @section dynaudnorm
3763 Dynamic Audio Normalizer.
3764
3765 This filter applies a certain amount of gain to the input audio in order
3766 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3767 contrast to more "simple" normalization algorithms, the Dynamic Audio
3768 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3769 This allows for applying extra gain to the "quiet" sections of the audio
3770 while avoiding distortions or clipping the "loud" sections. In other words:
3771 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3772 sections, in the sense that the volume of each section is brought to the
3773 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3774 this goal *without* applying "dynamic range compressing". It will retain 100%
3775 of the dynamic range *within* each section of the audio file.
3776
3777 @table @option
3778 @item framelen, f
3779 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3780 Default is 500 milliseconds.
3781 The Dynamic Audio Normalizer processes the input audio in small chunks,
3782 referred to as frames. This is required, because a peak magnitude has no
3783 meaning for just a single sample value. Instead, we need to determine the
3784 peak magnitude for a contiguous sequence of sample values. While a "standard"
3785 normalizer would simply use the peak magnitude of the complete file, the
3786 Dynamic Audio Normalizer determines the peak magnitude individually for each
3787 frame. The length of a frame is specified in milliseconds. By default, the
3788 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3789 been found to give good results with most files.
3790 Note that the exact frame length, in number of samples, will be determined
3791 automatically, based on the sampling rate of the individual input audio file.
3792
3793 @item gausssize, g
3794 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3795 number. Default is 31.
3796 Probably the most important parameter of the Dynamic Audio Normalizer is the
3797 @code{window size} of the Gaussian smoothing filter. The filter's window size
3798 is specified in frames, centered around the current frame. For the sake of
3799 simplicity, this must be an odd number. Consequently, the default value of 31
3800 takes into account the current frame, as well as the 15 preceding frames and
3801 the 15 subsequent frames. Using a larger window results in a stronger
3802 smoothing effect and thus in less gain variation, i.e. slower gain
3803 adaptation. Conversely, using a smaller window results in a weaker smoothing
3804 effect and thus in more gain variation, i.e. faster gain adaptation.
3805 In other words, the more you increase this value, the more the Dynamic Audio
3806 Normalizer will behave like a "traditional" normalization filter. On the
3807 contrary, the more you decrease this value, the more the Dynamic Audio
3808 Normalizer will behave like a dynamic range compressor.
3809
3810 @item peak, p
3811 Set the target peak value. This specifies the highest permissible magnitude
3812 level for the normalized audio input. This filter will try to approach the
3813 target peak magnitude as closely as possible, but at the same time it also
3814 makes sure that the normalized signal will never exceed the peak magnitude.
3815 A frame's maximum local gain factor is imposed directly by the target peak
3816 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3817 It is not recommended to go above this value.
3818
3819 @item maxgain, m
3820 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3821 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3822 factor for each input frame, i.e. the maximum gain factor that does not
3823 result in clipping or distortion. The maximum gain factor is determined by
3824 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3825 additionally bounds the frame's maximum gain factor by a predetermined
3826 (global) maximum gain factor. This is done in order to avoid excessive gain
3827 factors in "silent" or almost silent frames. By default, the maximum gain
3828 factor is 10.0, For most inputs the default value should be sufficient and
3829 it usually is not recommended to increase this value. Though, for input
3830 with an extremely low overall volume level, it may be necessary to allow even
3831 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3832 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3833 Instead, a "sigmoid" threshold function will be applied. This way, the
3834 gain factors will smoothly approach the threshold value, but never exceed that
3835 value.
3836
3837 @item targetrms, r
3838 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3839 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3840 This means that the maximum local gain factor for each frame is defined
3841 (only) by the frame's highest magnitude sample. This way, the samples can
3842 be amplified as much as possible without exceeding the maximum signal
3843 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3844 Normalizer can also take into account the frame's root mean square,
3845 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3846 determine the power of a time-varying signal. It is therefore considered
3847 that the RMS is a better approximation of the "perceived loudness" than
3848 just looking at the signal's peak magnitude. Consequently, by adjusting all
3849 frames to a constant RMS value, a uniform "perceived loudness" can be
3850 established. If a target RMS value has been specified, a frame's local gain
3851 factor is defined as the factor that would result in exactly that RMS value.
3852 Note, however, that the maximum local gain factor is still restricted by the
3853 frame's highest magnitude sample, in order to prevent clipping.
3854
3855 @item coupling, n
3856 Enable channels coupling. By default is enabled.
3857 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3858 amount. This means the same gain factor will be applied to all channels, i.e.
3859 the maximum possible gain factor is determined by the "loudest" channel.
3860 However, in some recordings, it may happen that the volume of the different
3861 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3862 In this case, this option can be used to disable the channel coupling. This way,
3863 the gain factor will be determined independently for each channel, depending
3864 only on the individual channel's highest magnitude sample. This allows for
3865 harmonizing the volume of the different channels.
3866
3867 @item correctdc, c
3868 Enable DC bias correction. By default is disabled.
3869 An audio signal (in the time domain) is a sequence of sample values.
3870 In the Dynamic Audio Normalizer these sample values are represented in the
3871 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3872 audio signal, or "waveform", should be centered around the zero point.
3873 That means if we calculate the mean value of all samples in a file, or in a
3874 single frame, then the result should be 0.0 or at least very close to that
3875 value. If, however, there is a significant deviation of the mean value from
3876 0.0, in either positive or negative direction, this is referred to as a
3877 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3878 Audio Normalizer provides optional DC bias correction.
3879 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3880 the mean value, or "DC correction" offset, of each input frame and subtract
3881 that value from all of the frame's sample values which ensures those samples
3882 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3883 boundaries, the DC correction offset values will be interpolated smoothly
3884 between neighbouring frames.
3885
3886 @item altboundary, b
3887 Enable alternative boundary mode. By default is disabled.
3888 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3889 around each frame. This includes the preceding frames as well as the
3890 subsequent frames. However, for the "boundary" frames, located at the very
3891 beginning and at the very end of the audio file, not all neighbouring
3892 frames are available. In particular, for the first few frames in the audio
3893 file, the preceding frames are not known. And, similarly, for the last few
3894 frames in the audio file, the subsequent frames are not known. Thus, the
3895 question arises which gain factors should be assumed for the missing frames
3896 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3897 to deal with this situation. The default boundary mode assumes a gain factor
3898 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3899 "fade out" at the beginning and at the end of the input, respectively.
3900
3901 @item compress, s
3902 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3903 By default, the Dynamic Audio Normalizer does not apply "traditional"
3904 compression. This means that signal peaks will not be pruned and thus the
3905 full dynamic range will be retained within each local neighbourhood. However,
3906 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3907 normalization algorithm with a more "traditional" compression.
3908 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3909 (thresholding) function. If (and only if) the compression feature is enabled,
3910 all input frames will be processed by a soft knee thresholding function prior
3911 to the actual normalization process. Put simply, the thresholding function is
3912 going to prune all samples whose magnitude exceeds a certain threshold value.
3913 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3914 value. Instead, the threshold value will be adjusted for each individual
3915 frame.
3916 In general, smaller parameters result in stronger compression, and vice versa.
3917 Values below 3.0 are not recommended, because audible distortion may appear.
3918
3919 @item threshold, t
3920 Set the target threshold value. This specifies the lowest permissible
3921 magnitude level for the audio input which will be normalized.
3922 If input frame volume is above this value frame will be normalized.
3923 Otherwise frame may not be normalized at all. The default value is set
3924 to 0, which means all input frames will be normalized.
3925 This option is mostly useful if digital noise is not wanted to be amplified.
3926 @end table
3927
3928 @subsection Commands
3929
3930 This filter supports the all above options as @ref{commands}.
3931
3932 @section earwax
3933
3934 Make audio easier to listen to on headphones.
3935
3936 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3937 so that when listened to on headphones the stereo image is moved from
3938 inside your head (standard for headphones) to outside and in front of
3939 the listener (standard for speakers).
3940
3941 Ported from SoX.
3942
3943 @section equalizer
3944
3945 Apply a two-pole peaking equalisation (EQ) filter. With this
3946 filter, the signal-level at and around a selected frequency can
3947 be increased or decreased, whilst (unlike bandpass and bandreject
3948 filters) that at all other frequencies is unchanged.
3949
3950 In order to produce complex equalisation curves, this filter can
3951 be given several times, each with a different central frequency.
3952
3953 The filter accepts the following options:
3954
3955 @table @option
3956 @item frequency, f
3957 Set the filter's central frequency in Hz.
3958
3959 @item width_type, t
3960 Set method to specify band-width of filter.
3961 @table @option
3962 @item h
3963 Hz
3964 @item q
3965 Q-Factor
3966 @item o
3967 octave
3968 @item s
3969 slope
3970 @item k
3971 kHz
3972 @end table
3973
3974 @item width, w
3975 Specify the band-width of a filter in width_type units.
3976
3977 @item gain, g
3978 Set the required gain or attenuation in dB.
3979 Beware of clipping when using a positive gain.
3980
3981 @item mix, m
3982 How much to use filtered signal in output. Default is 1.
3983 Range is between 0 and 1.
3984
3985 @item channels, c
3986 Specify which channels to filter, by default all available are filtered.
3987
3988 @item normalize, n
3989 Normalize biquad coefficients, by default is disabled.
3990 Enabling it will normalize magnitude response at DC to 0dB.
3991
3992 @item transform, a
3993 Set transform type of IIR filter.
3994 @table @option
3995 @item di
3996 @item dii
3997 @item tdii
3998 @item latt
3999 @end table
4000
4001 @item precision, r
4002 Set precison of filtering.
4003 @table @option
4004 @item auto
4005 Pick automatic sample format depending on surround filters.
4006 @item s16
4007 Always use signed 16-bit.
4008 @item s32
4009 Always use signed 32-bit.
4010 @item f32
4011 Always use float 32-bit.
4012 @item f64
4013 Always use float 64-bit.
4014 @end table
4015 @end table
4016
4017 @subsection Examples
4018 @itemize
4019 @item
4020 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
4021 @example
4022 equalizer=f=1000:t=h:width=200:g=-10
4023 @end example
4024
4025 @item
4026 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
4027 @example
4028 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
4029 @end example
4030 @end itemize
4031
4032 @subsection Commands
4033
4034 This filter supports the following commands:
4035 @table @option
4036 @item frequency, f
4037 Change equalizer frequency.
4038 Syntax for the command is : "@var{frequency}"
4039
4040 @item width_type, t
4041 Change equalizer width_type.
4042 Syntax for the command is : "@var{width_type}"
4043
4044 @item width, w
4045 Change equalizer width.
4046 Syntax for the command is : "@var{width}"
4047
4048 @item gain, g
4049 Change equalizer gain.
4050 Syntax for the command is : "@var{gain}"
4051
4052 @item mix, m
4053 Change equalizer mix.
4054 Syntax for the command is : "@var{mix}"
4055 @end table
4056
4057 @section extrastereo
4058
4059 Linearly increases the difference between left and right channels which
4060 adds some sort of "live" effect to playback.
4061
4062 The filter accepts the following options:
4063
4064 @table @option
4065 @item m
4066 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
4067 (average of both channels), with 1.0 sound will be unchanged, with
4068 -1.0 left and right channels will be swapped.
4069
4070 @item c
4071 Enable clipping. By default is enabled.
4072 @end table
4073
4074 @subsection Commands
4075
4076 This filter supports the all above options as @ref{commands}.
4077
4078 @section firequalizer
4079 Apply FIR Equalization using arbitrary frequency response.
4080
4081 The filter accepts the following option:
4082
4083 @table @option
4084 @item gain
4085 Set gain curve equation (in dB). The expression can contain variables:
4086 @table @option
4087 @item f
4088 the evaluated frequency
4089 @item sr
4090 sample rate
4091 @item ch
4092 channel number, set to 0 when multichannels evaluation is disabled
4093 @item chid
4094 channel id, see libavutil/channel_layout.h, set to the first channel id when
4095 multichannels evaluation is disabled
4096 @item chs
4097 number of channels
4098 @item chlayout
4099 channel_layout, see libavutil/channel_layout.h
4100
4101 @end table
4102 and functions:
4103 @table @option
4104 @item gain_interpolate(f)
4105 interpolate gain on frequency f based on gain_entry
4106 @item cubic_interpolate(f)
4107 same as gain_interpolate, but smoother
4108 @end table
4109 This option is also available as command. Default is @code{gain_interpolate(f)}.
4110
4111 @item gain_entry
4112 Set gain entry for gain_interpolate function. The expression can
4113 contain functions:
4114 @table @option
4115 @item entry(f, g)
4116 store gain entry at frequency f with value g
4117 @end table
4118 This option is also available as command.
4119
4120 @item delay
4121 Set filter delay in seconds. Higher value means more accurate.
4122 Default is @code{0.01}.
4123
4124 @item accuracy
4125 Set filter accuracy in Hz. Lower value means more accurate.
4126 Default is @code{5}.
4127
4128 @item wfunc
4129 Set window function. Acceptable values are:
4130 @table @option
4131 @item rectangular
4132 rectangular window, useful when gain curve is already smooth
4133 @item hann
4134 hann window (default)
4135 @item hamming
4136 hamming window
4137 @item blackman
4138 blackman window
4139 @item nuttall3
4140 3-terms continuous 1st derivative nuttall window
4141 @item mnuttall3
4142 minimum 3-terms discontinuous nuttall window
4143 @item nuttall
4144 4-terms continuous 1st derivative nuttall window
4145 @item bnuttall
4146 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
4147 @item bharris
4148 blackman-harris window
4149 @item tukey
4150 tukey window
4151 @end table
4152
4153 @item fixed
4154 If enabled, use fixed number of audio samples. This improves speed when
4155 filtering with large delay. Default is disabled.
4156
4157 @item multi
4158 Enable multichannels evaluation on gain. Default is disabled.
4159
4160 @item zero_phase
4161 Enable zero phase mode by subtracting timestamp to compensate delay.
4162 Default is disabled.
4163
4164 @item scale
4165 Set scale used by gain. Acceptable values are:
4166 @table @option
4167 @item linlin
4168 linear frequency, linear gain
4169 @item linlog
4170 linear frequency, logarithmic (in dB) gain (default)
4171 @item loglin
4172 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
4173 @item loglog
4174 logarithmic frequency, logarithmic gain
4175 @end table
4176
4177 @item dumpfile
4178 Set file for dumping, suitable for gnuplot.
4179
4180 @item dumpscale
4181 Set scale for dumpfile. Acceptable values are same with scale option.
4182 Default is linlog.
4183
4184 @item fft2
4185 Enable 2-channel convolution using complex FFT. This improves speed significantly.
4186 Default is disabled.
4187
4188 @item min_phase
4189 Enable minimum phase impulse response. Default is disabled.
4190 @end table
4191
4192 @subsection Examples
4193 @itemize
4194 @item
4195 lowpass at 1000 Hz:
4196 @example
4197 firequalizer=gain='if(lt(f,1000), 0, -INF)'
4198 @end example
4199 @item
4200 lowpass at 1000 Hz with gain_entry:
4201 @example
4202 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
4203 @end example
4204 @item
4205 custom equalization:
4206 @example
4207 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
4208 @end example
4209 @item
4210 higher delay with zero phase to compensate delay:
4211 @example
4212 firequalizer=delay=0.1:fixed=on:zero_phase=on
4213 @end example
4214 @item
4215 lowpass on left channel, highpass on right channel:
4216 @example
4217 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
4218 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
4219 @end example
4220 @end itemize
4221
4222 @section flanger
4223 Apply a flanging effect to the audio.
4224
4225 The filter accepts the following options:
4226
4227 @table @option
4228 @item delay
4229 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
4230
4231 @item depth
4232 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
4233
4234 @item regen
4235 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
4236 Default value is 0.
4237
4238 @item width
4239 Set percentage of delayed signal mixed with original. Range from 0 to 100.
4240 Default value is 71.
4241
4242 @item speed
4243 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
4244
4245 @item shape
4246 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
4247 Default value is @var{sinusoidal}.
4248
4249 @item phase
4250 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
4251 Default value is 25.
4252
4253 @item interp
4254 Set delay-line interpolation, @var{linear} or @var{quadratic}.
4255 Default is @var{linear}.
4256 @end table
4257
4258 @section haas
4259 Apply Haas effect to audio.
4260
4261 Note that this makes most sense to apply on mono signals.
4262 With this filter applied to mono signals it give some directionality and
4263 stretches its stereo image.
4264
4265 The filter accepts the following options:
4266
4267 @table @option
4268 @item level_in
4269 Set input level. By default is @var{1}, or 0dB
4270
4271 @item level_out
4272 Set output level. By default is @var{1}, or 0dB.
4273
4274 @item side_gain
4275 Set gain applied to side part of signal. By default is @var{1}.
4276
4277 @item middle_source
4278 Set kind of middle source. Can be one of the following:
4279
4280 @table @samp
4281 @item left
4282 Pick left channel.
4283
4284 @item right
4285 Pick right channel.
4286
4287 @item mid
4288 Pick middle part signal of stereo image.
4289
4290 @item side
4291 Pick side part signal of stereo image.
4292 @end table
4293
4294 @item middle_phase
4295 Change middle phase. By default is disabled.
4296
4297 @item left_delay
4298 Set left channel delay. By default is @var{2.05} milliseconds.
4299
4300 @item left_balance
4301 Set left channel balance. By default is @var{-1}.
4302
4303 @item left_gain
4304 Set left channel gain. By default is @var{1}.
4305
4306 @item left_phase
4307 Change left phase. By default is disabled.
4308
4309 @item right_delay
4310 Set right channel delay. By defaults is @var{2.12} milliseconds.
4311
4312 @item right_balance
4313 Set right channel balance. By default is @var{1}.
4314
4315 @item right_gain
4316 Set right channel gain. By default is @var{1}.
4317
4318 @item right_phase
4319 Change right phase. By default is enabled.
4320 @end table
4321
4322 @section hdcd
4323
4324 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
4325 embedded HDCD codes is expanded into a 20-bit PCM stream.
4326
4327 The filter supports the Peak Extend and Low-level Gain Adjustment features
4328 of HDCD, and detects the Transient Filter flag.
4329
4330 @example
4331 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
4332 @end example
4333
4334 When using the filter with wav, note the default encoding for wav is 16-bit,
4335 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
4336 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
4337 @example
4338 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
4339 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
4340 @end example
4341
4342 The filter accepts the following options:
4343
4344 @table @option
4345 @item disable_autoconvert
4346 Disable any automatic format conversion or resampling in the filter graph.
4347
4348 @item process_stereo
4349 Process the stereo channels together. If target_gain does not match between
4350 channels, consider it invalid and use the last valid target_gain.
4351
4352 @item cdt_ms
4353 Set the code detect timer period in ms.
4354
4355 @item force_pe
4356 Always extend peaks above -3dBFS even if PE isn't signaled.
4357
4358 @item analyze_mode
4359 Replace audio with a solid tone and adjust the amplitude to signal some
4360 specific aspect of the decoding process. The output file can be loaded in
4361 an audio editor alongside the original to aid analysis.
4362
4363 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
4364
4365 Modes are:
4366 @table @samp
4367 @item 0, off
4368 Disabled
4369 @item 1, lle
4370 Gain adjustment level at each sample
4371 @item 2, pe
4372 Samples where peak extend occurs
4373 @item 3, cdt
4374 Samples where the code detect timer is active
4375 @item 4, tgm
4376 Samples where the target gain does not match between channels
4377 @end table
4378 @end table
4379
4380 @section headphone
4381
4382 Apply head-related transfer functions (HRTFs) to create virtual
4383 loudspeakers around the user for binaural listening via headphones.
4384 The HRIRs are provided via additional streams, for each channel
4385 one stereo input stream is needed.
4386
4387 The filter accepts the following options:
4388
4389 @table @option
4390 @item map
4391 Set mapping of input streams for convolution.
4392 The argument is a '|'-separated list of channel names in order as they
4393 are given as additional stream inputs for filter.
4394 This also specify number of input streams. Number of input streams
4395 must be not less than number of channels in first stream plus one.
4396
4397 @item gain
4398 Set gain applied to audio. Value is in dB. Default is 0.
4399
4400 @item type
4401 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4402 processing audio in time domain which is slow.
4403 @var{freq} is processing audio in frequency domain which is fast.
4404 Default is @var{freq}.
4405
4406 @item lfe
4407 Set custom gain for LFE channels. Value is in dB. Default is 0.
4408
4409 @item size
4410 Set size of frame in number of samples which will be processed at once.
4411 Default value is @var{1024}. Allowed range is from 1024 to 96000.
4412
4413 @item hrir
4414 Set format of hrir stream.
4415 Default value is @var{stereo}. Alternative value is @var{multich}.
4416 If value is set to @var{stereo}, number of additional streams should
4417 be greater or equal to number of input channels in first input stream.
4418 Also each additional stream should have stereo number of channels.
4419 If value is set to @var{multich}, number of additional streams should
4420 be exactly one. Also number of input channels of additional stream
4421 should be equal or greater than twice number of channels of first input
4422 stream.
4423 @end table
4424
4425 @subsection Examples
4426
4427 @itemize
4428 @item
4429 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4430 each amovie filter use stereo file with IR coefficients as input.
4431 The files give coefficients for each position of virtual loudspeaker:
4432 @example
4433 ffmpeg -i input.wav
4434 -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"
4435 output.wav
4436 @end example
4437
4438 @item
4439 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4440 but now in @var{multich} @var{hrir} format.
4441 @example
4442 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"
4443 output.wav
4444 @end example
4445 @end itemize
4446
4447 @section highpass
4448
4449 Apply a high-pass filter with 3dB point frequency.
4450 The filter can be either single-pole, or double-pole (the default).
4451 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4452
4453 The filter accepts the following options:
4454
4455 @table @option
4456 @item frequency, f
4457 Set frequency in Hz. Default is 3000.
4458
4459 @item poles, p
4460 Set number of poles. Default is 2.
4461
4462 @item width_type, t
4463 Set method to specify band-width of filter.
4464 @table @option
4465 @item h
4466 Hz
4467 @item q
4468 Q-Factor
4469 @item o
4470 octave
4471 @item s
4472 slope
4473 @item k
4474 kHz
4475 @end table
4476
4477 @item width, w
4478 Specify the band-width of a filter in width_type units.
4479 Applies only to double-pole filter.
4480 The default is 0.707q and gives a Butterworth response.
4481
4482 @item mix, m
4483 How much to use filtered signal in output. Default is 1.
4484 Range is between 0 and 1.
4485
4486 @item channels, c
4487 Specify which channels to filter, by default all available are filtered.
4488
4489 @item normalize, n
4490 Normalize biquad coefficients, by default is disabled.
4491 Enabling it will normalize magnitude response at DC to 0dB.
4492
4493 @item transform, a
4494 Set transform type of IIR filter.
4495 @table @option
4496 @item di
4497 @item dii
4498 @item tdii
4499 @item latt
4500 @end table
4501
4502 @item precision, r
4503 Set precison of filtering.
4504 @table @option
4505 @item auto
4506 Pick automatic sample format depending on surround filters.
4507 @item s16
4508 Always use signed 16-bit.
4509 @item s32
4510 Always use signed 32-bit.
4511 @item f32
4512 Always use float 32-bit.
4513 @item f64
4514 Always use float 64-bit.
4515 @end table
4516 @end table
4517
4518 @subsection Commands
4519
4520 This filter supports the following commands:
4521 @table @option
4522 @item frequency, f
4523 Change highpass frequency.
4524 Syntax for the command is : "@var{frequency}"
4525
4526 @item width_type, t
4527 Change highpass width_type.
4528 Syntax for the command is : "@var{width_type}"
4529
4530 @item width, w
4531 Change highpass width.
4532 Syntax for the command is : "@var{width}"
4533
4534 @item mix, m
4535 Change highpass mix.
4536 Syntax for the command is : "@var{mix}"
4537 @end table
4538
4539 @section join
4540
4541 Join multiple input streams into one multi-channel stream.
4542
4543 It accepts the following parameters:
4544 @table @option
4545
4546 @item inputs
4547 The number of input streams. It defaults to 2.
4548
4549 @item channel_layout
4550 The desired output channel layout. It defaults to stereo.
4551
4552 @item map
4553 Map channels from inputs to output. The argument is a '|'-separated list of
4554 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
4555 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
4556 can be either the name of the input channel (e.g. FL for front left) or its
4557 index in the specified input stream. @var{out_channel} is the name of the output
4558 channel.
4559 @end table
4560
4561 The filter will attempt to guess the mappings when they are not specified
4562 explicitly. It does so by first trying to find an unused matching input channel
4563 and if that fails it picks the first unused input channel.
4564
4565 Join 3 inputs (with properly set channel layouts):
4566 @example
4567 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
4568 @end example
4569
4570 Build a 5.1 output from 6 single-channel streams:
4571 @example
4572 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
4573 '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'
4574 out
4575 @end example
4576
4577 @section ladspa
4578
4579 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
4580
4581 To enable compilation of this filter you need to configure FFmpeg with
4582 @code{--enable-ladspa}.
4583
4584 @table @option
4585 @item file, f
4586 Specifies the name of LADSPA plugin library to load. If the environment
4587 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
4588 each one of the directories specified by the colon separated list in
4589 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
4590 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
4591 @file{/usr/lib/ladspa/}.
4592
4593 @item plugin, p
4594 Specifies the plugin within the library. Some libraries contain only
4595 one plugin, but others contain many of them. If this is not set filter
4596 will list all available plugins within the specified library.
4597
4598 @item controls, c
4599 Set the '|' separated list of controls which are zero or more floating point
4600 values that determine the behavior of the loaded plugin (for example delay,
4601 threshold or gain).
4602 Controls need to be defined using the following syntax:
4603 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
4604 @var{valuei} is the value set on the @var{i}-th control.
4605 Alternatively they can be also defined using the following syntax:
4606 @var{value0}|@var{value1}|@var{value2}|..., where
4607 @var{valuei} is the value set on the @var{i}-th control.
4608 If @option{controls} is set to @code{help}, all available controls and
4609 their valid ranges are printed.
4610
4611 @item sample_rate, s
4612 Specify the sample rate, default to 44100. Only used if plugin have
4613 zero inputs.
4614
4615 @item nb_samples, n
4616 Set the number of samples per channel per each output frame, default
4617 is 1024. Only used if plugin have zero inputs.
4618
4619 @item duration, d
4620 Set the minimum duration of the sourced audio. See
4621 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4622 for the accepted syntax.
4623 Note that the resulting duration may be greater than the specified duration,
4624 as the generated audio is always cut at the end of a complete frame.
4625 If not specified, or the expressed duration is negative, the audio is
4626 supposed to be generated forever.
4627 Only used if plugin have zero inputs.
4628
4629 @item latency, l
4630 Enable latency compensation, by default is disabled.
4631 Only used if plugin have inputs.
4632 @end table
4633
4634 @subsection Examples
4635
4636 @itemize
4637 @item
4638 List all available plugins within amp (LADSPA example plugin) library:
4639 @example
4640 ladspa=file=amp
4641 @end example
4642
4643 @item
4644 List all available controls and their valid ranges for @code{vcf_notch}
4645 plugin from @code{VCF} library:
4646 @example
4647 ladspa=f=vcf:p=vcf_notch:c=help
4648 @end example
4649
4650 @item
4651 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4652 plugin library:
4653 @example
4654 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4655 @end example
4656
4657 @item
4658 Add reverberation to the audio using TAP-plugins
4659 (Tom's Audio Processing plugins):
4660 @example
4661 ladspa=file=tap_reverb:tap_reverb
4662 @end example
4663
4664 @item
4665 Generate white noise, with 0.2 amplitude:
4666 @example
4667 ladspa=file=cmt:noise_source_white:c=c0=.2
4668 @end example
4669
4670 @item
4671 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4672 @code{C* Audio Plugin Suite} (CAPS) library:
4673 @example
4674 ladspa=file=caps:Click:c=c1=20'
4675 @end example
4676
4677 @item
4678 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4679 @example
4680 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4681 @end example
4682
4683 @item
4684 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4685 @code{SWH Plugins} collection:
4686 @example
4687 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4688 @end example
4689
4690 @item
4691 Attenuate low frequencies using Multiband EQ from Steve Harris
4692 @code{SWH Plugins} collection:
4693 @example
4694 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4695 @end example
4696
4697 @item
4698 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4699 (CAPS) library:
4700 @example
4701 ladspa=caps:Narrower
4702 @end example
4703
4704 @item
4705 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4706 @example
4707 ladspa=caps:White:.2
4708 @end example
4709
4710 @item
4711 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4712 @example
4713 ladspa=caps:Fractal:c=c1=1
4714 @end example
4715
4716 @item
4717 Dynamic volume normalization using @code{VLevel} plugin:
4718 @example
4719 ladspa=vlevel-ladspa:vlevel_mono
4720 @end example
4721 @end itemize
4722
4723 @subsection Commands
4724
4725 This filter supports the following commands:
4726 @table @option
4727 @item cN
4728 Modify the @var{N}-th control value.
4729
4730 If the specified value is not valid, it is ignored and prior one is kept.
4731 @end table
4732
4733 @section loudnorm
4734
4735 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4736 Support for both single pass (livestreams, files) and double pass (files) modes.
4737 This algorithm can target IL, LRA, and maximum true peak. In dynamic mode, to accurately
4738 detect true peaks, the audio stream will be upsampled to 192 kHz.
4739 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4740
4741 The filter accepts the following options:
4742
4743 @table @option
4744 @item I, i
4745 Set integrated loudness target.
4746 Range is -70.0 - -5.0. Default value is -24.0.
4747
4748 @item LRA, lra
4749 Set loudness range target.
4750 Range is 1.0 - 20.0. Default value is 7.0.
4751
4752 @item TP, tp
4753 Set maximum true peak.
4754 Range is -9.0 - +0.0. Default value is -2.0.
4755
4756 @item measured_I, measured_i
4757 Measured IL of input file.
4758 Range is -99.0 - +0.0.
4759
4760 @item measured_LRA, measured_lra
4761 Measured LRA of input file.
4762 Range is  0.0 - 99.0.
4763
4764 @item measured_TP, measured_tp
4765 Measured true peak of input file.
4766 Range is  -99.0 - +99.0.
4767
4768 @item measured_thresh
4769 Measured threshold of input file.
4770 Range is -99.0 - +0.0.
4771
4772 @item offset
4773 Set offset gain. Gain is applied before the true-peak limiter.
4774 Range is  -99.0 - +99.0. Default is +0.0.
4775
4776 @item linear
4777 Normalize by linearly scaling the source audio.
4778 @code{measured_I}, @code{measured_LRA}, @code{measured_TP},
4779 and @code{measured_thresh} must all be specified. Target LRA shouldn't
4780 be lower than source LRA and the change in integrated loudness shouldn't
4781 result in a true peak which exceeds the target TP. If any of these
4782 conditions aren't met, normalization mode will revert to @var{dynamic}.
4783 Options are @code{true} or @code{false}. Default is @code{true}.
4784
4785 @item dual_mono
4786 Treat mono input files as "dual-mono". If a mono file is intended for playback
4787 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4788 If set to @code{true}, this option will compensate for this effect.
4789 Multi-channel input files are not affected by this option.
4790 Options are true or false. Default is false.
4791
4792 @item print_format
4793 Set print format for stats. Options are summary, json, or none.
4794 Default value is none.
4795 @end table
4796
4797 @section lowpass
4798
4799 Apply a low-pass filter with 3dB point frequency.
4800 The filter can be either single-pole or double-pole (the default).
4801 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4802
4803 The filter accepts the following options:
4804
4805 @table @option
4806 @item frequency, f
4807 Set frequency in Hz. Default is 500.
4808
4809 @item poles, p
4810 Set number of poles. Default is 2.
4811
4812 @item width_type, t
4813 Set method to specify band-width of filter.
4814 @table @option
4815 @item h
4816 Hz
4817 @item q
4818 Q-Factor
4819 @item o
4820 octave
4821 @item s
4822 slope
4823 @item k
4824 kHz
4825 @end table
4826
4827 @item width, w
4828 Specify the band-width of a filter in width_type units.
4829 Applies only to double-pole filter.
4830 The default is 0.707q and gives a Butterworth response.
4831
4832 @item mix, m
4833 How much to use filtered signal in output. Default is 1.
4834 Range is between 0 and 1.
4835
4836 @item channels, c
4837 Specify which channels to filter, by default all available are filtered.
4838
4839 @item normalize, n
4840 Normalize biquad coefficients, by default is disabled.
4841 Enabling it will normalize magnitude response at DC to 0dB.
4842
4843 @item transform, a
4844 Set transform type of IIR filter.
4845 @table @option
4846 @item di
4847 @item dii
4848 @item tdii
4849 @item latt
4850 @end table
4851
4852 @item precision, r
4853 Set precison of filtering.
4854 @table @option
4855 @item auto
4856 Pick automatic sample format depending on surround filters.
4857 @item s16
4858 Always use signed 16-bit.
4859 @item s32
4860 Always use signed 32-bit.
4861 @item f32
4862 Always use float 32-bit.
4863 @item f64
4864 Always use float 64-bit.
4865 @end table
4866 @end table
4867
4868 @subsection Examples
4869 @itemize
4870 @item
4871 Lowpass only LFE channel, it LFE is not present it does nothing:
4872 @example
4873 lowpass=c=LFE
4874 @end example
4875 @end itemize
4876
4877 @subsection Commands
4878
4879 This filter supports the following commands:
4880 @table @option
4881 @item frequency, f
4882 Change lowpass frequency.
4883 Syntax for the command is : "@var{frequency}"
4884
4885 @item width_type, t
4886 Change lowpass width_type.
4887 Syntax for the command is : "@var{width_type}"
4888
4889 @item width, w
4890 Change lowpass width.
4891 Syntax for the command is : "@var{width}"
4892
4893 @item mix, m
4894 Change lowpass mix.
4895 Syntax for the command is : "@var{mix}"
4896 @end table
4897
4898 @section lv2
4899
4900 Load a LV2 (LADSPA Version 2) plugin.
4901
4902 To enable compilation of this filter you need to configure FFmpeg with
4903 @code{--enable-lv2}.
4904
4905 @table @option
4906 @item plugin, p
4907 Specifies the plugin URI. You may need to escape ':'.
4908
4909 @item controls, c
4910 Set the '|' separated list of controls which are zero or more floating point
4911 values that determine the behavior of the loaded plugin (for example delay,
4912 threshold or gain).
4913 If @option{controls} is set to @code{help}, all available controls and
4914 their valid ranges are printed.
4915
4916 @item sample_rate, s
4917 Specify the sample rate, default to 44100. Only used if plugin have
4918 zero inputs.
4919
4920 @item nb_samples, n
4921 Set the number of samples per channel per each output frame, default
4922 is 1024. Only used if plugin have zero inputs.
4923
4924 @item duration, d
4925 Set the minimum duration of the sourced audio. See
4926 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4927 for the accepted syntax.
4928 Note that the resulting duration may be greater than the specified duration,
4929 as the generated audio is always cut at the end of a complete frame.
4930 If not specified, or the expressed duration is negative, the audio is
4931 supposed to be generated forever.
4932 Only used if plugin have zero inputs.
4933 @end table
4934
4935 @subsection Examples
4936
4937 @itemize
4938 @item
4939 Apply bass enhancer plugin from Calf:
4940 @example
4941 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4942 @end example
4943
4944 @item
4945 Apply vinyl plugin from Calf:
4946 @example
4947 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4948 @end example
4949
4950 @item
4951 Apply bit crusher plugin from ArtyFX:
4952 @example
4953 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4954 @end example
4955 @end itemize
4956
4957 @section mcompand
4958 Multiband Compress or expand the audio's dynamic range.
4959
4960 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4961 This is akin to the crossover of a loudspeaker, and results in flat frequency
4962 response when absent compander action.
4963
4964 It accepts the following parameters:
4965
4966 @table @option
4967 @item args
4968 This option syntax is:
4969 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4970 For explanation of each item refer to compand filter documentation.
4971 @end table
4972
4973 @anchor{pan}
4974 @section pan
4975
4976 Mix channels with specific gain levels. The filter accepts the output
4977 channel layout followed by a set of channels definitions.
4978
4979 This filter is also designed to efficiently remap the channels of an audio
4980 stream.
4981
4982 The filter accepts parameters of the form:
4983 "@var{l}|@var{outdef}|@var{outdef}|..."
4984
4985 @table @option
4986 @item l
4987 output channel layout or number of channels
4988
4989 @item outdef
4990 output channel specification, of the form:
4991 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4992
4993 @item out_name
4994 output channel to define, either a channel name (FL, FR, etc.) or a channel
4995 number (c0, c1, etc.)
4996
4997 @item gain
4998 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4999
5000 @item in_name
5001 input channel to use, see out_name for details; it is not possible to mix
5002 named and numbered input channels
5003 @end table
5004
5005 If the `=' in a channel specification is replaced by `<', then the gains for
5006 that specification will be renormalized so that the total is 1, thus
5007 avoiding clipping noise.
5008
5009 @subsection Mixing examples
5010
5011 For example, if you want to down-mix from stereo to mono, but with a bigger
5012 factor for the left channel:
5013 @example
5014 pan=1c|c0=0.9*c0+0.1*c1
5015 @end example
5016
5017 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
5018 7-channels surround:
5019 @example
5020 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
5021 @end example
5022
5023 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
5024 that should be preferred (see "-ac" option) unless you have very specific
5025 needs.
5026
5027 @subsection Remapping examples
5028
5029 The channel remapping will be effective if, and only if:
5030
5031 @itemize
5032 @item gain coefficients are zeroes or ones,
5033 @item only one input per channel output,
5034 @end itemize
5035
5036 If all these conditions are satisfied, the filter will notify the user ("Pure
5037 channel mapping detected"), and use an optimized and lossless method to do the
5038 remapping.
5039
5040 For example, if you have a 5.1 source and want a stereo audio stream by
5041 dropping the extra channels:
5042 @example
5043 pan="stereo| c0=FL | c1=FR"
5044 @end example
5045
5046 Given the same source, you can also switch front left and front right channels
5047 and keep the input channel layout:
5048 @example
5049 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
5050 @end example
5051
5052 If the input is a stereo audio stream, you can mute the front left channel (and
5053 still keep the stereo channel layout) with:
5054 @example
5055 pan="stereo|c1=c1"
5056 @end example
5057
5058 Still with a stereo audio stream input, you can copy the right channel in both
5059 front left and right:
5060 @example
5061 pan="stereo| c0=FR | c1=FR"
5062 @end example
5063
5064 @section replaygain
5065
5066 ReplayGain scanner filter. This filter takes an audio stream as an input and
5067 outputs it unchanged.
5068 At end of filtering it displays @code{track_gain} and @code{track_peak}.
5069
5070 @section resample
5071
5072 Convert the audio sample format, sample rate and channel layout. It is
5073 not meant to be used directly.
5074
5075 @section rubberband
5076 Apply time-stretching and pitch-shifting with librubberband.
5077
5078 To enable compilation of this filter, you need to configure FFmpeg with
5079 @code{--enable-librubberband}.
5080
5081 The filter accepts the following options:
5082
5083 @table @option
5084 @item tempo
5085 Set tempo scale factor.
5086
5087 @item pitch
5088 Set pitch scale factor.
5089
5090 @item transients
5091 Set transients detector.
5092 Possible values are:
5093 @table @var
5094 @item crisp
5095 @item mixed
5096 @item smooth
5097 @end table
5098
5099 @item detector
5100 Set detector.
5101 Possible values are:
5102 @table @var
5103 @item compound
5104 @item percussive
5105 @item soft
5106 @end table
5107
5108 @item phase
5109 Set phase.
5110 Possible values are:
5111 @table @var
5112 @item laminar
5113 @item independent
5114 @end table
5115
5116 @item window
5117 Set processing window size.
5118 Possible values are:
5119 @table @var
5120 @item standard
5121 @item short
5122 @item long
5123 @end table
5124
5125 @item smoothing
5126 Set smoothing.
5127 Possible values are:
5128 @table @var
5129 @item off
5130 @item on
5131 @end table
5132
5133 @item formant
5134 Enable formant preservation when shift pitching.
5135 Possible values are:
5136 @table @var
5137 @item shifted
5138 @item preserved
5139 @end table
5140
5141 @item pitchq
5142 Set pitch quality.
5143 Possible values are:
5144 @table @var
5145 @item quality
5146 @item speed
5147 @item consistency
5148 @end table
5149
5150 @item channels
5151 Set channels.
5152 Possible values are:
5153 @table @var
5154 @item apart
5155 @item together
5156 @end table
5157 @end table
5158
5159 @subsection Commands
5160
5161 This filter supports the following commands:
5162 @table @option
5163 @item tempo
5164 Change filter tempo scale factor.
5165 Syntax for the command is : "@var{tempo}"
5166
5167 @item pitch
5168 Change filter pitch scale factor.
5169 Syntax for the command is : "@var{pitch}"
5170 @end table
5171
5172 @section sidechaincompress
5173
5174 This filter acts like normal compressor but has the ability to compress
5175 detected signal using second input signal.
5176 It needs two input streams and returns one output stream.
5177 First input stream will be processed depending on second stream signal.
5178 The filtered signal then can be filtered with other filters in later stages of
5179 processing. See @ref{pan} and @ref{amerge} filter.
5180
5181 The filter accepts the following options:
5182
5183 @table @option
5184 @item level_in
5185 Set input gain. Default is 1. Range is between 0.015625 and 64.
5186
5187 @item mode
5188 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
5189 Default is @code{downward}.
5190
5191 @item threshold
5192 If a signal of second stream raises above this level it will affect the gain
5193 reduction of first stream.
5194 By default is 0.125. Range is between 0.00097563 and 1.
5195
5196 @item ratio
5197 Set a ratio about which the signal is reduced. 1:2 means that if the level
5198 raised 4dB above the threshold, it will be only 2dB above after the reduction.
5199 Default is 2. Range is between 1 and 20.
5200
5201 @item attack
5202 Amount of milliseconds the signal has to rise above the threshold before gain
5203 reduction starts. Default is 20. Range is between 0.01 and 2000.
5204
5205 @item release
5206 Amount of milliseconds the signal has to fall below the threshold before
5207 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
5208
5209 @item makeup
5210 Set the amount by how much signal will be amplified after processing.
5211 Default is 1. Range is from 1 to 64.
5212
5213 @item knee
5214 Curve the sharp knee around the threshold to enter gain reduction more softly.
5215 Default is 2.82843. Range is between 1 and 8.
5216
5217 @item link
5218 Choose if the @code{average} level between all channels of side-chain stream
5219 or the louder(@code{maximum}) channel of side-chain stream affects the
5220 reduction. Default is @code{average}.
5221
5222 @item detection
5223 Should the exact signal be taken in case of @code{peak} or an RMS one in case
5224 of @code{rms}. Default is @code{rms} which is mainly smoother.
5225
5226 @item level_sc
5227 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
5228
5229 @item mix
5230 How much to use compressed signal in output. Default is 1.
5231 Range is between 0 and 1.
5232 @end table
5233
5234 @subsection Commands
5235
5236 This filter supports the all above options as @ref{commands}.
5237
5238 @subsection Examples
5239
5240 @itemize
5241 @item
5242 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
5243 depending on the signal of 2nd input and later compressed signal to be
5244 merged with 2nd input:
5245 @example
5246 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
5247 @end example
5248 @end itemize
5249
5250 @section sidechaingate
5251
5252 A sidechain gate acts like a normal (wideband) gate but has the ability to
5253 filter the detected signal before sending it to the gain reduction stage.
5254 Normally a gate uses the full range signal to detect a level above the
5255 threshold.
5256 For example: If you cut all lower frequencies from your sidechain signal
5257 the gate will decrease the volume of your track only if not enough highs
5258 appear. With this technique you are able to reduce the resonation of a
5259 natural drum or remove "rumbling" of muted strokes from a heavily distorted
5260 guitar.
5261 It needs two input streams and returns one output stream.
5262 First input stream will be processed depending on second stream signal.
5263
5264 The filter accepts the following options:
5265
5266 @table @option
5267 @item level_in
5268 Set input level before filtering.
5269 Default is 1. Allowed range is from 0.015625 to 64.
5270
5271 @item mode
5272 Set the mode of operation. Can be @code{upward} or @code{downward}.
5273 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
5274 will be amplified, expanding dynamic range in upward direction.
5275 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
5276
5277 @item range
5278 Set the level of gain reduction when the signal is below the threshold.
5279 Default is 0.06125. Allowed range is from 0 to 1.
5280 Setting this to 0 disables reduction and then filter behaves like expander.
5281
5282 @item threshold
5283 If a signal rises above this level the gain reduction is released.
5284 Default is 0.125. Allowed range is from 0 to 1.
5285
5286 @item ratio
5287 Set a ratio about which the signal is reduced.
5288 Default is 2. Allowed range is from 1 to 9000.
5289
5290 @item attack
5291 Amount of milliseconds the signal has to rise above the threshold before gain
5292 reduction stops.
5293 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
5294
5295 @item release
5296 Amount of milliseconds the signal has to fall below the threshold before the
5297 reduction is increased again. Default is 250 milliseconds.
5298 Allowed range is from 0.01 to 9000.
5299
5300 @item makeup
5301 Set amount of amplification of signal after processing.
5302 Default is 1. Allowed range is from 1 to 64.
5303
5304 @item knee
5305 Curve the sharp knee around the threshold to enter gain reduction more softly.
5306 Default is 2.828427125. Allowed range is from 1 to 8.
5307
5308 @item detection
5309 Choose if exact signal should be taken for detection or an RMS like one.
5310 Default is rms. Can be peak or rms.
5311
5312 @item link
5313 Choose if the average level between all channels or the louder channel affects
5314 the reduction.
5315 Default is average. Can be average or maximum.
5316
5317 @item level_sc
5318 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
5319 @end table
5320
5321 @subsection Commands
5322
5323 This filter supports the all above options as @ref{commands}.
5324
5325 @section silencedetect
5326
5327 Detect silence in an audio stream.
5328
5329 This filter logs a message when it detects that the input audio volume is less
5330 or equal to a noise tolerance value for a duration greater or equal to the
5331 minimum detected noise duration.
5332
5333 The printed times and duration are expressed in seconds. The
5334 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
5335 is set on the first frame whose timestamp equals or exceeds the detection
5336 duration and it contains the timestamp of the first frame of the silence.
5337
5338 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
5339 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
5340 keys are set on the first frame after the silence. If @option{mono} is
5341 enabled, and each channel is evaluated separately, the @code{.X}
5342 suffixed keys are used, and @code{X} corresponds to the channel number.
5343
5344 The filter accepts the following options:
5345
5346 @table @option
5347 @item noise, n
5348 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
5349 specified value) or amplitude ratio. Default is -60dB, or 0.001.
5350
5351 @item duration, d
5352 Set silence duration until notification (default is 2 seconds). See
5353 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5354 for the accepted syntax.
5355
5356 @item mono, m
5357 Process each channel separately, instead of combined. By default is disabled.
5358 @end table
5359
5360 @subsection Examples
5361
5362 @itemize
5363 @item
5364 Detect 5 seconds of silence with -50dB noise tolerance:
5365 @example
5366 silencedetect=n=-50dB:d=5
5367 @end example
5368
5369 @item
5370 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
5371 tolerance in @file{silence.mp3}:
5372 @example
5373 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
5374 @end example
5375 @end itemize
5376
5377 @section silenceremove
5378
5379 Remove silence from the beginning, middle or end of the audio.
5380
5381 The filter accepts the following options:
5382
5383 @table @option
5384 @item start_periods
5385 This value is used to indicate if audio should be trimmed at beginning of
5386 the audio. A value of zero indicates no silence should be trimmed from the
5387 beginning. When specifying a non-zero value, it trims audio up until it
5388 finds non-silence. Normally, when trimming silence from beginning of audio
5389 the @var{start_periods} will be @code{1} but it can be increased to higher
5390 values to trim all audio up to specific count of non-silence periods.
5391 Default value is @code{0}.
5392
5393 @item start_duration
5394 Specify the amount of time that non-silence must be detected before it stops
5395 trimming audio. By increasing the duration, bursts of noises can be treated
5396 as silence and trimmed off. Default value is @code{0}.
5397
5398 @item start_threshold
5399 This indicates what sample value should be treated as silence. For digital
5400 audio, a value of @code{0} may be fine but for audio recorded from analog,
5401 you may wish to increase the value to account for background noise.
5402 Can be specified in dB (in case "dB" is appended to the specified value)
5403 or amplitude ratio. Default value is @code{0}.
5404
5405 @item start_silence
5406 Specify max duration of silence at beginning that will be kept after
5407 trimming. Default is 0, which is equal to trimming all samples detected
5408 as silence.
5409
5410 @item start_mode
5411 Specify mode of detection of silence end in start of multi-channel audio.
5412 Can be @var{any} or @var{all}. Default is @var{any}.
5413 With @var{any}, any sample that is detected as non-silence will cause
5414 stopped trimming of silence.
5415 With @var{all}, only if all channels are detected as non-silence will cause
5416 stopped trimming of silence.
5417
5418 @item stop_periods
5419 Set the count for trimming silence from the end of audio.
5420 To remove silence from the middle of a file, specify a @var{stop_periods}
5421 that is negative. This value is then treated as a positive value and is
5422 used to indicate the effect should restart processing as specified by
5423 @var{start_periods}, making it suitable for removing periods of silence
5424 in the middle of the audio.
5425 Default value is @code{0}.
5426
5427 @item stop_duration
5428 Specify a duration of silence that must exist before audio is not copied any
5429 more. By specifying a higher duration, silence that is wanted can be left in
5430 the audio.
5431 Default value is @code{0}.
5432
5433 @item stop_threshold
5434 This is the same as @option{start_threshold} but for trimming silence from
5435 the end of audio.
5436 Can be specified in dB (in case "dB" is appended to the specified value)
5437 or amplitude ratio. Default value is @code{0}.
5438
5439 @item stop_silence
5440 Specify max duration of silence at end that will be kept after
5441 trimming. Default is 0, which is equal to trimming all samples detected
5442 as silence.
5443
5444 @item stop_mode
5445 Specify mode of detection of silence start in end of multi-channel audio.
5446 Can be @var{any} or @var{all}. Default is @var{any}.
5447 With @var{any}, any sample that is detected as non-silence will cause
5448 stopped trimming of silence.
5449 With @var{all}, only if all channels are detected as non-silence will cause
5450 stopped trimming of silence.
5451
5452 @item detection
5453 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
5454 and works better with digital silence which is exactly 0.
5455 Default value is @code{rms}.
5456
5457 @item window
5458 Set duration in number of seconds used to calculate size of window in number
5459 of samples for detecting silence.
5460 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
5461 @end table
5462
5463 @subsection Examples
5464
5465 @itemize
5466 @item
5467 The following example shows how this filter can be used to start a recording
5468 that does not contain the delay at the start which usually occurs between
5469 pressing the record button and the start of the performance:
5470 @example
5471 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
5472 @end example
5473
5474 @item
5475 Trim all silence encountered from beginning to end where there is more than 1
5476 second of silence in audio:
5477 @example
5478 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
5479 @end example
5480
5481 @item
5482 Trim all digital silence samples, using peak detection, from beginning to end
5483 where there is more than 0 samples of digital silence in audio and digital
5484 silence is detected in all channels at same positions in stream:
5485 @example
5486 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
5487 @end example
5488 @end itemize
5489
5490 @section sofalizer
5491
5492 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
5493 loudspeakers around the user for binaural listening via headphones (audio
5494 formats up to 9 channels supported).
5495 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
5496 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
5497 Austrian Academy of Sciences.
5498
5499 To enable compilation of this filter you need to configure FFmpeg with
5500 @code{--enable-libmysofa}.
5501
5502 The filter accepts the following options:
5503
5504 @table @option
5505 @item sofa
5506 Set the SOFA file used for rendering.
5507
5508 @item gain
5509 Set gain applied to audio. Value is in dB. Default is 0.
5510
5511 @item rotation
5512 Set rotation of virtual loudspeakers in deg. Default is 0.
5513
5514 @item elevation
5515 Set elevation of virtual speakers in deg. Default is 0.
5516
5517 @item radius
5518 Set distance in meters between loudspeakers and the listener with near-field
5519 HRTFs. Default is 1.
5520
5521 @item type
5522 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
5523 processing audio in time domain which is slow.
5524 @var{freq} is processing audio in frequency domain which is fast.
5525 Default is @var{freq}.
5526
5527 @item speakers
5528 Set custom positions of virtual loudspeakers. Syntax for this option is:
5529 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
5530 Each virtual loudspeaker is described with short channel name following with
5531 azimuth and elevation in degrees.
5532 Each virtual loudspeaker description is separated by '|'.
5533 For example to override front left and front right channel positions use:
5534 'speakers=FL 45 15|FR 345 15'.
5535 Descriptions with unrecognised channel names are ignored.
5536
5537 @item lfegain
5538 Set custom gain for LFE channels. Value is in dB. Default is 0.
5539
5540 @item framesize
5541 Set custom frame size in number of samples. Default is 1024.
5542 Allowed range is from 1024 to 96000. Only used if option @samp{type}
5543 is set to @var{freq}.
5544
5545 @item normalize
5546 Should all IRs be normalized upon importing SOFA file.
5547 By default is enabled.
5548
5549 @item interpolate
5550 Should nearest IRs be interpolated with neighbor IRs if exact position
5551 does not match. By default is disabled.
5552
5553 @item minphase
5554 Minphase all IRs upon loading of SOFA file. By default is disabled.
5555
5556 @item anglestep
5557 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
5558
5559 @item radstep
5560 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
5561 @end table
5562
5563 @subsection Examples
5564
5565 @itemize
5566 @item
5567 Using ClubFritz6 sofa file:
5568 @example
5569 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
5570 @end example
5571
5572 @item
5573 Using ClubFritz12 sofa file and bigger radius with small rotation:
5574 @example
5575 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
5576 @end example
5577
5578 @item
5579 Similar as above but with custom speaker positions for front left, front right, back left and back right
5580 and also with custom gain:
5581 @example
5582 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
5583 @end example
5584 @end itemize
5585
5586 @section speechnorm
5587 Speech Normalizer.
5588
5589 This filter expands or compresses each half-cycle of audio samples
5590 (local set of samples all above or all below zero and between two nearest zero crossings) depending
5591 on threshold value, so audio reaches target peak value under conditions controlled by below options.
5592
5593 The filter accepts the following options:
5594
5595 @table @option
5596 @item peak, p
5597 Set the expansion target peak value. This specifies the highest allowed absolute amplitude
5598 level for the normalized audio input. Default value is 0.95. Allowed range is from 0.0 to 1.0.
5599
5600 @item expansion, e
5601 Set the maximum expansion factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5602 This option controls maximum local half-cycle of samples expansion. The maximum expansion
5603 would be such that local peak value reaches target peak value but never to surpass it and that
5604 ratio between new and previous peak value does not surpass this option value.
5605
5606 @item compression, c
5607 Set the maximum compression factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5608 This option controls maximum local half-cycle of samples compression. This option is used
5609 only if @option{threshold} option is set to value greater than 0.0, then in such cases
5610 when local peak is lower or same as value set by @option{threshold} all samples belonging to
5611 that peak's half-cycle will be compressed by current compression factor.
5612
5613 @item threshold, t
5614 Set the threshold value. Default value is 0.0. Allowed range is from 0.0 to 1.0.
5615 This option specifies which half-cycles of samples will be compressed and which will be expanded.
5616 Any half-cycle samples with their local peak value below or same as this option value will be
5617 compressed by current compression factor, otherwise, if greater than threshold value they will be
5618 expanded with expansion factor so that it could reach peak target value but never surpass it.
5619
5620 @item raise, r
5621 Set the expansion raising amount per each half-cycle of samples. Default value is 0.001.
5622 Allowed range is from 0.0 to 1.0. This controls how fast expansion factor is raised per
5623 each new half-cycle until it reaches @option{expansion} value.
5624 Setting this options too high may lead to distortions.
5625
5626 @item fall, f
5627 Set the compression raising amount per each half-cycle of samples. Default value is 0.001.
5628 Allowed range is from 0.0 to 1.0. This controls how fast compression factor is raised per
5629 each new half-cycle until it reaches @option{compression} value.
5630
5631 @item channels, h
5632 Specify which channels to filter, by default all available channels are filtered.
5633
5634 @item invert, i
5635 Enable inverted filtering, by default is disabled. This inverts interpretation of @option{threshold}
5636 option. When enabled any half-cycle of samples with their local peak value below or same as
5637 @option{threshold} option will be expanded otherwise it will be compressed.
5638
5639 @item link, l
5640 Link channels when calculating gain applied to each filtered channel sample, by default is disabled.
5641 When disabled each filtered channel gain calculation is independent, otherwise when this option
5642 is enabled the minimum of all possible gains for each filtered channel is used.
5643 @end table
5644
5645 @subsection Commands
5646
5647 This filter supports the all above options as @ref{commands}.
5648
5649 @section stereotools
5650
5651 This filter has some handy utilities to manage stereo signals, for converting
5652 M/S stereo recordings to L/R signal while having control over the parameters
5653 or spreading the stereo image of master track.
5654
5655 The filter accepts the following options:
5656
5657 @table @option
5658 @item level_in
5659 Set input level before filtering for both channels. Defaults is 1.
5660 Allowed range is from 0.015625 to 64.
5661
5662 @item level_out
5663 Set output level after filtering for both channels. Defaults is 1.
5664 Allowed range is from 0.015625 to 64.
5665
5666 @item balance_in
5667 Set input balance between both channels. Default is 0.
5668 Allowed range is from -1 to 1.
5669
5670 @item balance_out
5671 Set output balance between both channels. Default is 0.
5672 Allowed range is from -1 to 1.
5673
5674 @item softclip
5675 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
5676 clipping. Disabled by default.
5677
5678 @item mutel
5679 Mute the left channel. Disabled by default.
5680
5681 @item muter
5682 Mute the right channel. Disabled by default.
5683
5684 @item phasel
5685 Change the phase of the left channel. Disabled by default.
5686
5687 @item phaser
5688 Change the phase of the right channel. Disabled by default.
5689
5690 @item mode
5691 Set stereo mode. Available values are:
5692
5693 @table @samp
5694 @item lr>lr
5695 Left/Right to Left/Right, this is default.
5696
5697 @item lr>ms
5698 Left/Right to Mid/Side.
5699
5700 @item ms>lr
5701 Mid/Side to Left/Right.
5702
5703 @item lr>ll
5704 Left/Right to Left/Left.
5705
5706 @item lr>rr
5707 Left/Right to Right/Right.
5708
5709 @item lr>l+r
5710 Left/Right to Left + Right.
5711
5712 @item lr>rl
5713 Left/Right to Right/Left.
5714
5715 @item ms>ll
5716 Mid/Side to Left/Left.
5717
5718 @item ms>rr
5719 Mid/Side to Right/Right.
5720
5721 @item ms>rl
5722 Mid/Side to Right/Left.
5723
5724 @item lr>l-r
5725 Left/Right to Left - Right.
5726 @end table
5727
5728 @item slev
5729 Set level of side signal. Default is 1.
5730 Allowed range is from 0.015625 to 64.
5731
5732 @item sbal
5733 Set balance of side signal. Default is 0.
5734 Allowed range is from -1 to 1.
5735
5736 @item mlev
5737 Set level of the middle signal. Default is 1.
5738 Allowed range is from 0.015625 to 64.
5739
5740 @item mpan
5741 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5742
5743 @item base
5744 Set stereo base between mono and inversed channels. Default is 0.
5745 Allowed range is from -1 to 1.
5746
5747 @item delay
5748 Set delay in milliseconds how much to delay left from right channel and
5749 vice versa. Default is 0. Allowed range is from -20 to 20.
5750
5751 @item sclevel
5752 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5753
5754 @item phase
5755 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5756
5757 @item bmode_in, bmode_out
5758 Set balance mode for balance_in/balance_out option.
5759
5760 Can be one of the following:
5761
5762 @table @samp
5763 @item balance
5764 Classic balance mode. Attenuate one channel at time.
5765 Gain is raised up to 1.
5766
5767 @item amplitude
5768 Similar as classic mode above but gain is raised up to 2.
5769
5770 @item power
5771 Equal power distribution, from -6dB to +6dB range.
5772 @end table
5773 @end table
5774
5775 @subsection Commands
5776
5777 This filter supports the all above options as @ref{commands}.
5778
5779 @subsection Examples
5780
5781 @itemize
5782 @item
5783 Apply karaoke like effect:
5784 @example
5785 stereotools=mlev=0.015625
5786 @end example
5787
5788 @item
5789 Convert M/S signal to L/R:
5790 @example
5791 "stereotools=mode=ms>lr"
5792 @end example
5793 @end itemize
5794
5795 @section stereowiden
5796
5797 This filter enhance the stereo effect by suppressing signal common to both
5798 channels and by delaying the signal of left into right and vice versa,
5799 thereby widening the stereo effect.
5800
5801 The filter accepts the following options:
5802
5803 @table @option
5804 @item delay
5805 Time in milliseconds of the delay of left signal into right and vice versa.
5806 Default is 20 milliseconds.
5807
5808 @item feedback
5809 Amount of gain in delayed signal into right and vice versa. Gives a delay
5810 effect of left signal in right output and vice versa which gives widening
5811 effect. Default is 0.3.
5812
5813 @item crossfeed
5814 Cross feed of left into right with inverted phase. This helps in suppressing
5815 the mono. If the value is 1 it will cancel all the signal common to both
5816 channels. Default is 0.3.
5817
5818 @item drymix
5819 Set level of input signal of original channel. Default is 0.8.
5820 @end table
5821
5822 @subsection Commands
5823
5824 This filter supports the all above options except @code{delay} as @ref{commands}.
5825
5826 @section superequalizer
5827 Apply 18 band equalizer.
5828
5829 The filter accepts the following options:
5830 @table @option
5831 @item 1b
5832 Set 65Hz band gain.
5833 @item 2b
5834 Set 92Hz band gain.
5835 @item 3b
5836 Set 131Hz band gain.
5837 @item 4b
5838 Set 185Hz band gain.
5839 @item 5b
5840 Set 262Hz band gain.
5841 @item 6b
5842 Set 370Hz band gain.
5843 @item 7b
5844 Set 523Hz band gain.
5845 @item 8b
5846 Set 740Hz band gain.
5847 @item 9b
5848 Set 1047Hz band gain.
5849 @item 10b
5850 Set 1480Hz band gain.
5851 @item 11b
5852 Set 2093Hz band gain.
5853 @item 12b
5854 Set 2960Hz band gain.
5855 @item 13b
5856 Set 4186Hz band gain.
5857 @item 14b
5858 Set 5920Hz band gain.
5859 @item 15b
5860 Set 8372Hz band gain.
5861 @item 16b
5862 Set 11840Hz band gain.
5863 @item 17b
5864 Set 16744Hz band gain.
5865 @item 18b
5866 Set 20000Hz band gain.
5867 @end table
5868
5869 @section surround
5870 Apply audio surround upmix filter.
5871
5872 This filter allows to produce multichannel output from audio stream.
5873
5874 The filter accepts the following options:
5875
5876 @table @option
5877 @item chl_out
5878 Set output channel layout. By default, this is @var{5.1}.
5879
5880 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5881 for the required syntax.
5882
5883 @item chl_in
5884 Set input channel layout. By default, this is @var{stereo}.
5885
5886 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5887 for the required syntax.
5888
5889 @item level_in
5890 Set input volume level. By default, this is @var{1}.
5891
5892 @item level_out
5893 Set output volume level. By default, this is @var{1}.
5894
5895 @item lfe
5896 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5897
5898 @item lfe_low
5899 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5900
5901 @item lfe_high
5902 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5903
5904 @item lfe_mode
5905 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5906 In @var{add} mode, LFE channel is created from input audio and added to output.
5907 In @var{sub} mode, LFE channel is created from input audio and added to output but
5908 also all non-LFE output channels are subtracted with output LFE channel.
5909
5910 @item angle
5911 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5912 Default is @var{90}.
5913
5914 @item fc_in
5915 Set front center input volume. By default, this is @var{1}.
5916
5917 @item fc_out
5918 Set front center output volume. By default, this is @var{1}.
5919
5920 @item fl_in
5921 Set front left input volume. By default, this is @var{1}.
5922
5923 @item fl_out
5924 Set front left output volume. By default, this is @var{1}.
5925
5926 @item fr_in
5927 Set front right input volume. By default, this is @var{1}.
5928
5929 @item fr_out
5930 Set front right output volume. By default, this is @var{1}.
5931
5932 @item sl_in
5933 Set side left input volume. By default, this is @var{1}.
5934
5935 @item sl_out
5936 Set side left output volume. By default, this is @var{1}.
5937
5938 @item sr_in
5939 Set side right input volume. By default, this is @var{1}.
5940
5941 @item sr_out
5942 Set side right output volume. By default, this is @var{1}.
5943
5944 @item bl_in
5945 Set back left input volume. By default, this is @var{1}.
5946
5947 @item bl_out
5948 Set back left output volume. By default, this is @var{1}.
5949
5950 @item br_in
5951 Set back right input volume. By default, this is @var{1}.
5952
5953 @item br_out
5954 Set back right output volume. By default, this is @var{1}.
5955
5956 @item bc_in
5957 Set back center input volume. By default, this is @var{1}.
5958
5959 @item bc_out
5960 Set back center output volume. By default, this is @var{1}.
5961
5962 @item lfe_in
5963 Set LFE input volume. By default, this is @var{1}.
5964
5965 @item lfe_out
5966 Set LFE output volume. By default, this is @var{1}.
5967
5968 @item allx
5969 Set spread usage of stereo image across X axis for all channels.
5970
5971 @item ally
5972 Set spread usage of stereo image across Y axis for all channels.
5973
5974 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5975 Set spread usage of stereo image across X axis for each channel.
5976
5977 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5978 Set spread usage of stereo image across Y axis for each channel.
5979
5980 @item win_size
5981 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5982
5983 @item win_func
5984 Set window function.
5985
5986 It accepts the following values:
5987 @table @samp
5988 @item rect
5989 @item bartlett
5990 @item hann, hanning
5991 @item hamming
5992 @item blackman
5993 @item welch
5994 @item flattop
5995 @item bharris
5996 @item bnuttall
5997 @item bhann
5998 @item sine
5999 @item nuttall
6000 @item lanczos
6001 @item gauss
6002 @item tukey
6003 @item dolph
6004 @item cauchy
6005 @item parzen
6006 @item poisson
6007 @item bohman
6008 @end table
6009 Default is @code{hann}.
6010
6011 @item overlap
6012 Set window overlap. If set to 1, the recommended overlap for selected
6013 window function will be picked. Default is @code{0.5}.
6014 @end table
6015
6016 @section treble, highshelf
6017
6018 Boost or cut treble (upper) frequencies of the audio using a two-pole
6019 shelving filter with a response similar to that of a standard
6020 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
6021
6022 The filter accepts the following options:
6023
6024 @table @option
6025 @item gain, g
6026 Give the gain at whichever is the lower of ~22 kHz and the
6027 Nyquist frequency. Its useful range is about -20 (for a large cut)
6028 to +20 (for a large boost). Beware of clipping when using a positive gain.
6029
6030 @item frequency, f
6031 Set the filter's central frequency and so can be used
6032 to extend or reduce the frequency range to be boosted or cut.
6033 The default value is @code{3000} Hz.
6034
6035 @item width_type, t
6036 Set method to specify band-width of filter.
6037 @table @option
6038 @item h
6039 Hz
6040 @item q
6041 Q-Factor
6042 @item o
6043 octave
6044 @item s
6045 slope
6046 @item k
6047 kHz
6048 @end table
6049
6050 @item width, w
6051 Determine how steep is the filter's shelf transition.
6052
6053 @item mix, m
6054 How much to use filtered signal in output. Default is 1.
6055 Range is between 0 and 1.
6056
6057 @item channels, c
6058 Specify which channels to filter, by default all available are filtered.
6059
6060 @item normalize, n
6061 Normalize biquad coefficients, by default is disabled.
6062 Enabling it will normalize magnitude response at DC to 0dB.
6063
6064 @item transform, a
6065 Set transform type of IIR filter.
6066 @table @option
6067 @item di
6068 @item dii
6069 @item tdii
6070 @item latt
6071 @end table
6072
6073 @item precision, r
6074 Set precison of filtering.
6075 @table @option
6076 @item auto
6077 Pick automatic sample format depending on surround filters.
6078 @item s16
6079 Always use signed 16-bit.
6080 @item s32
6081 Always use signed 32-bit.
6082 @item f32
6083 Always use float 32-bit.
6084 @item f64
6085 Always use float 64-bit.
6086 @end table
6087 @end table
6088
6089 @subsection Commands
6090
6091 This filter supports the following commands:
6092 @table @option
6093 @item frequency, f
6094 Change treble frequency.
6095 Syntax for the command is : "@var{frequency}"
6096
6097 @item width_type, t
6098 Change treble width_type.
6099 Syntax for the command is : "@var{width_type}"
6100
6101 @item width, w
6102 Change treble width.
6103 Syntax for the command is : "@var{width}"
6104
6105 @item gain, g
6106 Change treble gain.
6107 Syntax for the command is : "@var{gain}"
6108
6109 @item mix, m
6110 Change treble mix.
6111 Syntax for the command is : "@var{mix}"
6112 @end table
6113
6114 @section tremolo
6115
6116 Sinusoidal amplitude modulation.
6117
6118 The filter accepts the following options:
6119
6120 @table @option
6121 @item f
6122 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
6123 (20 Hz or lower) will result in a tremolo effect.
6124 This filter may also be used as a ring modulator by specifying
6125 a modulation frequency higher than 20 Hz.
6126 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
6127
6128 @item d
6129 Depth of modulation as a percentage. Range is 0.0 - 1.0.
6130 Default value is 0.5.
6131 @end table
6132
6133 @section vibrato
6134
6135 Sinusoidal phase modulation.
6136
6137 The filter accepts the following options:
6138
6139 @table @option
6140 @item f
6141 Modulation frequency in Hertz.
6142 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
6143
6144 @item d
6145 Depth of modulation as a percentage. Range is 0.0 - 1.0.
6146 Default value is 0.5.
6147 @end table
6148
6149 @section volume
6150
6151 Adjust the input audio volume.
6152
6153 It accepts the following parameters:
6154 @table @option
6155
6156 @item volume
6157 Set audio volume expression.
6158
6159 Output values are clipped to the maximum value.
6160
6161 The output audio volume is given by the relation:
6162 @example
6163 @var{output_volume} = @var{volume} * @var{input_volume}
6164 @end example
6165
6166 The default value for @var{volume} is "1.0".
6167
6168 @item precision
6169 This parameter represents the mathematical precision.
6170
6171 It determines which input sample formats will be allowed, which affects the
6172 precision of the volume scaling.
6173
6174 @table @option
6175 @item fixed
6176 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
6177 @item float
6178 32-bit floating-point; this limits input sample format to FLT. (default)
6179 @item double
6180 64-bit floating-point; this limits input sample format to DBL.
6181 @end table
6182
6183 @item replaygain
6184 Choose the behaviour on encountering ReplayGain side data in input frames.
6185
6186 @table @option
6187 @item drop
6188 Remove ReplayGain side data, ignoring its contents (the default).
6189
6190 @item ignore
6191 Ignore ReplayGain side data, but leave it in the frame.
6192
6193 @item track
6194 Prefer the track gain, if present.
6195
6196 @item album
6197 Prefer the album gain, if present.
6198 @end table
6199
6200 @item replaygain_preamp
6201 Pre-amplification gain in dB to apply to the selected replaygain gain.
6202
6203 Default value for @var{replaygain_preamp} is 0.0.
6204
6205 @item replaygain_noclip
6206 Prevent clipping by limiting the gain applied.
6207
6208 Default value for @var{replaygain_noclip} is 1.
6209
6210 @item eval
6211 Set when the volume expression is evaluated.
6212
6213 It accepts the following values:
6214 @table @samp
6215 @item once
6216 only evaluate expression once during the filter initialization, or
6217 when the @samp{volume} command is sent
6218
6219 @item frame
6220 evaluate expression for each incoming frame
6221 @end table
6222
6223 Default value is @samp{once}.
6224 @end table
6225
6226 The volume expression can contain the following parameters.
6227
6228 @table @option
6229 @item n
6230 frame number (starting at zero)
6231 @item nb_channels
6232 number of channels
6233 @item nb_consumed_samples
6234 number of samples consumed by the filter
6235 @item nb_samples
6236 number of samples in the current frame
6237 @item pos
6238 original frame position in the file
6239 @item pts
6240 frame PTS
6241 @item sample_rate
6242 sample rate
6243 @item startpts
6244 PTS at start of stream
6245 @item startt
6246 time at start of stream
6247 @item t
6248 frame time
6249 @item tb
6250 timestamp timebase
6251 @item volume
6252 last set volume value
6253 @end table
6254
6255 Note that when @option{eval} is set to @samp{once} only the
6256 @var{sample_rate} and @var{tb} variables are available, all other
6257 variables will evaluate to NAN.
6258
6259 @subsection Commands
6260
6261 This filter supports the following commands:
6262 @table @option
6263 @item volume
6264 Modify the volume expression.
6265 The command accepts the same syntax of the corresponding option.
6266
6267 If the specified expression is not valid, it is kept at its current
6268 value.
6269 @end table
6270
6271 @subsection Examples
6272
6273 @itemize
6274 @item
6275 Halve the input audio volume:
6276 @example
6277 volume=volume=0.5
6278 volume=volume=1/2
6279 volume=volume=-6.0206dB
6280 @end example
6281
6282 In all the above example the named key for @option{volume} can be
6283 omitted, for example like in:
6284 @example
6285 volume=0.5
6286 @end example
6287
6288 @item
6289 Increase input audio power by 6 decibels using fixed-point precision:
6290 @example
6291 volume=volume=6dB:precision=fixed
6292 @end example
6293
6294 @item
6295 Fade volume after time 10 with an annihilation period of 5 seconds:
6296 @example
6297 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
6298 @end example
6299 @end itemize
6300
6301 @section volumedetect
6302
6303 Detect the volume of the input video.
6304
6305 The filter has no parameters. The input is not modified. Statistics about
6306 the volume will be printed in the log when the input stream end is reached.
6307
6308 In particular it will show the mean volume (root mean square), maximum
6309 volume (on a per-sample basis), and the beginning of a histogram of the
6310 registered volume values (from the maximum value to a cumulated 1/1000 of
6311 the samples).
6312
6313 All volumes are in decibels relative to the maximum PCM value.
6314
6315 @subsection Examples
6316
6317 Here is an excerpt of the output:
6318 @example
6319 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
6320 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
6321 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
6322 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
6323 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
6324 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
6325 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
6326 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
6327 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
6328 @end example
6329
6330 It means that:
6331 @itemize
6332 @item
6333 The mean square energy is approximately -27 dB, or 10^-2.7.
6334 @item
6335 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
6336 @item
6337 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
6338 @end itemize
6339
6340 In other words, raising the volume by +4 dB does not cause any clipping,
6341 raising it by +5 dB causes clipping for 6 samples, etc.
6342
6343 @c man end AUDIO FILTERS
6344
6345 @chapter Audio Sources
6346 @c man begin AUDIO SOURCES
6347
6348 Below is a description of the currently available audio sources.
6349
6350 @section abuffer
6351
6352 Buffer audio frames, and make them available to the filter chain.
6353
6354 This source is mainly intended for a programmatic use, in particular
6355 through the interface defined in @file{libavfilter/buffersrc.h}.
6356
6357 It accepts the following parameters:
6358 @table @option
6359
6360 @item time_base
6361 The timebase which will be used for timestamps of submitted frames. It must be
6362 either a floating-point number or in @var{numerator}/@var{denominator} form.
6363
6364 @item sample_rate
6365 The sample rate of the incoming audio buffers.
6366
6367 @item sample_fmt
6368 The sample format of the incoming audio buffers.
6369 Either a sample format name or its corresponding integer representation from
6370 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
6371
6372 @item channel_layout
6373 The channel layout of the incoming audio buffers.
6374 Either a channel layout name from channel_layout_map in
6375 @file{libavutil/channel_layout.c} or its corresponding integer representation
6376 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
6377
6378 @item channels
6379 The number of channels of the incoming audio buffers.
6380 If both @var{channels} and @var{channel_layout} are specified, then they
6381 must be consistent.
6382
6383 @end table
6384
6385 @subsection Examples
6386
6387 @example
6388 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
6389 @end example
6390
6391 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
6392 Since the sample format with name "s16p" corresponds to the number
6393 6 and the "stereo" channel layout corresponds to the value 0x3, this is
6394 equivalent to:
6395 @example
6396 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
6397 @end example
6398
6399 @section aevalsrc
6400
6401 Generate an audio signal specified by an expression.
6402
6403 This source accepts in input one or more expressions (one for each
6404 channel), which are evaluated and used to generate a corresponding
6405 audio signal.
6406
6407 This source accepts the following options:
6408
6409 @table @option
6410 @item exprs
6411 Set the '|'-separated expressions list for each separate channel. In case the
6412 @option{channel_layout} option is not specified, the selected channel layout
6413 depends on the number of provided expressions. Otherwise the last
6414 specified expression is applied to the remaining output channels.
6415
6416 @item channel_layout, c
6417 Set the channel layout. The number of channels in the specified layout
6418 must be equal to the number of specified expressions.
6419
6420 @item duration, d
6421 Set the minimum duration of the sourced audio. See
6422 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6423 for the accepted syntax.
6424 Note that the resulting duration may be greater than the specified
6425 duration, as the generated audio is always cut at the end of a
6426 complete frame.
6427
6428 If not specified, or the expressed duration is negative, the audio is
6429 supposed to be generated forever.
6430
6431 @item nb_samples, n
6432 Set the number of samples per channel per each output frame,
6433 default to 1024.
6434
6435 @item sample_rate, s
6436 Specify the sample rate, default to 44100.
6437 @end table
6438
6439 Each expression in @var{exprs} can contain the following constants:
6440
6441 @table @option
6442 @item n
6443 number of the evaluated sample, starting from 0
6444
6445 @item t
6446 time of the evaluated sample expressed in seconds, starting from 0
6447
6448 @item s
6449 sample rate
6450
6451 @end table
6452
6453 @subsection Examples
6454
6455 @itemize
6456 @item
6457 Generate silence:
6458 @example
6459 aevalsrc=0
6460 @end example
6461
6462 @item
6463 Generate a sin signal with frequency of 440 Hz, set sample rate to
6464 8000 Hz:
6465 @example
6466 aevalsrc="sin(440*2*PI*t):s=8000"
6467 @end example
6468
6469 @item
6470 Generate a two channels signal, specify the channel layout (Front
6471 Center + Back Center) explicitly:
6472 @example
6473 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
6474 @end example
6475
6476 @item
6477 Generate white noise:
6478 @example
6479 aevalsrc="-2+random(0)"
6480 @end example
6481
6482 @item
6483 Generate an amplitude modulated signal:
6484 @example
6485 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
6486 @end example
6487
6488 @item
6489 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
6490 @example
6491 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
6492 @end example
6493
6494 @end itemize
6495
6496 @section afirsrc
6497
6498 Generate a FIR coefficients using frequency sampling method.
6499
6500 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6501
6502 The filter accepts the following options:
6503
6504 @table @option
6505 @item taps, t
6506 Set number of filter coefficents in output audio stream.
6507 Default value is 1025.
6508
6509 @item frequency, f
6510 Set frequency points from where magnitude and phase are set.
6511 This must be in non decreasing order, and first element must be 0, while last element
6512 must be 1. Elements are separated by white spaces.
6513
6514 @item magnitude, m
6515 Set magnitude value for every frequency point set by @option{frequency}.
6516 Number of values must be same as number of frequency points.
6517 Values are separated by white spaces.
6518
6519 @item phase, p
6520 Set phase value for every frequency point set by @option{frequency}.
6521 Number of values must be same as number of frequency points.
6522 Values are separated by white spaces.
6523
6524 @item sample_rate, r
6525 Set sample rate, default is 44100.
6526
6527 @item nb_samples, n
6528 Set number of samples per each frame. Default is 1024.
6529
6530 @item win_func, w
6531 Set window function. Default is blackman.
6532 @end table
6533
6534 @section anullsrc
6535
6536 The null audio source, return unprocessed audio frames. It is mainly useful
6537 as a template and to be employed in analysis / debugging tools, or as
6538 the source for filters which ignore the input data (for example the sox
6539 synth filter).
6540
6541 This source accepts the following options:
6542
6543 @table @option
6544
6545 @item channel_layout, cl
6546
6547 Specifies the channel layout, and can be either an integer or a string
6548 representing a channel layout. The default value of @var{channel_layout}
6549 is "stereo".
6550
6551 Check the channel_layout_map definition in
6552 @file{libavutil/channel_layout.c} for the mapping between strings and
6553 channel layout values.
6554
6555 @item sample_rate, r
6556 Specifies the sample rate, and defaults to 44100.
6557
6558 @item nb_samples, n
6559 Set the number of samples per requested frames.
6560
6561 @item duration, d
6562 Set the duration of the sourced audio. See
6563 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6564 for the accepted syntax.
6565
6566 If not specified, or the expressed duration is negative, the audio is
6567 supposed to be generated forever.
6568 @end table
6569
6570 @subsection Examples
6571
6572 @itemize
6573 @item
6574 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
6575 @example
6576 anullsrc=r=48000:cl=4
6577 @end example
6578
6579 @item
6580 Do the same operation with a more obvious syntax:
6581 @example
6582 anullsrc=r=48000:cl=mono
6583 @end example
6584 @end itemize
6585
6586 All the parameters need to be explicitly defined.
6587
6588 @section flite
6589
6590 Synthesize a voice utterance using the libflite library.
6591
6592 To enable compilation of this filter you need to configure FFmpeg with
6593 @code{--enable-libflite}.
6594
6595 Note that versions of the flite library prior to 2.0 are not thread-safe.
6596
6597 The filter accepts the following options:
6598
6599 @table @option
6600
6601 @item list_voices
6602 If set to 1, list the names of the available voices and exit
6603 immediately. Default value is 0.
6604
6605 @item nb_samples, n
6606 Set the maximum number of samples per frame. Default value is 512.
6607
6608 @item textfile
6609 Set the filename containing the text to speak.
6610
6611 @item text
6612 Set the text to speak.
6613
6614 @item voice, v
6615 Set the voice to use for the speech synthesis. Default value is
6616 @code{kal}. See also the @var{list_voices} option.
6617 @end table
6618
6619 @subsection Examples
6620
6621 @itemize
6622 @item
6623 Read from file @file{speech.txt}, and synthesize the text using the
6624 standard flite voice:
6625 @example
6626 flite=textfile=speech.txt
6627 @end example
6628
6629 @item
6630 Read the specified text selecting the @code{slt} voice:
6631 @example
6632 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6633 @end example
6634
6635 @item
6636 Input text to ffmpeg:
6637 @example
6638 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6639 @end example
6640
6641 @item
6642 Make @file{ffplay} speak the specified text, using @code{flite} and
6643 the @code{lavfi} device:
6644 @example
6645 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
6646 @end example
6647 @end itemize
6648
6649 For more information about libflite, check:
6650 @url{http://www.festvox.org/flite/}
6651
6652 @section anoisesrc
6653
6654 Generate a noise audio signal.
6655
6656 The filter accepts the following options:
6657
6658 @table @option
6659 @item sample_rate, r
6660 Specify the sample rate. Default value is 48000 Hz.
6661
6662 @item amplitude, a
6663 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
6664 is 1.0.
6665
6666 @item duration, d
6667 Specify the duration of the generated audio stream. Not specifying this option
6668 results in noise with an infinite length.
6669
6670 @item color, colour, c
6671 Specify the color of noise. Available noise colors are white, pink, brown,
6672 blue, violet and velvet. Default color is white.
6673
6674 @item seed, s
6675 Specify a value used to seed the PRNG.
6676
6677 @item nb_samples, n
6678 Set the number of samples per each output frame, default is 1024.
6679 @end table
6680
6681 @subsection Examples
6682
6683 @itemize
6684
6685 @item
6686 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
6687 @example
6688 anoisesrc=d=60:c=pink:r=44100:a=0.5
6689 @end example
6690 @end itemize
6691
6692 @section hilbert
6693
6694 Generate odd-tap Hilbert transform FIR coefficients.
6695
6696 The resulting stream can be used with @ref{afir} filter for phase-shifting
6697 the signal by 90 degrees.
6698
6699 This is used in many matrix coding schemes and for analytic signal generation.
6700 The process is often written as a multiplication by i (or j), the imaginary unit.
6701
6702 The filter accepts the following options:
6703
6704 @table @option
6705
6706 @item sample_rate, s
6707 Set sample rate, default is 44100.
6708
6709 @item taps, t
6710 Set length of FIR filter, default is 22051.
6711
6712 @item nb_samples, n
6713 Set number of samples per each frame.
6714
6715 @item win_func, w
6716 Set window function to be used when generating FIR coefficients.
6717 @end table
6718
6719 @section sinc
6720
6721 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
6722
6723 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6724
6725 The filter accepts the following options:
6726
6727 @table @option
6728 @item sample_rate, r
6729 Set sample rate, default is 44100.
6730
6731 @item nb_samples, n
6732 Set number of samples per each frame. Default is 1024.
6733
6734 @item hp
6735 Set high-pass frequency. Default is 0.
6736
6737 @item lp
6738 Set low-pass frequency. Default is 0.
6739 If high-pass frequency is lower than low-pass frequency and low-pass frequency
6740 is higher than 0 then filter will create band-pass filter coefficients,
6741 otherwise band-reject filter coefficients.
6742
6743 @item phase
6744 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
6745
6746 @item beta
6747 Set Kaiser window beta.
6748
6749 @item att
6750 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
6751
6752 @item round
6753 Enable rounding, by default is disabled.
6754
6755 @item hptaps
6756 Set number of taps for high-pass filter.
6757
6758 @item lptaps
6759 Set number of taps for low-pass filter.
6760 @end table
6761
6762 @section sine
6763
6764 Generate an audio signal made of a sine wave with amplitude 1/8.
6765
6766 The audio signal is bit-exact.
6767
6768 The filter accepts the following options:
6769
6770 @table @option
6771
6772 @item frequency, f
6773 Set the carrier frequency. Default is 440 Hz.
6774
6775 @item beep_factor, b
6776 Enable a periodic beep every second with frequency @var{beep_factor} times
6777 the carrier frequency. Default is 0, meaning the beep is disabled.
6778
6779 @item sample_rate, r
6780 Specify the sample rate, default is 44100.
6781
6782 @item duration, d
6783 Specify the duration of the generated audio stream.
6784
6785 @item samples_per_frame
6786 Set the number of samples per output frame.
6787
6788 The expression can contain the following constants:
6789
6790 @table @option
6791 @item n
6792 The (sequential) number of the output audio frame, starting from 0.
6793
6794 @item pts
6795 The PTS (Presentation TimeStamp) of the output audio frame,
6796 expressed in @var{TB} units.
6797
6798 @item t
6799 The PTS of the output audio frame, expressed in seconds.
6800
6801 @item TB
6802 The timebase of the output audio frames.
6803 @end table
6804
6805 Default is @code{1024}.
6806 @end table
6807
6808 @subsection Examples
6809
6810 @itemize
6811
6812 @item
6813 Generate a simple 440 Hz sine wave:
6814 @example
6815 sine
6816 @end example
6817
6818 @item
6819 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6820 @example
6821 sine=220:4:d=5
6822 sine=f=220:b=4:d=5
6823 sine=frequency=220:beep_factor=4:duration=5
6824 @end example
6825
6826 @item
6827 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6828 pattern:
6829 @example
6830 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6831 @end example
6832 @end itemize
6833
6834 @c man end AUDIO SOURCES
6835
6836 @chapter Audio Sinks
6837 @c man begin AUDIO SINKS
6838
6839 Below is a description of the currently available audio sinks.
6840
6841 @section abuffersink
6842
6843 Buffer audio frames, and make them available to the end of filter chain.
6844
6845 This sink is mainly intended for programmatic use, in particular
6846 through the interface defined in @file{libavfilter/buffersink.h}
6847 or the options system.
6848
6849 It accepts a pointer to an AVABufferSinkContext structure, which
6850 defines the incoming buffers' formats, to be passed as the opaque
6851 parameter to @code{avfilter_init_filter} for initialization.
6852 @section anullsink
6853
6854 Null audio sink; do absolutely nothing with the input audio. It is
6855 mainly useful as a template and for use in analysis / debugging
6856 tools.
6857
6858 @c man end AUDIO SINKS
6859
6860 @chapter Video Filters
6861 @c man begin VIDEO FILTERS
6862
6863 When you configure your FFmpeg build, you can disable any of the
6864 existing filters using @code{--disable-filters}.
6865 The configure output will show the video filters included in your
6866 build.
6867
6868 Below is a description of the currently available video filters.
6869
6870 @section addroi
6871
6872 Mark a region of interest in a video frame.
6873
6874 The frame data is passed through unchanged, but metadata is attached
6875 to the frame indicating regions of interest which can affect the
6876 behaviour of later encoding.  Multiple regions can be marked by
6877 applying the filter multiple times.
6878
6879 @table @option
6880 @item x
6881 Region distance in pixels from the left edge of the frame.
6882 @item y
6883 Region distance in pixels from the top edge of the frame.
6884 @item w
6885 Region width in pixels.
6886 @item h
6887 Region height in pixels.
6888
6889 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6890 and may contain the following variables:
6891 @table @option
6892 @item iw
6893 Width of the input frame.
6894 @item ih
6895 Height of the input frame.
6896 @end table
6897
6898 @item qoffset
6899 Quantisation offset to apply within the region.
6900
6901 This must be a real value in the range -1 to +1.  A value of zero
6902 indicates no quality change.  A negative value asks for better quality
6903 (less quantisation), while a positive value asks for worse quality
6904 (greater quantisation).
6905
6906 The range is calibrated so that the extreme values indicate the
6907 largest possible offset - if the rest of the frame is encoded with the
6908 worst possible quality, an offset of -1 indicates that this region
6909 should be encoded with the best possible quality anyway.  Intermediate
6910 values are then interpolated in some codec-dependent way.
6911
6912 For example, in 10-bit H.264 the quantisation parameter varies between
6913 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6914 this region should be encoded with a QP around one-tenth of the full
6915 range better than the rest of the frame.  So, if most of the frame
6916 were to be encoded with a QP of around 30, this region would get a QP
6917 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6918 An extreme value of -1 would indicate that this region should be
6919 encoded with the best possible quality regardless of the treatment of
6920 the rest of the frame - that is, should be encoded at a QP of -12.
6921 @item clear
6922 If set to true, remove any existing regions of interest marked on the
6923 frame before adding the new one.
6924 @end table
6925
6926 @subsection Examples
6927
6928 @itemize
6929 @item
6930 Mark the centre quarter of the frame as interesting.
6931 @example
6932 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6933 @end example
6934 @item
6935 Mark the 100-pixel-wide region on the left edge of the frame as very
6936 uninteresting (to be encoded at much lower quality than the rest of
6937 the frame).
6938 @example
6939 addroi=0:0:100:ih:+1/5
6940 @end example
6941 @end itemize
6942
6943 @section alphaextract
6944
6945 Extract the alpha component from the input as a grayscale video. This
6946 is especially useful with the @var{alphamerge} filter.
6947
6948 @section alphamerge
6949
6950 Add or replace the alpha component of the primary input with the
6951 grayscale value of a second input. This is intended for use with
6952 @var{alphaextract} to allow the transmission or storage of frame
6953 sequences that have alpha in a format that doesn't support an alpha
6954 channel.
6955
6956 For example, to reconstruct full frames from a normal YUV-encoded video
6957 and a separate video created with @var{alphaextract}, you might use:
6958 @example
6959 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6960 @end example
6961
6962 @section amplify
6963
6964 Amplify differences between current pixel and pixels of adjacent frames in
6965 same pixel location.
6966
6967 This filter accepts the following options:
6968
6969 @table @option
6970 @item radius
6971 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6972 For example radius of 3 will instruct filter to calculate average of 7 frames.
6973
6974 @item factor
6975 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6976
6977 @item threshold
6978 Set threshold for difference amplification. Any difference greater or equal to
6979 this value will not alter source pixel. Default is 10.
6980 Allowed range is from 0 to 65535.
6981
6982 @item tolerance
6983 Set tolerance for difference amplification. Any difference lower to
6984 this value will not alter source pixel. Default is 0.
6985 Allowed range is from 0 to 65535.
6986
6987 @item low
6988 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6989 This option controls maximum possible value that will decrease source pixel value.
6990
6991 @item high
6992 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6993 This option controls maximum possible value that will increase source pixel value.
6994
6995 @item planes
6996 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
6997 @end table
6998
6999 @subsection Commands
7000
7001 This filter supports the following @ref{commands} that corresponds to option of same name:
7002 @table @option
7003 @item factor
7004 @item threshold
7005 @item tolerance
7006 @item low
7007 @item high
7008 @item planes
7009 @end table
7010
7011 @section ass
7012
7013 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
7014 and libavformat to work. On the other hand, it is limited to ASS (Advanced
7015 Substation Alpha) subtitles files.
7016
7017 This filter accepts the following option in addition to the common options from
7018 the @ref{subtitles} filter:
7019
7020 @table @option
7021 @item shaping
7022 Set the shaping engine
7023
7024 Available values are:
7025 @table @samp
7026 @item auto
7027 The default libass shaping engine, which is the best available.
7028 @item simple
7029 Fast, font-agnostic shaper that can do only substitutions
7030 @item complex
7031 Slower shaper using OpenType for substitutions and positioning
7032 @end table
7033
7034 The default is @code{auto}.
7035 @end table
7036
7037 @section atadenoise
7038 Apply an Adaptive Temporal Averaging Denoiser to the video input.
7039
7040 The filter accepts the following options:
7041
7042 @table @option
7043 @item 0a
7044 Set threshold A for 1st plane. Default is 0.02.
7045 Valid range is 0 to 0.3.
7046
7047 @item 0b
7048 Set threshold B for 1st plane. Default is 0.04.
7049 Valid range is 0 to 5.
7050
7051 @item 1a
7052 Set threshold A for 2nd plane. Default is 0.02.
7053 Valid range is 0 to 0.3.
7054
7055 @item 1b
7056 Set threshold B for 2nd plane. Default is 0.04.
7057 Valid range is 0 to 5.
7058
7059 @item 2a
7060 Set threshold A for 3rd plane. Default is 0.02.
7061 Valid range is 0 to 0.3.
7062
7063 @item 2b
7064 Set threshold B for 3rd plane. Default is 0.04.
7065 Valid range is 0 to 5.
7066
7067 Threshold A is designed to react on abrupt changes in the input signal and
7068 threshold B is designed to react on continuous changes in the input signal.
7069
7070 @item s
7071 Set number of frames filter will use for averaging. Default is 9. Must be odd
7072 number in range [5, 129].
7073
7074 @item p
7075 Set what planes of frame filter will use for averaging. Default is all.
7076
7077 @item a
7078 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
7079 Alternatively can be set to @code{s} serial.
7080
7081 Parallel can be faster then serial, while other way around is never true.
7082 Parallel will abort early on first change being greater then thresholds, while serial
7083 will continue processing other side of frames if they are equal or below thresholds.
7084 @end table
7085
7086 @subsection Commands
7087 This filter supports same @ref{commands} as options except option @code{s}.
7088 The command accepts the same syntax of the corresponding option.
7089
7090 @section avgblur
7091
7092 Apply average blur filter.
7093
7094 The filter accepts the following options:
7095
7096 @table @option
7097 @item sizeX
7098 Set horizontal radius size.
7099
7100 @item planes
7101 Set which planes to filter. By default all planes are filtered.
7102
7103 @item sizeY
7104 Set vertical radius size, if zero it will be same as @code{sizeX}.
7105 Default is @code{0}.
7106 @end table
7107
7108 @subsection Commands
7109 This filter supports same commands as options.
7110 The command accepts the same syntax of the corresponding option.
7111
7112 If the specified expression is not valid, it is kept at its current
7113 value.
7114
7115 @section bbox
7116
7117 Compute the bounding box for the non-black pixels in the input frame
7118 luminance plane.
7119
7120 This filter computes the bounding box containing all the pixels with a
7121 luminance value greater than the minimum allowed value.
7122 The parameters describing the bounding box are printed on the filter
7123 log.
7124
7125 The filter accepts the following option:
7126
7127 @table @option
7128 @item min_val
7129 Set the minimal luminance value. Default is @code{16}.
7130 @end table
7131
7132 @section bilateral
7133 Apply bilateral filter, spatial smoothing while preserving edges.
7134
7135 The filter accepts the following options:
7136 @table @option
7137 @item sigmaS
7138 Set sigma of gaussian function to calculate spatial weight.
7139 Allowed range is 0 to 512. Default is 0.1.
7140
7141 @item sigmaR
7142 Set sigma of gaussian function to calculate range weight.
7143 Allowed range is 0 to 1. Default is 0.1.
7144
7145 @item planes
7146 Set planes to filter. Default is first only.
7147 @end table
7148
7149 @section bitplanenoise
7150
7151 Show and measure bit plane noise.
7152
7153 The filter accepts the following options:
7154
7155 @table @option
7156 @item bitplane
7157 Set which plane to analyze. Default is @code{1}.
7158
7159 @item filter
7160 Filter out noisy pixels from @code{bitplane} set above.
7161 Default is disabled.
7162 @end table
7163
7164 @section blackdetect
7165
7166 Detect video intervals that are (almost) completely black. Can be
7167 useful to detect chapter transitions, commercials, or invalid
7168 recordings.
7169
7170 The filter outputs its detection analysis to both the log as well as
7171 frame metadata. If a black segment of at least the specified minimum
7172 duration is found, a line with the start and end timestamps as well
7173 as duration is printed to the log with level @code{info}. In addition,
7174 a log line with level @code{debug} is printed per frame showing the
7175 black amount detected for that frame.
7176
7177 The filter also attaches metadata to the first frame of a black
7178 segment with key @code{lavfi.black_start} and to the first frame
7179 after the black segment ends with key @code{lavfi.black_end}. The
7180 value is the frame's timestamp. This metadata is added regardless
7181 of the minimum duration specified.
7182
7183 The filter accepts the following options:
7184
7185 @table @option
7186 @item black_min_duration, d
7187 Set the minimum detected black duration expressed in seconds. It must
7188 be a non-negative floating point number.
7189
7190 Default value is 2.0.
7191
7192 @item picture_black_ratio_th, pic_th
7193 Set the threshold for considering a picture "black".
7194 Express the minimum value for the ratio:
7195 @example
7196 @var{nb_black_pixels} / @var{nb_pixels}
7197 @end example
7198
7199 for which a picture is considered black.
7200 Default value is 0.98.
7201
7202 @item pixel_black_th, pix_th
7203 Set the threshold for considering a pixel "black".
7204
7205 The threshold expresses the maximum pixel luminance value for which a
7206 pixel is considered "black". The provided value is scaled according to
7207 the following equation:
7208 @example
7209 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
7210 @end example
7211
7212 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
7213 the input video format, the range is [0-255] for YUV full-range
7214 formats and [16-235] for YUV non full-range formats.
7215
7216 Default value is 0.10.
7217 @end table
7218
7219 The following example sets the maximum pixel threshold to the minimum
7220 value, and detects only black intervals of 2 or more seconds:
7221 @example
7222 blackdetect=d=2:pix_th=0.00
7223 @end example
7224
7225 @section blackframe
7226
7227 Detect frames that are (almost) completely black. Can be useful to
7228 detect chapter transitions or commercials. Output lines consist of
7229 the frame number of the detected frame, the percentage of blackness,
7230 the position in the file if known or -1 and the timestamp in seconds.
7231
7232 In order to display the output lines, you need to set the loglevel at
7233 least to the AV_LOG_INFO value.
7234
7235 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
7236 The value represents the percentage of pixels in the picture that
7237 are below the threshold value.
7238
7239 It accepts the following parameters:
7240
7241 @table @option
7242
7243 @item amount
7244 The percentage of the pixels that have to be below the threshold; it defaults to
7245 @code{98}.
7246
7247 @item threshold, thresh
7248 The threshold below which a pixel value is considered black; it defaults to
7249 @code{32}.
7250
7251 @end table
7252
7253 @anchor{blend}
7254 @section blend
7255
7256 Blend two video frames into each other.
7257
7258 The @code{blend} filter takes two input streams and outputs one
7259 stream, the first input is the "top" layer and second input is
7260 "bottom" layer.  By default, the output terminates when the longest input terminates.
7261
7262 The @code{tblend} (time blend) filter takes two consecutive frames
7263 from one single stream, and outputs the result obtained by blending
7264 the new frame on top of the old frame.
7265
7266 A description of the accepted options follows.
7267
7268 @table @option
7269 @item c0_mode
7270 @item c1_mode
7271 @item c2_mode
7272 @item c3_mode
7273 @item all_mode
7274 Set blend mode for specific pixel component or all pixel components in case
7275 of @var{all_mode}. Default value is @code{normal}.
7276
7277 Available values for component modes are:
7278 @table @samp
7279 @item addition
7280 @item grainmerge
7281 @item and
7282 @item average
7283 @item burn
7284 @item darken
7285 @item difference
7286 @item grainextract
7287 @item divide
7288 @item dodge
7289 @item freeze
7290 @item exclusion
7291 @item extremity
7292 @item glow
7293 @item hardlight
7294 @item hardmix
7295 @item heat
7296 @item lighten
7297 @item linearlight
7298 @item multiply
7299 @item multiply128
7300 @item negation
7301 @item normal
7302 @item or
7303 @item overlay
7304 @item phoenix
7305 @item pinlight
7306 @item reflect
7307 @item screen
7308 @item softlight
7309 @item subtract
7310 @item vividlight
7311 @item xor
7312 @end table
7313
7314 @item c0_opacity
7315 @item c1_opacity
7316 @item c2_opacity
7317 @item c3_opacity
7318 @item all_opacity
7319 Set blend opacity for specific pixel component or all pixel components in case
7320 of @var{all_opacity}. Only used in combination with pixel component blend modes.
7321
7322 @item c0_expr
7323 @item c1_expr
7324 @item c2_expr
7325 @item c3_expr
7326 @item all_expr
7327 Set blend expression for specific pixel component or all pixel components in case
7328 of @var{all_expr}. Note that related mode options will be ignored if those are set.
7329
7330 The expressions can use the following variables:
7331
7332 @table @option
7333 @item N
7334 The sequential number of the filtered frame, starting from @code{0}.
7335
7336 @item X
7337 @item Y
7338 the coordinates of the current sample
7339
7340 @item W
7341 @item H
7342 the width and height of currently filtered plane
7343
7344 @item SW
7345 @item SH
7346 Width and height scale for the plane being filtered. It is the
7347 ratio between the dimensions of the current plane to the luma plane,
7348 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
7349 the luma plane and @code{0.5,0.5} for the chroma planes.
7350
7351 @item T
7352 Time of the current frame, expressed in seconds.
7353
7354 @item TOP, A
7355 Value of pixel component at current location for first video frame (top layer).
7356
7357 @item BOTTOM, B
7358 Value of pixel component at current location for second video frame (bottom layer).
7359 @end table
7360 @end table
7361
7362 The @code{blend} filter also supports the @ref{framesync} options.
7363
7364 @subsection Examples
7365
7366 @itemize
7367 @item
7368 Apply transition from bottom layer to top layer in first 10 seconds:
7369 @example
7370 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
7371 @end example
7372
7373 @item
7374 Apply linear horizontal transition from top layer to bottom layer:
7375 @example
7376 blend=all_expr='A*(X/W)+B*(1-X/W)'
7377 @end example
7378
7379 @item
7380 Apply 1x1 checkerboard effect:
7381 @example
7382 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
7383 @end example
7384
7385 @item
7386 Apply uncover left effect:
7387 @example
7388 blend=all_expr='if(gte(N*SW+X,W),A,B)'
7389 @end example
7390
7391 @item
7392 Apply uncover down effect:
7393 @example
7394 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
7395 @end example
7396
7397 @item
7398 Apply uncover up-left effect:
7399 @example
7400 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
7401 @end example
7402
7403 @item
7404 Split diagonally video and shows top and bottom layer on each side:
7405 @example
7406 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
7407 @end example
7408
7409 @item
7410 Display differences between the current and the previous frame:
7411 @example
7412 tblend=all_mode=grainextract
7413 @end example
7414 @end itemize
7415
7416 @section bm3d
7417
7418 Denoise frames using Block-Matching 3D algorithm.
7419
7420 The filter accepts the following options.
7421
7422 @table @option
7423 @item sigma
7424 Set denoising strength. Default value is 1.
7425 Allowed range is from 0 to 999.9.
7426 The denoising algorithm is very sensitive to sigma, so adjust it
7427 according to the source.
7428
7429 @item block
7430 Set local patch size. This sets dimensions in 2D.
7431
7432 @item bstep
7433 Set sliding step for processing blocks. Default value is 4.
7434 Allowed range is from 1 to 64.
7435 Smaller values allows processing more reference blocks and is slower.
7436
7437 @item group
7438 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
7439 When set to 1, no block matching is done. Larger values allows more blocks
7440 in single group.
7441 Allowed range is from 1 to 256.
7442
7443 @item range
7444 Set radius for search block matching. Default is 9.
7445 Allowed range is from 1 to INT32_MAX.
7446
7447 @item mstep
7448 Set step between two search locations for block matching. Default is 1.
7449 Allowed range is from 1 to 64. Smaller is slower.
7450
7451 @item thmse
7452 Set threshold of mean square error for block matching. Valid range is 0 to
7453 INT32_MAX.
7454
7455 @item hdthr
7456 Set thresholding parameter for hard thresholding in 3D transformed domain.
7457 Larger values results in stronger hard-thresholding filtering in frequency
7458 domain.
7459
7460 @item estim
7461 Set filtering estimation mode. Can be @code{basic} or @code{final}.
7462 Default is @code{basic}.
7463
7464 @item ref
7465 If enabled, filter will use 2nd stream for block matching.
7466 Default is disabled for @code{basic} value of @var{estim} option,
7467 and always enabled if value of @var{estim} is @code{final}.
7468
7469 @item planes
7470 Set planes to filter. Default is all available except alpha.
7471 @end table
7472
7473 @subsection Examples
7474
7475 @itemize
7476 @item
7477 Basic filtering with bm3d:
7478 @example
7479 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
7480 @end example
7481
7482 @item
7483 Same as above, but filtering only luma:
7484 @example
7485 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
7486 @end example
7487
7488 @item
7489 Same as above, but with both estimation modes:
7490 @example
7491 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
7492 @end example
7493
7494 @item
7495 Same as above, but prefilter with @ref{nlmeans} filter instead:
7496 @example
7497 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
7498 @end example
7499 @end itemize
7500
7501 @section boxblur
7502
7503 Apply a boxblur algorithm to the input video.
7504
7505 It accepts the following parameters:
7506
7507 @table @option
7508
7509 @item luma_radius, lr
7510 @item luma_power, lp
7511 @item chroma_radius, cr
7512 @item chroma_power, cp
7513 @item alpha_radius, ar
7514 @item alpha_power, ap
7515
7516 @end table
7517
7518 A description of the accepted options follows.
7519
7520 @table @option
7521 @item luma_radius, lr
7522 @item chroma_radius, cr
7523 @item alpha_radius, ar
7524 Set an expression for the box radius in pixels used for blurring the
7525 corresponding input plane.
7526
7527 The radius value must be a non-negative number, and must not be
7528 greater than the value of the expression @code{min(w,h)/2} for the
7529 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
7530 planes.
7531
7532 Default value for @option{luma_radius} is "2". If not specified,
7533 @option{chroma_radius} and @option{alpha_radius} default to the
7534 corresponding value set for @option{luma_radius}.
7535
7536 The expressions can contain the following constants:
7537 @table @option
7538 @item w
7539 @item h
7540 The input width and height in pixels.
7541
7542 @item cw
7543 @item ch
7544 The input chroma image width and height in pixels.
7545
7546 @item hsub
7547 @item vsub
7548 The horizontal and vertical chroma subsample values. For example, for the
7549 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
7550 @end table
7551
7552 @item luma_power, lp
7553 @item chroma_power, cp
7554 @item alpha_power, ap
7555 Specify how many times the boxblur filter is applied to the
7556 corresponding plane.
7557
7558 Default value for @option{luma_power} is 2. If not specified,
7559 @option{chroma_power} and @option{alpha_power} default to the
7560 corresponding value set for @option{luma_power}.
7561
7562 A value of 0 will disable the effect.
7563 @end table
7564
7565 @subsection Examples
7566
7567 @itemize
7568 @item
7569 Apply a boxblur filter with the luma, chroma, and alpha radii
7570 set to 2:
7571 @example
7572 boxblur=luma_radius=2:luma_power=1
7573 boxblur=2:1
7574 @end example
7575
7576 @item
7577 Set the luma radius to 2, and alpha and chroma radius to 0:
7578 @example
7579 boxblur=2:1:cr=0:ar=0
7580 @end example
7581
7582 @item
7583 Set the luma and chroma radii to a fraction of the video dimension:
7584 @example
7585 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
7586 @end example
7587 @end itemize
7588
7589 @section bwdif
7590
7591 Deinterlace the input video ("bwdif" stands for "Bob Weaver
7592 Deinterlacing Filter").
7593
7594 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
7595 interpolation algorithms.
7596 It accepts the following parameters:
7597
7598 @table @option
7599 @item mode
7600 The interlacing mode to adopt. It accepts one of the following values:
7601
7602 @table @option
7603 @item 0, send_frame
7604 Output one frame for each frame.
7605 @item 1, send_field
7606 Output one frame for each field.
7607 @end table
7608
7609 The default value is @code{send_field}.
7610
7611 @item parity
7612 The picture field parity assumed for the input interlaced video. It accepts one
7613 of the following values:
7614
7615 @table @option
7616 @item 0, tff
7617 Assume the top field is first.
7618 @item 1, bff
7619 Assume the bottom field is first.
7620 @item -1, auto
7621 Enable automatic detection of field parity.
7622 @end table
7623
7624 The default value is @code{auto}.
7625 If the interlacing is unknown or the decoder does not export this information,
7626 top field first will be assumed.
7627
7628 @item deint
7629 Specify which frames to deinterlace. Accepts one of the following
7630 values:
7631
7632 @table @option
7633 @item 0, all
7634 Deinterlace all frames.
7635 @item 1, interlaced
7636 Only deinterlace frames marked as interlaced.
7637 @end table
7638
7639 The default value is @code{all}.
7640 @end table
7641
7642 @section cas
7643
7644 Apply Contrast Adaptive Sharpen filter to video stream.
7645
7646 The filter accepts the following options:
7647
7648 @table @option
7649 @item strength
7650 Set the sharpening strength. Default value is 0.
7651
7652 @item planes
7653 Set planes to filter. Default value is to filter all
7654 planes except alpha plane.
7655 @end table
7656
7657 @section chromahold
7658 Remove all color information for all colors except for certain one.
7659
7660 The filter accepts the following options:
7661
7662 @table @option
7663 @item color
7664 The color which will not be replaced with neutral chroma.
7665
7666 @item similarity
7667 Similarity percentage with the above color.
7668 0.01 matches only the exact key color, while 1.0 matches everything.
7669
7670 @item blend
7671 Blend percentage.
7672 0.0 makes pixels either fully gray, or not gray at all.
7673 Higher values result in more preserved color.
7674
7675 @item yuv
7676 Signals that the color passed is already in YUV instead of RGB.
7677
7678 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7679 This can be used to pass exact YUV values as hexadecimal numbers.
7680 @end table
7681
7682 @subsection Commands
7683 This filter supports same @ref{commands} as options.
7684 The command accepts the same syntax of the corresponding option.
7685
7686 If the specified expression is not valid, it is kept at its current
7687 value.
7688
7689 @section chromakey
7690 YUV colorspace color/chroma keying.
7691
7692 The filter accepts the following options:
7693
7694 @table @option
7695 @item color
7696 The color which will be replaced with transparency.
7697
7698 @item similarity
7699 Similarity percentage with the key color.
7700
7701 0.01 matches only the exact key color, while 1.0 matches everything.
7702
7703 @item blend
7704 Blend percentage.
7705
7706 0.0 makes pixels either fully transparent, or not transparent at all.
7707
7708 Higher values result in semi-transparent pixels, with a higher transparency
7709 the more similar the pixels color is to the key color.
7710
7711 @item yuv
7712 Signals that the color passed is already in YUV instead of RGB.
7713
7714 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7715 This can be used to pass exact YUV values as hexadecimal numbers.
7716 @end table
7717
7718 @subsection Commands
7719 This filter supports same @ref{commands} as options.
7720 The command accepts the same syntax of the corresponding option.
7721
7722 If the specified expression is not valid, it is kept at its current
7723 value.
7724
7725 @subsection Examples
7726
7727 @itemize
7728 @item
7729 Make every green pixel in the input image transparent:
7730 @example
7731 ffmpeg -i input.png -vf chromakey=green out.png
7732 @end example
7733
7734 @item
7735 Overlay a greenscreen-video on top of a static black background.
7736 @example
7737 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
7738 @end example
7739 @end itemize
7740
7741 @section chromanr
7742 Reduce chrominance noise.
7743
7744 The filter accepts the following options:
7745
7746 @table @option
7747 @item thres
7748 Set threshold for averaging chrominance values.
7749 Sum of absolute difference of Y, U and V pixel components of current
7750 pixel and neighbour pixels lower than this threshold will be used in
7751 averaging. Luma component is left unchanged and is copied to output.
7752 Default value is 30. Allowed range is from 1 to 200.
7753
7754 @item sizew
7755 Set horizontal radius of rectangle used for averaging.
7756 Allowed range is from 1 to 100. Default value is 5.
7757
7758 @item sizeh
7759 Set vertical radius of rectangle used for averaging.
7760 Allowed range is from 1 to 100. Default value is 5.
7761
7762 @item stepw
7763 Set horizontal step when averaging. Default value is 1.
7764 Allowed range is from 1 to 50.
7765 Mostly useful to speed-up filtering.
7766
7767 @item steph
7768 Set vertical step when averaging. Default value is 1.
7769 Allowed range is from 1 to 50.
7770 Mostly useful to speed-up filtering.
7771
7772 @item threy
7773 Set Y threshold for averaging chrominance values.
7774 Set finer control for max allowed difference between Y components
7775 of current pixel and neigbour pixels.
7776 Default value is 200. Allowed range is from 1 to 200.
7777
7778 @item threu
7779 Set U threshold for averaging chrominance values.
7780 Set finer control for max allowed difference between U components
7781 of current pixel and neigbour pixels.
7782 Default value is 200. Allowed range is from 1 to 200.
7783
7784 @item threv
7785 Set V threshold for averaging chrominance values.
7786 Set finer control for max allowed difference between V components
7787 of current pixel and neigbour pixels.
7788 Default value is 200. Allowed range is from 1 to 200.
7789 @end table
7790
7791 @subsection Commands
7792 This filter supports same @ref{commands} as options.
7793 The command accepts the same syntax of the corresponding option.
7794
7795 @section chromashift
7796 Shift chroma pixels horizontally and/or vertically.
7797
7798 The filter accepts the following options:
7799 @table @option
7800 @item cbh
7801 Set amount to shift chroma-blue horizontally.
7802 @item cbv
7803 Set amount to shift chroma-blue vertically.
7804 @item crh
7805 Set amount to shift chroma-red horizontally.
7806 @item crv
7807 Set amount to shift chroma-red vertically.
7808 @item edge
7809 Set edge mode, can be @var{smear}, default, or @var{warp}.
7810 @end table
7811
7812 @subsection Commands
7813
7814 This filter supports the all above options as @ref{commands}.
7815
7816 @section ciescope
7817
7818 Display CIE color diagram with pixels overlaid onto it.
7819
7820 The filter accepts the following options:
7821
7822 @table @option
7823 @item system
7824 Set color system.
7825
7826 @table @samp
7827 @item ntsc, 470m
7828 @item ebu, 470bg
7829 @item smpte
7830 @item 240m
7831 @item apple
7832 @item widergb
7833 @item cie1931
7834 @item rec709, hdtv
7835 @item uhdtv, rec2020
7836 @item dcip3
7837 @end table
7838
7839 @item cie
7840 Set CIE system.
7841
7842 @table @samp
7843 @item xyy
7844 @item ucs
7845 @item luv
7846 @end table
7847
7848 @item gamuts
7849 Set what gamuts to draw.
7850
7851 See @code{system} option for available values.
7852
7853 @item size, s
7854 Set ciescope size, by default set to 512.
7855
7856 @item intensity, i
7857 Set intensity used to map input pixel values to CIE diagram.
7858
7859 @item contrast
7860 Set contrast used to draw tongue colors that are out of active color system gamut.
7861
7862 @item corrgamma
7863 Correct gamma displayed on scope, by default enabled.
7864
7865 @item showwhite
7866 Show white point on CIE diagram, by default disabled.
7867
7868 @item gamma
7869 Set input gamma. Used only with XYZ input color space.
7870 @end table
7871
7872 @section codecview
7873
7874 Visualize information exported by some codecs.
7875
7876 Some codecs can export information through frames using side-data or other
7877 means. For example, some MPEG based codecs export motion vectors through the
7878 @var{export_mvs} flag in the codec @option{flags2} option.
7879
7880 The filter accepts the following option:
7881
7882 @table @option
7883 @item mv
7884 Set motion vectors to visualize.
7885
7886 Available flags for @var{mv} are:
7887
7888 @table @samp
7889 @item pf
7890 forward predicted MVs of P-frames
7891 @item bf
7892 forward predicted MVs of B-frames
7893 @item bb
7894 backward predicted MVs of B-frames
7895 @end table
7896
7897 @item qp
7898 Display quantization parameters using the chroma planes.
7899
7900 @item mv_type, mvt
7901 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7902
7903 Available flags for @var{mv_type} are:
7904
7905 @table @samp
7906 @item fp
7907 forward predicted MVs
7908 @item bp
7909 backward predicted MVs
7910 @end table
7911
7912 @item frame_type, ft
7913 Set frame type to visualize motion vectors of.
7914
7915 Available flags for @var{frame_type} are:
7916
7917 @table @samp
7918 @item if
7919 intra-coded frames (I-frames)
7920 @item pf
7921 predicted frames (P-frames)
7922 @item bf
7923 bi-directionally predicted frames (B-frames)
7924 @end table
7925 @end table
7926
7927 @subsection Examples
7928
7929 @itemize
7930 @item
7931 Visualize forward predicted MVs of all frames using @command{ffplay}:
7932 @example
7933 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7934 @end example
7935
7936 @item
7937 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7938 @example
7939 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7940 @end example
7941 @end itemize
7942
7943 @section colorbalance
7944 Modify intensity of primary colors (red, green and blue) of input frames.
7945
7946 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7947 regions for the red-cyan, green-magenta or blue-yellow balance.
7948
7949 A positive adjustment value shifts the balance towards the primary color, a negative
7950 value towards the complementary color.
7951
7952 The filter accepts the following options:
7953
7954 @table @option
7955 @item rs
7956 @item gs
7957 @item bs
7958 Adjust red, green and blue shadows (darkest pixels).
7959
7960 @item rm
7961 @item gm
7962 @item bm
7963 Adjust red, green and blue midtones (medium pixels).
7964
7965 @item rh
7966 @item gh
7967 @item bh
7968 Adjust red, green and blue highlights (brightest pixels).
7969
7970 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7971
7972 @item pl
7973 Preserve lightness when changing color balance. Default is disabled.
7974 @end table
7975
7976 @subsection Examples
7977
7978 @itemize
7979 @item
7980 Add red color cast to shadows:
7981 @example
7982 colorbalance=rs=.3
7983 @end example
7984 @end itemize
7985
7986 @subsection Commands
7987
7988 This filter supports the all above options as @ref{commands}.
7989
7990 @section colorchannelmixer
7991
7992 Adjust video input frames by re-mixing color channels.
7993
7994 This filter modifies a color channel by adding the values associated to
7995 the other channels of the same pixels. For example if the value to
7996 modify is red, the output value will be:
7997 @example
7998 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7999 @end example
8000
8001 The filter accepts the following options:
8002
8003 @table @option
8004 @item rr
8005 @item rg
8006 @item rb
8007 @item ra
8008 Adjust contribution of input red, green, blue and alpha channels for output red channel.
8009 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
8010
8011 @item gr
8012 @item gg
8013 @item gb
8014 @item ga
8015 Adjust contribution of input red, green, blue and alpha channels for output green channel.
8016 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
8017
8018 @item br
8019 @item bg
8020 @item bb
8021 @item ba
8022 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
8023 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
8024
8025 @item ar
8026 @item ag
8027 @item ab
8028 @item aa
8029 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
8030 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
8031
8032 Allowed ranges for options are @code{[-2.0, 2.0]}.
8033 @end table
8034
8035 @subsection Examples
8036
8037 @itemize
8038 @item
8039 Convert source to grayscale:
8040 @example
8041 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
8042 @end example
8043 @item
8044 Simulate sepia tones:
8045 @example
8046 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
8047 @end example
8048 @end itemize
8049
8050 @subsection Commands
8051
8052 This filter supports the all above options as @ref{commands}.
8053
8054 @section colorkey
8055 RGB colorspace color keying.
8056
8057 The filter accepts the following options:
8058
8059 @table @option
8060 @item color
8061 The color which will be replaced with transparency.
8062
8063 @item similarity
8064 Similarity percentage with the key color.
8065
8066 0.01 matches only the exact key color, while 1.0 matches everything.
8067
8068 @item blend
8069 Blend percentage.
8070
8071 0.0 makes pixels either fully transparent, or not transparent at all.
8072
8073 Higher values result in semi-transparent pixels, with a higher transparency
8074 the more similar the pixels color is to the key color.
8075 @end table
8076
8077 @subsection Examples
8078
8079 @itemize
8080 @item
8081 Make every green pixel in the input image transparent:
8082 @example
8083 ffmpeg -i input.png -vf colorkey=green out.png
8084 @end example
8085
8086 @item
8087 Overlay a greenscreen-video on top of a static background image.
8088 @example
8089 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
8090 @end example
8091 @end itemize
8092
8093 @subsection Commands
8094 This filter supports same @ref{commands} as options.
8095 The command accepts the same syntax of the corresponding option.
8096
8097 If the specified expression is not valid, it is kept at its current
8098 value.
8099
8100 @section colorhold
8101 Remove all color information for all RGB colors except for certain one.
8102
8103 The filter accepts the following options:
8104
8105 @table @option
8106 @item color
8107 The color which will not be replaced with neutral gray.
8108
8109 @item similarity
8110 Similarity percentage with the above color.
8111 0.01 matches only the exact key color, while 1.0 matches everything.
8112
8113 @item blend
8114 Blend percentage. 0.0 makes pixels fully gray.
8115 Higher values result in more preserved color.
8116 @end table
8117
8118 @subsection Commands
8119 This filter supports same @ref{commands} as options.
8120 The command accepts the same syntax of the corresponding option.
8121
8122 If the specified expression is not valid, it is kept at its current
8123 value.
8124
8125 @section colorlevels
8126
8127 Adjust video input frames using levels.
8128
8129 The filter accepts the following options:
8130
8131 @table @option
8132 @item rimin
8133 @item gimin
8134 @item bimin
8135 @item aimin
8136 Adjust red, green, blue and alpha input black point.
8137 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
8138
8139 @item rimax
8140 @item gimax
8141 @item bimax
8142 @item aimax
8143 Adjust red, green, blue and alpha input white point.
8144 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
8145
8146 Input levels are used to lighten highlights (bright tones), darken shadows
8147 (dark tones), change the balance of bright and dark tones.
8148
8149 @item romin
8150 @item gomin
8151 @item bomin
8152 @item aomin
8153 Adjust red, green, blue and alpha output black point.
8154 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
8155
8156 @item romax
8157 @item gomax
8158 @item bomax
8159 @item aomax
8160 Adjust red, green, blue and alpha output white point.
8161 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
8162
8163 Output levels allows manual selection of a constrained output level range.
8164 @end table
8165
8166 @subsection Examples
8167
8168 @itemize
8169 @item
8170 Make video output darker:
8171 @example
8172 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
8173 @end example
8174
8175 @item
8176 Increase contrast:
8177 @example
8178 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
8179 @end example
8180
8181 @item
8182 Make video output lighter:
8183 @example
8184 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
8185 @end example
8186
8187 @item
8188 Increase brightness:
8189 @example
8190 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
8191 @end example
8192 @end itemize
8193
8194 @subsection Commands
8195
8196 This filter supports the all above options as @ref{commands}.
8197
8198 @section colormatrix
8199
8200 Convert color matrix.
8201
8202 The filter accepts the following options:
8203
8204 @table @option
8205 @item src
8206 @item dst
8207 Specify the source and destination color matrix. Both values must be
8208 specified.
8209
8210 The accepted values are:
8211 @table @samp
8212 @item bt709
8213 BT.709
8214
8215 @item fcc
8216 FCC
8217
8218 @item bt601
8219 BT.601
8220
8221 @item bt470
8222 BT.470
8223
8224 @item bt470bg
8225 BT.470BG
8226
8227 @item smpte170m
8228 SMPTE-170M
8229
8230 @item smpte240m
8231 SMPTE-240M
8232
8233 @item bt2020
8234 BT.2020
8235 @end table
8236 @end table
8237
8238 For example to convert from BT.601 to SMPTE-240M, use the command:
8239 @example
8240 colormatrix=bt601:smpte240m
8241 @end example
8242
8243 @section colorspace
8244
8245 Convert colorspace, transfer characteristics or color primaries.
8246 Input video needs to have an even size.
8247
8248 The filter accepts the following options:
8249
8250 @table @option
8251 @anchor{all}
8252 @item all
8253 Specify all color properties at once.
8254
8255 The accepted values are:
8256 @table @samp
8257 @item bt470m
8258 BT.470M
8259
8260 @item bt470bg
8261 BT.470BG
8262
8263 @item bt601-6-525
8264 BT.601-6 525
8265
8266 @item bt601-6-625
8267 BT.601-6 625
8268
8269 @item bt709
8270 BT.709
8271
8272 @item smpte170m
8273 SMPTE-170M
8274
8275 @item smpte240m
8276 SMPTE-240M
8277
8278 @item bt2020
8279 BT.2020
8280
8281 @end table
8282
8283 @anchor{space}
8284 @item space
8285 Specify output colorspace.
8286
8287 The accepted values are:
8288 @table @samp
8289 @item bt709
8290 BT.709
8291
8292 @item fcc
8293 FCC
8294
8295 @item bt470bg
8296 BT.470BG or BT.601-6 625
8297
8298 @item smpte170m
8299 SMPTE-170M or BT.601-6 525
8300
8301 @item smpte240m
8302 SMPTE-240M
8303
8304 @item ycgco
8305 YCgCo
8306
8307 @item bt2020ncl
8308 BT.2020 with non-constant luminance
8309
8310 @end table
8311
8312 @anchor{trc}
8313 @item trc
8314 Specify output transfer characteristics.
8315
8316 The accepted values are:
8317 @table @samp
8318 @item bt709
8319 BT.709
8320
8321 @item bt470m
8322 BT.470M
8323
8324 @item bt470bg
8325 BT.470BG
8326
8327 @item gamma22
8328 Constant gamma of 2.2
8329
8330 @item gamma28
8331 Constant gamma of 2.8
8332
8333 @item smpte170m
8334 SMPTE-170M, BT.601-6 625 or BT.601-6 525
8335
8336 @item smpte240m
8337 SMPTE-240M
8338
8339 @item srgb
8340 SRGB
8341
8342 @item iec61966-2-1
8343 iec61966-2-1
8344
8345 @item iec61966-2-4
8346 iec61966-2-4
8347
8348 @item xvycc
8349 xvycc
8350
8351 @item bt2020-10
8352 BT.2020 for 10-bits content
8353
8354 @item bt2020-12
8355 BT.2020 for 12-bits content
8356
8357 @end table
8358
8359 @anchor{primaries}
8360 @item primaries
8361 Specify output color primaries.
8362
8363 The accepted values are:
8364 @table @samp
8365 @item bt709
8366 BT.709
8367
8368 @item bt470m
8369 BT.470M
8370
8371 @item bt470bg
8372 BT.470BG or BT.601-6 625
8373
8374 @item smpte170m
8375 SMPTE-170M or BT.601-6 525
8376
8377 @item smpte240m
8378 SMPTE-240M
8379
8380 @item film
8381 film
8382
8383 @item smpte431
8384 SMPTE-431
8385
8386 @item smpte432
8387 SMPTE-432
8388
8389 @item bt2020
8390 BT.2020
8391
8392 @item jedec-p22
8393 JEDEC P22 phosphors
8394
8395 @end table
8396
8397 @anchor{range}
8398 @item range
8399 Specify output color range.
8400
8401 The accepted values are:
8402 @table @samp
8403 @item tv
8404 TV (restricted) range
8405
8406 @item mpeg
8407 MPEG (restricted) range
8408
8409 @item pc
8410 PC (full) range
8411
8412 @item jpeg
8413 JPEG (full) range
8414
8415 @end table
8416
8417 @item format
8418 Specify output color format.
8419
8420 The accepted values are:
8421 @table @samp
8422 @item yuv420p
8423 YUV 4:2:0 planar 8-bits
8424
8425 @item yuv420p10
8426 YUV 4:2:0 planar 10-bits
8427
8428 @item yuv420p12
8429 YUV 4:2:0 planar 12-bits
8430
8431 @item yuv422p
8432 YUV 4:2:2 planar 8-bits
8433
8434 @item yuv422p10
8435 YUV 4:2:2 planar 10-bits
8436
8437 @item yuv422p12
8438 YUV 4:2:2 planar 12-bits
8439
8440 @item yuv444p
8441 YUV 4:4:4 planar 8-bits
8442
8443 @item yuv444p10
8444 YUV 4:4:4 planar 10-bits
8445
8446 @item yuv444p12
8447 YUV 4:4:4 planar 12-bits
8448
8449 @end table
8450
8451 @item fast
8452 Do a fast conversion, which skips gamma/primary correction. This will take
8453 significantly less CPU, but will be mathematically incorrect. To get output
8454 compatible with that produced by the colormatrix filter, use fast=1.
8455
8456 @item dither
8457 Specify dithering mode.
8458
8459 The accepted values are:
8460 @table @samp
8461 @item none
8462 No dithering
8463
8464 @item fsb
8465 Floyd-Steinberg dithering
8466 @end table
8467
8468 @item wpadapt
8469 Whitepoint adaptation mode.
8470
8471 The accepted values are:
8472 @table @samp
8473 @item bradford
8474 Bradford whitepoint adaptation
8475
8476 @item vonkries
8477 von Kries whitepoint adaptation
8478
8479 @item identity
8480 identity whitepoint adaptation (i.e. no whitepoint adaptation)
8481 @end table
8482
8483 @item iall
8484 Override all input properties at once. Same accepted values as @ref{all}.
8485
8486 @item ispace
8487 Override input colorspace. Same accepted values as @ref{space}.
8488
8489 @item iprimaries
8490 Override input color primaries. Same accepted values as @ref{primaries}.
8491
8492 @item itrc
8493 Override input transfer characteristics. Same accepted values as @ref{trc}.
8494
8495 @item irange
8496 Override input color range. Same accepted values as @ref{range}.
8497
8498 @end table
8499
8500 The filter converts the transfer characteristics, color space and color
8501 primaries to the specified user values. The output value, if not specified,
8502 is set to a default value based on the "all" property. If that property is
8503 also not specified, the filter will log an error. The output color range and
8504 format default to the same value as the input color range and format. The
8505 input transfer characteristics, color space, color primaries and color range
8506 should be set on the input data. If any of these are missing, the filter will
8507 log an error and no conversion will take place.
8508
8509 For example to convert the input to SMPTE-240M, use the command:
8510 @example
8511 colorspace=smpte240m
8512 @end example
8513
8514 @section convolution
8515
8516 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
8517
8518 The filter accepts the following options:
8519
8520 @table @option
8521 @item 0m
8522 @item 1m
8523 @item 2m
8524 @item 3m
8525 Set matrix for each plane.
8526 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
8527 and from 1 to 49 odd number of signed integers in @var{row} mode.
8528
8529 @item 0rdiv
8530 @item 1rdiv
8531 @item 2rdiv
8532 @item 3rdiv
8533 Set multiplier for calculated value for each plane.
8534 If unset or 0, it will be sum of all matrix elements.
8535
8536 @item 0bias
8537 @item 1bias
8538 @item 2bias
8539 @item 3bias
8540 Set bias for each plane. This value is added to the result of the multiplication.
8541 Useful for making the overall image brighter or darker. Default is 0.0.
8542
8543 @item 0mode
8544 @item 1mode
8545 @item 2mode
8546 @item 3mode
8547 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
8548 Default is @var{square}.
8549 @end table
8550
8551 @subsection Commands
8552
8553 This filter supports the all above options as @ref{commands}.
8554
8555 @subsection Examples
8556
8557 @itemize
8558 @item
8559 Apply sharpen:
8560 @example
8561 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"
8562 @end example
8563
8564 @item
8565 Apply blur:
8566 @example
8567 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"
8568 @end example
8569
8570 @item
8571 Apply edge enhance:
8572 @example
8573 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"
8574 @end example
8575
8576 @item
8577 Apply edge detect:
8578 @example
8579 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"
8580 @end example
8581
8582 @item
8583 Apply laplacian edge detector which includes diagonals:
8584 @example
8585 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"
8586 @end example
8587
8588 @item
8589 Apply emboss:
8590 @example
8591 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"
8592 @end example
8593 @end itemize
8594
8595 @section convolve
8596
8597 Apply 2D convolution of video stream in frequency domain using second stream
8598 as impulse.
8599
8600 The filter accepts the following options:
8601
8602 @table @option
8603 @item planes
8604 Set which planes to process.
8605
8606 @item impulse
8607 Set which impulse video frames will be processed, can be @var{first}
8608 or @var{all}. Default is @var{all}.
8609 @end table
8610
8611 The @code{convolve} filter also supports the @ref{framesync} options.
8612
8613 @section copy
8614
8615 Copy the input video source unchanged to the output. This is mainly useful for
8616 testing purposes.
8617
8618 @anchor{coreimage}
8619 @section coreimage
8620 Video filtering on GPU using Apple's CoreImage API on OSX.
8621
8622 Hardware acceleration is based on an OpenGL context. Usually, this means it is
8623 processed by video hardware. However, software-based OpenGL implementations
8624 exist which means there is no guarantee for hardware processing. It depends on
8625 the respective OSX.
8626
8627 There are many filters and image generators provided by Apple that come with a
8628 large variety of options. The filter has to be referenced by its name along
8629 with its options.
8630
8631 The coreimage filter accepts the following options:
8632 @table @option
8633 @item list_filters
8634 List all available filters and generators along with all their respective
8635 options as well as possible minimum and maximum values along with the default
8636 values.
8637 @example
8638 list_filters=true
8639 @end example
8640
8641 @item filter
8642 Specify all filters by their respective name and options.
8643 Use @var{list_filters} to determine all valid filter names and options.
8644 Numerical options are specified by a float value and are automatically clamped
8645 to their respective value range.  Vector and color options have to be specified
8646 by a list of space separated float values. Character escaping has to be done.
8647 A special option name @code{default} is available to use default options for a
8648 filter.
8649
8650 It is required to specify either @code{default} or at least one of the filter options.
8651 All omitted options are used with their default values.
8652 The syntax of the filter string is as follows:
8653 @example
8654 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
8655 @end example
8656
8657 @item output_rect
8658 Specify a rectangle where the output of the filter chain is copied into the
8659 input image. It is given by a list of space separated float values:
8660 @example
8661 output_rect=x\ y\ width\ height
8662 @end example
8663 If not given, the output rectangle equals the dimensions of the input image.
8664 The output rectangle is automatically cropped at the borders of the input
8665 image. Negative values are valid for each component.
8666 @example
8667 output_rect=25\ 25\ 100\ 100
8668 @end example
8669 @end table
8670
8671 Several filters can be chained for successive processing without GPU-HOST
8672 transfers allowing for fast processing of complex filter chains.
8673 Currently, only filters with zero (generators) or exactly one (filters) input
8674 image and one output image are supported. Also, transition filters are not yet
8675 usable as intended.
8676
8677 Some filters generate output images with additional padding depending on the
8678 respective filter kernel. The padding is automatically removed to ensure the
8679 filter output has the same size as the input image.
8680
8681 For image generators, the size of the output image is determined by the
8682 previous output image of the filter chain or the input image of the whole
8683 filterchain, respectively. The generators do not use the pixel information of
8684 this image to generate their output. However, the generated output is
8685 blended onto this image, resulting in partial or complete coverage of the
8686 output image.
8687
8688 The @ref{coreimagesrc} video source can be used for generating input images
8689 which are directly fed into the filter chain. By using it, providing input
8690 images by another video source or an input video is not required.
8691
8692 @subsection Examples
8693
8694 @itemize
8695
8696 @item
8697 List all filters available:
8698 @example
8699 coreimage=list_filters=true
8700 @end example
8701
8702 @item
8703 Use the CIBoxBlur filter with default options to blur an image:
8704 @example
8705 coreimage=filter=CIBoxBlur@@default
8706 @end example
8707
8708 @item
8709 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
8710 its center at 100x100 and a radius of 50 pixels:
8711 @example
8712 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
8713 @end example
8714
8715 @item
8716 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
8717 given as complete and escaped command-line for Apple's standard bash shell:
8718 @example
8719 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
8720 @end example
8721 @end itemize
8722
8723 @section cover_rect
8724
8725 Cover a rectangular object
8726
8727 It accepts the following options:
8728
8729 @table @option
8730 @item cover
8731 Filepath of the optional cover image, needs to be in yuv420.
8732
8733 @item mode
8734 Set covering mode.
8735
8736 It accepts the following values:
8737 @table @samp
8738 @item cover
8739 cover it by the supplied image
8740 @item blur
8741 cover it by interpolating the surrounding pixels
8742 @end table
8743
8744 Default value is @var{blur}.
8745 @end table
8746
8747 @subsection Examples
8748
8749 @itemize
8750 @item
8751 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
8752 @example
8753 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8754 @end example
8755 @end itemize
8756
8757 @section crop
8758
8759 Crop the input video to given dimensions.
8760
8761 It accepts the following parameters:
8762
8763 @table @option
8764 @item w, out_w
8765 The width of the output video. It defaults to @code{iw}.
8766 This expression is evaluated only once during the filter
8767 configuration, or when the @samp{w} or @samp{out_w} command is sent.
8768
8769 @item h, out_h
8770 The height of the output video. It defaults to @code{ih}.
8771 This expression is evaluated only once during the filter
8772 configuration, or when the @samp{h} or @samp{out_h} command is sent.
8773
8774 @item x
8775 The horizontal position, in the input video, of the left edge of the output
8776 video. It defaults to @code{(in_w-out_w)/2}.
8777 This expression is evaluated per-frame.
8778
8779 @item y
8780 The vertical position, in the input video, of the top edge of the output video.
8781 It defaults to @code{(in_h-out_h)/2}.
8782 This expression is evaluated per-frame.
8783
8784 @item keep_aspect
8785 If set to 1 will force the output display aspect ratio
8786 to be the same of the input, by changing the output sample aspect
8787 ratio. It defaults to 0.
8788
8789 @item exact
8790 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
8791 width/height/x/y as specified and will not be rounded to nearest smaller value.
8792 It defaults to 0.
8793 @end table
8794
8795 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
8796 expressions containing the following constants:
8797
8798 @table @option
8799 @item x
8800 @item y
8801 The computed values for @var{x} and @var{y}. They are evaluated for
8802 each new frame.
8803
8804 @item in_w
8805 @item in_h
8806 The input width and height.
8807
8808 @item iw
8809 @item ih
8810 These are the same as @var{in_w} and @var{in_h}.
8811
8812 @item out_w
8813 @item out_h
8814 The output (cropped) width and height.
8815
8816 @item ow
8817 @item oh
8818 These are the same as @var{out_w} and @var{out_h}.
8819
8820 @item a
8821 same as @var{iw} / @var{ih}
8822
8823 @item sar
8824 input sample aspect ratio
8825
8826 @item dar
8827 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8828
8829 @item hsub
8830 @item vsub
8831 horizontal and vertical chroma subsample values. For example for the
8832 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8833
8834 @item n
8835 The number of the input frame, starting from 0.
8836
8837 @item pos
8838 the position in the file of the input frame, NAN if unknown
8839
8840 @item t
8841 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
8842
8843 @end table
8844
8845 The expression for @var{out_w} may depend on the value of @var{out_h},
8846 and the expression for @var{out_h} may depend on @var{out_w}, but they
8847 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
8848 evaluated after @var{out_w} and @var{out_h}.
8849
8850 The @var{x} and @var{y} parameters specify the expressions for the
8851 position of the top-left corner of the output (non-cropped) area. They
8852 are evaluated for each frame. If the evaluated value is not valid, it
8853 is approximated to the nearest valid value.
8854
8855 The expression for @var{x} may depend on @var{y}, and the expression
8856 for @var{y} may depend on @var{x}.
8857
8858 @subsection Examples
8859
8860 @itemize
8861 @item
8862 Crop area with size 100x100 at position (12,34).
8863 @example
8864 crop=100:100:12:34
8865 @end example
8866
8867 Using named options, the example above becomes:
8868 @example
8869 crop=w=100:h=100:x=12:y=34
8870 @end example
8871
8872 @item
8873 Crop the central input area with size 100x100:
8874 @example
8875 crop=100:100
8876 @end example
8877
8878 @item
8879 Crop the central input area with size 2/3 of the input video:
8880 @example
8881 crop=2/3*in_w:2/3*in_h
8882 @end example
8883
8884 @item
8885 Crop the input video central square:
8886 @example
8887 crop=out_w=in_h
8888 crop=in_h
8889 @end example
8890
8891 @item
8892 Delimit the rectangle with the top-left corner placed at position
8893 100:100 and the right-bottom corner corresponding to the right-bottom
8894 corner of the input image.
8895 @example
8896 crop=in_w-100:in_h-100:100:100
8897 @end example
8898
8899 @item
8900 Crop 10 pixels from the left and right borders, and 20 pixels from
8901 the top and bottom borders
8902 @example
8903 crop=in_w-2*10:in_h-2*20
8904 @end example
8905
8906 @item
8907 Keep only the bottom right quarter of the input image:
8908 @example
8909 crop=in_w/2:in_h/2:in_w/2:in_h/2
8910 @end example
8911
8912 @item
8913 Crop height for getting Greek harmony:
8914 @example
8915 crop=in_w:1/PHI*in_w
8916 @end example
8917
8918 @item
8919 Apply trembling effect:
8920 @example
8921 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)
8922 @end example
8923
8924 @item
8925 Apply erratic camera effect depending on timestamp:
8926 @example
8927 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)"
8928 @end example
8929
8930 @item
8931 Set x depending on the value of y:
8932 @example
8933 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
8934 @end example
8935 @end itemize
8936
8937 @subsection Commands
8938
8939 This filter supports the following commands:
8940 @table @option
8941 @item w, out_w
8942 @item h, out_h
8943 @item x
8944 @item y
8945 Set width/height of the output video and the horizontal/vertical position
8946 in the input video.
8947 The command accepts the same syntax of the corresponding option.
8948
8949 If the specified expression is not valid, it is kept at its current
8950 value.
8951 @end table
8952
8953 @section cropdetect
8954
8955 Auto-detect the crop size.
8956
8957 It calculates the necessary cropping parameters and prints the
8958 recommended parameters via the logging system. The detected dimensions
8959 correspond to the non-black area of the input video.
8960
8961 It accepts the following parameters:
8962
8963 @table @option
8964
8965 @item limit
8966 Set higher black value threshold, which can be optionally specified
8967 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8968 value greater to the set value is considered non-black. It defaults to 24.
8969 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8970 on the bitdepth of the pixel format.
8971
8972 @item round
8973 The value which the width/height should be divisible by. It defaults to
8974 16. The offset is automatically adjusted to center the video. Use 2 to
8975 get only even dimensions (needed for 4:2:2 video). 16 is best when
8976 encoding to most video codecs.
8977
8978 @item skip
8979 Set the number of initial frames for which evaluation is skipped.
8980 Default is 2. Range is 0 to INT_MAX.
8981
8982 @item reset_count, reset
8983 Set the counter that determines after how many frames cropdetect will
8984 reset the previously detected largest video area and start over to
8985 detect the current optimal crop area. Default value is 0.
8986
8987 This can be useful when channel logos distort the video area. 0
8988 indicates 'never reset', and returns the largest area encountered during
8989 playback.
8990 @end table
8991
8992 @anchor{cue}
8993 @section cue
8994
8995 Delay video filtering until a given wallclock timestamp. The filter first
8996 passes on @option{preroll} amount of frames, then it buffers at most
8997 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8998 it forwards the buffered frames and also any subsequent frames coming in its
8999 input.
9000
9001 The filter can be used synchronize the output of multiple ffmpeg processes for
9002 realtime output devices like decklink. By putting the delay in the filtering
9003 chain and pre-buffering frames the process can pass on data to output almost
9004 immediately after the target wallclock timestamp is reached.
9005
9006 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
9007 some use cases.
9008
9009 @table @option
9010
9011 @item cue
9012 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
9013
9014 @item preroll
9015 The duration of content to pass on as preroll expressed in seconds. Default is 0.
9016
9017 @item buffer
9018 The maximum duration of content to buffer before waiting for the cue expressed
9019 in seconds. Default is 0.
9020
9021 @end table
9022
9023 @anchor{curves}
9024 @section curves
9025
9026 Apply color adjustments using curves.
9027
9028 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
9029 component (red, green and blue) has its values defined by @var{N} key points
9030 tied from each other using a smooth curve. The x-axis represents the pixel
9031 values from the input frame, and the y-axis the new pixel values to be set for
9032 the output frame.
9033
9034 By default, a component curve is defined by the two points @var{(0;0)} and
9035 @var{(1;1)}. This creates a straight line where each original pixel value is
9036 "adjusted" to its own value, which means no change to the image.
9037
9038 The filter allows you to redefine these two points and add some more. A new
9039 curve (using a natural cubic spline interpolation) will be define to pass
9040 smoothly through all these new coordinates. The new defined points needs to be
9041 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
9042 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
9043 the vector spaces, the values will be clipped accordingly.
9044
9045 The filter accepts the following options:
9046
9047 @table @option
9048 @item preset
9049 Select one of the available color presets. This option can be used in addition
9050 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
9051 options takes priority on the preset values.
9052 Available presets are:
9053 @table @samp
9054 @item none
9055 @item color_negative
9056 @item cross_process
9057 @item darker
9058 @item increase_contrast
9059 @item lighter
9060 @item linear_contrast
9061 @item medium_contrast
9062 @item negative
9063 @item strong_contrast
9064 @item vintage
9065 @end table
9066 Default is @code{none}.
9067 @item master, m
9068 Set the master key points. These points will define a second pass mapping. It
9069 is sometimes called a "luminance" or "value" mapping. It can be used with
9070 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
9071 post-processing LUT.
9072 @item red, r
9073 Set the key points for the red component.
9074 @item green, g
9075 Set the key points for the green component.
9076 @item blue, b
9077 Set the key points for the blue component.
9078 @item all
9079 Set the key points for all components (not including master).
9080 Can be used in addition to the other key points component
9081 options. In this case, the unset component(s) will fallback on this
9082 @option{all} setting.
9083 @item psfile
9084 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
9085 @item plot
9086 Save Gnuplot script of the curves in specified file.
9087 @end table
9088
9089 To avoid some filtergraph syntax conflicts, each key points list need to be
9090 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
9091
9092 @subsection Examples
9093
9094 @itemize
9095 @item
9096 Increase slightly the middle level of blue:
9097 @example
9098 curves=blue='0/0 0.5/0.58 1/1'
9099 @end example
9100
9101 @item
9102 Vintage effect:
9103 @example
9104 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'
9105 @end example
9106 Here we obtain the following coordinates for each components:
9107 @table @var
9108 @item red
9109 @code{(0;0.11) (0.42;0.51) (1;0.95)}
9110 @item green
9111 @code{(0;0) (0.50;0.48) (1;1)}
9112 @item blue
9113 @code{(0;0.22) (0.49;0.44) (1;0.80)}
9114 @end table
9115
9116 @item
9117 The previous example can also be achieved with the associated built-in preset:
9118 @example
9119 curves=preset=vintage
9120 @end example
9121
9122 @item
9123 Or simply:
9124 @example
9125 curves=vintage
9126 @end example
9127
9128 @item
9129 Use a Photoshop preset and redefine the points of the green component:
9130 @example
9131 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
9132 @end example
9133
9134 @item
9135 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
9136 and @command{gnuplot}:
9137 @example
9138 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
9139 gnuplot -p /tmp/curves.plt
9140 @end example
9141 @end itemize
9142
9143 @section datascope
9144
9145 Video data analysis filter.
9146
9147 This filter shows hexadecimal pixel values of part of video.
9148
9149 The filter accepts the following options:
9150
9151 @table @option
9152 @item size, s
9153 Set output video size.
9154
9155 @item x
9156 Set x offset from where to pick pixels.
9157
9158 @item y
9159 Set y offset from where to pick pixels.
9160
9161 @item mode
9162 Set scope mode, can be one of the following:
9163 @table @samp
9164 @item mono
9165 Draw hexadecimal pixel values with white color on black background.
9166
9167 @item color
9168 Draw hexadecimal pixel values with input video pixel color on black
9169 background.
9170
9171 @item color2
9172 Draw hexadecimal pixel values on color background picked from input video,
9173 the text color is picked in such way so its always visible.
9174 @end table
9175
9176 @item axis
9177 Draw rows and columns numbers on left and top of video.
9178
9179 @item opacity
9180 Set background opacity.
9181
9182 @item format
9183 Set display number format. Can be @code{hex}, or @code{dec}. Default is @code{hex}.
9184 @end table
9185
9186 @section dblur
9187 Apply Directional blur filter.
9188
9189 The filter accepts the following options:
9190
9191 @table @option
9192 @item angle
9193 Set angle of directional blur. Default is @code{45}.
9194
9195 @item radius
9196 Set radius of directional blur. Default is @code{5}.
9197
9198 @item planes
9199 Set which planes to filter. By default all planes are filtered.
9200 @end table
9201
9202 @subsection Commands
9203 This filter supports same @ref{commands} as options.
9204 The command accepts the same syntax of the corresponding option.
9205
9206 If the specified expression is not valid, it is kept at its current
9207 value.
9208
9209 @section dctdnoiz
9210
9211 Denoise frames using 2D DCT (frequency domain filtering).
9212
9213 This filter is not designed for real time.
9214
9215 The filter accepts the following options:
9216
9217 @table @option
9218 @item sigma, s
9219 Set the noise sigma constant.
9220
9221 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
9222 coefficient (absolute value) below this threshold with be dropped.
9223
9224 If you need a more advanced filtering, see @option{expr}.
9225
9226 Default is @code{0}.
9227
9228 @item overlap
9229 Set number overlapping pixels for each block. Since the filter can be slow, you
9230 may want to reduce this value, at the cost of a less effective filter and the
9231 risk of various artefacts.
9232
9233 If the overlapping value doesn't permit processing the whole input width or
9234 height, a warning will be displayed and according borders won't be denoised.
9235
9236 Default value is @var{blocksize}-1, which is the best possible setting.
9237
9238 @item expr, e
9239 Set the coefficient factor expression.
9240
9241 For each coefficient of a DCT block, this expression will be evaluated as a
9242 multiplier value for the coefficient.
9243
9244 If this is option is set, the @option{sigma} option will be ignored.
9245
9246 The absolute value of the coefficient can be accessed through the @var{c}
9247 variable.
9248
9249 @item n
9250 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
9251 @var{blocksize}, which is the width and height of the processed blocks.
9252
9253 The default value is @var{3} (8x8) and can be raised to @var{4} for a
9254 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
9255 on the speed processing. Also, a larger block size does not necessarily means a
9256 better de-noising.
9257 @end table
9258
9259 @subsection Examples
9260
9261 Apply a denoise with a @option{sigma} of @code{4.5}:
9262 @example
9263 dctdnoiz=4.5
9264 @end example
9265
9266 The same operation can be achieved using the expression system:
9267 @example
9268 dctdnoiz=e='gte(c, 4.5*3)'
9269 @end example
9270
9271 Violent denoise using a block size of @code{16x16}:
9272 @example
9273 dctdnoiz=15:n=4
9274 @end example
9275
9276 @section deband
9277
9278 Remove banding artifacts from input video.
9279 It works by replacing banded pixels with average value of referenced pixels.
9280
9281 The filter accepts the following options:
9282
9283 @table @option
9284 @item 1thr
9285 @item 2thr
9286 @item 3thr
9287 @item 4thr
9288 Set banding detection threshold for each plane. Default is 0.02.
9289 Valid range is 0.00003 to 0.5.
9290 If difference between current pixel and reference pixel is less than threshold,
9291 it will be considered as banded.
9292
9293 @item range, r
9294 Banding detection range in pixels. Default is 16. If positive, random number
9295 in range 0 to set value will be used. If negative, exact absolute value
9296 will be used.
9297 The range defines square of four pixels around current pixel.
9298
9299 @item direction, d
9300 Set direction in radians from which four pixel will be compared. If positive,
9301 random direction from 0 to set direction will be picked. If negative, exact of
9302 absolute value will be picked. For example direction 0, -PI or -2*PI radians
9303 will pick only pixels on same row and -PI/2 will pick only pixels on same
9304 column.
9305
9306 @item blur, b
9307 If enabled, current pixel is compared with average value of all four
9308 surrounding pixels. The default is enabled. If disabled current pixel is
9309 compared with all four surrounding pixels. The pixel is considered banded
9310 if only all four differences with surrounding pixels are less than threshold.
9311
9312 @item coupling, c
9313 If enabled, current pixel is changed if and only if all pixel components are banded,
9314 e.g. banding detection threshold is triggered for all color components.
9315 The default is disabled.
9316 @end table
9317
9318 @section deblock
9319
9320 Remove blocking artifacts from input video.
9321
9322 The filter accepts the following options:
9323
9324 @table @option
9325 @item filter
9326 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
9327 This controls what kind of deblocking is applied.
9328
9329 @item block
9330 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
9331
9332 @item alpha
9333 @item beta
9334 @item gamma
9335 @item delta
9336 Set blocking detection thresholds. Allowed range is 0 to 1.
9337 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
9338 Using higher threshold gives more deblocking strength.
9339 Setting @var{alpha} controls threshold detection at exact edge of block.
9340 Remaining options controls threshold detection near the edge. Each one for
9341 below/above or left/right. Setting any of those to @var{0} disables
9342 deblocking.
9343
9344 @item planes
9345 Set planes to filter. Default is to filter all available planes.
9346 @end table
9347
9348 @subsection Examples
9349
9350 @itemize
9351 @item
9352 Deblock using weak filter and block size of 4 pixels.
9353 @example
9354 deblock=filter=weak:block=4
9355 @end example
9356
9357 @item
9358 Deblock using strong filter, block size of 4 pixels and custom thresholds for
9359 deblocking more edges.
9360 @example
9361 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
9362 @end example
9363
9364 @item
9365 Similar as above, but filter only first plane.
9366 @example
9367 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
9368 @end example
9369
9370 @item
9371 Similar as above, but filter only second and third plane.
9372 @example
9373 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
9374 @end example
9375 @end itemize
9376
9377 @anchor{decimate}
9378 @section decimate
9379
9380 Drop duplicated frames at regular intervals.
9381
9382 The filter accepts the following options:
9383
9384 @table @option
9385 @item cycle
9386 Set the number of frames from which one will be dropped. Setting this to
9387 @var{N} means one frame in every batch of @var{N} frames will be dropped.
9388 Default is @code{5}.
9389
9390 @item dupthresh
9391 Set the threshold for duplicate detection. If the difference metric for a frame
9392 is less than or equal to this value, then it is declared as duplicate. Default
9393 is @code{1.1}
9394
9395 @item scthresh
9396 Set scene change threshold. Default is @code{15}.
9397
9398 @item blockx
9399 @item blocky
9400 Set the size of the x and y-axis blocks used during metric calculations.
9401 Larger blocks give better noise suppression, but also give worse detection of
9402 small movements. Must be a power of two. Default is @code{32}.
9403
9404 @item ppsrc
9405 Mark main input as a pre-processed input and activate clean source input
9406 stream. This allows the input to be pre-processed with various filters to help
9407 the metrics calculation while keeping the frame selection lossless. When set to
9408 @code{1}, the first stream is for the pre-processed input, and the second
9409 stream is the clean source from where the kept frames are chosen. Default is
9410 @code{0}.
9411
9412 @item chroma
9413 Set whether or not chroma is considered in the metric calculations. Default is
9414 @code{1}.
9415 @end table
9416
9417 @section deconvolve
9418
9419 Apply 2D deconvolution of video stream in frequency domain using second stream
9420 as impulse.
9421
9422 The filter accepts the following options:
9423
9424 @table @option
9425 @item planes
9426 Set which planes to process.
9427
9428 @item impulse
9429 Set which impulse video frames will be processed, can be @var{first}
9430 or @var{all}. Default is @var{all}.
9431
9432 @item noise
9433 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
9434 and height are not same and not power of 2 or if stream prior to convolving
9435 had noise.
9436 @end table
9437
9438 The @code{deconvolve} filter also supports the @ref{framesync} options.
9439
9440 @section dedot
9441
9442 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
9443
9444 It accepts the following options:
9445
9446 @table @option
9447 @item m
9448 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
9449 @var{rainbows} for cross-color reduction.
9450
9451 @item lt
9452 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
9453
9454 @item tl
9455 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
9456
9457 @item tc
9458 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
9459
9460 @item ct
9461 Set temporal chroma threshold. Lower values increases reduction of cross-color.
9462 @end table
9463
9464 @section deflate
9465
9466 Apply deflate effect to the video.
9467
9468 This filter replaces the pixel by the local(3x3) average by taking into account
9469 only values lower than the pixel.
9470
9471 It accepts the following options:
9472
9473 @table @option
9474 @item threshold0
9475 @item threshold1
9476 @item threshold2
9477 @item threshold3
9478 Limit the maximum change for each plane, default is 65535.
9479 If 0, plane will remain unchanged.
9480 @end table
9481
9482 @subsection Commands
9483
9484 This filter supports the all above options as @ref{commands}.
9485
9486 @section deflicker
9487
9488 Remove temporal frame luminance variations.
9489
9490 It accepts the following options:
9491
9492 @table @option
9493 @item size, s
9494 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
9495
9496 @item mode, m
9497 Set averaging mode to smooth temporal luminance variations.
9498
9499 Available values are:
9500 @table @samp
9501 @item am
9502 Arithmetic mean
9503
9504 @item gm
9505 Geometric mean
9506
9507 @item hm
9508 Harmonic mean
9509
9510 @item qm
9511 Quadratic mean
9512
9513 @item cm
9514 Cubic mean
9515
9516 @item pm
9517 Power mean
9518
9519 @item median
9520 Median
9521 @end table
9522
9523 @item bypass
9524 Do not actually modify frame. Useful when one only wants metadata.
9525 @end table
9526
9527 @section dejudder
9528
9529 Remove judder produced by partially interlaced telecined content.
9530
9531 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
9532 source was partially telecined content then the output of @code{pullup,dejudder}
9533 will have a variable frame rate. May change the recorded frame rate of the
9534 container. Aside from that change, this filter will not affect constant frame
9535 rate video.
9536
9537 The option available in this filter is:
9538 @table @option
9539
9540 @item cycle
9541 Specify the length of the window over which the judder repeats.
9542
9543 Accepts any integer greater than 1. Useful values are:
9544 @table @samp
9545
9546 @item 4
9547 If the original was telecined from 24 to 30 fps (Film to NTSC).
9548
9549 @item 5
9550 If the original was telecined from 25 to 30 fps (PAL to NTSC).
9551
9552 @item 20
9553 If a mixture of the two.
9554 @end table
9555
9556 The default is @samp{4}.
9557 @end table
9558
9559 @section delogo
9560
9561 Suppress a TV station logo by a simple interpolation of the surrounding
9562 pixels. Just set a rectangle covering the logo and watch it disappear
9563 (and sometimes something even uglier appear - your mileage may vary).
9564
9565 It accepts the following parameters:
9566 @table @option
9567
9568 @item x
9569 @item y
9570 Specify the top left corner coordinates of the logo. They must be
9571 specified.
9572
9573 @item w
9574 @item h
9575 Specify the width and height of the logo to clear. They must be
9576 specified.
9577
9578 @item band, t
9579 Specify the thickness of the fuzzy edge of the rectangle (added to
9580 @var{w} and @var{h}). The default value is 1. This option is
9581 deprecated, setting higher values should no longer be necessary and
9582 is not recommended.
9583
9584 @item show
9585 When set to 1, a green rectangle is drawn on the screen to simplify
9586 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
9587 The default value is 0.
9588
9589 The rectangle is drawn on the outermost pixels which will be (partly)
9590 replaced with interpolated values. The values of the next pixels
9591 immediately outside this rectangle in each direction will be used to
9592 compute the interpolated pixel values inside the rectangle.
9593
9594 @end table
9595
9596 @subsection Examples
9597
9598 @itemize
9599 @item
9600 Set a rectangle covering the area with top left corner coordinates 0,0
9601 and size 100x77, and a band of size 10:
9602 @example
9603 delogo=x=0:y=0:w=100:h=77:band=10
9604 @end example
9605
9606 @end itemize
9607
9608 @anchor{derain}
9609 @section derain
9610
9611 Remove the rain in the input image/video by applying the derain methods based on
9612 convolutional neural networks. Supported models:
9613
9614 @itemize
9615 @item
9616 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
9617 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
9618 @end itemize
9619
9620 Training as well as model generation scripts are provided in
9621 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
9622
9623 Native model files (.model) can be generated from TensorFlow model
9624 files (.pb) by using tools/python/convert.py
9625
9626 The filter accepts the following options:
9627
9628 @table @option
9629 @item filter_type
9630 Specify which filter to use. This option accepts the following values:
9631
9632 @table @samp
9633 @item derain
9634 Derain filter. To conduct derain filter, you need to use a derain model.
9635
9636 @item dehaze
9637 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
9638 @end table
9639 Default value is @samp{derain}.
9640
9641 @item dnn_backend
9642 Specify which DNN backend to use for model loading and execution. This option accepts
9643 the following values:
9644
9645 @table @samp
9646 @item native
9647 Native implementation of DNN loading and execution.
9648
9649 @item tensorflow
9650 TensorFlow backend. To enable this backend you
9651 need to install the TensorFlow for C library (see
9652 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9653 @code{--enable-libtensorflow}
9654 @end table
9655 Default value is @samp{native}.
9656
9657 @item model
9658 Set path to model file specifying network architecture and its parameters.
9659 Note that different backends use different file formats. TensorFlow and native
9660 backend can load files for only its format.
9661 @end table
9662
9663 It can also be finished with @ref{dnn_processing} filter.
9664
9665 @section deshake
9666
9667 Attempt to fix small changes in horizontal and/or vertical shift. This
9668 filter helps remove camera shake from hand-holding a camera, bumping a
9669 tripod, moving on a vehicle, etc.
9670
9671 The filter accepts the following options:
9672
9673 @table @option
9674
9675 @item x
9676 @item y
9677 @item w
9678 @item h
9679 Specify a rectangular area where to limit the search for motion
9680 vectors.
9681 If desired the search for motion vectors can be limited to a
9682 rectangular area of the frame defined by its top left corner, width
9683 and height. These parameters have the same meaning as the drawbox
9684 filter which can be used to visualise the position of the bounding
9685 box.
9686
9687 This is useful when simultaneous movement of subjects within the frame
9688 might be confused for camera motion by the motion vector search.
9689
9690 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
9691 then the full frame is used. This allows later options to be set
9692 without specifying the bounding box for the motion vector search.
9693
9694 Default - search the whole frame.
9695
9696 @item rx
9697 @item ry
9698 Specify the maximum extent of movement in x and y directions in the
9699 range 0-64 pixels. Default 16.
9700
9701 @item edge
9702 Specify how to generate pixels to fill blanks at the edge of the
9703 frame. Available values are:
9704 @table @samp
9705 @item blank, 0
9706 Fill zeroes at blank locations
9707 @item original, 1
9708 Original image at blank locations
9709 @item clamp, 2
9710 Extruded edge value at blank locations
9711 @item mirror, 3
9712 Mirrored edge at blank locations
9713 @end table
9714 Default value is @samp{mirror}.
9715
9716 @item blocksize
9717 Specify the blocksize to use for motion search. Range 4-128 pixels,
9718 default 8.
9719
9720 @item contrast
9721 Specify the contrast threshold for blocks. Only blocks with more than
9722 the specified contrast (difference between darkest and lightest
9723 pixels) will be considered. Range 1-255, default 125.
9724
9725 @item search
9726 Specify the search strategy. Available values are:
9727 @table @samp
9728 @item exhaustive, 0
9729 Set exhaustive search
9730 @item less, 1
9731 Set less exhaustive search.
9732 @end table
9733 Default value is @samp{exhaustive}.
9734
9735 @item filename
9736 If set then a detailed log of the motion search is written to the
9737 specified file.
9738
9739 @end table
9740
9741 @section despill
9742
9743 Remove unwanted contamination of foreground colors, caused by reflected color of
9744 greenscreen or bluescreen.
9745
9746 This filter accepts the following options:
9747
9748 @table @option
9749 @item type
9750 Set what type of despill to use.
9751
9752 @item mix
9753 Set how spillmap will be generated.
9754
9755 @item expand
9756 Set how much to get rid of still remaining spill.
9757
9758 @item red
9759 Controls amount of red in spill area.
9760
9761 @item green
9762 Controls amount of green in spill area.
9763 Should be -1 for greenscreen.
9764
9765 @item blue
9766 Controls amount of blue in spill area.
9767 Should be -1 for bluescreen.
9768
9769 @item brightness
9770 Controls brightness of spill area, preserving colors.
9771
9772 @item alpha
9773 Modify alpha from generated spillmap.
9774 @end table
9775
9776 @subsection Commands
9777
9778 This filter supports the all above options as @ref{commands}.
9779
9780 @section detelecine
9781
9782 Apply an exact inverse of the telecine operation. It requires a predefined
9783 pattern specified using the pattern option which must be the same as that passed
9784 to the telecine filter.
9785
9786 This filter accepts the following options:
9787
9788 @table @option
9789 @item first_field
9790 @table @samp
9791 @item top, t
9792 top field first
9793 @item bottom, b
9794 bottom field first
9795 The default value is @code{top}.
9796 @end table
9797
9798 @item pattern
9799 A string of numbers representing the pulldown pattern you wish to apply.
9800 The default value is @code{23}.
9801
9802 @item start_frame
9803 A number representing position of the first frame with respect to the telecine
9804 pattern. This is to be used if the stream is cut. The default value is @code{0}.
9805 @end table
9806
9807 @section dilation
9808
9809 Apply dilation effect to the video.
9810
9811 This filter replaces the pixel by the local(3x3) maximum.
9812
9813 It accepts the following options:
9814
9815 @table @option
9816 @item threshold0
9817 @item threshold1
9818 @item threshold2
9819 @item threshold3
9820 Limit the maximum change for each plane, default is 65535.
9821 If 0, plane will remain unchanged.
9822
9823 @item coordinates
9824 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9825 pixels are used.
9826
9827 Flags to local 3x3 coordinates maps like this:
9828
9829     1 2 3
9830     4   5
9831     6 7 8
9832 @end table
9833
9834 @subsection Commands
9835
9836 This filter supports the all above options as @ref{commands}.
9837
9838 @section displace
9839
9840 Displace pixels as indicated by second and third input stream.
9841
9842 It takes three input streams and outputs one stream, the first input is the
9843 source, and second and third input are displacement maps.
9844
9845 The second input specifies how much to displace pixels along the
9846 x-axis, while the third input specifies how much to displace pixels
9847 along the y-axis.
9848 If one of displacement map streams terminates, last frame from that
9849 displacement map will be used.
9850
9851 Note that once generated, displacements maps can be reused over and over again.
9852
9853 A description of the accepted options follows.
9854
9855 @table @option
9856 @item edge
9857 Set displace behavior for pixels that are out of range.
9858
9859 Available values are:
9860 @table @samp
9861 @item blank
9862 Missing pixels are replaced by black pixels.
9863
9864 @item smear
9865 Adjacent pixels will spread out to replace missing pixels.
9866
9867 @item wrap
9868 Out of range pixels are wrapped so they point to pixels of other side.
9869
9870 @item mirror
9871 Out of range pixels will be replaced with mirrored pixels.
9872 @end table
9873 Default is @samp{smear}.
9874
9875 @end table
9876
9877 @subsection Examples
9878
9879 @itemize
9880 @item
9881 Add ripple effect to rgb input of video size hd720:
9882 @example
9883 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
9884 @end example
9885
9886 @item
9887 Add wave effect to rgb input of video size hd720:
9888 @example
9889 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
9890 @end example
9891 @end itemize
9892
9893 @anchor{dnn_processing}
9894 @section dnn_processing
9895
9896 Do image processing with deep neural networks. It works together with another filter
9897 which converts the pixel format of the Frame to what the dnn network requires.
9898
9899 The filter accepts the following options:
9900
9901 @table @option
9902 @item dnn_backend
9903 Specify which DNN backend to use for model loading and execution. This option accepts
9904 the following values:
9905
9906 @table @samp
9907 @item native
9908 Native implementation of DNN loading and execution.
9909
9910 @item tensorflow
9911 TensorFlow backend. To enable this backend you
9912 need to install the TensorFlow for C library (see
9913 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9914 @code{--enable-libtensorflow}
9915
9916 @item openvino
9917 OpenVINO backend. To enable this backend you
9918 need to build and install the OpenVINO for C library (see
9919 @url{https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md}) and configure FFmpeg with
9920 @code{--enable-libopenvino} (--extra-cflags=-I... --extra-ldflags=-L... might
9921 be needed if the header files and libraries are not installed into system path)
9922
9923 @end table
9924
9925 Default value is @samp{native}.
9926
9927 @item model
9928 Set path to model file specifying network architecture and its parameters.
9929 Note that different backends use different file formats. TensorFlow, OpenVINO and native
9930 backend can load files for only its format.
9931
9932 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
9933
9934 @item input
9935 Set the input name of the dnn network.
9936
9937 @item output
9938 Set the output name of the dnn network.
9939
9940 @end table
9941
9942 @subsection Examples
9943
9944 @itemize
9945 @item
9946 Remove rain in rgb24 frame with can.pb (see @ref{derain} filter):
9947 @example
9948 ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
9949 @end example
9950
9951 @item
9952 Halve the pixel value of the frame with format gray32f:
9953 @example
9954 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
9955 @end example
9956
9957 @item
9958 Handle the Y channel with srcnn.pb (see @ref{sr} filter) for frame with yuv420p (planar YUV formats supported):
9959 @example
9960 ./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
9961 @end example
9962
9963 @item
9964 Handle the Y channel with espcn.pb (see @ref{sr} filter), which changes frame size, for format yuv420p (planar YUV formats supported):
9965 @example
9966 ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y -y tmp.espcn.jpg
9967 @end example
9968
9969 @end itemize
9970
9971 @section drawbox
9972
9973 Draw a colored box on the input image.
9974
9975 It accepts the following parameters:
9976
9977 @table @option
9978 @item x
9979 @item y
9980 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
9981
9982 @item width, w
9983 @item height, h
9984 The expressions which specify the width and height of the box; if 0 they are interpreted as
9985 the input width and height. It defaults to 0.
9986
9987 @item color, c
9988 Specify the color of the box to write. For the general syntax of this option,
9989 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9990 value @code{invert} is used, the box edge color is the same as the
9991 video with inverted luma.
9992
9993 @item thickness, t
9994 The expression which sets the thickness of the box edge.
9995 A value of @code{fill} will create a filled box. Default value is @code{3}.
9996
9997 See below for the list of accepted constants.
9998
9999 @item replace
10000 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
10001 will overwrite the video's color and alpha pixels.
10002 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
10003 @end table
10004
10005 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
10006 following constants:
10007
10008 @table @option
10009 @item dar
10010 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
10011
10012 @item hsub
10013 @item vsub
10014 horizontal and vertical chroma subsample values. For example for the
10015 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10016
10017 @item in_h, ih
10018 @item in_w, iw
10019 The input width and height.
10020
10021 @item sar
10022 The input sample aspect ratio.
10023
10024 @item x
10025 @item y
10026 The x and y offset coordinates where the box is drawn.
10027
10028 @item w
10029 @item h
10030 The width and height of the drawn box.
10031
10032 @item t
10033 The thickness of the drawn box.
10034
10035 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
10036 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
10037
10038 @end table
10039
10040 @subsection Examples
10041
10042 @itemize
10043 @item
10044 Draw a black box around the edge of the input image:
10045 @example
10046 drawbox
10047 @end example
10048
10049 @item
10050 Draw a box with color red and an opacity of 50%:
10051 @example
10052 drawbox=10:20:200:60:red@@0.5
10053 @end example
10054
10055 The previous example can be specified as:
10056 @example
10057 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
10058 @end example
10059
10060 @item
10061 Fill the box with pink color:
10062 @example
10063 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
10064 @end example
10065
10066 @item
10067 Draw a 2-pixel red 2.40:1 mask:
10068 @example
10069 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
10070 @end example
10071 @end itemize
10072
10073 @subsection Commands
10074 This filter supports same commands as options.
10075 The command accepts the same syntax of the corresponding option.
10076
10077 If the specified expression is not valid, it is kept at its current
10078 value.
10079
10080 @anchor{drawgraph}
10081 @section drawgraph
10082 Draw a graph using input video metadata.
10083
10084 It accepts the following parameters:
10085
10086 @table @option
10087 @item m1
10088 Set 1st frame metadata key from which metadata values will be used to draw a graph.
10089
10090 @item fg1
10091 Set 1st foreground color expression.
10092
10093 @item m2
10094 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
10095
10096 @item fg2
10097 Set 2nd foreground color expression.
10098
10099 @item m3
10100 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
10101
10102 @item fg3
10103 Set 3rd foreground color expression.
10104
10105 @item m4
10106 Set 4th frame metadata key from which metadata values will be used to draw a graph.
10107
10108 @item fg4
10109 Set 4th foreground color expression.
10110
10111 @item min
10112 Set minimal value of metadata value.
10113
10114 @item max
10115 Set maximal value of metadata value.
10116
10117 @item bg
10118 Set graph background color. Default is white.
10119
10120 @item mode
10121 Set graph mode.
10122
10123 Available values for mode is:
10124 @table @samp
10125 @item bar
10126 @item dot
10127 @item line
10128 @end table
10129
10130 Default is @code{line}.
10131
10132 @item slide
10133 Set slide mode.
10134
10135 Available values for slide is:
10136 @table @samp
10137 @item frame
10138 Draw new frame when right border is reached.
10139
10140 @item replace
10141 Replace old columns with new ones.
10142
10143 @item scroll
10144 Scroll from right to left.
10145
10146 @item rscroll
10147 Scroll from left to right.
10148
10149 @item picture
10150 Draw single picture.
10151 @end table
10152
10153 Default is @code{frame}.
10154
10155 @item size
10156 Set size of graph video. For the syntax of this option, check the
10157 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
10158 The default value is @code{900x256}.
10159
10160 @item rate, r
10161 Set the output frame rate. Default value is @code{25}.
10162
10163 The foreground color expressions can use the following variables:
10164 @table @option
10165 @item MIN
10166 Minimal value of metadata value.
10167
10168 @item MAX
10169 Maximal value of metadata value.
10170
10171 @item VAL
10172 Current metadata key value.
10173 @end table
10174
10175 The color is defined as 0xAABBGGRR.
10176 @end table
10177
10178 Example using metadata from @ref{signalstats} filter:
10179 @example
10180 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
10181 @end example
10182
10183 Example using metadata from @ref{ebur128} filter:
10184 @example
10185 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
10186 @end example
10187
10188 @section drawgrid
10189
10190 Draw a grid on the input image.
10191
10192 It accepts the following parameters:
10193
10194 @table @option
10195 @item x
10196 @item y
10197 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
10198
10199 @item width, w
10200 @item height, h
10201 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
10202 input width and height, respectively, minus @code{thickness}, so image gets
10203 framed. Default to 0.
10204
10205 @item color, c
10206 Specify the color of the grid. For the general syntax of this option,
10207 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
10208 value @code{invert} is used, the grid color is the same as the
10209 video with inverted luma.
10210
10211 @item thickness, t
10212 The expression which sets the thickness of the grid line. Default value is @code{1}.
10213
10214 See below for the list of accepted constants.
10215
10216 @item replace
10217 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
10218 will overwrite the video's color and alpha pixels.
10219 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
10220 @end table
10221
10222 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
10223 following constants:
10224
10225 @table @option
10226 @item dar
10227 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
10228
10229 @item hsub
10230 @item vsub
10231 horizontal and vertical chroma subsample values. For example for the
10232 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10233
10234 @item in_h, ih
10235 @item in_w, iw
10236 The input grid cell width and height.
10237
10238 @item sar
10239 The input sample aspect ratio.
10240
10241 @item x
10242 @item y
10243 The x and y coordinates of some point of grid intersection (meant to configure offset).
10244
10245 @item w
10246 @item h
10247 The width and height of the drawn cell.
10248
10249 @item t
10250 The thickness of the drawn cell.
10251
10252 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
10253 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
10254
10255 @end table
10256
10257 @subsection Examples
10258
10259 @itemize
10260 @item
10261 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
10262 @example
10263 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
10264 @end example
10265
10266 @item
10267 Draw a white 3x3 grid with an opacity of 50%:
10268 @example
10269 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
10270 @end example
10271 @end itemize
10272
10273 @subsection Commands
10274 This filter supports same commands as options.
10275 The command accepts the same syntax of the corresponding option.
10276
10277 If the specified expression is not valid, it is kept at its current
10278 value.
10279
10280 @anchor{drawtext}
10281 @section drawtext
10282
10283 Draw a text string or text from a specified file on top of a video, using the
10284 libfreetype library.
10285
10286 To enable compilation of this filter, you need to configure FFmpeg with
10287 @code{--enable-libfreetype}.
10288 To enable default font fallback and the @var{font} option you need to
10289 configure FFmpeg with @code{--enable-libfontconfig}.
10290 To enable the @var{text_shaping} option, you need to configure FFmpeg with
10291 @code{--enable-libfribidi}.
10292
10293 @subsection Syntax
10294
10295 It accepts the following parameters:
10296
10297 @table @option
10298
10299 @item box
10300 Used to draw a box around text using the background color.
10301 The value must be either 1 (enable) or 0 (disable).
10302 The default value of @var{box} is 0.
10303
10304 @item boxborderw
10305 Set the width of the border to be drawn around the box using @var{boxcolor}.
10306 The default value of @var{boxborderw} is 0.
10307
10308 @item boxcolor
10309 The color to be used for drawing box around text. For the syntax of this
10310 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10311
10312 The default value of @var{boxcolor} is "white".
10313
10314 @item line_spacing
10315 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
10316 The default value of @var{line_spacing} is 0.
10317
10318 @item borderw
10319 Set the width of the border to be drawn around the text using @var{bordercolor}.
10320 The default value of @var{borderw} is 0.
10321
10322 @item bordercolor
10323 Set the color to be used for drawing border around text. For the syntax of this
10324 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10325
10326 The default value of @var{bordercolor} is "black".
10327
10328 @item expansion
10329 Select how the @var{text} is expanded. Can be either @code{none},
10330 @code{strftime} (deprecated) or
10331 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
10332 below for details.
10333
10334 @item basetime
10335 Set a start time for the count. Value is in microseconds. Only applied
10336 in the deprecated strftime expansion mode. To emulate in normal expansion
10337 mode use the @code{pts} function, supplying the start time (in seconds)
10338 as the second argument.
10339
10340 @item fix_bounds
10341 If true, check and fix text coords to avoid clipping.
10342
10343 @item fontcolor
10344 The color to be used for drawing fonts. For the syntax of this option, check
10345 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10346
10347 The default value of @var{fontcolor} is "black".
10348
10349 @item fontcolor_expr
10350 String which is expanded the same way as @var{text} to obtain dynamic
10351 @var{fontcolor} value. By default this option has empty value and is not
10352 processed. When this option is set, it overrides @var{fontcolor} option.
10353
10354 @item font
10355 The font family to be used for drawing text. By default Sans.
10356
10357 @item fontfile
10358 The font file to be used for drawing text. The path must be included.
10359 This parameter is mandatory if the fontconfig support is disabled.
10360
10361 @item alpha
10362 Draw the text applying alpha blending. The value can
10363 be a number between 0.0 and 1.0.
10364 The expression accepts the same variables @var{x, y} as well.
10365 The default value is 1.
10366 Please see @var{fontcolor_expr}.
10367
10368 @item fontsize
10369 The font size to be used for drawing text.
10370 The default value of @var{fontsize} is 16.
10371
10372 @item text_shaping
10373 If set to 1, attempt to shape the text (for example, reverse the order of
10374 right-to-left text and join Arabic characters) before drawing it.
10375 Otherwise, just draw the text exactly as given.
10376 By default 1 (if supported).
10377
10378 @item ft_load_flags
10379 The flags to be used for loading the fonts.
10380
10381 The flags map the corresponding flags supported by libfreetype, and are
10382 a combination of the following values:
10383 @table @var
10384 @item default
10385 @item no_scale
10386 @item no_hinting
10387 @item render
10388 @item no_bitmap
10389 @item vertical_layout
10390 @item force_autohint
10391 @item crop_bitmap
10392 @item pedantic
10393 @item ignore_global_advance_width
10394 @item no_recurse
10395 @item ignore_transform
10396 @item monochrome
10397 @item linear_design
10398 @item no_autohint
10399 @end table
10400
10401 Default value is "default".
10402
10403 For more information consult the documentation for the FT_LOAD_*
10404 libfreetype flags.
10405
10406 @item shadowcolor
10407 The color to be used for drawing a shadow behind the drawn text. For the
10408 syntax of this option, check the @ref{color syntax,,"Color" section in the
10409 ffmpeg-utils manual,ffmpeg-utils}.
10410
10411 The default value of @var{shadowcolor} is "black".
10412
10413 @item shadowx
10414 @item shadowy
10415 The x and y offsets for the text shadow position with respect to the
10416 position of the text. They can be either positive or negative
10417 values. The default value for both is "0".
10418
10419 @item start_number
10420 The starting frame number for the n/frame_num variable. The default value
10421 is "0".
10422
10423 @item tabsize
10424 The size in number of spaces to use for rendering the tab.
10425 Default value is 4.
10426
10427 @item timecode
10428 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
10429 format. It can be used with or without text parameter. @var{timecode_rate}
10430 option must be specified.
10431
10432 @item timecode_rate, rate, r
10433 Set the timecode frame rate (timecode only). Value will be rounded to nearest
10434 integer. Minimum value is "1".
10435 Drop-frame timecode is supported for frame rates 30 & 60.
10436
10437 @item tc24hmax
10438 If set to 1, the output of the timecode option will wrap around at 24 hours.
10439 Default is 0 (disabled).
10440
10441 @item text
10442 The text string to be drawn. The text must be a sequence of UTF-8
10443 encoded characters.
10444 This parameter is mandatory if no file is specified with the parameter
10445 @var{textfile}.
10446
10447 @item textfile
10448 A text file containing text to be drawn. The text must be a sequence
10449 of UTF-8 encoded characters.
10450
10451 This parameter is mandatory if no text string is specified with the
10452 parameter @var{text}.
10453
10454 If both @var{text} and @var{textfile} are specified, an error is thrown.
10455
10456 @item reload
10457 If set to 1, the @var{textfile} will be reloaded before each frame.
10458 Be sure to update it atomically, or it may be read partially, or even fail.
10459
10460 @item x
10461 @item y
10462 The expressions which specify the offsets where text will be drawn
10463 within the video frame. They are relative to the top/left border of the
10464 output image.
10465
10466 The default value of @var{x} and @var{y} is "0".
10467
10468 See below for the list of accepted constants and functions.
10469 @end table
10470
10471 The parameters for @var{x} and @var{y} are expressions containing the
10472 following constants and functions:
10473
10474 @table @option
10475 @item dar
10476 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
10477
10478 @item hsub
10479 @item vsub
10480 horizontal and vertical chroma subsample values. For example for the
10481 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10482
10483 @item line_h, lh
10484 the height of each text line
10485
10486 @item main_h, h, H
10487 the input height
10488
10489 @item main_w, w, W
10490 the input width
10491
10492 @item max_glyph_a, ascent
10493 the maximum distance from the baseline to the highest/upper grid
10494 coordinate used to place a glyph outline point, for all the rendered
10495 glyphs.
10496 It is a positive value, due to the grid's orientation with the Y axis
10497 upwards.
10498
10499 @item max_glyph_d, descent
10500 the maximum distance from the baseline to the lowest grid coordinate
10501 used to place a glyph outline point, for all the rendered glyphs.
10502 This is a negative value, due to the grid's orientation, with the Y axis
10503 upwards.
10504
10505 @item max_glyph_h
10506 maximum glyph height, that is the maximum height for all the glyphs
10507 contained in the rendered text, it is equivalent to @var{ascent} -
10508 @var{descent}.
10509
10510 @item max_glyph_w
10511 maximum glyph width, that is the maximum width for all the glyphs
10512 contained in the rendered text
10513
10514 @item n
10515 the number of input frame, starting from 0
10516
10517 @item rand(min, max)
10518 return a random number included between @var{min} and @var{max}
10519
10520 @item sar
10521 The input sample aspect ratio.
10522
10523 @item t
10524 timestamp expressed in seconds, NAN if the input timestamp is unknown
10525
10526 @item text_h, th
10527 the height of the rendered text
10528
10529 @item text_w, tw
10530 the width of the rendered text
10531
10532 @item x
10533 @item y
10534 the x and y offset coordinates where the text is drawn.
10535
10536 These parameters allow the @var{x} and @var{y} expressions to refer
10537 to each other, so you can for example specify @code{y=x/dar}.
10538
10539 @item pict_type
10540 A one character description of the current frame's picture type.
10541
10542 @item pkt_pos
10543 The current packet's position in the input file or stream
10544 (in bytes, from the start of the input). A value of -1 indicates
10545 this info is not available.
10546
10547 @item pkt_duration
10548 The current packet's duration, in seconds.
10549
10550 @item pkt_size
10551 The current packet's size (in bytes).
10552 @end table
10553
10554 @anchor{drawtext_expansion}
10555 @subsection Text expansion
10556
10557 If @option{expansion} is set to @code{strftime},
10558 the filter recognizes strftime() sequences in the provided text and
10559 expands them accordingly. Check the documentation of strftime(). This
10560 feature is deprecated.
10561
10562 If @option{expansion} is set to @code{none}, the text is printed verbatim.
10563
10564 If @option{expansion} is set to @code{normal} (which is the default),
10565 the following expansion mechanism is used.
10566
10567 The backslash character @samp{\}, followed by any character, always expands to
10568 the second character.
10569
10570 Sequences of the form @code{%@{...@}} are expanded. The text between the
10571 braces is a function name, possibly followed by arguments separated by ':'.
10572 If the arguments contain special characters or delimiters (':' or '@}'),
10573 they should be escaped.
10574
10575 Note that they probably must also be escaped as the value for the
10576 @option{text} option in the filter argument string and as the filter
10577 argument in the filtergraph description, and possibly also for the shell,
10578 that makes up to four levels of escaping; using a text file avoids these
10579 problems.
10580
10581 The following functions are available:
10582
10583 @table @command
10584
10585 @item expr, e
10586 The expression evaluation result.
10587
10588 It must take one argument specifying the expression to be evaluated,
10589 which accepts the same constants and functions as the @var{x} and
10590 @var{y} values. Note that not all constants should be used, for
10591 example the text size is not known when evaluating the expression, so
10592 the constants @var{text_w} and @var{text_h} will have an undefined
10593 value.
10594
10595 @item expr_int_format, eif
10596 Evaluate the expression's value and output as formatted integer.
10597
10598 The first argument is the expression to be evaluated, just as for the @var{expr} function.
10599 The second argument specifies the output format. Allowed values are @samp{x},
10600 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
10601 @code{printf} function.
10602 The third parameter is optional and sets the number of positions taken by the output.
10603 It can be used to add padding with zeros from the left.
10604
10605 @item gmtime
10606 The time at which the filter is running, expressed in UTC.
10607 It can accept an argument: a strftime() format string.
10608
10609 @item localtime
10610 The time at which the filter is running, expressed in the local time zone.
10611 It can accept an argument: a strftime() format string.
10612
10613 @item metadata
10614 Frame metadata. Takes one or two arguments.
10615
10616 The first argument is mandatory and specifies the metadata key.
10617
10618 The second argument is optional and specifies a default value, used when the
10619 metadata key is not found or empty.
10620
10621 Available metadata can be identified by inspecting entries
10622 starting with TAG included within each frame section
10623 printed by running @code{ffprobe -show_frames}.
10624
10625 String metadata generated in filters leading to
10626 the drawtext filter are also available.
10627
10628 @item n, frame_num
10629 The frame number, starting from 0.
10630
10631 @item pict_type
10632 A one character description of the current picture type.
10633
10634 @item pts
10635 The timestamp of the current frame.
10636 It can take up to three arguments.
10637
10638 The first argument is the format of the timestamp; it defaults to @code{flt}
10639 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
10640 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
10641 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
10642 @code{localtime} stands for the timestamp of the frame formatted as
10643 local time zone time.
10644
10645 The second argument is an offset added to the timestamp.
10646
10647 If the format is set to @code{hms}, a third argument @code{24HH} may be
10648 supplied to present the hour part of the formatted timestamp in 24h format
10649 (00-23).
10650
10651 If the format is set to @code{localtime} or @code{gmtime},
10652 a third argument may be supplied: a strftime() format string.
10653 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
10654 @end table
10655
10656 @subsection Commands
10657
10658 This filter supports altering parameters via commands:
10659 @table @option
10660 @item reinit
10661 Alter existing filter parameters.
10662
10663 Syntax for the argument is the same as for filter invocation, e.g.
10664
10665 @example
10666 fontsize=56:fontcolor=green:text='Hello World'
10667 @end example
10668
10669 Full filter invocation with sendcmd would look like this:
10670
10671 @example
10672 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
10673 @end example
10674 @end table
10675
10676 If the entire argument can't be parsed or applied as valid values then the filter will
10677 continue with its existing parameters.
10678
10679 @subsection Examples
10680
10681 @itemize
10682 @item
10683 Draw "Test Text" with font FreeSerif, using the default values for the
10684 optional parameters.
10685
10686 @example
10687 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
10688 @end example
10689
10690 @item
10691 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
10692 and y=50 (counting from the top-left corner of the screen), text is
10693 yellow with a red box around it. Both the text and the box have an
10694 opacity of 20%.
10695
10696 @example
10697 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
10698           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
10699 @end example
10700
10701 Note that the double quotes are not necessary if spaces are not used
10702 within the parameter list.
10703
10704 @item
10705 Show the text at the center of the video frame:
10706 @example
10707 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
10708 @end example
10709
10710 @item
10711 Show the text at a random position, switching to a new position every 30 seconds:
10712 @example
10713 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)"
10714 @end example
10715
10716 @item
10717 Show a text line sliding from right to left in the last row of the video
10718 frame. The file @file{LONG_LINE} is assumed to contain a single line
10719 with no newlines.
10720 @example
10721 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
10722 @end example
10723
10724 @item
10725 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
10726 @example
10727 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
10728 @end example
10729
10730 @item
10731 Draw a single green letter "g", at the center of the input video.
10732 The glyph baseline is placed at half screen height.
10733 @example
10734 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
10735 @end example
10736
10737 @item
10738 Show text for 1 second every 3 seconds:
10739 @example
10740 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
10741 @end example
10742
10743 @item
10744 Use fontconfig to set the font. Note that the colons need to be escaped.
10745 @example
10746 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
10747 @end example
10748
10749 @item
10750 Draw "Test Text" with font size dependent on height of the video.
10751 @example
10752 drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
10753 @end example
10754
10755 @item
10756 Print the date of a real-time encoding (see strftime(3)):
10757 @example
10758 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
10759 @end example
10760
10761 @item
10762 Show text fading in and out (appearing/disappearing):
10763 @example
10764 #!/bin/sh
10765 DS=1.0 # display start
10766 DE=10.0 # display end
10767 FID=1.5 # fade in duration
10768 FOD=5 # fade out duration
10769 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 @}"
10770 @end example
10771
10772 @item
10773 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
10774 and the @option{fontsize} value are included in the @option{y} offset.
10775 @example
10776 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
10777 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
10778 @end example
10779
10780 @item
10781 Plot special @var{lavf.image2dec.source_basename} metadata onto each frame if
10782 such metadata exists. Otherwise, plot the string "NA". Note that image2 demuxer
10783 must have option @option{-export_path_metadata 1} for the special metadata fields
10784 to be available for filters.
10785 @example
10786 drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%@{metadata\:lavf.image2dec.source_basename\:NA@}':x=10:y=10"
10787 @end example
10788
10789 @end itemize
10790
10791 For more information about libfreetype, check:
10792 @url{http://www.freetype.org/}.
10793
10794 For more information about fontconfig, check:
10795 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
10796
10797 For more information about libfribidi, check:
10798 @url{http://fribidi.org/}.
10799
10800 @section edgedetect
10801
10802 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
10803
10804 The filter accepts the following options:
10805
10806 @table @option
10807 @item low
10808 @item high
10809 Set low and high threshold values used by the Canny thresholding
10810 algorithm.
10811
10812 The high threshold selects the "strong" edge pixels, which are then
10813 connected through 8-connectivity with the "weak" edge pixels selected
10814 by the low threshold.
10815
10816 @var{low} and @var{high} threshold values must be chosen in the range
10817 [0,1], and @var{low} should be lesser or equal to @var{high}.
10818
10819 Default value for @var{low} is @code{20/255}, and default value for @var{high}
10820 is @code{50/255}.
10821
10822 @item mode
10823 Define the drawing mode.
10824
10825 @table @samp
10826 @item wires
10827 Draw white/gray wires on black background.
10828
10829 @item colormix
10830 Mix the colors to create a paint/cartoon effect.
10831
10832 @item canny
10833 Apply Canny edge detector on all selected planes.
10834 @end table
10835 Default value is @var{wires}.
10836
10837 @item planes
10838 Select planes for filtering. By default all available planes are filtered.
10839 @end table
10840
10841 @subsection Examples
10842
10843 @itemize
10844 @item
10845 Standard edge detection with custom values for the hysteresis thresholding:
10846 @example
10847 edgedetect=low=0.1:high=0.4
10848 @end example
10849
10850 @item
10851 Painting effect without thresholding:
10852 @example
10853 edgedetect=mode=colormix:high=0
10854 @end example
10855 @end itemize
10856
10857 @section elbg
10858
10859 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
10860
10861 For each input image, the filter will compute the optimal mapping from
10862 the input to the output given the codebook length, that is the number
10863 of distinct output colors.
10864
10865 This filter accepts the following options.
10866
10867 @table @option
10868 @item codebook_length, l
10869 Set codebook length. The value must be a positive integer, and
10870 represents the number of distinct output colors. Default value is 256.
10871
10872 @item nb_steps, n
10873 Set the maximum number of iterations to apply for computing the optimal
10874 mapping. The higher the value the better the result and the higher the
10875 computation time. Default value is 1.
10876
10877 @item seed, s
10878 Set a random seed, must be an integer included between 0 and
10879 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
10880 will try to use a good random seed on a best effort basis.
10881
10882 @item pal8
10883 Set pal8 output pixel format. This option does not work with codebook
10884 length greater than 256.
10885 @end table
10886
10887 @section entropy
10888
10889 Measure graylevel entropy in histogram of color channels of video frames.
10890
10891 It accepts the following parameters:
10892
10893 @table @option
10894 @item mode
10895 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
10896
10897 @var{diff} mode measures entropy of histogram delta values, absolute differences
10898 between neighbour histogram values.
10899 @end table
10900
10901 @section eq
10902 Set brightness, contrast, saturation and approximate gamma adjustment.
10903
10904 The filter accepts the following options:
10905
10906 @table @option
10907 @item contrast
10908 Set the contrast expression. The value must be a float value in range
10909 @code{-1000.0} to @code{1000.0}. The default value is "1".
10910
10911 @item brightness
10912 Set the brightness expression. The value must be a float value in
10913 range @code{-1.0} to @code{1.0}. The default value is "0".
10914
10915 @item saturation
10916 Set the saturation expression. The value must be a float in
10917 range @code{0.0} to @code{3.0}. The default value is "1".
10918
10919 @item gamma
10920 Set the gamma expression. 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_r
10924 Set the gamma expression for red. The value must be a float in
10925 range @code{0.1} to @code{10.0}. The default value is "1".
10926
10927 @item gamma_g
10928 Set the gamma expression for green. The value must be a float in range
10929 @code{0.1} to @code{10.0}. The default value is "1".
10930
10931 @item gamma_b
10932 Set the gamma expression for blue. The value must be a float in range
10933 @code{0.1} to @code{10.0}. The default value is "1".
10934
10935 @item gamma_weight
10936 Set the gamma weight expression. It can be used to reduce the effect
10937 of a high gamma value on bright image areas, e.g. keep them from
10938 getting overamplified and just plain white. The value must be a float
10939 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
10940 gamma correction all the way down while @code{1.0} leaves it at its
10941 full strength. Default is "1".
10942
10943 @item eval
10944 Set when the expressions for brightness, contrast, saturation and
10945 gamma expressions are evaluated.
10946
10947 It accepts the following values:
10948 @table @samp
10949 @item init
10950 only evaluate expressions once during the filter initialization or
10951 when a command is processed
10952
10953 @item frame
10954 evaluate expressions for each incoming frame
10955 @end table
10956
10957 Default value is @samp{init}.
10958 @end table
10959
10960 The expressions accept the following parameters:
10961 @table @option
10962 @item n
10963 frame count of the input frame starting from 0
10964
10965 @item pos
10966 byte position of the corresponding packet in the input file, NAN if
10967 unspecified
10968
10969 @item r
10970 frame rate of the input video, NAN if the input frame rate is unknown
10971
10972 @item t
10973 timestamp expressed in seconds, NAN if the input timestamp is unknown
10974 @end table
10975
10976 @subsection Commands
10977 The filter supports the following commands:
10978
10979 @table @option
10980 @item contrast
10981 Set the contrast expression.
10982
10983 @item brightness
10984 Set the brightness expression.
10985
10986 @item saturation
10987 Set the saturation expression.
10988
10989 @item gamma
10990 Set the gamma expression.
10991
10992 @item gamma_r
10993 Set the gamma_r expression.
10994
10995 @item gamma_g
10996 Set gamma_g expression.
10997
10998 @item gamma_b
10999 Set gamma_b expression.
11000
11001 @item gamma_weight
11002 Set gamma_weight expression.
11003
11004 The command accepts the same syntax of the corresponding option.
11005
11006 If the specified expression is not valid, it is kept at its current
11007 value.
11008
11009 @end table
11010
11011 @section erosion
11012
11013 Apply erosion effect to the video.
11014
11015 This filter replaces the pixel by the local(3x3) minimum.
11016
11017 It accepts the following options:
11018
11019 @table @option
11020 @item threshold0
11021 @item threshold1
11022 @item threshold2
11023 @item threshold3
11024 Limit the maximum change for each plane, default is 65535.
11025 If 0, plane will remain unchanged.
11026
11027 @item coordinates
11028 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
11029 pixels are used.
11030
11031 Flags to local 3x3 coordinates maps like this:
11032
11033     1 2 3
11034     4   5
11035     6 7 8
11036 @end table
11037
11038 @subsection Commands
11039
11040 This filter supports the all above options as @ref{commands}.
11041
11042 @section extractplanes
11043
11044 Extract color channel components from input video stream into
11045 separate grayscale video streams.
11046
11047 The filter accepts the following option:
11048
11049 @table @option
11050 @item planes
11051 Set plane(s) to extract.
11052
11053 Available values for planes are:
11054 @table @samp
11055 @item y
11056 @item u
11057 @item v
11058 @item a
11059 @item r
11060 @item g
11061 @item b
11062 @end table
11063
11064 Choosing planes not available in the input will result in an error.
11065 That means you cannot select @code{r}, @code{g}, @code{b} planes
11066 with @code{y}, @code{u}, @code{v} planes at same time.
11067 @end table
11068
11069 @subsection Examples
11070
11071 @itemize
11072 @item
11073 Extract luma, u and v color channel component from input video frame
11074 into 3 grayscale outputs:
11075 @example
11076 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
11077 @end example
11078 @end itemize
11079
11080 @section fade
11081
11082 Apply a fade-in/out effect to the input video.
11083
11084 It accepts the following parameters:
11085
11086 @table @option
11087 @item type, t
11088 The effect type can be either "in" for a fade-in, or "out" for a fade-out
11089 effect.
11090 Default is @code{in}.
11091
11092 @item start_frame, s
11093 Specify the number of the frame to start applying the fade
11094 effect at. Default is 0.
11095
11096 @item nb_frames, n
11097 The number of frames that the fade effect lasts. At the end of the
11098 fade-in effect, the output video will have the same intensity as the input video.
11099 At the end of the fade-out transition, the output video will be filled with the
11100 selected @option{color}.
11101 Default is 25.
11102
11103 @item alpha
11104 If set to 1, fade only alpha channel, if one exists on the input.
11105 Default value is 0.
11106
11107 @item start_time, st
11108 Specify the timestamp (in seconds) of the frame to start to apply the fade
11109 effect. If both start_frame and start_time are specified, the fade will start at
11110 whichever comes last.  Default is 0.
11111
11112 @item duration, d
11113 The number of seconds for which the fade effect has to last. At the end of the
11114 fade-in effect the output video will have the same intensity as the input video,
11115 at the end of the fade-out transition the output video will be filled with the
11116 selected @option{color}.
11117 If both duration and nb_frames are specified, duration is used. Default is 0
11118 (nb_frames is used by default).
11119
11120 @item color, c
11121 Specify the color of the fade. Default is "black".
11122 @end table
11123
11124 @subsection Examples
11125
11126 @itemize
11127 @item
11128 Fade in the first 30 frames of video:
11129 @example
11130 fade=in:0:30
11131 @end example
11132
11133 The command above is equivalent to:
11134 @example
11135 fade=t=in:s=0:n=30
11136 @end example
11137
11138 @item
11139 Fade out the last 45 frames of a 200-frame video:
11140 @example
11141 fade=out:155:45
11142 fade=type=out:start_frame=155:nb_frames=45
11143 @end example
11144
11145 @item
11146 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
11147 @example
11148 fade=in:0:25, fade=out:975:25
11149 @end example
11150
11151 @item
11152 Make the first 5 frames yellow, then fade in from frame 5-24:
11153 @example
11154 fade=in:5:20:color=yellow
11155 @end example
11156
11157 @item
11158 Fade in alpha over first 25 frames of video:
11159 @example
11160 fade=in:0:25:alpha=1
11161 @end example
11162
11163 @item
11164 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
11165 @example
11166 fade=t=in:st=5.5:d=0.5
11167 @end example
11168
11169 @end itemize
11170
11171 @section fftdnoiz
11172 Denoise frames using 3D FFT (frequency domain filtering).
11173
11174 The filter accepts the following options:
11175
11176 @table @option
11177 @item sigma
11178 Set the noise sigma constant. This sets denoising strength.
11179 Default value is 1. Allowed range is from 0 to 30.
11180 Using very high sigma with low overlap may give blocking artifacts.
11181
11182 @item amount
11183 Set amount of denoising. By default all detected noise is reduced.
11184 Default value is 1. Allowed range is from 0 to 1.
11185
11186 @item block
11187 Set size of block, Default is 4, can be 3, 4, 5 or 6.
11188 Actual size of block in pixels is 2 to power of @var{block}, so by default
11189 block size in pixels is 2^4 which is 16.
11190
11191 @item overlap
11192 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
11193
11194 @item prev
11195 Set number of previous frames to use for denoising. By default is set to 0.
11196
11197 @item next
11198 Set number of next frames to to use for denoising. By default is set to 0.
11199
11200 @item planes
11201 Set planes which will be filtered, by default are all available filtered
11202 except alpha.
11203 @end table
11204
11205 @section fftfilt
11206 Apply arbitrary expressions to samples in frequency domain
11207
11208 @table @option
11209 @item dc_Y
11210 Adjust the dc value (gain) of the luma plane of the image. The filter
11211 accepts an integer value in range @code{0} to @code{1000}. The default
11212 value is set to @code{0}.
11213
11214 @item dc_U
11215 Adjust the dc value (gain) of the 1st chroma plane of the image. The
11216 filter accepts an integer value in range @code{0} to @code{1000}. The
11217 default value is set to @code{0}.
11218
11219 @item dc_V
11220 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
11221 filter accepts an integer value in range @code{0} to @code{1000}. The
11222 default value is set to @code{0}.
11223
11224 @item weight_Y
11225 Set the frequency domain weight expression for the luma plane.
11226
11227 @item weight_U
11228 Set the frequency domain weight expression for the 1st chroma plane.
11229
11230 @item weight_V
11231 Set the frequency domain weight expression for the 2nd chroma plane.
11232
11233 @item eval
11234 Set when the expressions are evaluated.
11235
11236 It accepts the following values:
11237 @table @samp
11238 @item init
11239 Only evaluate expressions once during the filter initialization.
11240
11241 @item frame
11242 Evaluate expressions for each incoming frame.
11243 @end table
11244
11245 Default value is @samp{init}.
11246
11247 The filter accepts the following variables:
11248 @item X
11249 @item Y
11250 The coordinates of the current sample.
11251
11252 @item W
11253 @item H
11254 The width and height of the image.
11255
11256 @item N
11257 The number of input frame, starting from 0.
11258 @end table
11259
11260 @subsection Examples
11261
11262 @itemize
11263 @item
11264 High-pass:
11265 @example
11266 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
11267 @end example
11268
11269 @item
11270 Low-pass:
11271 @example
11272 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
11273 @end example
11274
11275 @item
11276 Sharpen:
11277 @example
11278 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
11279 @end example
11280
11281 @item
11282 Blur:
11283 @example
11284 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
11285 @end example
11286
11287 @end itemize
11288
11289 @section field
11290
11291 Extract a single field from an interlaced image using stride
11292 arithmetic to avoid wasting CPU time. The output frames are marked as
11293 non-interlaced.
11294
11295 The filter accepts the following options:
11296
11297 @table @option
11298 @item type
11299 Specify whether to extract the top (if the value is @code{0} or
11300 @code{top}) or the bottom field (if the value is @code{1} or
11301 @code{bottom}).
11302 @end table
11303
11304 @section fieldhint
11305
11306 Create new frames by copying the top and bottom fields from surrounding frames
11307 supplied as numbers by the hint file.
11308
11309 @table @option
11310 @item hint
11311 Set file containing hints: absolute/relative frame numbers.
11312
11313 There must be one line for each frame in a clip. Each line must contain two
11314 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
11315 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
11316 is current frame number for @code{absolute} mode or out of [-1, 1] range
11317 for @code{relative} mode. First number tells from which frame to pick up top
11318 field and second number tells from which frame to pick up bottom field.
11319
11320 If optionally followed by @code{+} output frame will be marked as interlaced,
11321 else if followed by @code{-} output frame will be marked as progressive, else
11322 it will be marked same as input frame.
11323 If optionally followed by @code{t} output frame will use only top field, or in
11324 case of @code{b} it will use only bottom field.
11325 If line starts with @code{#} or @code{;} that line is skipped.
11326
11327 @item mode
11328 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
11329 @end table
11330
11331 Example of first several lines of @code{hint} file for @code{relative} mode:
11332 @example
11333 0,0 - # first frame
11334 1,0 - # second frame, use third's frame top field and second's frame bottom field
11335 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
11336 1,0 -
11337 0,0 -
11338 0,0 -
11339 1,0 -
11340 1,0 -
11341 1,0 -
11342 0,0 -
11343 0,0 -
11344 1,0 -
11345 1,0 -
11346 1,0 -
11347 0,0 -
11348 @end example
11349
11350 @section fieldmatch
11351
11352 Field matching filter for inverse telecine. It is meant to reconstruct the
11353 progressive frames from a telecined stream. The filter does not drop duplicated
11354 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
11355 followed by a decimation filter such as @ref{decimate} in the filtergraph.
11356
11357 The separation of the field matching and the decimation is notably motivated by
11358 the possibility of inserting a de-interlacing filter fallback between the two.
11359 If the source has mixed telecined and real interlaced content,
11360 @code{fieldmatch} will not be able to match fields for the interlaced parts.
11361 But these remaining combed frames will be marked as interlaced, and thus can be
11362 de-interlaced by a later filter such as @ref{yadif} before decimation.
11363
11364 In addition to the various configuration options, @code{fieldmatch} can take an
11365 optional second stream, activated through the @option{ppsrc} option. If
11366 enabled, the frames reconstruction will be based on the fields and frames from
11367 this second stream. This allows the first input to be pre-processed in order to
11368 help the various algorithms of the filter, while keeping the output lossless
11369 (assuming the fields are matched properly). Typically, a field-aware denoiser,
11370 or brightness/contrast adjustments can help.
11371
11372 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
11373 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
11374 which @code{fieldmatch} is based on. While the semantic and usage are very
11375 close, some behaviour and options names can differ.
11376
11377 The @ref{decimate} filter currently only works for constant frame rate input.
11378 If your input has mixed telecined (30fps) and progressive content with a lower
11379 framerate like 24fps use the following filterchain to produce the necessary cfr
11380 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
11381
11382 The filter accepts the following options:
11383
11384 @table @option
11385 @item order
11386 Specify the assumed field order of the input stream. Available values are:
11387
11388 @table @samp
11389 @item auto
11390 Auto detect parity (use FFmpeg's internal parity value).
11391 @item bff
11392 Assume bottom field first.
11393 @item tff
11394 Assume top field first.
11395 @end table
11396
11397 Note that it is sometimes recommended not to trust the parity announced by the
11398 stream.
11399
11400 Default value is @var{auto}.
11401
11402 @item mode
11403 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
11404 sense that it won't risk creating jerkiness due to duplicate frames when
11405 possible, but if there are bad edits or blended fields it will end up
11406 outputting combed frames when a good match might actually exist. On the other
11407 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
11408 but will almost always find a good frame if there is one. The other values are
11409 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
11410 jerkiness and creating duplicate frames versus finding good matches in sections
11411 with bad edits, orphaned fields, blended fields, etc.
11412
11413 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
11414
11415 Available values are:
11416
11417 @table @samp
11418 @item pc
11419 2-way matching (p/c)
11420 @item pc_n
11421 2-way matching, and trying 3rd match if still combed (p/c + n)
11422 @item pc_u
11423 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
11424 @item pc_n_ub
11425 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
11426 still combed (p/c + n + u/b)
11427 @item pcn
11428 3-way matching (p/c/n)
11429 @item pcn_ub
11430 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
11431 detected as combed (p/c/n + u/b)
11432 @end table
11433
11434 The parenthesis at the end indicate the matches that would be used for that
11435 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
11436 @var{top}).
11437
11438 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
11439 the slowest.
11440
11441 Default value is @var{pc_n}.
11442
11443 @item ppsrc
11444 Mark the main input stream as a pre-processed input, and enable the secondary
11445 input stream as the clean source to pick the fields from. See the filter
11446 introduction for more details. It is similar to the @option{clip2} feature from
11447 VFM/TFM.
11448
11449 Default value is @code{0} (disabled).
11450
11451 @item field
11452 Set the field to match from. It is recommended to set this to the same value as
11453 @option{order} unless you experience matching failures with that setting. In
11454 certain circumstances changing the field that is used to match from can have a
11455 large impact on matching performance. Available values are:
11456
11457 @table @samp
11458 @item auto
11459 Automatic (same value as @option{order}).
11460 @item bottom
11461 Match from the bottom field.
11462 @item top
11463 Match from the top field.
11464 @end table
11465
11466 Default value is @var{auto}.
11467
11468 @item mchroma
11469 Set whether or not chroma is included during the match comparisons. In most
11470 cases it is recommended to leave this enabled. You should set this to @code{0}
11471 only if your clip has bad chroma problems such as heavy rainbowing or other
11472 artifacts. Setting this to @code{0} could also be used to speed things up at
11473 the cost of some accuracy.
11474
11475 Default value is @code{1}.
11476
11477 @item y0
11478 @item y1
11479 These define an exclusion band which excludes the lines between @option{y0} and
11480 @option{y1} from being included in the field matching decision. An exclusion
11481 band can be used to ignore subtitles, a logo, or other things that may
11482 interfere with the matching. @option{y0} sets the starting scan line and
11483 @option{y1} sets the ending line; all lines in between @option{y0} and
11484 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
11485 @option{y0} and @option{y1} to the same value will disable the feature.
11486 @option{y0} and @option{y1} defaults to @code{0}.
11487
11488 @item scthresh
11489 Set the scene change detection threshold as a percentage of maximum change on
11490 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
11491 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
11492 @option{scthresh} is @code{[0.0, 100.0]}.
11493
11494 Default value is @code{12.0}.
11495
11496 @item combmatch
11497 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
11498 account the combed scores of matches when deciding what match to use as the
11499 final match. Available values are:
11500
11501 @table @samp
11502 @item none
11503 No final matching based on combed scores.
11504 @item sc
11505 Combed scores are only used when a scene change is detected.
11506 @item full
11507 Use combed scores all the time.
11508 @end table
11509
11510 Default is @var{sc}.
11511
11512 @item combdbg
11513 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
11514 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
11515 Available values are:
11516
11517 @table @samp
11518 @item none
11519 No forced calculation.
11520 @item pcn
11521 Force p/c/n calculations.
11522 @item pcnub
11523 Force p/c/n/u/b calculations.
11524 @end table
11525
11526 Default value is @var{none}.
11527
11528 @item cthresh
11529 This is the area combing threshold used for combed frame detection. This
11530 essentially controls how "strong" or "visible" combing must be to be detected.
11531 Larger values mean combing must be more visible and smaller values mean combing
11532 can be less visible or strong and still be detected. Valid settings are from
11533 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
11534 be detected as combed). This is basically a pixel difference value. A good
11535 range is @code{[8, 12]}.
11536
11537 Default value is @code{9}.
11538
11539 @item chroma
11540 Sets whether or not chroma is considered in the combed frame decision.  Only
11541 disable this if your source has chroma problems (rainbowing, etc.) that are
11542 causing problems for the combed frame detection with chroma enabled. Actually,
11543 using @option{chroma}=@var{0} is usually more reliable, except for the case
11544 where there is chroma only combing in the source.
11545
11546 Default value is @code{0}.
11547
11548 @item blockx
11549 @item blocky
11550 Respectively set the x-axis and y-axis size of the window used during combed
11551 frame detection. This has to do with the size of the area in which
11552 @option{combpel} pixels are required to be detected as combed for a frame to be
11553 declared combed. See the @option{combpel} parameter description for more info.
11554 Possible values are any number that is a power of 2 starting at 4 and going up
11555 to 512.
11556
11557 Default value is @code{16}.
11558
11559 @item combpel
11560 The number of combed pixels inside any of the @option{blocky} by
11561 @option{blockx} size blocks on the frame for the frame to be detected as
11562 combed. While @option{cthresh} controls how "visible" the combing must be, this
11563 setting controls "how much" combing there must be in any localized area (a
11564 window defined by the @option{blockx} and @option{blocky} settings) on the
11565 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
11566 which point no frames will ever be detected as combed). This setting is known
11567 as @option{MI} in TFM/VFM vocabulary.
11568
11569 Default value is @code{80}.
11570 @end table
11571
11572 @anchor{p/c/n/u/b meaning}
11573 @subsection p/c/n/u/b meaning
11574
11575 @subsubsection p/c/n
11576
11577 We assume the following telecined stream:
11578
11579 @example
11580 Top fields:     1 2 2 3 4
11581 Bottom fields:  1 2 3 4 4
11582 @end example
11583
11584 The numbers correspond to the progressive frame the fields relate to. Here, the
11585 first two frames are progressive, the 3rd and 4th are combed, and so on.
11586
11587 When @code{fieldmatch} is configured to run a matching from bottom
11588 (@option{field}=@var{bottom}) this is how this input stream get transformed:
11589
11590 @example
11591 Input stream:
11592                 T     1 2 2 3 4
11593                 B     1 2 3 4 4   <-- matching reference
11594
11595 Matches:              c c n n c
11596
11597 Output stream:
11598                 T     1 2 3 4 4
11599                 B     1 2 3 4 4
11600 @end example
11601
11602 As a result of the field matching, we can see that some frames get duplicated.
11603 To perform a complete inverse telecine, you need to rely on a decimation filter
11604 after this operation. See for instance the @ref{decimate} filter.
11605
11606 The same operation now matching from top fields (@option{field}=@var{top})
11607 looks like this:
11608
11609 @example
11610 Input stream:
11611                 T     1 2 2 3 4   <-- matching reference
11612                 B     1 2 3 4 4
11613
11614 Matches:              c c p p c
11615
11616 Output stream:
11617                 T     1 2 2 3 4
11618                 B     1 2 2 3 4
11619 @end example
11620
11621 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
11622 basically, they refer to the frame and field of the opposite parity:
11623
11624 @itemize
11625 @item @var{p} matches the field of the opposite parity in the previous frame
11626 @item @var{c} matches the field of the opposite parity in the current frame
11627 @item @var{n} matches the field of the opposite parity in the next frame
11628 @end itemize
11629
11630 @subsubsection u/b
11631
11632 The @var{u} and @var{b} matching are a bit special in the sense that they match
11633 from the opposite parity flag. In the following examples, we assume that we are
11634 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
11635 'x' is placed above and below each matched fields.
11636
11637 With bottom matching (@option{field}=@var{bottom}):
11638 @example
11639 Match:           c         p           n          b          u
11640
11641                  x       x               x        x          x
11642   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11643   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11644                  x         x           x        x              x
11645
11646 Output frames:
11647                  2          1          2          2          2
11648                  2          2          2          1          3
11649 @end example
11650
11651 With top matching (@option{field}=@var{top}):
11652 @example
11653 Match:           c         p           n          b          u
11654
11655                  x         x           x        x              x
11656   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11657   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11658                  x       x               x        x          x
11659
11660 Output frames:
11661                  2          2          2          1          2
11662                  2          1          3          2          2
11663 @end example
11664
11665 @subsection Examples
11666
11667 Simple IVTC of a top field first telecined stream:
11668 @example
11669 fieldmatch=order=tff:combmatch=none, decimate
11670 @end example
11671
11672 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
11673 @example
11674 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11675 @end example
11676
11677 @section fieldorder
11678
11679 Transform the field order of the input video.
11680
11681 It accepts the following parameters:
11682
11683 @table @option
11684
11685 @item order
11686 The output field order. Valid values are @var{tff} for top field first or @var{bff}
11687 for bottom field first.
11688 @end table
11689
11690 The default value is @samp{tff}.
11691
11692 The transformation is done by shifting the picture content up or down
11693 by one line, and filling the remaining line with appropriate picture content.
11694 This method is consistent with most broadcast field order converters.
11695
11696 If the input video is not flagged as being interlaced, or it is already
11697 flagged as being of the required output field order, then this filter does
11698 not alter the incoming video.
11699
11700 It is very useful when converting to or from PAL DV material,
11701 which is bottom field first.
11702
11703 For example:
11704 @example
11705 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11706 @end example
11707
11708 @section fifo, afifo
11709
11710 Buffer input images and send them when they are requested.
11711
11712 It is mainly useful when auto-inserted by the libavfilter
11713 framework.
11714
11715 It does not take parameters.
11716
11717 @section fillborders
11718
11719 Fill borders of the input video, without changing video stream dimensions.
11720 Sometimes video can have garbage at the four edges and you may not want to
11721 crop video input to keep size multiple of some number.
11722
11723 This filter accepts the following options:
11724
11725 @table @option
11726 @item left
11727 Number of pixels to fill from left border.
11728
11729 @item right
11730 Number of pixels to fill from right border.
11731
11732 @item top
11733 Number of pixels to fill from top border.
11734
11735 @item bottom
11736 Number of pixels to fill from bottom border.
11737
11738 @item mode
11739 Set fill mode.
11740
11741 It accepts the following values:
11742 @table @samp
11743 @item smear
11744 fill pixels using outermost pixels
11745
11746 @item mirror
11747 fill pixels using mirroring
11748
11749 @item fixed
11750 fill pixels with constant value
11751 @end table
11752
11753 Default is @var{smear}.
11754
11755 @item color
11756 Set color for pixels in fixed mode. Default is @var{black}.
11757 @end table
11758
11759 @subsection Commands
11760 This filter supports same @ref{commands} as options.
11761 The command accepts the same syntax of the corresponding option.
11762
11763 If the specified expression is not valid, it is kept at its current
11764 value.
11765
11766 @section find_rect
11767
11768 Find a rectangular object
11769
11770 It accepts the following options:
11771
11772 @table @option
11773 @item object
11774 Filepath of the object image, needs to be in gray8.
11775
11776 @item threshold
11777 Detection threshold, default is 0.5.
11778
11779 @item mipmaps
11780 Number of mipmaps, default is 3.
11781
11782 @item xmin, ymin, xmax, ymax
11783 Specifies the rectangle in which to search.
11784 @end table
11785
11786 @subsection Examples
11787
11788 @itemize
11789 @item
11790 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
11791 @example
11792 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
11793 @end example
11794 @end itemize
11795
11796 @section floodfill
11797
11798 Flood area with values of same pixel components with another values.
11799
11800 It accepts the following options:
11801 @table @option
11802 @item x
11803 Set pixel x coordinate.
11804
11805 @item y
11806 Set pixel y coordinate.
11807
11808 @item s0
11809 Set source #0 component value.
11810
11811 @item s1
11812 Set source #1 component value.
11813
11814 @item s2
11815 Set source #2 component value.
11816
11817 @item s3
11818 Set source #3 component value.
11819
11820 @item d0
11821 Set destination #0 component value.
11822
11823 @item d1
11824 Set destination #1 component value.
11825
11826 @item d2
11827 Set destination #2 component value.
11828
11829 @item d3
11830 Set destination #3 component value.
11831 @end table
11832
11833 @anchor{format}
11834 @section format
11835
11836 Convert the input video to one of the specified pixel formats.
11837 Libavfilter will try to pick one that is suitable as input to
11838 the next filter.
11839
11840 It accepts the following parameters:
11841 @table @option
11842
11843 @item pix_fmts
11844 A '|'-separated list of pixel format names, such as
11845 "pix_fmts=yuv420p|monow|rgb24".
11846
11847 @end table
11848
11849 @subsection Examples
11850
11851 @itemize
11852 @item
11853 Convert the input video to the @var{yuv420p} format
11854 @example
11855 format=pix_fmts=yuv420p
11856 @end example
11857
11858 Convert the input video to any of the formats in the list
11859 @example
11860 format=pix_fmts=yuv420p|yuv444p|yuv410p
11861 @end example
11862 @end itemize
11863
11864 @anchor{fps}
11865 @section fps
11866
11867 Convert the video to specified constant frame rate by duplicating or dropping
11868 frames as necessary.
11869
11870 It accepts the following parameters:
11871 @table @option
11872
11873 @item fps
11874 The desired output frame rate. The default is @code{25}.
11875
11876 @item start_time
11877 Assume the first PTS should be the given value, in seconds. This allows for
11878 padding/trimming at the start of stream. By default, no assumption is made
11879 about the first frame's expected PTS, so no padding or trimming is done.
11880 For example, this could be set to 0 to pad the beginning with duplicates of
11881 the first frame if a video stream starts after the audio stream or to trim any
11882 frames with a negative PTS.
11883
11884 @item round
11885 Timestamp (PTS) rounding method.
11886
11887 Possible values are:
11888 @table @option
11889 @item zero
11890 round towards 0
11891 @item inf
11892 round away from 0
11893 @item down
11894 round towards -infinity
11895 @item up
11896 round towards +infinity
11897 @item near
11898 round to nearest
11899 @end table
11900 The default is @code{near}.
11901
11902 @item eof_action
11903 Action performed when reading the last frame.
11904
11905 Possible values are:
11906 @table @option
11907 @item round
11908 Use same timestamp rounding method as used for other frames.
11909 @item pass
11910 Pass through last frame if input duration has not been reached yet.
11911 @end table
11912 The default is @code{round}.
11913
11914 @end table
11915
11916 Alternatively, the options can be specified as a flat string:
11917 @var{fps}[:@var{start_time}[:@var{round}]].
11918
11919 See also the @ref{setpts} filter.
11920
11921 @subsection Examples
11922
11923 @itemize
11924 @item
11925 A typical usage in order to set the fps to 25:
11926 @example
11927 fps=fps=25
11928 @end example
11929
11930 @item
11931 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
11932 @example
11933 fps=fps=film:round=near
11934 @end example
11935 @end itemize
11936
11937 @section framepack
11938
11939 Pack two different video streams into a stereoscopic video, setting proper
11940 metadata on supported codecs. The two views should have the same size and
11941 framerate and processing will stop when the shorter video ends. Please note
11942 that you may conveniently adjust view properties with the @ref{scale} and
11943 @ref{fps} filters.
11944
11945 It accepts the following parameters:
11946 @table @option
11947
11948 @item format
11949 The desired packing format. Supported values are:
11950
11951 @table @option
11952
11953 @item sbs
11954 The views are next to each other (default).
11955
11956 @item tab
11957 The views are on top of each other.
11958
11959 @item lines
11960 The views are packed by line.
11961
11962 @item columns
11963 The views are packed by column.
11964
11965 @item frameseq
11966 The views are temporally interleaved.
11967
11968 @end table
11969
11970 @end table
11971
11972 Some examples:
11973
11974 @example
11975 # Convert left and right views into a frame-sequential video
11976 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
11977
11978 # Convert views into a side-by-side video with the same output resolution as the input
11979 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
11980 @end example
11981
11982 @section framerate
11983
11984 Change the frame rate by interpolating new video output frames from the source
11985 frames.
11986
11987 This filter is not designed to function correctly with interlaced media. If
11988 you wish to change the frame rate of interlaced media then you are required
11989 to deinterlace before this filter and re-interlace after this filter.
11990
11991 A description of the accepted options follows.
11992
11993 @table @option
11994 @item fps
11995 Specify the output frames per second. This option can also be specified
11996 as a value alone. The default is @code{50}.
11997
11998 @item interp_start
11999 Specify the start of a range where the output frame will be created as a
12000 linear interpolation of two frames. The range is [@code{0}-@code{255}],
12001 the default is @code{15}.
12002
12003 @item interp_end
12004 Specify the end of a range where the output frame will be created as a
12005 linear interpolation of two frames. The range is [@code{0}-@code{255}],
12006 the default is @code{240}.
12007
12008 @item scene
12009 Specify the level at which a scene change is detected as a value between
12010 0 and 100 to indicate a new scene; a low value reflects a low
12011 probability for the current frame to introduce a new scene, while a higher
12012 value means the current frame is more likely to be one.
12013 The default is @code{8.2}.
12014
12015 @item flags
12016 Specify flags influencing the filter process.
12017
12018 Available value for @var{flags} is:
12019
12020 @table @option
12021 @item scene_change_detect, scd
12022 Enable scene change detection using the value of the option @var{scene}.
12023 This flag is enabled by default.
12024 @end table
12025 @end table
12026
12027 @section framestep
12028
12029 Select one frame every N-th frame.
12030
12031 This filter accepts the following option:
12032 @table @option
12033 @item step
12034 Select frame after every @code{step} frames.
12035 Allowed values are positive integers higher than 0. Default value is @code{1}.
12036 @end table
12037
12038 @section freezedetect
12039
12040 Detect frozen video.
12041
12042 This filter logs a message and sets frame metadata when it detects that the
12043 input video has no significant change in content during a specified duration.
12044 Video freeze detection calculates the mean average absolute difference of all
12045 the components of video frames and compares it to a noise floor.
12046
12047 The printed times and duration are expressed in seconds. The
12048 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
12049 whose timestamp equals or exceeds the detection duration and it contains the
12050 timestamp of the first frame of the freeze. The
12051 @code{lavfi.freezedetect.freeze_duration} and
12052 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
12053 after the freeze.
12054
12055 The filter accepts the following options:
12056
12057 @table @option
12058 @item noise, n
12059 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
12060 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
12061 0.001.
12062
12063 @item duration, d
12064 Set freeze duration until notification (default is 2 seconds).
12065 @end table
12066
12067 @section freezeframes
12068
12069 Freeze video frames.
12070
12071 This filter freezes video frames using frame from 2nd input.
12072
12073 The filter accepts the following options:
12074
12075 @table @option
12076 @item first
12077 Set number of first frame from which to start freeze.
12078
12079 @item last
12080 Set number of last frame from which to end freeze.
12081
12082 @item replace
12083 Set number of frame from 2nd input which will be used instead of replaced frames.
12084 @end table
12085
12086 @anchor{frei0r}
12087 @section frei0r
12088
12089 Apply a frei0r effect to the input video.
12090
12091 To enable the compilation of this filter, you need to install the frei0r
12092 header and configure FFmpeg with @code{--enable-frei0r}.
12093
12094 It accepts the following parameters:
12095
12096 @table @option
12097
12098 @item filter_name
12099 The name of the frei0r effect to load. If the environment variable
12100 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
12101 directories specified by the colon-separated list in @env{FREI0R_PATH}.
12102 Otherwise, the standard frei0r paths are searched, in this order:
12103 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
12104 @file{/usr/lib/frei0r-1/}.
12105
12106 @item filter_params
12107 A '|'-separated list of parameters to pass to the frei0r effect.
12108
12109 @end table
12110
12111 A frei0r effect parameter can be a boolean (its value is either
12112 "y" or "n"), a double, a color (specified as
12113 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
12114 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
12115 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
12116 a position (specified as @var{X}/@var{Y}, where
12117 @var{X} and @var{Y} are floating point numbers) and/or a string.
12118
12119 The number and types of parameters depend on the loaded effect. If an
12120 effect parameter is not specified, the default value is set.
12121
12122 @subsection Examples
12123
12124 @itemize
12125 @item
12126 Apply the distort0r effect, setting the first two double parameters:
12127 @example
12128 frei0r=filter_name=distort0r:filter_params=0.5|0.01
12129 @end example
12130
12131 @item
12132 Apply the colordistance effect, taking a color as the first parameter:
12133 @example
12134 frei0r=colordistance:0.2/0.3/0.4
12135 frei0r=colordistance:violet
12136 frei0r=colordistance:0x112233
12137 @end example
12138
12139 @item
12140 Apply the perspective effect, specifying the top left and top right image
12141 positions:
12142 @example
12143 frei0r=perspective:0.2/0.2|0.8/0.2
12144 @end example
12145 @end itemize
12146
12147 For more information, see
12148 @url{http://frei0r.dyne.org}
12149
12150 @subsection Commands
12151
12152 This filter supports the @option{filter_params} option as @ref{commands}.
12153
12154 @section fspp
12155
12156 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
12157
12158 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
12159 processing filter, one of them is performed once per block, not per pixel.
12160 This allows for much higher speed.
12161
12162 The filter accepts the following options:
12163
12164 @table @option
12165 @item quality
12166 Set quality. This option defines the number of levels for averaging. It accepts
12167 an integer in the range 4-5. Default value is @code{4}.
12168
12169 @item qp
12170 Force a constant quantization parameter. It accepts an integer in range 0-63.
12171 If not set, the filter will use the QP from the video stream (if available).
12172
12173 @item strength
12174 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
12175 more details but also more artifacts, while higher values make the image smoother
12176 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
12177
12178 @item use_bframe_qp
12179 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
12180 option may cause flicker since the B-Frames have often larger QP. Default is
12181 @code{0} (not enabled).
12182
12183 @end table
12184
12185 @section gblur
12186
12187 Apply Gaussian blur filter.
12188
12189 The filter accepts the following options:
12190
12191 @table @option
12192 @item sigma
12193 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
12194
12195 @item steps
12196 Set number of steps for Gaussian approximation. Default is @code{1}.
12197
12198 @item planes
12199 Set which planes to filter. By default all planes are filtered.
12200
12201 @item sigmaV
12202 Set vertical sigma, if negative it will be same as @code{sigma}.
12203 Default is @code{-1}.
12204 @end table
12205
12206 @subsection Commands
12207 This filter supports same commands as options.
12208 The command accepts the same syntax of the corresponding option.
12209
12210 If the specified expression is not valid, it is kept at its current
12211 value.
12212
12213 @section geq
12214
12215 Apply generic equation to each pixel.
12216
12217 The filter accepts the following options:
12218
12219 @table @option
12220 @item lum_expr, lum
12221 Set the luminance expression.
12222 @item cb_expr, cb
12223 Set the chrominance blue expression.
12224 @item cr_expr, cr
12225 Set the chrominance red expression.
12226 @item alpha_expr, a
12227 Set the alpha expression.
12228 @item red_expr, r
12229 Set the red expression.
12230 @item green_expr, g
12231 Set the green expression.
12232 @item blue_expr, b
12233 Set the blue expression.
12234 @end table
12235
12236 The colorspace is selected according to the specified options. If one
12237 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
12238 options is specified, the filter will automatically select a YCbCr
12239 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
12240 @option{blue_expr} options is specified, it will select an RGB
12241 colorspace.
12242
12243 If one of the chrominance expression is not defined, it falls back on the other
12244 one. If no alpha expression is specified it will evaluate to opaque value.
12245 If none of chrominance expressions are specified, they will evaluate
12246 to the luminance expression.
12247
12248 The expressions can use the following variables and functions:
12249
12250 @table @option
12251 @item N
12252 The sequential number of the filtered frame, starting from @code{0}.
12253
12254 @item X
12255 @item Y
12256 The coordinates of the current sample.
12257
12258 @item W
12259 @item H
12260 The width and height of the image.
12261
12262 @item SW
12263 @item SH
12264 Width and height scale depending on the currently filtered plane. It is the
12265 ratio between the corresponding luma plane number of pixels and the current
12266 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
12267 @code{0.5,0.5} for chroma planes.
12268
12269 @item T
12270 Time of the current frame, expressed in seconds.
12271
12272 @item p(x, y)
12273 Return the value of the pixel at location (@var{x},@var{y}) of the current
12274 plane.
12275
12276 @item lum(x, y)
12277 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
12278 plane.
12279
12280 @item cb(x, y)
12281 Return the value of the pixel at location (@var{x},@var{y}) of the
12282 blue-difference chroma plane. Return 0 if there is no such plane.
12283
12284 @item cr(x, y)
12285 Return the value of the pixel at location (@var{x},@var{y}) of the
12286 red-difference chroma plane. Return 0 if there is no such plane.
12287
12288 @item r(x, y)
12289 @item g(x, y)
12290 @item b(x, y)
12291 Return the value of the pixel at location (@var{x},@var{y}) of the
12292 red/green/blue component. Return 0 if there is no such component.
12293
12294 @item alpha(x, y)
12295 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
12296 plane. Return 0 if there is no such plane.
12297
12298 @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)
12299 Sum of sample values in the rectangle from (0,0) to (x,y), this allows obtaining
12300 sums of samples within a rectangle. See the functions without the sum postfix.
12301
12302 @item interpolation
12303 Set one of interpolation methods:
12304 @table @option
12305 @item nearest, n
12306 @item bilinear, b
12307 @end table
12308 Default is bilinear.
12309 @end table
12310
12311 For functions, if @var{x} and @var{y} are outside the area, the value will be
12312 automatically clipped to the closer edge.
12313
12314 Please note that this filter can use multiple threads in which case each slice
12315 will have its own expression state. If you want to use only a single expression
12316 state because your expressions depend on previous state then you should limit
12317 the number of filter threads to 1.
12318
12319 @subsection Examples
12320
12321 @itemize
12322 @item
12323 Flip the image horizontally:
12324 @example
12325 geq=p(W-X\,Y)
12326 @end example
12327
12328 @item
12329 Generate a bidimensional sine wave, with angle @code{PI/3} and a
12330 wavelength of 100 pixels:
12331 @example
12332 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
12333 @end example
12334
12335 @item
12336 Generate a fancy enigmatic moving light:
12337 @example
12338 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
12339 @end example
12340
12341 @item
12342 Generate a quick emboss effect:
12343 @example
12344 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
12345 @end example
12346
12347 @item
12348 Modify RGB components depending on pixel position:
12349 @example
12350 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
12351 @end example
12352
12353 @item
12354 Create a radial gradient that is the same size as the input (also see
12355 the @ref{vignette} filter):
12356 @example
12357 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
12358 @end example
12359 @end itemize
12360
12361 @section gradfun
12362
12363 Fix the banding artifacts that are sometimes introduced into nearly flat
12364 regions by truncation to 8-bit color depth.
12365 Interpolate the gradients that should go where the bands are, and
12366 dither them.
12367
12368 It is designed for playback only.  Do not use it prior to
12369 lossy compression, because compression tends to lose the dither and
12370 bring back the bands.
12371
12372 It accepts the following parameters:
12373
12374 @table @option
12375
12376 @item strength
12377 The maximum amount by which the filter will change any one pixel. This is also
12378 the threshold for detecting nearly flat regions. Acceptable values range from
12379 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
12380 valid range.
12381
12382 @item radius
12383 The neighborhood to fit the gradient to. A larger radius makes for smoother
12384 gradients, but also prevents the filter from modifying the pixels near detailed
12385 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
12386 values will be clipped to the valid range.
12387
12388 @end table
12389
12390 Alternatively, the options can be specified as a flat string:
12391 @var{strength}[:@var{radius}]
12392
12393 @subsection Examples
12394
12395 @itemize
12396 @item
12397 Apply the filter with a @code{3.5} strength and radius of @code{8}:
12398 @example
12399 gradfun=3.5:8
12400 @end example
12401
12402 @item
12403 Specify radius, omitting the strength (which will fall-back to the default
12404 value):
12405 @example
12406 gradfun=radius=8
12407 @end example
12408
12409 @end itemize
12410
12411 @anchor{graphmonitor}
12412 @section graphmonitor
12413 Show various filtergraph stats.
12414
12415 With this filter one can debug complete filtergraph.
12416 Especially issues with links filling with queued frames.
12417
12418 The filter accepts the following options:
12419
12420 @table @option
12421 @item size, s
12422 Set video output size. Default is @var{hd720}.
12423
12424 @item opacity, o
12425 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
12426
12427 @item mode, m
12428 Set output mode, can be @var{fulll} or @var{compact}.
12429 In @var{compact} mode only filters with some queued frames have displayed stats.
12430
12431 @item flags, f
12432 Set flags which enable which stats are shown in video.
12433
12434 Available values for flags are:
12435 @table @samp
12436 @item queue
12437 Display number of queued frames in each link.
12438
12439 @item frame_count_in
12440 Display number of frames taken from filter.
12441
12442 @item frame_count_out
12443 Display number of frames given out from filter.
12444
12445 @item pts
12446 Display current filtered frame pts.
12447
12448 @item time
12449 Display current filtered frame time.
12450
12451 @item timebase
12452 Display time base for filter link.
12453
12454 @item format
12455 Display used format for filter link.
12456
12457 @item size
12458 Display video size or number of audio channels in case of audio used by filter link.
12459
12460 @item rate
12461 Display video frame rate or sample rate in case of audio used by filter link.
12462
12463 @item eof
12464 Display link output status.
12465 @end table
12466
12467 @item rate, r
12468 Set upper limit for video rate of output stream, Default value is @var{25}.
12469 This guarantee that output video frame rate will not be higher than this value.
12470 @end table
12471
12472 @section greyedge
12473 A color constancy variation filter which estimates scene illumination via grey edge algorithm
12474 and corrects the scene colors accordingly.
12475
12476 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
12477
12478 The filter accepts the following options:
12479
12480 @table @option
12481 @item difford
12482 The order of differentiation to be applied on the scene. Must be chosen in the range
12483 [0,2] and default value is 1.
12484
12485 @item minknorm
12486 The Minkowski parameter to be used for calculating the Minkowski distance. Must
12487 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
12488 max value instead of calculating Minkowski distance.
12489
12490 @item sigma
12491 The standard deviation of Gaussian blur to be applied on the scene. Must be
12492 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
12493 can't be equal to 0 if @var{difford} is greater than 0.
12494 @end table
12495
12496 @subsection Examples
12497 @itemize
12498
12499 @item
12500 Grey Edge:
12501 @example
12502 greyedge=difford=1:minknorm=5:sigma=2
12503 @end example
12504
12505 @item
12506 Max Edge:
12507 @example
12508 greyedge=difford=1:minknorm=0:sigma=2
12509 @end example
12510
12511 @end itemize
12512
12513 @anchor{haldclut}
12514 @section haldclut
12515
12516 Apply a Hald CLUT to a video stream.
12517
12518 First input is the video stream to process, and second one is the Hald CLUT.
12519 The Hald CLUT input can be a simple picture or a complete video stream.
12520
12521 The filter accepts the following options:
12522
12523 @table @option
12524 @item shortest
12525 Force termination when the shortest input terminates. Default is @code{0}.
12526 @item repeatlast
12527 Continue applying the last CLUT after the end of the stream. A value of
12528 @code{0} disable the filter after the last frame of the CLUT is reached.
12529 Default is @code{1}.
12530 @end table
12531
12532 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
12533 filters share the same internals).
12534
12535 This filter also supports the @ref{framesync} options.
12536
12537 More information about the Hald CLUT can be found on Eskil Steenberg's website
12538 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
12539
12540 @subsection Workflow examples
12541
12542 @subsubsection Hald CLUT video stream
12543
12544 Generate an identity Hald CLUT stream altered with various effects:
12545 @example
12546 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
12547 @end example
12548
12549 Note: make sure you use a lossless codec.
12550
12551 Then use it with @code{haldclut} to apply it on some random stream:
12552 @example
12553 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
12554 @end example
12555
12556 The Hald CLUT will be applied to the 10 first seconds (duration of
12557 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
12558 to the remaining frames of the @code{mandelbrot} stream.
12559
12560 @subsubsection Hald CLUT with preview
12561
12562 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
12563 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
12564 biggest possible square starting at the top left of the picture. The remaining
12565 padding pixels (bottom or right) will be ignored. This area can be used to add
12566 a preview of the Hald CLUT.
12567
12568 Typically, the following generated Hald CLUT will be supported by the
12569 @code{haldclut} filter:
12570
12571 @example
12572 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
12573    pad=iw+320 [padded_clut];
12574    smptebars=s=320x256, split [a][b];
12575    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
12576    [main][b] overlay=W-320" -frames:v 1 clut.png
12577 @end example
12578
12579 It contains the original and a preview of the effect of the CLUT: SMPTE color
12580 bars are displayed on the right-top, and below the same color bars processed by
12581 the color changes.
12582
12583 Then, the effect of this Hald CLUT can be visualized with:
12584 @example
12585 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
12586 @end example
12587
12588 @section hflip
12589
12590 Flip the input video horizontally.
12591
12592 For example, to horizontally flip the input video with @command{ffmpeg}:
12593 @example
12594 ffmpeg -i in.avi -vf "hflip" out.avi
12595 @end example
12596
12597 @section histeq
12598 This filter applies a global color histogram equalization on a
12599 per-frame basis.
12600
12601 It can be used to correct video that has a compressed range of pixel
12602 intensities.  The filter redistributes the pixel intensities to
12603 equalize their distribution across the intensity range. It may be
12604 viewed as an "automatically adjusting contrast filter". This filter is
12605 useful only for correcting degraded or poorly captured source
12606 video.
12607
12608 The filter accepts the following options:
12609
12610 @table @option
12611 @item strength
12612 Determine the amount of equalization to be applied.  As the strength
12613 is reduced, the distribution of pixel intensities more-and-more
12614 approaches that of the input frame. The value must be a float number
12615 in the range [0,1] and defaults to 0.200.
12616
12617 @item intensity
12618 Set the maximum intensity that can generated and scale the output
12619 values appropriately.  The strength should be set as desired and then
12620 the intensity can be limited if needed to avoid washing-out. The value
12621 must be a float number in the range [0,1] and defaults to 0.210.
12622
12623 @item antibanding
12624 Set the antibanding level. If enabled the filter will randomly vary
12625 the luminance of output pixels by a small amount to avoid banding of
12626 the histogram. Possible values are @code{none}, @code{weak} or
12627 @code{strong}. It defaults to @code{none}.
12628 @end table
12629
12630 @anchor{histogram}
12631 @section histogram
12632
12633 Compute and draw a color distribution histogram for the input video.
12634
12635 The computed histogram is a representation of the color component
12636 distribution in an image.
12637
12638 Standard histogram displays the color components distribution in an image.
12639 Displays color graph for each color component. Shows distribution of
12640 the Y, U, V, A or R, G, B components, depending on input format, in the
12641 current frame. Below each graph a color component scale meter is shown.
12642
12643 The filter accepts the following options:
12644
12645 @table @option
12646 @item level_height
12647 Set height of level. Default value is @code{200}.
12648 Allowed range is [50, 2048].
12649
12650 @item scale_height
12651 Set height of color scale. Default value is @code{12}.
12652 Allowed range is [0, 40].
12653
12654 @item display_mode
12655 Set display mode.
12656 It accepts the following values:
12657 @table @samp
12658 @item stack
12659 Per color component graphs are placed below each other.
12660
12661 @item parade
12662 Per color component graphs are placed side by side.
12663
12664 @item overlay
12665 Presents information identical to that in the @code{parade}, except
12666 that the graphs representing color components are superimposed directly
12667 over one another.
12668 @end table
12669 Default is @code{stack}.
12670
12671 @item levels_mode
12672 Set mode. Can be either @code{linear}, or @code{logarithmic}.
12673 Default is @code{linear}.
12674
12675 @item components
12676 Set what color components to display.
12677 Default is @code{7}.
12678
12679 @item fgopacity
12680 Set foreground opacity. Default is @code{0.7}.
12681
12682 @item bgopacity
12683 Set background opacity. Default is @code{0.5}.
12684 @end table
12685
12686 @subsection Examples
12687
12688 @itemize
12689
12690 @item
12691 Calculate and draw histogram:
12692 @example
12693 ffplay -i input -vf histogram
12694 @end example
12695
12696 @end itemize
12697
12698 @anchor{hqdn3d}
12699 @section hqdn3d
12700
12701 This is a high precision/quality 3d denoise filter. It aims to reduce
12702 image noise, producing smooth images and making still images really
12703 still. It should enhance compressibility.
12704
12705 It accepts the following optional parameters:
12706
12707 @table @option
12708 @item luma_spatial
12709 A non-negative floating point number which specifies spatial luma strength.
12710 It defaults to 4.0.
12711
12712 @item chroma_spatial
12713 A non-negative floating point number which specifies spatial chroma strength.
12714 It defaults to 3.0*@var{luma_spatial}/4.0.
12715
12716 @item luma_tmp
12717 A floating point number which specifies luma temporal strength. It defaults to
12718 6.0*@var{luma_spatial}/4.0.
12719
12720 @item chroma_tmp
12721 A floating point number which specifies chroma temporal strength. It defaults to
12722 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
12723 @end table
12724
12725 @subsection Commands
12726 This filter supports same @ref{commands} as options.
12727 The command accepts the same syntax of the corresponding option.
12728
12729 If the specified expression is not valid, it is kept at its current
12730 value.
12731
12732 @anchor{hwdownload}
12733 @section hwdownload
12734
12735 Download hardware frames to system memory.
12736
12737 The input must be in hardware frames, and the output a non-hardware format.
12738 Not all formats will be supported on the output - it may be necessary to insert
12739 an additional @option{format} filter immediately following in the graph to get
12740 the output in a supported format.
12741
12742 @section hwmap
12743
12744 Map hardware frames to system memory or to another device.
12745
12746 This filter has several different modes of operation; which one is used depends
12747 on the input and output formats:
12748 @itemize
12749 @item
12750 Hardware frame input, normal frame output
12751
12752 Map the input frames to system memory and pass them to the output.  If the
12753 original hardware frame is later required (for example, after overlaying
12754 something else on part of it), the @option{hwmap} filter can be used again
12755 in the next mode to retrieve it.
12756 @item
12757 Normal frame input, hardware frame output
12758
12759 If the input is actually a software-mapped hardware frame, then unmap it -
12760 that is, return the original hardware frame.
12761
12762 Otherwise, a device must be provided.  Create new hardware surfaces on that
12763 device for the output, then map them back to the software format at the input
12764 and give those frames to the preceding filter.  This will then act like the
12765 @option{hwupload} filter, but may be able to avoid an additional copy when
12766 the input is already in a compatible format.
12767 @item
12768 Hardware frame input and output
12769
12770 A device must be supplied for the output, either directly or with the
12771 @option{derive_device} option.  The input and output devices must be of
12772 different types and compatible - the exact meaning of this is
12773 system-dependent, but typically it means that they must refer to the same
12774 underlying hardware context (for example, refer to the same graphics card).
12775
12776 If the input frames were originally created on the output device, then unmap
12777 to retrieve the original frames.
12778
12779 Otherwise, map the frames to the output device - create new hardware frames
12780 on the output corresponding to the frames on the input.
12781 @end itemize
12782
12783 The following additional parameters are accepted:
12784
12785 @table @option
12786 @item mode
12787 Set the frame mapping mode.  Some combination of:
12788 @table @var
12789 @item read
12790 The mapped frame should be readable.
12791 @item write
12792 The mapped frame should be writeable.
12793 @item overwrite
12794 The mapping will always overwrite the entire frame.
12795
12796 This may improve performance in some cases, as the original contents of the
12797 frame need not be loaded.
12798 @item direct
12799 The mapping must not involve any copying.
12800
12801 Indirect mappings to copies of frames are created in some cases where either
12802 direct mapping is not possible or it would have unexpected properties.
12803 Setting this flag ensures that the mapping is direct and will fail if that is
12804 not possible.
12805 @end table
12806 Defaults to @var{read+write} if not specified.
12807
12808 @item derive_device @var{type}
12809 Rather than using the device supplied at initialisation, instead derive a new
12810 device of type @var{type} from the device the input frames exist on.
12811
12812 @item reverse
12813 In a hardware to hardware mapping, map in reverse - create frames in the sink
12814 and map them back to the source.  This may be necessary in some cases where
12815 a mapping in one direction is required but only the opposite direction is
12816 supported by the devices being used.
12817
12818 This option is dangerous - it may break the preceding filter in undefined
12819 ways if there are any additional constraints on that filter's output.
12820 Do not use it without fully understanding the implications of its use.
12821 @end table
12822
12823 @anchor{hwupload}
12824 @section hwupload
12825
12826 Upload system memory frames to hardware surfaces.
12827
12828 The device to upload to must be supplied when the filter is initialised.  If
12829 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
12830 option or with the @option{derive_device} option.  The input and output devices
12831 must be of different types and compatible - the exact meaning of this is
12832 system-dependent, but typically it means that they must refer to the same
12833 underlying hardware context (for example, refer to the same graphics card).
12834
12835 The following additional parameters are accepted:
12836
12837 @table @option
12838 @item derive_device @var{type}
12839 Rather than using the device supplied at initialisation, instead derive a new
12840 device of type @var{type} from the device the input frames exist on.
12841 @end table
12842
12843 @anchor{hwupload_cuda}
12844 @section hwupload_cuda
12845
12846 Upload system memory frames to a CUDA device.
12847
12848 It accepts the following optional parameters:
12849
12850 @table @option
12851 @item device
12852 The number of the CUDA device to use
12853 @end table
12854
12855 @section hqx
12856
12857 Apply a high-quality magnification filter designed for pixel art. This filter
12858 was originally created by Maxim Stepin.
12859
12860 It accepts the following option:
12861
12862 @table @option
12863 @item n
12864 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
12865 @code{hq3x} and @code{4} for @code{hq4x}.
12866 Default is @code{3}.
12867 @end table
12868
12869 @section hstack
12870 Stack input videos horizontally.
12871
12872 All streams must be of same pixel format and of same height.
12873
12874 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
12875 to create same output.
12876
12877 The filter accepts the following option:
12878
12879 @table @option
12880 @item inputs
12881 Set number of input streams. Default is 2.
12882
12883 @item shortest
12884 If set to 1, force the output to terminate when the shortest input
12885 terminates. Default value is 0.
12886 @end table
12887
12888 @section hue
12889
12890 Modify the hue and/or the saturation of the input.
12891
12892 It accepts the following parameters:
12893
12894 @table @option
12895 @item h
12896 Specify the hue angle as a number of degrees. It accepts an expression,
12897 and defaults to "0".
12898
12899 @item s
12900 Specify the saturation in the [-10,10] range. It accepts an expression and
12901 defaults to "1".
12902
12903 @item H
12904 Specify the hue angle as a number of radians. It accepts an
12905 expression, and defaults to "0".
12906
12907 @item b
12908 Specify the brightness in the [-10,10] range. It accepts an expression and
12909 defaults to "0".
12910 @end table
12911
12912 @option{h} and @option{H} are mutually exclusive, and can't be
12913 specified at the same time.
12914
12915 The @option{b}, @option{h}, @option{H} and @option{s} option values are
12916 expressions containing the following constants:
12917
12918 @table @option
12919 @item n
12920 frame count of the input frame starting from 0
12921
12922 @item pts
12923 presentation timestamp of the input frame expressed in time base units
12924
12925 @item r
12926 frame rate of the input video, NAN if the input frame rate is unknown
12927
12928 @item t
12929 timestamp expressed in seconds, NAN if the input timestamp is unknown
12930
12931 @item tb
12932 time base of the input video
12933 @end table
12934
12935 @subsection Examples
12936
12937 @itemize
12938 @item
12939 Set the hue to 90 degrees and the saturation to 1.0:
12940 @example
12941 hue=h=90:s=1
12942 @end example
12943
12944 @item
12945 Same command but expressing the hue in radians:
12946 @example
12947 hue=H=PI/2:s=1
12948 @end example
12949
12950 @item
12951 Rotate hue and make the saturation swing between 0
12952 and 2 over a period of 1 second:
12953 @example
12954 hue="H=2*PI*t: s=sin(2*PI*t)+1"
12955 @end example
12956
12957 @item
12958 Apply a 3 seconds saturation fade-in effect starting at 0:
12959 @example
12960 hue="s=min(t/3\,1)"
12961 @end example
12962
12963 The general fade-in expression can be written as:
12964 @example
12965 hue="s=min(0\, max((t-START)/DURATION\, 1))"
12966 @end example
12967
12968 @item
12969 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
12970 @example
12971 hue="s=max(0\, min(1\, (8-t)/3))"
12972 @end example
12973
12974 The general fade-out expression can be written as:
12975 @example
12976 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
12977 @end example
12978
12979 @end itemize
12980
12981 @subsection Commands
12982
12983 This filter supports the following commands:
12984 @table @option
12985 @item b
12986 @item s
12987 @item h
12988 @item H
12989 Modify the hue and/or the saturation and/or brightness of the input video.
12990 The command accepts the same syntax of the corresponding option.
12991
12992 If the specified expression is not valid, it is kept at its current
12993 value.
12994 @end table
12995
12996 @section hysteresis
12997
12998 Grow first stream into second stream by connecting components.
12999 This makes it possible to build more robust edge masks.
13000
13001 This filter accepts the following options:
13002
13003 @table @option
13004 @item planes
13005 Set which planes will be processed as bitmap, unprocessed planes will be
13006 copied from first stream.
13007 By default value 0xf, all planes will be processed.
13008
13009 @item threshold
13010 Set threshold which is used in filtering. If pixel component value is higher than
13011 this value filter algorithm for connecting components is activated.
13012 By default value is 0.
13013 @end table
13014
13015 The @code{hysteresis} filter also supports the @ref{framesync} options.
13016
13017 @section idet
13018
13019 Detect video interlacing type.
13020
13021 This filter tries to detect if the input frames are interlaced, progressive,
13022 top or bottom field first. It will also try to detect fields that are
13023 repeated between adjacent frames (a sign of telecine).
13024
13025 Single frame detection considers only immediately adjacent frames when classifying each frame.
13026 Multiple frame detection incorporates the classification history of previous frames.
13027
13028 The filter will log these metadata values:
13029
13030 @table @option
13031 @item single.current_frame
13032 Detected type of current frame using single-frame detection. One of:
13033 ``tff'' (top field first), ``bff'' (bottom field first),
13034 ``progressive'', or ``undetermined''
13035
13036 @item single.tff
13037 Cumulative number of frames detected as top field first using single-frame detection.
13038
13039 @item multiple.tff
13040 Cumulative number of frames detected as top field first using multiple-frame detection.
13041
13042 @item single.bff
13043 Cumulative number of frames detected as bottom field first using single-frame detection.
13044
13045 @item multiple.current_frame
13046 Detected type of current frame using multiple-frame detection. One of:
13047 ``tff'' (top field first), ``bff'' (bottom field first),
13048 ``progressive'', or ``undetermined''
13049
13050 @item multiple.bff
13051 Cumulative number of frames detected as bottom field first using multiple-frame detection.
13052
13053 @item single.progressive
13054 Cumulative number of frames detected as progressive using single-frame detection.
13055
13056 @item multiple.progressive
13057 Cumulative number of frames detected as progressive using multiple-frame detection.
13058
13059 @item single.undetermined
13060 Cumulative number of frames that could not be classified using single-frame detection.
13061
13062 @item multiple.undetermined
13063 Cumulative number of frames that could not be classified using multiple-frame detection.
13064
13065 @item repeated.current_frame
13066 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
13067
13068 @item repeated.neither
13069 Cumulative number of frames with no repeated field.
13070
13071 @item repeated.top
13072 Cumulative number of frames with the top field repeated from the previous frame's top field.
13073
13074 @item repeated.bottom
13075 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
13076 @end table
13077
13078 The filter accepts the following options:
13079
13080 @table @option
13081 @item intl_thres
13082 Set interlacing threshold.
13083 @item prog_thres
13084 Set progressive threshold.
13085 @item rep_thres
13086 Threshold for repeated field detection.
13087 @item half_life
13088 Number of frames after which a given frame's contribution to the
13089 statistics is halved (i.e., it contributes only 0.5 to its
13090 classification). The default of 0 means that all frames seen are given
13091 full weight of 1.0 forever.
13092 @item analyze_interlaced_flag
13093 When this is not 0 then idet will use the specified number of frames to determine
13094 if the interlaced flag is accurate, it will not count undetermined frames.
13095 If the flag is found to be accurate it will be used without any further
13096 computations, if it is found to be inaccurate it will be cleared without any
13097 further computations. This allows inserting the idet filter as a low computational
13098 method to clean up the interlaced flag
13099 @end table
13100
13101 @section il
13102
13103 Deinterleave or interleave fields.
13104
13105 This filter allows one to process interlaced images fields without
13106 deinterlacing them. Deinterleaving splits the input frame into 2
13107 fields (so called half pictures). Odd lines are moved to the top
13108 half of the output image, even lines to the bottom half.
13109 You can process (filter) them independently and then re-interleave them.
13110
13111 The filter accepts the following options:
13112
13113 @table @option
13114 @item luma_mode, l
13115 @item chroma_mode, c
13116 @item alpha_mode, a
13117 Available values for @var{luma_mode}, @var{chroma_mode} and
13118 @var{alpha_mode} are:
13119
13120 @table @samp
13121 @item none
13122 Do nothing.
13123
13124 @item deinterleave, d
13125 Deinterleave fields, placing one above the other.
13126
13127 @item interleave, i
13128 Interleave fields. Reverse the effect of deinterleaving.
13129 @end table
13130 Default value is @code{none}.
13131
13132 @item luma_swap, ls
13133 @item chroma_swap, cs
13134 @item alpha_swap, as
13135 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
13136 @end table
13137
13138 @subsection Commands
13139
13140 This filter supports the all above options as @ref{commands}.
13141
13142 @section inflate
13143
13144 Apply inflate effect to the video.
13145
13146 This filter replaces the pixel by the local(3x3) average by taking into account
13147 only values higher than the pixel.
13148
13149 It accepts the following options:
13150
13151 @table @option
13152 @item threshold0
13153 @item threshold1
13154 @item threshold2
13155 @item threshold3
13156 Limit the maximum change for each plane, default is 65535.
13157 If 0, plane will remain unchanged.
13158 @end table
13159
13160 @subsection Commands
13161
13162 This filter supports the all above options as @ref{commands}.
13163
13164 @section interlace
13165
13166 Simple interlacing filter from progressive contents. This interleaves upper (or
13167 lower) lines from odd frames with lower (or upper) lines from even frames,
13168 halving the frame rate and preserving image height.
13169
13170 @example
13171    Original        Original             New Frame
13172    Frame 'j'      Frame 'j+1'             (tff)
13173   ==========      ===========       ==================
13174     Line 0  -------------------->    Frame 'j' Line 0
13175     Line 1          Line 1  ---->   Frame 'j+1' Line 1
13176     Line 2 --------------------->    Frame 'j' Line 2
13177     Line 3          Line 3  ---->   Frame 'j+1' Line 3
13178      ...             ...                   ...
13179 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
13180 @end example
13181
13182 It accepts the following optional parameters:
13183
13184 @table @option
13185 @item scan
13186 This determines whether the interlaced frame is taken from the even
13187 (tff - default) or odd (bff) lines of the progressive frame.
13188
13189 @item lowpass
13190 Vertical lowpass filter to avoid twitter interlacing and
13191 reduce moire patterns.
13192
13193 @table @samp
13194 @item 0, off
13195 Disable vertical lowpass filter
13196
13197 @item 1, linear
13198 Enable linear filter (default)
13199
13200 @item 2, complex
13201 Enable complex filter. This will slightly less reduce twitter and moire
13202 but better retain detail and subjective sharpness impression.
13203
13204 @end table
13205 @end table
13206
13207 @section kerndeint
13208
13209 Deinterlace input video by applying Donald Graft's adaptive kernel
13210 deinterling. Work on interlaced parts of a video to produce
13211 progressive frames.
13212
13213 The description of the accepted parameters follows.
13214
13215 @table @option
13216 @item thresh
13217 Set the threshold which affects the filter's tolerance when
13218 determining if a pixel line must be processed. It must be an integer
13219 in the range [0,255] and defaults to 10. A value of 0 will result in
13220 applying the process on every pixels.
13221
13222 @item map
13223 Paint pixels exceeding the threshold value to white if set to 1.
13224 Default is 0.
13225
13226 @item order
13227 Set the fields order. Swap fields if set to 1, leave fields alone if
13228 0. Default is 0.
13229
13230 @item sharp
13231 Enable additional sharpening if set to 1. Default is 0.
13232
13233 @item twoway
13234 Enable twoway sharpening if set to 1. Default is 0.
13235 @end table
13236
13237 @subsection Examples
13238
13239 @itemize
13240 @item
13241 Apply default values:
13242 @example
13243 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
13244 @end example
13245
13246 @item
13247 Enable additional sharpening:
13248 @example
13249 kerndeint=sharp=1
13250 @end example
13251
13252 @item
13253 Paint processed pixels in white:
13254 @example
13255 kerndeint=map=1
13256 @end example
13257 @end itemize
13258
13259 @section lagfun
13260
13261 Slowly update darker pixels.
13262
13263 This filter makes short flashes of light appear longer.
13264 This filter accepts the following options:
13265
13266 @table @option
13267 @item decay
13268 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
13269
13270 @item planes
13271 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
13272 @end table
13273
13274 @section lenscorrection
13275
13276 Correct radial lens distortion
13277
13278 This filter can be used to correct for radial distortion as can result from the use
13279 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
13280 one can use tools available for example as part of opencv or simply trial-and-error.
13281 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
13282 and extract the k1 and k2 coefficients from the resulting matrix.
13283
13284 Note that effectively the same filter is available in the open-source tools Krita and
13285 Digikam from the KDE project.
13286
13287 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
13288 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
13289 brightness distribution, so you may want to use both filters together in certain
13290 cases, though you will have to take care of ordering, i.e. whether vignetting should
13291 be applied before or after lens correction.
13292
13293 @subsection Options
13294
13295 The filter accepts the following options:
13296
13297 @table @option
13298 @item cx
13299 Relative x-coordinate of the focal point of the image, and thereby the center of the
13300 distortion. This value has a range [0,1] and is expressed as fractions of the image
13301 width. Default is 0.5.
13302 @item cy
13303 Relative y-coordinate of the focal point of the image, and thereby the center of the
13304 distortion. This value has a range [0,1] and is expressed as fractions of the image
13305 height. Default is 0.5.
13306 @item k1
13307 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
13308 no correction. Default is 0.
13309 @item k2
13310 Coefficient of the double quadratic correction term. This value has a range [-1,1].
13311 0 means no correction. Default is 0.
13312 @end table
13313
13314 The formula that generates the correction is:
13315
13316 @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)
13317
13318 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
13319 distances from the focal point in the source and target images, respectively.
13320
13321 @section lensfun
13322
13323 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
13324
13325 The @code{lensfun} filter requires the camera make, camera model, and lens model
13326 to apply the lens correction. The filter will load the lensfun database and
13327 query it to find the corresponding camera and lens entries in the database. As
13328 long as these entries can be found with the given options, the filter can
13329 perform corrections on frames. Note that incomplete strings will result in the
13330 filter choosing the best match with the given options, and the filter will
13331 output the chosen camera and lens models (logged with level "info"). You must
13332 provide the make, camera model, and lens model as they are required.
13333
13334 The filter accepts the following options:
13335
13336 @table @option
13337 @item make
13338 The make of the camera (for example, "Canon"). This option is required.
13339
13340 @item model
13341 The model of the camera (for example, "Canon EOS 100D"). This option is
13342 required.
13343
13344 @item lens_model
13345 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
13346 option is required.
13347
13348 @item mode
13349 The type of correction to apply. The following values are valid options:
13350
13351 @table @samp
13352 @item vignetting
13353 Enables fixing lens vignetting.
13354
13355 @item geometry
13356 Enables fixing lens geometry. This is the default.
13357
13358 @item subpixel
13359 Enables fixing chromatic aberrations.
13360
13361 @item vig_geo
13362 Enables fixing lens vignetting and lens geometry.
13363
13364 @item vig_subpixel
13365 Enables fixing lens vignetting and chromatic aberrations.
13366
13367 @item distortion
13368 Enables fixing both lens geometry and chromatic aberrations.
13369
13370 @item all
13371 Enables all possible corrections.
13372
13373 @end table
13374 @item focal_length
13375 The focal length of the image/video (zoom; expected constant for video). For
13376 example, a 18--55mm lens has focal length range of [18--55], so a value in that
13377 range should be chosen when using that lens. Default 18.
13378
13379 @item aperture
13380 The aperture of the image/video (expected constant for video). Note that
13381 aperture is only used for vignetting correction. Default 3.5.
13382
13383 @item focus_distance
13384 The focus distance of the image/video (expected constant for video). Note that
13385 focus distance is only used for vignetting and only slightly affects the
13386 vignetting correction process. If unknown, leave it at the default value (which
13387 is 1000).
13388
13389 @item scale
13390 The scale factor which is applied after transformation. After correction the
13391 video is no longer necessarily rectangular. This parameter controls how much of
13392 the resulting image is visible. The value 0 means that a value will be chosen
13393 automatically such that there is little or no unmapped area in the output
13394 image. 1.0 means that no additional scaling is done. Lower values may result
13395 in more of the corrected image being visible, while higher values may avoid
13396 unmapped areas in the output.
13397
13398 @item target_geometry
13399 The target geometry of the output image/video. The following values are valid
13400 options:
13401
13402 @table @samp
13403 @item rectilinear (default)
13404 @item fisheye
13405 @item panoramic
13406 @item equirectangular
13407 @item fisheye_orthographic
13408 @item fisheye_stereographic
13409 @item fisheye_equisolid
13410 @item fisheye_thoby
13411 @end table
13412 @item reverse
13413 Apply the reverse of image correction (instead of correcting distortion, apply
13414 it).
13415
13416 @item interpolation
13417 The type of interpolation used when correcting distortion. The following values
13418 are valid options:
13419
13420 @table @samp
13421 @item nearest
13422 @item linear (default)
13423 @item lanczos
13424 @end table
13425 @end table
13426
13427 @subsection Examples
13428
13429 @itemize
13430 @item
13431 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
13432 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
13433 aperture of "8.0".
13434
13435 @example
13436 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
13437 @end example
13438
13439 @item
13440 Apply the same as before, but only for the first 5 seconds of video.
13441
13442 @example
13443 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
13444 @end example
13445
13446 @end itemize
13447
13448 @section libvmaf
13449
13450 Obtain the VMAF (Video Multi-Method Assessment Fusion)
13451 score between two input videos.
13452
13453 The obtained VMAF score is printed through the logging system.
13454
13455 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
13456 After installing the library it can be enabled using:
13457 @code{./configure --enable-libvmaf}.
13458 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
13459
13460 The filter has following options:
13461
13462 @table @option
13463 @item model_path
13464 Set the model path which is to be used for SVM.
13465 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
13466
13467 @item log_path
13468 Set the file path to be used to store logs.
13469
13470 @item log_fmt
13471 Set the format of the log file (csv, json or xml).
13472
13473 @item enable_transform
13474 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
13475 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
13476 Default value: @code{false}
13477
13478 @item phone_model
13479 Invokes the phone model which will generate VMAF scores higher than in the
13480 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
13481 Default value: @code{false}
13482
13483 @item psnr
13484 Enables computing psnr along with vmaf.
13485 Default value: @code{false}
13486
13487 @item ssim
13488 Enables computing ssim along with vmaf.
13489 Default value: @code{false}
13490
13491 @item ms_ssim
13492 Enables computing ms_ssim along with vmaf.
13493 Default value: @code{false}
13494
13495 @item pool
13496 Set the pool method to be used for computing vmaf.
13497 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
13498
13499 @item n_threads
13500 Set number of threads to be used when computing vmaf.
13501 Default value: @code{0}, which makes use of all available logical processors.
13502
13503 @item n_subsample
13504 Set interval for frame subsampling used when computing vmaf.
13505 Default value: @code{1}
13506
13507 @item enable_conf_interval
13508 Enables confidence interval.
13509 Default value: @code{false}
13510 @end table
13511
13512 This filter also supports the @ref{framesync} options.
13513
13514 @subsection Examples
13515 @itemize
13516 @item
13517 On the below examples the input file @file{main.mpg} being processed is
13518 compared with the reference file @file{ref.mpg}.
13519
13520 @example
13521 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
13522 @end example
13523
13524 @item
13525 Example with options:
13526 @example
13527 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
13528 @end example
13529
13530 @item
13531 Example with options and different containers:
13532 @example
13533 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 -
13534 @end example
13535 @end itemize
13536
13537 @section limiter
13538
13539 Limits the pixel components values to the specified range [min, max].
13540
13541 The filter accepts the following options:
13542
13543 @table @option
13544 @item min
13545 Lower bound. Defaults to the lowest allowed value for the input.
13546
13547 @item max
13548 Upper bound. Defaults to the highest allowed value for the input.
13549
13550 @item planes
13551 Specify which planes will be processed. Defaults to all available.
13552 @end table
13553
13554 @section loop
13555
13556 Loop video frames.
13557
13558 The filter accepts the following options:
13559
13560 @table @option
13561 @item loop
13562 Set the number of loops. Setting this value to -1 will result in infinite loops.
13563 Default is 0.
13564
13565 @item size
13566 Set maximal size in number of frames. Default is 0.
13567
13568 @item start
13569 Set first frame of loop. Default is 0.
13570 @end table
13571
13572 @subsection Examples
13573
13574 @itemize
13575 @item
13576 Loop single first frame infinitely:
13577 @example
13578 loop=loop=-1:size=1:start=0
13579 @end example
13580
13581 @item
13582 Loop single first frame 10 times:
13583 @example
13584 loop=loop=10:size=1:start=0
13585 @end example
13586
13587 @item
13588 Loop 10 first frames 5 times:
13589 @example
13590 loop=loop=5:size=10:start=0
13591 @end example
13592 @end itemize
13593
13594 @section lut1d
13595
13596 Apply a 1D LUT to an input video.
13597
13598 The filter accepts the following options:
13599
13600 @table @option
13601 @item file
13602 Set the 1D LUT file name.
13603
13604 Currently supported formats:
13605 @table @samp
13606 @item cube
13607 Iridas
13608 @item csp
13609 cineSpace
13610 @end table
13611
13612 @item interp
13613 Select interpolation mode.
13614
13615 Available values are:
13616
13617 @table @samp
13618 @item nearest
13619 Use values from the nearest defined point.
13620 @item linear
13621 Interpolate values using the linear interpolation.
13622 @item cosine
13623 Interpolate values using the cosine interpolation.
13624 @item cubic
13625 Interpolate values using the cubic interpolation.
13626 @item spline
13627 Interpolate values using the spline interpolation.
13628 @end table
13629 @end table
13630
13631 @anchor{lut3d}
13632 @section lut3d
13633
13634 Apply a 3D LUT to an input video.
13635
13636 The filter accepts the following options:
13637
13638 @table @option
13639 @item file
13640 Set the 3D LUT file name.
13641
13642 Currently supported formats:
13643 @table @samp
13644 @item 3dl
13645 AfterEffects
13646 @item cube
13647 Iridas
13648 @item dat
13649 DaVinci
13650 @item m3d
13651 Pandora
13652 @item csp
13653 cineSpace
13654 @end table
13655 @item interp
13656 Select interpolation mode.
13657
13658 Available values are:
13659
13660 @table @samp
13661 @item nearest
13662 Use values from the nearest defined point.
13663 @item trilinear
13664 Interpolate values using the 8 points defining a cube.
13665 @item tetrahedral
13666 Interpolate values using a tetrahedron.
13667 @end table
13668 @end table
13669
13670 @section lumakey
13671
13672 Turn certain luma values into transparency.
13673
13674 The filter accepts the following options:
13675
13676 @table @option
13677 @item threshold
13678 Set the luma which will be used as base for transparency.
13679 Default value is @code{0}.
13680
13681 @item tolerance
13682 Set the range of luma values to be keyed out.
13683 Default value is @code{0.01}.
13684
13685 @item softness
13686 Set the range of softness. Default value is @code{0}.
13687 Use this to control gradual transition from zero to full transparency.
13688 @end table
13689
13690 @subsection Commands
13691 This filter supports same @ref{commands} as options.
13692 The command accepts the same syntax of the corresponding option.
13693
13694 If the specified expression is not valid, it is kept at its current
13695 value.
13696
13697 @section lut, lutrgb, lutyuv
13698
13699 Compute a look-up table for binding each pixel component input value
13700 to an output value, and apply it to the input video.
13701
13702 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
13703 to an RGB input video.
13704
13705 These filters accept the following parameters:
13706 @table @option
13707 @item c0
13708 set first pixel component expression
13709 @item c1
13710 set second pixel component expression
13711 @item c2
13712 set third pixel component expression
13713 @item c3
13714 set fourth pixel component expression, corresponds to the alpha component
13715
13716 @item r
13717 set red component expression
13718 @item g
13719 set green component expression
13720 @item b
13721 set blue component expression
13722 @item a
13723 alpha component expression
13724
13725 @item y
13726 set Y/luminance component expression
13727 @item u
13728 set U/Cb component expression
13729 @item v
13730 set V/Cr component expression
13731 @end table
13732
13733 Each of them specifies the expression to use for computing the lookup table for
13734 the corresponding pixel component values.
13735
13736 The exact component associated to each of the @var{c*} options depends on the
13737 format in input.
13738
13739 The @var{lut} filter requires either YUV or RGB pixel formats in input,
13740 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
13741
13742 The expressions can contain the following constants and functions:
13743
13744 @table @option
13745 @item w
13746 @item h
13747 The input width and height.
13748
13749 @item val
13750 The input value for the pixel component.
13751
13752 @item clipval
13753 The input value, clipped to the @var{minval}-@var{maxval} range.
13754
13755 @item maxval
13756 The maximum value for the pixel component.
13757
13758 @item minval
13759 The minimum value for the pixel component.
13760
13761 @item negval
13762 The negated value for the pixel component value, clipped to the
13763 @var{minval}-@var{maxval} range; it corresponds to the expression
13764 "maxval-clipval+minval".
13765
13766 @item clip(val)
13767 The computed value in @var{val}, clipped to the
13768 @var{minval}-@var{maxval} range.
13769
13770 @item gammaval(gamma)
13771 The computed gamma correction value of the pixel component value,
13772 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
13773 expression
13774 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
13775
13776 @end table
13777
13778 All expressions default to "val".
13779
13780 @subsection Examples
13781
13782 @itemize
13783 @item
13784 Negate input video:
13785 @example
13786 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
13787 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
13788 @end example
13789
13790 The above is the same as:
13791 @example
13792 lutrgb="r=negval:g=negval:b=negval"
13793 lutyuv="y=negval:u=negval:v=negval"
13794 @end example
13795
13796 @item
13797 Negate luminance:
13798 @example
13799 lutyuv=y=negval
13800 @end example
13801
13802 @item
13803 Remove chroma components, turning the video into a graytone image:
13804 @example
13805 lutyuv="u=128:v=128"
13806 @end example
13807
13808 @item
13809 Apply a luma burning effect:
13810 @example
13811 lutyuv="y=2*val"
13812 @end example
13813
13814 @item
13815 Remove green and blue components:
13816 @example
13817 lutrgb="g=0:b=0"
13818 @end example
13819
13820 @item
13821 Set a constant alpha channel value on input:
13822 @example
13823 format=rgba,lutrgb=a="maxval-minval/2"
13824 @end example
13825
13826 @item
13827 Correct luminance gamma by a factor of 0.5:
13828 @example
13829 lutyuv=y=gammaval(0.5)
13830 @end example
13831
13832 @item
13833 Discard least significant bits of luma:
13834 @example
13835 lutyuv=y='bitand(val, 128+64+32)'
13836 @end example
13837
13838 @item
13839 Technicolor like effect:
13840 @example
13841 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
13842 @end example
13843 @end itemize
13844
13845 @section lut2, tlut2
13846
13847 The @code{lut2} filter takes two input streams and outputs one
13848 stream.
13849
13850 The @code{tlut2} (time lut2) filter takes two consecutive frames
13851 from one single stream.
13852
13853 This filter accepts the following parameters:
13854 @table @option
13855 @item c0
13856 set first pixel component expression
13857 @item c1
13858 set second pixel component expression
13859 @item c2
13860 set third pixel component expression
13861 @item c3
13862 set fourth pixel component expression, corresponds to the alpha component
13863
13864 @item d
13865 set output bit depth, only available for @code{lut2} filter. By default is 0,
13866 which means bit depth is automatically picked from first input format.
13867 @end table
13868
13869 The @code{lut2} filter also supports the @ref{framesync} options.
13870
13871 Each of them specifies the expression to use for computing the lookup table for
13872 the corresponding pixel component values.
13873
13874 The exact component associated to each of the @var{c*} options depends on the
13875 format in inputs.
13876
13877 The expressions can contain the following constants:
13878
13879 @table @option
13880 @item w
13881 @item h
13882 The input width and height.
13883
13884 @item x
13885 The first input value for the pixel component.
13886
13887 @item y
13888 The second input value for the pixel component.
13889
13890 @item bdx
13891 The first input video bit depth.
13892
13893 @item bdy
13894 The second input video bit depth.
13895 @end table
13896
13897 All expressions default to "x".
13898
13899 @subsection Examples
13900
13901 @itemize
13902 @item
13903 Highlight differences between two RGB video streams:
13904 @example
13905 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)'
13906 @end example
13907
13908 @item
13909 Highlight differences between two YUV video streams:
13910 @example
13911 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)'
13912 @end example
13913
13914 @item
13915 Show max difference between two video streams:
13916 @example
13917 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)))'
13918 @end example
13919 @end itemize
13920
13921 @section maskedclamp
13922
13923 Clamp the first input stream with the second input and third input stream.
13924
13925 Returns the value of first stream to be between second input
13926 stream - @code{undershoot} and third input stream + @code{overshoot}.
13927
13928 This filter accepts the following options:
13929 @table @option
13930 @item undershoot
13931 Default value is @code{0}.
13932
13933 @item overshoot
13934 Default value is @code{0}.
13935
13936 @item planes
13937 Set which planes will be processed as bitmap, unprocessed planes will be
13938 copied from first stream.
13939 By default value 0xf, all planes will be processed.
13940 @end table
13941
13942 @section maskedmax
13943
13944 Merge the second and third input stream into output stream using absolute differences
13945 between second input stream and first input stream and absolute difference between
13946 third input stream and first input stream. The picked value will be from second input
13947 stream if second absolute difference is greater than first one or from third input stream
13948 otherwise.
13949
13950 This filter accepts the following options:
13951 @table @option
13952 @item planes
13953 Set which planes will be processed as bitmap, unprocessed planes will be
13954 copied from first stream.
13955 By default value 0xf, all planes will be processed.
13956 @end table
13957
13958 @section maskedmerge
13959
13960 Merge the first input stream with the second input stream using per pixel
13961 weights in the third input stream.
13962
13963 A value of 0 in the third stream pixel component means that pixel component
13964 from first stream is returned unchanged, while maximum value (eg. 255 for
13965 8-bit videos) means that pixel component from second stream is returned
13966 unchanged. Intermediate values define the amount of merging between both
13967 input stream's pixel components.
13968
13969 This filter accepts the following options:
13970 @table @option
13971 @item planes
13972 Set which planes will be processed as bitmap, unprocessed planes will be
13973 copied from first stream.
13974 By default value 0xf, all planes will be processed.
13975 @end table
13976
13977 @section maskedmin
13978
13979 Merge the second and third input stream into output stream using absolute differences
13980 between second input stream and first input stream and absolute difference between
13981 third input stream and first input stream. The picked value will be from second input
13982 stream if second absolute difference is less than first one or from third input stream
13983 otherwise.
13984
13985 This filter accepts the following options:
13986 @table @option
13987 @item planes
13988 Set which planes will be processed as bitmap, unprocessed planes will be
13989 copied from first stream.
13990 By default value 0xf, all planes will be processed.
13991 @end table
13992
13993 @section maskedthreshold
13994 Pick pixels comparing absolute difference of two video streams with fixed
13995 threshold.
13996
13997 If absolute difference between pixel component of first and second video
13998 stream is equal or lower than user supplied threshold than pixel component
13999 from first video stream is picked, otherwise pixel component from second
14000 video stream is picked.
14001
14002 This filter accepts the following options:
14003 @table @option
14004 @item threshold
14005 Set threshold used when picking pixels from absolute difference from two input
14006 video streams.
14007
14008 @item planes
14009 Set which planes will be processed as bitmap, unprocessed planes will be
14010 copied from second stream.
14011 By default value 0xf, all planes will be processed.
14012 @end table
14013
14014 @section maskfun
14015 Create mask from input video.
14016
14017 For example it is useful to create motion masks after @code{tblend} filter.
14018
14019 This filter accepts the following options:
14020
14021 @table @option
14022 @item low
14023 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
14024
14025 @item high
14026 Set high threshold. Any pixel component higher than this value will be set to max value
14027 allowed for current pixel format.
14028
14029 @item planes
14030 Set planes to filter, by default all available planes are filtered.
14031
14032 @item fill
14033 Fill all frame pixels with this value.
14034
14035 @item sum
14036 Set max average pixel value for frame. If sum of all pixel components is higher that this
14037 average, output frame will be completely filled with value set by @var{fill} option.
14038 Typically useful for scene changes when used in combination with @code{tblend} filter.
14039 @end table
14040
14041 @section mcdeint
14042
14043 Apply motion-compensation deinterlacing.
14044
14045 It needs one field per frame as input and must thus be used together
14046 with yadif=1/3 or equivalent.
14047
14048 This filter accepts the following options:
14049 @table @option
14050 @item mode
14051 Set the deinterlacing mode.
14052
14053 It accepts one of the following values:
14054 @table @samp
14055 @item fast
14056 @item medium
14057 @item slow
14058 use iterative motion estimation
14059 @item extra_slow
14060 like @samp{slow}, but use multiple reference frames.
14061 @end table
14062 Default value is @samp{fast}.
14063
14064 @item parity
14065 Set the picture field parity assumed for the input video. It must be
14066 one of the following values:
14067
14068 @table @samp
14069 @item 0, tff
14070 assume top field first
14071 @item 1, bff
14072 assume bottom field first
14073 @end table
14074
14075 Default value is @samp{bff}.
14076
14077 @item qp
14078 Set per-block quantization parameter (QP) used by the internal
14079 encoder.
14080
14081 Higher values should result in a smoother motion vector field but less
14082 optimal individual vectors. Default value is 1.
14083 @end table
14084
14085 @section median
14086
14087 Pick median pixel from certain rectangle defined by radius.
14088
14089 This filter accepts the following options:
14090
14091 @table @option
14092 @item radius
14093 Set horizontal radius size. Default value is @code{1}.
14094 Allowed range is integer from 1 to 127.
14095
14096 @item planes
14097 Set which planes to process. Default is @code{15}, which is all available planes.
14098
14099 @item radiusV
14100 Set vertical radius size. Default value is @code{0}.
14101 Allowed range is integer from 0 to 127.
14102 If it is 0, value will be picked from horizontal @code{radius} option.
14103
14104 @item percentile
14105 Set median percentile. Default value is @code{0.5}.
14106 Default value of @code{0.5} will pick always median values, while @code{0} will pick
14107 minimum values, and @code{1} maximum values.
14108 @end table
14109
14110 @subsection Commands
14111 This filter supports same @ref{commands} as options.
14112 The command accepts the same syntax of the corresponding option.
14113
14114 If the specified expression is not valid, it is kept at its current
14115 value.
14116
14117 @section mergeplanes
14118
14119 Merge color channel components from several video streams.
14120
14121 The filter accepts up to 4 input streams, and merge selected input
14122 planes to the output video.
14123
14124 This filter accepts the following options:
14125 @table @option
14126 @item mapping
14127 Set input to output plane mapping. Default is @code{0}.
14128
14129 The mappings is specified as a bitmap. It should be specified as a
14130 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
14131 mapping for the first plane of the output stream. 'A' sets the number of
14132 the input stream to use (from 0 to 3), and 'a' the plane number of the
14133 corresponding input to use (from 0 to 3). The rest of the mappings is
14134 similar, 'Bb' describes the mapping for the output stream second
14135 plane, 'Cc' describes the mapping for the output stream third plane and
14136 'Dd' describes the mapping for the output stream fourth plane.
14137
14138 @item format
14139 Set output pixel format. Default is @code{yuva444p}.
14140 @end table
14141
14142 @subsection Examples
14143
14144 @itemize
14145 @item
14146 Merge three gray video streams of same width and height into single video stream:
14147 @example
14148 [a0][a1][a2]mergeplanes=0x001020:yuv444p
14149 @end example
14150
14151 @item
14152 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
14153 @example
14154 [a0][a1]mergeplanes=0x00010210:yuva444p
14155 @end example
14156
14157 @item
14158 Swap Y and A plane in yuva444p stream:
14159 @example
14160 format=yuva444p,mergeplanes=0x03010200:yuva444p
14161 @end example
14162
14163 @item
14164 Swap U and V plane in yuv420p stream:
14165 @example
14166 format=yuv420p,mergeplanes=0x000201:yuv420p
14167 @end example
14168
14169 @item
14170 Cast a rgb24 clip to yuv444p:
14171 @example
14172 format=rgb24,mergeplanes=0x000102:yuv444p
14173 @end example
14174 @end itemize
14175
14176 @section mestimate
14177
14178 Estimate and export motion vectors using block matching algorithms.
14179 Motion vectors are stored in frame side data to be used by other filters.
14180
14181 This filter accepts the following options:
14182 @table @option
14183 @item method
14184 Specify the motion estimation method. Accepts one of the following values:
14185
14186 @table @samp
14187 @item esa
14188 Exhaustive search algorithm.
14189 @item tss
14190 Three step search algorithm.
14191 @item tdls
14192 Two dimensional logarithmic search algorithm.
14193 @item ntss
14194 New three step search algorithm.
14195 @item fss
14196 Four step search algorithm.
14197 @item ds
14198 Diamond search algorithm.
14199 @item hexbs
14200 Hexagon-based search algorithm.
14201 @item epzs
14202 Enhanced predictive zonal search algorithm.
14203 @item umh
14204 Uneven multi-hexagon search algorithm.
14205 @end table
14206 Default value is @samp{esa}.
14207
14208 @item mb_size
14209 Macroblock size. Default @code{16}.
14210
14211 @item search_param
14212 Search parameter. Default @code{7}.
14213 @end table
14214
14215 @section midequalizer
14216
14217 Apply Midway Image Equalization effect using two video streams.
14218
14219 Midway Image Equalization adjusts a pair of images to have the same
14220 histogram, while maintaining their dynamics as much as possible. It's
14221 useful for e.g. matching exposures from a pair of stereo cameras.
14222
14223 This filter has two inputs and one output, which must be of same pixel format, but
14224 may be of different sizes. The output of filter is first input adjusted with
14225 midway histogram of both inputs.
14226
14227 This filter accepts the following option:
14228
14229 @table @option
14230 @item planes
14231 Set which planes to process. Default is @code{15}, which is all available planes.
14232 @end table
14233
14234 @section minterpolate
14235
14236 Convert the video to specified frame rate using motion interpolation.
14237
14238 This filter accepts the following options:
14239 @table @option
14240 @item fps
14241 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}.
14242
14243 @item mi_mode
14244 Motion interpolation mode. Following values are accepted:
14245 @table @samp
14246 @item dup
14247 Duplicate previous or next frame for interpolating new ones.
14248 @item blend
14249 Blend source frames. Interpolated frame is mean of previous and next frames.
14250 @item mci
14251 Motion compensated interpolation. Following options are effective when this mode is selected:
14252
14253 @table @samp
14254 @item mc_mode
14255 Motion compensation mode. Following values are accepted:
14256 @table @samp
14257 @item obmc
14258 Overlapped block motion compensation.
14259 @item aobmc
14260 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
14261 @end table
14262 Default mode is @samp{obmc}.
14263
14264 @item me_mode
14265 Motion estimation mode. Following values are accepted:
14266 @table @samp
14267 @item bidir
14268 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
14269 @item bilat
14270 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
14271 @end table
14272 Default mode is @samp{bilat}.
14273
14274 @item me
14275 The algorithm to be used for motion estimation. Following values are accepted:
14276 @table @samp
14277 @item esa
14278 Exhaustive search algorithm.
14279 @item tss
14280 Three step search algorithm.
14281 @item tdls
14282 Two dimensional logarithmic search algorithm.
14283 @item ntss
14284 New three step search algorithm.
14285 @item fss
14286 Four step search algorithm.
14287 @item ds
14288 Diamond search algorithm.
14289 @item hexbs
14290 Hexagon-based search algorithm.
14291 @item epzs
14292 Enhanced predictive zonal search algorithm.
14293 @item umh
14294 Uneven multi-hexagon search algorithm.
14295 @end table
14296 Default algorithm is @samp{epzs}.
14297
14298 @item mb_size
14299 Macroblock size. Default @code{16}.
14300
14301 @item search_param
14302 Motion estimation search parameter. Default @code{32}.
14303
14304 @item vsbmc
14305 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).
14306 @end table
14307 @end table
14308
14309 @item scd
14310 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:
14311 @table @samp
14312 @item none
14313 Disable scene change detection.
14314 @item fdiff
14315 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
14316 @end table
14317 Default method is @samp{fdiff}.
14318
14319 @item scd_threshold
14320 Scene change detection threshold. Default is @code{10.}.
14321 @end table
14322
14323 @section mix
14324
14325 Mix several video input streams into one video stream.
14326
14327 A description of the accepted options follows.
14328
14329 @table @option
14330 @item nb_inputs
14331 The number of inputs. If unspecified, it defaults to 2.
14332
14333 @item weights
14334 Specify weight of each input video stream as sequence.
14335 Each weight is separated by space. If number of weights
14336 is smaller than number of @var{frames} last specified
14337 weight will be used for all remaining unset weights.
14338
14339 @item scale
14340 Specify scale, if it is set it will be multiplied with sum
14341 of each weight multiplied with pixel values to give final destination
14342 pixel value. By default @var{scale} is auto scaled to sum of weights.
14343
14344 @item duration
14345 Specify how end of stream is determined.
14346 @table @samp
14347 @item longest
14348 The duration of the longest input. (default)
14349
14350 @item shortest
14351 The duration of the shortest input.
14352
14353 @item first
14354 The duration of the first input.
14355 @end table
14356 @end table
14357
14358 @section mpdecimate
14359
14360 Drop frames that do not differ greatly from the previous frame in
14361 order to reduce frame rate.
14362
14363 The main use of this filter is for very-low-bitrate encoding
14364 (e.g. streaming over dialup modem), but it could in theory be used for
14365 fixing movies that were inverse-telecined incorrectly.
14366
14367 A description of the accepted options follows.
14368
14369 @table @option
14370 @item max
14371 Set the maximum number of consecutive frames which can be dropped (if
14372 positive), or the minimum interval between dropped frames (if
14373 negative). If the value is 0, the frame is dropped disregarding the
14374 number of previous sequentially dropped frames.
14375
14376 Default value is 0.
14377
14378 @item hi
14379 @item lo
14380 @item frac
14381 Set the dropping threshold values.
14382
14383 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
14384 represent actual pixel value differences, so a threshold of 64
14385 corresponds to 1 unit of difference for each pixel, or the same spread
14386 out differently over the block.
14387
14388 A frame is a candidate for dropping if no 8x8 blocks differ by more
14389 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
14390 meaning the whole image) differ by more than a threshold of @option{lo}.
14391
14392 Default value for @option{hi} is 64*12, default value for @option{lo} is
14393 64*5, and default value for @option{frac} is 0.33.
14394 @end table
14395
14396
14397 @section negate
14398
14399 Negate (invert) the input video.
14400
14401 It accepts the following option:
14402
14403 @table @option
14404
14405 @item negate_alpha
14406 With value 1, it negates the alpha component, if present. Default value is 0.
14407 @end table
14408
14409 @anchor{nlmeans}
14410 @section nlmeans
14411
14412 Denoise frames using Non-Local Means algorithm.
14413
14414 Each pixel is adjusted by looking for other pixels with similar contexts. This
14415 context similarity is defined by comparing their surrounding patches of size
14416 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
14417 around the pixel.
14418
14419 Note that the research area defines centers for patches, which means some
14420 patches will be made of pixels outside that research area.
14421
14422 The filter accepts the following options.
14423
14424 @table @option
14425 @item s
14426 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
14427
14428 @item p
14429 Set patch size. Default is 7. Must be odd number in range [0, 99].
14430
14431 @item pc
14432 Same as @option{p} but for chroma planes.
14433
14434 The default value is @var{0} and means automatic.
14435
14436 @item r
14437 Set research size. Default is 15. Must be odd number in range [0, 99].
14438
14439 @item rc
14440 Same as @option{r} but for chroma planes.
14441
14442 The default value is @var{0} and means automatic.
14443 @end table
14444
14445 @section nnedi
14446
14447 Deinterlace video using neural network edge directed interpolation.
14448
14449 This filter accepts the following options:
14450
14451 @table @option
14452 @item weights
14453 Mandatory option, without binary file filter can not work.
14454 Currently file can be found here:
14455 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
14456
14457 @item deint
14458 Set which frames to deinterlace, by default it is @code{all}.
14459 Can be @code{all} or @code{interlaced}.
14460
14461 @item field
14462 Set mode of operation.
14463
14464 Can be one of the following:
14465
14466 @table @samp
14467 @item af
14468 Use frame flags, both fields.
14469 @item a
14470 Use frame flags, single field.
14471 @item t
14472 Use top field only.
14473 @item b
14474 Use bottom field only.
14475 @item tf
14476 Use both fields, top first.
14477 @item bf
14478 Use both fields, bottom first.
14479 @end table
14480
14481 @item planes
14482 Set which planes to process, by default filter process all frames.
14483
14484 @item nsize
14485 Set size of local neighborhood around each pixel, used by the predictor neural
14486 network.
14487
14488 Can be one of the following:
14489
14490 @table @samp
14491 @item s8x6
14492 @item s16x6
14493 @item s32x6
14494 @item s48x6
14495 @item s8x4
14496 @item s16x4
14497 @item s32x4
14498 @end table
14499
14500 @item nns
14501 Set the number of neurons in predictor neural network.
14502 Can be one of the following:
14503
14504 @table @samp
14505 @item n16
14506 @item n32
14507 @item n64
14508 @item n128
14509 @item n256
14510 @end table
14511
14512 @item qual
14513 Controls the number of different neural network predictions that are blended
14514 together to compute the final output value. Can be @code{fast}, default or
14515 @code{slow}.
14516
14517 @item etype
14518 Set which set of weights to use in the predictor.
14519 Can be one of the following:
14520
14521 @table @samp
14522 @item a
14523 weights trained to minimize absolute error
14524 @item s
14525 weights trained to minimize squared error
14526 @end table
14527
14528 @item pscrn
14529 Controls whether or not the prescreener neural network is used to decide
14530 which pixels should be processed by the predictor neural network and which
14531 can be handled by simple cubic interpolation.
14532 The prescreener is trained to know whether cubic interpolation will be
14533 sufficient for a pixel or whether it should be predicted by the predictor nn.
14534 The computational complexity of the prescreener nn is much less than that of
14535 the predictor nn. Since most pixels can be handled by cubic interpolation,
14536 using the prescreener generally results in much faster processing.
14537 The prescreener is pretty accurate, so the difference between using it and not
14538 using it is almost always unnoticeable.
14539
14540 Can be one of the following:
14541
14542 @table @samp
14543 @item none
14544 @item original
14545 @item new
14546 @end table
14547
14548 Default is @code{new}.
14549
14550 @item fapprox
14551 Set various debugging flags.
14552 @end table
14553
14554 @section noformat
14555
14556 Force libavfilter not to use any of the specified pixel formats for the
14557 input to the next filter.
14558
14559 It accepts the following parameters:
14560 @table @option
14561
14562 @item pix_fmts
14563 A '|'-separated list of pixel format names, such as
14564 pix_fmts=yuv420p|monow|rgb24".
14565
14566 @end table
14567
14568 @subsection Examples
14569
14570 @itemize
14571 @item
14572 Force libavfilter to use a format different from @var{yuv420p} for the
14573 input to the vflip filter:
14574 @example
14575 noformat=pix_fmts=yuv420p,vflip
14576 @end example
14577
14578 @item
14579 Convert the input video to any of the formats not contained in the list:
14580 @example
14581 noformat=yuv420p|yuv444p|yuv410p
14582 @end example
14583 @end itemize
14584
14585 @section noise
14586
14587 Add noise on video input frame.
14588
14589 The filter accepts the following options:
14590
14591 @table @option
14592 @item all_seed
14593 @item c0_seed
14594 @item c1_seed
14595 @item c2_seed
14596 @item c3_seed
14597 Set noise seed for specific pixel component or all pixel components in case
14598 of @var{all_seed}. Default value is @code{123457}.
14599
14600 @item all_strength, alls
14601 @item c0_strength, c0s
14602 @item c1_strength, c1s
14603 @item c2_strength, c2s
14604 @item c3_strength, c3s
14605 Set noise strength for specific pixel component or all pixel components in case
14606 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
14607
14608 @item all_flags, allf
14609 @item c0_flags, c0f
14610 @item c1_flags, c1f
14611 @item c2_flags, c2f
14612 @item c3_flags, c3f
14613 Set pixel component flags or set flags for all components if @var{all_flags}.
14614 Available values for component flags are:
14615 @table @samp
14616 @item a
14617 averaged temporal noise (smoother)
14618 @item p
14619 mix random noise with a (semi)regular pattern
14620 @item t
14621 temporal noise (noise pattern changes between frames)
14622 @item u
14623 uniform noise (gaussian otherwise)
14624 @end table
14625 @end table
14626
14627 @subsection Examples
14628
14629 Add temporal and uniform noise to input video:
14630 @example
14631 noise=alls=20:allf=t+u
14632 @end example
14633
14634 @section normalize
14635
14636 Normalize RGB video (aka histogram stretching, contrast stretching).
14637 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
14638
14639 For each channel of each frame, the filter computes the input range and maps
14640 it linearly to the user-specified output range. The output range defaults
14641 to the full dynamic range from pure black to pure white.
14642
14643 Temporal smoothing can be used on the input range to reduce flickering (rapid
14644 changes in brightness) caused when small dark or bright objects enter or leave
14645 the scene. This is similar to the auto-exposure (automatic gain control) on a
14646 video camera, and, like a video camera, it may cause a period of over- or
14647 under-exposure of the video.
14648
14649 The R,G,B channels can be normalized independently, which may cause some
14650 color shifting, or linked together as a single channel, which prevents
14651 color shifting. Linked normalization preserves hue. Independent normalization
14652 does not, so it can be used to remove some color casts. Independent and linked
14653 normalization can be combined in any ratio.
14654
14655 The normalize filter accepts the following options:
14656
14657 @table @option
14658 @item blackpt
14659 @item whitept
14660 Colors which define the output range. The minimum input value is mapped to
14661 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
14662 The defaults are black and white respectively. Specifying white for
14663 @var{blackpt} and black for @var{whitept} will give color-inverted,
14664 normalized video. Shades of grey can be used to reduce the dynamic range
14665 (contrast). Specifying saturated colors here can create some interesting
14666 effects.
14667
14668 @item smoothing
14669 The number of previous frames to use for temporal smoothing. The input range
14670 of each channel is smoothed using a rolling average over the current frame
14671 and the @var{smoothing} previous frames. The default is 0 (no temporal
14672 smoothing).
14673
14674 @item independence
14675 Controls the ratio of independent (color shifting) channel normalization to
14676 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
14677 independent. Defaults to 1.0 (fully independent).
14678
14679 @item strength
14680 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
14681 expensive no-op. Defaults to 1.0 (full strength).
14682
14683 @end table
14684
14685 @subsection Commands
14686 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
14687 The command accepts the same syntax of the corresponding option.
14688
14689 If the specified expression is not valid, it is kept at its current
14690 value.
14691
14692 @subsection Examples
14693
14694 Stretch video contrast to use the full dynamic range, with no temporal
14695 smoothing; may flicker depending on the source content:
14696 @example
14697 normalize=blackpt=black:whitept=white:smoothing=0
14698 @end example
14699
14700 As above, but with 50 frames of temporal smoothing; flicker should be
14701 reduced, depending on the source content:
14702 @example
14703 normalize=blackpt=black:whitept=white:smoothing=50
14704 @end example
14705
14706 As above, but with hue-preserving linked channel normalization:
14707 @example
14708 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
14709 @end example
14710
14711 As above, but with half strength:
14712 @example
14713 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
14714 @end example
14715
14716 Map the darkest input color to red, the brightest input color to cyan:
14717 @example
14718 normalize=blackpt=red:whitept=cyan
14719 @end example
14720
14721 @section null
14722
14723 Pass the video source unchanged to the output.
14724
14725 @section ocr
14726 Optical Character Recognition
14727
14728 This filter uses Tesseract for optical character recognition. To enable
14729 compilation of this filter, you need to configure FFmpeg with
14730 @code{--enable-libtesseract}.
14731
14732 It accepts the following options:
14733
14734 @table @option
14735 @item datapath
14736 Set datapath to tesseract data. Default is to use whatever was
14737 set at installation.
14738
14739 @item language
14740 Set language, default is "eng".
14741
14742 @item whitelist
14743 Set character whitelist.
14744
14745 @item blacklist
14746 Set character blacklist.
14747 @end table
14748
14749 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
14750 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
14751
14752 @section ocv
14753
14754 Apply a video transform using libopencv.
14755
14756 To enable this filter, install the libopencv library and headers and
14757 configure FFmpeg with @code{--enable-libopencv}.
14758
14759 It accepts the following parameters:
14760
14761 @table @option
14762
14763 @item filter_name
14764 The name of the libopencv filter to apply.
14765
14766 @item filter_params
14767 The parameters to pass to the libopencv filter. If not specified, the default
14768 values are assumed.
14769
14770 @end table
14771
14772 Refer to the official libopencv documentation for more precise
14773 information:
14774 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
14775
14776 Several libopencv filters are supported; see the following subsections.
14777
14778 @anchor{dilate}
14779 @subsection dilate
14780
14781 Dilate an image by using a specific structuring element.
14782 It corresponds to the libopencv function @code{cvDilate}.
14783
14784 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
14785
14786 @var{struct_el} represents a structuring element, and has the syntax:
14787 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
14788
14789 @var{cols} and @var{rows} represent the number of columns and rows of
14790 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
14791 point, and @var{shape} the shape for the structuring element. @var{shape}
14792 must be "rect", "cross", "ellipse", or "custom".
14793
14794 If the value for @var{shape} is "custom", it must be followed by a
14795 string of the form "=@var{filename}". The file with name
14796 @var{filename} is assumed to represent a binary image, with each
14797 printable character corresponding to a bright pixel. When a custom
14798 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
14799 or columns and rows of the read file are assumed instead.
14800
14801 The default value for @var{struct_el} is "3x3+0x0/rect".
14802
14803 @var{nb_iterations} specifies the number of times the transform is
14804 applied to the image, and defaults to 1.
14805
14806 Some examples:
14807 @example
14808 # Use the default values
14809 ocv=dilate
14810
14811 # Dilate using a structuring element with a 5x5 cross, iterating two times
14812 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
14813
14814 # Read the shape from the file diamond.shape, iterating two times.
14815 # The file diamond.shape may contain a pattern of characters like this
14816 #   *
14817 #  ***
14818 # *****
14819 #  ***
14820 #   *
14821 # The specified columns and rows are ignored
14822 # but the anchor point coordinates are not
14823 ocv=dilate:0x0+2x2/custom=diamond.shape|2
14824 @end example
14825
14826 @subsection erode
14827
14828 Erode an image by using a specific structuring element.
14829 It corresponds to the libopencv function @code{cvErode}.
14830
14831 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
14832 with the same syntax and semantics as the @ref{dilate} filter.
14833
14834 @subsection smooth
14835
14836 Smooth the input video.
14837
14838 The filter takes the following parameters:
14839 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
14840
14841 @var{type} is the type of smooth filter to apply, and must be one of
14842 the following values: "blur", "blur_no_scale", "median", "gaussian",
14843 or "bilateral". The default value is "gaussian".
14844
14845 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
14846 depends on the smooth type. @var{param1} and
14847 @var{param2} accept integer positive values or 0. @var{param3} and
14848 @var{param4} accept floating point values.
14849
14850 The default value for @var{param1} is 3. The default value for the
14851 other parameters is 0.
14852
14853 These parameters correspond to the parameters assigned to the
14854 libopencv function @code{cvSmooth}.
14855
14856 @section oscilloscope
14857
14858 2D Video Oscilloscope.
14859
14860 Useful to measure spatial impulse, step responses, chroma delays, etc.
14861
14862 It accepts the following parameters:
14863
14864 @table @option
14865 @item x
14866 Set scope center x position.
14867
14868 @item y
14869 Set scope center y position.
14870
14871 @item s
14872 Set scope size, relative to frame diagonal.
14873
14874 @item t
14875 Set scope tilt/rotation.
14876
14877 @item o
14878 Set trace opacity.
14879
14880 @item tx
14881 Set trace center x position.
14882
14883 @item ty
14884 Set trace center y position.
14885
14886 @item tw
14887 Set trace width, relative to width of frame.
14888
14889 @item th
14890 Set trace height, relative to height of frame.
14891
14892 @item c
14893 Set which components to trace. By default it traces first three components.
14894
14895 @item g
14896 Draw trace grid. By default is enabled.
14897
14898 @item st
14899 Draw some statistics. By default is enabled.
14900
14901 @item sc
14902 Draw scope. By default is enabled.
14903 @end table
14904
14905 @subsection Commands
14906 This filter supports same @ref{commands} as options.
14907 The command accepts the same syntax of the corresponding option.
14908
14909 If the specified expression is not valid, it is kept at its current
14910 value.
14911
14912 @subsection Examples
14913
14914 @itemize
14915 @item
14916 Inspect full first row of video frame.
14917 @example
14918 oscilloscope=x=0.5:y=0:s=1
14919 @end example
14920
14921 @item
14922 Inspect full last row of video frame.
14923 @example
14924 oscilloscope=x=0.5:y=1:s=1
14925 @end example
14926
14927 @item
14928 Inspect full 5th line of video frame of height 1080.
14929 @example
14930 oscilloscope=x=0.5:y=5/1080:s=1
14931 @end example
14932
14933 @item
14934 Inspect full last column of video frame.
14935 @example
14936 oscilloscope=x=1:y=0.5:s=1:t=1
14937 @end example
14938
14939 @end itemize
14940
14941 @anchor{overlay}
14942 @section overlay
14943
14944 Overlay one video on top of another.
14945
14946 It takes two inputs and has one output. The first input is the "main"
14947 video on which the second input is overlaid.
14948
14949 It accepts the following parameters:
14950
14951 A description of the accepted options follows.
14952
14953 @table @option
14954 @item x
14955 @item y
14956 Set the expression for the x and y coordinates of the overlaid video
14957 on the main video. Default value is "0" for both expressions. In case
14958 the expression is invalid, it is set to a huge value (meaning that the
14959 overlay will not be displayed within the output visible area).
14960
14961 @item eof_action
14962 See @ref{framesync}.
14963
14964 @item eval
14965 Set when the expressions for @option{x}, and @option{y} are evaluated.
14966
14967 It accepts the following values:
14968 @table @samp
14969 @item init
14970 only evaluate expressions once during the filter initialization or
14971 when a command is processed
14972
14973 @item frame
14974 evaluate expressions for each incoming frame
14975 @end table
14976
14977 Default value is @samp{frame}.
14978
14979 @item shortest
14980 See @ref{framesync}.
14981
14982 @item format
14983 Set the format for the output video.
14984
14985 It accepts the following values:
14986 @table @samp
14987 @item yuv420
14988 force YUV420 output
14989
14990 @item yuv420p10
14991 force YUV420p10 output
14992
14993 @item yuv422
14994 force YUV422 output
14995
14996 @item yuv422p10
14997 force YUV422p10 output
14998
14999 @item yuv444
15000 force YUV444 output
15001
15002 @item rgb
15003 force packed RGB output
15004
15005 @item gbrp
15006 force planar RGB output
15007
15008 @item auto
15009 automatically pick format
15010 @end table
15011
15012 Default value is @samp{yuv420}.
15013
15014 @item repeatlast
15015 See @ref{framesync}.
15016
15017 @item alpha
15018 Set format of alpha of the overlaid video, it can be @var{straight} or
15019 @var{premultiplied}. Default is @var{straight}.
15020 @end table
15021
15022 The @option{x}, and @option{y} expressions can contain the following
15023 parameters.
15024
15025 @table @option
15026 @item main_w, W
15027 @item main_h, H
15028 The main input width and height.
15029
15030 @item overlay_w, w
15031 @item overlay_h, h
15032 The overlay input width and height.
15033
15034 @item x
15035 @item y
15036 The computed values for @var{x} and @var{y}. They are evaluated for
15037 each new frame.
15038
15039 @item hsub
15040 @item vsub
15041 horizontal and vertical chroma subsample values of the output
15042 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
15043 @var{vsub} is 1.
15044
15045 @item n
15046 the number of input frame, starting from 0
15047
15048 @item pos
15049 the position in the file of the input frame, NAN if unknown
15050
15051 @item t
15052 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
15053
15054 @end table
15055
15056 This filter also supports the @ref{framesync} options.
15057
15058 Note that the @var{n}, @var{pos}, @var{t} variables are available only
15059 when evaluation is done @emph{per frame}, and will evaluate to NAN
15060 when @option{eval} is set to @samp{init}.
15061
15062 Be aware that frames are taken from each input video in timestamp
15063 order, hence, if their initial timestamps differ, it is a good idea
15064 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
15065 have them begin in the same zero timestamp, as the example for
15066 the @var{movie} filter does.
15067
15068 You can chain together more overlays but you should test the
15069 efficiency of such approach.
15070
15071 @subsection Commands
15072
15073 This filter supports the following commands:
15074 @table @option
15075 @item x
15076 @item y
15077 Modify the x and y of the overlay input.
15078 The command accepts the same syntax of the corresponding option.
15079
15080 If the specified expression is not valid, it is kept at its current
15081 value.
15082 @end table
15083
15084 @subsection Examples
15085
15086 @itemize
15087 @item
15088 Draw the overlay at 10 pixels from the bottom right corner of the main
15089 video:
15090 @example
15091 overlay=main_w-overlay_w-10:main_h-overlay_h-10
15092 @end example
15093
15094 Using named options the example above becomes:
15095 @example
15096 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
15097 @end example
15098
15099 @item
15100 Insert a transparent PNG logo in the bottom left corner of the input,
15101 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
15102 @example
15103 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
15104 @end example
15105
15106 @item
15107 Insert 2 different transparent PNG logos (second logo on bottom
15108 right corner) using the @command{ffmpeg} tool:
15109 @example
15110 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
15111 @end example
15112
15113 @item
15114 Add a transparent color layer on top of the main video; @code{WxH}
15115 must specify the size of the main input to the overlay filter:
15116 @example
15117 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
15118 @end example
15119
15120 @item
15121 Play an original video and a filtered version (here with the deshake
15122 filter) side by side using the @command{ffplay} tool:
15123 @example
15124 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
15125 @end example
15126
15127 The above command is the same as:
15128 @example
15129 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
15130 @end example
15131
15132 @item
15133 Make a sliding overlay appearing from the left to the right top part of the
15134 screen starting since time 2:
15135 @example
15136 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
15137 @end example
15138
15139 @item
15140 Compose output by putting two input videos side to side:
15141 @example
15142 ffmpeg -i left.avi -i right.avi -filter_complex "
15143 nullsrc=size=200x100 [background];
15144 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
15145 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
15146 [background][left]       overlay=shortest=1       [background+left];
15147 [background+left][right] overlay=shortest=1:x=100 [left+right]
15148 "
15149 @end example
15150
15151 @item
15152 Mask 10-20 seconds of a video by applying the delogo filter to a section
15153 @example
15154 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
15155 -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]'
15156 masked.avi
15157 @end example
15158
15159 @item
15160 Chain several overlays in cascade:
15161 @example
15162 nullsrc=s=200x200 [bg];
15163 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
15164 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
15165 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
15166 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
15167 [in3] null,       [mid2] overlay=100:100 [out0]
15168 @end example
15169
15170 @end itemize
15171
15172 @anchor{overlay_cuda}
15173 @section overlay_cuda
15174
15175 Overlay one video on top of another.
15176
15177 This is the CUDA variant of the @ref{overlay} filter.
15178 It only accepts CUDA frames. The underlying input pixel formats have to match.
15179
15180 It takes two inputs and has one output. The first input is the "main"
15181 video on which the second input is overlaid.
15182
15183 It accepts the following parameters:
15184
15185 @table @option
15186 @item x
15187 @item y
15188 Set the x and y coordinates of the overlaid video on the main video.
15189 Default value is "0" for both expressions.
15190
15191 @item eof_action
15192 See @ref{framesync}.
15193
15194 @item shortest
15195 See @ref{framesync}.
15196
15197 @item repeatlast
15198 See @ref{framesync}.
15199
15200 @end table
15201
15202 This filter also supports the @ref{framesync} options.
15203
15204 @section owdenoise
15205
15206 Apply Overcomplete Wavelet denoiser.
15207
15208 The filter accepts the following options:
15209
15210 @table @option
15211 @item depth
15212 Set depth.
15213
15214 Larger depth values will denoise lower frequency components more, but
15215 slow down filtering.
15216
15217 Must be an int in the range 8-16, default is @code{8}.
15218
15219 @item luma_strength, ls
15220 Set luma strength.
15221
15222 Must be a double value in the range 0-1000, default is @code{1.0}.
15223
15224 @item chroma_strength, cs
15225 Set chroma strength.
15226
15227 Must be a double value in the range 0-1000, default is @code{1.0}.
15228 @end table
15229
15230 @anchor{pad}
15231 @section pad
15232
15233 Add paddings to the input image, and place the original input at the
15234 provided @var{x}, @var{y} coordinates.
15235
15236 It accepts the following parameters:
15237
15238 @table @option
15239 @item width, w
15240 @item height, h
15241 Specify an expression for the size of the output image with the
15242 paddings added. If the value for @var{width} or @var{height} is 0, the
15243 corresponding input size is used for the output.
15244
15245 The @var{width} expression can reference the value set by the
15246 @var{height} expression, and vice versa.
15247
15248 The default value of @var{width} and @var{height} is 0.
15249
15250 @item x
15251 @item y
15252 Specify the offsets to place the input image at within the padded area,
15253 with respect to the top/left border of the output image.
15254
15255 The @var{x} expression can reference the value set by the @var{y}
15256 expression, and vice versa.
15257
15258 The default value of @var{x} and @var{y} is 0.
15259
15260 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
15261 so the input image is centered on the padded area.
15262
15263 @item color
15264 Specify the color of the padded area. For the syntax of this option,
15265 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
15266 manual,ffmpeg-utils}.
15267
15268 The default value of @var{color} is "black".
15269
15270 @item eval
15271 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
15272
15273 It accepts the following values:
15274
15275 @table @samp
15276 @item init
15277 Only evaluate expressions once during the filter initialization or when
15278 a command is processed.
15279
15280 @item frame
15281 Evaluate expressions for each incoming frame.
15282
15283 @end table
15284
15285 Default value is @samp{init}.
15286
15287 @item aspect
15288 Pad to aspect instead to a resolution.
15289
15290 @end table
15291
15292 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
15293 options are expressions containing the following constants:
15294
15295 @table @option
15296 @item in_w
15297 @item in_h
15298 The input video width and height.
15299
15300 @item iw
15301 @item ih
15302 These are the same as @var{in_w} and @var{in_h}.
15303
15304 @item out_w
15305 @item out_h
15306 The output width and height (the size of the padded area), as
15307 specified by the @var{width} and @var{height} expressions.
15308
15309 @item ow
15310 @item oh
15311 These are the same as @var{out_w} and @var{out_h}.
15312
15313 @item x
15314 @item y
15315 The x and y offsets as specified by the @var{x} and @var{y}
15316 expressions, or NAN if not yet specified.
15317
15318 @item a
15319 same as @var{iw} / @var{ih}
15320
15321 @item sar
15322 input sample aspect ratio
15323
15324 @item dar
15325 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
15326
15327 @item hsub
15328 @item vsub
15329 The horizontal and vertical chroma subsample values. For example for the
15330 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15331 @end table
15332
15333 @subsection Examples
15334
15335 @itemize
15336 @item
15337 Add paddings with the color "violet" to the input video. The output video
15338 size is 640x480, and the top-left corner of the input video is placed at
15339 column 0, row 40
15340 @example
15341 pad=640:480:0:40:violet
15342 @end example
15343
15344 The example above is equivalent to the following command:
15345 @example
15346 pad=width=640:height=480:x=0:y=40:color=violet
15347 @end example
15348
15349 @item
15350 Pad the input to get an output with dimensions increased by 3/2,
15351 and put the input video at the center of the padded area:
15352 @example
15353 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
15354 @end example
15355
15356 @item
15357 Pad the input to get a squared output with size equal to the maximum
15358 value between the input width and height, and put the input video at
15359 the center of the padded area:
15360 @example
15361 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
15362 @end example
15363
15364 @item
15365 Pad the input to get a final w/h ratio of 16:9:
15366 @example
15367 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
15368 @end example
15369
15370 @item
15371 In case of anamorphic video, in order to set the output display aspect
15372 correctly, it is necessary to use @var{sar} in the expression,
15373 according to the relation:
15374 @example
15375 (ih * X / ih) * sar = output_dar
15376 X = output_dar / sar
15377 @end example
15378
15379 Thus the previous example needs to be modified to:
15380 @example
15381 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
15382 @end example
15383
15384 @item
15385 Double the output size and put the input video in the bottom-right
15386 corner of the output padded area:
15387 @example
15388 pad="2*iw:2*ih:ow-iw:oh-ih"
15389 @end example
15390 @end itemize
15391
15392 @anchor{palettegen}
15393 @section palettegen
15394
15395 Generate one palette for a whole video stream.
15396
15397 It accepts the following options:
15398
15399 @table @option
15400 @item max_colors
15401 Set the maximum number of colors to quantize in the palette.
15402 Note: the palette will still contain 256 colors; the unused palette entries
15403 will be black.
15404
15405 @item reserve_transparent
15406 Create a palette of 255 colors maximum and reserve the last one for
15407 transparency. Reserving the transparency color is useful for GIF optimization.
15408 If not set, the maximum of colors in the palette will be 256. You probably want
15409 to disable this option for a standalone image.
15410 Set by default.
15411
15412 @item transparency_color
15413 Set the color that will be used as background for transparency.
15414
15415 @item stats_mode
15416 Set statistics mode.
15417
15418 It accepts the following values:
15419 @table @samp
15420 @item full
15421 Compute full frame histograms.
15422 @item diff
15423 Compute histograms only for the part that differs from previous frame. This
15424 might be relevant to give more importance to the moving part of your input if
15425 the background is static.
15426 @item single
15427 Compute new histogram for each frame.
15428 @end table
15429
15430 Default value is @var{full}.
15431 @end table
15432
15433 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
15434 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
15435 color quantization of the palette. This information is also visible at
15436 @var{info} logging level.
15437
15438 @subsection Examples
15439
15440 @itemize
15441 @item
15442 Generate a representative palette of a given video using @command{ffmpeg}:
15443 @example
15444 ffmpeg -i input.mkv -vf palettegen palette.png
15445 @end example
15446 @end itemize
15447
15448 @section paletteuse
15449
15450 Use a palette to downsample an input video stream.
15451
15452 The filter takes two inputs: one video stream and a palette. The palette must
15453 be a 256 pixels image.
15454
15455 It accepts the following options:
15456
15457 @table @option
15458 @item dither
15459 Select dithering mode. Available algorithms are:
15460 @table @samp
15461 @item bayer
15462 Ordered 8x8 bayer dithering (deterministic)
15463 @item heckbert
15464 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
15465 Note: this dithering is sometimes considered "wrong" and is included as a
15466 reference.
15467 @item floyd_steinberg
15468 Floyd and Steingberg dithering (error diffusion)
15469 @item sierra2
15470 Frankie Sierra dithering v2 (error diffusion)
15471 @item sierra2_4a
15472 Frankie Sierra dithering v2 "Lite" (error diffusion)
15473 @end table
15474
15475 Default is @var{sierra2_4a}.
15476
15477 @item bayer_scale
15478 When @var{bayer} dithering is selected, this option defines the scale of the
15479 pattern (how much the crosshatch pattern is visible). A low value means more
15480 visible pattern for less banding, and higher value means less visible pattern
15481 at the cost of more banding.
15482
15483 The option must be an integer value in the range [0,5]. Default is @var{2}.
15484
15485 @item diff_mode
15486 If set, define the zone to process
15487
15488 @table @samp
15489 @item rectangle
15490 Only the changing rectangle will be reprocessed. This is similar to GIF
15491 cropping/offsetting compression mechanism. This option can be useful for speed
15492 if only a part of the image is changing, and has use cases such as limiting the
15493 scope of the error diffusal @option{dither} to the rectangle that bounds the
15494 moving scene (it leads to more deterministic output if the scene doesn't change
15495 much, and as a result less moving noise and better GIF compression).
15496 @end table
15497
15498 Default is @var{none}.
15499
15500 @item new
15501 Take new palette for each output frame.
15502
15503 @item alpha_threshold
15504 Sets the alpha threshold for transparency. Alpha values above this threshold
15505 will be treated as completely opaque, and values below this threshold will be
15506 treated as completely transparent.
15507
15508 The option must be an integer value in the range [0,255]. Default is @var{128}.
15509 @end table
15510
15511 @subsection Examples
15512
15513 @itemize
15514 @item
15515 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
15516 using @command{ffmpeg}:
15517 @example
15518 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
15519 @end example
15520 @end itemize
15521
15522 @section perspective
15523
15524 Correct perspective of video not recorded perpendicular to the screen.
15525
15526 A description of the accepted parameters follows.
15527
15528 @table @option
15529 @item x0
15530 @item y0
15531 @item x1
15532 @item y1
15533 @item x2
15534 @item y2
15535 @item x3
15536 @item y3
15537 Set coordinates expression for top left, top right, bottom left and bottom right corners.
15538 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
15539 If the @code{sense} option is set to @code{source}, then the specified points will be sent
15540 to the corners of the destination. If the @code{sense} option is set to @code{destination},
15541 then the corners of the source will be sent to the specified coordinates.
15542
15543 The expressions can use the following variables:
15544
15545 @table @option
15546 @item W
15547 @item H
15548 the width and height of video frame.
15549 @item in
15550 Input frame count.
15551 @item on
15552 Output frame count.
15553 @end table
15554
15555 @item interpolation
15556 Set interpolation for perspective correction.
15557
15558 It accepts the following values:
15559 @table @samp
15560 @item linear
15561 @item cubic
15562 @end table
15563
15564 Default value is @samp{linear}.
15565
15566 @item sense
15567 Set interpretation of coordinate options.
15568
15569 It accepts the following values:
15570 @table @samp
15571 @item 0, source
15572
15573 Send point in the source specified by the given coordinates to
15574 the corners of the destination.
15575
15576 @item 1, destination
15577
15578 Send the corners of the source to the point in the destination specified
15579 by the given coordinates.
15580
15581 Default value is @samp{source}.
15582 @end table
15583
15584 @item eval
15585 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
15586
15587 It accepts the following values:
15588 @table @samp
15589 @item init
15590 only evaluate expressions once during the filter initialization or
15591 when a command is processed
15592
15593 @item frame
15594 evaluate expressions for each incoming frame
15595 @end table
15596
15597 Default value is @samp{init}.
15598 @end table
15599
15600 @section phase
15601
15602 Delay interlaced video by one field time so that the field order changes.
15603
15604 The intended use is to fix PAL movies that have been captured with the
15605 opposite field order to the film-to-video transfer.
15606
15607 A description of the accepted parameters follows.
15608
15609 @table @option
15610 @item mode
15611 Set phase mode.
15612
15613 It accepts the following values:
15614 @table @samp
15615 @item t
15616 Capture field order top-first, transfer bottom-first.
15617 Filter will delay the bottom field.
15618
15619 @item b
15620 Capture field order bottom-first, transfer top-first.
15621 Filter will delay the top field.
15622
15623 @item p
15624 Capture and transfer with the same field order. This mode only exists
15625 for the documentation of the other options to refer to, but if you
15626 actually select it, the filter will faithfully do nothing.
15627
15628 @item a
15629 Capture field order determined automatically by field flags, transfer
15630 opposite.
15631 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
15632 basis using field flags. If no field information is available,
15633 then this works just like @samp{u}.
15634
15635 @item u
15636 Capture unknown or varying, transfer opposite.
15637 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
15638 analyzing the images and selecting the alternative that produces best
15639 match between the fields.
15640
15641 @item T
15642 Capture top-first, transfer unknown or varying.
15643 Filter selects among @samp{t} and @samp{p} using image analysis.
15644
15645 @item B
15646 Capture bottom-first, transfer unknown or varying.
15647 Filter selects among @samp{b} and @samp{p} using image analysis.
15648
15649 @item A
15650 Capture determined by field flags, transfer unknown or varying.
15651 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
15652 image analysis. If no field information is available, then this works just
15653 like @samp{U}. This is the default mode.
15654
15655 @item U
15656 Both capture and transfer unknown or varying.
15657 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
15658 @end table
15659 @end table
15660
15661 @section photosensitivity
15662 Reduce various flashes in video, so to help users with epilepsy.
15663
15664 It accepts the following options:
15665 @table @option
15666 @item frames, f
15667 Set how many frames to use when filtering. Default is 30.
15668
15669 @item threshold, t
15670 Set detection threshold factor. Default is 1.
15671 Lower is stricter.
15672
15673 @item skip
15674 Set how many pixels to skip when sampling frames. Default is 1.
15675 Allowed range is from 1 to 1024.
15676
15677 @item bypass
15678 Leave frames unchanged. Default is disabled.
15679 @end table
15680
15681 @section pixdesctest
15682
15683 Pixel format descriptor test filter, mainly useful for internal
15684 testing. The output video should be equal to the input video.
15685
15686 For example:
15687 @example
15688 format=monow, pixdesctest
15689 @end example
15690
15691 can be used to test the monowhite pixel format descriptor definition.
15692
15693 @section pixscope
15694
15695 Display sample values of color channels. Mainly useful for checking color
15696 and levels. Minimum supported resolution is 640x480.
15697
15698 The filters accept the following options:
15699
15700 @table @option
15701 @item x
15702 Set scope X position, relative offset on X axis.
15703
15704 @item y
15705 Set scope Y position, relative offset on Y axis.
15706
15707 @item w
15708 Set scope width.
15709
15710 @item h
15711 Set scope height.
15712
15713 @item o
15714 Set window opacity. This window also holds statistics about pixel area.
15715
15716 @item wx
15717 Set window X position, relative offset on X axis.
15718
15719 @item wy
15720 Set window Y position, relative offset on Y axis.
15721 @end table
15722
15723 @section pp
15724
15725 Enable the specified chain of postprocessing subfilters using libpostproc. This
15726 library should be automatically selected with a GPL build (@code{--enable-gpl}).
15727 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
15728 Each subfilter and some options have a short and a long name that can be used
15729 interchangeably, i.e. dr/dering are the same.
15730
15731 The filters accept the following options:
15732
15733 @table @option
15734 @item subfilters
15735 Set postprocessing subfilters string.
15736 @end table
15737
15738 All subfilters share common options to determine their scope:
15739
15740 @table @option
15741 @item a/autoq
15742 Honor the quality commands for this subfilter.
15743
15744 @item c/chrom
15745 Do chrominance filtering, too (default).
15746
15747 @item y/nochrom
15748 Do luminance filtering only (no chrominance).
15749
15750 @item n/noluma
15751 Do chrominance filtering only (no luminance).
15752 @end table
15753
15754 These options can be appended after the subfilter name, separated by a '|'.
15755
15756 Available subfilters are:
15757
15758 @table @option
15759 @item hb/hdeblock[|difference[|flatness]]
15760 Horizontal deblocking filter
15761 @table @option
15762 @item difference
15763 Difference factor where higher values mean more deblocking (default: @code{32}).
15764 @item flatness
15765 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15766 @end table
15767
15768 @item vb/vdeblock[|difference[|flatness]]
15769 Vertical deblocking filter
15770 @table @option
15771 @item difference
15772 Difference factor where higher values mean more deblocking (default: @code{32}).
15773 @item flatness
15774 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15775 @end table
15776
15777 @item ha/hadeblock[|difference[|flatness]]
15778 Accurate horizontal deblocking filter
15779 @table @option
15780 @item difference
15781 Difference factor where higher values mean more deblocking (default: @code{32}).
15782 @item flatness
15783 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15784 @end table
15785
15786 @item va/vadeblock[|difference[|flatness]]
15787 Accurate vertical deblocking filter
15788 @table @option
15789 @item difference
15790 Difference factor where higher values mean more deblocking (default: @code{32}).
15791 @item flatness
15792 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15793 @end table
15794 @end table
15795
15796 The horizontal and vertical deblocking filters share the difference and
15797 flatness values so you cannot set different horizontal and vertical
15798 thresholds.
15799
15800 @table @option
15801 @item h1/x1hdeblock
15802 Experimental horizontal deblocking filter
15803
15804 @item v1/x1vdeblock
15805 Experimental vertical deblocking filter
15806
15807 @item dr/dering
15808 Deringing filter
15809
15810 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
15811 @table @option
15812 @item threshold1
15813 larger -> stronger filtering
15814 @item threshold2
15815 larger -> stronger filtering
15816 @item threshold3
15817 larger -> stronger filtering
15818 @end table
15819
15820 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
15821 @table @option
15822 @item f/fullyrange
15823 Stretch luminance to @code{0-255}.
15824 @end table
15825
15826 @item lb/linblenddeint
15827 Linear blend deinterlacing filter that deinterlaces the given block by
15828 filtering all lines with a @code{(1 2 1)} filter.
15829
15830 @item li/linipoldeint
15831 Linear interpolating deinterlacing filter that deinterlaces the given block by
15832 linearly interpolating every second line.
15833
15834 @item ci/cubicipoldeint
15835 Cubic interpolating deinterlacing filter deinterlaces the given block by
15836 cubically interpolating every second line.
15837
15838 @item md/mediandeint
15839 Median deinterlacing filter that deinterlaces the given block by applying a
15840 median filter to every second line.
15841
15842 @item fd/ffmpegdeint
15843 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
15844 second line with a @code{(-1 4 2 4 -1)} filter.
15845
15846 @item l5/lowpass5
15847 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
15848 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
15849
15850 @item fq/forceQuant[|quantizer]
15851 Overrides the quantizer table from the input with the constant quantizer you
15852 specify.
15853 @table @option
15854 @item quantizer
15855 Quantizer to use
15856 @end table
15857
15858 @item de/default
15859 Default pp filter combination (@code{hb|a,vb|a,dr|a})
15860
15861 @item fa/fast
15862 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
15863
15864 @item ac
15865 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
15866 @end table
15867
15868 @subsection Examples
15869
15870 @itemize
15871 @item
15872 Apply horizontal and vertical deblocking, deringing and automatic
15873 brightness/contrast:
15874 @example
15875 pp=hb/vb/dr/al
15876 @end example
15877
15878 @item
15879 Apply default filters without brightness/contrast correction:
15880 @example
15881 pp=de/-al
15882 @end example
15883
15884 @item
15885 Apply default filters and temporal denoiser:
15886 @example
15887 pp=default/tmpnoise|1|2|3
15888 @end example
15889
15890 @item
15891 Apply deblocking on luminance only, and switch vertical deblocking on or off
15892 automatically depending on available CPU time:
15893 @example
15894 pp=hb|y/vb|a
15895 @end example
15896 @end itemize
15897
15898 @section pp7
15899 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
15900 similar to spp = 6 with 7 point DCT, where only the center sample is
15901 used after IDCT.
15902
15903 The filter accepts the following options:
15904
15905 @table @option
15906 @item qp
15907 Force a constant quantization parameter. It accepts an integer in range
15908 0 to 63. If not set, the filter will use the QP from the video stream
15909 (if available).
15910
15911 @item mode
15912 Set thresholding mode. Available modes are:
15913
15914 @table @samp
15915 @item hard
15916 Set hard thresholding.
15917 @item soft
15918 Set soft thresholding (better de-ringing effect, but likely blurrier).
15919 @item medium
15920 Set medium thresholding (good results, default).
15921 @end table
15922 @end table
15923
15924 @section premultiply
15925 Apply alpha premultiply effect to input video stream using first plane
15926 of second stream as alpha.
15927
15928 Both streams must have same dimensions and same pixel format.
15929
15930 The filter accepts the following option:
15931
15932 @table @option
15933 @item planes
15934 Set which planes will be processed, unprocessed planes will be copied.
15935 By default value 0xf, all planes will be processed.
15936
15937 @item inplace
15938 Do not require 2nd input for processing, instead use alpha plane from input stream.
15939 @end table
15940
15941 @section prewitt
15942 Apply prewitt operator to input video stream.
15943
15944 The filter accepts the following option:
15945
15946 @table @option
15947 @item planes
15948 Set which planes will be processed, unprocessed planes will be copied.
15949 By default value 0xf, all planes will be processed.
15950
15951 @item scale
15952 Set value which will be multiplied with filtered result.
15953
15954 @item delta
15955 Set value which will be added to filtered result.
15956 @end table
15957
15958 @subsection Commands
15959
15960 This filter supports the all above options as @ref{commands}.
15961
15962 @section pseudocolor
15963
15964 Alter frame colors in video with pseudocolors.
15965
15966 This filter accepts the following options:
15967
15968 @table @option
15969 @item c0
15970 set pixel first component expression
15971
15972 @item c1
15973 set pixel second component expression
15974
15975 @item c2
15976 set pixel third component expression
15977
15978 @item c3
15979 set pixel fourth component expression, corresponds to the alpha component
15980
15981 @item i
15982 set component to use as base for altering colors
15983 @end table
15984
15985 Each of them specifies the expression to use for computing the lookup table for
15986 the corresponding pixel component values.
15987
15988 The expressions can contain the following constants and functions:
15989
15990 @table @option
15991 @item w
15992 @item h
15993 The input width and height.
15994
15995 @item val
15996 The input value for the pixel component.
15997
15998 @item ymin, umin, vmin, amin
15999 The minimum allowed component value.
16000
16001 @item ymax, umax, vmax, amax
16002 The maximum allowed component value.
16003 @end table
16004
16005 All expressions default to "val".
16006
16007 @subsection Examples
16008
16009 @itemize
16010 @item
16011 Change too high luma values to gradient:
16012 @example
16013 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'"
16014 @end example
16015 @end itemize
16016
16017 @section psnr
16018
16019 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
16020 Ratio) between two input videos.
16021
16022 This filter takes in input two input videos, the first input is
16023 considered the "main" source and is passed unchanged to the
16024 output. The second input is used as a "reference" video for computing
16025 the PSNR.
16026
16027 Both video inputs must have the same resolution and pixel format for
16028 this filter to work correctly. Also it assumes that both inputs
16029 have the same number of frames, which are compared one by one.
16030
16031 The obtained average PSNR is printed through the logging system.
16032
16033 The filter stores the accumulated MSE (mean squared error) of each
16034 frame, and at the end of the processing it is averaged across all frames
16035 equally, and the following formula is applied to obtain the PSNR:
16036
16037 @example
16038 PSNR = 10*log10(MAX^2/MSE)
16039 @end example
16040
16041 Where MAX is the average of the maximum values of each component of the
16042 image.
16043
16044 The description of the accepted parameters follows.
16045
16046 @table @option
16047 @item stats_file, f
16048 If specified the filter will use the named file to save the PSNR of
16049 each individual frame. When filename equals "-" the data is sent to
16050 standard output.
16051
16052 @item stats_version
16053 Specifies which version of the stats file format to use. Details of
16054 each format are written below.
16055 Default value is 1.
16056
16057 @item stats_add_max
16058 Determines whether the max value is output to the stats log.
16059 Default value is 0.
16060 Requires stats_version >= 2. If this is set and stats_version < 2,
16061 the filter will return an error.
16062 @end table
16063
16064 This filter also supports the @ref{framesync} options.
16065
16066 The file printed if @var{stats_file} is selected, contains a sequence of
16067 key/value pairs of the form @var{key}:@var{value} for each compared
16068 couple of frames.
16069
16070 If a @var{stats_version} greater than 1 is specified, a header line precedes
16071 the list of per-frame-pair stats, with key value pairs following the frame
16072 format with the following parameters:
16073
16074 @table @option
16075 @item psnr_log_version
16076 The version of the log file format. Will match @var{stats_version}.
16077
16078 @item fields
16079 A comma separated list of the per-frame-pair parameters included in
16080 the log.
16081 @end table
16082
16083 A description of each shown per-frame-pair parameter follows:
16084
16085 @table @option
16086 @item n
16087 sequential number of the input frame, starting from 1
16088
16089 @item mse_avg
16090 Mean Square Error pixel-by-pixel average difference of the compared
16091 frames, averaged over all the image components.
16092
16093 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
16094 Mean Square Error pixel-by-pixel average difference of the compared
16095 frames for the component specified by the suffix.
16096
16097 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
16098 Peak Signal to Noise ratio of the compared frames for the component
16099 specified by the suffix.
16100
16101 @item max_avg, max_y, max_u, max_v
16102 Maximum allowed value for each channel, and average over all
16103 channels.
16104 @end table
16105
16106 @subsection Examples
16107 @itemize
16108 @item
16109 For example:
16110 @example
16111 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
16112 [main][ref] psnr="stats_file=stats.log" [out]
16113 @end example
16114
16115 On this example the input file being processed is compared with the
16116 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
16117 is stored in @file{stats.log}.
16118
16119 @item
16120 Another example with different containers:
16121 @example
16122 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 -
16123 @end example
16124 @end itemize
16125
16126 @anchor{pullup}
16127 @section pullup
16128
16129 Pulldown reversal (inverse telecine) filter, capable of handling mixed
16130 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
16131 content.
16132
16133 The pullup filter is designed to take advantage of future context in making
16134 its decisions. This filter is stateless in the sense that it does not lock
16135 onto a pattern to follow, but it instead looks forward to the following
16136 fields in order to identify matches and rebuild progressive frames.
16137
16138 To produce content with an even framerate, insert the fps filter after
16139 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
16140 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
16141
16142 The filter accepts the following options:
16143
16144 @table @option
16145 @item jl
16146 @item jr
16147 @item jt
16148 @item jb
16149 These options set the amount of "junk" to ignore at the left, right, top, and
16150 bottom of the image, respectively. Left and right are in units of 8 pixels,
16151 while top and bottom are in units of 2 lines.
16152 The default is 8 pixels on each side.
16153
16154 @item sb
16155 Set the strict breaks. Setting this option to 1 will reduce the chances of
16156 filter generating an occasional mismatched frame, but it may also cause an
16157 excessive number of frames to be dropped during high motion sequences.
16158 Conversely, setting it to -1 will make filter match fields more easily.
16159 This may help processing of video where there is slight blurring between
16160 the fields, but may also cause there to be interlaced frames in the output.
16161 Default value is @code{0}.
16162
16163 @item mp
16164 Set the metric plane to use. It accepts the following values:
16165 @table @samp
16166 @item l
16167 Use luma plane.
16168
16169 @item u
16170 Use chroma blue plane.
16171
16172 @item v
16173 Use chroma red plane.
16174 @end table
16175
16176 This option may be set to use chroma plane instead of the default luma plane
16177 for doing filter's computations. This may improve accuracy on very clean
16178 source material, but more likely will decrease accuracy, especially if there
16179 is chroma noise (rainbow effect) or any grayscale video.
16180 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
16181 load and make pullup usable in realtime on slow machines.
16182 @end table
16183
16184 For best results (without duplicated frames in the output file) it is
16185 necessary to change the output frame rate. For example, to inverse
16186 telecine NTSC input:
16187 @example
16188 ffmpeg -i input -vf pullup -r 24000/1001 ...
16189 @end example
16190
16191 @section qp
16192
16193 Change video quantization parameters (QP).
16194
16195 The filter accepts the following option:
16196
16197 @table @option
16198 @item qp
16199 Set expression for quantization parameter.
16200 @end table
16201
16202 The expression is evaluated through the eval API and can contain, among others,
16203 the following constants:
16204
16205 @table @var
16206 @item known
16207 1 if index is not 129, 0 otherwise.
16208
16209 @item qp
16210 Sequential index starting from -129 to 128.
16211 @end table
16212
16213 @subsection Examples
16214
16215 @itemize
16216 @item
16217 Some equation like:
16218 @example
16219 qp=2+2*sin(PI*qp)
16220 @end example
16221 @end itemize
16222
16223 @section random
16224
16225 Flush video frames from internal cache of frames into a random order.
16226 No frame is discarded.
16227 Inspired by @ref{frei0r} nervous filter.
16228
16229 @table @option
16230 @item frames
16231 Set size in number of frames of internal cache, in range from @code{2} to
16232 @code{512}. Default is @code{30}.
16233
16234 @item seed
16235 Set seed for random number generator, must be an integer included between
16236 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
16237 less than @code{0}, the filter will try to use a good random seed on a
16238 best effort basis.
16239 @end table
16240
16241 @section readeia608
16242
16243 Read closed captioning (EIA-608) information from the top lines of a video frame.
16244
16245 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
16246 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
16247 with EIA-608 data (starting from 0). A description of each metadata value follows:
16248
16249 @table @option
16250 @item lavfi.readeia608.X.cc
16251 The two bytes stored as EIA-608 data (printed in hexadecimal).
16252
16253 @item lavfi.readeia608.X.line
16254 The number of the line on which the EIA-608 data was identified and read.
16255 @end table
16256
16257 This filter accepts the following options:
16258
16259 @table @option
16260 @item scan_min
16261 Set the line to start scanning for EIA-608 data. Default is @code{0}.
16262
16263 @item scan_max
16264 Set the line to end scanning for EIA-608 data. Default is @code{29}.
16265
16266 @item spw
16267 Set the ratio of width reserved for sync code detection.
16268 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
16269
16270 @item chp
16271 Enable checking the parity bit. In the event of a parity error, the filter will output
16272 @code{0x00} for that character. Default is false.
16273
16274 @item lp
16275 Lowpass lines prior to further processing. Default is enabled.
16276 @end table
16277
16278 @subsection Commands
16279
16280 This filter supports the all above options as @ref{commands}.
16281
16282 @subsection Examples
16283
16284 @itemize
16285 @item
16286 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
16287 @example
16288 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
16289 @end example
16290 @end itemize
16291
16292 @section readvitc
16293
16294 Read vertical interval timecode (VITC) information from the top lines of a
16295 video frame.
16296
16297 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
16298 timecode value, if a valid timecode has been detected. Further metadata key
16299 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
16300 timecode data has been found or not.
16301
16302 This filter accepts the following options:
16303
16304 @table @option
16305 @item scan_max
16306 Set the maximum number of lines to scan for VITC data. If the value is set to
16307 @code{-1} the full video frame is scanned. Default is @code{45}.
16308
16309 @item thr_b
16310 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
16311 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
16312
16313 @item thr_w
16314 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
16315 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
16316 @end table
16317
16318 @subsection Examples
16319
16320 @itemize
16321 @item
16322 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
16323 draw @code{--:--:--:--} as a placeholder:
16324 @example
16325 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
16326 @end example
16327 @end itemize
16328
16329 @section remap
16330
16331 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
16332
16333 Destination pixel at position (X, Y) will be picked from source (x, y) position
16334 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
16335 value for pixel will be used for destination pixel.
16336
16337 Xmap and Ymap input video streams must be of same dimensions. Output video stream
16338 will have Xmap/Ymap video stream dimensions.
16339 Xmap and Ymap input video streams are 16bit depth, single channel.
16340
16341 @table @option
16342 @item format
16343 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
16344 Default is @code{color}.
16345
16346 @item fill
16347 Specify the color of the unmapped pixels. For the syntax of this option,
16348 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
16349 manual,ffmpeg-utils}. Default color is @code{black}.
16350 @end table
16351
16352 @section removegrain
16353
16354 The removegrain filter is a spatial denoiser for progressive video.
16355
16356 @table @option
16357 @item m0
16358 Set mode for the first plane.
16359
16360 @item m1
16361 Set mode for the second plane.
16362
16363 @item m2
16364 Set mode for the third plane.
16365
16366 @item m3
16367 Set mode for the fourth plane.
16368 @end table
16369
16370 Range of mode is from 0 to 24. Description of each mode follows:
16371
16372 @table @var
16373 @item 0
16374 Leave input plane unchanged. Default.
16375
16376 @item 1
16377 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
16378
16379 @item 2
16380 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
16381
16382 @item 3
16383 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
16384
16385 @item 4
16386 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
16387 This is equivalent to a median filter.
16388
16389 @item 5
16390 Line-sensitive clipping giving the minimal change.
16391
16392 @item 6
16393 Line-sensitive clipping, intermediate.
16394
16395 @item 7
16396 Line-sensitive clipping, intermediate.
16397
16398 @item 8
16399 Line-sensitive clipping, intermediate.
16400
16401 @item 9
16402 Line-sensitive clipping on a line where the neighbours pixels are the closest.
16403
16404 @item 10
16405 Replaces the target pixel with the closest neighbour.
16406
16407 @item 11
16408 [1 2 1] horizontal and vertical kernel blur.
16409
16410 @item 12
16411 Same as mode 11.
16412
16413 @item 13
16414 Bob mode, interpolates top field from the line where the neighbours
16415 pixels are the closest.
16416
16417 @item 14
16418 Bob mode, interpolates bottom field from the line where the neighbours
16419 pixels are the closest.
16420
16421 @item 15
16422 Bob mode, interpolates top field. Same as 13 but with a more complicated
16423 interpolation formula.
16424
16425 @item 16
16426 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
16427 interpolation formula.
16428
16429 @item 17
16430 Clips the pixel with the minimum and maximum of respectively the maximum and
16431 minimum of each pair of opposite neighbour pixels.
16432
16433 @item 18
16434 Line-sensitive clipping using opposite neighbours whose greatest distance from
16435 the current pixel is minimal.
16436
16437 @item 19
16438 Replaces the pixel with the average of its 8 neighbours.
16439
16440 @item 20
16441 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
16442
16443 @item 21
16444 Clips pixels using the averages of opposite neighbour.
16445
16446 @item 22
16447 Same as mode 21 but simpler and faster.
16448
16449 @item 23
16450 Small edge and halo removal, but reputed useless.
16451
16452 @item 24
16453 Similar as 23.
16454 @end table
16455
16456 @section removelogo
16457
16458 Suppress a TV station logo, using an image file to determine which
16459 pixels comprise the logo. It works by filling in the pixels that
16460 comprise the logo with neighboring pixels.
16461
16462 The filter accepts the following options:
16463
16464 @table @option
16465 @item filename, f
16466 Set the filter bitmap file, which can be any image format supported by
16467 libavformat. The width and height of the image file must match those of the
16468 video stream being processed.
16469 @end table
16470
16471 Pixels in the provided bitmap image with a value of zero are not
16472 considered part of the logo, non-zero pixels are considered part of
16473 the logo. If you use white (255) for the logo and black (0) for the
16474 rest, you will be safe. For making the filter bitmap, it is
16475 recommended to take a screen capture of a black frame with the logo
16476 visible, and then using a threshold filter followed by the erode
16477 filter once or twice.
16478
16479 If needed, little splotches can be fixed manually. Remember that if
16480 logo pixels are not covered, the filter quality will be much
16481 reduced. Marking too many pixels as part of the logo does not hurt as
16482 much, but it will increase the amount of blurring needed to cover over
16483 the image and will destroy more information than necessary, and extra
16484 pixels will slow things down on a large logo.
16485
16486 @section repeatfields
16487
16488 This filter uses the repeat_field flag from the Video ES headers and hard repeats
16489 fields based on its value.
16490
16491 @section reverse
16492
16493 Reverse a video clip.
16494
16495 Warning: This filter requires memory to buffer the entire clip, so trimming
16496 is suggested.
16497
16498 @subsection Examples
16499
16500 @itemize
16501 @item
16502 Take the first 5 seconds of a clip, and reverse it.
16503 @example
16504 trim=end=5,reverse
16505 @end example
16506 @end itemize
16507
16508 @section rgbashift
16509 Shift R/G/B/A pixels horizontally and/or vertically.
16510
16511 The filter accepts the following options:
16512 @table @option
16513 @item rh
16514 Set amount to shift red horizontally.
16515 @item rv
16516 Set amount to shift red vertically.
16517 @item gh
16518 Set amount to shift green horizontally.
16519 @item gv
16520 Set amount to shift green vertically.
16521 @item bh
16522 Set amount to shift blue horizontally.
16523 @item bv
16524 Set amount to shift blue vertically.
16525 @item ah
16526 Set amount to shift alpha horizontally.
16527 @item av
16528 Set amount to shift alpha vertically.
16529 @item edge
16530 Set edge mode, can be @var{smear}, default, or @var{warp}.
16531 @end table
16532
16533 @subsection Commands
16534
16535 This filter supports the all above options as @ref{commands}.
16536
16537 @section roberts
16538 Apply roberts cross operator to input video stream.
16539
16540 The filter accepts the following option:
16541
16542 @table @option
16543 @item planes
16544 Set which planes will be processed, unprocessed planes will be copied.
16545 By default value 0xf, all planes will be processed.
16546
16547 @item scale
16548 Set value which will be multiplied with filtered result.
16549
16550 @item delta
16551 Set value which will be added to filtered result.
16552 @end table
16553
16554 @subsection Commands
16555
16556 This filter supports the all above options as @ref{commands}.
16557
16558 @section rotate
16559
16560 Rotate video by an arbitrary angle expressed in radians.
16561
16562 The filter accepts the following options:
16563
16564 A description of the optional parameters follows.
16565 @table @option
16566 @item angle, a
16567 Set an expression for the angle by which to rotate the input video
16568 clockwise, expressed as a number of radians. A negative value will
16569 result in a counter-clockwise rotation. By default it is set to "0".
16570
16571 This expression is evaluated for each frame.
16572
16573 @item out_w, ow
16574 Set the output width expression, default value is "iw".
16575 This expression is evaluated just once during configuration.
16576
16577 @item out_h, oh
16578 Set the output height expression, default value is "ih".
16579 This expression is evaluated just once during configuration.
16580
16581 @item bilinear
16582 Enable bilinear interpolation if set to 1, a value of 0 disables
16583 it. Default value is 1.
16584
16585 @item fillcolor, c
16586 Set the color used to fill the output area not covered by the rotated
16587 image. For the general syntax of this option, check the
16588 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16589 If the special value "none" is selected then no
16590 background is printed (useful for example if the background is never shown).
16591
16592 Default value is "black".
16593 @end table
16594
16595 The expressions for the angle and the output size can contain the
16596 following constants and functions:
16597
16598 @table @option
16599 @item n
16600 sequential number of the input frame, starting from 0. It is always NAN
16601 before the first frame is filtered.
16602
16603 @item t
16604 time in seconds of the input frame, it is set to 0 when the filter is
16605 configured. It is always NAN before the first frame is filtered.
16606
16607 @item hsub
16608 @item vsub
16609 horizontal and vertical chroma subsample values. For example for the
16610 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16611
16612 @item in_w, iw
16613 @item in_h, ih
16614 the input video width and height
16615
16616 @item out_w, ow
16617 @item out_h, oh
16618 the output width and height, that is the size of the padded area as
16619 specified by the @var{width} and @var{height} expressions
16620
16621 @item rotw(a)
16622 @item roth(a)
16623 the minimal width/height required for completely containing the input
16624 video rotated by @var{a} radians.
16625
16626 These are only available when computing the @option{out_w} and
16627 @option{out_h} expressions.
16628 @end table
16629
16630 @subsection Examples
16631
16632 @itemize
16633 @item
16634 Rotate the input by PI/6 radians clockwise:
16635 @example
16636 rotate=PI/6
16637 @end example
16638
16639 @item
16640 Rotate the input by PI/6 radians counter-clockwise:
16641 @example
16642 rotate=-PI/6
16643 @end example
16644
16645 @item
16646 Rotate the input by 45 degrees clockwise:
16647 @example
16648 rotate=45*PI/180
16649 @end example
16650
16651 @item
16652 Apply a constant rotation with period T, starting from an angle of PI/3:
16653 @example
16654 rotate=PI/3+2*PI*t/T
16655 @end example
16656
16657 @item
16658 Make the input video rotation oscillating with a period of T
16659 seconds and an amplitude of A radians:
16660 @example
16661 rotate=A*sin(2*PI/T*t)
16662 @end example
16663
16664 @item
16665 Rotate the video, output size is chosen so that the whole rotating
16666 input video is always completely contained in the output:
16667 @example
16668 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
16669 @end example
16670
16671 @item
16672 Rotate the video, reduce the output size so that no background is ever
16673 shown:
16674 @example
16675 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
16676 @end example
16677 @end itemize
16678
16679 @subsection Commands
16680
16681 The filter supports the following commands:
16682
16683 @table @option
16684 @item a, angle
16685 Set the angle expression.
16686 The command accepts the same syntax of the corresponding option.
16687
16688 If the specified expression is not valid, it is kept at its current
16689 value.
16690 @end table
16691
16692 @section sab
16693
16694 Apply Shape Adaptive Blur.
16695
16696 The filter accepts the following options:
16697
16698 @table @option
16699 @item luma_radius, lr
16700 Set luma blur filter strength, must be a value in range 0.1-4.0, default
16701 value is 1.0. A greater value will result in a more blurred image, and
16702 in slower processing.
16703
16704 @item luma_pre_filter_radius, lpfr
16705 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
16706 value is 1.0.
16707
16708 @item luma_strength, ls
16709 Set luma maximum difference between pixels to still be considered, must
16710 be a value in the 0.1-100.0 range, default value is 1.0.
16711
16712 @item chroma_radius, cr
16713 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
16714 greater value will result in a more blurred image, and in slower
16715 processing.
16716
16717 @item chroma_pre_filter_radius, cpfr
16718 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
16719
16720 @item chroma_strength, cs
16721 Set chroma maximum difference between pixels to still be considered,
16722 must be a value in the -0.9-100.0 range.
16723 @end table
16724
16725 Each chroma option value, if not explicitly specified, is set to the
16726 corresponding luma option value.
16727
16728 @anchor{scale}
16729 @section scale
16730
16731 Scale (resize) the input video, using the libswscale library.
16732
16733 The scale filter forces the output display aspect ratio to be the same
16734 of the input, by changing the output sample aspect ratio.
16735
16736 If the input image format is different from the format requested by
16737 the next filter, the scale filter will convert the input to the
16738 requested format.
16739
16740 @subsection Options
16741 The filter accepts the following options, or any of the options
16742 supported by the libswscale scaler.
16743
16744 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
16745 the complete list of scaler options.
16746
16747 @table @option
16748 @item width, w
16749 @item height, h
16750 Set the output video dimension expression. Default value is the input
16751 dimension.
16752
16753 If the @var{width} or @var{w} value is 0, the input width is used for
16754 the output. If the @var{height} or @var{h} value is 0, the input height
16755 is used for the output.
16756
16757 If one and only one of the values is -n with n >= 1, the scale filter
16758 will use a value that maintains the aspect ratio of the input image,
16759 calculated from the other specified dimension. After that it will,
16760 however, make sure that the calculated dimension is divisible by n and
16761 adjust the value if necessary.
16762
16763 If both values are -n with n >= 1, the behavior will be identical to
16764 both values being set to 0 as previously detailed.
16765
16766 See below for the list of accepted constants for use in the dimension
16767 expression.
16768
16769 @item eval
16770 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
16771
16772 @table @samp
16773 @item init
16774 Only evaluate expressions once during the filter initialization or when a command is processed.
16775
16776 @item frame
16777 Evaluate expressions for each incoming frame.
16778
16779 @end table
16780
16781 Default value is @samp{init}.
16782
16783
16784 @item interl
16785 Set the interlacing mode. It accepts the following values:
16786
16787 @table @samp
16788 @item 1
16789 Force interlaced aware scaling.
16790
16791 @item 0
16792 Do not apply interlaced scaling.
16793
16794 @item -1
16795 Select interlaced aware scaling depending on whether the source frames
16796 are flagged as interlaced or not.
16797 @end table
16798
16799 Default value is @samp{0}.
16800
16801 @item flags
16802 Set libswscale scaling flags. See
16803 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16804 complete list of values. If not explicitly specified the filter applies
16805 the default flags.
16806
16807
16808 @item param0, param1
16809 Set libswscale input parameters for scaling algorithms that need them. See
16810 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16811 complete documentation. If not explicitly specified the filter applies
16812 empty parameters.
16813
16814
16815
16816 @item size, s
16817 Set the video size. For the syntax of this option, check the
16818 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16819
16820 @item in_color_matrix
16821 @item out_color_matrix
16822 Set in/output YCbCr color space type.
16823
16824 This allows the autodetected value to be overridden as well as allows forcing
16825 a specific value used for the output and encoder.
16826
16827 If not specified, the color space type depends on the pixel format.
16828
16829 Possible values:
16830
16831 @table @samp
16832 @item auto
16833 Choose automatically.
16834
16835 @item bt709
16836 Format conforming to International Telecommunication Union (ITU)
16837 Recommendation BT.709.
16838
16839 @item fcc
16840 Set color space conforming to the United States Federal Communications
16841 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
16842
16843 @item bt601
16844 @item bt470
16845 @item smpte170m
16846 Set color space conforming to:
16847
16848 @itemize
16849 @item
16850 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
16851
16852 @item
16853 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
16854
16855 @item
16856 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
16857
16858 @end itemize
16859
16860 @item smpte240m
16861 Set color space conforming to SMPTE ST 240:1999.
16862
16863 @item bt2020
16864 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
16865 @end table
16866
16867 @item in_range
16868 @item out_range
16869 Set in/output YCbCr sample range.
16870
16871 This allows the autodetected value to be overridden as well as allows forcing
16872 a specific value used for the output and encoder. If not specified, the
16873 range depends on the pixel format. Possible values:
16874
16875 @table @samp
16876 @item auto/unknown
16877 Choose automatically.
16878
16879 @item jpeg/full/pc
16880 Set full range (0-255 in case of 8-bit luma).
16881
16882 @item mpeg/limited/tv
16883 Set "MPEG" range (16-235 in case of 8-bit luma).
16884 @end table
16885
16886 @item force_original_aspect_ratio
16887 Enable decreasing or increasing output video width or height if necessary to
16888 keep the original aspect ratio. Possible values:
16889
16890 @table @samp
16891 @item disable
16892 Scale the video as specified and disable this feature.
16893
16894 @item decrease
16895 The output video dimensions will automatically be decreased if needed.
16896
16897 @item increase
16898 The output video dimensions will automatically be increased if needed.
16899
16900 @end table
16901
16902 One useful instance of this option is that when you know a specific device's
16903 maximum allowed resolution, you can use this to limit the output video to
16904 that, while retaining the aspect ratio. For example, device A allows
16905 1280x720 playback, and your video is 1920x800. Using this option (set it to
16906 decrease) and specifying 1280x720 to the command line makes the output
16907 1280x533.
16908
16909 Please note that this is a different thing than specifying -1 for @option{w}
16910 or @option{h}, you still need to specify the output resolution for this option
16911 to work.
16912
16913 @item force_divisible_by
16914 Ensures that both the output dimensions, width and height, are divisible by the
16915 given integer when used together with @option{force_original_aspect_ratio}. This
16916 works similar to using @code{-n} in the @option{w} and @option{h} options.
16917
16918 This option respects the value set for @option{force_original_aspect_ratio},
16919 increasing or decreasing the resolution accordingly. The video's aspect ratio
16920 may be slightly modified.
16921
16922 This option can be handy if you need to have a video fit within or exceed
16923 a defined resolution using @option{force_original_aspect_ratio} but also have
16924 encoder restrictions on width or height divisibility.
16925
16926 @end table
16927
16928 The values of the @option{w} and @option{h} options are expressions
16929 containing the following constants:
16930
16931 @table @var
16932 @item in_w
16933 @item in_h
16934 The input width and height
16935
16936 @item iw
16937 @item ih
16938 These are the same as @var{in_w} and @var{in_h}.
16939
16940 @item out_w
16941 @item out_h
16942 The output (scaled) width and height
16943
16944 @item ow
16945 @item oh
16946 These are the same as @var{out_w} and @var{out_h}
16947
16948 @item a
16949 The same as @var{iw} / @var{ih}
16950
16951 @item sar
16952 input sample aspect ratio
16953
16954 @item dar
16955 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
16956
16957 @item hsub
16958 @item vsub
16959 horizontal and vertical input chroma subsample values. For example for the
16960 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16961
16962 @item ohsub
16963 @item ovsub
16964 horizontal and vertical output chroma subsample values. For example for the
16965 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16966
16967 @item n
16968 The (sequential) number of the input frame, starting from 0.
16969 Only available with @code{eval=frame}.
16970
16971 @item t
16972 The presentation timestamp of the input frame, expressed as a number of
16973 seconds. Only available with @code{eval=frame}.
16974
16975 @item pos
16976 The position (byte offset) of the frame in the input stream, or NaN if
16977 this information is unavailable and/or meaningless (for example in case of synthetic video).
16978 Only available with @code{eval=frame}.
16979 @end table
16980
16981 @subsection Examples
16982
16983 @itemize
16984 @item
16985 Scale the input video to a size of 200x100
16986 @example
16987 scale=w=200:h=100
16988 @end example
16989
16990 This is equivalent to:
16991 @example
16992 scale=200:100
16993 @end example
16994
16995 or:
16996 @example
16997 scale=200x100
16998 @end example
16999
17000 @item
17001 Specify a size abbreviation for the output size:
17002 @example
17003 scale=qcif
17004 @end example
17005
17006 which can also be written as:
17007 @example
17008 scale=size=qcif
17009 @end example
17010
17011 @item
17012 Scale the input to 2x:
17013 @example
17014 scale=w=2*iw:h=2*ih
17015 @end example
17016
17017 @item
17018 The above is the same as:
17019 @example
17020 scale=2*in_w:2*in_h
17021 @end example
17022
17023 @item
17024 Scale the input to 2x with forced interlaced scaling:
17025 @example
17026 scale=2*iw:2*ih:interl=1
17027 @end example
17028
17029 @item
17030 Scale the input to half size:
17031 @example
17032 scale=w=iw/2:h=ih/2
17033 @end example
17034
17035 @item
17036 Increase the width, and set the height to the same size:
17037 @example
17038 scale=3/2*iw:ow
17039 @end example
17040
17041 @item
17042 Seek Greek harmony:
17043 @example
17044 scale=iw:1/PHI*iw
17045 scale=ih*PHI:ih
17046 @end example
17047
17048 @item
17049 Increase the height, and set the width to 3/2 of the height:
17050 @example
17051 scale=w=3/2*oh:h=3/5*ih
17052 @end example
17053
17054 @item
17055 Increase the size, making the size a multiple of the chroma
17056 subsample values:
17057 @example
17058 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
17059 @end example
17060
17061 @item
17062 Increase the width to a maximum of 500 pixels,
17063 keeping the same aspect ratio as the input:
17064 @example
17065 scale=w='min(500\, iw*3/2):h=-1'
17066 @end example
17067
17068 @item
17069 Make pixels square by combining scale and setsar:
17070 @example
17071 scale='trunc(ih*dar):ih',setsar=1/1
17072 @end example
17073
17074 @item
17075 Make pixels square by combining scale and setsar,
17076 making sure the resulting resolution is even (required by some codecs):
17077 @example
17078 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
17079 @end example
17080 @end itemize
17081
17082 @subsection Commands
17083
17084 This filter supports the following commands:
17085 @table @option
17086 @item width, w
17087 @item height, h
17088 Set the output video dimension expression.
17089 The command accepts the same syntax of the corresponding option.
17090
17091 If the specified expression is not valid, it is kept at its current
17092 value.
17093 @end table
17094
17095 @section scale_npp
17096
17097 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
17098 format conversion on CUDA video frames. Setting the output width and height
17099 works in the same way as for the @var{scale} filter.
17100
17101 The following additional options are accepted:
17102 @table @option
17103 @item format
17104 The pixel format of the output CUDA frames. If set to the string "same" (the
17105 default), the input format will be kept. Note that automatic format negotiation
17106 and conversion is not yet supported for hardware frames
17107
17108 @item interp_algo
17109 The interpolation algorithm used for resizing. One of the following:
17110 @table @option
17111 @item nn
17112 Nearest neighbour.
17113
17114 @item linear
17115 @item cubic
17116 @item cubic2p_bspline
17117 2-parameter cubic (B=1, C=0)
17118
17119 @item cubic2p_catmullrom
17120 2-parameter cubic (B=0, C=1/2)
17121
17122 @item cubic2p_b05c03
17123 2-parameter cubic (B=1/2, C=3/10)
17124
17125 @item super
17126 Supersampling
17127
17128 @item lanczos
17129 @end table
17130
17131 @item force_original_aspect_ratio
17132 Enable decreasing or increasing output video width or height if necessary to
17133 keep the original aspect ratio. Possible values:
17134
17135 @table @samp
17136 @item disable
17137 Scale the video as specified and disable this feature.
17138
17139 @item decrease
17140 The output video dimensions will automatically be decreased if needed.
17141
17142 @item increase
17143 The output video dimensions will automatically be increased if needed.
17144
17145 @end table
17146
17147 One useful instance of this option is that when you know a specific device's
17148 maximum allowed resolution, you can use this to limit the output video to
17149 that, while retaining the aspect ratio. For example, device A allows
17150 1280x720 playback, and your video is 1920x800. Using this option (set it to
17151 decrease) and specifying 1280x720 to the command line makes the output
17152 1280x533.
17153
17154 Please note that this is a different thing than specifying -1 for @option{w}
17155 or @option{h}, you still need to specify the output resolution for this option
17156 to work.
17157
17158 @item force_divisible_by
17159 Ensures that both the output dimensions, width and height, are divisible by the
17160 given integer when used together with @option{force_original_aspect_ratio}. This
17161 works similar to using @code{-n} in the @option{w} and @option{h} options.
17162
17163 This option respects the value set for @option{force_original_aspect_ratio},
17164 increasing or decreasing the resolution accordingly. The video's aspect ratio
17165 may be slightly modified.
17166
17167 This option can be handy if you need to have a video fit within or exceed
17168 a defined resolution using @option{force_original_aspect_ratio} but also have
17169 encoder restrictions on width or height divisibility.
17170
17171 @end table
17172
17173 @section scale2ref
17174
17175 Scale (resize) the input video, based on a reference video.
17176
17177 See the scale filter for available options, scale2ref supports the same but
17178 uses the reference video instead of the main input as basis. scale2ref also
17179 supports the following additional constants for the @option{w} and
17180 @option{h} options:
17181
17182 @table @var
17183 @item main_w
17184 @item main_h
17185 The main input video's width and height
17186
17187 @item main_a
17188 The same as @var{main_w} / @var{main_h}
17189
17190 @item main_sar
17191 The main input video's sample aspect ratio
17192
17193 @item main_dar, mdar
17194 The main input video's display aspect ratio. Calculated from
17195 @code{(main_w / main_h) * main_sar}.
17196
17197 @item main_hsub
17198 @item main_vsub
17199 The main input video's horizontal and vertical chroma subsample values.
17200 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
17201 is 1.
17202
17203 @item main_n
17204 The (sequential) number of the main input frame, starting from 0.
17205 Only available with @code{eval=frame}.
17206
17207 @item main_t
17208 The presentation timestamp of the main input frame, expressed as a number of
17209 seconds. Only available with @code{eval=frame}.
17210
17211 @item main_pos
17212 The position (byte offset) of the frame in the main input stream, or NaN if
17213 this information is unavailable and/or meaningless (for example in case of synthetic video).
17214 Only available with @code{eval=frame}.
17215 @end table
17216
17217 @subsection Examples
17218
17219 @itemize
17220 @item
17221 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
17222 @example
17223 'scale2ref[b][a];[a][b]overlay'
17224 @end example
17225
17226 @item
17227 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
17228 @example
17229 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
17230 @end example
17231 @end itemize
17232
17233 @subsection Commands
17234
17235 This filter supports the following commands:
17236 @table @option
17237 @item width, w
17238 @item height, h
17239 Set the output video dimension expression.
17240 The command accepts the same syntax of the corresponding option.
17241
17242 If the specified expression is not valid, it is kept at its current
17243 value.
17244 @end table
17245
17246 @section scroll
17247 Scroll input video horizontally and/or vertically by constant speed.
17248
17249 The filter accepts the following options:
17250 @table @option
17251 @item horizontal, h
17252 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
17253 Negative values changes scrolling direction.
17254
17255 @item vertical, v
17256 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
17257 Negative values changes scrolling direction.
17258
17259 @item hpos
17260 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
17261
17262 @item vpos
17263 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
17264 @end table
17265
17266 @subsection Commands
17267
17268 This filter supports the following @ref{commands}:
17269 @table @option
17270 @item horizontal, h
17271 Set the horizontal scrolling speed.
17272 @item vertical, v
17273 Set the vertical scrolling speed.
17274 @end table
17275
17276 @anchor{scdet}
17277 @section scdet
17278
17279 Detect video scene change.
17280
17281 This filter sets frame metadata with mafd between frame, the scene score, and
17282 forward the frame to the next filter, so they can use these metadata to detect
17283 scene change or others.
17284
17285 In addition, this filter logs a message and sets frame metadata when it detects
17286 a scene change by @option{threshold}.
17287
17288 @code{lavfi.scd.mafd} metadata keys are set with mafd for every frame.
17289
17290 @code{lavfi.scd.score} metadata keys are set with scene change score for every frame
17291 to detect scene change.
17292
17293 @code{lavfi.scd.time} metadata keys are set with current filtered frame time which
17294 detect scene change with @option{threshold}.
17295
17296 The filter accepts the following options:
17297
17298 @table @option
17299 @item threshold, t
17300 Set the scene change detection threshold as a percentage of maximum change. Good
17301 values are in the @code{[8.0, 14.0]} range. The range for @option{threshold} is
17302 @code{[0., 100.]}.
17303
17304 Default value is @code{10.}.
17305
17306 @item sc_pass, s
17307 Set the flag to pass scene change frames to the next filter. Default value is @code{0}
17308 You can enable it if you want to get snapshot of scene change frames only.
17309 @end table
17310
17311 @anchor{selectivecolor}
17312 @section selectivecolor
17313
17314 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
17315 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
17316 by the "purity" of the color (that is, how saturated it already is).
17317
17318 This filter is similar to the Adobe Photoshop Selective Color tool.
17319
17320 The filter accepts the following options:
17321
17322 @table @option
17323 @item correction_method
17324 Select color correction method.
17325
17326 Available values are:
17327 @table @samp
17328 @item absolute
17329 Specified adjustments are applied "as-is" (added/subtracted to original pixel
17330 component value).
17331 @item relative
17332 Specified adjustments are relative to the original component value.
17333 @end table
17334 Default is @code{absolute}.
17335 @item reds
17336 Adjustments for red pixels (pixels where the red component is the maximum)
17337 @item yellows
17338 Adjustments for yellow pixels (pixels where the blue component is the minimum)
17339 @item greens
17340 Adjustments for green pixels (pixels where the green component is the maximum)
17341 @item cyans
17342 Adjustments for cyan pixels (pixels where the red component is the minimum)
17343 @item blues
17344 Adjustments for blue pixels (pixels where the blue component is the maximum)
17345 @item magentas
17346 Adjustments for magenta pixels (pixels where the green component is the minimum)
17347 @item whites
17348 Adjustments for white pixels (pixels where all components are greater than 128)
17349 @item neutrals
17350 Adjustments for all pixels except pure black and pure white
17351 @item blacks
17352 Adjustments for black pixels (pixels where all components are lesser than 128)
17353 @item psfile
17354 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
17355 @end table
17356
17357 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
17358 4 space separated floating point adjustment values in the [-1,1] range,
17359 respectively to adjust the amount of cyan, magenta, yellow and black for the
17360 pixels of its range.
17361
17362 @subsection Examples
17363
17364 @itemize
17365 @item
17366 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
17367 increase magenta by 27% in blue areas:
17368 @example
17369 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
17370 @end example
17371
17372 @item
17373 Use a Photoshop selective color preset:
17374 @example
17375 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
17376 @end example
17377 @end itemize
17378
17379 @anchor{separatefields}
17380 @section separatefields
17381
17382 The @code{separatefields} takes a frame-based video input and splits
17383 each frame into its components fields, producing a new half height clip
17384 with twice the frame rate and twice the frame count.
17385
17386 This filter use field-dominance information in frame to decide which
17387 of each pair of fields to place first in the output.
17388 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
17389
17390 @section setdar, setsar
17391
17392 The @code{setdar} filter sets the Display Aspect Ratio for the filter
17393 output video.
17394
17395 This is done by changing the specified Sample (aka Pixel) Aspect
17396 Ratio, according to the following equation:
17397 @example
17398 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
17399 @end example
17400
17401 Keep in mind that the @code{setdar} filter does not modify the pixel
17402 dimensions of the video frame. Also, the display aspect ratio set by
17403 this filter may be changed by later filters in the filterchain,
17404 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
17405 applied.
17406
17407 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
17408 the filter output video.
17409
17410 Note that as a consequence of the application of this filter, the
17411 output display aspect ratio will change according to the equation
17412 above.
17413
17414 Keep in mind that the sample aspect ratio set by the @code{setsar}
17415 filter may be changed by later filters in the filterchain, e.g. if
17416 another "setsar" or a "setdar" filter is applied.
17417
17418 It accepts the following parameters:
17419
17420 @table @option
17421 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
17422 Set the aspect ratio used by the filter.
17423
17424 The parameter can be a floating point number string, an expression, or
17425 a string of the form @var{num}:@var{den}, where @var{num} and
17426 @var{den} are the numerator and denominator of the aspect ratio. If
17427 the parameter is not specified, it is assumed the value "0".
17428 In case the form "@var{num}:@var{den}" is used, the @code{:} character
17429 should be escaped.
17430
17431 @item max
17432 Set the maximum integer value to use for expressing numerator and
17433 denominator when reducing the expressed aspect ratio to a rational.
17434 Default value is @code{100}.
17435
17436 @end table
17437
17438 The parameter @var{sar} is an expression containing
17439 the following constants:
17440
17441 @table @option
17442 @item E, PI, PHI
17443 These are approximated values for the mathematical constants e
17444 (Euler's number), pi (Greek pi), and phi (the golden ratio).
17445
17446 @item w, h
17447 The input width and height.
17448
17449 @item a
17450 These are the same as @var{w} / @var{h}.
17451
17452 @item sar
17453 The input sample aspect ratio.
17454
17455 @item dar
17456 The input display aspect ratio. It is the same as
17457 (@var{w} / @var{h}) * @var{sar}.
17458
17459 @item hsub, vsub
17460 Horizontal and vertical chroma subsample values. For example, for the
17461 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17462 @end table
17463
17464 @subsection Examples
17465
17466 @itemize
17467
17468 @item
17469 To change the display aspect ratio to 16:9, specify one of the following:
17470 @example
17471 setdar=dar=1.77777
17472 setdar=dar=16/9
17473 @end example
17474
17475 @item
17476 To change the sample aspect ratio to 10:11, specify:
17477 @example
17478 setsar=sar=10/11
17479 @end example
17480
17481 @item
17482 To set a display aspect ratio of 16:9, and specify a maximum integer value of
17483 1000 in the aspect ratio reduction, use the command:
17484 @example
17485 setdar=ratio=16/9:max=1000
17486 @end example
17487
17488 @end itemize
17489
17490 @anchor{setfield}
17491 @section setfield
17492
17493 Force field for the output video frame.
17494
17495 The @code{setfield} filter marks the interlace type field for the
17496 output frames. It does not change the input frame, but only sets the
17497 corresponding property, which affects how the frame is treated by
17498 following filters (e.g. @code{fieldorder} or @code{yadif}).
17499
17500 The filter accepts the following options:
17501
17502 @table @option
17503
17504 @item mode
17505 Available values are:
17506
17507 @table @samp
17508 @item auto
17509 Keep the same field property.
17510
17511 @item bff
17512 Mark the frame as bottom-field-first.
17513
17514 @item tff
17515 Mark the frame as top-field-first.
17516
17517 @item prog
17518 Mark the frame as progressive.
17519 @end table
17520 @end table
17521
17522 @anchor{setparams}
17523 @section setparams
17524
17525 Force frame parameter for the output video frame.
17526
17527 The @code{setparams} filter marks interlace and color range for the
17528 output frames. It does not change the input frame, but only sets the
17529 corresponding property, which affects how the frame is treated by
17530 filters/encoders.
17531
17532 @table @option
17533 @item field_mode
17534 Available values are:
17535
17536 @table @samp
17537 @item auto
17538 Keep the same field property (default).
17539
17540 @item bff
17541 Mark the frame as bottom-field-first.
17542
17543 @item tff
17544 Mark the frame as top-field-first.
17545
17546 @item prog
17547 Mark the frame as progressive.
17548 @end table
17549
17550 @item range
17551 Available values are:
17552
17553 @table @samp
17554 @item auto
17555 Keep the same color range property (default).
17556
17557 @item unspecified, unknown
17558 Mark the frame as unspecified color range.
17559
17560 @item limited, tv, mpeg
17561 Mark the frame as limited range.
17562
17563 @item full, pc, jpeg
17564 Mark the frame as full range.
17565 @end table
17566
17567 @item color_primaries
17568 Set the color primaries.
17569 Available values are:
17570
17571 @table @samp
17572 @item auto
17573 Keep the same color primaries property (default).
17574
17575 @item bt709
17576 @item unknown
17577 @item bt470m
17578 @item bt470bg
17579 @item smpte170m
17580 @item smpte240m
17581 @item film
17582 @item bt2020
17583 @item smpte428
17584 @item smpte431
17585 @item smpte432
17586 @item jedec-p22
17587 @end table
17588
17589 @item color_trc
17590 Set the color transfer.
17591 Available values are:
17592
17593 @table @samp
17594 @item auto
17595 Keep the same color trc property (default).
17596
17597 @item bt709
17598 @item unknown
17599 @item bt470m
17600 @item bt470bg
17601 @item smpte170m
17602 @item smpte240m
17603 @item linear
17604 @item log100
17605 @item log316
17606 @item iec61966-2-4
17607 @item bt1361e
17608 @item iec61966-2-1
17609 @item bt2020-10
17610 @item bt2020-12
17611 @item smpte2084
17612 @item smpte428
17613 @item arib-std-b67
17614 @end table
17615
17616 @item colorspace
17617 Set the colorspace.
17618 Available values are:
17619
17620 @table @samp
17621 @item auto
17622 Keep the same colorspace property (default).
17623
17624 @item gbr
17625 @item bt709
17626 @item unknown
17627 @item fcc
17628 @item bt470bg
17629 @item smpte170m
17630 @item smpte240m
17631 @item ycgco
17632 @item bt2020nc
17633 @item bt2020c
17634 @item smpte2085
17635 @item chroma-derived-nc
17636 @item chroma-derived-c
17637 @item ictcp
17638 @end table
17639 @end table
17640
17641 @section showinfo
17642
17643 Show a line containing various information for each input video frame.
17644 The input video is not modified.
17645
17646 This filter supports the following options:
17647
17648 @table @option
17649 @item checksum
17650 Calculate checksums of each plane. By default enabled.
17651 @end table
17652
17653 The shown line contains a sequence of key/value pairs of the form
17654 @var{key}:@var{value}.
17655
17656 The following values are shown in the output:
17657
17658 @table @option
17659 @item n
17660 The (sequential) number of the input frame, starting from 0.
17661
17662 @item pts
17663 The Presentation TimeStamp of the input frame, expressed as a number of
17664 time base units. The time base unit depends on the filter input pad.
17665
17666 @item pts_time
17667 The Presentation TimeStamp of the input frame, expressed as a number of
17668 seconds.
17669
17670 @item pos
17671 The position of the frame in the input stream, or -1 if this information is
17672 unavailable and/or meaningless (for example in case of synthetic video).
17673
17674 @item fmt
17675 The pixel format name.
17676
17677 @item sar
17678 The sample aspect ratio of the input frame, expressed in the form
17679 @var{num}/@var{den}.
17680
17681 @item s
17682 The size of the input frame. For the syntax of this option, check the
17683 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17684
17685 @item i
17686 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
17687 for bottom field first).
17688
17689 @item iskey
17690 This is 1 if the frame is a key frame, 0 otherwise.
17691
17692 @item type
17693 The picture type of the input frame ("I" for an I-frame, "P" for a
17694 P-frame, "B" for a B-frame, or "?" for an unknown type).
17695 Also refer to the documentation of the @code{AVPictureType} enum and of
17696 the @code{av_get_picture_type_char} function defined in
17697 @file{libavutil/avutil.h}.
17698
17699 @item checksum
17700 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
17701
17702 @item plane_checksum
17703 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
17704 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
17705
17706 @item mean
17707 The mean value of pixels in each plane of the input frame, expressed in the form
17708 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
17709
17710 @item stdev
17711 The standard deviation of pixel values in each plane of the input frame, expressed
17712 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
17713
17714 @end table
17715
17716 @section showpalette
17717
17718 Displays the 256 colors palette of each frame. This filter is only relevant for
17719 @var{pal8} pixel format frames.
17720
17721 It accepts the following option:
17722
17723 @table @option
17724 @item s
17725 Set the size of the box used to represent one palette color entry. Default is
17726 @code{30} (for a @code{30x30} pixel box).
17727 @end table
17728
17729 @section shuffleframes
17730
17731 Reorder and/or duplicate and/or drop video frames.
17732
17733 It accepts the following parameters:
17734
17735 @table @option
17736 @item mapping
17737 Set the destination indexes of input frames.
17738 This is space or '|' separated list of indexes that maps input frames to output
17739 frames. Number of indexes also sets maximal value that each index may have.
17740 '-1' index have special meaning and that is to drop frame.
17741 @end table
17742
17743 The first frame has the index 0. The default is to keep the input unchanged.
17744
17745 @subsection Examples
17746
17747 @itemize
17748 @item
17749 Swap second and third frame of every three frames of the input:
17750 @example
17751 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
17752 @end example
17753
17754 @item
17755 Swap 10th and 1st frame of every ten frames of the input:
17756 @example
17757 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
17758 @end example
17759 @end itemize
17760
17761 @section shuffleplanes
17762
17763 Reorder and/or duplicate video planes.
17764
17765 It accepts the following parameters:
17766
17767 @table @option
17768
17769 @item map0
17770 The index of the input plane to be used as the first output plane.
17771
17772 @item map1
17773 The index of the input plane to be used as the second output plane.
17774
17775 @item map2
17776 The index of the input plane to be used as the third output plane.
17777
17778 @item map3
17779 The index of the input plane to be used as the fourth output plane.
17780
17781 @end table
17782
17783 The first plane has the index 0. The default is to keep the input unchanged.
17784
17785 @subsection Examples
17786
17787 @itemize
17788 @item
17789 Swap the second and third planes of the input:
17790 @example
17791 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
17792 @end example
17793 @end itemize
17794
17795 @anchor{signalstats}
17796 @section signalstats
17797 Evaluate various visual metrics that assist in determining issues associated
17798 with the digitization of analog video media.
17799
17800 By default the filter will log these metadata values:
17801
17802 @table @option
17803 @item YMIN
17804 Display the minimal Y value contained within the input frame. Expressed in
17805 range of [0-255].
17806
17807 @item YLOW
17808 Display the Y value at the 10% percentile within the input frame. Expressed in
17809 range of [0-255].
17810
17811 @item YAVG
17812 Display the average Y value within the input frame. Expressed in range of
17813 [0-255].
17814
17815 @item YHIGH
17816 Display the Y value at the 90% percentile within the input frame. Expressed in
17817 range of [0-255].
17818
17819 @item YMAX
17820 Display the maximum Y value contained within the input frame. Expressed in
17821 range of [0-255].
17822
17823 @item UMIN
17824 Display the minimal U value contained within the input frame. Expressed in
17825 range of [0-255].
17826
17827 @item ULOW
17828 Display the U value at the 10% percentile within the input frame. Expressed in
17829 range of [0-255].
17830
17831 @item UAVG
17832 Display the average U value within the input frame. Expressed in range of
17833 [0-255].
17834
17835 @item UHIGH
17836 Display the U value at the 90% percentile within the input frame. Expressed in
17837 range of [0-255].
17838
17839 @item UMAX
17840 Display the maximum U value contained within the input frame. Expressed in
17841 range of [0-255].
17842
17843 @item VMIN
17844 Display the minimal V value contained within the input frame. Expressed in
17845 range of [0-255].
17846
17847 @item VLOW
17848 Display the V value at the 10% percentile within the input frame. Expressed in
17849 range of [0-255].
17850
17851 @item VAVG
17852 Display the average V value within the input frame. Expressed in range of
17853 [0-255].
17854
17855 @item VHIGH
17856 Display the V value at the 90% percentile within the input frame. Expressed in
17857 range of [0-255].
17858
17859 @item VMAX
17860 Display the maximum V value contained within the input frame. Expressed in
17861 range of [0-255].
17862
17863 @item SATMIN
17864 Display the minimal saturation value contained within the input frame.
17865 Expressed in range of [0-~181.02].
17866
17867 @item SATLOW
17868 Display the saturation value at the 10% percentile within the input frame.
17869 Expressed in range of [0-~181.02].
17870
17871 @item SATAVG
17872 Display the average saturation value within the input frame. Expressed in range
17873 of [0-~181.02].
17874
17875 @item SATHIGH
17876 Display the saturation value at the 90% percentile within the input frame.
17877 Expressed in range of [0-~181.02].
17878
17879 @item SATMAX
17880 Display the maximum saturation value contained within the input frame.
17881 Expressed in range of [0-~181.02].
17882
17883 @item HUEMED
17884 Display the median value for hue within the input frame. Expressed in range of
17885 [0-360].
17886
17887 @item HUEAVG
17888 Display the average value for hue within the input frame. Expressed in range of
17889 [0-360].
17890
17891 @item YDIF
17892 Display the average of sample value difference between all values of the Y
17893 plane in the current frame and corresponding values of the previous input frame.
17894 Expressed in range of [0-255].
17895
17896 @item UDIF
17897 Display the average of sample value difference between all values of the U
17898 plane in the current frame and corresponding values of the previous input frame.
17899 Expressed in range of [0-255].
17900
17901 @item VDIF
17902 Display the average of sample value difference between all values of the V
17903 plane in the current frame and corresponding values of the previous input frame.
17904 Expressed in range of [0-255].
17905
17906 @item YBITDEPTH
17907 Display bit depth of Y plane in current frame.
17908 Expressed in range of [0-16].
17909
17910 @item UBITDEPTH
17911 Display bit depth of U plane in current frame.
17912 Expressed in range of [0-16].
17913
17914 @item VBITDEPTH
17915 Display bit depth of V plane in current frame.
17916 Expressed in range of [0-16].
17917 @end table
17918
17919 The filter accepts the following options:
17920
17921 @table @option
17922 @item stat
17923 @item out
17924
17925 @option{stat} specify an additional form of image analysis.
17926 @option{out} output video with the specified type of pixel highlighted.
17927
17928 Both options accept the following values:
17929
17930 @table @samp
17931 @item tout
17932 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
17933 unlike the neighboring pixels of the same field. Examples of temporal outliers
17934 include the results of video dropouts, head clogs, or tape tracking issues.
17935
17936 @item vrep
17937 Identify @var{vertical line repetition}. Vertical line repetition includes
17938 similar rows of pixels within a frame. In born-digital video vertical line
17939 repetition is common, but this pattern is uncommon in video digitized from an
17940 analog source. When it occurs in video that results from the digitization of an
17941 analog source it can indicate concealment from a dropout compensator.
17942
17943 @item brng
17944 Identify pixels that fall outside of legal broadcast range.
17945 @end table
17946
17947 @item color, c
17948 Set the highlight color for the @option{out} option. The default color is
17949 yellow.
17950 @end table
17951
17952 @subsection Examples
17953
17954 @itemize
17955 @item
17956 Output data of various video metrics:
17957 @example
17958 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
17959 @end example
17960
17961 @item
17962 Output specific data about the minimum and maximum values of the Y plane per frame:
17963 @example
17964 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
17965 @end example
17966
17967 @item
17968 Playback video while highlighting pixels that are outside of broadcast range in red.
17969 @example
17970 ffplay example.mov -vf signalstats="out=brng:color=red"
17971 @end example
17972
17973 @item
17974 Playback video with signalstats metadata drawn over the frame.
17975 @example
17976 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
17977 @end example
17978
17979 The contents of signalstat_drawtext.txt used in the command are:
17980 @example
17981 time %@{pts:hms@}
17982 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
17983 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
17984 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
17985 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
17986
17987 @end example
17988 @end itemize
17989
17990 @anchor{signature}
17991 @section signature
17992
17993 Calculates the MPEG-7 Video Signature. The filter can handle more than one
17994 input. In this case the matching between the inputs can be calculated additionally.
17995 The filter always passes through the first input. The signature of each stream can
17996 be written into a file.
17997
17998 It accepts the following options:
17999
18000 @table @option
18001 @item detectmode
18002 Enable or disable the matching process.
18003
18004 Available values are:
18005
18006 @table @samp
18007 @item off
18008 Disable the calculation of a matching (default).
18009 @item full
18010 Calculate the matching for the whole video and output whether the whole video
18011 matches or only parts.
18012 @item fast
18013 Calculate only until a matching is found or the video ends. Should be faster in
18014 some cases.
18015 @end table
18016
18017 @item nb_inputs
18018 Set the number of inputs. The option value must be a non negative integer.
18019 Default value is 1.
18020
18021 @item filename
18022 Set the path to which the output is written. If there is more than one input,
18023 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
18024 integer), that will be replaced with the input number. If no filename is
18025 specified, no output will be written. This is the default.
18026
18027 @item format
18028 Choose the output format.
18029
18030 Available values are:
18031
18032 @table @samp
18033 @item binary
18034 Use the specified binary representation (default).
18035 @item xml
18036 Use the specified xml representation.
18037 @end table
18038
18039 @item th_d
18040 Set threshold to detect one word as similar. The option value must be an integer
18041 greater than zero. The default value is 9000.
18042
18043 @item th_dc
18044 Set threshold to detect all words as similar. The option value must be an integer
18045 greater than zero. The default value is 60000.
18046
18047 @item th_xh
18048 Set threshold to detect frames as similar. The option value must be an integer
18049 greater than zero. The default value is 116.
18050
18051 @item th_di
18052 Set the minimum length of a sequence in frames to recognize it as matching
18053 sequence. The option value must be a non negative integer value.
18054 The default value is 0.
18055
18056 @item th_it
18057 Set the minimum relation, that matching frames to all frames must have.
18058 The option value must be a double value between 0 and 1. The default value is 0.5.
18059 @end table
18060
18061 @subsection Examples
18062
18063 @itemize
18064 @item
18065 To calculate the signature of an input video and store it in signature.bin:
18066 @example
18067 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
18068 @end example
18069
18070 @item
18071 To detect whether two videos match and store the signatures in XML format in
18072 signature0.xml and signature1.xml:
18073 @example
18074 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 -
18075 @end example
18076
18077 @end itemize
18078
18079 @anchor{smartblur}
18080 @section smartblur
18081
18082 Blur the input video without impacting the outlines.
18083
18084 It accepts the following options:
18085
18086 @table @option
18087 @item luma_radius, lr
18088 Set the luma radius. The option value must be a float number in
18089 the range [0.1,5.0] that specifies the variance of the gaussian filter
18090 used to blur the image (slower if larger). Default value is 1.0.
18091
18092 @item luma_strength, ls
18093 Set the luma strength. The option value must be a float number
18094 in the range [-1.0,1.0] that configures the blurring. A value included
18095 in [0.0,1.0] will blur the image whereas a value included in
18096 [-1.0,0.0] will sharpen the image. Default value is 1.0.
18097
18098 @item luma_threshold, lt
18099 Set the luma threshold used as a coefficient to determine
18100 whether a pixel should be blurred or not. The option value must be an
18101 integer in the range [-30,30]. A value of 0 will filter all the image,
18102 a value included in [0,30] will filter flat areas and a value included
18103 in [-30,0] will filter edges. Default value is 0.
18104
18105 @item chroma_radius, cr
18106 Set the chroma radius. The option value must be a float number in
18107 the range [0.1,5.0] that specifies the variance of the gaussian filter
18108 used to blur the image (slower if larger). Default value is @option{luma_radius}.
18109
18110 @item chroma_strength, cs
18111 Set the chroma strength. The option value must be a float number
18112 in the range [-1.0,1.0] that configures the blurring. A value included
18113 in [0.0,1.0] will blur the image whereas a value included in
18114 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
18115
18116 @item chroma_threshold, ct
18117 Set the chroma threshold used as a coefficient to determine
18118 whether a pixel should be blurred or not. The option value must be an
18119 integer in the range [-30,30]. A value of 0 will filter all the image,
18120 a value included in [0,30] will filter flat areas and a value included
18121 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
18122 @end table
18123
18124 If a chroma option is not explicitly set, the corresponding luma value
18125 is set.
18126
18127 @section sobel
18128 Apply sobel operator to input video stream.
18129
18130 The filter accepts the following option:
18131
18132 @table @option
18133 @item planes
18134 Set which planes will be processed, unprocessed planes will be copied.
18135 By default value 0xf, all planes will be processed.
18136
18137 @item scale
18138 Set value which will be multiplied with filtered result.
18139
18140 @item delta
18141 Set value which will be added to filtered result.
18142 @end table
18143
18144 @subsection Commands
18145
18146 This filter supports the all above options as @ref{commands}.
18147
18148 @anchor{spp}
18149 @section spp
18150
18151 Apply a simple postprocessing filter that compresses and decompresses the image
18152 at several (or - in the case of @option{quality} level @code{6} - all) shifts
18153 and average the results.
18154
18155 The filter accepts the following options:
18156
18157 @table @option
18158 @item quality
18159 Set quality. This option defines the number of levels for averaging. It accepts
18160 an integer in the range 0-6. If set to @code{0}, the filter will have no
18161 effect. A value of @code{6} means the higher quality. For each increment of
18162 that value the speed drops by a factor of approximately 2.  Default value is
18163 @code{3}.
18164
18165 @item qp
18166 Force a constant quantization parameter. If not set, the filter will use the QP
18167 from the video stream (if available).
18168
18169 @item mode
18170 Set thresholding mode. Available modes are:
18171
18172 @table @samp
18173 @item hard
18174 Set hard thresholding (default).
18175 @item soft
18176 Set soft thresholding (better de-ringing effect, but likely blurrier).
18177 @end table
18178
18179 @item use_bframe_qp
18180 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
18181 option may cause flicker since the B-Frames have often larger QP. Default is
18182 @code{0} (not enabled).
18183 @end table
18184
18185 @subsection Commands
18186
18187 This filter supports the following commands:
18188 @table @option
18189 @item quality, level
18190 Set quality level. The value @code{max} can be used to set the maximum level,
18191 currently @code{6}.
18192 @end table
18193
18194 @anchor{sr}
18195 @section sr
18196
18197 Scale the input by applying one of the super-resolution methods based on
18198 convolutional neural networks. Supported models:
18199
18200 @itemize
18201 @item
18202 Super-Resolution Convolutional Neural Network model (SRCNN).
18203 See @url{https://arxiv.org/abs/1501.00092}.
18204
18205 @item
18206 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
18207 See @url{https://arxiv.org/abs/1609.05158}.
18208 @end itemize
18209
18210 Training scripts as well as scripts for model file (.pb) saving can be found at
18211 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
18212 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
18213
18214 Native model files (.model) can be generated from TensorFlow model
18215 files (.pb) by using tools/python/convert.py
18216
18217 The filter accepts the following options:
18218
18219 @table @option
18220 @item dnn_backend
18221 Specify which DNN backend to use for model loading and execution. This option accepts
18222 the following values:
18223
18224 @table @samp
18225 @item native
18226 Native implementation of DNN loading and execution.
18227
18228 @item tensorflow
18229 TensorFlow backend. To enable this backend you
18230 need to install the TensorFlow for C library (see
18231 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
18232 @code{--enable-libtensorflow}
18233 @end table
18234
18235 Default value is @samp{native}.
18236
18237 @item model
18238 Set path to model file specifying network architecture and its parameters.
18239 Note that different backends use different file formats. TensorFlow backend
18240 can load files for both formats, while native backend can load files for only
18241 its format.
18242
18243 @item scale_factor
18244 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
18245 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
18246 input upscaled using bicubic upscaling with proper scale factor.
18247 @end table
18248
18249 This feature can also be finished with @ref{dnn_processing} filter.
18250
18251 @section ssim
18252
18253 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
18254
18255 This filter takes in input two input videos, the first input is
18256 considered the "main" source and is passed unchanged to the
18257 output. The second input is used as a "reference" video for computing
18258 the SSIM.
18259
18260 Both video inputs must have the same resolution and pixel format for
18261 this filter to work correctly. Also it assumes that both inputs
18262 have the same number of frames, which are compared one by one.
18263
18264 The filter stores the calculated SSIM of each frame.
18265
18266 The description of the accepted parameters follows.
18267
18268 @table @option
18269 @item stats_file, f
18270 If specified the filter will use the named file to save the SSIM of
18271 each individual frame. When filename equals "-" the data is sent to
18272 standard output.
18273 @end table
18274
18275 The file printed if @var{stats_file} is selected, contains a sequence of
18276 key/value pairs of the form @var{key}:@var{value} for each compared
18277 couple of frames.
18278
18279 A description of each shown parameter follows:
18280
18281 @table @option
18282 @item n
18283 sequential number of the input frame, starting from 1
18284
18285 @item Y, U, V, R, G, B
18286 SSIM of the compared frames for the component specified by the suffix.
18287
18288 @item All
18289 SSIM of the compared frames for the whole frame.
18290
18291 @item dB
18292 Same as above but in dB representation.
18293 @end table
18294
18295 This filter also supports the @ref{framesync} options.
18296
18297 @subsection Examples
18298 @itemize
18299 @item
18300 For example:
18301 @example
18302 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
18303 [main][ref] ssim="stats_file=stats.log" [out]
18304 @end example
18305
18306 On this example the input file being processed is compared with the
18307 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
18308 is stored in @file{stats.log}.
18309
18310 @item
18311 Another example with both psnr and ssim at same time:
18312 @example
18313 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
18314 @end example
18315
18316 @item
18317 Another example with different containers:
18318 @example
18319 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 -
18320 @end example
18321 @end itemize
18322
18323 @section stereo3d
18324
18325 Convert between different stereoscopic image formats.
18326
18327 The filters accept the following options:
18328
18329 @table @option
18330 @item in
18331 Set stereoscopic image format of input.
18332
18333 Available values for input image formats are:
18334 @table @samp
18335 @item sbsl
18336 side by side parallel (left eye left, right eye right)
18337
18338 @item sbsr
18339 side by side crosseye (right eye left, left eye right)
18340
18341 @item sbs2l
18342 side by side parallel with half width resolution
18343 (left eye left, right eye right)
18344
18345 @item sbs2r
18346 side by side crosseye with half width resolution
18347 (right eye left, left eye right)
18348
18349 @item abl
18350 @item tbl
18351 above-below (left eye above, right eye below)
18352
18353 @item abr
18354 @item tbr
18355 above-below (right eye above, left eye below)
18356
18357 @item ab2l
18358 @item tb2l
18359 above-below with half height resolution
18360 (left eye above, right eye below)
18361
18362 @item ab2r
18363 @item tb2r
18364 above-below with half height resolution
18365 (right eye above, left eye below)
18366
18367 @item al
18368 alternating frames (left eye first, right eye second)
18369
18370 @item ar
18371 alternating frames (right eye first, left eye second)
18372
18373 @item irl
18374 interleaved rows (left eye has top row, right eye starts on next row)
18375
18376 @item irr
18377 interleaved rows (right eye has top row, left eye starts on next row)
18378
18379 @item icl
18380 interleaved columns, left eye first
18381
18382 @item icr
18383 interleaved columns, right eye first
18384
18385 Default value is @samp{sbsl}.
18386 @end table
18387
18388 @item out
18389 Set stereoscopic image format of output.
18390
18391 @table @samp
18392 @item sbsl
18393 side by side parallel (left eye left, right eye right)
18394
18395 @item sbsr
18396 side by side crosseye (right eye left, left eye right)
18397
18398 @item sbs2l
18399 side by side parallel with half width resolution
18400 (left eye left, right eye right)
18401
18402 @item sbs2r
18403 side by side crosseye with half width resolution
18404 (right eye left, left eye right)
18405
18406 @item abl
18407 @item tbl
18408 above-below (left eye above, right eye below)
18409
18410 @item abr
18411 @item tbr
18412 above-below (right eye above, left eye below)
18413
18414 @item ab2l
18415 @item tb2l
18416 above-below with half height resolution
18417 (left eye above, right eye below)
18418
18419 @item ab2r
18420 @item tb2r
18421 above-below with half height resolution
18422 (right eye above, left eye below)
18423
18424 @item al
18425 alternating frames (left eye first, right eye second)
18426
18427 @item ar
18428 alternating frames (right eye first, left eye second)
18429
18430 @item irl
18431 interleaved rows (left eye has top row, right eye starts on next row)
18432
18433 @item irr
18434 interleaved rows (right eye has top row, left eye starts on next row)
18435
18436 @item arbg
18437 anaglyph red/blue gray
18438 (red filter on left eye, blue filter on right eye)
18439
18440 @item argg
18441 anaglyph red/green gray
18442 (red filter on left eye, green filter on right eye)
18443
18444 @item arcg
18445 anaglyph red/cyan gray
18446 (red filter on left eye, cyan filter on right eye)
18447
18448 @item arch
18449 anaglyph red/cyan half colored
18450 (red filter on left eye, cyan filter on right eye)
18451
18452 @item arcc
18453 anaglyph red/cyan color
18454 (red filter on left eye, cyan filter on right eye)
18455
18456 @item arcd
18457 anaglyph red/cyan color optimized with the least squares projection of dubois
18458 (red filter on left eye, cyan filter on right eye)
18459
18460 @item agmg
18461 anaglyph green/magenta gray
18462 (green filter on left eye, magenta filter on right eye)
18463
18464 @item agmh
18465 anaglyph green/magenta half colored
18466 (green filter on left eye, magenta filter on right eye)
18467
18468 @item agmc
18469 anaglyph green/magenta colored
18470 (green filter on left eye, magenta filter on right eye)
18471
18472 @item agmd
18473 anaglyph green/magenta color optimized with the least squares projection of dubois
18474 (green filter on left eye, magenta filter on right eye)
18475
18476 @item aybg
18477 anaglyph yellow/blue gray
18478 (yellow filter on left eye, blue filter on right eye)
18479
18480 @item aybh
18481 anaglyph yellow/blue half colored
18482 (yellow filter on left eye, blue filter on right eye)
18483
18484 @item aybc
18485 anaglyph yellow/blue colored
18486 (yellow filter on left eye, blue filter on right eye)
18487
18488 @item aybd
18489 anaglyph yellow/blue color optimized with the least squares projection of dubois
18490 (yellow filter on left eye, blue filter on right eye)
18491
18492 @item ml
18493 mono output (left eye only)
18494
18495 @item mr
18496 mono output (right eye only)
18497
18498 @item chl
18499 checkerboard, left eye first
18500
18501 @item chr
18502 checkerboard, right eye first
18503
18504 @item icl
18505 interleaved columns, left eye first
18506
18507 @item icr
18508 interleaved columns, right eye first
18509
18510 @item hdmi
18511 HDMI frame pack
18512 @end table
18513
18514 Default value is @samp{arcd}.
18515 @end table
18516
18517 @subsection Examples
18518
18519 @itemize
18520 @item
18521 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
18522 @example
18523 stereo3d=sbsl:aybd
18524 @end example
18525
18526 @item
18527 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
18528 @example
18529 stereo3d=abl:sbsr
18530 @end example
18531 @end itemize
18532
18533 @section streamselect, astreamselect
18534 Select video or audio streams.
18535
18536 The filter accepts the following options:
18537
18538 @table @option
18539 @item inputs
18540 Set number of inputs. Default is 2.
18541
18542 @item map
18543 Set input indexes to remap to outputs.
18544 @end table
18545
18546 @subsection Commands
18547
18548 The @code{streamselect} and @code{astreamselect} filter supports the following
18549 commands:
18550
18551 @table @option
18552 @item map
18553 Set input indexes to remap to outputs.
18554 @end table
18555
18556 @subsection Examples
18557
18558 @itemize
18559 @item
18560 Select first 5 seconds 1st stream and rest of time 2nd stream:
18561 @example
18562 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
18563 @end example
18564
18565 @item
18566 Same as above, but for audio:
18567 @example
18568 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
18569 @end example
18570 @end itemize
18571
18572 @anchor{subtitles}
18573 @section subtitles
18574
18575 Draw subtitles on top of input video using the libass library.
18576
18577 To enable compilation of this filter you need to configure FFmpeg with
18578 @code{--enable-libass}. This filter also requires a build with libavcodec and
18579 libavformat to convert the passed subtitles file to ASS (Advanced Substation
18580 Alpha) subtitles format.
18581
18582 The filter accepts the following options:
18583
18584 @table @option
18585 @item filename, f
18586 Set the filename of the subtitle file to read. It must be specified.
18587
18588 @item original_size
18589 Specify the size of the original video, the video for which the ASS file
18590 was composed. For the syntax of this option, check the
18591 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18592 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
18593 correctly scale the fonts if the aspect ratio has been changed.
18594
18595 @item fontsdir
18596 Set a directory path containing fonts that can be used by the filter.
18597 These fonts will be used in addition to whatever the font provider uses.
18598
18599 @item alpha
18600 Process alpha channel, by default alpha channel is untouched.
18601
18602 @item charenc
18603 Set subtitles input character encoding. @code{subtitles} filter only. Only
18604 useful if not UTF-8.
18605
18606 @item stream_index, si
18607 Set subtitles stream index. @code{subtitles} filter only.
18608
18609 @item force_style
18610 Override default style or script info parameters of the subtitles. It accepts a
18611 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
18612 @end table
18613
18614 If the first key is not specified, it is assumed that the first value
18615 specifies the @option{filename}.
18616
18617 For example, to render the file @file{sub.srt} on top of the input
18618 video, use the command:
18619 @example
18620 subtitles=sub.srt
18621 @end example
18622
18623 which is equivalent to:
18624 @example
18625 subtitles=filename=sub.srt
18626 @end example
18627
18628 To render the default subtitles stream from file @file{video.mkv}, use:
18629 @example
18630 subtitles=video.mkv
18631 @end example
18632
18633 To render the second subtitles stream from that file, use:
18634 @example
18635 subtitles=video.mkv:si=1
18636 @end example
18637
18638 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
18639 @code{DejaVu Serif}, use:
18640 @example
18641 subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
18642 @end example
18643
18644 @section super2xsai
18645
18646 Scale the input by 2x and smooth using the Super2xSaI (Scale and
18647 Interpolate) pixel art scaling algorithm.
18648
18649 Useful for enlarging pixel art images without reducing sharpness.
18650
18651 @section swaprect
18652
18653 Swap two rectangular objects in video.
18654
18655 This filter accepts the following options:
18656
18657 @table @option
18658 @item w
18659 Set object width.
18660
18661 @item h
18662 Set object height.
18663
18664 @item x1
18665 Set 1st rect x coordinate.
18666
18667 @item y1
18668 Set 1st rect y coordinate.
18669
18670 @item x2
18671 Set 2nd rect x coordinate.
18672
18673 @item y2
18674 Set 2nd rect y coordinate.
18675
18676 All expressions are evaluated once for each frame.
18677 @end table
18678
18679 The all options are expressions containing the following constants:
18680
18681 @table @option
18682 @item w
18683 @item h
18684 The input width and height.
18685
18686 @item a
18687 same as @var{w} / @var{h}
18688
18689 @item sar
18690 input sample aspect ratio
18691
18692 @item dar
18693 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
18694
18695 @item n
18696 The number of the input frame, starting from 0.
18697
18698 @item t
18699 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
18700
18701 @item pos
18702 the position in the file of the input frame, NAN if unknown
18703 @end table
18704
18705 @section swapuv
18706 Swap U & V plane.
18707
18708 @section tblend
18709 Blend successive video frames.
18710
18711 See @ref{blend}
18712
18713 @section telecine
18714
18715 Apply telecine process to the video.
18716
18717 This filter accepts the following options:
18718
18719 @table @option
18720 @item first_field
18721 @table @samp
18722 @item top, t
18723 top field first
18724 @item bottom, b
18725 bottom field first
18726 The default value is @code{top}.
18727 @end table
18728
18729 @item pattern
18730 A string of numbers representing the pulldown pattern you wish to apply.
18731 The default value is @code{23}.
18732 @end table
18733
18734 @example
18735 Some typical patterns:
18736
18737 NTSC output (30i):
18738 27.5p: 32222
18739 24p: 23 (classic)
18740 24p: 2332 (preferred)
18741 20p: 33
18742 18p: 334
18743 16p: 3444
18744
18745 PAL output (25i):
18746 27.5p: 12222
18747 24p: 222222222223 ("Euro pulldown")
18748 16.67p: 33
18749 16p: 33333334
18750 @end example
18751
18752 @section thistogram
18753
18754 Compute and draw a color distribution histogram for the input video across time.
18755
18756 Unlike @ref{histogram} video filter which only shows histogram of single input frame
18757 at certain time, this filter shows also past histograms of number of frames defined
18758 by @code{width} option.
18759
18760 The computed histogram is a representation of the color component
18761 distribution in an image.
18762
18763 The filter accepts the following options:
18764
18765 @table @option
18766 @item width, w
18767 Set width of single color component output. Default value is @code{0}.
18768 Value of @code{0} means width will be picked from input video.
18769 This also set number of passed histograms to keep.
18770 Allowed range is [0, 8192].
18771
18772 @item display_mode, d
18773 Set display mode.
18774 It accepts the following values:
18775 @table @samp
18776 @item stack
18777 Per color component graphs are placed below each other.
18778
18779 @item parade
18780 Per color component graphs are placed side by side.
18781
18782 @item overlay
18783 Presents information identical to that in the @code{parade}, except
18784 that the graphs representing color components are superimposed directly
18785 over one another.
18786 @end table
18787 Default is @code{stack}.
18788
18789 @item levels_mode, m
18790 Set mode. Can be either @code{linear}, or @code{logarithmic}.
18791 Default is @code{linear}.
18792
18793 @item components, c
18794 Set what color components to display.
18795 Default is @code{7}.
18796
18797 @item bgopacity, b
18798 Set background opacity. Default is @code{0.9}.
18799
18800 @item envelope, e
18801 Show envelope. Default is disabled.
18802
18803 @item ecolor, ec
18804 Set envelope color. Default is @code{gold}.
18805
18806 @item slide
18807 Set slide mode.
18808
18809 Available values for slide is:
18810 @table @samp
18811 @item frame
18812 Draw new frame when right border is reached.
18813
18814 @item replace
18815 Replace old columns with new ones.
18816
18817 @item scroll
18818 Scroll from right to left.
18819
18820 @item rscroll
18821 Scroll from left to right.
18822
18823 @item picture
18824 Draw single picture.
18825 @end table
18826
18827 Default is @code{replace}.
18828 @end table
18829
18830 @section threshold
18831
18832 Apply threshold effect to video stream.
18833
18834 This filter needs four video streams to perform thresholding.
18835 First stream is stream we are filtering.
18836 Second stream is holding threshold values, third stream is holding min values,
18837 and last, fourth stream is holding max values.
18838
18839 The filter accepts the following option:
18840
18841 @table @option
18842 @item planes
18843 Set which planes will be processed, unprocessed planes will be copied.
18844 By default value 0xf, all planes will be processed.
18845 @end table
18846
18847 For example if first stream pixel's component value is less then threshold value
18848 of pixel component from 2nd threshold stream, third stream value will picked,
18849 otherwise fourth stream pixel component value will be picked.
18850
18851 Using color source filter one can perform various types of thresholding:
18852
18853 @subsection Examples
18854
18855 @itemize
18856 @item
18857 Binary threshold, using gray color as threshold:
18858 @example
18859 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
18860 @end example
18861
18862 @item
18863 Inverted binary threshold, using gray color as threshold:
18864 @example
18865 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
18866 @end example
18867
18868 @item
18869 Truncate binary threshold, using gray color as threshold:
18870 @example
18871 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
18872 @end example
18873
18874 @item
18875 Threshold to zero, using gray color as threshold:
18876 @example
18877 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
18878 @end example
18879
18880 @item
18881 Inverted threshold to zero, using gray color as threshold:
18882 @example
18883 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
18884 @end example
18885 @end itemize
18886
18887 @section thumbnail
18888 Select the most representative frame in a given sequence of consecutive frames.
18889
18890 The filter accepts the following options:
18891
18892 @table @option
18893 @item n
18894 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
18895 will pick one of them, and then handle the next batch of @var{n} frames until
18896 the end. Default is @code{100}.
18897 @end table
18898
18899 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
18900 value will result in a higher memory usage, so a high value is not recommended.
18901
18902 @subsection Examples
18903
18904 @itemize
18905 @item
18906 Extract one picture each 50 frames:
18907 @example
18908 thumbnail=50
18909 @end example
18910
18911 @item
18912 Complete example of a thumbnail creation with @command{ffmpeg}:
18913 @example
18914 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
18915 @end example
18916 @end itemize
18917
18918 @anchor{tile}
18919 @section tile
18920
18921 Tile several successive frames together.
18922
18923 The @ref{untile} filter can do the reverse.
18924
18925 The filter accepts the following options:
18926
18927 @table @option
18928
18929 @item layout
18930 Set the grid size (i.e. the number of lines and columns). For the syntax of
18931 this option, check the
18932 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18933
18934 @item nb_frames
18935 Set the maximum number of frames to render in the given area. It must be less
18936 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
18937 the area will be used.
18938
18939 @item margin
18940 Set the outer border margin in pixels.
18941
18942 @item padding
18943 Set the inner border thickness (i.e. the number of pixels between frames). For
18944 more advanced padding options (such as having different values for the edges),
18945 refer to the pad video filter.
18946
18947 @item color
18948 Specify the color of the unused area. For the syntax of this option, check the
18949 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18950 The default value of @var{color} is "black".
18951
18952 @item overlap
18953 Set the number of frames to overlap when tiling several successive frames together.
18954 The value must be between @code{0} and @var{nb_frames - 1}.
18955
18956 @item init_padding
18957 Set the number of frames to initially be empty before displaying first output frame.
18958 This controls how soon will one get first output frame.
18959 The value must be between @code{0} and @var{nb_frames - 1}.
18960 @end table
18961
18962 @subsection Examples
18963
18964 @itemize
18965 @item
18966 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
18967 @example
18968 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
18969 @end example
18970 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
18971 duplicating each output frame to accommodate the originally detected frame
18972 rate.
18973
18974 @item
18975 Display @code{5} pictures in an area of @code{3x2} frames,
18976 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
18977 mixed flat and named options:
18978 @example
18979 tile=3x2:nb_frames=5:padding=7:margin=2
18980 @end example
18981 @end itemize
18982
18983 @section tinterlace
18984
18985 Perform various types of temporal field interlacing.
18986
18987 Frames are counted starting from 1, so the first input frame is
18988 considered odd.
18989
18990 The filter accepts the following options:
18991
18992 @table @option
18993
18994 @item mode
18995 Specify the mode of the interlacing. This option can also be specified
18996 as a value alone. See below for a list of values for this option.
18997
18998 Available values are:
18999
19000 @table @samp
19001 @item merge, 0
19002 Move odd frames into the upper field, even into the lower field,
19003 generating a double height frame at half frame rate.
19004 @example
19005  ------> time
19006 Input:
19007 Frame 1         Frame 2         Frame 3         Frame 4
19008
19009 11111           22222           33333           44444
19010 11111           22222           33333           44444
19011 11111           22222           33333           44444
19012 11111           22222           33333           44444
19013
19014 Output:
19015 11111                           33333
19016 22222                           44444
19017 11111                           33333
19018 22222                           44444
19019 11111                           33333
19020 22222                           44444
19021 11111                           33333
19022 22222                           44444
19023 @end example
19024
19025 @item drop_even, 1
19026 Only output odd frames, even frames are dropped, generating a frame with
19027 unchanged height at half frame rate.
19028
19029 @example
19030  ------> time
19031 Input:
19032 Frame 1         Frame 2         Frame 3         Frame 4
19033
19034 11111           22222           33333           44444
19035 11111           22222           33333           44444
19036 11111           22222           33333           44444
19037 11111           22222           33333           44444
19038
19039 Output:
19040 11111                           33333
19041 11111                           33333
19042 11111                           33333
19043 11111                           33333
19044 @end example
19045
19046 @item drop_odd, 2
19047 Only output even frames, odd frames are dropped, generating a frame with
19048 unchanged height at half frame rate.
19049
19050 @example
19051  ------> time
19052 Input:
19053 Frame 1         Frame 2         Frame 3         Frame 4
19054
19055 11111           22222           33333           44444
19056 11111           22222           33333           44444
19057 11111           22222           33333           44444
19058 11111           22222           33333           44444
19059
19060 Output:
19061                 22222                           44444
19062                 22222                           44444
19063                 22222                           44444
19064                 22222                           44444
19065 @end example
19066
19067 @item pad, 3
19068 Expand each frame to full height, but pad alternate lines with black,
19069 generating a frame with double height at the same input frame rate.
19070
19071 @example
19072  ------> time
19073 Input:
19074 Frame 1         Frame 2         Frame 3         Frame 4
19075
19076 11111           22222           33333           44444
19077 11111           22222           33333           44444
19078 11111           22222           33333           44444
19079 11111           22222           33333           44444
19080
19081 Output:
19082 11111           .....           33333           .....
19083 .....           22222           .....           44444
19084 11111           .....           33333           .....
19085 .....           22222           .....           44444
19086 11111           .....           33333           .....
19087 .....           22222           .....           44444
19088 11111           .....           33333           .....
19089 .....           22222           .....           44444
19090 @end example
19091
19092
19093 @item interleave_top, 4
19094 Interleave the upper field from odd frames with the lower field from
19095 even frames, generating a frame with unchanged height at half frame rate.
19096
19097 @example
19098  ------> time
19099 Input:
19100 Frame 1         Frame 2         Frame 3         Frame 4
19101
19102 11111<-         22222           33333<-         44444
19103 11111           22222<-         33333           44444<-
19104 11111<-         22222           33333<-         44444
19105 11111           22222<-         33333           44444<-
19106
19107 Output:
19108 11111                           33333
19109 22222                           44444
19110 11111                           33333
19111 22222                           44444
19112 @end example
19113
19114
19115 @item interleave_bottom, 5
19116 Interleave the lower field from odd frames with the upper field from
19117 even frames, generating a frame with unchanged height at half frame rate.
19118
19119 @example
19120  ------> time
19121 Input:
19122 Frame 1         Frame 2         Frame 3         Frame 4
19123
19124 11111           22222<-         33333           44444<-
19125 11111<-         22222           33333<-         44444
19126 11111           22222<-         33333           44444<-
19127 11111<-         22222           33333<-         44444
19128
19129 Output:
19130 22222                           44444
19131 11111                           33333
19132 22222                           44444
19133 11111                           33333
19134 @end example
19135
19136
19137 @item interlacex2, 6
19138 Double frame rate with unchanged height. Frames are inserted each
19139 containing the second temporal field from the previous input frame and
19140 the first temporal field from the next input frame. This mode relies on
19141 the top_field_first flag. Useful for interlaced video displays with no
19142 field synchronisation.
19143
19144 @example
19145  ------> time
19146 Input:
19147 Frame 1         Frame 2         Frame 3         Frame 4
19148
19149 11111           22222           33333           44444
19150  11111           22222           33333           44444
19151 11111           22222           33333           44444
19152  11111           22222           33333           44444
19153
19154 Output:
19155 11111   22222   22222   33333   33333   44444   44444
19156  11111   11111   22222   22222   33333   33333   44444
19157 11111   22222   22222   33333   33333   44444   44444
19158  11111   11111   22222   22222   33333   33333   44444
19159 @end example
19160
19161
19162 @item mergex2, 7
19163 Move odd frames into the upper field, even into the lower field,
19164 generating a double height frame at same frame rate.
19165
19166 @example
19167  ------> time
19168 Input:
19169 Frame 1         Frame 2         Frame 3         Frame 4
19170
19171 11111           22222           33333           44444
19172 11111           22222           33333           44444
19173 11111           22222           33333           44444
19174 11111           22222           33333           44444
19175
19176 Output:
19177 11111           33333           33333           55555
19178 22222           22222           44444           44444
19179 11111           33333           33333           55555
19180 22222           22222           44444           44444
19181 11111           33333           33333           55555
19182 22222           22222           44444           44444
19183 11111           33333           33333           55555
19184 22222           22222           44444           44444
19185 @end example
19186
19187 @end table
19188
19189 Numeric values are deprecated but are accepted for backward
19190 compatibility reasons.
19191
19192 Default mode is @code{merge}.
19193
19194 @item flags
19195 Specify flags influencing the filter process.
19196
19197 Available value for @var{flags} is:
19198
19199 @table @option
19200 @item low_pass_filter, vlpf
19201 Enable linear vertical low-pass filtering in the filter.
19202 Vertical low-pass filtering is required when creating an interlaced
19203 destination from a progressive source which contains high-frequency
19204 vertical detail. Filtering will reduce interlace 'twitter' and Moire
19205 patterning.
19206
19207 @item complex_filter, cvlpf
19208 Enable complex vertical low-pass filtering.
19209 This will slightly less reduce interlace 'twitter' and Moire
19210 patterning but better retain detail and subjective sharpness impression.
19211
19212 @item bypass_il
19213 Bypass already interlaced frames, only adjust the frame rate.
19214 @end table
19215
19216 Vertical low-pass filtering and bypassing already interlaced frames can only be
19217 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
19218
19219 @end table
19220
19221 @section tmedian
19222 Pick median pixels from several successive input video frames.
19223
19224 The filter accepts the following options:
19225
19226 @table @option
19227 @item radius
19228 Set radius of median filter.
19229 Default is 1. Allowed range is from 1 to 127.
19230
19231 @item planes
19232 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
19233
19234 @item percentile
19235 Set median percentile. Default value is @code{0.5}.
19236 Default value of @code{0.5} will pick always median values, while @code{0} will pick
19237 minimum values, and @code{1} maximum values.
19238 @end table
19239
19240 @section tmix
19241
19242 Mix successive video frames.
19243
19244 A description of the accepted options follows.
19245
19246 @table @option
19247 @item frames
19248 The number of successive frames to mix. If unspecified, it defaults to 3.
19249
19250 @item weights
19251 Specify weight of each input video frame.
19252 Each weight is separated by space. If number of weights is smaller than
19253 number of @var{frames} last specified weight will be used for all remaining
19254 unset weights.
19255
19256 @item scale
19257 Specify scale, if it is set it will be multiplied with sum
19258 of each weight multiplied with pixel values to give final destination
19259 pixel value. By default @var{scale} is auto scaled to sum of weights.
19260 @end table
19261
19262 @subsection Examples
19263
19264 @itemize
19265 @item
19266 Average 7 successive frames:
19267 @example
19268 tmix=frames=7:weights="1 1 1 1 1 1 1"
19269 @end example
19270
19271 @item
19272 Apply simple temporal convolution:
19273 @example
19274 tmix=frames=3:weights="-1 3 -1"
19275 @end example
19276
19277 @item
19278 Similar as above but only showing temporal differences:
19279 @example
19280 tmix=frames=3:weights="-1 2 -1":scale=1
19281 @end example
19282 @end itemize
19283
19284 @anchor{tonemap}
19285 @section tonemap
19286 Tone map colors from different dynamic ranges.
19287
19288 This filter expects data in single precision floating point, as it needs to
19289 operate on (and can output) out-of-range values. Another filter, such as
19290 @ref{zscale}, is needed to convert the resulting frame to a usable format.
19291
19292 The tonemapping algorithms implemented only work on linear light, so input
19293 data should be linearized beforehand (and possibly correctly tagged).
19294
19295 @example
19296 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
19297 @end example
19298
19299 @subsection Options
19300 The filter accepts the following options.
19301
19302 @table @option
19303 @item tonemap
19304 Set the tone map algorithm to use.
19305
19306 Possible values are:
19307 @table @var
19308 @item none
19309 Do not apply any tone map, only desaturate overbright pixels.
19310
19311 @item clip
19312 Hard-clip any out-of-range values. Use it for perfect color accuracy for
19313 in-range values, while distorting out-of-range values.
19314
19315 @item linear
19316 Stretch the entire reference gamut to a linear multiple of the display.
19317
19318 @item gamma
19319 Fit a logarithmic transfer between the tone curves.
19320
19321 @item reinhard
19322 Preserve overall image brightness with a simple curve, using nonlinear
19323 contrast, which results in flattening details and degrading color accuracy.
19324
19325 @item hable
19326 Preserve both dark and bright details better than @var{reinhard}, at the cost
19327 of slightly darkening everything. Use it when detail preservation is more
19328 important than color and brightness accuracy.
19329
19330 @item mobius
19331 Smoothly map out-of-range values, while retaining contrast and colors for
19332 in-range material as much as possible. Use it when color accuracy is more
19333 important than detail preservation.
19334 @end table
19335
19336 Default is none.
19337
19338 @item param
19339 Tune the tone mapping algorithm.
19340
19341 This affects the following algorithms:
19342 @table @var
19343 @item none
19344 Ignored.
19345
19346 @item linear
19347 Specifies the scale factor to use while stretching.
19348 Default to 1.0.
19349
19350 @item gamma
19351 Specifies the exponent of the function.
19352 Default to 1.8.
19353
19354 @item clip
19355 Specify an extra linear coefficient to multiply into the signal before clipping.
19356 Default to 1.0.
19357
19358 @item reinhard
19359 Specify the local contrast coefficient at the display peak.
19360 Default to 0.5, which means that in-gamut values will be about half as bright
19361 as when clipping.
19362
19363 @item hable
19364 Ignored.
19365
19366 @item mobius
19367 Specify the transition point from linear to mobius transform. Every value
19368 below this point is guaranteed to be mapped 1:1. The higher the value, the
19369 more accurate the result will be, at the cost of losing bright details.
19370 Default to 0.3, which due to the steep initial slope still preserves in-range
19371 colors fairly accurately.
19372 @end table
19373
19374 @item desat
19375 Apply desaturation for highlights that exceed this level of brightness. The
19376 higher the parameter, the more color information will be preserved. This
19377 setting helps prevent unnaturally blown-out colors for super-highlights, by
19378 (smoothly) turning into white instead. This makes images feel more natural,
19379 at the cost of reducing information about out-of-range colors.
19380
19381 The default of 2.0 is somewhat conservative and will mostly just apply to
19382 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
19383
19384 This option works only if the input frame has a supported color tag.
19385
19386 @item peak
19387 Override signal/nominal/reference peak with this value. Useful when the
19388 embedded peak information in display metadata is not reliable or when tone
19389 mapping from a lower range to a higher range.
19390 @end table
19391
19392 @section tpad
19393
19394 Temporarily pad video frames.
19395
19396 The filter accepts the following options:
19397
19398 @table @option
19399 @item start
19400 Specify number of delay frames before input video stream. Default is 0.
19401
19402 @item stop
19403 Specify number of padding frames after input video stream.
19404 Set to -1 to pad indefinitely. Default is 0.
19405
19406 @item start_mode
19407 Set kind of frames added to beginning of stream.
19408 Can be either @var{add} or @var{clone}.
19409 With @var{add} frames of solid-color are added.
19410 With @var{clone} frames are clones of first frame.
19411 Default is @var{add}.
19412
19413 @item stop_mode
19414 Set kind of frames added to end of stream.
19415 Can be either @var{add} or @var{clone}.
19416 With @var{add} frames of solid-color are added.
19417 With @var{clone} frames are clones of last frame.
19418 Default is @var{add}.
19419
19420 @item start_duration, stop_duration
19421 Specify the duration of the start/stop delay. See
19422 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19423 for the accepted syntax.
19424 These options override @var{start} and @var{stop}. Default is 0.
19425
19426 @item color
19427 Specify the color of the padded area. For the syntax of this option,
19428 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
19429 manual,ffmpeg-utils}.
19430
19431 The default value of @var{color} is "black".
19432 @end table
19433
19434 @anchor{transpose}
19435 @section transpose
19436
19437 Transpose rows with columns in the input video and optionally flip it.
19438
19439 It accepts the following parameters:
19440
19441 @table @option
19442
19443 @item dir
19444 Specify the transposition direction.
19445
19446 Can assume the following values:
19447 @table @samp
19448 @item 0, 4, cclock_flip
19449 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
19450 @example
19451 L.R     L.l
19452 . . ->  . .
19453 l.r     R.r
19454 @end example
19455
19456 @item 1, 5, clock
19457 Rotate by 90 degrees clockwise, that is:
19458 @example
19459 L.R     l.L
19460 . . ->  . .
19461 l.r     r.R
19462 @end example
19463
19464 @item 2, 6, cclock
19465 Rotate by 90 degrees counterclockwise, that is:
19466 @example
19467 L.R     R.r
19468 . . ->  . .
19469 l.r     L.l
19470 @end example
19471
19472 @item 3, 7, clock_flip
19473 Rotate by 90 degrees clockwise and vertically flip, that is:
19474 @example
19475 L.R     r.R
19476 . . ->  . .
19477 l.r     l.L
19478 @end example
19479 @end table
19480
19481 For values between 4-7, the transposition is only done if the input
19482 video geometry is portrait and not landscape. These values are
19483 deprecated, the @code{passthrough} option should be used instead.
19484
19485 Numerical values are deprecated, and should be dropped in favor of
19486 symbolic constants.
19487
19488 @item passthrough
19489 Do not apply the transposition if the input geometry matches the one
19490 specified by the specified value. It accepts the following values:
19491 @table @samp
19492 @item none
19493 Always apply transposition.
19494 @item portrait
19495 Preserve portrait geometry (when @var{height} >= @var{width}).
19496 @item landscape
19497 Preserve landscape geometry (when @var{width} >= @var{height}).
19498 @end table
19499
19500 Default value is @code{none}.
19501 @end table
19502
19503 For example to rotate by 90 degrees clockwise and preserve portrait
19504 layout:
19505 @example
19506 transpose=dir=1:passthrough=portrait
19507 @end example
19508
19509 The command above can also be specified as:
19510 @example
19511 transpose=1:portrait
19512 @end example
19513
19514 @section transpose_npp
19515
19516 Transpose rows with columns in the input video and optionally flip it.
19517 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
19518
19519 It accepts the following parameters:
19520
19521 @table @option
19522
19523 @item dir
19524 Specify the transposition direction.
19525
19526 Can assume the following values:
19527 @table @samp
19528 @item cclock_flip
19529 Rotate by 90 degrees counterclockwise and vertically flip. (default)
19530
19531 @item clock
19532 Rotate by 90 degrees clockwise.
19533
19534 @item cclock
19535 Rotate by 90 degrees counterclockwise.
19536
19537 @item clock_flip
19538 Rotate by 90 degrees clockwise and vertically flip.
19539 @end table
19540
19541 @item passthrough
19542 Do not apply the transposition if the input geometry matches the one
19543 specified by the specified value. It accepts the following values:
19544 @table @samp
19545 @item none
19546 Always apply transposition. (default)
19547 @item portrait
19548 Preserve portrait geometry (when @var{height} >= @var{width}).
19549 @item landscape
19550 Preserve landscape geometry (when @var{width} >= @var{height}).
19551 @end table
19552
19553 @end table
19554
19555 @section trim
19556 Trim the input so that the output contains one continuous subpart of the input.
19557
19558 It accepts the following parameters:
19559 @table @option
19560 @item start
19561 Specify the time of the start of the kept section, i.e. the frame with the
19562 timestamp @var{start} will be the first frame in the output.
19563
19564 @item end
19565 Specify the time of the first frame that will be dropped, i.e. the frame
19566 immediately preceding the one with the timestamp @var{end} will be the last
19567 frame in the output.
19568
19569 @item start_pts
19570 This is the same as @var{start}, except this option sets the start timestamp
19571 in timebase units instead of seconds.
19572
19573 @item end_pts
19574 This is the same as @var{end}, except this option sets the end timestamp
19575 in timebase units instead of seconds.
19576
19577 @item duration
19578 The maximum duration of the output in seconds.
19579
19580 @item start_frame
19581 The number of the first frame that should be passed to the output.
19582
19583 @item end_frame
19584 The number of the first frame that should be dropped.
19585 @end table
19586
19587 @option{start}, @option{end}, and @option{duration} are expressed as time
19588 duration specifications; see
19589 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19590 for the accepted syntax.
19591
19592 Note that the first two sets of the start/end options and the @option{duration}
19593 option look at the frame timestamp, while the _frame variants simply count the
19594 frames that pass through the filter. Also note that this filter does not modify
19595 the timestamps. If you wish for the output timestamps to start at zero, insert a
19596 setpts filter after the trim filter.
19597
19598 If multiple start or end options are set, this filter tries to be greedy and
19599 keep all the frames that match at least one of the specified constraints. To keep
19600 only the part that matches all the constraints at once, chain multiple trim
19601 filters.
19602
19603 The defaults are such that all the input is kept. So it is possible to set e.g.
19604 just the end values to keep everything before the specified time.
19605
19606 Examples:
19607 @itemize
19608 @item
19609 Drop everything except the second minute of input:
19610 @example
19611 ffmpeg -i INPUT -vf trim=60:120
19612 @end example
19613
19614 @item
19615 Keep only the first second:
19616 @example
19617 ffmpeg -i INPUT -vf trim=duration=1
19618 @end example
19619
19620 @end itemize
19621
19622 @section unpremultiply
19623 Apply alpha unpremultiply effect to input video stream using first plane
19624 of second stream as alpha.
19625
19626 Both streams must have same dimensions and same pixel format.
19627
19628 The filter accepts the following option:
19629
19630 @table @option
19631 @item planes
19632 Set which planes will be processed, unprocessed planes will be copied.
19633 By default value 0xf, all planes will be processed.
19634
19635 If the format has 1 or 2 components, then luma is bit 0.
19636 If the format has 3 or 4 components:
19637 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
19638 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
19639 If present, the alpha channel is always the last bit.
19640
19641 @item inplace
19642 Do not require 2nd input for processing, instead use alpha plane from input stream.
19643 @end table
19644
19645 @anchor{unsharp}
19646 @section unsharp
19647
19648 Sharpen or blur the input video.
19649
19650 It accepts the following parameters:
19651
19652 @table @option
19653 @item luma_msize_x, lx
19654 Set the luma matrix horizontal size. It must be an odd integer between
19655 3 and 23. The default value is 5.
19656
19657 @item luma_msize_y, ly
19658 Set the luma matrix vertical size. It must be an odd integer between 3
19659 and 23. The default value is 5.
19660
19661 @item luma_amount, la
19662 Set the luma effect strength. It must be a floating point number, reasonable
19663 values lay between -1.5 and 1.5.
19664
19665 Negative values will blur the input video, while positive values will
19666 sharpen it, a value of zero will disable the effect.
19667
19668 Default value is 1.0.
19669
19670 @item chroma_msize_x, cx
19671 Set the chroma matrix horizontal size. It must be an odd integer
19672 between 3 and 23. The default value is 5.
19673
19674 @item chroma_msize_y, cy
19675 Set the chroma matrix vertical size. It must be an odd integer
19676 between 3 and 23. The default value is 5.
19677
19678 @item chroma_amount, ca
19679 Set the chroma effect strength. It must be a floating point number, reasonable
19680 values lay between -1.5 and 1.5.
19681
19682 Negative values will blur the input video, while positive values will
19683 sharpen it, a value of zero will disable the effect.
19684
19685 Default value is 0.0.
19686
19687 @end table
19688
19689 All parameters are optional and default to the equivalent of the
19690 string '5:5:1.0:5:5:0.0'.
19691
19692 @subsection Examples
19693
19694 @itemize
19695 @item
19696 Apply strong luma sharpen effect:
19697 @example
19698 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
19699 @end example
19700
19701 @item
19702 Apply a strong blur of both luma and chroma parameters:
19703 @example
19704 unsharp=7:7:-2:7:7:-2
19705 @end example
19706 @end itemize
19707
19708 @anchor{untile}
19709 @section untile
19710
19711 Decompose a video made of tiled images into the individual images.
19712
19713 The frame rate of the output video is the frame rate of the input video
19714 multiplied by the number of tiles.
19715
19716 This filter does the reverse of @ref{tile}.
19717
19718 The filter accepts the following options:
19719
19720 @table @option
19721
19722 @item layout
19723 Set the grid size (i.e. the number of lines and columns). For the syntax of
19724 this option, check the
19725 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19726 @end table
19727
19728 @subsection Examples
19729
19730 @itemize
19731 @item
19732 Produce a 1-second video from a still image file made of 25 frames stacked
19733 vertically, like an analogic film reel:
19734 @example
19735 ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
19736 @end example
19737 @end itemize
19738
19739 @section uspp
19740
19741 Apply ultra slow/simple postprocessing filter that compresses and decompresses
19742 the image at several (or - in the case of @option{quality} level @code{8} - all)
19743 shifts and average the results.
19744
19745 The way this differs from the behavior of spp is that uspp actually encodes &
19746 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
19747 DCT similar to MJPEG.
19748
19749 The filter accepts the following options:
19750
19751 @table @option
19752 @item quality
19753 Set quality. This option defines the number of levels for averaging. It accepts
19754 an integer in the range 0-8. If set to @code{0}, the filter will have no
19755 effect. A value of @code{8} means the higher quality. For each increment of
19756 that value the speed drops by a factor of approximately 2.  Default value is
19757 @code{3}.
19758
19759 @item qp
19760 Force a constant quantization parameter. If not set, the filter will use the QP
19761 from the video stream (if available).
19762 @end table
19763
19764 @section v360
19765
19766 Convert 360 videos between various formats.
19767
19768 The filter accepts the following options:
19769
19770 @table @option
19771
19772 @item input
19773 @item output
19774 Set format of the input/output video.
19775
19776 Available formats:
19777
19778 @table @samp
19779
19780 @item e
19781 @item equirect
19782 Equirectangular projection.
19783
19784 @item c3x2
19785 @item c6x1
19786 @item c1x6
19787 Cubemap with 3x2/6x1/1x6 layout.
19788
19789 Format specific options:
19790
19791 @table @option
19792 @item in_pad
19793 @item out_pad
19794 Set padding proportion for the input/output cubemap. Values in decimals.
19795
19796 Example values:
19797 @table @samp
19798 @item 0
19799 No padding.
19800 @item 0.01
19801 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)
19802 @end table
19803
19804 Default value is @b{@samp{0}}.
19805 Maximum value is @b{@samp{0.1}}.
19806
19807 @item fin_pad
19808 @item fout_pad
19809 Set fixed padding for the input/output cubemap. Values in pixels.
19810
19811 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
19812
19813 @item in_forder
19814 @item out_forder
19815 Set order of faces for the input/output cubemap. Choose one direction for each position.
19816
19817 Designation of directions:
19818 @table @samp
19819 @item r
19820 right
19821 @item l
19822 left
19823 @item u
19824 up
19825 @item d
19826 down
19827 @item f
19828 forward
19829 @item b
19830 back
19831 @end table
19832
19833 Default value is @b{@samp{rludfb}}.
19834
19835 @item in_frot
19836 @item out_frot
19837 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
19838
19839 Designation of angles:
19840 @table @samp
19841 @item 0
19842 0 degrees clockwise
19843 @item 1
19844 90 degrees clockwise
19845 @item 2
19846 180 degrees clockwise
19847 @item 3
19848 270 degrees clockwise
19849 @end table
19850
19851 Default value is @b{@samp{000000}}.
19852 @end table
19853
19854 @item eac
19855 Equi-Angular Cubemap.
19856
19857 @item flat
19858 @item gnomonic
19859 @item rectilinear
19860 Regular video.
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 dfisheye
19880 Dual fisheye.
19881
19882 Format specific options:
19883 @table @option
19884 @item h_fov
19885 @item v_fov
19886 @item d_fov
19887 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19888
19889 If diagonal field of view is set it overrides horizontal and vertical field of view.
19890
19891 @item ih_fov
19892 @item iv_fov
19893 @item id_fov
19894 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19895
19896 If diagonal field of view is set it overrides horizontal and vertical field of view.
19897 @end table
19898
19899 @item barrel
19900 @item fb
19901 @item barrelsplit
19902 Facebook's 360 formats.
19903
19904 @item sg
19905 Stereographic format.
19906
19907 Format specific options:
19908 @table @option
19909 @item h_fov
19910 @item v_fov
19911 @item d_fov
19912 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19913
19914 If diagonal field of view is set it overrides horizontal and vertical field of view.
19915
19916 @item ih_fov
19917 @item iv_fov
19918 @item id_fov
19919 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19920
19921 If diagonal field of view is set it overrides horizontal and vertical field of view.
19922 @end table
19923
19924 @item mercator
19925 Mercator format.
19926
19927 @item ball
19928 Ball format, gives significant distortion toward the back.
19929
19930 @item hammer
19931 Hammer-Aitoff map projection format.
19932
19933 @item sinusoidal
19934 Sinusoidal map projection format.
19935
19936 @item fisheye
19937 Fisheye projection.
19938
19939 Format specific options:
19940 @table @option
19941 @item h_fov
19942 @item v_fov
19943 @item d_fov
19944 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19945
19946 If diagonal field of view is set it overrides horizontal and vertical field of view.
19947
19948 @item ih_fov
19949 @item iv_fov
19950 @item id_fov
19951 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19952
19953 If diagonal field of view is set it overrides horizontal and vertical field of view.
19954 @end table
19955
19956 @item pannini
19957 Pannini projection.
19958
19959 Format specific options:
19960 @table @option
19961 @item h_fov
19962 Set output pannini parameter.
19963
19964 @item ih_fov
19965 Set input pannini parameter.
19966 @end table
19967
19968 @item cylindrical
19969 Cylindrical projection.
19970
19971 Format specific options:
19972 @table @option
19973 @item h_fov
19974 @item v_fov
19975 @item d_fov
19976 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19977
19978 If diagonal field of view is set it overrides horizontal and vertical field of view.
19979
19980 @item ih_fov
19981 @item iv_fov
19982 @item id_fov
19983 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19984
19985 If diagonal field of view is set it overrides horizontal and vertical field of view.
19986 @end table
19987
19988 @item perspective
19989 Perspective projection. @i{(output only)}
19990
19991 Format specific options:
19992 @table @option
19993 @item v_fov
19994 Set perspective parameter.
19995 @end table
19996
19997 @item tetrahedron
19998 Tetrahedron projection.
19999
20000 @item tsp
20001 Truncated square pyramid projection.
20002
20003 @item he
20004 @item hequirect
20005 Half equirectangular projection.
20006
20007 @item equisolid
20008 Equisolid 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 og
20028 Orthographic format.
20029
20030 Format specific options:
20031 @table @option
20032 @item h_fov
20033 @item v_fov
20034 @item d_fov
20035 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20036
20037 If diagonal field of view is set it overrides horizontal and vertical field of view.
20038
20039 @item ih_fov
20040 @item iv_fov
20041 @item id_fov
20042 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20043
20044 If diagonal field of view is set it overrides horizontal and vertical field of view.
20045 @end table
20046
20047 @item octahedron
20048 Octahedron projection.
20049 @end table
20050
20051 @item interp
20052 Set interpolation method.@*
20053 @i{Note: more complex interpolation methods require much more memory to run.}
20054
20055 Available methods:
20056
20057 @table @samp
20058 @item near
20059 @item nearest
20060 Nearest neighbour.
20061 @item line
20062 @item linear
20063 Bilinear interpolation.
20064 @item lagrange9
20065 Lagrange9 interpolation.
20066 @item cube
20067 @item cubic
20068 Bicubic interpolation.
20069 @item lanc
20070 @item lanczos
20071 Lanczos interpolation.
20072 @item sp16
20073 @item spline16
20074 Spline16 interpolation.
20075 @item gauss
20076 @item gaussian
20077 Gaussian interpolation.
20078 @item mitchell
20079 Mitchell interpolation.
20080 @end table
20081
20082 Default value is @b{@samp{line}}.
20083
20084 @item w
20085 @item h
20086 Set the output video resolution.
20087
20088 Default resolution depends on formats.
20089
20090 @item in_stereo
20091 @item out_stereo
20092 Set the input/output stereo format.
20093
20094 @table @samp
20095 @item 2d
20096 2D mono
20097 @item sbs
20098 Side by side
20099 @item tb
20100 Top bottom
20101 @end table
20102
20103 Default value is @b{@samp{2d}} for input and output format.
20104
20105 @item yaw
20106 @item pitch
20107 @item roll
20108 Set rotation for the output video. Values in degrees.
20109
20110 @item rorder
20111 Set rotation order for the output video. Choose one item for each position.
20112
20113 @table @samp
20114 @item y, Y
20115 yaw
20116 @item p, P
20117 pitch
20118 @item r, R
20119 roll
20120 @end table
20121
20122 Default value is @b{@samp{ypr}}.
20123
20124 @item h_flip
20125 @item v_flip
20126 @item d_flip
20127 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
20128
20129 @item ih_flip
20130 @item iv_flip
20131 Set if input video is flipped horizontally/vertically. Boolean values.
20132
20133 @item in_trans
20134 Set if input video is transposed. Boolean value, by default disabled.
20135
20136 @item out_trans
20137 Set if output video needs to be transposed. Boolean value, by default disabled.
20138
20139 @item alpha_mask
20140 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
20141 @end table
20142
20143 @subsection Examples
20144
20145 @itemize
20146 @item
20147 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
20148 @example
20149 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
20150 @end example
20151 @item
20152 Extract back view of Equi-Angular Cubemap:
20153 @example
20154 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
20155 @end example
20156 @item
20157 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
20158 @example
20159 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
20160 @end example
20161 @end itemize
20162
20163 @subsection Commands
20164
20165 This filter supports subset of above options as @ref{commands}.
20166
20167 @section vaguedenoiser
20168
20169 Apply a wavelet based denoiser.
20170
20171 It transforms each frame from the video input into the wavelet domain,
20172 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
20173 the obtained coefficients. It does an inverse wavelet transform after.
20174 Due to wavelet properties, it should give a nice smoothed result, and
20175 reduced noise, without blurring picture features.
20176
20177 This filter accepts the following options:
20178
20179 @table @option
20180 @item threshold
20181 The filtering strength. The higher, the more filtered the video will be.
20182 Hard thresholding can use a higher threshold than soft thresholding
20183 before the video looks overfiltered. Default value is 2.
20184
20185 @item method
20186 The filtering method the filter will use.
20187
20188 It accepts the following values:
20189 @table @samp
20190 @item hard
20191 All values under the threshold will be zeroed.
20192
20193 @item soft
20194 All values under the threshold will be zeroed. All values above will be
20195 reduced by the threshold.
20196
20197 @item garrote
20198 Scales or nullifies coefficients - intermediary between (more) soft and
20199 (less) hard thresholding.
20200 @end table
20201
20202 Default is garrote.
20203
20204 @item nsteps
20205 Number of times, the wavelet will decompose the picture. Picture can't
20206 be decomposed beyond a particular point (typically, 8 for a 640x480
20207 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
20208
20209 @item percent
20210 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
20211
20212 @item planes
20213 A list of the planes to process. By default all planes are processed.
20214
20215 @item type
20216 The threshold type the filter will use.
20217
20218 It accepts the following values:
20219 @table @samp
20220 @item universal
20221 Threshold used is same for all decompositions.
20222
20223 @item bayes
20224 Threshold used depends also on each decomposition coefficients.
20225 @end table
20226
20227 Default is universal.
20228 @end table
20229
20230 @section vectorscope
20231
20232 Display 2 color component values in the two dimensional graph (which is called
20233 a vectorscope).
20234
20235 This filter accepts the following options:
20236
20237 @table @option
20238 @item mode, m
20239 Set vectorscope mode.
20240
20241 It accepts the following values:
20242 @table @samp
20243 @item gray
20244 @item tint
20245 Gray values are displayed on graph, higher brightness means more pixels have
20246 same component color value on location in graph. This is the default mode.
20247
20248 @item color
20249 Gray values are displayed on graph. Surrounding pixels values which are not
20250 present in video frame are drawn in gradient of 2 color components which are
20251 set by option @code{x} and @code{y}. The 3rd color component is static.
20252
20253 @item color2
20254 Actual color components values present in video frame are displayed on graph.
20255
20256 @item color3
20257 Similar as color2 but higher frequency of same values @code{x} and @code{y}
20258 on graph increases value of another color component, which is luminance by
20259 default values of @code{x} and @code{y}.
20260
20261 @item color4
20262 Actual colors present in video frame are displayed on graph. If two different
20263 colors map to same position on graph then color with higher value of component
20264 not present in graph is picked.
20265
20266 @item color5
20267 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
20268 component picked from radial gradient.
20269 @end table
20270
20271 @item x
20272 Set which color component will be represented on X-axis. Default is @code{1}.
20273
20274 @item y
20275 Set which color component will be represented on Y-axis. Default is @code{2}.
20276
20277 @item intensity, i
20278 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
20279 of color component which represents frequency of (X, Y) location in graph.
20280
20281 @item envelope, e
20282 @table @samp
20283 @item none
20284 No envelope, this is default.
20285
20286 @item instant
20287 Instant envelope, even darkest single pixel will be clearly highlighted.
20288
20289 @item peak
20290 Hold maximum and minimum values presented in graph over time. This way you
20291 can still spot out of range values without constantly looking at vectorscope.
20292
20293 @item peak+instant
20294 Peak and instant envelope combined together.
20295 @end table
20296
20297 @item graticule, g
20298 Set what kind of graticule to draw.
20299 @table @samp
20300 @item none
20301 @item green
20302 @item color
20303 @item invert
20304 @end table
20305
20306 @item opacity, o
20307 Set graticule opacity.
20308
20309 @item flags, f
20310 Set graticule flags.
20311
20312 @table @samp
20313 @item white
20314 Draw graticule for white point.
20315
20316 @item black
20317 Draw graticule for black point.
20318
20319 @item name
20320 Draw color points short names.
20321 @end table
20322
20323 @item bgopacity, b
20324 Set background opacity.
20325
20326 @item lthreshold, l
20327 Set low threshold for color component not represented on X or Y axis.
20328 Values lower than this value will be ignored. Default is 0.
20329 Note this value is multiplied with actual max possible value one pixel component
20330 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
20331 is 0.1 * 255 = 25.
20332
20333 @item hthreshold, h
20334 Set high threshold for color component not represented on X or Y axis.
20335 Values higher than this value will be ignored. Default is 1.
20336 Note this value is multiplied with actual max possible value one pixel component
20337 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
20338 is 0.9 * 255 = 230.
20339
20340 @item colorspace, c
20341 Set what kind of colorspace to use when drawing graticule.
20342 @table @samp
20343 @item auto
20344 @item 601
20345 @item 709
20346 @end table
20347 Default is auto.
20348
20349 @item tint0, t0
20350 @item tint1, t1
20351 Set color tint for gray/tint vectorscope mode. By default both options are zero.
20352 This means no tint, and output will remain gray.
20353 @end table
20354
20355 @anchor{vidstabdetect}
20356 @section vidstabdetect
20357
20358 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
20359 @ref{vidstabtransform} for pass 2.
20360
20361 This filter generates a file with relative translation and rotation
20362 transform information about subsequent frames, which is then used by
20363 the @ref{vidstabtransform} filter.
20364
20365 To enable compilation of this filter you need to configure FFmpeg with
20366 @code{--enable-libvidstab}.
20367
20368 This filter accepts the following options:
20369
20370 @table @option
20371 @item result
20372 Set the path to the file used to write the transforms information.
20373 Default value is @file{transforms.trf}.
20374
20375 @item shakiness
20376 Set how shaky the video is and how quick the camera is. It accepts an
20377 integer in the range 1-10, a value of 1 means little shakiness, a
20378 value of 10 means strong shakiness. Default value is 5.
20379
20380 @item accuracy
20381 Set the accuracy of the detection process. It must be a value in the
20382 range 1-15. A value of 1 means low accuracy, a value of 15 means high
20383 accuracy. Default value is 15.
20384
20385 @item stepsize
20386 Set stepsize of the search process. The region around minimum is
20387 scanned with 1 pixel resolution. Default value is 6.
20388
20389 @item mincontrast
20390 Set minimum contrast. Below this value a local measurement field is
20391 discarded. Must be a floating point value in the range 0-1. Default
20392 value is 0.3.
20393
20394 @item tripod
20395 Set reference frame number for tripod mode.
20396
20397 If enabled, the motion of the frames is compared to a reference frame
20398 in the filtered stream, identified by the specified number. The idea
20399 is to compensate all movements in a more-or-less static scene and keep
20400 the camera view absolutely still.
20401
20402 If set to 0, it is disabled. The frames are counted starting from 1.
20403
20404 @item show
20405 Show fields and transforms in the resulting frames. It accepts an
20406 integer in the range 0-2. Default value is 0, which disables any
20407 visualization.
20408 @end table
20409
20410 @subsection Examples
20411
20412 @itemize
20413 @item
20414 Use default values:
20415 @example
20416 vidstabdetect
20417 @end example
20418
20419 @item
20420 Analyze strongly shaky movie and put the results in file
20421 @file{mytransforms.trf}:
20422 @example
20423 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
20424 @end example
20425
20426 @item
20427 Visualize the result of internal transformations in the resulting
20428 video:
20429 @example
20430 vidstabdetect=show=1
20431 @end example
20432
20433 @item
20434 Analyze a video with medium shakiness using @command{ffmpeg}:
20435 @example
20436 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
20437 @end example
20438 @end itemize
20439
20440 @anchor{vidstabtransform}
20441 @section vidstabtransform
20442
20443 Video stabilization/deshaking: pass 2 of 2,
20444 see @ref{vidstabdetect} for pass 1.
20445
20446 Read a file with transform information for each frame and
20447 apply/compensate them. Together with the @ref{vidstabdetect}
20448 filter this can be used to deshake videos. See also
20449 @url{http://public.hronopik.de/vid.stab}. It is important to also use
20450 the @ref{unsharp} filter, see below.
20451
20452 To enable compilation of this filter you need to configure FFmpeg with
20453 @code{--enable-libvidstab}.
20454
20455 @subsection Options
20456
20457 @table @option
20458 @item input
20459 Set path to the file used to read the transforms. Default value is
20460 @file{transforms.trf}.
20461
20462 @item smoothing
20463 Set the number of frames (value*2 + 1) used for lowpass filtering the
20464 camera movements. Default value is 10.
20465
20466 For example a number of 10 means that 21 frames are used (10 in the
20467 past and 10 in the future) to smoothen the motion in the video. A
20468 larger value leads to a smoother video, but limits the acceleration of
20469 the camera (pan/tilt movements). 0 is a special case where a static
20470 camera is simulated.
20471
20472 @item optalgo
20473 Set the camera path optimization algorithm.
20474
20475 Accepted values are:
20476 @table @samp
20477 @item gauss
20478 gaussian kernel low-pass filter on camera motion (default)
20479 @item avg
20480 averaging on transformations
20481 @end table
20482
20483 @item maxshift
20484 Set maximal number of pixels to translate frames. Default value is -1,
20485 meaning no limit.
20486
20487 @item maxangle
20488 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
20489 value is -1, meaning no limit.
20490
20491 @item crop
20492 Specify how to deal with borders that may be visible due to movement
20493 compensation.
20494
20495 Available values are:
20496 @table @samp
20497 @item keep
20498 keep image information from previous frame (default)
20499 @item black
20500 fill the border black
20501 @end table
20502
20503 @item invert
20504 Invert transforms if set to 1. Default value is 0.
20505
20506 @item relative
20507 Consider transforms as relative to previous frame if set to 1,
20508 absolute if set to 0. Default value is 0.
20509
20510 @item zoom
20511 Set percentage to zoom. A positive value will result in a zoom-in
20512 effect, a negative value in a zoom-out effect. Default value is 0 (no
20513 zoom).
20514
20515 @item optzoom
20516 Set optimal zooming to avoid borders.
20517
20518 Accepted values are:
20519 @table @samp
20520 @item 0
20521 disabled
20522 @item 1
20523 optimal static zoom value is determined (only very strong movements
20524 will lead to visible borders) (default)
20525 @item 2
20526 optimal adaptive zoom value is determined (no borders will be
20527 visible), see @option{zoomspeed}
20528 @end table
20529
20530 Note that the value given at zoom is added to the one calculated here.
20531
20532 @item zoomspeed
20533 Set percent to zoom maximally each frame (enabled when
20534 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
20535 0.25.
20536
20537 @item interpol
20538 Specify type of interpolation.
20539
20540 Available values are:
20541 @table @samp
20542 @item no
20543 no interpolation
20544 @item linear
20545 linear only horizontal
20546 @item bilinear
20547 linear in both directions (default)
20548 @item bicubic
20549 cubic in both directions (slow)
20550 @end table
20551
20552 @item tripod
20553 Enable virtual tripod mode if set to 1, which is equivalent to
20554 @code{relative=0:smoothing=0}. Default value is 0.
20555
20556 Use also @code{tripod} option of @ref{vidstabdetect}.
20557
20558 @item debug
20559 Increase log verbosity if set to 1. Also the detected global motions
20560 are written to the temporary file @file{global_motions.trf}. Default
20561 value is 0.
20562 @end table
20563
20564 @subsection Examples
20565
20566 @itemize
20567 @item
20568 Use @command{ffmpeg} for a typical stabilization with default values:
20569 @example
20570 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
20571 @end example
20572
20573 Note the use of the @ref{unsharp} filter which is always recommended.
20574
20575 @item
20576 Zoom in a bit more and load transform data from a given file:
20577 @example
20578 vidstabtransform=zoom=5:input="mytransforms.trf"
20579 @end example
20580
20581 @item
20582 Smoothen the video even more:
20583 @example
20584 vidstabtransform=smoothing=30
20585 @end example
20586 @end itemize
20587
20588 @section vflip
20589
20590 Flip the input video vertically.
20591
20592 For example, to vertically flip a video with @command{ffmpeg}:
20593 @example
20594 ffmpeg -i in.avi -vf "vflip" out.avi
20595 @end example
20596
20597 @section vfrdet
20598
20599 Detect variable frame rate video.
20600
20601 This filter tries to detect if the input is variable or constant frame rate.
20602
20603 At end it will output number of frames detected as having variable delta pts,
20604 and ones with constant delta pts.
20605 If there was frames with variable delta, than it will also show min, max and
20606 average delta encountered.
20607
20608 @section vibrance
20609
20610 Boost or alter saturation.
20611
20612 The filter accepts the following options:
20613 @table @option
20614 @item intensity
20615 Set strength of boost if positive value or strength of alter if negative value.
20616 Default is 0. Allowed range is from -2 to 2.
20617
20618 @item rbal
20619 Set the red balance. Default is 1. Allowed range is from -10 to 10.
20620
20621 @item gbal
20622 Set the green balance. Default is 1. Allowed range is from -10 to 10.
20623
20624 @item bbal
20625 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
20626
20627 @item rlum
20628 Set the red luma coefficient.
20629
20630 @item glum
20631 Set the green luma coefficient.
20632
20633 @item blum
20634 Set the blue luma coefficient.
20635
20636 @item alternate
20637 If @code{intensity} is negative and this is set to 1, colors will change,
20638 otherwise colors will be less saturated, more towards gray.
20639 @end table
20640
20641 @subsection Commands
20642
20643 This filter supports the all above options as @ref{commands}.
20644
20645 @anchor{vignette}
20646 @section vignette
20647
20648 Make or reverse a natural vignetting effect.
20649
20650 The filter accepts the following options:
20651
20652 @table @option
20653 @item angle, a
20654 Set lens angle expression as a number of radians.
20655
20656 The value is clipped in the @code{[0,PI/2]} range.
20657
20658 Default value: @code{"PI/5"}
20659
20660 @item x0
20661 @item y0
20662 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
20663 by default.
20664
20665 @item mode
20666 Set forward/backward mode.
20667
20668 Available modes are:
20669 @table @samp
20670 @item forward
20671 The larger the distance from the central point, the darker the image becomes.
20672
20673 @item backward
20674 The larger the distance from the central point, the brighter the image becomes.
20675 This can be used to reverse a vignette effect, though there is no automatic
20676 detection to extract the lens @option{angle} and other settings (yet). It can
20677 also be used to create a burning effect.
20678 @end table
20679
20680 Default value is @samp{forward}.
20681
20682 @item eval
20683 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
20684
20685 It accepts the following values:
20686 @table @samp
20687 @item init
20688 Evaluate expressions only once during the filter initialization.
20689
20690 @item frame
20691 Evaluate expressions for each incoming frame. This is way slower than the
20692 @samp{init} mode since it requires all the scalers to be re-computed, but it
20693 allows advanced dynamic expressions.
20694 @end table
20695
20696 Default value is @samp{init}.
20697
20698 @item dither
20699 Set dithering to reduce the circular banding effects. Default is @code{1}
20700 (enabled).
20701
20702 @item aspect
20703 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
20704 Setting this value to the SAR of the input will make a rectangular vignetting
20705 following the dimensions of the video.
20706
20707 Default is @code{1/1}.
20708 @end table
20709
20710 @subsection Expressions
20711
20712 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
20713 following parameters.
20714
20715 @table @option
20716 @item w
20717 @item h
20718 input width and height
20719
20720 @item n
20721 the number of input frame, starting from 0
20722
20723 @item pts
20724 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
20725 @var{TB} units, NAN if undefined
20726
20727 @item r
20728 frame rate of the input video, NAN if the input frame rate is unknown
20729
20730 @item t
20731 the PTS (Presentation TimeStamp) of the filtered video frame,
20732 expressed in seconds, NAN if undefined
20733
20734 @item tb
20735 time base of the input video
20736 @end table
20737
20738
20739 @subsection Examples
20740
20741 @itemize
20742 @item
20743 Apply simple strong vignetting effect:
20744 @example
20745 vignette=PI/4
20746 @end example
20747
20748 @item
20749 Make a flickering vignetting:
20750 @example
20751 vignette='PI/4+random(1)*PI/50':eval=frame
20752 @end example
20753
20754 @end itemize
20755
20756 @section vmafmotion
20757
20758 Obtain the average VMAF motion score of a video.
20759 It is one of the component metrics of VMAF.
20760
20761 The obtained average motion score is printed through the logging system.
20762
20763 The filter accepts the following options:
20764
20765 @table @option
20766 @item stats_file
20767 If specified, the filter will use the named file to save the motion score of
20768 each frame with respect to the previous frame.
20769 When filename equals "-" the data is sent to standard output.
20770 @end table
20771
20772 Example:
20773 @example
20774 ffmpeg -i ref.mpg -vf vmafmotion -f null -
20775 @end example
20776
20777 @section vstack
20778 Stack input videos vertically.
20779
20780 All streams must be of same pixel format and of same width.
20781
20782 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
20783 to create same output.
20784
20785 The filter accepts the following options:
20786
20787 @table @option
20788 @item inputs
20789 Set number of input streams. Default is 2.
20790
20791 @item shortest
20792 If set to 1, force the output to terminate when the shortest input
20793 terminates. Default value is 0.
20794 @end table
20795
20796 @section w3fdif
20797
20798 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
20799 Deinterlacing Filter").
20800
20801 Based on the process described by Martin Weston for BBC R&D, and
20802 implemented based on the de-interlace algorithm written by Jim
20803 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
20804 uses filter coefficients calculated by BBC R&D.
20805
20806 This filter uses field-dominance information in frame to decide which
20807 of each pair of fields to place first in the output.
20808 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
20809
20810 There are two sets of filter coefficients, so called "simple"
20811 and "complex". Which set of filter coefficients is used can
20812 be set by passing an optional parameter:
20813
20814 @table @option
20815 @item filter
20816 Set the interlacing filter coefficients. Accepts one of the following values:
20817
20818 @table @samp
20819 @item simple
20820 Simple filter coefficient set.
20821 @item complex
20822 More-complex filter coefficient set.
20823 @end table
20824 Default value is @samp{complex}.
20825
20826 @item deint
20827 Specify which frames to deinterlace. Accepts one of the following values:
20828
20829 @table @samp
20830 @item all
20831 Deinterlace all frames,
20832 @item interlaced
20833 Only deinterlace frames marked as interlaced.
20834 @end table
20835
20836 Default value is @samp{all}.
20837 @end table
20838
20839 @section waveform
20840 Video waveform monitor.
20841
20842 The waveform monitor plots color component intensity. By default luminance
20843 only. Each column of the waveform corresponds to a column of pixels in the
20844 source video.
20845
20846 It accepts the following options:
20847
20848 @table @option
20849 @item mode, m
20850 Can be either @code{row}, or @code{column}. Default is @code{column}.
20851 In row mode, the graph on the left side represents color component value 0 and
20852 the right side represents value = 255. In column mode, the top side represents
20853 color component value = 0 and bottom side represents value = 255.
20854
20855 @item intensity, i
20856 Set intensity. Smaller values are useful to find out how many values of the same
20857 luminance are distributed across input rows/columns.
20858 Default value is @code{0.04}. Allowed range is [0, 1].
20859
20860 @item mirror, r
20861 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
20862 In mirrored mode, higher values will be represented on the left
20863 side for @code{row} mode and at the top for @code{column} mode. Default is
20864 @code{1} (mirrored).
20865
20866 @item display, d
20867 Set display mode.
20868 It accepts the following values:
20869 @table @samp
20870 @item overlay
20871 Presents information identical to that in the @code{parade}, except
20872 that the graphs representing color components are superimposed directly
20873 over one another.
20874
20875 This display mode makes it easier to spot relative differences or similarities
20876 in overlapping areas of the color components that are supposed to be identical,
20877 such as neutral whites, grays, or blacks.
20878
20879 @item stack
20880 Display separate graph for the color components side by side in
20881 @code{row} mode or one below the other in @code{column} mode.
20882
20883 @item parade
20884 Display separate graph for the color components side by side in
20885 @code{column} mode or one below the other in @code{row} mode.
20886
20887 Using this display mode makes it easy to spot color casts in the highlights
20888 and shadows of an image, by comparing the contours of the top and the bottom
20889 graphs of each waveform. Since whites, grays, and blacks are characterized
20890 by exactly equal amounts of red, green, and blue, neutral areas of the picture
20891 should display three waveforms of roughly equal width/height. If not, the
20892 correction is easy to perform by making level adjustments the three waveforms.
20893 @end table
20894 Default is @code{stack}.
20895
20896 @item components, c
20897 Set which color components to display. Default is 1, which means only luminance
20898 or red color component if input is in RGB colorspace. If is set for example to
20899 7 it will display all 3 (if) available color components.
20900
20901 @item envelope, e
20902 @table @samp
20903 @item none
20904 No envelope, this is default.
20905
20906 @item instant
20907 Instant envelope, minimum and maximum values presented in graph will be easily
20908 visible even with small @code{step} value.
20909
20910 @item peak
20911 Hold minimum and maximum values presented in graph across time. This way you
20912 can still spot out of range values without constantly looking at waveforms.
20913
20914 @item peak+instant
20915 Peak and instant envelope combined together.
20916 @end table
20917
20918 @item filter, f
20919 @table @samp
20920 @item lowpass
20921 No filtering, this is default.
20922
20923 @item flat
20924 Luma and chroma combined together.
20925
20926 @item aflat
20927 Similar as above, but shows difference between blue and red chroma.
20928
20929 @item xflat
20930 Similar as above, but use different colors.
20931
20932 @item yflat
20933 Similar as above, but again with different colors.
20934
20935 @item chroma
20936 Displays only chroma.
20937
20938 @item color
20939 Displays actual color value on waveform.
20940
20941 @item acolor
20942 Similar as above, but with luma showing frequency of chroma values.
20943 @end table
20944
20945 @item graticule, g
20946 Set which graticule to display.
20947
20948 @table @samp
20949 @item none
20950 Do not display graticule.
20951
20952 @item green
20953 Display green graticule showing legal broadcast ranges.
20954
20955 @item orange
20956 Display orange graticule showing legal broadcast ranges.
20957
20958 @item invert
20959 Display invert graticule showing legal broadcast ranges.
20960 @end table
20961
20962 @item opacity, o
20963 Set graticule opacity.
20964
20965 @item flags, fl
20966 Set graticule flags.
20967
20968 @table @samp
20969 @item numbers
20970 Draw numbers above lines. By default enabled.
20971
20972 @item dots
20973 Draw dots instead of lines.
20974 @end table
20975
20976 @item scale, s
20977 Set scale used for displaying graticule.
20978
20979 @table @samp
20980 @item digital
20981 @item millivolts
20982 @item ire
20983 @end table
20984 Default is digital.
20985
20986 @item bgopacity, b
20987 Set background opacity.
20988
20989 @item tint0, t0
20990 @item tint1, t1
20991 Set tint for output.
20992 Only used with lowpass filter and when display is not overlay and input
20993 pixel formats are not RGB.
20994 @end table
20995
20996 @section weave, doubleweave
20997
20998 The @code{weave} takes a field-based video input and join
20999 each two sequential fields into single frame, producing a new double
21000 height clip with half the frame rate and half the frame count.
21001
21002 The @code{doubleweave} works same as @code{weave} but without
21003 halving frame rate and frame count.
21004
21005 It accepts the following option:
21006
21007 @table @option
21008 @item first_field
21009 Set first field. Available values are:
21010
21011 @table @samp
21012 @item top, t
21013 Set the frame as top-field-first.
21014
21015 @item bottom, b
21016 Set the frame as bottom-field-first.
21017 @end table
21018 @end table
21019
21020 @subsection Examples
21021
21022 @itemize
21023 @item
21024 Interlace video using @ref{select} and @ref{separatefields} filter:
21025 @example
21026 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
21027 @end example
21028 @end itemize
21029
21030 @section xbr
21031 Apply the xBR high-quality magnification filter which is designed for pixel
21032 art. It follows a set of edge-detection rules, see
21033 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
21034
21035 It accepts the following option:
21036
21037 @table @option
21038 @item n
21039 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
21040 @code{3xBR} and @code{4} for @code{4xBR}.
21041 Default is @code{3}.
21042 @end table
21043
21044 @section xfade
21045
21046 Apply cross fade from one input video stream to another input video stream.
21047 The cross fade is applied for specified duration.
21048
21049 The filter accepts the following options:
21050
21051 @table @option
21052 @item transition
21053 Set one of available transition effects:
21054
21055 @table @samp
21056 @item custom
21057 @item fade
21058 @item wipeleft
21059 @item wiperight
21060 @item wipeup
21061 @item wipedown
21062 @item slideleft
21063 @item slideright
21064 @item slideup
21065 @item slidedown
21066 @item circlecrop
21067 @item rectcrop
21068 @item distance
21069 @item fadeblack
21070 @item fadewhite
21071 @item radial
21072 @item smoothleft
21073 @item smoothright
21074 @item smoothup
21075 @item smoothdown
21076 @item circleopen
21077 @item circleclose
21078 @item vertopen
21079 @item vertclose
21080 @item horzopen
21081 @item horzclose
21082 @item dissolve
21083 @item pixelize
21084 @item diagtl
21085 @item diagtr
21086 @item diagbl
21087 @item diagbr
21088 @item hlslice
21089 @item hrslice
21090 @item vuslice
21091 @item vdslice
21092 @item hblur
21093 @item fadegrays
21094 @item wipetl
21095 @item wipetr
21096 @item wipebl
21097 @item wipebr
21098 @item squeezeh
21099 @item squeezev
21100 @end table
21101 Default transition effect is fade.
21102
21103 @item duration
21104 Set cross fade duration in seconds.
21105 Default duration is 1 second.
21106
21107 @item offset
21108 Set cross fade start relative to first input stream in seconds.
21109 Default offset is 0.
21110
21111 @item expr
21112 Set expression for custom transition effect.
21113
21114 The expressions can use the following variables and functions:
21115
21116 @table @option
21117 @item X
21118 @item Y
21119 The coordinates of the current sample.
21120
21121 @item W
21122 @item H
21123 The width and height of the image.
21124
21125 @item P
21126 Progress of transition effect.
21127
21128 @item PLANE
21129 Currently processed plane.
21130
21131 @item A
21132 Return value of first input at current location and plane.
21133
21134 @item B
21135 Return value of second input at current location and plane.
21136
21137 @item a0(x, y)
21138 @item a1(x, y)
21139 @item a2(x, y)
21140 @item a3(x, y)
21141 Return the value of the pixel at location (@var{x},@var{y}) of the
21142 first/second/third/fourth component of first input.
21143
21144 @item b0(x, y)
21145 @item b1(x, y)
21146 @item b2(x, y)
21147 @item b3(x, y)
21148 Return the value of the pixel at location (@var{x},@var{y}) of the
21149 first/second/third/fourth component of second input.
21150 @end table
21151 @end table
21152
21153 @subsection Examples
21154
21155 @itemize
21156 @item
21157 Cross fade from one input video to another input video, with fade transition and duration of transition
21158 of 2 seconds starting at offset of 5 seconds:
21159 @example
21160 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
21161 @end example
21162 @end itemize
21163
21164 @section xmedian
21165 Pick median pixels from several input videos.
21166
21167 The filter accepts the following options:
21168
21169 @table @option
21170 @item inputs
21171 Set number of inputs.
21172 Default is 3. Allowed range is from 3 to 255.
21173 If number of inputs is even number, than result will be mean value between two median values.
21174
21175 @item planes
21176 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
21177
21178 @item percentile
21179 Set median percentile. Default value is @code{0.5}.
21180 Default value of @code{0.5} will pick always median values, while @code{0} will pick
21181 minimum values, and @code{1} maximum values.
21182 @end table
21183
21184 @section xstack
21185 Stack video inputs into custom layout.
21186
21187 All streams must be of same pixel format.
21188
21189 The filter accepts the following options:
21190
21191 @table @option
21192 @item inputs
21193 Set number of input streams. Default is 2.
21194
21195 @item layout
21196 Specify layout of inputs.
21197 This option requires the desired layout configuration to be explicitly set by the user.
21198 This sets position of each video input in output. Each input
21199 is separated by '|'.
21200 The first number represents the column, and the second number represents the row.
21201 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
21202 where X is video input from which to take width or height.
21203 Multiple values can be used when separated by '+'. In such
21204 case values are summed together.
21205
21206 Note that if inputs are of different sizes gaps may appear, as not all of
21207 the output video frame will be filled. Similarly, videos can overlap each
21208 other if their position doesn't leave enough space for the full frame of
21209 adjoining videos.
21210
21211 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
21212 a layout must be set by the user.
21213
21214 @item shortest
21215 If set to 1, force the output to terminate when the shortest input
21216 terminates. Default value is 0.
21217
21218 @item fill
21219 If set to valid color, all unused pixels will be filled with that color.
21220 By default fill is set to none, so it is disabled.
21221 @end table
21222
21223 @subsection Examples
21224
21225 @itemize
21226 @item
21227 Display 4 inputs into 2x2 grid.
21228
21229 Layout:
21230 @example
21231 input1(0, 0)  | input3(w0, 0)
21232 input2(0, h0) | input4(w0, h0)
21233 @end example
21234
21235 @example
21236 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
21237 @end example
21238
21239 Note that if inputs are of different sizes, gaps or overlaps may occur.
21240
21241 @item
21242 Display 4 inputs into 1x4 grid.
21243
21244 Layout:
21245 @example
21246 input1(0, 0)
21247 input2(0, h0)
21248 input3(0, h0+h1)
21249 input4(0, h0+h1+h2)
21250 @end example
21251
21252 @example
21253 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
21254 @end example
21255
21256 Note that if inputs are of different widths, unused space will appear.
21257
21258 @item
21259 Display 9 inputs into 3x3 grid.
21260
21261 Layout:
21262 @example
21263 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
21264 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
21265 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
21266 @end example
21267
21268 @example
21269 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
21270 @end example
21271
21272 Note that if inputs are of different sizes, gaps or overlaps may occur.
21273
21274 @item
21275 Display 16 inputs into 4x4 grid.
21276
21277 Layout:
21278 @example
21279 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
21280 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
21281 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
21282 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
21283 @end example
21284
21285 @example
21286 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|
21287 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
21288 @end example
21289
21290 Note that if inputs are of different sizes, gaps or overlaps may occur.
21291
21292 @end itemize
21293
21294 @anchor{yadif}
21295 @section yadif
21296
21297 Deinterlace the input video ("yadif" means "yet another deinterlacing
21298 filter").
21299
21300 It accepts the following parameters:
21301
21302
21303 @table @option
21304
21305 @item mode
21306 The interlacing mode to adopt. It accepts one of the following values:
21307
21308 @table @option
21309 @item 0, send_frame
21310 Output one frame for each frame.
21311 @item 1, send_field
21312 Output one frame for each field.
21313 @item 2, send_frame_nospatial
21314 Like @code{send_frame}, but it skips the spatial interlacing check.
21315 @item 3, send_field_nospatial
21316 Like @code{send_field}, but it skips the spatial interlacing check.
21317 @end table
21318
21319 The default value is @code{send_frame}.
21320
21321 @item parity
21322 The picture field parity assumed for the input interlaced video. It accepts one
21323 of the following values:
21324
21325 @table @option
21326 @item 0, tff
21327 Assume the top field is first.
21328 @item 1, bff
21329 Assume the bottom field is first.
21330 @item -1, auto
21331 Enable automatic detection of field parity.
21332 @end table
21333
21334 The default value is @code{auto}.
21335 If the interlacing is unknown or the decoder does not export this information,
21336 top field first will be assumed.
21337
21338 @item deint
21339 Specify which frames to deinterlace. Accepts one of the following
21340 values:
21341
21342 @table @option
21343 @item 0, all
21344 Deinterlace all frames.
21345 @item 1, interlaced
21346 Only deinterlace frames marked as interlaced.
21347 @end table
21348
21349 The default value is @code{all}.
21350 @end table
21351
21352 @section yadif_cuda
21353
21354 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
21355 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
21356 and/or nvenc.
21357
21358 It accepts the following parameters:
21359
21360
21361 @table @option
21362
21363 @item mode
21364 The interlacing mode to adopt. It accepts one of the following values:
21365
21366 @table @option
21367 @item 0, send_frame
21368 Output one frame for each frame.
21369 @item 1, send_field
21370 Output one frame for each field.
21371 @item 2, send_frame_nospatial
21372 Like @code{send_frame}, but it skips the spatial interlacing check.
21373 @item 3, send_field_nospatial
21374 Like @code{send_field}, but it skips the spatial interlacing check.
21375 @end table
21376
21377 The default value is @code{send_frame}.
21378
21379 @item parity
21380 The picture field parity assumed for the input interlaced video. It accepts one
21381 of the following values:
21382
21383 @table @option
21384 @item 0, tff
21385 Assume the top field is first.
21386 @item 1, bff
21387 Assume the bottom field is first.
21388 @item -1, auto
21389 Enable automatic detection of field parity.
21390 @end table
21391
21392 The default value is @code{auto}.
21393 If the interlacing is unknown or the decoder does not export this information,
21394 top field first will be assumed.
21395
21396 @item deint
21397 Specify which frames to deinterlace. Accepts one of the following
21398 values:
21399
21400 @table @option
21401 @item 0, all
21402 Deinterlace all frames.
21403 @item 1, interlaced
21404 Only deinterlace frames marked as interlaced.
21405 @end table
21406
21407 The default value is @code{all}.
21408 @end table
21409
21410 @section yaepblur
21411
21412 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
21413 The algorithm is described in
21414 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
21415
21416 It accepts the following parameters:
21417
21418 @table @option
21419 @item radius, r
21420 Set the window radius. Default value is 3.
21421
21422 @item planes, p
21423 Set which planes to filter. Default is only the first plane.
21424
21425 @item sigma, s
21426 Set blur strength. Default value is 128.
21427 @end table
21428
21429 @subsection Commands
21430 This filter supports same @ref{commands} as options.
21431
21432 @section zoompan
21433
21434 Apply Zoom & Pan effect.
21435
21436 This filter accepts the following options:
21437
21438 @table @option
21439 @item zoom, z
21440 Set the zoom expression. Range is 1-10. Default is 1.
21441
21442 @item x
21443 @item y
21444 Set the x and y expression. Default is 0.
21445
21446 @item d
21447 Set the duration expression in number of frames.
21448 This sets for how many number of frames effect will last for
21449 single input image.
21450
21451 @item s
21452 Set the output image size, default is 'hd720'.
21453
21454 @item fps
21455 Set the output frame rate, default is '25'.
21456 @end table
21457
21458 Each expression can contain the following constants:
21459
21460 @table @option
21461 @item in_w, iw
21462 Input width.
21463
21464 @item in_h, ih
21465 Input height.
21466
21467 @item out_w, ow
21468 Output width.
21469
21470 @item out_h, oh
21471 Output height.
21472
21473 @item in
21474 Input frame count.
21475
21476 @item on
21477 Output frame count.
21478
21479 @item in_time, it
21480 The input timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
21481
21482 @item out_time, time, ot
21483 The output timestamp expressed in seconds.
21484
21485 @item x
21486 @item y
21487 Last calculated 'x' and 'y' position from 'x' and 'y' expression
21488 for current input frame.
21489
21490 @item px
21491 @item py
21492 'x' and 'y' of last output frame of previous input frame or 0 when there was
21493 not yet such frame (first input frame).
21494
21495 @item zoom
21496 Last calculated zoom from 'z' expression for current input frame.
21497
21498 @item pzoom
21499 Last calculated zoom of last output frame of previous input frame.
21500
21501 @item duration
21502 Number of output frames for current input frame. Calculated from 'd' expression
21503 for each input frame.
21504
21505 @item pduration
21506 number of output frames created for previous input frame
21507
21508 @item a
21509 Rational number: input width / input height
21510
21511 @item sar
21512 sample aspect ratio
21513
21514 @item dar
21515 display aspect ratio
21516
21517 @end table
21518
21519 @subsection Examples
21520
21521 @itemize
21522 @item
21523 Zoom in up to 1.5x and pan at same time to some spot near center of picture:
21524 @example
21525 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
21526 @end example
21527
21528 @item
21529 Zoom in up to 1.5x and pan always at center of picture:
21530 @example
21531 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21532 @end example
21533
21534 @item
21535 Same as above but without pausing:
21536 @example
21537 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21538 @end example
21539
21540 @item
21541 Zoom in 2x into center of picture only for the first second of the input video:
21542 @example
21543 zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21544 @end example
21545
21546 @end itemize
21547
21548 @anchor{zscale}
21549 @section zscale
21550 Scale (resize) the input video, using the z.lib library:
21551 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
21552 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
21553
21554 The zscale filter forces the output display aspect ratio to be the same
21555 as the input, by changing the output sample aspect ratio.
21556
21557 If the input image format is different from the format requested by
21558 the next filter, the zscale filter will convert the input to the
21559 requested format.
21560
21561 @subsection Options
21562 The filter accepts the following options.
21563
21564 @table @option
21565 @item width, w
21566 @item height, h
21567 Set the output video dimension expression. Default value is the input
21568 dimension.
21569
21570 If the @var{width} or @var{w} value is 0, the input width is used for
21571 the output. If the @var{height} or @var{h} value is 0, the input height
21572 is used for the output.
21573
21574 If one and only one of the values is -n with n >= 1, the zscale filter
21575 will use a value that maintains the aspect ratio of the input image,
21576 calculated from the other specified dimension. After that it will,
21577 however, make sure that the calculated dimension is divisible by n and
21578 adjust the value if necessary.
21579
21580 If both values are -n with n >= 1, the behavior will be identical to
21581 both values being set to 0 as previously detailed.
21582
21583 See below for the list of accepted constants for use in the dimension
21584 expression.
21585
21586 @item size, s
21587 Set the video size. For the syntax of this option, check the
21588 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21589
21590 @item dither, d
21591 Set the dither type.
21592
21593 Possible values are:
21594 @table @var
21595 @item none
21596 @item ordered
21597 @item random
21598 @item error_diffusion
21599 @end table
21600
21601 Default is none.
21602
21603 @item filter, f
21604 Set the resize filter type.
21605
21606 Possible values are:
21607 @table @var
21608 @item point
21609 @item bilinear
21610 @item bicubic
21611 @item spline16
21612 @item spline36
21613 @item lanczos
21614 @end table
21615
21616 Default is bilinear.
21617
21618 @item range, r
21619 Set the color range.
21620
21621 Possible values are:
21622 @table @var
21623 @item input
21624 @item limited
21625 @item full
21626 @end table
21627
21628 Default is same as input.
21629
21630 @item primaries, p
21631 Set the color primaries.
21632
21633 Possible values are:
21634 @table @var
21635 @item input
21636 @item 709
21637 @item unspecified
21638 @item 170m
21639 @item 240m
21640 @item 2020
21641 @end table
21642
21643 Default is same as input.
21644
21645 @item transfer, t
21646 Set the transfer characteristics.
21647
21648 Possible values are:
21649 @table @var
21650 @item input
21651 @item 709
21652 @item unspecified
21653 @item 601
21654 @item linear
21655 @item 2020_10
21656 @item 2020_12
21657 @item smpte2084
21658 @item iec61966-2-1
21659 @item arib-std-b67
21660 @end table
21661
21662 Default is same as input.
21663
21664 @item matrix, m
21665 Set the colorspace matrix.
21666
21667 Possible value are:
21668 @table @var
21669 @item input
21670 @item 709
21671 @item unspecified
21672 @item 470bg
21673 @item 170m
21674 @item 2020_ncl
21675 @item 2020_cl
21676 @end table
21677
21678 Default is same as input.
21679
21680 @item rangein, rin
21681 Set the input color range.
21682
21683 Possible values are:
21684 @table @var
21685 @item input
21686 @item limited
21687 @item full
21688 @end table
21689
21690 Default is same as input.
21691
21692 @item primariesin, pin
21693 Set the input color primaries.
21694
21695 Possible values are:
21696 @table @var
21697 @item input
21698 @item 709
21699 @item unspecified
21700 @item 170m
21701 @item 240m
21702 @item 2020
21703 @end table
21704
21705 Default is same as input.
21706
21707 @item transferin, tin
21708 Set the input transfer characteristics.
21709
21710 Possible values are:
21711 @table @var
21712 @item input
21713 @item 709
21714 @item unspecified
21715 @item 601
21716 @item linear
21717 @item 2020_10
21718 @item 2020_12
21719 @end table
21720
21721 Default is same as input.
21722
21723 @item matrixin, min
21724 Set the input colorspace matrix.
21725
21726 Possible value are:
21727 @table @var
21728 @item input
21729 @item 709
21730 @item unspecified
21731 @item 470bg
21732 @item 170m
21733 @item 2020_ncl
21734 @item 2020_cl
21735 @end table
21736
21737 @item chromal, c
21738 Set the output chroma location.
21739
21740 Possible values are:
21741 @table @var
21742 @item input
21743 @item left
21744 @item center
21745 @item topleft
21746 @item top
21747 @item bottomleft
21748 @item bottom
21749 @end table
21750
21751 @item chromalin, cin
21752 Set the input chroma location.
21753
21754 Possible values are:
21755 @table @var
21756 @item input
21757 @item left
21758 @item center
21759 @item topleft
21760 @item top
21761 @item bottomleft
21762 @item bottom
21763 @end table
21764
21765 @item npl
21766 Set the nominal peak luminance.
21767 @end table
21768
21769 The values of the @option{w} and @option{h} options are expressions
21770 containing the following constants:
21771
21772 @table @var
21773 @item in_w
21774 @item in_h
21775 The input width and height
21776
21777 @item iw
21778 @item ih
21779 These are the same as @var{in_w} and @var{in_h}.
21780
21781 @item out_w
21782 @item out_h
21783 The output (scaled) width and height
21784
21785 @item ow
21786 @item oh
21787 These are the same as @var{out_w} and @var{out_h}
21788
21789 @item a
21790 The same as @var{iw} / @var{ih}
21791
21792 @item sar
21793 input sample aspect ratio
21794
21795 @item dar
21796 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
21797
21798 @item hsub
21799 @item vsub
21800 horizontal and vertical input chroma subsample values. For example for the
21801 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21802
21803 @item ohsub
21804 @item ovsub
21805 horizontal and vertical output chroma subsample values. For example for the
21806 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21807 @end table
21808
21809 @subsection Commands
21810
21811 This filter supports the following commands:
21812 @table @option
21813 @item width, w
21814 @item height, h
21815 Set the output video dimension expression.
21816 The command accepts the same syntax of the corresponding option.
21817
21818 If the specified expression is not valid, it is kept at its current
21819 value.
21820 @end table
21821
21822 @c man end VIDEO FILTERS
21823
21824 @chapter OpenCL Video Filters
21825 @c man begin OPENCL VIDEO FILTERS
21826
21827 Below is a description of the currently available OpenCL video filters.
21828
21829 To enable compilation of these filters you need to configure FFmpeg with
21830 @code{--enable-opencl}.
21831
21832 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
21833 @table @option
21834
21835 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
21836 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
21837 given device parameters.
21838
21839 @item -filter_hw_device @var{name}
21840 Pass the hardware device called @var{name} to all filters in any filter graph.
21841
21842 @end table
21843
21844 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
21845
21846 @itemize
21847 @item
21848 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
21849 @example
21850 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
21851 @end example
21852 @end itemize
21853
21854 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.
21855
21856 @section avgblur_opencl
21857
21858 Apply average blur filter.
21859
21860 The filter accepts the following options:
21861
21862 @table @option
21863 @item sizeX
21864 Set horizontal radius size.
21865 Range is @code{[1, 1024]} and default value is @code{1}.
21866
21867 @item planes
21868 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21869
21870 @item sizeY
21871 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
21872 @end table
21873
21874 @subsection Example
21875
21876 @itemize
21877 @item
21878 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.
21879 @example
21880 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
21881 @end example
21882 @end itemize
21883
21884 @section boxblur_opencl
21885
21886 Apply a boxblur algorithm to the input video.
21887
21888 It accepts the following parameters:
21889
21890 @table @option
21891
21892 @item luma_radius, lr
21893 @item luma_power, lp
21894 @item chroma_radius, cr
21895 @item chroma_power, cp
21896 @item alpha_radius, ar
21897 @item alpha_power, ap
21898
21899 @end table
21900
21901 A description of the accepted options follows.
21902
21903 @table @option
21904 @item luma_radius, lr
21905 @item chroma_radius, cr
21906 @item alpha_radius, ar
21907 Set an expression for the box radius in pixels used for blurring the
21908 corresponding input plane.
21909
21910 The radius value must be a non-negative number, and must not be
21911 greater than the value of the expression @code{min(w,h)/2} for the
21912 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
21913 planes.
21914
21915 Default value for @option{luma_radius} is "2". If not specified,
21916 @option{chroma_radius} and @option{alpha_radius} default to the
21917 corresponding value set for @option{luma_radius}.
21918
21919 The expressions can contain the following constants:
21920 @table @option
21921 @item w
21922 @item h
21923 The input width and height in pixels.
21924
21925 @item cw
21926 @item ch
21927 The input chroma image width and height in pixels.
21928
21929 @item hsub
21930 @item vsub
21931 The horizontal and vertical chroma subsample values. For example, for the
21932 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
21933 @end table
21934
21935 @item luma_power, lp
21936 @item chroma_power, cp
21937 @item alpha_power, ap
21938 Specify how many times the boxblur filter is applied to the
21939 corresponding plane.
21940
21941 Default value for @option{luma_power} is 2. If not specified,
21942 @option{chroma_power} and @option{alpha_power} default to the
21943 corresponding value set for @option{luma_power}.
21944
21945 A value of 0 will disable the effect.
21946 @end table
21947
21948 @subsection Examples
21949
21950 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.
21951
21952 @itemize
21953 @item
21954 Apply a boxblur filter with the luma, chroma, and alpha radius
21955 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.
21956 @example
21957 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
21958 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
21959 @end example
21960
21961 @item
21962 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.
21963
21964 For the luma plane, a 2x2 box radius will be run once.
21965
21966 For the chroma plane, a 4x4 box radius will be run 5 times.
21967
21968 For the alpha plane, a 3x3 box radius will be run 7 times.
21969 @example
21970 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
21971 @end example
21972 @end itemize
21973
21974 @section colorkey_opencl
21975 RGB colorspace color keying.
21976
21977 The filter accepts the following options:
21978
21979 @table @option
21980 @item color
21981 The color which will be replaced with transparency.
21982
21983 @item similarity
21984 Similarity percentage with the key color.
21985
21986 0.01 matches only the exact key color, while 1.0 matches everything.
21987
21988 @item blend
21989 Blend percentage.
21990
21991 0.0 makes pixels either fully transparent, or not transparent at all.
21992
21993 Higher values result in semi-transparent pixels, with a higher transparency
21994 the more similar the pixels color is to the key color.
21995 @end table
21996
21997 @subsection Examples
21998
21999 @itemize
22000 @item
22001 Make every semi-green pixel in the input transparent with some slight blending:
22002 @example
22003 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
22004 @end example
22005 @end itemize
22006
22007 @section convolution_opencl
22008
22009 Apply convolution of 3x3, 5x5, 7x7 matrix.
22010
22011 The filter accepts the following options:
22012
22013 @table @option
22014 @item 0m
22015 @item 1m
22016 @item 2m
22017 @item 3m
22018 Set matrix for each plane.
22019 Matrix is sequence of 9, 25 or 49 signed numbers.
22020 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
22021
22022 @item 0rdiv
22023 @item 1rdiv
22024 @item 2rdiv
22025 @item 3rdiv
22026 Set multiplier for calculated value for each plane.
22027 If unset or 0, it will be sum of all matrix elements.
22028 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
22029
22030 @item 0bias
22031 @item 1bias
22032 @item 2bias
22033 @item 3bias
22034 Set bias for each plane. This value is added to the result of the multiplication.
22035 Useful for making the overall image brighter or darker.
22036 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
22037
22038 @end table
22039
22040 @subsection Examples
22041
22042 @itemize
22043 @item
22044 Apply sharpen:
22045 @example
22046 -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
22047 @end example
22048
22049 @item
22050 Apply blur:
22051 @example
22052 -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
22053 @end example
22054
22055 @item
22056 Apply edge enhance:
22057 @example
22058 -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
22059 @end example
22060
22061 @item
22062 Apply edge detect:
22063 @example
22064 -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
22065 @end example
22066
22067 @item
22068 Apply laplacian edge detector which includes diagonals:
22069 @example
22070 -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
22071 @end example
22072
22073 @item
22074 Apply emboss:
22075 @example
22076 -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
22077 @end example
22078 @end itemize
22079
22080 @section erosion_opencl
22081
22082 Apply erosion effect to the video.
22083
22084 This filter replaces the pixel by the local(3x3) minimum.
22085
22086 It accepts the following options:
22087
22088 @table @option
22089 @item threshold0
22090 @item threshold1
22091 @item threshold2
22092 @item threshold3
22093 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
22094 If @code{0}, plane will remain unchanged.
22095
22096 @item coordinates
22097 Flag which specifies the pixel to refer to.
22098 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
22099
22100 Flags to local 3x3 coordinates region centered on @code{x}:
22101
22102     1 2 3
22103
22104     4 x 5
22105
22106     6 7 8
22107 @end table
22108
22109 @subsection Example
22110
22111 @itemize
22112 @item
22113 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.
22114 @example
22115 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
22116 @end example
22117 @end itemize
22118
22119 @section deshake_opencl
22120 Feature-point based video stabilization filter.
22121
22122 The filter accepts the following options:
22123
22124 @table @option
22125 @item tripod
22126 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
22127
22128 @item debug
22129 Whether or not additional debug info should be displayed, both in the processed output and in the console.
22130
22131 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
22132
22133 Viewing point matches in the output video is only supported for RGB input.
22134
22135 Defaults to @code{0}.
22136
22137 @item adaptive_crop
22138 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
22139
22140 Defaults to @code{1}.
22141
22142 @item refine_features
22143 Whether or not feature points should be refined at a sub-pixel level.
22144
22145 This can be turned off for a slight performance gain at the cost of precision.
22146
22147 Defaults to @code{1}.
22148
22149 @item smooth_strength
22150 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
22151
22152 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
22153
22154 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
22155
22156 Defaults to @code{0.0}.
22157
22158 @item smooth_window_multiplier
22159 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
22160
22161 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
22162
22163 Acceptable values range from @code{0.1} to @code{10.0}.
22164
22165 Larger values increase the amount of motion data available for determining how to smooth the camera path,
22166 potentially improving smoothness, but also increase latency and memory usage.
22167
22168 Defaults to @code{2.0}.
22169
22170 @end table
22171
22172 @subsection Examples
22173
22174 @itemize
22175 @item
22176 Stabilize a video with a fixed, medium smoothing strength:
22177 @example
22178 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
22179 @end example
22180
22181 @item
22182 Stabilize a video with debugging (both in console and in rendered video):
22183 @example
22184 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
22185 @end example
22186 @end itemize
22187
22188 @section dilation_opencl
22189
22190 Apply dilation effect to the video.
22191
22192 This filter replaces the pixel by the local(3x3) maximum.
22193
22194 It accepts the following options:
22195
22196 @table @option
22197 @item threshold0
22198 @item threshold1
22199 @item threshold2
22200 @item threshold3
22201 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
22202 If @code{0}, plane will remain unchanged.
22203
22204 @item coordinates
22205 Flag which specifies the pixel to refer to.
22206 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
22207
22208 Flags to local 3x3 coordinates region centered on @code{x}:
22209
22210     1 2 3
22211
22212     4 x 5
22213
22214     6 7 8
22215 @end table
22216
22217 @subsection Example
22218
22219 @itemize
22220 @item
22221 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.
22222 @example
22223 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
22224 @end example
22225 @end itemize
22226
22227 @section nlmeans_opencl
22228
22229 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
22230
22231 @section overlay_opencl
22232
22233 Overlay one video on top of another.
22234
22235 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
22236 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
22237
22238 The filter accepts the following options:
22239
22240 @table @option
22241
22242 @item x
22243 Set the x coordinate of the overlaid video on the main video.
22244 Default value is @code{0}.
22245
22246 @item y
22247 Set the y coordinate of the overlaid video on the main video.
22248 Default value is @code{0}.
22249
22250 @end table
22251
22252 @subsection Examples
22253
22254 @itemize
22255 @item
22256 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
22257 @example
22258 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22259 @end example
22260 @item
22261 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
22262 @example
22263 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22264 @end example
22265
22266 @end itemize
22267
22268 @section pad_opencl
22269
22270 Add paddings to the input image, and place the original input at the
22271 provided @var{x}, @var{y} coordinates.
22272
22273 It accepts the following options:
22274
22275 @table @option
22276 @item width, w
22277 @item height, h
22278 Specify an expression for the size of the output image with the
22279 paddings added. If the value for @var{width} or @var{height} is 0, the
22280 corresponding input size is used for the output.
22281
22282 The @var{width} expression can reference the value set by the
22283 @var{height} expression, and vice versa.
22284
22285 The default value of @var{width} and @var{height} is 0.
22286
22287 @item x
22288 @item y
22289 Specify the offsets to place the input image at within the padded area,
22290 with respect to the top/left border of the output image.
22291
22292 The @var{x} expression can reference the value set by the @var{y}
22293 expression, and vice versa.
22294
22295 The default value of @var{x} and @var{y} is 0.
22296
22297 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
22298 so the input image is centered on the padded area.
22299
22300 @item color
22301 Specify the color of the padded area. For the syntax of this option,
22302 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
22303 manual,ffmpeg-utils}.
22304
22305 @item aspect
22306 Pad to an aspect instead to a resolution.
22307 @end table
22308
22309 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
22310 options are expressions containing the following constants:
22311
22312 @table @option
22313 @item in_w
22314 @item in_h
22315 The input video width and height.
22316
22317 @item iw
22318 @item ih
22319 These are the same as @var{in_w} and @var{in_h}.
22320
22321 @item out_w
22322 @item out_h
22323 The output width and height (the size of the padded area), as
22324 specified by the @var{width} and @var{height} expressions.
22325
22326 @item ow
22327 @item oh
22328 These are the same as @var{out_w} and @var{out_h}.
22329
22330 @item x
22331 @item y
22332 The x and y offsets as specified by the @var{x} and @var{y}
22333 expressions, or NAN if not yet specified.
22334
22335 @item a
22336 same as @var{iw} / @var{ih}
22337
22338 @item sar
22339 input sample aspect ratio
22340
22341 @item dar
22342 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
22343 @end table
22344
22345 @section prewitt_opencl
22346
22347 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
22348
22349 The filter accepts the following option:
22350
22351 @table @option
22352 @item planes
22353 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22354
22355 @item scale
22356 Set value which will be multiplied with filtered result.
22357 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22358
22359 @item delta
22360 Set value which will be added to filtered result.
22361 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22362 @end table
22363
22364 @subsection Example
22365
22366 @itemize
22367 @item
22368 Apply the Prewitt operator with scale set to 2 and delta set to 10.
22369 @example
22370 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
22371 @end example
22372 @end itemize
22373
22374 @anchor{program_opencl}
22375 @section program_opencl
22376
22377 Filter video using an OpenCL program.
22378
22379 @table @option
22380
22381 @item source
22382 OpenCL program source file.
22383
22384 @item kernel
22385 Kernel name in program.
22386
22387 @item inputs
22388 Number of inputs to the filter.  Defaults to 1.
22389
22390 @item size, s
22391 Size of output frames.  Defaults to the same as the first input.
22392
22393 @end table
22394
22395 The @code{program_opencl} filter also supports the @ref{framesync} options.
22396
22397 The program source file must contain a kernel function with the given name,
22398 which will be run once for each plane of the output.  Each run on a plane
22399 gets enqueued as a separate 2D global NDRange with one work-item for each
22400 pixel to be generated.  The global ID offset for each work-item is therefore
22401 the coordinates of a pixel in the destination image.
22402
22403 The kernel function needs to take the following arguments:
22404 @itemize
22405 @item
22406 Destination image, @var{__write_only image2d_t}.
22407
22408 This image will become the output; the kernel should write all of it.
22409 @item
22410 Frame index, @var{unsigned int}.
22411
22412 This is a counter starting from zero and increasing by one for each frame.
22413 @item
22414 Source images, @var{__read_only image2d_t}.
22415
22416 These are the most recent images on each input.  The kernel may read from
22417 them to generate the output, but they can't be written to.
22418 @end itemize
22419
22420 Example programs:
22421
22422 @itemize
22423 @item
22424 Copy the input to the output (output must be the same size as the input).
22425 @verbatim
22426 __kernel void copy(__write_only image2d_t destination,
22427                    unsigned int index,
22428                    __read_only  image2d_t source)
22429 {
22430     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
22431
22432     int2 location = (int2)(get_global_id(0), get_global_id(1));
22433
22434     float4 value = read_imagef(source, sampler, location);
22435
22436     write_imagef(destination, location, value);
22437 }
22438 @end verbatim
22439
22440 @item
22441 Apply a simple transformation, rotating the input by an amount increasing
22442 with the index counter.  Pixel values are linearly interpolated by the
22443 sampler, and the output need not have the same dimensions as the input.
22444 @verbatim
22445 __kernel void rotate_image(__write_only image2d_t dst,
22446                            unsigned int index,
22447                            __read_only  image2d_t src)
22448 {
22449     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22450                                CLK_FILTER_LINEAR);
22451
22452     float angle = (float)index / 100.0f;
22453
22454     float2 dst_dim = convert_float2(get_image_dim(dst));
22455     float2 src_dim = convert_float2(get_image_dim(src));
22456
22457     float2 dst_cen = dst_dim / 2.0f;
22458     float2 src_cen = src_dim / 2.0f;
22459
22460     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
22461
22462     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
22463     float2 src_pos = {
22464         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
22465         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
22466     };
22467     src_pos = src_pos * src_dim / dst_dim;
22468
22469     float2 src_loc = src_pos + src_cen;
22470
22471     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
22472         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
22473         write_imagef(dst, dst_loc, 0.5f);
22474     else
22475         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
22476 }
22477 @end verbatim
22478
22479 @item
22480 Blend two inputs together, with the amount of each input used varying
22481 with the index counter.
22482 @verbatim
22483 __kernel void blend_images(__write_only image2d_t dst,
22484                            unsigned int index,
22485                            __read_only  image2d_t src1,
22486                            __read_only  image2d_t src2)
22487 {
22488     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22489                                CLK_FILTER_LINEAR);
22490
22491     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
22492
22493     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
22494     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
22495     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
22496
22497     float4 val1 = read_imagef(src1, sampler, src1_loc);
22498     float4 val2 = read_imagef(src2, sampler, src2_loc);
22499
22500     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
22501 }
22502 @end verbatim
22503
22504 @end itemize
22505
22506 @section roberts_opencl
22507 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
22508
22509 The filter accepts the following option:
22510
22511 @table @option
22512 @item planes
22513 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22514
22515 @item scale
22516 Set value which will be multiplied with filtered result.
22517 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22518
22519 @item delta
22520 Set value which will be added to filtered result.
22521 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22522 @end table
22523
22524 @subsection Example
22525
22526 @itemize
22527 @item
22528 Apply the Roberts cross operator with scale set to 2 and delta set to 10
22529 @example
22530 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
22531 @end example
22532 @end itemize
22533
22534 @section sobel_opencl
22535
22536 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
22537
22538 The filter accepts the following option:
22539
22540 @table @option
22541 @item planes
22542 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22543
22544 @item scale
22545 Set value which will be multiplied with filtered result.
22546 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22547
22548 @item delta
22549 Set value which will be added to filtered result.
22550 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22551 @end table
22552
22553 @subsection Example
22554
22555 @itemize
22556 @item
22557 Apply sobel operator with scale set to 2 and delta set to 10
22558 @example
22559 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
22560 @end example
22561 @end itemize
22562
22563 @section tonemap_opencl
22564
22565 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
22566
22567 It accepts the following parameters:
22568
22569 @table @option
22570 @item tonemap
22571 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
22572
22573 @item param
22574 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
22575
22576 @item desat
22577 Apply desaturation for highlights that exceed this level of brightness. The
22578 higher the parameter, the more color information will be preserved. This
22579 setting helps prevent unnaturally blown-out colors for super-highlights, by
22580 (smoothly) turning into white instead. This makes images feel more natural,
22581 at the cost of reducing information about out-of-range colors.
22582
22583 The default value is 0.5, and the algorithm here is a little different from
22584 the cpu version tonemap currently. A setting of 0.0 disables this option.
22585
22586 @item threshold
22587 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
22588 is used to detect whether the scene has changed or not. If the distance between
22589 the current frame average brightness and the current running average exceeds
22590 a threshold value, we would re-calculate scene average and peak brightness.
22591 The default value is 0.2.
22592
22593 @item format
22594 Specify the output pixel format.
22595
22596 Currently supported formats are:
22597 @table @var
22598 @item p010
22599 @item nv12
22600 @end table
22601
22602 @item range, r
22603 Set the output color range.
22604
22605 Possible values are:
22606 @table @var
22607 @item tv/mpeg
22608 @item pc/jpeg
22609 @end table
22610
22611 Default is same as input.
22612
22613 @item primaries, p
22614 Set the output color primaries.
22615
22616 Possible values are:
22617 @table @var
22618 @item bt709
22619 @item bt2020
22620 @end table
22621
22622 Default is same as input.
22623
22624 @item transfer, t
22625 Set the output transfer characteristics.
22626
22627 Possible values are:
22628 @table @var
22629 @item bt709
22630 @item bt2020
22631 @end table
22632
22633 Default is bt709.
22634
22635 @item matrix, m
22636 Set the output colorspace matrix.
22637
22638 Possible value are:
22639 @table @var
22640 @item bt709
22641 @item bt2020
22642 @end table
22643
22644 Default is same as input.
22645
22646 @end table
22647
22648 @subsection Example
22649
22650 @itemize
22651 @item
22652 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
22653 @example
22654 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
22655 @end example
22656 @end itemize
22657
22658 @section unsharp_opencl
22659
22660 Sharpen or blur the input video.
22661
22662 It accepts the following parameters:
22663
22664 @table @option
22665 @item luma_msize_x, lx
22666 Set the luma matrix horizontal size.
22667 Range is @code{[1, 23]} and default value is @code{5}.
22668
22669 @item luma_msize_y, ly
22670 Set the luma matrix vertical size.
22671 Range is @code{[1, 23]} and default value is @code{5}.
22672
22673 @item luma_amount, la
22674 Set the luma effect strength.
22675 Range is @code{[-10, 10]} and default value is @code{1.0}.
22676
22677 Negative values will blur the input video, while positive values will
22678 sharpen it, a value of zero will disable the effect.
22679
22680 @item chroma_msize_x, cx
22681 Set the chroma matrix horizontal size.
22682 Range is @code{[1, 23]} and default value is @code{5}.
22683
22684 @item chroma_msize_y, cy
22685 Set the chroma matrix vertical size.
22686 Range is @code{[1, 23]} and default value is @code{5}.
22687
22688 @item chroma_amount, ca
22689 Set the chroma effect strength.
22690 Range is @code{[-10, 10]} and default value is @code{0.0}.
22691
22692 Negative values will blur the input video, while positive values will
22693 sharpen it, a value of zero will disable the effect.
22694
22695 @end table
22696
22697 All parameters are optional and default to the equivalent of the
22698 string '5:5:1.0:5:5:0.0'.
22699
22700 @subsection Examples
22701
22702 @itemize
22703 @item
22704 Apply strong luma sharpen effect:
22705 @example
22706 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
22707 @end example
22708
22709 @item
22710 Apply a strong blur of both luma and chroma parameters:
22711 @example
22712 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
22713 @end example
22714 @end itemize
22715
22716 @section xfade_opencl
22717
22718 Cross fade two videos with custom transition effect by using OpenCL.
22719
22720 It accepts the following options:
22721
22722 @table @option
22723 @item transition
22724 Set one of possible transition effects.
22725
22726 @table @option
22727 @item custom
22728 Select custom transition effect, the actual transition description
22729 will be picked from source and kernel options.
22730
22731 @item fade
22732 @item wipeleft
22733 @item wiperight
22734 @item wipeup
22735 @item wipedown
22736 @item slideleft
22737 @item slideright
22738 @item slideup
22739 @item slidedown
22740
22741 Default transition is fade.
22742 @end table
22743
22744 @item source
22745 OpenCL program source file for custom transition.
22746
22747 @item kernel
22748 Set name of kernel to use for custom transition from program source file.
22749
22750 @item duration
22751 Set duration of video transition.
22752
22753 @item offset
22754 Set time of start of transition relative to first video.
22755 @end table
22756
22757 The program source file must contain a kernel function with the given name,
22758 which will be run once for each plane of the output.  Each run on a plane
22759 gets enqueued as a separate 2D global NDRange with one work-item for each
22760 pixel to be generated.  The global ID offset for each work-item is therefore
22761 the coordinates of a pixel in the destination image.
22762
22763 The kernel function needs to take the following arguments:
22764 @itemize
22765 @item
22766 Destination image, @var{__write_only image2d_t}.
22767
22768 This image will become the output; the kernel should write all of it.
22769
22770 @item
22771 First Source image, @var{__read_only image2d_t}.
22772 Second Source image, @var{__read_only image2d_t}.
22773
22774 These are the most recent images on each input.  The kernel may read from
22775 them to generate the output, but they can't be written to.
22776
22777 @item
22778 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
22779 @end itemize
22780
22781 Example programs:
22782
22783 @itemize
22784 @item
22785 Apply dots curtain transition effect:
22786 @verbatim
22787 __kernel void blend_images(__write_only image2d_t dst,
22788                            __read_only  image2d_t src1,
22789                            __read_only  image2d_t src2,
22790                            float progress)
22791 {
22792     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22793                                CLK_FILTER_LINEAR);
22794     int2  p = (int2)(get_global_id(0), get_global_id(1));
22795     float2 rp = (float2)(get_global_id(0), get_global_id(1));
22796     float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
22797     rp = rp / dim;
22798
22799     float2 dots = (float2)(20.0, 20.0);
22800     float2 center = (float2)(0,0);
22801     float2 unused;
22802
22803     float4 val1 = read_imagef(src1, sampler, p);
22804     float4 val2 = read_imagef(src2, sampler, p);
22805     bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
22806
22807     write_imagef(dst, p, next ? val1 : val2);
22808 }
22809 @end verbatim
22810
22811 @end itemize
22812
22813 @c man end OPENCL VIDEO FILTERS
22814
22815 @chapter VAAPI Video Filters
22816 @c man begin VAAPI VIDEO FILTERS
22817
22818 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
22819
22820 To enable compilation of these filters you need to configure FFmpeg with
22821 @code{--enable-vaapi}.
22822
22823 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}
22824
22825 @section tonemap_vaapi
22826
22827 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
22828 It maps the dynamic range of HDR10 content to the SDR content.
22829 It currently only accepts HDR10 as input.
22830
22831 It accepts the following parameters:
22832
22833 @table @option
22834 @item format
22835 Specify the output pixel format.
22836
22837 Currently supported formats are:
22838 @table @var
22839 @item p010
22840 @item nv12
22841 @end table
22842
22843 Default is nv12.
22844
22845 @item primaries, p
22846 Set the output color primaries.
22847
22848 Default is same as input.
22849
22850 @item transfer, t
22851 Set the output transfer characteristics.
22852
22853 Default is bt709.
22854
22855 @item matrix, m
22856 Set the output colorspace matrix.
22857
22858 Default is same as input.
22859
22860 @end table
22861
22862 @subsection Example
22863
22864 @itemize
22865 @item
22866 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
22867 @example
22868 tonemap_vaapi=format=p010:t=bt2020-10
22869 @end example
22870 @end itemize
22871
22872 @c man end VAAPI VIDEO FILTERS
22873
22874 @chapter Video Sources
22875 @c man begin VIDEO SOURCES
22876
22877 Below is a description of the currently available video sources.
22878
22879 @section buffer
22880
22881 Buffer video frames, and make them available to the filter chain.
22882
22883 This source is mainly intended for a programmatic use, in particular
22884 through the interface defined in @file{libavfilter/buffersrc.h}.
22885
22886 It accepts the following parameters:
22887
22888 @table @option
22889
22890 @item video_size
22891 Specify the size (width and height) of the buffered video frames. For the
22892 syntax of this option, check the
22893 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22894
22895 @item width
22896 The input video width.
22897
22898 @item height
22899 The input video height.
22900
22901 @item pix_fmt
22902 A string representing the pixel format of the buffered video frames.
22903 It may be a number corresponding to a pixel format, or a pixel format
22904 name.
22905
22906 @item time_base
22907 Specify the timebase assumed by the timestamps of the buffered frames.
22908
22909 @item frame_rate
22910 Specify the frame rate expected for the video stream.
22911
22912 @item pixel_aspect, sar
22913 The sample (pixel) aspect ratio of the input video.
22914
22915 @item sws_param
22916 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
22917 to the filtergraph description to specify swscale flags for automatically
22918 inserted scalers. See @ref{Filtergraph syntax}.
22919
22920 @item hw_frames_ctx
22921 When using a hardware pixel format, this should be a reference to an
22922 AVHWFramesContext describing input frames.
22923 @end table
22924
22925 For example:
22926 @example
22927 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
22928 @end example
22929
22930 will instruct the source to accept video frames with size 320x240 and
22931 with format "yuv410p", assuming 1/24 as the timestamps timebase and
22932 square pixels (1:1 sample aspect ratio).
22933 Since the pixel format with name "yuv410p" corresponds to the number 6
22934 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
22935 this example corresponds to:
22936 @example
22937 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
22938 @end example
22939
22940 Alternatively, the options can be specified as a flat string, but this
22941 syntax is deprecated:
22942
22943 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
22944
22945 @section cellauto
22946
22947 Create a pattern generated by an elementary cellular automaton.
22948
22949 The initial state of the cellular automaton can be defined through the
22950 @option{filename} and @option{pattern} options. If such options are
22951 not specified an initial state is created randomly.
22952
22953 At each new frame a new row in the video is filled with the result of
22954 the cellular automaton next generation. The behavior when the whole
22955 frame is filled is defined by the @option{scroll} option.
22956
22957 This source accepts the following options:
22958
22959 @table @option
22960 @item filename, f
22961 Read the initial cellular automaton state, i.e. the starting row, from
22962 the specified file.
22963 In the file, each non-whitespace character is considered an alive
22964 cell, a newline will terminate the row, and further characters in the
22965 file will be ignored.
22966
22967 @item pattern, p
22968 Read the initial cellular automaton state, i.e. the starting row, from
22969 the specified string.
22970
22971 Each non-whitespace character in the string is considered an alive
22972 cell, a newline will terminate the row, and further characters in the
22973 string will be ignored.
22974
22975 @item rate, r
22976 Set the video rate, that is the number of frames generated per second.
22977 Default is 25.
22978
22979 @item random_fill_ratio, ratio
22980 Set the random fill ratio for the initial cellular automaton row. It
22981 is a floating point number value ranging from 0 to 1, defaults to
22982 1/PHI.
22983
22984 This option is ignored when a file or a pattern is specified.
22985
22986 @item random_seed, seed
22987 Set the seed for filling randomly the initial row, must be an integer
22988 included between 0 and UINT32_MAX. If not specified, or if explicitly
22989 set to -1, the filter will try to use a good random seed on a best
22990 effort basis.
22991
22992 @item rule
22993 Set the cellular automaton rule, it is a number ranging from 0 to 255.
22994 Default value is 110.
22995
22996 @item size, s
22997 Set the size of the output video. For the syntax of this option, check the
22998 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22999
23000 If @option{filename} or @option{pattern} is specified, the size is set
23001 by default to the width of the specified initial state row, and the
23002 height is set to @var{width} * PHI.
23003
23004 If @option{size} is set, it must contain the width of the specified
23005 pattern string, and the specified pattern will be centered in the
23006 larger row.
23007
23008 If a filename or a pattern string is not specified, the size value
23009 defaults to "320x518" (used for a randomly generated initial state).
23010
23011 @item scroll
23012 If set to 1, scroll the output upward when all the rows in the output
23013 have been already filled. If set to 0, the new generated row will be
23014 written over the top row just after the bottom row is filled.
23015 Defaults to 1.
23016
23017 @item start_full, full
23018 If set to 1, completely fill the output with generated rows before
23019 outputting the first frame.
23020 This is the default behavior, for disabling set the value to 0.
23021
23022 @item stitch
23023 If set to 1, stitch the left and right row edges together.
23024 This is the default behavior, for disabling set the value to 0.
23025 @end table
23026
23027 @subsection Examples
23028
23029 @itemize
23030 @item
23031 Read the initial state from @file{pattern}, and specify an output of
23032 size 200x400.
23033 @example
23034 cellauto=f=pattern:s=200x400
23035 @end example
23036
23037 @item
23038 Generate a random initial row with a width of 200 cells, with a fill
23039 ratio of 2/3:
23040 @example
23041 cellauto=ratio=2/3:s=200x200
23042 @end example
23043
23044 @item
23045 Create a pattern generated by rule 18 starting by a single alive cell
23046 centered on an initial row with width 100:
23047 @example
23048 cellauto=p=@@:s=100x400:full=0:rule=18
23049 @end example
23050
23051 @item
23052 Specify a more elaborated initial pattern:
23053 @example
23054 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
23055 @end example
23056
23057 @end itemize
23058
23059 @anchor{coreimagesrc}
23060 @section coreimagesrc
23061 Video source generated on GPU using Apple's CoreImage API on OSX.
23062
23063 This video source is a specialized version of the @ref{coreimage} video filter.
23064 Use a core image generator at the beginning of the applied filterchain to
23065 generate the content.
23066
23067 The coreimagesrc video source accepts the following options:
23068 @table @option
23069 @item list_generators
23070 List all available generators along with all their respective options as well as
23071 possible minimum and maximum values along with the default values.
23072 @example
23073 list_generators=true
23074 @end example
23075
23076 @item size, s
23077 Specify the size of the sourced video. For the syntax of this option, check the
23078 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23079 The default value is @code{320x240}.
23080
23081 @item rate, r
23082 Specify the frame rate of the sourced video, as the number of frames
23083 generated per second. It has to be a string in the format
23084 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23085 number or a valid video frame rate abbreviation. The default value is
23086 "25".
23087
23088 @item sar
23089 Set the sample aspect ratio of the sourced video.
23090
23091 @item duration, d
23092 Set the duration of the sourced video. See
23093 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23094 for the accepted syntax.
23095
23096 If not specified, or the expressed duration is negative, the video is
23097 supposed to be generated forever.
23098 @end table
23099
23100 Additionally, all options of the @ref{coreimage} video filter are accepted.
23101 A complete filterchain can be used for further processing of the
23102 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
23103 and examples for details.
23104
23105 @subsection Examples
23106
23107 @itemize
23108
23109 @item
23110 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
23111 given as complete and escaped command-line for Apple's standard bash shell:
23112 @example
23113 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
23114 @end example
23115 This example is equivalent to the QRCode example of @ref{coreimage} without the
23116 need for a nullsrc video source.
23117 @end itemize
23118
23119
23120 @section gradients
23121 Generate several gradients.
23122
23123 @table @option
23124 @item size, s
23125 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23126 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23127
23128 @item rate, r
23129 Set frame rate, expressed as number of frames per second. Default
23130 value is "25".
23131
23132 @item c0, c1, c2, c3, c4, c5, c6, c7
23133 Set 8 colors. Default values for colors is to pick random one.
23134
23135 @item x0, y0, y0, y1
23136 Set gradient line source and destination points. If negative or out of range, random ones
23137 are picked.
23138
23139 @item nb_colors, n
23140 Set number of colors to use at once. Allowed range is from 2 to 8. Default value is 2.
23141
23142 @item seed
23143 Set seed for picking gradient line points.
23144
23145 @item duration, d
23146 Set the duration of the sourced video. See
23147 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23148 for the accepted syntax.
23149
23150 If not specified, or the expressed duration is negative, the video is
23151 supposed to be generated forever.
23152
23153 @item speed
23154 Set speed of gradients rotation.
23155 @end table
23156
23157
23158 @section mandelbrot
23159
23160 Generate a Mandelbrot set fractal, and progressively zoom towards the
23161 point specified with @var{start_x} and @var{start_y}.
23162
23163 This source accepts the following options:
23164
23165 @table @option
23166
23167 @item end_pts
23168 Set the terminal pts value. Default value is 400.
23169
23170 @item end_scale
23171 Set the terminal scale value.
23172 Must be a floating point value. Default value is 0.3.
23173
23174 @item inner
23175 Set the inner coloring mode, that is the algorithm used to draw the
23176 Mandelbrot fractal internal region.
23177
23178 It shall assume one of the following values:
23179 @table @option
23180 @item black
23181 Set black mode.
23182 @item convergence
23183 Show time until convergence.
23184 @item mincol
23185 Set color based on point closest to the origin of the iterations.
23186 @item period
23187 Set period mode.
23188 @end table
23189
23190 Default value is @var{mincol}.
23191
23192 @item bailout
23193 Set the bailout value. Default value is 10.0.
23194
23195 @item maxiter
23196 Set the maximum of iterations performed by the rendering
23197 algorithm. Default value is 7189.
23198
23199 @item outer
23200 Set outer coloring mode.
23201 It shall assume one of following values:
23202 @table @option
23203 @item iteration_count
23204 Set iteration count mode.
23205 @item normalized_iteration_count
23206 set normalized iteration count mode.
23207 @end table
23208 Default value is @var{normalized_iteration_count}.
23209
23210 @item rate, r
23211 Set frame rate, expressed as number of frames per second. Default
23212 value is "25".
23213
23214 @item size, s
23215 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23216 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23217
23218 @item start_scale
23219 Set the initial scale value. Default value is 3.0.
23220
23221 @item start_x
23222 Set the initial x position. Must be a floating point value between
23223 -100 and 100. Default value is -0.743643887037158704752191506114774.
23224
23225 @item start_y
23226 Set the initial y position. Must be a floating point value between
23227 -100 and 100. Default value is -0.131825904205311970493132056385139.
23228 @end table
23229
23230 @section mptestsrc
23231
23232 Generate various test patterns, as generated by the MPlayer test filter.
23233
23234 The size of the generated video is fixed, and is 256x256.
23235 This source is useful in particular for testing encoding features.
23236
23237 This source accepts the following options:
23238
23239 @table @option
23240
23241 @item rate, r
23242 Specify the frame rate of the sourced video, as the number of frames
23243 generated per second. It has to be a string in the format
23244 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23245 number or a valid video frame rate abbreviation. The default value is
23246 "25".
23247
23248 @item duration, d
23249 Set the duration of the sourced video. See
23250 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23251 for the accepted syntax.
23252
23253 If not specified, or the expressed duration is negative, the video is
23254 supposed to be generated forever.
23255
23256 @item test, t
23257
23258 Set the number or the name of the test to perform. Supported tests are:
23259 @table @option
23260 @item dc_luma
23261 @item dc_chroma
23262 @item freq_luma
23263 @item freq_chroma
23264 @item amp_luma
23265 @item amp_chroma
23266 @item cbp
23267 @item mv
23268 @item ring1
23269 @item ring2
23270 @item all
23271
23272 @item max_frames, m
23273 Set the maximum number of frames generated for each test, default value is 30.
23274
23275 @end table
23276
23277 Default value is "all", which will cycle through the list of all tests.
23278 @end table
23279
23280 Some examples:
23281 @example
23282 mptestsrc=t=dc_luma
23283 @end example
23284
23285 will generate a "dc_luma" test pattern.
23286
23287 @section frei0r_src
23288
23289 Provide a frei0r source.
23290
23291 To enable compilation of this filter you need to install the frei0r
23292 header and configure FFmpeg with @code{--enable-frei0r}.
23293
23294 This source accepts the following parameters:
23295
23296 @table @option
23297
23298 @item size
23299 The size of the video to generate. For the syntax of this option, check the
23300 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23301
23302 @item framerate
23303 The framerate of the generated video. It may be a string of the form
23304 @var{num}/@var{den} or a frame rate abbreviation.
23305
23306 @item filter_name
23307 The name to the frei0r source to load. For more information regarding frei0r and
23308 how to set the parameters, read the @ref{frei0r} section in the video filters
23309 documentation.
23310
23311 @item filter_params
23312 A '|'-separated list of parameters to pass to the frei0r source.
23313
23314 @end table
23315
23316 For example, to generate a frei0r partik0l source with size 200x200
23317 and frame rate 10 which is overlaid on the overlay filter main input:
23318 @example
23319 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
23320 @end example
23321
23322 @section life
23323
23324 Generate a life pattern.
23325
23326 This source is based on a generalization of John Conway's life game.
23327
23328 The sourced input represents a life grid, each pixel represents a cell
23329 which can be in one of two possible states, alive or dead. Every cell
23330 interacts with its eight neighbours, which are the cells that are
23331 horizontally, vertically, or diagonally adjacent.
23332
23333 At each interaction the grid evolves according to the adopted rule,
23334 which specifies the number of neighbor alive cells which will make a
23335 cell stay alive or born. The @option{rule} option allows one to specify
23336 the rule to adopt.
23337
23338 This source accepts the following options:
23339
23340 @table @option
23341 @item filename, f
23342 Set the file from which to read the initial grid state. In the file,
23343 each non-whitespace character is considered an alive cell, and newline
23344 is used to delimit the end of each row.
23345
23346 If this option is not specified, the initial grid is generated
23347 randomly.
23348
23349 @item rate, r
23350 Set the video rate, that is the number of frames generated per second.
23351 Default is 25.
23352
23353 @item random_fill_ratio, ratio
23354 Set the random fill ratio for the initial random grid. It is a
23355 floating point number value ranging from 0 to 1, defaults to 1/PHI.
23356 It is ignored when a file is specified.
23357
23358 @item random_seed, seed
23359 Set the seed for filling the initial random grid, must be an integer
23360 included between 0 and UINT32_MAX. If not specified, or if explicitly
23361 set to -1, the filter will try to use a good random seed on a best
23362 effort basis.
23363
23364 @item rule
23365 Set the life rule.
23366
23367 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
23368 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
23369 @var{NS} specifies the number of alive neighbor cells which make a
23370 live cell stay alive, and @var{NB} the number of alive neighbor cells
23371 which make a dead cell to become alive (i.e. to "born").
23372 "s" and "b" can be used in place of "S" and "B", respectively.
23373
23374 Alternatively a rule can be specified by an 18-bits integer. The 9
23375 high order bits are used to encode the next cell state if it is alive
23376 for each number of neighbor alive cells, the low order bits specify
23377 the rule for "borning" new cells. Higher order bits encode for an
23378 higher number of neighbor cells.
23379 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
23380 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
23381
23382 Default value is "S23/B3", which is the original Conway's game of life
23383 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
23384 cells, and will born a new cell if there are three alive cells around
23385 a dead cell.
23386
23387 @item size, s
23388 Set the size of the output video. For the syntax of this option, check the
23389 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23390
23391 If @option{filename} is specified, the size is set by default to the
23392 same size of the input file. If @option{size} is set, it must contain
23393 the size specified in the input file, and the initial grid defined in
23394 that file is centered in the larger resulting area.
23395
23396 If a filename is not specified, the size value defaults to "320x240"
23397 (used for a randomly generated initial grid).
23398
23399 @item stitch
23400 If set to 1, stitch the left and right grid edges together, and the
23401 top and bottom edges also. Defaults to 1.
23402
23403 @item mold
23404 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
23405 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
23406 value from 0 to 255.
23407
23408 @item life_color
23409 Set the color of living (or new born) cells.
23410
23411 @item death_color
23412 Set the color of dead cells. If @option{mold} is set, this is the first color
23413 used to represent a dead cell.
23414
23415 @item mold_color
23416 Set mold color, for definitely dead and moldy cells.
23417
23418 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
23419 ffmpeg-utils manual,ffmpeg-utils}.
23420 @end table
23421
23422 @subsection Examples
23423
23424 @itemize
23425 @item
23426 Read a grid from @file{pattern}, and center it on a grid of size
23427 300x300 pixels:
23428 @example
23429 life=f=pattern:s=300x300
23430 @end example
23431
23432 @item
23433 Generate a random grid of size 200x200, with a fill ratio of 2/3:
23434 @example
23435 life=ratio=2/3:s=200x200
23436 @end example
23437
23438 @item
23439 Specify a custom rule for evolving a randomly generated grid:
23440 @example
23441 life=rule=S14/B34
23442 @end example
23443
23444 @item
23445 Full example with slow death effect (mold) using @command{ffplay}:
23446 @example
23447 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
23448 @end example
23449 @end itemize
23450
23451 @anchor{allrgb}
23452 @anchor{allyuv}
23453 @anchor{color}
23454 @anchor{haldclutsrc}
23455 @anchor{nullsrc}
23456 @anchor{pal75bars}
23457 @anchor{pal100bars}
23458 @anchor{rgbtestsrc}
23459 @anchor{smptebars}
23460 @anchor{smptehdbars}
23461 @anchor{testsrc}
23462 @anchor{testsrc2}
23463 @anchor{yuvtestsrc}
23464 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
23465
23466 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
23467
23468 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
23469
23470 The @code{color} source provides an uniformly colored input.
23471
23472 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
23473 @ref{haldclut} filter.
23474
23475 The @code{nullsrc} source returns unprocessed video frames. It is
23476 mainly useful to be employed in analysis / debugging tools, or as the
23477 source for filters which ignore the input data.
23478
23479 The @code{pal75bars} source generates a color bars pattern, based on
23480 EBU PAL recommendations with 75% color levels.
23481
23482 The @code{pal100bars} source generates a color bars pattern, based on
23483 EBU PAL recommendations with 100% color levels.
23484
23485 The @code{rgbtestsrc} source generates an RGB test pattern useful for
23486 detecting RGB vs BGR issues. You should see a red, green and blue
23487 stripe from top to bottom.
23488
23489 The @code{smptebars} source generates a color bars pattern, based on
23490 the SMPTE Engineering Guideline EG 1-1990.
23491
23492 The @code{smptehdbars} source generates a color bars pattern, based on
23493 the SMPTE RP 219-2002.
23494
23495 The @code{testsrc} source generates a test video pattern, showing a
23496 color pattern, a scrolling gradient and a timestamp. This is mainly
23497 intended for testing purposes.
23498
23499 The @code{testsrc2} source is similar to testsrc, but supports more
23500 pixel formats instead of just @code{rgb24}. This allows using it as an
23501 input for other tests without requiring a format conversion.
23502
23503 The @code{yuvtestsrc} source generates an YUV test pattern. You should
23504 see a y, cb and cr stripe from top to bottom.
23505
23506 The sources accept the following parameters:
23507
23508 @table @option
23509
23510 @item level
23511 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
23512 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
23513 pixels to be used as identity matrix for 3D lookup tables. Each component is
23514 coded on a @code{1/(N*N)} scale.
23515
23516 @item color, c
23517 Specify the color of the source, only available in the @code{color}
23518 source. For the syntax of this option, check the
23519 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
23520
23521 @item size, s
23522 Specify the size of the sourced video. For the syntax of this option, check the
23523 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23524 The default value is @code{320x240}.
23525
23526 This option is not available with the @code{allrgb}, @code{allyuv}, and
23527 @code{haldclutsrc} filters.
23528
23529 @item rate, r
23530 Specify the frame rate of the sourced video, as the number of frames
23531 generated per second. It has to be a string in the format
23532 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23533 number or a valid video frame rate abbreviation. The default value is
23534 "25".
23535
23536 @item duration, d
23537 Set the duration of the sourced video. See
23538 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23539 for the accepted syntax.
23540
23541 If not specified, or the expressed duration is negative, the video is
23542 supposed to be generated forever.
23543
23544 Since the frame rate is used as time base, all frames including the last one
23545 will have their full duration. If the specified duration is not a multiple
23546 of the frame duration, it will be rounded up.
23547
23548 @item sar
23549 Set the sample aspect ratio of the sourced video.
23550
23551 @item alpha
23552 Specify the alpha (opacity) of the background, only available in the
23553 @code{testsrc2} source. The value must be between 0 (fully transparent) and
23554 255 (fully opaque, the default).
23555
23556 @item decimals, n
23557 Set the number of decimals to show in the timestamp, only available in the
23558 @code{testsrc} source.
23559
23560 The displayed timestamp value will correspond to the original
23561 timestamp value multiplied by the power of 10 of the specified
23562 value. Default value is 0.
23563 @end table
23564
23565 @subsection Examples
23566
23567 @itemize
23568 @item
23569 Generate a video with a duration of 5.3 seconds, with size
23570 176x144 and a frame rate of 10 frames per second:
23571 @example
23572 testsrc=duration=5.3:size=qcif:rate=10
23573 @end example
23574
23575 @item
23576 The following graph description will generate a red source
23577 with an opacity of 0.2, with size "qcif" and a frame rate of 10
23578 frames per second:
23579 @example
23580 color=c=red@@0.2:s=qcif:r=10
23581 @end example
23582
23583 @item
23584 If the input content is to be ignored, @code{nullsrc} can be used. The
23585 following command generates noise in the luminance plane by employing
23586 the @code{geq} filter:
23587 @example
23588 nullsrc=s=256x256, geq=random(1)*255:128:128
23589 @end example
23590 @end itemize
23591
23592 @subsection Commands
23593
23594 The @code{color} source supports the following commands:
23595
23596 @table @option
23597 @item c, color
23598 Set the color of the created image. Accepts the same syntax of the
23599 corresponding @option{color} option.
23600 @end table
23601
23602 @section openclsrc
23603
23604 Generate video using an OpenCL program.
23605
23606 @table @option
23607
23608 @item source
23609 OpenCL program source file.
23610
23611 @item kernel
23612 Kernel name in program.
23613
23614 @item size, s
23615 Size of frames to generate.  This must be set.
23616
23617 @item format
23618 Pixel format to use for the generated frames.  This must be set.
23619
23620 @item rate, r
23621 Number of frames generated every second.  Default value is '25'.
23622
23623 @end table
23624
23625 For details of how the program loading works, see the @ref{program_opencl}
23626 filter.
23627
23628 Example programs:
23629
23630 @itemize
23631 @item
23632 Generate a colour ramp by setting pixel values from the position of the pixel
23633 in the output image.  (Note that this will work with all pixel formats, but
23634 the generated output will not be the same.)
23635 @verbatim
23636 __kernel void ramp(__write_only image2d_t dst,
23637                    unsigned int index)
23638 {
23639     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23640
23641     float4 val;
23642     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
23643
23644     write_imagef(dst, loc, val);
23645 }
23646 @end verbatim
23647
23648 @item
23649 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
23650 @verbatim
23651 __kernel void sierpinski_carpet(__write_only image2d_t dst,
23652                                 unsigned int index)
23653 {
23654     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23655
23656     float4 value = 0.0f;
23657     int x = loc.x + index;
23658     int y = loc.y + index;
23659     while (x > 0 || y > 0) {
23660         if (x % 3 == 1 && y % 3 == 1) {
23661             value = 1.0f;
23662             break;
23663         }
23664         x /= 3;
23665         y /= 3;
23666     }
23667
23668     write_imagef(dst, loc, value);
23669 }
23670 @end verbatim
23671
23672 @end itemize
23673
23674 @section sierpinski
23675
23676 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
23677
23678 This source accepts the following options:
23679
23680 @table @option
23681 @item size, s
23682 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23683 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23684
23685 @item rate, r
23686 Set frame rate, expressed as number of frames per second. Default
23687 value is "25".
23688
23689 @item seed
23690 Set seed which is used for random panning.
23691
23692 @item jump
23693 Set max jump for single pan destination. Allowed range is from 1 to 10000.
23694
23695 @item type
23696 Set fractal type, can be default @code{carpet} or @code{triangle}.
23697 @end table
23698
23699 @c man end VIDEO SOURCES
23700
23701 @chapter Video Sinks
23702 @c man begin VIDEO SINKS
23703
23704 Below is a description of the currently available video sinks.
23705
23706 @section buffersink
23707
23708 Buffer video frames, and make them available to the end of the filter
23709 graph.
23710
23711 This sink is mainly intended for programmatic use, in particular
23712 through the interface defined in @file{libavfilter/buffersink.h}
23713 or the options system.
23714
23715 It accepts a pointer to an AVBufferSinkContext structure, which
23716 defines the incoming buffers' formats, to be passed as the opaque
23717 parameter to @code{avfilter_init_filter} for initialization.
23718
23719 @section nullsink
23720
23721 Null video sink: do absolutely nothing with the input video. It is
23722 mainly useful as a template and for use in analysis / debugging
23723 tools.
23724
23725 @c man end VIDEO SINKS
23726
23727 @chapter Multimedia Filters
23728 @c man begin MULTIMEDIA FILTERS
23729
23730 Below is a description of the currently available multimedia filters.
23731
23732 @section abitscope
23733
23734 Convert input audio to a video output, displaying the audio bit scope.
23735
23736 The filter accepts the following options:
23737
23738 @table @option
23739 @item rate, r
23740 Set frame rate, expressed as number of frames per second. Default
23741 value is "25".
23742
23743 @item size, s
23744 Specify the video size for the output. For the syntax of this option, check the
23745 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23746 Default value is @code{1024x256}.
23747
23748 @item colors
23749 Specify list of colors separated by space or by '|' which will be used to
23750 draw channels. Unrecognized or missing colors will be replaced
23751 by white color.
23752 @end table
23753
23754 @section adrawgraph
23755 Draw a graph using input audio metadata.
23756
23757 See @ref{drawgraph}
23758
23759 @section agraphmonitor
23760
23761 See @ref{graphmonitor}.
23762
23763 @section ahistogram
23764
23765 Convert input audio to a video output, displaying the volume histogram.
23766
23767 The filter accepts the following options:
23768
23769 @table @option
23770 @item dmode
23771 Specify how histogram is calculated.
23772
23773 It accepts the following values:
23774 @table @samp
23775 @item single
23776 Use single histogram for all channels.
23777 @item separate
23778 Use separate histogram for each channel.
23779 @end table
23780 Default is @code{single}.
23781
23782 @item rate, r
23783 Set frame rate, expressed as number of frames per second. Default
23784 value is "25".
23785
23786 @item size, s
23787 Specify the video size for the output. For the syntax of this option, check the
23788 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23789 Default value is @code{hd720}.
23790
23791 @item scale
23792 Set display scale.
23793
23794 It accepts the following values:
23795 @table @samp
23796 @item log
23797 logarithmic
23798 @item sqrt
23799 square root
23800 @item cbrt
23801 cubic root
23802 @item lin
23803 linear
23804 @item rlog
23805 reverse logarithmic
23806 @end table
23807 Default is @code{log}.
23808
23809 @item ascale
23810 Set amplitude scale.
23811
23812 It accepts the following values:
23813 @table @samp
23814 @item log
23815 logarithmic
23816 @item lin
23817 linear
23818 @end table
23819 Default is @code{log}.
23820
23821 @item acount
23822 Set how much frames to accumulate in histogram.
23823 Default is 1. Setting this to -1 accumulates all frames.
23824
23825 @item rheight
23826 Set histogram ratio of window height.
23827
23828 @item slide
23829 Set sonogram sliding.
23830
23831 It accepts the following values:
23832 @table @samp
23833 @item replace
23834 replace old rows with new ones.
23835 @item scroll
23836 scroll from top to bottom.
23837 @end table
23838 Default is @code{replace}.
23839 @end table
23840
23841 @section aphasemeter
23842
23843 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
23844 representing mean phase of current audio frame. A video output can also be produced and is
23845 enabled by default. The audio is passed through as first output.
23846
23847 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
23848 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
23849 and @code{1} means channels are in phase.
23850
23851 The filter accepts the following options, all related to its video output:
23852
23853 @table @option
23854 @item rate, r
23855 Set the output frame rate. Default value is @code{25}.
23856
23857 @item size, s
23858 Set the video size for the output. For the syntax of this option, check the
23859 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23860 Default value is @code{800x400}.
23861
23862 @item rc
23863 @item gc
23864 @item bc
23865 Specify the red, green, blue contrast. Default values are @code{2},
23866 @code{7} and @code{1}.
23867 Allowed range is @code{[0, 255]}.
23868
23869 @item mpc
23870 Set color which will be used for drawing median phase. If color is
23871 @code{none} which is default, no median phase value will be drawn.
23872
23873 @item video
23874 Enable video output. Default is enabled.
23875 @end table
23876
23877 @subsection phasing detection
23878
23879 The filter also detects out of phase and mono sequences in stereo streams.
23880 It logs the sequence start, end and duration when it lasts longer or as long as the minimum set.
23881
23882 The filter accepts the following options for this detection:
23883
23884 @table @option
23885 @item phasing
23886 Enable mono and out of phase detection. Default is disabled.
23887
23888 @item tolerance, t
23889 Set phase tolerance for mono detection, in amplitude ratio. Default is @code{0}.
23890 Allowed range is @code{[0, 1]}.
23891
23892 @item angle, a
23893 Set angle threshold for out of phase detection, in degree. Default is @code{170}.
23894 Allowed range is @code{[90, 180]}.
23895
23896 @item duration, d
23897 Set mono or out of phase duration until notification, expressed in seconds. Default is @code{2}.
23898 @end table
23899
23900 @subsection Examples
23901
23902 @itemize
23903 @item
23904 Complete example with @command{ffmpeg} to detect 1 second of mono with 0.001 phase tolerance:
23905 @example
23906 ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
23907 @end example
23908 @end itemize
23909
23910 @section avectorscope
23911
23912 Convert input audio to a video output, representing the audio vector
23913 scope.
23914
23915 The filter is used to measure the difference between channels of stereo
23916 audio stream. A monaural signal, consisting of identical left and right
23917 signal, results in straight vertical line. Any stereo separation is visible
23918 as a deviation from this line, creating a Lissajous figure.
23919 If the straight (or deviation from it) but horizontal line appears this
23920 indicates that the left and right channels are out of phase.
23921
23922 The filter accepts the following options:
23923
23924 @table @option
23925 @item mode, m
23926 Set the vectorscope mode.
23927
23928 Available values are:
23929 @table @samp
23930 @item lissajous
23931 Lissajous rotated by 45 degrees.
23932
23933 @item lissajous_xy
23934 Same as above but not rotated.
23935
23936 @item polar
23937 Shape resembling half of circle.
23938 @end table
23939
23940 Default value is @samp{lissajous}.
23941
23942 @item size, s
23943 Set the video size for the output. For the syntax of this option, check the
23944 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23945 Default value is @code{400x400}.
23946
23947 @item rate, r
23948 Set the output frame rate. Default value is @code{25}.
23949
23950 @item rc
23951 @item gc
23952 @item bc
23953 @item ac
23954 Specify the red, green, blue and alpha contrast. Default values are @code{40},
23955 @code{160}, @code{80} and @code{255}.
23956 Allowed range is @code{[0, 255]}.
23957
23958 @item rf
23959 @item gf
23960 @item bf
23961 @item af
23962 Specify the red, green, blue and alpha fade. Default values are @code{15},
23963 @code{10}, @code{5} and @code{5}.
23964 Allowed range is @code{[0, 255]}.
23965
23966 @item zoom
23967 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
23968 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
23969
23970 @item draw
23971 Set the vectorscope drawing mode.
23972
23973 Available values are:
23974 @table @samp
23975 @item dot
23976 Draw dot for each sample.
23977
23978 @item line
23979 Draw line between previous and current sample.
23980 @end table
23981
23982 Default value is @samp{dot}.
23983
23984 @item scale
23985 Specify amplitude scale of audio samples.
23986
23987 Available values are:
23988 @table @samp
23989 @item lin
23990 Linear.
23991
23992 @item sqrt
23993 Square root.
23994
23995 @item cbrt
23996 Cubic root.
23997
23998 @item log
23999 Logarithmic.
24000 @end table
24001
24002 @item swap
24003 Swap left channel axis with right channel axis.
24004
24005 @item mirror
24006 Mirror axis.
24007
24008 @table @samp
24009 @item none
24010 No mirror.
24011
24012 @item x
24013 Mirror only x axis.
24014
24015 @item y
24016 Mirror only y axis.
24017
24018 @item xy
24019 Mirror both axis.
24020 @end table
24021
24022 @end table
24023
24024 @subsection Examples
24025
24026 @itemize
24027 @item
24028 Complete example using @command{ffplay}:
24029 @example
24030 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
24031              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
24032 @end example
24033 @end itemize
24034
24035 @section bench, abench
24036
24037 Benchmark part of a filtergraph.
24038
24039 The filter accepts the following options:
24040
24041 @table @option
24042 @item action
24043 Start or stop a timer.
24044
24045 Available values are:
24046 @table @samp
24047 @item start
24048 Get the current time, set it as frame metadata (using the key
24049 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
24050
24051 @item stop
24052 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
24053 the input frame metadata to get the time difference. Time difference, average,
24054 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
24055 @code{min}) are then printed. The timestamps are expressed in seconds.
24056 @end table
24057 @end table
24058
24059 @subsection Examples
24060
24061 @itemize
24062 @item
24063 Benchmark @ref{selectivecolor} filter:
24064 @example
24065 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
24066 @end example
24067 @end itemize
24068
24069 @section concat
24070
24071 Concatenate audio and video streams, joining them together one after the
24072 other.
24073
24074 The filter works on segments of synchronized video and audio streams. All
24075 segments must have the same number of streams of each type, and that will
24076 also be the number of streams at output.
24077
24078 The filter accepts the following options:
24079
24080 @table @option
24081
24082 @item n
24083 Set the number of segments. Default is 2.
24084
24085 @item v
24086 Set the number of output video streams, that is also the number of video
24087 streams in each segment. Default is 1.
24088
24089 @item a
24090 Set the number of output audio streams, that is also the number of audio
24091 streams in each segment. Default is 0.
24092
24093 @item unsafe
24094 Activate unsafe mode: do not fail if segments have a different format.
24095
24096 @end table
24097
24098 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
24099 @var{a} audio outputs.
24100
24101 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
24102 segment, in the same order as the outputs, then the inputs for the second
24103 segment, etc.
24104
24105 Related streams do not always have exactly the same duration, for various
24106 reasons including codec frame size or sloppy authoring. For that reason,
24107 related synchronized streams (e.g. a video and its audio track) should be
24108 concatenated at once. The concat filter will use the duration of the longest
24109 stream in each segment (except the last one), and if necessary pad shorter
24110 audio streams with silence.
24111
24112 For this filter to work correctly, all segments must start at timestamp 0.
24113
24114 All corresponding streams must have the same parameters in all segments; the
24115 filtering system will automatically select a common pixel format for video
24116 streams, and a common sample format, sample rate and channel layout for
24117 audio streams, but other settings, such as resolution, must be converted
24118 explicitly by the user.
24119
24120 Different frame rates are acceptable but will result in variable frame rate
24121 at output; be sure to configure the output file to handle it.
24122
24123 @subsection Examples
24124
24125 @itemize
24126 @item
24127 Concatenate an opening, an episode and an ending, all in bilingual version
24128 (video in stream 0, audio in streams 1 and 2):
24129 @example
24130 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
24131   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
24132    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
24133   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
24134 @end example
24135
24136 @item
24137 Concatenate two parts, handling audio and video separately, using the
24138 (a)movie sources, and adjusting the resolution:
24139 @example
24140 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
24141 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
24142 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
24143 @end example
24144 Note that a desync will happen at the stitch if the audio and video streams
24145 do not have exactly the same duration in the first file.
24146
24147 @end itemize
24148
24149 @subsection Commands
24150
24151 This filter supports the following commands:
24152 @table @option
24153 @item next
24154 Close the current segment and step to the next one
24155 @end table
24156
24157 @anchor{ebur128}
24158 @section ebur128
24159
24160 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
24161 level. By default, it logs a message at a frequency of 10Hz with the
24162 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
24163 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
24164
24165 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
24166 sample format is double-precision floating point. The input stream will be converted to
24167 this specification, if needed. Users may need to insert aformat and/or aresample filters
24168 after this filter to obtain the original parameters.
24169
24170 The filter also has a video output (see the @var{video} option) with a real
24171 time graph to observe the loudness evolution. The graphic contains the logged
24172 message mentioned above, so it is not printed anymore when this option is set,
24173 unless the verbose logging is set. The main graphing area contains the
24174 short-term loudness (3 seconds of analysis), and the gauge on the right is for
24175 the momentary loudness (400 milliseconds), but can optionally be configured
24176 to instead display short-term loudness (see @var{gauge}).
24177
24178 The green area marks a  +/- 1LU target range around the target loudness
24179 (-23LUFS by default, unless modified through @var{target}).
24180
24181 More information about the Loudness Recommendation EBU R128 on
24182 @url{http://tech.ebu.ch/loudness}.
24183
24184 The filter accepts the following options:
24185
24186 @table @option
24187
24188 @item video
24189 Activate the video output. The audio stream is passed unchanged whether this
24190 option is set or no. The video stream will be the first output stream if
24191 activated. Default is @code{0}.
24192
24193 @item size
24194 Set the video size. This option is for video only. For the syntax of this
24195 option, check the
24196 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24197 Default and minimum resolution is @code{640x480}.
24198
24199 @item meter
24200 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
24201 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
24202 other integer value between this range is allowed.
24203
24204 @item metadata
24205 Set metadata injection. If set to @code{1}, the audio input will be segmented
24206 into 100ms output frames, each of them containing various loudness information
24207 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
24208
24209 Default is @code{0}.
24210
24211 @item framelog
24212 Force the frame logging level.
24213
24214 Available values are:
24215 @table @samp
24216 @item info
24217 information logging level
24218 @item verbose
24219 verbose logging level
24220 @end table
24221
24222 By default, the logging level is set to @var{info}. If the @option{video} or
24223 the @option{metadata} options are set, it switches to @var{verbose}.
24224
24225 @item peak
24226 Set peak mode(s).
24227
24228 Available modes can be cumulated (the option is a @code{flag} type). Possible
24229 values are:
24230 @table @samp
24231 @item none
24232 Disable any peak mode (default).
24233 @item sample
24234 Enable sample-peak mode.
24235
24236 Simple peak mode looking for the higher sample value. It logs a message
24237 for sample-peak (identified by @code{SPK}).
24238 @item true
24239 Enable true-peak mode.
24240
24241 If enabled, the peak lookup is done on an over-sampled version of the input
24242 stream for better peak accuracy. It logs a message for true-peak.
24243 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
24244 This mode requires a build with @code{libswresample}.
24245 @end table
24246
24247 @item dualmono
24248 Treat mono input files as "dual mono". If a mono file is intended for playback
24249 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
24250 If set to @code{true}, this option will compensate for this effect.
24251 Multi-channel input files are not affected by this option.
24252
24253 @item panlaw
24254 Set a specific pan law to be used for the measurement of dual mono files.
24255 This parameter is optional, and has a default value of -3.01dB.
24256
24257 @item target
24258 Set a specific target level (in LUFS) used as relative zero in the visualization.
24259 This parameter is optional and has a default value of -23LUFS as specified
24260 by EBU R128. However, material published online may prefer a level of -16LUFS
24261 (e.g. for use with podcasts or video platforms).
24262
24263 @item gauge
24264 Set the value displayed by the gauge. Valid values are @code{momentary} and s
24265 @code{shortterm}. By default the momentary value will be used, but in certain
24266 scenarios it may be more useful to observe the short term value instead (e.g.
24267 live mixing).
24268
24269 @item scale
24270 Sets the display scale for the loudness. Valid parameters are @code{absolute}
24271 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
24272 video output, not the summary or continuous log output.
24273 @end table
24274
24275 @subsection Examples
24276
24277 @itemize
24278 @item
24279 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
24280 @example
24281 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
24282 @end example
24283
24284 @item
24285 Run an analysis with @command{ffmpeg}:
24286 @example
24287 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
24288 @end example
24289 @end itemize
24290
24291 @section interleave, ainterleave
24292
24293 Temporally interleave frames from several inputs.
24294
24295 @code{interleave} works with video inputs, @code{ainterleave} with audio.
24296
24297 These filters read frames from several inputs and send the oldest
24298 queued frame to the output.
24299
24300 Input streams must have well defined, monotonically increasing frame
24301 timestamp values.
24302
24303 In order to submit one frame to output, these filters need to enqueue
24304 at least one frame for each input, so they cannot work in case one
24305 input is not yet terminated and will not receive incoming frames.
24306
24307 For example consider the case when one input is a @code{select} filter
24308 which always drops input frames. The @code{interleave} filter will keep
24309 reading from that input, but it will never be able to send new frames
24310 to output until the input sends an end-of-stream signal.
24311
24312 Also, depending on inputs synchronization, the filters will drop
24313 frames in case one input receives more frames than the other ones, and
24314 the queue is already filled.
24315
24316 These filters accept the following options:
24317
24318 @table @option
24319 @item nb_inputs, n
24320 Set the number of different inputs, it is 2 by default.
24321
24322 @item duration
24323 How to determine the end-of-stream.
24324
24325 @table @option
24326 @item longest
24327 The duration of the longest input. (default)
24328
24329 @item shortest
24330 The duration of the shortest input.
24331
24332 @item first
24333 The duration of the first input.
24334 @end table
24335
24336 @end table
24337
24338 @subsection Examples
24339
24340 @itemize
24341 @item
24342 Interleave frames belonging to different streams using @command{ffmpeg}:
24343 @example
24344 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
24345 @end example
24346
24347 @item
24348 Add flickering blur effect:
24349 @example
24350 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
24351 @end example
24352 @end itemize
24353
24354 @section metadata, ametadata
24355
24356 Manipulate frame metadata.
24357
24358 This filter accepts the following options:
24359
24360 @table @option
24361 @item mode
24362 Set mode of operation of the filter.
24363
24364 Can be one of the following:
24365
24366 @table @samp
24367 @item select
24368 If both @code{value} and @code{key} is set, select frames
24369 which have such metadata. If only @code{key} is set, select
24370 every frame that has such key in metadata.
24371
24372 @item add
24373 Add new metadata @code{key} and @code{value}. If key is already available
24374 do nothing.
24375
24376 @item modify
24377 Modify value of already present key.
24378
24379 @item delete
24380 If @code{value} is set, delete only keys that have such value.
24381 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
24382 the frame.
24383
24384 @item print
24385 Print key and its value if metadata was found. If @code{key} is not set print all
24386 metadata values available in frame.
24387 @end table
24388
24389 @item key
24390 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
24391
24392 @item value
24393 Set metadata value which will be used. This option is mandatory for
24394 @code{modify} and @code{add} mode.
24395
24396 @item function
24397 Which function to use when comparing metadata value and @code{value}.
24398
24399 Can be one of following:
24400
24401 @table @samp
24402 @item same_str
24403 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
24404
24405 @item starts_with
24406 Values are interpreted as strings, returns true if metadata value starts with
24407 the @code{value} option string.
24408
24409 @item less
24410 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
24411
24412 @item equal
24413 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
24414
24415 @item greater
24416 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
24417
24418 @item expr
24419 Values are interpreted as floats, returns true if expression from option @code{expr}
24420 evaluates to true.
24421
24422 @item ends_with
24423 Values are interpreted as strings, returns true if metadata value ends with
24424 the @code{value} option string.
24425 @end table
24426
24427 @item expr
24428 Set expression which is used when @code{function} is set to @code{expr}.
24429 The expression is evaluated through the eval API and can contain the following
24430 constants:
24431
24432 @table @option
24433 @item VALUE1
24434 Float representation of @code{value} from metadata key.
24435
24436 @item VALUE2
24437 Float representation of @code{value} as supplied by user in @code{value} option.
24438 @end table
24439
24440 @item file
24441 If specified in @code{print} mode, output is written to the named file. Instead of
24442 plain filename any writable url can be specified. Filename ``-'' is a shorthand
24443 for standard output. If @code{file} option is not set, output is written to the log
24444 with AV_LOG_INFO loglevel.
24445
24446 @item direct
24447 Reduces buffering in print mode when output is written to a URL set using @var{file}.
24448
24449 @end table
24450
24451 @subsection Examples
24452
24453 @itemize
24454 @item
24455 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
24456 between 0 and 1.
24457 @example
24458 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
24459 @end example
24460 @item
24461 Print silencedetect output to file @file{metadata.txt}.
24462 @example
24463 silencedetect,ametadata=mode=print:file=metadata.txt
24464 @end example
24465 @item
24466 Direct all metadata to a pipe with file descriptor 4.
24467 @example
24468 metadata=mode=print:file='pipe\:4'
24469 @end example
24470 @end itemize
24471
24472 @section perms, aperms
24473
24474 Set read/write permissions for the output frames.
24475
24476 These filters are mainly aimed at developers to test direct path in the
24477 following filter in the filtergraph.
24478
24479 The filters accept the following options:
24480
24481 @table @option
24482 @item mode
24483 Select the permissions mode.
24484
24485 It accepts the following values:
24486 @table @samp
24487 @item none
24488 Do nothing. This is the default.
24489 @item ro
24490 Set all the output frames read-only.
24491 @item rw
24492 Set all the output frames directly writable.
24493 @item toggle
24494 Make the frame read-only if writable, and writable if read-only.
24495 @item random
24496 Set each output frame read-only or writable randomly.
24497 @end table
24498
24499 @item seed
24500 Set the seed for the @var{random} mode, must be an integer included between
24501 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
24502 @code{-1}, the filter will try to use a good random seed on a best effort
24503 basis.
24504 @end table
24505
24506 Note: in case of auto-inserted filter between the permission filter and the
24507 following one, the permission might not be received as expected in that
24508 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
24509 perms/aperms filter can avoid this problem.
24510
24511 @section realtime, arealtime
24512
24513 Slow down filtering to match real time approximately.
24514
24515 These filters will pause the filtering for a variable amount of time to
24516 match the output rate with the input timestamps.
24517 They are similar to the @option{re} option to @code{ffmpeg}.
24518
24519 They accept the following options:
24520
24521 @table @option
24522 @item limit
24523 Time limit for the pauses. Any pause longer than that will be considered
24524 a timestamp discontinuity and reset the timer. Default is 2 seconds.
24525 @item speed
24526 Speed factor for processing. The value must be a float larger than zero.
24527 Values larger than 1.0 will result in faster than realtime processing,
24528 smaller will slow processing down. The @var{limit} is automatically adapted
24529 accordingly. Default is 1.0.
24530
24531 A processing speed faster than what is possible without these filters cannot
24532 be achieved.
24533 @end table
24534
24535 @anchor{select}
24536 @section select, aselect
24537
24538 Select frames to pass in output.
24539
24540 This filter accepts the following options:
24541
24542 @table @option
24543
24544 @item expr, e
24545 Set expression, which is evaluated for each input frame.
24546
24547 If the expression is evaluated to zero, the frame is discarded.
24548
24549 If the evaluation result is negative or NaN, the frame is sent to the
24550 first output; otherwise it is sent to the output with index
24551 @code{ceil(val)-1}, assuming that the input index starts from 0.
24552
24553 For example a value of @code{1.2} corresponds to the output with index
24554 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
24555
24556 @item outputs, n
24557 Set the number of outputs. The output to which to send the selected
24558 frame is based on the result of the evaluation. Default value is 1.
24559 @end table
24560
24561 The expression can contain the following constants:
24562
24563 @table @option
24564 @item n
24565 The (sequential) number of the filtered frame, starting from 0.
24566
24567 @item selected_n
24568 The (sequential) number of the selected frame, starting from 0.
24569
24570 @item prev_selected_n
24571 The sequential number of the last selected frame. It's NAN if undefined.
24572
24573 @item TB
24574 The timebase of the input timestamps.
24575
24576 @item pts
24577 The PTS (Presentation TimeStamp) of the filtered video frame,
24578 expressed in @var{TB} units. It's NAN if undefined.
24579
24580 @item t
24581 The PTS of the filtered video frame,
24582 expressed in seconds. It's NAN if undefined.
24583
24584 @item prev_pts
24585 The PTS of the previously filtered video frame. It's NAN if undefined.
24586
24587 @item prev_selected_pts
24588 The PTS of the last previously filtered video frame. It's NAN if undefined.
24589
24590 @item prev_selected_t
24591 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
24592
24593 @item start_pts
24594 The PTS of the first video frame in the video. It's NAN if undefined.
24595
24596 @item start_t
24597 The time of the first video frame in the video. It's NAN if undefined.
24598
24599 @item pict_type @emph{(video only)}
24600 The type of the filtered frame. It can assume one of the following
24601 values:
24602 @table @option
24603 @item I
24604 @item P
24605 @item B
24606 @item S
24607 @item SI
24608 @item SP
24609 @item BI
24610 @end table
24611
24612 @item interlace_type @emph{(video only)}
24613 The frame interlace type. It can assume one of the following values:
24614 @table @option
24615 @item PROGRESSIVE
24616 The frame is progressive (not interlaced).
24617 @item TOPFIRST
24618 The frame is top-field-first.
24619 @item BOTTOMFIRST
24620 The frame is bottom-field-first.
24621 @end table
24622
24623 @item consumed_sample_n @emph{(audio only)}
24624 the number of selected samples before the current frame
24625
24626 @item samples_n @emph{(audio only)}
24627 the number of samples in the current frame
24628
24629 @item sample_rate @emph{(audio only)}
24630 the input sample rate
24631
24632 @item key
24633 This is 1 if the filtered frame is a key-frame, 0 otherwise.
24634
24635 @item pos
24636 the position in the file of the filtered frame, -1 if the information
24637 is not available (e.g. for synthetic video)
24638
24639 @item scene @emph{(video only)}
24640 value between 0 and 1 to indicate a new scene; a low value reflects a low
24641 probability for the current frame to introduce a new scene, while a higher
24642 value means the current frame is more likely to be one (see the example below)
24643
24644 @item concatdec_select
24645 The concat demuxer can select only part of a concat input file by setting an
24646 inpoint and an outpoint, but the output packets may not be entirely contained
24647 in the selected interval. By using this variable, it is possible to skip frames
24648 generated by the concat demuxer which are not exactly contained in the selected
24649 interval.
24650
24651 This works by comparing the frame pts against the @var{lavf.concat.start_time}
24652 and the @var{lavf.concat.duration} packet metadata values which are also
24653 present in the decoded frames.
24654
24655 The @var{concatdec_select} variable is -1 if the frame pts is at least
24656 start_time and either the duration metadata is missing or the frame pts is less
24657 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
24658 missing.
24659
24660 That basically means that an input frame is selected if its pts is within the
24661 interval set by the concat demuxer.
24662
24663 @end table
24664
24665 The default value of the select expression is "1".
24666
24667 @subsection Examples
24668
24669 @itemize
24670 @item
24671 Select all frames in input:
24672 @example
24673 select
24674 @end example
24675
24676 The example above is the same as:
24677 @example
24678 select=1
24679 @end example
24680
24681 @item
24682 Skip all frames:
24683 @example
24684 select=0
24685 @end example
24686
24687 @item
24688 Select only I-frames:
24689 @example
24690 select='eq(pict_type\,I)'
24691 @end example
24692
24693 @item
24694 Select one frame every 100:
24695 @example
24696 select='not(mod(n\,100))'
24697 @end example
24698
24699 @item
24700 Select only frames contained in the 10-20 time interval:
24701 @example
24702 select=between(t\,10\,20)
24703 @end example
24704
24705 @item
24706 Select only I-frames contained in the 10-20 time interval:
24707 @example
24708 select=between(t\,10\,20)*eq(pict_type\,I)
24709 @end example
24710
24711 @item
24712 Select frames with a minimum distance of 10 seconds:
24713 @example
24714 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
24715 @end example
24716
24717 @item
24718 Use aselect to select only audio frames with samples number > 100:
24719 @example
24720 aselect='gt(samples_n\,100)'
24721 @end example
24722
24723 @item
24724 Create a mosaic of the first scenes:
24725 @example
24726 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
24727 @end example
24728
24729 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
24730 choice.
24731
24732 @item
24733 Send even and odd frames to separate outputs, and compose them:
24734 @example
24735 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
24736 @end example
24737
24738 @item
24739 Select useful frames from an ffconcat file which is using inpoints and
24740 outpoints but where the source files are not intra frame only.
24741 @example
24742 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
24743 @end example
24744 @end itemize
24745
24746 @section sendcmd, asendcmd
24747
24748 Send commands to filters in the filtergraph.
24749
24750 These filters read commands to be sent to other filters in the
24751 filtergraph.
24752
24753 @code{sendcmd} must be inserted between two video filters,
24754 @code{asendcmd} must be inserted between two audio filters, but apart
24755 from that they act the same way.
24756
24757 The specification of commands can be provided in the filter arguments
24758 with the @var{commands} option, or in a file specified by the
24759 @var{filename} option.
24760
24761 These filters accept the following options:
24762 @table @option
24763 @item commands, c
24764 Set the commands to be read and sent to the other filters.
24765 @item filename, f
24766 Set the filename of the commands to be read and sent to the other
24767 filters.
24768 @end table
24769
24770 @subsection Commands syntax
24771
24772 A commands description consists of a sequence of interval
24773 specifications, comprising a list of commands to be executed when a
24774 particular event related to that interval occurs. The occurring event
24775 is typically the current frame time entering or leaving a given time
24776 interval.
24777
24778 An interval is specified by the following syntax:
24779 @example
24780 @var{START}[-@var{END}] @var{COMMANDS};
24781 @end example
24782
24783 The time interval is specified by the @var{START} and @var{END} times.
24784 @var{END} is optional and defaults to the maximum time.
24785
24786 The current frame time is considered within the specified interval if
24787 it is included in the interval [@var{START}, @var{END}), that is when
24788 the time is greater or equal to @var{START} and is lesser than
24789 @var{END}.
24790
24791 @var{COMMANDS} consists of a sequence of one or more command
24792 specifications, separated by ",", relating to that interval.  The
24793 syntax of a command specification is given by:
24794 @example
24795 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
24796 @end example
24797
24798 @var{FLAGS} is optional and specifies the type of events relating to
24799 the time interval which enable sending the specified command, and must
24800 be a non-null sequence of identifier flags separated by "+" or "|" and
24801 enclosed between "[" and "]".
24802
24803 The following flags are recognized:
24804 @table @option
24805 @item enter
24806 The command is sent when the current frame timestamp enters the
24807 specified interval. In other words, the command is sent when the
24808 previous frame timestamp was not in the given interval, and the
24809 current is.
24810
24811 @item leave
24812 The command is sent when the current frame timestamp leaves the
24813 specified interval. In other words, the command is sent when the
24814 previous frame timestamp was in the given interval, and the
24815 current is not.
24816
24817 @item expr
24818 The command @var{ARG} is interpreted as expression and result of
24819 expression is passed as @var{ARG}.
24820
24821 The expression is evaluated through the eval API and can contain the following
24822 constants:
24823
24824 @table @option
24825 @item POS
24826 Original position in the file of the frame, or undefined if undefined
24827 for the current frame.
24828
24829 @item PTS
24830 The presentation timestamp in input.
24831
24832 @item N
24833 The count of the input frame for video or audio, starting from 0.
24834
24835 @item T
24836 The time in seconds of the current frame.
24837
24838 @item TS
24839 The start time in seconds of the current command interval.
24840
24841 @item TE
24842 The end time in seconds of the current command interval.
24843
24844 @item TI
24845 The interpolated time of the current command interval, TI = (T - TS) / (TE - TS).
24846 @end table
24847
24848 @end table
24849
24850 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
24851 assumed.
24852
24853 @var{TARGET} specifies the target of the command, usually the name of
24854 the filter class or a specific filter instance name.
24855
24856 @var{COMMAND} specifies the name of the command for the target filter.
24857
24858 @var{ARG} is optional and specifies the optional list of argument for
24859 the given @var{COMMAND}.
24860
24861 Between one interval specification and another, whitespaces, or
24862 sequences of characters starting with @code{#} until the end of line,
24863 are ignored and can be used to annotate comments.
24864
24865 A simplified BNF description of the commands specification syntax
24866 follows:
24867 @example
24868 @var{COMMAND_FLAG}  ::= "enter" | "leave"
24869 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
24870 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
24871 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
24872 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
24873 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
24874 @end example
24875
24876 @subsection Examples
24877
24878 @itemize
24879 @item
24880 Specify audio tempo change at second 4:
24881 @example
24882 asendcmd=c='4.0 atempo tempo 1.5',atempo
24883 @end example
24884
24885 @item
24886 Target a specific filter instance:
24887 @example
24888 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
24889 @end example
24890
24891 @item
24892 Specify a list of drawtext and hue commands in a file.
24893 @example
24894 # show text in the interval 5-10
24895 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
24896          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
24897
24898 # desaturate the image in the interval 15-20
24899 15.0-20.0 [enter] hue s 0,
24900           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
24901           [leave] hue s 1,
24902           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
24903
24904 # apply an exponential saturation fade-out effect, starting from time 25
24905 25 [enter] hue s exp(25-t)
24906 @end example
24907
24908 A filtergraph allowing to read and process the above command list
24909 stored in a file @file{test.cmd}, can be specified with:
24910 @example
24911 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
24912 @end example
24913 @end itemize
24914
24915 @anchor{setpts}
24916 @section setpts, asetpts
24917
24918 Change the PTS (presentation timestamp) of the input frames.
24919
24920 @code{setpts} works on video frames, @code{asetpts} on audio frames.
24921
24922 This filter accepts the following options:
24923
24924 @table @option
24925
24926 @item expr
24927 The expression which is evaluated for each frame to construct its timestamp.
24928
24929 @end table
24930
24931 The expression is evaluated through the eval API and can contain the following
24932 constants:
24933
24934 @table @option
24935 @item FRAME_RATE, FR
24936 frame rate, only defined for constant frame-rate video
24937
24938 @item PTS
24939 The presentation timestamp in input
24940
24941 @item N
24942 The count of the input frame for video or the number of consumed samples,
24943 not including the current frame for audio, starting from 0.
24944
24945 @item NB_CONSUMED_SAMPLES
24946 The number of consumed samples, not including the current frame (only
24947 audio)
24948
24949 @item NB_SAMPLES, S
24950 The number of samples in the current frame (only audio)
24951
24952 @item SAMPLE_RATE, SR
24953 The audio sample rate.
24954
24955 @item STARTPTS
24956 The PTS of the first frame.
24957
24958 @item STARTT
24959 the time in seconds of the first frame
24960
24961 @item INTERLACED
24962 State whether the current frame is interlaced.
24963
24964 @item T
24965 the time in seconds of the current frame
24966
24967 @item POS
24968 original position in the file of the frame, or undefined if undefined
24969 for the current frame
24970
24971 @item PREV_INPTS
24972 The previous input PTS.
24973
24974 @item PREV_INT
24975 previous input time in seconds
24976
24977 @item PREV_OUTPTS
24978 The previous output PTS.
24979
24980 @item PREV_OUTT
24981 previous output time in seconds
24982
24983 @item RTCTIME
24984 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
24985 instead.
24986
24987 @item RTCSTART
24988 The wallclock (RTC) time at the start of the movie in microseconds.
24989
24990 @item TB
24991 The timebase of the input timestamps.
24992
24993 @end table
24994
24995 @subsection Examples
24996
24997 @itemize
24998 @item
24999 Start counting PTS from zero
25000 @example
25001 setpts=PTS-STARTPTS
25002 @end example
25003
25004 @item
25005 Apply fast motion effect:
25006 @example
25007 setpts=0.5*PTS
25008 @end example
25009
25010 @item
25011 Apply slow motion effect:
25012 @example
25013 setpts=2.0*PTS
25014 @end example
25015
25016 @item
25017 Set fixed rate of 25 frames per second:
25018 @example
25019 setpts=N/(25*TB)
25020 @end example
25021
25022 @item
25023 Set fixed rate 25 fps with some jitter:
25024 @example
25025 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
25026 @end example
25027
25028 @item
25029 Apply an offset of 10 seconds to the input PTS:
25030 @example
25031 setpts=PTS+10/TB
25032 @end example
25033
25034 @item
25035 Generate timestamps from a "live source" and rebase onto the current timebase:
25036 @example
25037 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
25038 @end example
25039
25040 @item
25041 Generate timestamps by counting samples:
25042 @example
25043 asetpts=N/SR/TB
25044 @end example
25045
25046 @end itemize
25047
25048 @section setrange
25049
25050 Force color range for the output video frame.
25051
25052 The @code{setrange} filter marks the color range property for the
25053 output frames. It does not change the input frame, but only sets the
25054 corresponding property, which affects how the frame is treated by
25055 following filters.
25056
25057 The filter accepts the following options:
25058
25059 @table @option
25060
25061 @item range
25062 Available values are:
25063
25064 @table @samp
25065 @item auto
25066 Keep the same color range property.
25067
25068 @item unspecified, unknown
25069 Set the color range as unspecified.
25070
25071 @item limited, tv, mpeg
25072 Set the color range as limited.
25073
25074 @item full, pc, jpeg
25075 Set the color range as full.
25076 @end table
25077 @end table
25078
25079 @section settb, asettb
25080
25081 Set the timebase to use for the output frames timestamps.
25082 It is mainly useful for testing timebase configuration.
25083
25084 It accepts the following parameters:
25085
25086 @table @option
25087
25088 @item expr, tb
25089 The expression which is evaluated into the output timebase.
25090
25091 @end table
25092
25093 The value for @option{tb} is an arithmetic expression representing a
25094 rational. The expression can contain the constants "AVTB" (the default
25095 timebase), "intb" (the input timebase) and "sr" (the sample rate,
25096 audio only). Default value is "intb".
25097
25098 @subsection Examples
25099
25100 @itemize
25101 @item
25102 Set the timebase to 1/25:
25103 @example
25104 settb=expr=1/25
25105 @end example
25106
25107 @item
25108 Set the timebase to 1/10:
25109 @example
25110 settb=expr=0.1
25111 @end example
25112
25113 @item
25114 Set the timebase to 1001/1000:
25115 @example
25116 settb=1+0.001
25117 @end example
25118
25119 @item
25120 Set the timebase to 2*intb:
25121 @example
25122 settb=2*intb
25123 @end example
25124
25125 @item
25126 Set the default timebase value:
25127 @example
25128 settb=AVTB
25129 @end example
25130 @end itemize
25131
25132 @section showcqt
25133 Convert input audio to a video output representing frequency spectrum
25134 logarithmically using Brown-Puckette constant Q transform algorithm with
25135 direct frequency domain coefficient calculation (but the transform itself
25136 is not really constant Q, instead the Q factor is actually variable/clamped),
25137 with musical tone scale, from E0 to D#10.
25138
25139 The filter accepts the following options:
25140
25141 @table @option
25142 @item size, s
25143 Specify the video size for the output. It must be even. For the syntax of this option,
25144 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25145 Default value is @code{1920x1080}.
25146
25147 @item fps, rate, r
25148 Set the output frame rate. Default value is @code{25}.
25149
25150 @item bar_h
25151 Set the bargraph height. It must be even. Default value is @code{-1} which
25152 computes the bargraph height automatically.
25153
25154 @item axis_h
25155 Set the axis height. It must be even. Default value is @code{-1} which computes
25156 the axis height automatically.
25157
25158 @item sono_h
25159 Set the sonogram height. It must be even. Default value is @code{-1} which
25160 computes the sonogram height automatically.
25161
25162 @item fullhd
25163 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
25164 instead. Default value is @code{1}.
25165
25166 @item sono_v, volume
25167 Specify the sonogram volume expression. It can contain variables:
25168 @table @option
25169 @item bar_v
25170 the @var{bar_v} evaluated expression
25171 @item frequency, freq, f
25172 the frequency where it is evaluated
25173 @item timeclamp, tc
25174 the value of @var{timeclamp} option
25175 @end table
25176 and functions:
25177 @table @option
25178 @item a_weighting(f)
25179 A-weighting of equal loudness
25180 @item b_weighting(f)
25181 B-weighting of equal loudness
25182 @item c_weighting(f)
25183 C-weighting of equal loudness.
25184 @end table
25185 Default value is @code{16}.
25186
25187 @item bar_v, volume2
25188 Specify the bargraph volume expression. It can contain variables:
25189 @table @option
25190 @item sono_v
25191 the @var{sono_v} evaluated expression
25192 @item frequency, freq, f
25193 the frequency where it is evaluated
25194 @item timeclamp, tc
25195 the value of @var{timeclamp} option
25196 @end table
25197 and functions:
25198 @table @option
25199 @item a_weighting(f)
25200 A-weighting of equal loudness
25201 @item b_weighting(f)
25202 B-weighting of equal loudness
25203 @item c_weighting(f)
25204 C-weighting of equal loudness.
25205 @end table
25206 Default value is @code{sono_v}.
25207
25208 @item sono_g, gamma
25209 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
25210 higher gamma makes the spectrum having more range. Default value is @code{3}.
25211 Acceptable range is @code{[1, 7]}.
25212
25213 @item bar_g, gamma2
25214 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
25215 @code{[1, 7]}.
25216
25217 @item bar_t
25218 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
25219 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
25220
25221 @item timeclamp, tc
25222 Specify the transform timeclamp. At low frequency, there is trade-off between
25223 accuracy in time domain and frequency domain. If timeclamp is lower,
25224 event in time domain is represented more accurately (such as fast bass drum),
25225 otherwise event in frequency domain is represented more accurately
25226 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
25227
25228 @item attack
25229 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
25230 limits future samples by applying asymmetric windowing in time domain, useful
25231 when low latency is required. Accepted range is @code{[0, 1]}.
25232
25233 @item basefreq
25234 Specify the transform base frequency. Default value is @code{20.01523126408007475},
25235 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
25236
25237 @item endfreq
25238 Specify the transform end frequency. Default value is @code{20495.59681441799654},
25239 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
25240
25241 @item coeffclamp
25242 This option is deprecated and ignored.
25243
25244 @item tlength
25245 Specify the transform length in time domain. Use this option to control accuracy
25246 trade-off between time domain and frequency domain at every frequency sample.
25247 It can contain variables:
25248 @table @option
25249 @item frequency, freq, f
25250 the frequency where it is evaluated
25251 @item timeclamp, tc
25252 the value of @var{timeclamp} option.
25253 @end table
25254 Default value is @code{384*tc/(384+tc*f)}.
25255
25256 @item count
25257 Specify the transform count for every video frame. Default value is @code{6}.
25258 Acceptable range is @code{[1, 30]}.
25259
25260 @item fcount
25261 Specify the transform count for every single pixel. Default value is @code{0},
25262 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
25263
25264 @item fontfile
25265 Specify font file for use with freetype to draw the axis. If not specified,
25266 use embedded font. Note that drawing with font file or embedded font is not
25267 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
25268 option instead.
25269
25270 @item font
25271 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
25272 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
25273 escaping.
25274
25275 @item fontcolor
25276 Specify font color expression. This is arithmetic expression that should return
25277 integer value 0xRRGGBB. It can contain variables:
25278 @table @option
25279 @item frequency, freq, f
25280 the frequency where it is evaluated
25281 @item timeclamp, tc
25282 the value of @var{timeclamp} option
25283 @end table
25284 and functions:
25285 @table @option
25286 @item midi(f)
25287 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
25288 @item r(x), g(x), b(x)
25289 red, green, and blue value of intensity x.
25290 @end table
25291 Default value is @code{st(0, (midi(f)-59.5)/12);
25292 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
25293 r(1-ld(1)) + b(ld(1))}.
25294
25295 @item axisfile
25296 Specify image file to draw the axis. This option override @var{fontfile} and
25297 @var{fontcolor} option.
25298
25299 @item axis, text
25300 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
25301 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
25302 Default value is @code{1}.
25303
25304 @item csp
25305 Set colorspace. The accepted values are:
25306 @table @samp
25307 @item unspecified
25308 Unspecified (default)
25309
25310 @item bt709
25311 BT.709
25312
25313 @item fcc
25314 FCC
25315
25316 @item bt470bg
25317 BT.470BG or BT.601-6 625
25318
25319 @item smpte170m
25320 SMPTE-170M or BT.601-6 525
25321
25322 @item smpte240m
25323 SMPTE-240M
25324
25325 @item bt2020ncl
25326 BT.2020 with non-constant luminance
25327
25328 @end table
25329
25330 @item cscheme
25331 Set spectrogram color scheme. This is list of floating point values with format
25332 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
25333 The default is @code{1|0.5|0|0|0.5|1}.
25334
25335 @end table
25336
25337 @subsection Examples
25338
25339 @itemize
25340 @item
25341 Playing audio while showing the spectrum:
25342 @example
25343 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
25344 @end example
25345
25346 @item
25347 Same as above, but with frame rate 30 fps:
25348 @example
25349 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
25350 @end example
25351
25352 @item
25353 Playing at 1280x720:
25354 @example
25355 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
25356 @end example
25357
25358 @item
25359 Disable sonogram display:
25360 @example
25361 sono_h=0
25362 @end example
25363
25364 @item
25365 A1 and its harmonics: A1, A2, (near)E3, A3:
25366 @example
25367 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),
25368                  asplit[a][out1]; [a] showcqt [out0]'
25369 @end example
25370
25371 @item
25372 Same as above, but with more accuracy in frequency domain:
25373 @example
25374 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),
25375                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
25376 @end example
25377
25378 @item
25379 Custom volume:
25380 @example
25381 bar_v=10:sono_v=bar_v*a_weighting(f)
25382 @end example
25383
25384 @item
25385 Custom gamma, now spectrum is linear to the amplitude.
25386 @example
25387 bar_g=2:sono_g=2
25388 @end example
25389
25390 @item
25391 Custom tlength equation:
25392 @example
25393 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)))'
25394 @end example
25395
25396 @item
25397 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
25398 @example
25399 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
25400 @end example
25401
25402 @item
25403 Custom font using fontconfig:
25404 @example
25405 font='Courier New,Monospace,mono|bold'
25406 @end example
25407
25408 @item
25409 Custom frequency range with custom axis using image file:
25410 @example
25411 axisfile=myaxis.png:basefreq=40:endfreq=10000
25412 @end example
25413 @end itemize
25414
25415 @section showfreqs
25416
25417 Convert input audio to video output representing the audio power spectrum.
25418 Audio amplitude is on Y-axis while frequency is on X-axis.
25419
25420 The filter accepts the following options:
25421
25422 @table @option
25423 @item size, s
25424 Specify size of video. For the syntax of this option, check the
25425 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25426 Default is @code{1024x512}.
25427
25428 @item mode
25429 Set display mode.
25430 This set how each frequency bin will be represented.
25431
25432 It accepts the following values:
25433 @table @samp
25434 @item line
25435 @item bar
25436 @item dot
25437 @end table
25438 Default is @code{bar}.
25439
25440 @item ascale
25441 Set amplitude scale.
25442
25443 It accepts the following values:
25444 @table @samp
25445 @item lin
25446 Linear scale.
25447
25448 @item sqrt
25449 Square root scale.
25450
25451 @item cbrt
25452 Cubic root scale.
25453
25454 @item log
25455 Logarithmic scale.
25456 @end table
25457 Default is @code{log}.
25458
25459 @item fscale
25460 Set frequency scale.
25461
25462 It accepts the following values:
25463 @table @samp
25464 @item lin
25465 Linear scale.
25466
25467 @item log
25468 Logarithmic scale.
25469
25470 @item rlog
25471 Reverse logarithmic scale.
25472 @end table
25473 Default is @code{lin}.
25474
25475 @item win_size
25476 Set window size. Allowed range is from 16 to 65536.
25477
25478 Default is @code{2048}
25479
25480 @item win_func
25481 Set windowing function.
25482
25483 It accepts the following values:
25484 @table @samp
25485 @item rect
25486 @item bartlett
25487 @item hanning
25488 @item hamming
25489 @item blackman
25490 @item welch
25491 @item flattop
25492 @item bharris
25493 @item bnuttall
25494 @item bhann
25495 @item sine
25496 @item nuttall
25497 @item lanczos
25498 @item gauss
25499 @item tukey
25500 @item dolph
25501 @item cauchy
25502 @item parzen
25503 @item poisson
25504 @item bohman
25505 @end table
25506 Default is @code{hanning}.
25507
25508 @item overlap
25509 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25510 which means optimal overlap for selected window function will be picked.
25511
25512 @item averaging
25513 Set time averaging. Setting this to 0 will display current maximal peaks.
25514 Default is @code{1}, which means time averaging is disabled.
25515
25516 @item colors
25517 Specify list of colors separated by space or by '|' which will be used to
25518 draw channel frequencies. Unrecognized or missing colors will be replaced
25519 by white color.
25520
25521 @item cmode
25522 Set channel display mode.
25523
25524 It accepts the following values:
25525 @table @samp
25526 @item combined
25527 @item separate
25528 @end table
25529 Default is @code{combined}.
25530
25531 @item minamp
25532 Set minimum amplitude used in @code{log} amplitude scaler.
25533
25534 @item data
25535 Set data display mode.
25536
25537 It accepts the following values:
25538 @table @samp
25539 @item magnitude
25540 @item phase
25541 @item delay
25542 @end table
25543 Default is @code{magnitude}.
25544 @end table
25545
25546 @section showspatial
25547
25548 Convert stereo input audio to a video output, representing the spatial relationship
25549 between two channels.
25550
25551 The filter accepts the following options:
25552
25553 @table @option
25554 @item size, s
25555 Specify the video size for the output. For the syntax of this option, check the
25556 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25557 Default value is @code{512x512}.
25558
25559 @item win_size
25560 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
25561
25562 @item win_func
25563 Set window function.
25564
25565 It accepts the following values:
25566 @table @samp
25567 @item rect
25568 @item bartlett
25569 @item hann
25570 @item hanning
25571 @item hamming
25572 @item blackman
25573 @item welch
25574 @item flattop
25575 @item bharris
25576 @item bnuttall
25577 @item bhann
25578 @item sine
25579 @item nuttall
25580 @item lanczos
25581 @item gauss
25582 @item tukey
25583 @item dolph
25584 @item cauchy
25585 @item parzen
25586 @item poisson
25587 @item bohman
25588 @end table
25589
25590 Default value is @code{hann}.
25591
25592 @item overlap
25593 Set ratio of overlap window. Default value is @code{0.5}.
25594 When value is @code{1} overlap is set to recommended size for specific
25595 window function currently used.
25596 @end table
25597
25598 @anchor{showspectrum}
25599 @section showspectrum
25600
25601 Convert input audio to a video output, representing the audio frequency
25602 spectrum.
25603
25604 The filter accepts the following options:
25605
25606 @table @option
25607 @item size, s
25608 Specify the video size for the output. For the syntax of this option, check the
25609 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25610 Default value is @code{640x512}.
25611
25612 @item slide
25613 Specify how the spectrum should slide along the window.
25614
25615 It accepts the following values:
25616 @table @samp
25617 @item replace
25618 the samples start again on the left when they reach the right
25619 @item scroll
25620 the samples scroll from right to left
25621 @item fullframe
25622 frames are only produced when the samples reach the right
25623 @item rscroll
25624 the samples scroll from left to right
25625 @end table
25626
25627 Default value is @code{replace}.
25628
25629 @item mode
25630 Specify display mode.
25631
25632 It accepts the following values:
25633 @table @samp
25634 @item combined
25635 all channels are displayed in the same row
25636 @item separate
25637 all channels are displayed in separate rows
25638 @end table
25639
25640 Default value is @samp{combined}.
25641
25642 @item color
25643 Specify display color mode.
25644
25645 It accepts the following values:
25646 @table @samp
25647 @item channel
25648 each channel is displayed in a separate color
25649 @item intensity
25650 each channel is displayed using the same color scheme
25651 @item rainbow
25652 each channel is displayed using the rainbow color scheme
25653 @item moreland
25654 each channel is displayed using the moreland color scheme
25655 @item nebulae
25656 each channel is displayed using the nebulae color scheme
25657 @item fire
25658 each channel is displayed using the fire color scheme
25659 @item fiery
25660 each channel is displayed using the fiery color scheme
25661 @item fruit
25662 each channel is displayed using the fruit color scheme
25663 @item cool
25664 each channel is displayed using the cool color scheme
25665 @item magma
25666 each channel is displayed using the magma color scheme
25667 @item green
25668 each channel is displayed using the green color scheme
25669 @item viridis
25670 each channel is displayed using the viridis color scheme
25671 @item plasma
25672 each channel is displayed using the plasma color scheme
25673 @item cividis
25674 each channel is displayed using the cividis color scheme
25675 @item terrain
25676 each channel is displayed using the terrain color scheme
25677 @end table
25678
25679 Default value is @samp{channel}.
25680
25681 @item scale
25682 Specify scale used for calculating intensity color values.
25683
25684 It accepts the following values:
25685 @table @samp
25686 @item lin
25687 linear
25688 @item sqrt
25689 square root, default
25690 @item cbrt
25691 cubic root
25692 @item log
25693 logarithmic
25694 @item 4thrt
25695 4th root
25696 @item 5thrt
25697 5th root
25698 @end table
25699
25700 Default value is @samp{sqrt}.
25701
25702 @item fscale
25703 Specify frequency scale.
25704
25705 It accepts the following values:
25706 @table @samp
25707 @item lin
25708 linear
25709 @item log
25710 logarithmic
25711 @end table
25712
25713 Default value is @samp{lin}.
25714
25715 @item saturation
25716 Set saturation modifier for displayed colors. Negative values provide
25717 alternative color scheme. @code{0} is no saturation at all.
25718 Saturation must be in [-10.0, 10.0] range.
25719 Default value is @code{1}.
25720
25721 @item win_func
25722 Set window function.
25723
25724 It accepts the following values:
25725 @table @samp
25726 @item rect
25727 @item bartlett
25728 @item hann
25729 @item hanning
25730 @item hamming
25731 @item blackman
25732 @item welch
25733 @item flattop
25734 @item bharris
25735 @item bnuttall
25736 @item bhann
25737 @item sine
25738 @item nuttall
25739 @item lanczos
25740 @item gauss
25741 @item tukey
25742 @item dolph
25743 @item cauchy
25744 @item parzen
25745 @item poisson
25746 @item bohman
25747 @end table
25748
25749 Default value is @code{hann}.
25750
25751 @item orientation
25752 Set orientation of time vs frequency axis. Can be @code{vertical} or
25753 @code{horizontal}. Default is @code{vertical}.
25754
25755 @item overlap
25756 Set ratio of overlap window. Default value is @code{0}.
25757 When value is @code{1} overlap is set to recommended size for specific
25758 window function currently used.
25759
25760 @item gain
25761 Set scale gain for calculating intensity color values.
25762 Default value is @code{1}.
25763
25764 @item data
25765 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
25766
25767 @item rotation
25768 Set color rotation, must be in [-1.0, 1.0] range.
25769 Default value is @code{0}.
25770
25771 @item start
25772 Set start frequency from which to display spectrogram. Default is @code{0}.
25773
25774 @item stop
25775 Set stop frequency to which to display spectrogram. Default is @code{0}.
25776
25777 @item fps
25778 Set upper frame rate limit. Default is @code{auto}, unlimited.
25779
25780 @item legend
25781 Draw time and frequency axes and legends. Default is disabled.
25782 @end table
25783
25784 The usage is very similar to the showwaves filter; see the examples in that
25785 section.
25786
25787 @subsection Examples
25788
25789 @itemize
25790 @item
25791 Large window with logarithmic color scaling:
25792 @example
25793 showspectrum=s=1280x480:scale=log
25794 @end example
25795
25796 @item
25797 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
25798 @example
25799 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
25800              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
25801 @end example
25802 @end itemize
25803
25804 @section showspectrumpic
25805
25806 Convert input audio to a single video frame, representing the audio frequency
25807 spectrum.
25808
25809 The filter accepts the following options:
25810
25811 @table @option
25812 @item size, s
25813 Specify the video size for the output. For the syntax of this option, check the
25814 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25815 Default value is @code{4096x2048}.
25816
25817 @item mode
25818 Specify display mode.
25819
25820 It accepts the following values:
25821 @table @samp
25822 @item combined
25823 all channels are displayed in the same row
25824 @item separate
25825 all channels are displayed in separate rows
25826 @end table
25827 Default value is @samp{combined}.
25828
25829 @item color
25830 Specify display color mode.
25831
25832 It accepts the following values:
25833 @table @samp
25834 @item channel
25835 each channel is displayed in a separate color
25836 @item intensity
25837 each channel is displayed using the same color scheme
25838 @item rainbow
25839 each channel is displayed using the rainbow color scheme
25840 @item moreland
25841 each channel is displayed using the moreland color scheme
25842 @item nebulae
25843 each channel is displayed using the nebulae color scheme
25844 @item fire
25845 each channel is displayed using the fire color scheme
25846 @item fiery
25847 each channel is displayed using the fiery color scheme
25848 @item fruit
25849 each channel is displayed using the fruit color scheme
25850 @item cool
25851 each channel is displayed using the cool color scheme
25852 @item magma
25853 each channel is displayed using the magma color scheme
25854 @item green
25855 each channel is displayed using the green color scheme
25856 @item viridis
25857 each channel is displayed using the viridis color scheme
25858 @item plasma
25859 each channel is displayed using the plasma color scheme
25860 @item cividis
25861 each channel is displayed using the cividis color scheme
25862 @item terrain
25863 each channel is displayed using the terrain color scheme
25864 @end table
25865 Default value is @samp{intensity}.
25866
25867 @item scale
25868 Specify scale used for calculating intensity color values.
25869
25870 It accepts the following values:
25871 @table @samp
25872 @item lin
25873 linear
25874 @item sqrt
25875 square root, default
25876 @item cbrt
25877 cubic root
25878 @item log
25879 logarithmic
25880 @item 4thrt
25881 4th root
25882 @item 5thrt
25883 5th root
25884 @end table
25885 Default value is @samp{log}.
25886
25887 @item fscale
25888 Specify frequency scale.
25889
25890 It accepts the following values:
25891 @table @samp
25892 @item lin
25893 linear
25894 @item log
25895 logarithmic
25896 @end table
25897
25898 Default value is @samp{lin}.
25899
25900 @item saturation
25901 Set saturation modifier for displayed colors. Negative values provide
25902 alternative color scheme. @code{0} is no saturation at all.
25903 Saturation must be in [-10.0, 10.0] range.
25904 Default value is @code{1}.
25905
25906 @item win_func
25907 Set window function.
25908
25909 It accepts the following values:
25910 @table @samp
25911 @item rect
25912 @item bartlett
25913 @item hann
25914 @item hanning
25915 @item hamming
25916 @item blackman
25917 @item welch
25918 @item flattop
25919 @item bharris
25920 @item bnuttall
25921 @item bhann
25922 @item sine
25923 @item nuttall
25924 @item lanczos
25925 @item gauss
25926 @item tukey
25927 @item dolph
25928 @item cauchy
25929 @item parzen
25930 @item poisson
25931 @item bohman
25932 @end table
25933 Default value is @code{hann}.
25934
25935 @item orientation
25936 Set orientation of time vs frequency axis. Can be @code{vertical} or
25937 @code{horizontal}. Default is @code{vertical}.
25938
25939 @item gain
25940 Set scale gain for calculating intensity color values.
25941 Default value is @code{1}.
25942
25943 @item legend
25944 Draw time and frequency axes and legends. Default is enabled.
25945
25946 @item rotation
25947 Set color rotation, must be in [-1.0, 1.0] range.
25948 Default value is @code{0}.
25949
25950 @item start
25951 Set start frequency from which to display spectrogram. Default is @code{0}.
25952
25953 @item stop
25954 Set stop frequency to which to display spectrogram. Default is @code{0}.
25955 @end table
25956
25957 @subsection Examples
25958
25959 @itemize
25960 @item
25961 Extract an audio spectrogram of a whole audio track
25962 in a 1024x1024 picture using @command{ffmpeg}:
25963 @example
25964 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
25965 @end example
25966 @end itemize
25967
25968 @section showvolume
25969
25970 Convert input audio volume to a video output.
25971
25972 The filter accepts the following options:
25973
25974 @table @option
25975 @item rate, r
25976 Set video rate.
25977
25978 @item b
25979 Set border width, allowed range is [0, 5]. Default is 1.
25980
25981 @item w
25982 Set channel width, allowed range is [80, 8192]. Default is 400.
25983
25984 @item h
25985 Set channel height, allowed range is [1, 900]. Default is 20.
25986
25987 @item f
25988 Set fade, allowed range is [0, 1]. Default is 0.95.
25989
25990 @item c
25991 Set volume color expression.
25992
25993 The expression can use the following variables:
25994
25995 @table @option
25996 @item VOLUME
25997 Current max volume of channel in dB.
25998
25999 @item PEAK
26000 Current peak.
26001
26002 @item CHANNEL
26003 Current channel number, starting from 0.
26004 @end table
26005
26006 @item t
26007 If set, displays channel names. Default is enabled.
26008
26009 @item v
26010 If set, displays volume values. Default is enabled.
26011
26012 @item o
26013 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
26014 default is @code{h}.
26015
26016 @item s
26017 Set step size, allowed range is [0, 5]. Default is 0, which means
26018 step is disabled.
26019
26020 @item p
26021 Set background opacity, allowed range is [0, 1]. Default is 0.
26022
26023 @item m
26024 Set metering mode, can be peak: @code{p} or rms: @code{r},
26025 default is @code{p}.
26026
26027 @item ds
26028 Set display scale, can be linear: @code{lin} or log: @code{log},
26029 default is @code{lin}.
26030
26031 @item dm
26032 In second.
26033 If set to > 0., display a line for the max level
26034 in the previous seconds.
26035 default is disabled: @code{0.}
26036
26037 @item dmc
26038 The color of the max line. Use when @code{dm} option is set to > 0.
26039 default is: @code{orange}
26040 @end table
26041
26042 @section showwaves
26043
26044 Convert input audio to a video output, representing the samples waves.
26045
26046 The filter accepts the following options:
26047
26048 @table @option
26049 @item size, s
26050 Specify the video size for the output. For the syntax of this option, check the
26051 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26052 Default value is @code{600x240}.
26053
26054 @item mode
26055 Set display mode.
26056
26057 Available values are:
26058 @table @samp
26059 @item point
26060 Draw a point for each sample.
26061
26062 @item line
26063 Draw a vertical line for each sample.
26064
26065 @item p2p
26066 Draw a point for each sample and a line between them.
26067
26068 @item cline
26069 Draw a centered vertical line for each sample.
26070 @end table
26071
26072 Default value is @code{point}.
26073
26074 @item n
26075 Set the number of samples which are printed on the same column. A
26076 larger value will decrease the frame rate. Must be a positive
26077 integer. This option can be set only if the value for @var{rate}
26078 is not explicitly specified.
26079
26080 @item rate, r
26081 Set the (approximate) output frame rate. This is done by setting the
26082 option @var{n}. Default value is "25".
26083
26084 @item split_channels
26085 Set if channels should be drawn separately or overlap. Default value is 0.
26086
26087 @item colors
26088 Set colors separated by '|' which are going to be used for drawing of each channel.
26089
26090 @item scale
26091 Set amplitude scale.
26092
26093 Available values are:
26094 @table @samp
26095 @item lin
26096 Linear.
26097
26098 @item log
26099 Logarithmic.
26100
26101 @item sqrt
26102 Square root.
26103
26104 @item cbrt
26105 Cubic root.
26106 @end table
26107
26108 Default is linear.
26109
26110 @item draw
26111 Set the draw mode. This is mostly useful to set for high @var{n}.
26112
26113 Available values are:
26114 @table @samp
26115 @item scale
26116 Scale pixel values for each drawn sample.
26117
26118 @item full
26119 Draw every sample directly.
26120 @end table
26121
26122 Default value is @code{scale}.
26123 @end table
26124
26125 @subsection Examples
26126
26127 @itemize
26128 @item
26129 Output the input file audio and the corresponding video representation
26130 at the same time:
26131 @example
26132 amovie=a.mp3,asplit[out0],showwaves[out1]
26133 @end example
26134
26135 @item
26136 Create a synthetic signal and show it with showwaves, forcing a
26137 frame rate of 30 frames per second:
26138 @example
26139 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
26140 @end example
26141 @end itemize
26142
26143 @section showwavespic
26144
26145 Convert input audio to a single video frame, representing the samples waves.
26146
26147 The filter accepts the following options:
26148
26149 @table @option
26150 @item size, s
26151 Specify the video size for the output. For the syntax of this option, check the
26152 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26153 Default value is @code{600x240}.
26154
26155 @item split_channels
26156 Set if channels should be drawn separately or overlap. Default value is 0.
26157
26158 @item colors
26159 Set colors separated by '|' which are going to be used for drawing of each channel.
26160
26161 @item scale
26162 Set amplitude scale.
26163
26164 Available values are:
26165 @table @samp
26166 @item lin
26167 Linear.
26168
26169 @item log
26170 Logarithmic.
26171
26172 @item sqrt
26173 Square root.
26174
26175 @item cbrt
26176 Cubic root.
26177 @end table
26178
26179 Default is linear.
26180
26181 @item draw
26182 Set the draw mode.
26183
26184 Available values are:
26185 @table @samp
26186 @item scale
26187 Scale pixel values for each drawn sample.
26188
26189 @item full
26190 Draw every sample directly.
26191 @end table
26192
26193 Default value is @code{scale}.
26194
26195 @item filter
26196 Set the filter mode.
26197
26198 Available values are:
26199 @table @samp
26200 @item average
26201 Use average samples values for each drawn sample.
26202
26203 @item peak
26204 Use peak samples values for each drawn sample.
26205 @end table
26206
26207 Default value is @code{average}.
26208 @end table
26209
26210 @subsection Examples
26211
26212 @itemize
26213 @item
26214 Extract a channel split representation of the wave form of a whole audio track
26215 in a 1024x800 picture using @command{ffmpeg}:
26216 @example
26217 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
26218 @end example
26219 @end itemize
26220
26221 @section sidedata, asidedata
26222
26223 Delete frame side data, or select frames based on it.
26224
26225 This filter accepts the following options:
26226
26227 @table @option
26228 @item mode
26229 Set mode of operation of the filter.
26230
26231 Can be one of the following:
26232
26233 @table @samp
26234 @item select
26235 Select every frame with side data of @code{type}.
26236
26237 @item delete
26238 Delete side data of @code{type}. If @code{type} is not set, delete all side
26239 data in the frame.
26240
26241 @end table
26242
26243 @item type
26244 Set side data type used with all modes. Must be set for @code{select} mode. For
26245 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
26246 in @file{libavutil/frame.h}. For example, to choose
26247 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
26248
26249 @end table
26250
26251 @section spectrumsynth
26252
26253 Synthesize audio from 2 input video spectrums, first input stream represents
26254 magnitude across time and second represents phase across time.
26255 The filter will transform from frequency domain as displayed in videos back
26256 to time domain as presented in audio output.
26257
26258 This filter is primarily created for reversing processed @ref{showspectrum}
26259 filter outputs, but can synthesize sound from other spectrograms too.
26260 But in such case results are going to be poor if the phase data is not
26261 available, because in such cases phase data need to be recreated, usually
26262 it's just recreated from random noise.
26263 For best results use gray only output (@code{channel} color mode in
26264 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
26265 @code{lin} scale for phase video. To produce phase, for 2nd video, use
26266 @code{data} option. Inputs videos should generally use @code{fullframe}
26267 slide mode as that saves resources needed for decoding video.
26268
26269 The filter accepts the following options:
26270
26271 @table @option
26272 @item sample_rate
26273 Specify sample rate of output audio, the sample rate of audio from which
26274 spectrum was generated may differ.
26275
26276 @item channels
26277 Set number of channels represented in input video spectrums.
26278
26279 @item scale
26280 Set scale which was used when generating magnitude input spectrum.
26281 Can be @code{lin} or @code{log}. Default is @code{log}.
26282
26283 @item slide
26284 Set slide which was used when generating inputs spectrums.
26285 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
26286 Default is @code{fullframe}.
26287
26288 @item win_func
26289 Set window function used for resynthesis.
26290
26291 @item overlap
26292 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
26293 which means optimal overlap for selected window function will be picked.
26294
26295 @item orientation
26296 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
26297 Default is @code{vertical}.
26298 @end table
26299
26300 @subsection Examples
26301
26302 @itemize
26303 @item
26304 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
26305 then resynthesize videos back to audio with spectrumsynth:
26306 @example
26307 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
26308 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
26309 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
26310 @end example
26311 @end itemize
26312
26313 @section split, asplit
26314
26315 Split input into several identical outputs.
26316
26317 @code{asplit} works with audio input, @code{split} with video.
26318
26319 The filter accepts a single parameter which specifies the number of outputs. If
26320 unspecified, it defaults to 2.
26321
26322 @subsection Examples
26323
26324 @itemize
26325 @item
26326 Create two separate outputs from the same input:
26327 @example
26328 [in] split [out0][out1]
26329 @end example
26330
26331 @item
26332 To create 3 or more outputs, you need to specify the number of
26333 outputs, like in:
26334 @example
26335 [in] asplit=3 [out0][out1][out2]
26336 @end example
26337
26338 @item
26339 Create two separate outputs from the same input, one cropped and
26340 one padded:
26341 @example
26342 [in] split [splitout1][splitout2];
26343 [splitout1] crop=100:100:0:0    [cropout];
26344 [splitout2] pad=200:200:100:100 [padout];
26345 @end example
26346
26347 @item
26348 Create 5 copies of the input audio with @command{ffmpeg}:
26349 @example
26350 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
26351 @end example
26352 @end itemize
26353
26354 @section zmq, azmq
26355
26356 Receive commands sent through a libzmq client, and forward them to
26357 filters in the filtergraph.
26358
26359 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
26360 must be inserted between two video filters, @code{azmq} between two
26361 audio filters. Both are capable to send messages to any filter type.
26362
26363 To enable these filters you need to install the libzmq library and
26364 headers and configure FFmpeg with @code{--enable-libzmq}.
26365
26366 For more information about libzmq see:
26367 @url{http://www.zeromq.org/}
26368
26369 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
26370 receives messages sent through a network interface defined by the
26371 @option{bind_address} (or the abbreviation "@option{b}") option.
26372 Default value of this option is @file{tcp://localhost:5555}. You may
26373 want to alter this value to your needs, but do not forget to escape any
26374 ':' signs (see @ref{filtergraph escaping}).
26375
26376 The received message must be in the form:
26377 @example
26378 @var{TARGET} @var{COMMAND} [@var{ARG}]
26379 @end example
26380
26381 @var{TARGET} specifies the target of the command, usually the name of
26382 the filter class or a specific filter instance name. The default
26383 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
26384 but you can override this by using the @samp{filter_name@@id} syntax
26385 (see @ref{Filtergraph syntax}).
26386
26387 @var{COMMAND} specifies the name of the command for the target filter.
26388
26389 @var{ARG} is optional and specifies the optional argument list for the
26390 given @var{COMMAND}.
26391
26392 Upon reception, the message is processed and the corresponding command
26393 is injected into the filtergraph. Depending on the result, the filter
26394 will send a reply to the client, adopting the format:
26395 @example
26396 @var{ERROR_CODE} @var{ERROR_REASON}
26397 @var{MESSAGE}
26398 @end example
26399
26400 @var{MESSAGE} is optional.
26401
26402 @subsection Examples
26403
26404 Look at @file{tools/zmqsend} for an example of a zmq client which can
26405 be used to send commands processed by these filters.
26406
26407 Consider the following filtergraph generated by @command{ffplay}.
26408 In this example the last overlay filter has an instance name. All other
26409 filters will have default instance names.
26410
26411 @example
26412 ffplay -dumpgraph 1 -f lavfi "
26413 color=s=100x100:c=red  [l];
26414 color=s=100x100:c=blue [r];
26415 nullsrc=s=200x100, zmq [bg];
26416 [bg][l]   overlay     [bg+l];
26417 [bg+l][r] overlay@@my=x=100 "
26418 @end example
26419
26420 To change the color of the left side of the video, the following
26421 command can be used:
26422 @example
26423 echo Parsed_color_0 c yellow | tools/zmqsend
26424 @end example
26425
26426 To change the right side:
26427 @example
26428 echo Parsed_color_1 c pink | tools/zmqsend
26429 @end example
26430
26431 To change the position of the right side:
26432 @example
26433 echo overlay@@my x 150 | tools/zmqsend
26434 @end example
26435
26436
26437 @c man end MULTIMEDIA FILTERS
26438
26439 @chapter Multimedia Sources
26440 @c man begin MULTIMEDIA SOURCES
26441
26442 Below is a description of the currently available multimedia sources.
26443
26444 @section amovie
26445
26446 This is the same as @ref{movie} source, except it selects an audio
26447 stream by default.
26448
26449 @anchor{movie}
26450 @section movie
26451
26452 Read audio and/or video stream(s) from a movie container.
26453
26454 It accepts the following parameters:
26455
26456 @table @option
26457 @item filename
26458 The name of the resource to read (not necessarily a file; it can also be a
26459 device or a stream accessed through some protocol).
26460
26461 @item format_name, f
26462 Specifies the format assumed for the movie to read, and can be either
26463 the name of a container or an input device. If not specified, the
26464 format is guessed from @var{movie_name} or by probing.
26465
26466 @item seek_point, sp
26467 Specifies the seek point in seconds. The frames will be output
26468 starting from this seek point. The parameter is evaluated with
26469 @code{av_strtod}, so the numerical value may be suffixed by an IS
26470 postfix. The default value is "0".
26471
26472 @item streams, s
26473 Specifies the streams to read. Several streams can be specified,
26474 separated by "+". The source will then have as many outputs, in the
26475 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
26476 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
26477 respectively the default (best suited) video and audio stream. Default
26478 is "dv", or "da" if the filter is called as "amovie".
26479
26480 @item stream_index, si
26481 Specifies the index of the video stream to read. If the value is -1,
26482 the most suitable video stream will be automatically selected. The default
26483 value is "-1". Deprecated. If the filter is called "amovie", it will select
26484 audio instead of video.
26485
26486 @item loop
26487 Specifies how many times to read the stream in sequence.
26488 If the value is 0, the stream will be looped infinitely.
26489 Default value is "1".
26490
26491 Note that when the movie is looped the source timestamps are not
26492 changed, so it will generate non monotonically increasing timestamps.
26493
26494 @item discontinuity
26495 Specifies the time difference between frames above which the point is
26496 considered a timestamp discontinuity which is removed by adjusting the later
26497 timestamps.
26498 @end table
26499
26500 It allows overlaying a second video on top of the main input of
26501 a filtergraph, as shown in this graph:
26502 @example
26503 input -----------> deltapts0 --> overlay --> output
26504                                     ^
26505                                     |
26506 movie --> scale--> deltapts1 -------+
26507 @end example
26508 @subsection Examples
26509
26510 @itemize
26511 @item
26512 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
26513 on top of the input labelled "in":
26514 @example
26515 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
26516 [in] setpts=PTS-STARTPTS [main];
26517 [main][over] overlay=16:16 [out]
26518 @end example
26519
26520 @item
26521 Read from a video4linux2 device, and overlay it on top of the input
26522 labelled "in":
26523 @example
26524 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
26525 [in] setpts=PTS-STARTPTS [main];
26526 [main][over] overlay=16:16 [out]
26527 @end example
26528
26529 @item
26530 Read the first video stream and the audio stream with id 0x81 from
26531 dvd.vob; the video is connected to the pad named "video" and the audio is
26532 connected to the pad named "audio":
26533 @example
26534 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
26535 @end example
26536 @end itemize
26537
26538 @subsection Commands
26539
26540 Both movie and amovie support the following commands:
26541 @table @option
26542 @item seek
26543 Perform seek using "av_seek_frame".
26544 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
26545 @itemize
26546 @item
26547 @var{stream_index}: If stream_index is -1, a default
26548 stream is selected, and @var{timestamp} is automatically converted
26549 from AV_TIME_BASE units to the stream specific time_base.
26550 @item
26551 @var{timestamp}: Timestamp in AVStream.time_base units
26552 or, if no stream is specified, in AV_TIME_BASE units.
26553 @item
26554 @var{flags}: Flags which select direction and seeking mode.
26555 @end itemize
26556
26557 @item get_duration
26558 Get movie duration in AV_TIME_BASE units.
26559
26560 @end table
26561
26562 @c man end MULTIMEDIA SOURCES