]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avfilter/vf_limiter: add support for commands
[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 @subsection Commands
13555
13556 This filter supports the all above options as @ref{commands}.
13557
13558 @section loop
13559
13560 Loop video frames.
13561
13562 The filter accepts the following options:
13563
13564 @table @option
13565 @item loop
13566 Set the number of loops. Setting this value to -1 will result in infinite loops.
13567 Default is 0.
13568
13569 @item size
13570 Set maximal size in number of frames. Default is 0.
13571
13572 @item start
13573 Set first frame of loop. Default is 0.
13574 @end table
13575
13576 @subsection Examples
13577
13578 @itemize
13579 @item
13580 Loop single first frame infinitely:
13581 @example
13582 loop=loop=-1:size=1:start=0
13583 @end example
13584
13585 @item
13586 Loop single first frame 10 times:
13587 @example
13588 loop=loop=10:size=1:start=0
13589 @end example
13590
13591 @item
13592 Loop 10 first frames 5 times:
13593 @example
13594 loop=loop=5:size=10:start=0
13595 @end example
13596 @end itemize
13597
13598 @section lut1d
13599
13600 Apply a 1D LUT to an input video.
13601
13602 The filter accepts the following options:
13603
13604 @table @option
13605 @item file
13606 Set the 1D LUT file name.
13607
13608 Currently supported formats:
13609 @table @samp
13610 @item cube
13611 Iridas
13612 @item csp
13613 cineSpace
13614 @end table
13615
13616 @item interp
13617 Select interpolation mode.
13618
13619 Available values are:
13620
13621 @table @samp
13622 @item nearest
13623 Use values from the nearest defined point.
13624 @item linear
13625 Interpolate values using the linear interpolation.
13626 @item cosine
13627 Interpolate values using the cosine interpolation.
13628 @item cubic
13629 Interpolate values using the cubic interpolation.
13630 @item spline
13631 Interpolate values using the spline interpolation.
13632 @end table
13633 @end table
13634
13635 @anchor{lut3d}
13636 @section lut3d
13637
13638 Apply a 3D LUT to an input video.
13639
13640 The filter accepts the following options:
13641
13642 @table @option
13643 @item file
13644 Set the 3D LUT file name.
13645
13646 Currently supported formats:
13647 @table @samp
13648 @item 3dl
13649 AfterEffects
13650 @item cube
13651 Iridas
13652 @item dat
13653 DaVinci
13654 @item m3d
13655 Pandora
13656 @item csp
13657 cineSpace
13658 @end table
13659 @item interp
13660 Select interpolation mode.
13661
13662 Available values are:
13663
13664 @table @samp
13665 @item nearest
13666 Use values from the nearest defined point.
13667 @item trilinear
13668 Interpolate values using the 8 points defining a cube.
13669 @item tetrahedral
13670 Interpolate values using a tetrahedron.
13671 @end table
13672 @end table
13673
13674 @section lumakey
13675
13676 Turn certain luma values into transparency.
13677
13678 The filter accepts the following options:
13679
13680 @table @option
13681 @item threshold
13682 Set the luma which will be used as base for transparency.
13683 Default value is @code{0}.
13684
13685 @item tolerance
13686 Set the range of luma values to be keyed out.
13687 Default value is @code{0.01}.
13688
13689 @item softness
13690 Set the range of softness. Default value is @code{0}.
13691 Use this to control gradual transition from zero to full transparency.
13692 @end table
13693
13694 @subsection Commands
13695 This filter supports same @ref{commands} as options.
13696 The command accepts the same syntax of the corresponding option.
13697
13698 If the specified expression is not valid, it is kept at its current
13699 value.
13700
13701 @section lut, lutrgb, lutyuv
13702
13703 Compute a look-up table for binding each pixel component input value
13704 to an output value, and apply it to the input video.
13705
13706 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
13707 to an RGB input video.
13708
13709 These filters accept the following parameters:
13710 @table @option
13711 @item c0
13712 set first pixel component expression
13713 @item c1
13714 set second pixel component expression
13715 @item c2
13716 set third pixel component expression
13717 @item c3
13718 set fourth pixel component expression, corresponds to the alpha component
13719
13720 @item r
13721 set red component expression
13722 @item g
13723 set green component expression
13724 @item b
13725 set blue component expression
13726 @item a
13727 alpha component expression
13728
13729 @item y
13730 set Y/luminance component expression
13731 @item u
13732 set U/Cb component expression
13733 @item v
13734 set V/Cr component expression
13735 @end table
13736
13737 Each of them specifies the expression to use for computing the lookup table for
13738 the corresponding pixel component values.
13739
13740 The exact component associated to each of the @var{c*} options depends on the
13741 format in input.
13742
13743 The @var{lut} filter requires either YUV or RGB pixel formats in input,
13744 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
13745
13746 The expressions can contain the following constants and functions:
13747
13748 @table @option
13749 @item w
13750 @item h
13751 The input width and height.
13752
13753 @item val
13754 The input value for the pixel component.
13755
13756 @item clipval
13757 The input value, clipped to the @var{minval}-@var{maxval} range.
13758
13759 @item maxval
13760 The maximum value for the pixel component.
13761
13762 @item minval
13763 The minimum value for the pixel component.
13764
13765 @item negval
13766 The negated value for the pixel component value, clipped to the
13767 @var{minval}-@var{maxval} range; it corresponds to the expression
13768 "maxval-clipval+minval".
13769
13770 @item clip(val)
13771 The computed value in @var{val}, clipped to the
13772 @var{minval}-@var{maxval} range.
13773
13774 @item gammaval(gamma)
13775 The computed gamma correction value of the pixel component value,
13776 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
13777 expression
13778 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
13779
13780 @end table
13781
13782 All expressions default to "val".
13783
13784 @subsection Examples
13785
13786 @itemize
13787 @item
13788 Negate input video:
13789 @example
13790 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
13791 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
13792 @end example
13793
13794 The above is the same as:
13795 @example
13796 lutrgb="r=negval:g=negval:b=negval"
13797 lutyuv="y=negval:u=negval:v=negval"
13798 @end example
13799
13800 @item
13801 Negate luminance:
13802 @example
13803 lutyuv=y=negval
13804 @end example
13805
13806 @item
13807 Remove chroma components, turning the video into a graytone image:
13808 @example
13809 lutyuv="u=128:v=128"
13810 @end example
13811
13812 @item
13813 Apply a luma burning effect:
13814 @example
13815 lutyuv="y=2*val"
13816 @end example
13817
13818 @item
13819 Remove green and blue components:
13820 @example
13821 lutrgb="g=0:b=0"
13822 @end example
13823
13824 @item
13825 Set a constant alpha channel value on input:
13826 @example
13827 format=rgba,lutrgb=a="maxval-minval/2"
13828 @end example
13829
13830 @item
13831 Correct luminance gamma by a factor of 0.5:
13832 @example
13833 lutyuv=y=gammaval(0.5)
13834 @end example
13835
13836 @item
13837 Discard least significant bits of luma:
13838 @example
13839 lutyuv=y='bitand(val, 128+64+32)'
13840 @end example
13841
13842 @item
13843 Technicolor like effect:
13844 @example
13845 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
13846 @end example
13847 @end itemize
13848
13849 @section lut2, tlut2
13850
13851 The @code{lut2} filter takes two input streams and outputs one
13852 stream.
13853
13854 The @code{tlut2} (time lut2) filter takes two consecutive frames
13855 from one single stream.
13856
13857 This filter accepts the following parameters:
13858 @table @option
13859 @item c0
13860 set first pixel component expression
13861 @item c1
13862 set second pixel component expression
13863 @item c2
13864 set third pixel component expression
13865 @item c3
13866 set fourth pixel component expression, corresponds to the alpha component
13867
13868 @item d
13869 set output bit depth, only available for @code{lut2} filter. By default is 0,
13870 which means bit depth is automatically picked from first input format.
13871 @end table
13872
13873 The @code{lut2} filter also supports the @ref{framesync} options.
13874
13875 Each of them specifies the expression to use for computing the lookup table for
13876 the corresponding pixel component values.
13877
13878 The exact component associated to each of the @var{c*} options depends on the
13879 format in inputs.
13880
13881 The expressions can contain the following constants:
13882
13883 @table @option
13884 @item w
13885 @item h
13886 The input width and height.
13887
13888 @item x
13889 The first input value for the pixel component.
13890
13891 @item y
13892 The second input value for the pixel component.
13893
13894 @item bdx
13895 The first input video bit depth.
13896
13897 @item bdy
13898 The second input video bit depth.
13899 @end table
13900
13901 All expressions default to "x".
13902
13903 @subsection Examples
13904
13905 @itemize
13906 @item
13907 Highlight differences between two RGB video streams:
13908 @example
13909 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)'
13910 @end example
13911
13912 @item
13913 Highlight differences between two YUV video streams:
13914 @example
13915 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)'
13916 @end example
13917
13918 @item
13919 Show max difference between two video streams:
13920 @example
13921 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)))'
13922 @end example
13923 @end itemize
13924
13925 @section maskedclamp
13926
13927 Clamp the first input stream with the second input and third input stream.
13928
13929 Returns the value of first stream to be between second input
13930 stream - @code{undershoot} and third input stream + @code{overshoot}.
13931
13932 This filter accepts the following options:
13933 @table @option
13934 @item undershoot
13935 Default value is @code{0}.
13936
13937 @item overshoot
13938 Default value is @code{0}.
13939
13940 @item planes
13941 Set which planes will be processed as bitmap, unprocessed planes will be
13942 copied from first stream.
13943 By default value 0xf, all planes will be processed.
13944 @end table
13945
13946 @section maskedmax
13947
13948 Merge the second and third input stream into output stream using absolute differences
13949 between second input stream and first input stream and absolute difference between
13950 third input stream and first input stream. The picked value will be from second input
13951 stream if second absolute difference is greater than first one or from third input stream
13952 otherwise.
13953
13954 This filter accepts the following options:
13955 @table @option
13956 @item planes
13957 Set which planes will be processed as bitmap, unprocessed planes will be
13958 copied from first stream.
13959 By default value 0xf, all planes will be processed.
13960 @end table
13961
13962 @section maskedmerge
13963
13964 Merge the first input stream with the second input stream using per pixel
13965 weights in the third input stream.
13966
13967 A value of 0 in the third stream pixel component means that pixel component
13968 from first stream is returned unchanged, while maximum value (eg. 255 for
13969 8-bit videos) means that pixel component from second stream is returned
13970 unchanged. Intermediate values define the amount of merging between both
13971 input stream's pixel components.
13972
13973 This filter accepts the following options:
13974 @table @option
13975 @item planes
13976 Set which planes will be processed as bitmap, unprocessed planes will be
13977 copied from first stream.
13978 By default value 0xf, all planes will be processed.
13979 @end table
13980
13981 @section maskedmin
13982
13983 Merge the second and third input stream into output stream using absolute differences
13984 between second input stream and first input stream and absolute difference between
13985 third input stream and first input stream. The picked value will be from second input
13986 stream if second absolute difference is less than first one or from third input stream
13987 otherwise.
13988
13989 This filter accepts the following options:
13990 @table @option
13991 @item planes
13992 Set which planes will be processed as bitmap, unprocessed planes will be
13993 copied from first stream.
13994 By default value 0xf, all planes will be processed.
13995 @end table
13996
13997 @section maskedthreshold
13998 Pick pixels comparing absolute difference of two video streams with fixed
13999 threshold.
14000
14001 If absolute difference between pixel component of first and second video
14002 stream is equal or lower than user supplied threshold than pixel component
14003 from first video stream is picked, otherwise pixel component from second
14004 video stream is picked.
14005
14006 This filter accepts the following options:
14007 @table @option
14008 @item threshold
14009 Set threshold used when picking pixels from absolute difference from two input
14010 video streams.
14011
14012 @item planes
14013 Set which planes will be processed as bitmap, unprocessed planes will be
14014 copied from second stream.
14015 By default value 0xf, all planes will be processed.
14016 @end table
14017
14018 @section maskfun
14019 Create mask from input video.
14020
14021 For example it is useful to create motion masks after @code{tblend} filter.
14022
14023 This filter accepts the following options:
14024
14025 @table @option
14026 @item low
14027 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
14028
14029 @item high
14030 Set high threshold. Any pixel component higher than this value will be set to max value
14031 allowed for current pixel format.
14032
14033 @item planes
14034 Set planes to filter, by default all available planes are filtered.
14035
14036 @item fill
14037 Fill all frame pixels with this value.
14038
14039 @item sum
14040 Set max average pixel value for frame. If sum of all pixel components is higher that this
14041 average, output frame will be completely filled with value set by @var{fill} option.
14042 Typically useful for scene changes when used in combination with @code{tblend} filter.
14043 @end table
14044
14045 @section mcdeint
14046
14047 Apply motion-compensation deinterlacing.
14048
14049 It needs one field per frame as input and must thus be used together
14050 with yadif=1/3 or equivalent.
14051
14052 This filter accepts the following options:
14053 @table @option
14054 @item mode
14055 Set the deinterlacing mode.
14056
14057 It accepts one of the following values:
14058 @table @samp
14059 @item fast
14060 @item medium
14061 @item slow
14062 use iterative motion estimation
14063 @item extra_slow
14064 like @samp{slow}, but use multiple reference frames.
14065 @end table
14066 Default value is @samp{fast}.
14067
14068 @item parity
14069 Set the picture field parity assumed for the input video. It must be
14070 one of the following values:
14071
14072 @table @samp
14073 @item 0, tff
14074 assume top field first
14075 @item 1, bff
14076 assume bottom field first
14077 @end table
14078
14079 Default value is @samp{bff}.
14080
14081 @item qp
14082 Set per-block quantization parameter (QP) used by the internal
14083 encoder.
14084
14085 Higher values should result in a smoother motion vector field but less
14086 optimal individual vectors. Default value is 1.
14087 @end table
14088
14089 @section median
14090
14091 Pick median pixel from certain rectangle defined by radius.
14092
14093 This filter accepts the following options:
14094
14095 @table @option
14096 @item radius
14097 Set horizontal radius size. Default value is @code{1}.
14098 Allowed range is integer from 1 to 127.
14099
14100 @item planes
14101 Set which planes to process. Default is @code{15}, which is all available planes.
14102
14103 @item radiusV
14104 Set vertical radius size. Default value is @code{0}.
14105 Allowed range is integer from 0 to 127.
14106 If it is 0, value will be picked from horizontal @code{radius} option.
14107
14108 @item percentile
14109 Set median percentile. Default value is @code{0.5}.
14110 Default value of @code{0.5} will pick always median values, while @code{0} will pick
14111 minimum values, and @code{1} maximum values.
14112 @end table
14113
14114 @subsection Commands
14115 This filter supports same @ref{commands} as options.
14116 The command accepts the same syntax of the corresponding option.
14117
14118 If the specified expression is not valid, it is kept at its current
14119 value.
14120
14121 @section mergeplanes
14122
14123 Merge color channel components from several video streams.
14124
14125 The filter accepts up to 4 input streams, and merge selected input
14126 planes to the output video.
14127
14128 This filter accepts the following options:
14129 @table @option
14130 @item mapping
14131 Set input to output plane mapping. Default is @code{0}.
14132
14133 The mappings is specified as a bitmap. It should be specified as a
14134 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
14135 mapping for the first plane of the output stream. 'A' sets the number of
14136 the input stream to use (from 0 to 3), and 'a' the plane number of the
14137 corresponding input to use (from 0 to 3). The rest of the mappings is
14138 similar, 'Bb' describes the mapping for the output stream second
14139 plane, 'Cc' describes the mapping for the output stream third plane and
14140 'Dd' describes the mapping for the output stream fourth plane.
14141
14142 @item format
14143 Set output pixel format. Default is @code{yuva444p}.
14144 @end table
14145
14146 @subsection Examples
14147
14148 @itemize
14149 @item
14150 Merge three gray video streams of same width and height into single video stream:
14151 @example
14152 [a0][a1][a2]mergeplanes=0x001020:yuv444p
14153 @end example
14154
14155 @item
14156 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
14157 @example
14158 [a0][a1]mergeplanes=0x00010210:yuva444p
14159 @end example
14160
14161 @item
14162 Swap Y and A plane in yuva444p stream:
14163 @example
14164 format=yuva444p,mergeplanes=0x03010200:yuva444p
14165 @end example
14166
14167 @item
14168 Swap U and V plane in yuv420p stream:
14169 @example
14170 format=yuv420p,mergeplanes=0x000201:yuv420p
14171 @end example
14172
14173 @item
14174 Cast a rgb24 clip to yuv444p:
14175 @example
14176 format=rgb24,mergeplanes=0x000102:yuv444p
14177 @end example
14178 @end itemize
14179
14180 @section mestimate
14181
14182 Estimate and export motion vectors using block matching algorithms.
14183 Motion vectors are stored in frame side data to be used by other filters.
14184
14185 This filter accepts the following options:
14186 @table @option
14187 @item method
14188 Specify the motion estimation method. Accepts one of the following values:
14189
14190 @table @samp
14191 @item esa
14192 Exhaustive search algorithm.
14193 @item tss
14194 Three step search algorithm.
14195 @item tdls
14196 Two dimensional logarithmic search algorithm.
14197 @item ntss
14198 New three step search algorithm.
14199 @item fss
14200 Four step search algorithm.
14201 @item ds
14202 Diamond search algorithm.
14203 @item hexbs
14204 Hexagon-based search algorithm.
14205 @item epzs
14206 Enhanced predictive zonal search algorithm.
14207 @item umh
14208 Uneven multi-hexagon search algorithm.
14209 @end table
14210 Default value is @samp{esa}.
14211
14212 @item mb_size
14213 Macroblock size. Default @code{16}.
14214
14215 @item search_param
14216 Search parameter. Default @code{7}.
14217 @end table
14218
14219 @section midequalizer
14220
14221 Apply Midway Image Equalization effect using two video streams.
14222
14223 Midway Image Equalization adjusts a pair of images to have the same
14224 histogram, while maintaining their dynamics as much as possible. It's
14225 useful for e.g. matching exposures from a pair of stereo cameras.
14226
14227 This filter has two inputs and one output, which must be of same pixel format, but
14228 may be of different sizes. The output of filter is first input adjusted with
14229 midway histogram of both inputs.
14230
14231 This filter accepts the following option:
14232
14233 @table @option
14234 @item planes
14235 Set which planes to process. Default is @code{15}, which is all available planes.
14236 @end table
14237
14238 @section minterpolate
14239
14240 Convert the video to specified frame rate using motion interpolation.
14241
14242 This filter accepts the following options:
14243 @table @option
14244 @item fps
14245 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}.
14246
14247 @item mi_mode
14248 Motion interpolation mode. Following values are accepted:
14249 @table @samp
14250 @item dup
14251 Duplicate previous or next frame for interpolating new ones.
14252 @item blend
14253 Blend source frames. Interpolated frame is mean of previous and next frames.
14254 @item mci
14255 Motion compensated interpolation. Following options are effective when this mode is selected:
14256
14257 @table @samp
14258 @item mc_mode
14259 Motion compensation mode. Following values are accepted:
14260 @table @samp
14261 @item obmc
14262 Overlapped block motion compensation.
14263 @item aobmc
14264 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
14265 @end table
14266 Default mode is @samp{obmc}.
14267
14268 @item me_mode
14269 Motion estimation mode. Following values are accepted:
14270 @table @samp
14271 @item bidir
14272 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
14273 @item bilat
14274 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
14275 @end table
14276 Default mode is @samp{bilat}.
14277
14278 @item me
14279 The algorithm to be used for motion estimation. Following values are accepted:
14280 @table @samp
14281 @item esa
14282 Exhaustive search algorithm.
14283 @item tss
14284 Three step search algorithm.
14285 @item tdls
14286 Two dimensional logarithmic search algorithm.
14287 @item ntss
14288 New three step search algorithm.
14289 @item fss
14290 Four step search algorithm.
14291 @item ds
14292 Diamond search algorithm.
14293 @item hexbs
14294 Hexagon-based search algorithm.
14295 @item epzs
14296 Enhanced predictive zonal search algorithm.
14297 @item umh
14298 Uneven multi-hexagon search algorithm.
14299 @end table
14300 Default algorithm is @samp{epzs}.
14301
14302 @item mb_size
14303 Macroblock size. Default @code{16}.
14304
14305 @item search_param
14306 Motion estimation search parameter. Default @code{32}.
14307
14308 @item vsbmc
14309 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).
14310 @end table
14311 @end table
14312
14313 @item scd
14314 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:
14315 @table @samp
14316 @item none
14317 Disable scene change detection.
14318 @item fdiff
14319 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
14320 @end table
14321 Default method is @samp{fdiff}.
14322
14323 @item scd_threshold
14324 Scene change detection threshold. Default is @code{10.}.
14325 @end table
14326
14327 @section mix
14328
14329 Mix several video input streams into one video stream.
14330
14331 A description of the accepted options follows.
14332
14333 @table @option
14334 @item nb_inputs
14335 The number of inputs. If unspecified, it defaults to 2.
14336
14337 @item weights
14338 Specify weight of each input video stream as sequence.
14339 Each weight is separated by space. If number of weights
14340 is smaller than number of @var{frames} last specified
14341 weight will be used for all remaining unset weights.
14342
14343 @item scale
14344 Specify scale, if it is set it will be multiplied with sum
14345 of each weight multiplied with pixel values to give final destination
14346 pixel value. By default @var{scale} is auto scaled to sum of weights.
14347
14348 @item duration
14349 Specify how end of stream is determined.
14350 @table @samp
14351 @item longest
14352 The duration of the longest input. (default)
14353
14354 @item shortest
14355 The duration of the shortest input.
14356
14357 @item first
14358 The duration of the first input.
14359 @end table
14360 @end table
14361
14362 @section mpdecimate
14363
14364 Drop frames that do not differ greatly from the previous frame in
14365 order to reduce frame rate.
14366
14367 The main use of this filter is for very-low-bitrate encoding
14368 (e.g. streaming over dialup modem), but it could in theory be used for
14369 fixing movies that were inverse-telecined incorrectly.
14370
14371 A description of the accepted options follows.
14372
14373 @table @option
14374 @item max
14375 Set the maximum number of consecutive frames which can be dropped (if
14376 positive), or the minimum interval between dropped frames (if
14377 negative). If the value is 0, the frame is dropped disregarding the
14378 number of previous sequentially dropped frames.
14379
14380 Default value is 0.
14381
14382 @item hi
14383 @item lo
14384 @item frac
14385 Set the dropping threshold values.
14386
14387 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
14388 represent actual pixel value differences, so a threshold of 64
14389 corresponds to 1 unit of difference for each pixel, or the same spread
14390 out differently over the block.
14391
14392 A frame is a candidate for dropping if no 8x8 blocks differ by more
14393 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
14394 meaning the whole image) differ by more than a threshold of @option{lo}.
14395
14396 Default value for @option{hi} is 64*12, default value for @option{lo} is
14397 64*5, and default value for @option{frac} is 0.33.
14398 @end table
14399
14400
14401 @section negate
14402
14403 Negate (invert) the input video.
14404
14405 It accepts the following option:
14406
14407 @table @option
14408
14409 @item negate_alpha
14410 With value 1, it negates the alpha component, if present. Default value is 0.
14411 @end table
14412
14413 @anchor{nlmeans}
14414 @section nlmeans
14415
14416 Denoise frames using Non-Local Means algorithm.
14417
14418 Each pixel is adjusted by looking for other pixels with similar contexts. This
14419 context similarity is defined by comparing their surrounding patches of size
14420 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
14421 around the pixel.
14422
14423 Note that the research area defines centers for patches, which means some
14424 patches will be made of pixels outside that research area.
14425
14426 The filter accepts the following options.
14427
14428 @table @option
14429 @item s
14430 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
14431
14432 @item p
14433 Set patch size. Default is 7. Must be odd number in range [0, 99].
14434
14435 @item pc
14436 Same as @option{p} but for chroma planes.
14437
14438 The default value is @var{0} and means automatic.
14439
14440 @item r
14441 Set research size. Default is 15. Must be odd number in range [0, 99].
14442
14443 @item rc
14444 Same as @option{r} but for chroma planes.
14445
14446 The default value is @var{0} and means automatic.
14447 @end table
14448
14449 @section nnedi
14450
14451 Deinterlace video using neural network edge directed interpolation.
14452
14453 This filter accepts the following options:
14454
14455 @table @option
14456 @item weights
14457 Mandatory option, without binary file filter can not work.
14458 Currently file can be found here:
14459 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
14460
14461 @item deint
14462 Set which frames to deinterlace, by default it is @code{all}.
14463 Can be @code{all} or @code{interlaced}.
14464
14465 @item field
14466 Set mode of operation.
14467
14468 Can be one of the following:
14469
14470 @table @samp
14471 @item af
14472 Use frame flags, both fields.
14473 @item a
14474 Use frame flags, single field.
14475 @item t
14476 Use top field only.
14477 @item b
14478 Use bottom field only.
14479 @item tf
14480 Use both fields, top first.
14481 @item bf
14482 Use both fields, bottom first.
14483 @end table
14484
14485 @item planes
14486 Set which planes to process, by default filter process all frames.
14487
14488 @item nsize
14489 Set size of local neighborhood around each pixel, used by the predictor neural
14490 network.
14491
14492 Can be one of the following:
14493
14494 @table @samp
14495 @item s8x6
14496 @item s16x6
14497 @item s32x6
14498 @item s48x6
14499 @item s8x4
14500 @item s16x4
14501 @item s32x4
14502 @end table
14503
14504 @item nns
14505 Set the number of neurons in predictor neural network.
14506 Can be one of the following:
14507
14508 @table @samp
14509 @item n16
14510 @item n32
14511 @item n64
14512 @item n128
14513 @item n256
14514 @end table
14515
14516 @item qual
14517 Controls the number of different neural network predictions that are blended
14518 together to compute the final output value. Can be @code{fast}, default or
14519 @code{slow}.
14520
14521 @item etype
14522 Set which set of weights to use in the predictor.
14523 Can be one of the following:
14524
14525 @table @samp
14526 @item a
14527 weights trained to minimize absolute error
14528 @item s
14529 weights trained to minimize squared error
14530 @end table
14531
14532 @item pscrn
14533 Controls whether or not the prescreener neural network is used to decide
14534 which pixels should be processed by the predictor neural network and which
14535 can be handled by simple cubic interpolation.
14536 The prescreener is trained to know whether cubic interpolation will be
14537 sufficient for a pixel or whether it should be predicted by the predictor nn.
14538 The computational complexity of the prescreener nn is much less than that of
14539 the predictor nn. Since most pixels can be handled by cubic interpolation,
14540 using the prescreener generally results in much faster processing.
14541 The prescreener is pretty accurate, so the difference between using it and not
14542 using it is almost always unnoticeable.
14543
14544 Can be one of the following:
14545
14546 @table @samp
14547 @item none
14548 @item original
14549 @item new
14550 @end table
14551
14552 Default is @code{new}.
14553
14554 @item fapprox
14555 Set various debugging flags.
14556 @end table
14557
14558 @section noformat
14559
14560 Force libavfilter not to use any of the specified pixel formats for the
14561 input to the next filter.
14562
14563 It accepts the following parameters:
14564 @table @option
14565
14566 @item pix_fmts
14567 A '|'-separated list of pixel format names, such as
14568 pix_fmts=yuv420p|monow|rgb24".
14569
14570 @end table
14571
14572 @subsection Examples
14573
14574 @itemize
14575 @item
14576 Force libavfilter to use a format different from @var{yuv420p} for the
14577 input to the vflip filter:
14578 @example
14579 noformat=pix_fmts=yuv420p,vflip
14580 @end example
14581
14582 @item
14583 Convert the input video to any of the formats not contained in the list:
14584 @example
14585 noformat=yuv420p|yuv444p|yuv410p
14586 @end example
14587 @end itemize
14588
14589 @section noise
14590
14591 Add noise on video input frame.
14592
14593 The filter accepts the following options:
14594
14595 @table @option
14596 @item all_seed
14597 @item c0_seed
14598 @item c1_seed
14599 @item c2_seed
14600 @item c3_seed
14601 Set noise seed for specific pixel component or all pixel components in case
14602 of @var{all_seed}. Default value is @code{123457}.
14603
14604 @item all_strength, alls
14605 @item c0_strength, c0s
14606 @item c1_strength, c1s
14607 @item c2_strength, c2s
14608 @item c3_strength, c3s
14609 Set noise strength for specific pixel component or all pixel components in case
14610 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
14611
14612 @item all_flags, allf
14613 @item c0_flags, c0f
14614 @item c1_flags, c1f
14615 @item c2_flags, c2f
14616 @item c3_flags, c3f
14617 Set pixel component flags or set flags for all components if @var{all_flags}.
14618 Available values for component flags are:
14619 @table @samp
14620 @item a
14621 averaged temporal noise (smoother)
14622 @item p
14623 mix random noise with a (semi)regular pattern
14624 @item t
14625 temporal noise (noise pattern changes between frames)
14626 @item u
14627 uniform noise (gaussian otherwise)
14628 @end table
14629 @end table
14630
14631 @subsection Examples
14632
14633 Add temporal and uniform noise to input video:
14634 @example
14635 noise=alls=20:allf=t+u
14636 @end example
14637
14638 @section normalize
14639
14640 Normalize RGB video (aka histogram stretching, contrast stretching).
14641 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
14642
14643 For each channel of each frame, the filter computes the input range and maps
14644 it linearly to the user-specified output range. The output range defaults
14645 to the full dynamic range from pure black to pure white.
14646
14647 Temporal smoothing can be used on the input range to reduce flickering (rapid
14648 changes in brightness) caused when small dark or bright objects enter or leave
14649 the scene. This is similar to the auto-exposure (automatic gain control) on a
14650 video camera, and, like a video camera, it may cause a period of over- or
14651 under-exposure of the video.
14652
14653 The R,G,B channels can be normalized independently, which may cause some
14654 color shifting, or linked together as a single channel, which prevents
14655 color shifting. Linked normalization preserves hue. Independent normalization
14656 does not, so it can be used to remove some color casts. Independent and linked
14657 normalization can be combined in any ratio.
14658
14659 The normalize filter accepts the following options:
14660
14661 @table @option
14662 @item blackpt
14663 @item whitept
14664 Colors which define the output range. The minimum input value is mapped to
14665 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
14666 The defaults are black and white respectively. Specifying white for
14667 @var{blackpt} and black for @var{whitept} will give color-inverted,
14668 normalized video. Shades of grey can be used to reduce the dynamic range
14669 (contrast). Specifying saturated colors here can create some interesting
14670 effects.
14671
14672 @item smoothing
14673 The number of previous frames to use for temporal smoothing. The input range
14674 of each channel is smoothed using a rolling average over the current frame
14675 and the @var{smoothing} previous frames. The default is 0 (no temporal
14676 smoothing).
14677
14678 @item independence
14679 Controls the ratio of independent (color shifting) channel normalization to
14680 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
14681 independent. Defaults to 1.0 (fully independent).
14682
14683 @item strength
14684 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
14685 expensive no-op. Defaults to 1.0 (full strength).
14686
14687 @end table
14688
14689 @subsection Commands
14690 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
14691 The command accepts the same syntax of the corresponding option.
14692
14693 If the specified expression is not valid, it is kept at its current
14694 value.
14695
14696 @subsection Examples
14697
14698 Stretch video contrast to use the full dynamic range, with no temporal
14699 smoothing; may flicker depending on the source content:
14700 @example
14701 normalize=blackpt=black:whitept=white:smoothing=0
14702 @end example
14703
14704 As above, but with 50 frames of temporal smoothing; flicker should be
14705 reduced, depending on the source content:
14706 @example
14707 normalize=blackpt=black:whitept=white:smoothing=50
14708 @end example
14709
14710 As above, but with hue-preserving linked channel normalization:
14711 @example
14712 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
14713 @end example
14714
14715 As above, but with half strength:
14716 @example
14717 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
14718 @end example
14719
14720 Map the darkest input color to red, the brightest input color to cyan:
14721 @example
14722 normalize=blackpt=red:whitept=cyan
14723 @end example
14724
14725 @section null
14726
14727 Pass the video source unchanged to the output.
14728
14729 @section ocr
14730 Optical Character Recognition
14731
14732 This filter uses Tesseract for optical character recognition. To enable
14733 compilation of this filter, you need to configure FFmpeg with
14734 @code{--enable-libtesseract}.
14735
14736 It accepts the following options:
14737
14738 @table @option
14739 @item datapath
14740 Set datapath to tesseract data. Default is to use whatever was
14741 set at installation.
14742
14743 @item language
14744 Set language, default is "eng".
14745
14746 @item whitelist
14747 Set character whitelist.
14748
14749 @item blacklist
14750 Set character blacklist.
14751 @end table
14752
14753 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
14754 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
14755
14756 @section ocv
14757
14758 Apply a video transform using libopencv.
14759
14760 To enable this filter, install the libopencv library and headers and
14761 configure FFmpeg with @code{--enable-libopencv}.
14762
14763 It accepts the following parameters:
14764
14765 @table @option
14766
14767 @item filter_name
14768 The name of the libopencv filter to apply.
14769
14770 @item filter_params
14771 The parameters to pass to the libopencv filter. If not specified, the default
14772 values are assumed.
14773
14774 @end table
14775
14776 Refer to the official libopencv documentation for more precise
14777 information:
14778 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
14779
14780 Several libopencv filters are supported; see the following subsections.
14781
14782 @anchor{dilate}
14783 @subsection dilate
14784
14785 Dilate an image by using a specific structuring element.
14786 It corresponds to the libopencv function @code{cvDilate}.
14787
14788 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
14789
14790 @var{struct_el} represents a structuring element, and has the syntax:
14791 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
14792
14793 @var{cols} and @var{rows} represent the number of columns and rows of
14794 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
14795 point, and @var{shape} the shape for the structuring element. @var{shape}
14796 must be "rect", "cross", "ellipse", or "custom".
14797
14798 If the value for @var{shape} is "custom", it must be followed by a
14799 string of the form "=@var{filename}". The file with name
14800 @var{filename} is assumed to represent a binary image, with each
14801 printable character corresponding to a bright pixel. When a custom
14802 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
14803 or columns and rows of the read file are assumed instead.
14804
14805 The default value for @var{struct_el} is "3x3+0x0/rect".
14806
14807 @var{nb_iterations} specifies the number of times the transform is
14808 applied to the image, and defaults to 1.
14809
14810 Some examples:
14811 @example
14812 # Use the default values
14813 ocv=dilate
14814
14815 # Dilate using a structuring element with a 5x5 cross, iterating two times
14816 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
14817
14818 # Read the shape from the file diamond.shape, iterating two times.
14819 # The file diamond.shape may contain a pattern of characters like this
14820 #   *
14821 #  ***
14822 # *****
14823 #  ***
14824 #   *
14825 # The specified columns and rows are ignored
14826 # but the anchor point coordinates are not
14827 ocv=dilate:0x0+2x2/custom=diamond.shape|2
14828 @end example
14829
14830 @subsection erode
14831
14832 Erode an image by using a specific structuring element.
14833 It corresponds to the libopencv function @code{cvErode}.
14834
14835 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
14836 with the same syntax and semantics as the @ref{dilate} filter.
14837
14838 @subsection smooth
14839
14840 Smooth the input video.
14841
14842 The filter takes the following parameters:
14843 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
14844
14845 @var{type} is the type of smooth filter to apply, and must be one of
14846 the following values: "blur", "blur_no_scale", "median", "gaussian",
14847 or "bilateral". The default value is "gaussian".
14848
14849 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
14850 depends on the smooth type. @var{param1} and
14851 @var{param2} accept integer positive values or 0. @var{param3} and
14852 @var{param4} accept floating point values.
14853
14854 The default value for @var{param1} is 3. The default value for the
14855 other parameters is 0.
14856
14857 These parameters correspond to the parameters assigned to the
14858 libopencv function @code{cvSmooth}.
14859
14860 @section oscilloscope
14861
14862 2D Video Oscilloscope.
14863
14864 Useful to measure spatial impulse, step responses, chroma delays, etc.
14865
14866 It accepts the following parameters:
14867
14868 @table @option
14869 @item x
14870 Set scope center x position.
14871
14872 @item y
14873 Set scope center y position.
14874
14875 @item s
14876 Set scope size, relative to frame diagonal.
14877
14878 @item t
14879 Set scope tilt/rotation.
14880
14881 @item o
14882 Set trace opacity.
14883
14884 @item tx
14885 Set trace center x position.
14886
14887 @item ty
14888 Set trace center y position.
14889
14890 @item tw
14891 Set trace width, relative to width of frame.
14892
14893 @item th
14894 Set trace height, relative to height of frame.
14895
14896 @item c
14897 Set which components to trace. By default it traces first three components.
14898
14899 @item g
14900 Draw trace grid. By default is enabled.
14901
14902 @item st
14903 Draw some statistics. By default is enabled.
14904
14905 @item sc
14906 Draw scope. By default is enabled.
14907 @end table
14908
14909 @subsection Commands
14910 This filter supports same @ref{commands} as options.
14911 The command accepts the same syntax of the corresponding option.
14912
14913 If the specified expression is not valid, it is kept at its current
14914 value.
14915
14916 @subsection Examples
14917
14918 @itemize
14919 @item
14920 Inspect full first row of video frame.
14921 @example
14922 oscilloscope=x=0.5:y=0:s=1
14923 @end example
14924
14925 @item
14926 Inspect full last row of video frame.
14927 @example
14928 oscilloscope=x=0.5:y=1:s=1
14929 @end example
14930
14931 @item
14932 Inspect full 5th line of video frame of height 1080.
14933 @example
14934 oscilloscope=x=0.5:y=5/1080:s=1
14935 @end example
14936
14937 @item
14938 Inspect full last column of video frame.
14939 @example
14940 oscilloscope=x=1:y=0.5:s=1:t=1
14941 @end example
14942
14943 @end itemize
14944
14945 @anchor{overlay}
14946 @section overlay
14947
14948 Overlay one video on top of another.
14949
14950 It takes two inputs and has one output. The first input is the "main"
14951 video on which the second input is overlaid.
14952
14953 It accepts the following parameters:
14954
14955 A description of the accepted options follows.
14956
14957 @table @option
14958 @item x
14959 @item y
14960 Set the expression for the x and y coordinates of the overlaid video
14961 on the main video. Default value is "0" for both expressions. In case
14962 the expression is invalid, it is set to a huge value (meaning that the
14963 overlay will not be displayed within the output visible area).
14964
14965 @item eof_action
14966 See @ref{framesync}.
14967
14968 @item eval
14969 Set when the expressions for @option{x}, and @option{y} are evaluated.
14970
14971 It accepts the following values:
14972 @table @samp
14973 @item init
14974 only evaluate expressions once during the filter initialization or
14975 when a command is processed
14976
14977 @item frame
14978 evaluate expressions for each incoming frame
14979 @end table
14980
14981 Default value is @samp{frame}.
14982
14983 @item shortest
14984 See @ref{framesync}.
14985
14986 @item format
14987 Set the format for the output video.
14988
14989 It accepts the following values:
14990 @table @samp
14991 @item yuv420
14992 force YUV420 output
14993
14994 @item yuv420p10
14995 force YUV420p10 output
14996
14997 @item yuv422
14998 force YUV422 output
14999
15000 @item yuv422p10
15001 force YUV422p10 output
15002
15003 @item yuv444
15004 force YUV444 output
15005
15006 @item rgb
15007 force packed RGB output
15008
15009 @item gbrp
15010 force planar RGB output
15011
15012 @item auto
15013 automatically pick format
15014 @end table
15015
15016 Default value is @samp{yuv420}.
15017
15018 @item repeatlast
15019 See @ref{framesync}.
15020
15021 @item alpha
15022 Set format of alpha of the overlaid video, it can be @var{straight} or
15023 @var{premultiplied}. Default is @var{straight}.
15024 @end table
15025
15026 The @option{x}, and @option{y} expressions can contain the following
15027 parameters.
15028
15029 @table @option
15030 @item main_w, W
15031 @item main_h, H
15032 The main input width and height.
15033
15034 @item overlay_w, w
15035 @item overlay_h, h
15036 The overlay input width and height.
15037
15038 @item x
15039 @item y
15040 The computed values for @var{x} and @var{y}. They are evaluated for
15041 each new frame.
15042
15043 @item hsub
15044 @item vsub
15045 horizontal and vertical chroma subsample values of the output
15046 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
15047 @var{vsub} is 1.
15048
15049 @item n
15050 the number of input frame, starting from 0
15051
15052 @item pos
15053 the position in the file of the input frame, NAN if unknown
15054
15055 @item t
15056 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
15057
15058 @end table
15059
15060 This filter also supports the @ref{framesync} options.
15061
15062 Note that the @var{n}, @var{pos}, @var{t} variables are available only
15063 when evaluation is done @emph{per frame}, and will evaluate to NAN
15064 when @option{eval} is set to @samp{init}.
15065
15066 Be aware that frames are taken from each input video in timestamp
15067 order, hence, if their initial timestamps differ, it is a good idea
15068 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
15069 have them begin in the same zero timestamp, as the example for
15070 the @var{movie} filter does.
15071
15072 You can chain together more overlays but you should test the
15073 efficiency of such approach.
15074
15075 @subsection Commands
15076
15077 This filter supports the following commands:
15078 @table @option
15079 @item x
15080 @item y
15081 Modify the x and y of the overlay input.
15082 The command accepts the same syntax of the corresponding option.
15083
15084 If the specified expression is not valid, it is kept at its current
15085 value.
15086 @end table
15087
15088 @subsection Examples
15089
15090 @itemize
15091 @item
15092 Draw the overlay at 10 pixels from the bottom right corner of the main
15093 video:
15094 @example
15095 overlay=main_w-overlay_w-10:main_h-overlay_h-10
15096 @end example
15097
15098 Using named options the example above becomes:
15099 @example
15100 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
15101 @end example
15102
15103 @item
15104 Insert a transparent PNG logo in the bottom left corner of the input,
15105 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
15106 @example
15107 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
15108 @end example
15109
15110 @item
15111 Insert 2 different transparent PNG logos (second logo on bottom
15112 right corner) using the @command{ffmpeg} tool:
15113 @example
15114 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
15115 @end example
15116
15117 @item
15118 Add a transparent color layer on top of the main video; @code{WxH}
15119 must specify the size of the main input to the overlay filter:
15120 @example
15121 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
15122 @end example
15123
15124 @item
15125 Play an original video and a filtered version (here with the deshake
15126 filter) side by side using the @command{ffplay} tool:
15127 @example
15128 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
15129 @end example
15130
15131 The above command is the same as:
15132 @example
15133 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
15134 @end example
15135
15136 @item
15137 Make a sliding overlay appearing from the left to the right top part of the
15138 screen starting since time 2:
15139 @example
15140 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
15141 @end example
15142
15143 @item
15144 Compose output by putting two input videos side to side:
15145 @example
15146 ffmpeg -i left.avi -i right.avi -filter_complex "
15147 nullsrc=size=200x100 [background];
15148 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
15149 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
15150 [background][left]       overlay=shortest=1       [background+left];
15151 [background+left][right] overlay=shortest=1:x=100 [left+right]
15152 "
15153 @end example
15154
15155 @item
15156 Mask 10-20 seconds of a video by applying the delogo filter to a section
15157 @example
15158 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
15159 -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]'
15160 masked.avi
15161 @end example
15162
15163 @item
15164 Chain several overlays in cascade:
15165 @example
15166 nullsrc=s=200x200 [bg];
15167 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
15168 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
15169 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
15170 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
15171 [in3] null,       [mid2] overlay=100:100 [out0]
15172 @end example
15173
15174 @end itemize
15175
15176 @anchor{overlay_cuda}
15177 @section overlay_cuda
15178
15179 Overlay one video on top of another.
15180
15181 This is the CUDA variant of the @ref{overlay} filter.
15182 It only accepts CUDA frames. The underlying input pixel formats have to match.
15183
15184 It takes two inputs and has one output. The first input is the "main"
15185 video on which the second input is overlaid.
15186
15187 It accepts the following parameters:
15188
15189 @table @option
15190 @item x
15191 @item y
15192 Set the x and y coordinates of the overlaid video on the main video.
15193 Default value is "0" for both expressions.
15194
15195 @item eof_action
15196 See @ref{framesync}.
15197
15198 @item shortest
15199 See @ref{framesync}.
15200
15201 @item repeatlast
15202 See @ref{framesync}.
15203
15204 @end table
15205
15206 This filter also supports the @ref{framesync} options.
15207
15208 @section owdenoise
15209
15210 Apply Overcomplete Wavelet denoiser.
15211
15212 The filter accepts the following options:
15213
15214 @table @option
15215 @item depth
15216 Set depth.
15217
15218 Larger depth values will denoise lower frequency components more, but
15219 slow down filtering.
15220
15221 Must be an int in the range 8-16, default is @code{8}.
15222
15223 @item luma_strength, ls
15224 Set luma strength.
15225
15226 Must be a double value in the range 0-1000, default is @code{1.0}.
15227
15228 @item chroma_strength, cs
15229 Set chroma strength.
15230
15231 Must be a double value in the range 0-1000, default is @code{1.0}.
15232 @end table
15233
15234 @anchor{pad}
15235 @section pad
15236
15237 Add paddings to the input image, and place the original input at the
15238 provided @var{x}, @var{y} coordinates.
15239
15240 It accepts the following parameters:
15241
15242 @table @option
15243 @item width, w
15244 @item height, h
15245 Specify an expression for the size of the output image with the
15246 paddings added. If the value for @var{width} or @var{height} is 0, the
15247 corresponding input size is used for the output.
15248
15249 The @var{width} expression can reference the value set by the
15250 @var{height} expression, and vice versa.
15251
15252 The default value of @var{width} and @var{height} is 0.
15253
15254 @item x
15255 @item y
15256 Specify the offsets to place the input image at within the padded area,
15257 with respect to the top/left border of the output image.
15258
15259 The @var{x} expression can reference the value set by the @var{y}
15260 expression, and vice versa.
15261
15262 The default value of @var{x} and @var{y} is 0.
15263
15264 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
15265 so the input image is centered on the padded area.
15266
15267 @item color
15268 Specify the color of the padded area. For the syntax of this option,
15269 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
15270 manual,ffmpeg-utils}.
15271
15272 The default value of @var{color} is "black".
15273
15274 @item eval
15275 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
15276
15277 It accepts the following values:
15278
15279 @table @samp
15280 @item init
15281 Only evaluate expressions once during the filter initialization or when
15282 a command is processed.
15283
15284 @item frame
15285 Evaluate expressions for each incoming frame.
15286
15287 @end table
15288
15289 Default value is @samp{init}.
15290
15291 @item aspect
15292 Pad to aspect instead to a resolution.
15293
15294 @end table
15295
15296 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
15297 options are expressions containing the following constants:
15298
15299 @table @option
15300 @item in_w
15301 @item in_h
15302 The input video width and height.
15303
15304 @item iw
15305 @item ih
15306 These are the same as @var{in_w} and @var{in_h}.
15307
15308 @item out_w
15309 @item out_h
15310 The output width and height (the size of the padded area), as
15311 specified by the @var{width} and @var{height} expressions.
15312
15313 @item ow
15314 @item oh
15315 These are the same as @var{out_w} and @var{out_h}.
15316
15317 @item x
15318 @item y
15319 The x and y offsets as specified by the @var{x} and @var{y}
15320 expressions, or NAN if not yet specified.
15321
15322 @item a
15323 same as @var{iw} / @var{ih}
15324
15325 @item sar
15326 input sample aspect ratio
15327
15328 @item dar
15329 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
15330
15331 @item hsub
15332 @item vsub
15333 The horizontal and vertical chroma subsample values. For example for the
15334 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15335 @end table
15336
15337 @subsection Examples
15338
15339 @itemize
15340 @item
15341 Add paddings with the color "violet" to the input video. The output video
15342 size is 640x480, and the top-left corner of the input video is placed at
15343 column 0, row 40
15344 @example
15345 pad=640:480:0:40:violet
15346 @end example
15347
15348 The example above is equivalent to the following command:
15349 @example
15350 pad=width=640:height=480:x=0:y=40:color=violet
15351 @end example
15352
15353 @item
15354 Pad the input to get an output with dimensions increased by 3/2,
15355 and put the input video at the center of the padded area:
15356 @example
15357 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
15358 @end example
15359
15360 @item
15361 Pad the input to get a squared output with size equal to the maximum
15362 value between the input width and height, and put the input video at
15363 the center of the padded area:
15364 @example
15365 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
15366 @end example
15367
15368 @item
15369 Pad the input to get a final w/h ratio of 16:9:
15370 @example
15371 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
15372 @end example
15373
15374 @item
15375 In case of anamorphic video, in order to set the output display aspect
15376 correctly, it is necessary to use @var{sar} in the expression,
15377 according to the relation:
15378 @example
15379 (ih * X / ih) * sar = output_dar
15380 X = output_dar / sar
15381 @end example
15382
15383 Thus the previous example needs to be modified to:
15384 @example
15385 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
15386 @end example
15387
15388 @item
15389 Double the output size and put the input video in the bottom-right
15390 corner of the output padded area:
15391 @example
15392 pad="2*iw:2*ih:ow-iw:oh-ih"
15393 @end example
15394 @end itemize
15395
15396 @anchor{palettegen}
15397 @section palettegen
15398
15399 Generate one palette for a whole video stream.
15400
15401 It accepts the following options:
15402
15403 @table @option
15404 @item max_colors
15405 Set the maximum number of colors to quantize in the palette.
15406 Note: the palette will still contain 256 colors; the unused palette entries
15407 will be black.
15408
15409 @item reserve_transparent
15410 Create a palette of 255 colors maximum and reserve the last one for
15411 transparency. Reserving the transparency color is useful for GIF optimization.
15412 If not set, the maximum of colors in the palette will be 256. You probably want
15413 to disable this option for a standalone image.
15414 Set by default.
15415
15416 @item transparency_color
15417 Set the color that will be used as background for transparency.
15418
15419 @item stats_mode
15420 Set statistics mode.
15421
15422 It accepts the following values:
15423 @table @samp
15424 @item full
15425 Compute full frame histograms.
15426 @item diff
15427 Compute histograms only for the part that differs from previous frame. This
15428 might be relevant to give more importance to the moving part of your input if
15429 the background is static.
15430 @item single
15431 Compute new histogram for each frame.
15432 @end table
15433
15434 Default value is @var{full}.
15435 @end table
15436
15437 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
15438 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
15439 color quantization of the palette. This information is also visible at
15440 @var{info} logging level.
15441
15442 @subsection Examples
15443
15444 @itemize
15445 @item
15446 Generate a representative palette of a given video using @command{ffmpeg}:
15447 @example
15448 ffmpeg -i input.mkv -vf palettegen palette.png
15449 @end example
15450 @end itemize
15451
15452 @section paletteuse
15453
15454 Use a palette to downsample an input video stream.
15455
15456 The filter takes two inputs: one video stream and a palette. The palette must
15457 be a 256 pixels image.
15458
15459 It accepts the following options:
15460
15461 @table @option
15462 @item dither
15463 Select dithering mode. Available algorithms are:
15464 @table @samp
15465 @item bayer
15466 Ordered 8x8 bayer dithering (deterministic)
15467 @item heckbert
15468 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
15469 Note: this dithering is sometimes considered "wrong" and is included as a
15470 reference.
15471 @item floyd_steinberg
15472 Floyd and Steingberg dithering (error diffusion)
15473 @item sierra2
15474 Frankie Sierra dithering v2 (error diffusion)
15475 @item sierra2_4a
15476 Frankie Sierra dithering v2 "Lite" (error diffusion)
15477 @end table
15478
15479 Default is @var{sierra2_4a}.
15480
15481 @item bayer_scale
15482 When @var{bayer} dithering is selected, this option defines the scale of the
15483 pattern (how much the crosshatch pattern is visible). A low value means more
15484 visible pattern for less banding, and higher value means less visible pattern
15485 at the cost of more banding.
15486
15487 The option must be an integer value in the range [0,5]. Default is @var{2}.
15488
15489 @item diff_mode
15490 If set, define the zone to process
15491
15492 @table @samp
15493 @item rectangle
15494 Only the changing rectangle will be reprocessed. This is similar to GIF
15495 cropping/offsetting compression mechanism. This option can be useful for speed
15496 if only a part of the image is changing, and has use cases such as limiting the
15497 scope of the error diffusal @option{dither} to the rectangle that bounds the
15498 moving scene (it leads to more deterministic output if the scene doesn't change
15499 much, and as a result less moving noise and better GIF compression).
15500 @end table
15501
15502 Default is @var{none}.
15503
15504 @item new
15505 Take new palette for each output frame.
15506
15507 @item alpha_threshold
15508 Sets the alpha threshold for transparency. Alpha values above this threshold
15509 will be treated as completely opaque, and values below this threshold will be
15510 treated as completely transparent.
15511
15512 The option must be an integer value in the range [0,255]. Default is @var{128}.
15513 @end table
15514
15515 @subsection Examples
15516
15517 @itemize
15518 @item
15519 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
15520 using @command{ffmpeg}:
15521 @example
15522 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
15523 @end example
15524 @end itemize
15525
15526 @section perspective
15527
15528 Correct perspective of video not recorded perpendicular to the screen.
15529
15530 A description of the accepted parameters follows.
15531
15532 @table @option
15533 @item x0
15534 @item y0
15535 @item x1
15536 @item y1
15537 @item x2
15538 @item y2
15539 @item x3
15540 @item y3
15541 Set coordinates expression for top left, top right, bottom left and bottom right corners.
15542 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
15543 If the @code{sense} option is set to @code{source}, then the specified points will be sent
15544 to the corners of the destination. If the @code{sense} option is set to @code{destination},
15545 then the corners of the source will be sent to the specified coordinates.
15546
15547 The expressions can use the following variables:
15548
15549 @table @option
15550 @item W
15551 @item H
15552 the width and height of video frame.
15553 @item in
15554 Input frame count.
15555 @item on
15556 Output frame count.
15557 @end table
15558
15559 @item interpolation
15560 Set interpolation for perspective correction.
15561
15562 It accepts the following values:
15563 @table @samp
15564 @item linear
15565 @item cubic
15566 @end table
15567
15568 Default value is @samp{linear}.
15569
15570 @item sense
15571 Set interpretation of coordinate options.
15572
15573 It accepts the following values:
15574 @table @samp
15575 @item 0, source
15576
15577 Send point in the source specified by the given coordinates to
15578 the corners of the destination.
15579
15580 @item 1, destination
15581
15582 Send the corners of the source to the point in the destination specified
15583 by the given coordinates.
15584
15585 Default value is @samp{source}.
15586 @end table
15587
15588 @item eval
15589 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
15590
15591 It accepts the following values:
15592 @table @samp
15593 @item init
15594 only evaluate expressions once during the filter initialization or
15595 when a command is processed
15596
15597 @item frame
15598 evaluate expressions for each incoming frame
15599 @end table
15600
15601 Default value is @samp{init}.
15602 @end table
15603
15604 @section phase
15605
15606 Delay interlaced video by one field time so that the field order changes.
15607
15608 The intended use is to fix PAL movies that have been captured with the
15609 opposite field order to the film-to-video transfer.
15610
15611 A description of the accepted parameters follows.
15612
15613 @table @option
15614 @item mode
15615 Set phase mode.
15616
15617 It accepts the following values:
15618 @table @samp
15619 @item t
15620 Capture field order top-first, transfer bottom-first.
15621 Filter will delay the bottom field.
15622
15623 @item b
15624 Capture field order bottom-first, transfer top-first.
15625 Filter will delay the top field.
15626
15627 @item p
15628 Capture and transfer with the same field order. This mode only exists
15629 for the documentation of the other options to refer to, but if you
15630 actually select it, the filter will faithfully do nothing.
15631
15632 @item a
15633 Capture field order determined automatically by field flags, transfer
15634 opposite.
15635 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
15636 basis using field flags. If no field information is available,
15637 then this works just like @samp{u}.
15638
15639 @item u
15640 Capture unknown or varying, transfer opposite.
15641 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
15642 analyzing the images and selecting the alternative that produces best
15643 match between the fields.
15644
15645 @item T
15646 Capture top-first, transfer unknown or varying.
15647 Filter selects among @samp{t} and @samp{p} using image analysis.
15648
15649 @item B
15650 Capture bottom-first, transfer unknown or varying.
15651 Filter selects among @samp{b} and @samp{p} using image analysis.
15652
15653 @item A
15654 Capture determined by field flags, transfer unknown or varying.
15655 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
15656 image analysis. If no field information is available, then this works just
15657 like @samp{U}. This is the default mode.
15658
15659 @item U
15660 Both capture and transfer unknown or varying.
15661 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
15662 @end table
15663 @end table
15664
15665 @section photosensitivity
15666 Reduce various flashes in video, so to help users with epilepsy.
15667
15668 It accepts the following options:
15669 @table @option
15670 @item frames, f
15671 Set how many frames to use when filtering. Default is 30.
15672
15673 @item threshold, t
15674 Set detection threshold factor. Default is 1.
15675 Lower is stricter.
15676
15677 @item skip
15678 Set how many pixels to skip when sampling frames. Default is 1.
15679 Allowed range is from 1 to 1024.
15680
15681 @item bypass
15682 Leave frames unchanged. Default is disabled.
15683 @end table
15684
15685 @section pixdesctest
15686
15687 Pixel format descriptor test filter, mainly useful for internal
15688 testing. The output video should be equal to the input video.
15689
15690 For example:
15691 @example
15692 format=monow, pixdesctest
15693 @end example
15694
15695 can be used to test the monowhite pixel format descriptor definition.
15696
15697 @section pixscope
15698
15699 Display sample values of color channels. Mainly useful for checking color
15700 and levels. Minimum supported resolution is 640x480.
15701
15702 The filters accept the following options:
15703
15704 @table @option
15705 @item x
15706 Set scope X position, relative offset on X axis.
15707
15708 @item y
15709 Set scope Y position, relative offset on Y axis.
15710
15711 @item w
15712 Set scope width.
15713
15714 @item h
15715 Set scope height.
15716
15717 @item o
15718 Set window opacity. This window also holds statistics about pixel area.
15719
15720 @item wx
15721 Set window X position, relative offset on X axis.
15722
15723 @item wy
15724 Set window Y position, relative offset on Y axis.
15725 @end table
15726
15727 @section pp
15728
15729 Enable the specified chain of postprocessing subfilters using libpostproc. This
15730 library should be automatically selected with a GPL build (@code{--enable-gpl}).
15731 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
15732 Each subfilter and some options have a short and a long name that can be used
15733 interchangeably, i.e. dr/dering are the same.
15734
15735 The filters accept the following options:
15736
15737 @table @option
15738 @item subfilters
15739 Set postprocessing subfilters string.
15740 @end table
15741
15742 All subfilters share common options to determine their scope:
15743
15744 @table @option
15745 @item a/autoq
15746 Honor the quality commands for this subfilter.
15747
15748 @item c/chrom
15749 Do chrominance filtering, too (default).
15750
15751 @item y/nochrom
15752 Do luminance filtering only (no chrominance).
15753
15754 @item n/noluma
15755 Do chrominance filtering only (no luminance).
15756 @end table
15757
15758 These options can be appended after the subfilter name, separated by a '|'.
15759
15760 Available subfilters are:
15761
15762 @table @option
15763 @item hb/hdeblock[|difference[|flatness]]
15764 Horizontal deblocking filter
15765 @table @option
15766 @item difference
15767 Difference factor where higher values mean more deblocking (default: @code{32}).
15768 @item flatness
15769 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15770 @end table
15771
15772 @item vb/vdeblock[|difference[|flatness]]
15773 Vertical deblocking filter
15774 @table @option
15775 @item difference
15776 Difference factor where higher values mean more deblocking (default: @code{32}).
15777 @item flatness
15778 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15779 @end table
15780
15781 @item ha/hadeblock[|difference[|flatness]]
15782 Accurate horizontal deblocking filter
15783 @table @option
15784 @item difference
15785 Difference factor where higher values mean more deblocking (default: @code{32}).
15786 @item flatness
15787 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15788 @end table
15789
15790 @item va/vadeblock[|difference[|flatness]]
15791 Accurate vertical deblocking filter
15792 @table @option
15793 @item difference
15794 Difference factor where higher values mean more deblocking (default: @code{32}).
15795 @item flatness
15796 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15797 @end table
15798 @end table
15799
15800 The horizontal and vertical deblocking filters share the difference and
15801 flatness values so you cannot set different horizontal and vertical
15802 thresholds.
15803
15804 @table @option
15805 @item h1/x1hdeblock
15806 Experimental horizontal deblocking filter
15807
15808 @item v1/x1vdeblock
15809 Experimental vertical deblocking filter
15810
15811 @item dr/dering
15812 Deringing filter
15813
15814 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
15815 @table @option
15816 @item threshold1
15817 larger -> stronger filtering
15818 @item threshold2
15819 larger -> stronger filtering
15820 @item threshold3
15821 larger -> stronger filtering
15822 @end table
15823
15824 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
15825 @table @option
15826 @item f/fullyrange
15827 Stretch luminance to @code{0-255}.
15828 @end table
15829
15830 @item lb/linblenddeint
15831 Linear blend deinterlacing filter that deinterlaces the given block by
15832 filtering all lines with a @code{(1 2 1)} filter.
15833
15834 @item li/linipoldeint
15835 Linear interpolating deinterlacing filter that deinterlaces the given block by
15836 linearly interpolating every second line.
15837
15838 @item ci/cubicipoldeint
15839 Cubic interpolating deinterlacing filter deinterlaces the given block by
15840 cubically interpolating every second line.
15841
15842 @item md/mediandeint
15843 Median deinterlacing filter that deinterlaces the given block by applying a
15844 median filter to every second line.
15845
15846 @item fd/ffmpegdeint
15847 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
15848 second line with a @code{(-1 4 2 4 -1)} filter.
15849
15850 @item l5/lowpass5
15851 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
15852 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
15853
15854 @item fq/forceQuant[|quantizer]
15855 Overrides the quantizer table from the input with the constant quantizer you
15856 specify.
15857 @table @option
15858 @item quantizer
15859 Quantizer to use
15860 @end table
15861
15862 @item de/default
15863 Default pp filter combination (@code{hb|a,vb|a,dr|a})
15864
15865 @item fa/fast
15866 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
15867
15868 @item ac
15869 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
15870 @end table
15871
15872 @subsection Examples
15873
15874 @itemize
15875 @item
15876 Apply horizontal and vertical deblocking, deringing and automatic
15877 brightness/contrast:
15878 @example
15879 pp=hb/vb/dr/al
15880 @end example
15881
15882 @item
15883 Apply default filters without brightness/contrast correction:
15884 @example
15885 pp=de/-al
15886 @end example
15887
15888 @item
15889 Apply default filters and temporal denoiser:
15890 @example
15891 pp=default/tmpnoise|1|2|3
15892 @end example
15893
15894 @item
15895 Apply deblocking on luminance only, and switch vertical deblocking on or off
15896 automatically depending on available CPU time:
15897 @example
15898 pp=hb|y/vb|a
15899 @end example
15900 @end itemize
15901
15902 @section pp7
15903 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
15904 similar to spp = 6 with 7 point DCT, where only the center sample is
15905 used after IDCT.
15906
15907 The filter accepts the following options:
15908
15909 @table @option
15910 @item qp
15911 Force a constant quantization parameter. It accepts an integer in range
15912 0 to 63. If not set, the filter will use the QP from the video stream
15913 (if available).
15914
15915 @item mode
15916 Set thresholding mode. Available modes are:
15917
15918 @table @samp
15919 @item hard
15920 Set hard thresholding.
15921 @item soft
15922 Set soft thresholding (better de-ringing effect, but likely blurrier).
15923 @item medium
15924 Set medium thresholding (good results, default).
15925 @end table
15926 @end table
15927
15928 @section premultiply
15929 Apply alpha premultiply effect to input video stream using first plane
15930 of second stream as alpha.
15931
15932 Both streams must have same dimensions and same pixel format.
15933
15934 The filter accepts the following option:
15935
15936 @table @option
15937 @item planes
15938 Set which planes will be processed, unprocessed planes will be copied.
15939 By default value 0xf, all planes will be processed.
15940
15941 @item inplace
15942 Do not require 2nd input for processing, instead use alpha plane from input stream.
15943 @end table
15944
15945 @section prewitt
15946 Apply prewitt operator to input video stream.
15947
15948 The filter accepts the following option:
15949
15950 @table @option
15951 @item planes
15952 Set which planes will be processed, unprocessed planes will be copied.
15953 By default value 0xf, all planes will be processed.
15954
15955 @item scale
15956 Set value which will be multiplied with filtered result.
15957
15958 @item delta
15959 Set value which will be added to filtered result.
15960 @end table
15961
15962 @subsection Commands
15963
15964 This filter supports the all above options as @ref{commands}.
15965
15966 @section pseudocolor
15967
15968 Alter frame colors in video with pseudocolors.
15969
15970 This filter accepts the following options:
15971
15972 @table @option
15973 @item c0
15974 set pixel first component expression
15975
15976 @item c1
15977 set pixel second component expression
15978
15979 @item c2
15980 set pixel third component expression
15981
15982 @item c3
15983 set pixel fourth component expression, corresponds to the alpha component
15984
15985 @item i
15986 set component to use as base for altering colors
15987 @end table
15988
15989 Each of them specifies the expression to use for computing the lookup table for
15990 the corresponding pixel component values.
15991
15992 The expressions can contain the following constants and functions:
15993
15994 @table @option
15995 @item w
15996 @item h
15997 The input width and height.
15998
15999 @item val
16000 The input value for the pixel component.
16001
16002 @item ymin, umin, vmin, amin
16003 The minimum allowed component value.
16004
16005 @item ymax, umax, vmax, amax
16006 The maximum allowed component value.
16007 @end table
16008
16009 All expressions default to "val".
16010
16011 @subsection Examples
16012
16013 @itemize
16014 @item
16015 Change too high luma values to gradient:
16016 @example
16017 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'"
16018 @end example
16019 @end itemize
16020
16021 @section psnr
16022
16023 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
16024 Ratio) between two input videos.
16025
16026 This filter takes in input two input videos, the first input is
16027 considered the "main" source and is passed unchanged to the
16028 output. The second input is used as a "reference" video for computing
16029 the PSNR.
16030
16031 Both video inputs must have the same resolution and pixel format for
16032 this filter to work correctly. Also it assumes that both inputs
16033 have the same number of frames, which are compared one by one.
16034
16035 The obtained average PSNR is printed through the logging system.
16036
16037 The filter stores the accumulated MSE (mean squared error) of each
16038 frame, and at the end of the processing it is averaged across all frames
16039 equally, and the following formula is applied to obtain the PSNR:
16040
16041 @example
16042 PSNR = 10*log10(MAX^2/MSE)
16043 @end example
16044
16045 Where MAX is the average of the maximum values of each component of the
16046 image.
16047
16048 The description of the accepted parameters follows.
16049
16050 @table @option
16051 @item stats_file, f
16052 If specified the filter will use the named file to save the PSNR of
16053 each individual frame. When filename equals "-" the data is sent to
16054 standard output.
16055
16056 @item stats_version
16057 Specifies which version of the stats file format to use. Details of
16058 each format are written below.
16059 Default value is 1.
16060
16061 @item stats_add_max
16062 Determines whether the max value is output to the stats log.
16063 Default value is 0.
16064 Requires stats_version >= 2. If this is set and stats_version < 2,
16065 the filter will return an error.
16066 @end table
16067
16068 This filter also supports the @ref{framesync} options.
16069
16070 The file printed if @var{stats_file} is selected, contains a sequence of
16071 key/value pairs of the form @var{key}:@var{value} for each compared
16072 couple of frames.
16073
16074 If a @var{stats_version} greater than 1 is specified, a header line precedes
16075 the list of per-frame-pair stats, with key value pairs following the frame
16076 format with the following parameters:
16077
16078 @table @option
16079 @item psnr_log_version
16080 The version of the log file format. Will match @var{stats_version}.
16081
16082 @item fields
16083 A comma separated list of the per-frame-pair parameters included in
16084 the log.
16085 @end table
16086
16087 A description of each shown per-frame-pair parameter follows:
16088
16089 @table @option
16090 @item n
16091 sequential number of the input frame, starting from 1
16092
16093 @item mse_avg
16094 Mean Square Error pixel-by-pixel average difference of the compared
16095 frames, averaged over all the image components.
16096
16097 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
16098 Mean Square Error pixel-by-pixel average difference of the compared
16099 frames for the component specified by the suffix.
16100
16101 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
16102 Peak Signal to Noise ratio of the compared frames for the component
16103 specified by the suffix.
16104
16105 @item max_avg, max_y, max_u, max_v
16106 Maximum allowed value for each channel, and average over all
16107 channels.
16108 @end table
16109
16110 @subsection Examples
16111 @itemize
16112 @item
16113 For example:
16114 @example
16115 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
16116 [main][ref] psnr="stats_file=stats.log" [out]
16117 @end example
16118
16119 On this example the input file being processed is compared with the
16120 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
16121 is stored in @file{stats.log}.
16122
16123 @item
16124 Another example with different containers:
16125 @example
16126 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 -
16127 @end example
16128 @end itemize
16129
16130 @anchor{pullup}
16131 @section pullup
16132
16133 Pulldown reversal (inverse telecine) filter, capable of handling mixed
16134 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
16135 content.
16136
16137 The pullup filter is designed to take advantage of future context in making
16138 its decisions. This filter is stateless in the sense that it does not lock
16139 onto a pattern to follow, but it instead looks forward to the following
16140 fields in order to identify matches and rebuild progressive frames.
16141
16142 To produce content with an even framerate, insert the fps filter after
16143 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
16144 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
16145
16146 The filter accepts the following options:
16147
16148 @table @option
16149 @item jl
16150 @item jr
16151 @item jt
16152 @item jb
16153 These options set the amount of "junk" to ignore at the left, right, top, and
16154 bottom of the image, respectively. Left and right are in units of 8 pixels,
16155 while top and bottom are in units of 2 lines.
16156 The default is 8 pixels on each side.
16157
16158 @item sb
16159 Set the strict breaks. Setting this option to 1 will reduce the chances of
16160 filter generating an occasional mismatched frame, but it may also cause an
16161 excessive number of frames to be dropped during high motion sequences.
16162 Conversely, setting it to -1 will make filter match fields more easily.
16163 This may help processing of video where there is slight blurring between
16164 the fields, but may also cause there to be interlaced frames in the output.
16165 Default value is @code{0}.
16166
16167 @item mp
16168 Set the metric plane to use. It accepts the following values:
16169 @table @samp
16170 @item l
16171 Use luma plane.
16172
16173 @item u
16174 Use chroma blue plane.
16175
16176 @item v
16177 Use chroma red plane.
16178 @end table
16179
16180 This option may be set to use chroma plane instead of the default luma plane
16181 for doing filter's computations. This may improve accuracy on very clean
16182 source material, but more likely will decrease accuracy, especially if there
16183 is chroma noise (rainbow effect) or any grayscale video.
16184 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
16185 load and make pullup usable in realtime on slow machines.
16186 @end table
16187
16188 For best results (without duplicated frames in the output file) it is
16189 necessary to change the output frame rate. For example, to inverse
16190 telecine NTSC input:
16191 @example
16192 ffmpeg -i input -vf pullup -r 24000/1001 ...
16193 @end example
16194
16195 @section qp
16196
16197 Change video quantization parameters (QP).
16198
16199 The filter accepts the following option:
16200
16201 @table @option
16202 @item qp
16203 Set expression for quantization parameter.
16204 @end table
16205
16206 The expression is evaluated through the eval API and can contain, among others,
16207 the following constants:
16208
16209 @table @var
16210 @item known
16211 1 if index is not 129, 0 otherwise.
16212
16213 @item qp
16214 Sequential index starting from -129 to 128.
16215 @end table
16216
16217 @subsection Examples
16218
16219 @itemize
16220 @item
16221 Some equation like:
16222 @example
16223 qp=2+2*sin(PI*qp)
16224 @end example
16225 @end itemize
16226
16227 @section random
16228
16229 Flush video frames from internal cache of frames into a random order.
16230 No frame is discarded.
16231 Inspired by @ref{frei0r} nervous filter.
16232
16233 @table @option
16234 @item frames
16235 Set size in number of frames of internal cache, in range from @code{2} to
16236 @code{512}. Default is @code{30}.
16237
16238 @item seed
16239 Set seed for random number generator, must be an integer included between
16240 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
16241 less than @code{0}, the filter will try to use a good random seed on a
16242 best effort basis.
16243 @end table
16244
16245 @section readeia608
16246
16247 Read closed captioning (EIA-608) information from the top lines of a video frame.
16248
16249 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
16250 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
16251 with EIA-608 data (starting from 0). A description of each metadata value follows:
16252
16253 @table @option
16254 @item lavfi.readeia608.X.cc
16255 The two bytes stored as EIA-608 data (printed in hexadecimal).
16256
16257 @item lavfi.readeia608.X.line
16258 The number of the line on which the EIA-608 data was identified and read.
16259 @end table
16260
16261 This filter accepts the following options:
16262
16263 @table @option
16264 @item scan_min
16265 Set the line to start scanning for EIA-608 data. Default is @code{0}.
16266
16267 @item scan_max
16268 Set the line to end scanning for EIA-608 data. Default is @code{29}.
16269
16270 @item spw
16271 Set the ratio of width reserved for sync code detection.
16272 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
16273
16274 @item chp
16275 Enable checking the parity bit. In the event of a parity error, the filter will output
16276 @code{0x00} for that character. Default is false.
16277
16278 @item lp
16279 Lowpass lines prior to further processing. Default is enabled.
16280 @end table
16281
16282 @subsection Commands
16283
16284 This filter supports the all above options as @ref{commands}.
16285
16286 @subsection Examples
16287
16288 @itemize
16289 @item
16290 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
16291 @example
16292 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
16293 @end example
16294 @end itemize
16295
16296 @section readvitc
16297
16298 Read vertical interval timecode (VITC) information from the top lines of a
16299 video frame.
16300
16301 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
16302 timecode value, if a valid timecode has been detected. Further metadata key
16303 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
16304 timecode data has been found or not.
16305
16306 This filter accepts the following options:
16307
16308 @table @option
16309 @item scan_max
16310 Set the maximum number of lines to scan for VITC data. If the value is set to
16311 @code{-1} the full video frame is scanned. Default is @code{45}.
16312
16313 @item thr_b
16314 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
16315 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
16316
16317 @item thr_w
16318 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
16319 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
16320 @end table
16321
16322 @subsection Examples
16323
16324 @itemize
16325 @item
16326 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
16327 draw @code{--:--:--:--} as a placeholder:
16328 @example
16329 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
16330 @end example
16331 @end itemize
16332
16333 @section remap
16334
16335 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
16336
16337 Destination pixel at position (X, Y) will be picked from source (x, y) position
16338 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
16339 value for pixel will be used for destination pixel.
16340
16341 Xmap and Ymap input video streams must be of same dimensions. Output video stream
16342 will have Xmap/Ymap video stream dimensions.
16343 Xmap and Ymap input video streams are 16bit depth, single channel.
16344
16345 @table @option
16346 @item format
16347 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
16348 Default is @code{color}.
16349
16350 @item fill
16351 Specify the color of the unmapped pixels. For the syntax of this option,
16352 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
16353 manual,ffmpeg-utils}. Default color is @code{black}.
16354 @end table
16355
16356 @section removegrain
16357
16358 The removegrain filter is a spatial denoiser for progressive video.
16359
16360 @table @option
16361 @item m0
16362 Set mode for the first plane.
16363
16364 @item m1
16365 Set mode for the second plane.
16366
16367 @item m2
16368 Set mode for the third plane.
16369
16370 @item m3
16371 Set mode for the fourth plane.
16372 @end table
16373
16374 Range of mode is from 0 to 24. Description of each mode follows:
16375
16376 @table @var
16377 @item 0
16378 Leave input plane unchanged. Default.
16379
16380 @item 1
16381 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
16382
16383 @item 2
16384 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
16385
16386 @item 3
16387 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
16388
16389 @item 4
16390 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
16391 This is equivalent to a median filter.
16392
16393 @item 5
16394 Line-sensitive clipping giving the minimal change.
16395
16396 @item 6
16397 Line-sensitive clipping, intermediate.
16398
16399 @item 7
16400 Line-sensitive clipping, intermediate.
16401
16402 @item 8
16403 Line-sensitive clipping, intermediate.
16404
16405 @item 9
16406 Line-sensitive clipping on a line where the neighbours pixels are the closest.
16407
16408 @item 10
16409 Replaces the target pixel with the closest neighbour.
16410
16411 @item 11
16412 [1 2 1] horizontal and vertical kernel blur.
16413
16414 @item 12
16415 Same as mode 11.
16416
16417 @item 13
16418 Bob mode, interpolates top field from the line where the neighbours
16419 pixels are the closest.
16420
16421 @item 14
16422 Bob mode, interpolates bottom field from the line where the neighbours
16423 pixels are the closest.
16424
16425 @item 15
16426 Bob mode, interpolates top field. Same as 13 but with a more complicated
16427 interpolation formula.
16428
16429 @item 16
16430 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
16431 interpolation formula.
16432
16433 @item 17
16434 Clips the pixel with the minimum and maximum of respectively the maximum and
16435 minimum of each pair of opposite neighbour pixels.
16436
16437 @item 18
16438 Line-sensitive clipping using opposite neighbours whose greatest distance from
16439 the current pixel is minimal.
16440
16441 @item 19
16442 Replaces the pixel with the average of its 8 neighbours.
16443
16444 @item 20
16445 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
16446
16447 @item 21
16448 Clips pixels using the averages of opposite neighbour.
16449
16450 @item 22
16451 Same as mode 21 but simpler and faster.
16452
16453 @item 23
16454 Small edge and halo removal, but reputed useless.
16455
16456 @item 24
16457 Similar as 23.
16458 @end table
16459
16460 @section removelogo
16461
16462 Suppress a TV station logo, using an image file to determine which
16463 pixels comprise the logo. It works by filling in the pixels that
16464 comprise the logo with neighboring pixels.
16465
16466 The filter accepts the following options:
16467
16468 @table @option
16469 @item filename, f
16470 Set the filter bitmap file, which can be any image format supported by
16471 libavformat. The width and height of the image file must match those of the
16472 video stream being processed.
16473 @end table
16474
16475 Pixels in the provided bitmap image with a value of zero are not
16476 considered part of the logo, non-zero pixels are considered part of
16477 the logo. If you use white (255) for the logo and black (0) for the
16478 rest, you will be safe. For making the filter bitmap, it is
16479 recommended to take a screen capture of a black frame with the logo
16480 visible, and then using a threshold filter followed by the erode
16481 filter once or twice.
16482
16483 If needed, little splotches can be fixed manually. Remember that if
16484 logo pixels are not covered, the filter quality will be much
16485 reduced. Marking too many pixels as part of the logo does not hurt as
16486 much, but it will increase the amount of blurring needed to cover over
16487 the image and will destroy more information than necessary, and extra
16488 pixels will slow things down on a large logo.
16489
16490 @section repeatfields
16491
16492 This filter uses the repeat_field flag from the Video ES headers and hard repeats
16493 fields based on its value.
16494
16495 @section reverse
16496
16497 Reverse a video clip.
16498
16499 Warning: This filter requires memory to buffer the entire clip, so trimming
16500 is suggested.
16501
16502 @subsection Examples
16503
16504 @itemize
16505 @item
16506 Take the first 5 seconds of a clip, and reverse it.
16507 @example
16508 trim=end=5,reverse
16509 @end example
16510 @end itemize
16511
16512 @section rgbashift
16513 Shift R/G/B/A pixels horizontally and/or vertically.
16514
16515 The filter accepts the following options:
16516 @table @option
16517 @item rh
16518 Set amount to shift red horizontally.
16519 @item rv
16520 Set amount to shift red vertically.
16521 @item gh
16522 Set amount to shift green horizontally.
16523 @item gv
16524 Set amount to shift green vertically.
16525 @item bh
16526 Set amount to shift blue horizontally.
16527 @item bv
16528 Set amount to shift blue vertically.
16529 @item ah
16530 Set amount to shift alpha horizontally.
16531 @item av
16532 Set amount to shift alpha vertically.
16533 @item edge
16534 Set edge mode, can be @var{smear}, default, or @var{warp}.
16535 @end table
16536
16537 @subsection Commands
16538
16539 This filter supports the all above options as @ref{commands}.
16540
16541 @section roberts
16542 Apply roberts cross operator to input video stream.
16543
16544 The filter accepts the following option:
16545
16546 @table @option
16547 @item planes
16548 Set which planes will be processed, unprocessed planes will be copied.
16549 By default value 0xf, all planes will be processed.
16550
16551 @item scale
16552 Set value which will be multiplied with filtered result.
16553
16554 @item delta
16555 Set value which will be added to filtered result.
16556 @end table
16557
16558 @subsection Commands
16559
16560 This filter supports the all above options as @ref{commands}.
16561
16562 @section rotate
16563
16564 Rotate video by an arbitrary angle expressed in radians.
16565
16566 The filter accepts the following options:
16567
16568 A description of the optional parameters follows.
16569 @table @option
16570 @item angle, a
16571 Set an expression for the angle by which to rotate the input video
16572 clockwise, expressed as a number of radians. A negative value will
16573 result in a counter-clockwise rotation. By default it is set to "0".
16574
16575 This expression is evaluated for each frame.
16576
16577 @item out_w, ow
16578 Set the output width expression, default value is "iw".
16579 This expression is evaluated just once during configuration.
16580
16581 @item out_h, oh
16582 Set the output height expression, default value is "ih".
16583 This expression is evaluated just once during configuration.
16584
16585 @item bilinear
16586 Enable bilinear interpolation if set to 1, a value of 0 disables
16587 it. Default value is 1.
16588
16589 @item fillcolor, c
16590 Set the color used to fill the output area not covered by the rotated
16591 image. For the general syntax of this option, check the
16592 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16593 If the special value "none" is selected then no
16594 background is printed (useful for example if the background is never shown).
16595
16596 Default value is "black".
16597 @end table
16598
16599 The expressions for the angle and the output size can contain the
16600 following constants and functions:
16601
16602 @table @option
16603 @item n
16604 sequential number of the input frame, starting from 0. It is always NAN
16605 before the first frame is filtered.
16606
16607 @item t
16608 time in seconds of the input frame, it is set to 0 when the filter is
16609 configured. It is always NAN before the first frame is filtered.
16610
16611 @item hsub
16612 @item vsub
16613 horizontal and vertical chroma subsample values. For example for the
16614 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16615
16616 @item in_w, iw
16617 @item in_h, ih
16618 the input video width and height
16619
16620 @item out_w, ow
16621 @item out_h, oh
16622 the output width and height, that is the size of the padded area as
16623 specified by the @var{width} and @var{height} expressions
16624
16625 @item rotw(a)
16626 @item roth(a)
16627 the minimal width/height required for completely containing the input
16628 video rotated by @var{a} radians.
16629
16630 These are only available when computing the @option{out_w} and
16631 @option{out_h} expressions.
16632 @end table
16633
16634 @subsection Examples
16635
16636 @itemize
16637 @item
16638 Rotate the input by PI/6 radians clockwise:
16639 @example
16640 rotate=PI/6
16641 @end example
16642
16643 @item
16644 Rotate the input by PI/6 radians counter-clockwise:
16645 @example
16646 rotate=-PI/6
16647 @end example
16648
16649 @item
16650 Rotate the input by 45 degrees clockwise:
16651 @example
16652 rotate=45*PI/180
16653 @end example
16654
16655 @item
16656 Apply a constant rotation with period T, starting from an angle of PI/3:
16657 @example
16658 rotate=PI/3+2*PI*t/T
16659 @end example
16660
16661 @item
16662 Make the input video rotation oscillating with a period of T
16663 seconds and an amplitude of A radians:
16664 @example
16665 rotate=A*sin(2*PI/T*t)
16666 @end example
16667
16668 @item
16669 Rotate the video, output size is chosen so that the whole rotating
16670 input video is always completely contained in the output:
16671 @example
16672 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
16673 @end example
16674
16675 @item
16676 Rotate the video, reduce the output size so that no background is ever
16677 shown:
16678 @example
16679 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
16680 @end example
16681 @end itemize
16682
16683 @subsection Commands
16684
16685 The filter supports the following commands:
16686
16687 @table @option
16688 @item a, angle
16689 Set the angle expression.
16690 The command accepts the same syntax of the corresponding option.
16691
16692 If the specified expression is not valid, it is kept at its current
16693 value.
16694 @end table
16695
16696 @section sab
16697
16698 Apply Shape Adaptive Blur.
16699
16700 The filter accepts the following options:
16701
16702 @table @option
16703 @item luma_radius, lr
16704 Set luma blur filter strength, must be a value in range 0.1-4.0, default
16705 value is 1.0. A greater value will result in a more blurred image, and
16706 in slower processing.
16707
16708 @item luma_pre_filter_radius, lpfr
16709 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
16710 value is 1.0.
16711
16712 @item luma_strength, ls
16713 Set luma maximum difference between pixels to still be considered, must
16714 be a value in the 0.1-100.0 range, default value is 1.0.
16715
16716 @item chroma_radius, cr
16717 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
16718 greater value will result in a more blurred image, and in slower
16719 processing.
16720
16721 @item chroma_pre_filter_radius, cpfr
16722 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
16723
16724 @item chroma_strength, cs
16725 Set chroma maximum difference between pixels to still be considered,
16726 must be a value in the -0.9-100.0 range.
16727 @end table
16728
16729 Each chroma option value, if not explicitly specified, is set to the
16730 corresponding luma option value.
16731
16732 @anchor{scale}
16733 @section scale
16734
16735 Scale (resize) the input video, using the libswscale library.
16736
16737 The scale filter forces the output display aspect ratio to be the same
16738 of the input, by changing the output sample aspect ratio.
16739
16740 If the input image format is different from the format requested by
16741 the next filter, the scale filter will convert the input to the
16742 requested format.
16743
16744 @subsection Options
16745 The filter accepts the following options, or any of the options
16746 supported by the libswscale scaler.
16747
16748 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
16749 the complete list of scaler options.
16750
16751 @table @option
16752 @item width, w
16753 @item height, h
16754 Set the output video dimension expression. Default value is the input
16755 dimension.
16756
16757 If the @var{width} or @var{w} value is 0, the input width is used for
16758 the output. If the @var{height} or @var{h} value is 0, the input height
16759 is used for the output.
16760
16761 If one and only one of the values is -n with n >= 1, the scale filter
16762 will use a value that maintains the aspect ratio of the input image,
16763 calculated from the other specified dimension. After that it will,
16764 however, make sure that the calculated dimension is divisible by n and
16765 adjust the value if necessary.
16766
16767 If both values are -n with n >= 1, the behavior will be identical to
16768 both values being set to 0 as previously detailed.
16769
16770 See below for the list of accepted constants for use in the dimension
16771 expression.
16772
16773 @item eval
16774 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
16775
16776 @table @samp
16777 @item init
16778 Only evaluate expressions once during the filter initialization or when a command is processed.
16779
16780 @item frame
16781 Evaluate expressions for each incoming frame.
16782
16783 @end table
16784
16785 Default value is @samp{init}.
16786
16787
16788 @item interl
16789 Set the interlacing mode. It accepts the following values:
16790
16791 @table @samp
16792 @item 1
16793 Force interlaced aware scaling.
16794
16795 @item 0
16796 Do not apply interlaced scaling.
16797
16798 @item -1
16799 Select interlaced aware scaling depending on whether the source frames
16800 are flagged as interlaced or not.
16801 @end table
16802
16803 Default value is @samp{0}.
16804
16805 @item flags
16806 Set libswscale scaling flags. See
16807 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16808 complete list of values. If not explicitly specified the filter applies
16809 the default flags.
16810
16811
16812 @item param0, param1
16813 Set libswscale input parameters for scaling algorithms that need them. See
16814 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16815 complete documentation. If not explicitly specified the filter applies
16816 empty parameters.
16817
16818
16819
16820 @item size, s
16821 Set the video size. For the syntax of this option, check the
16822 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16823
16824 @item in_color_matrix
16825 @item out_color_matrix
16826 Set in/output YCbCr color space type.
16827
16828 This allows the autodetected value to be overridden as well as allows forcing
16829 a specific value used for the output and encoder.
16830
16831 If not specified, the color space type depends on the pixel format.
16832
16833 Possible values:
16834
16835 @table @samp
16836 @item auto
16837 Choose automatically.
16838
16839 @item bt709
16840 Format conforming to International Telecommunication Union (ITU)
16841 Recommendation BT.709.
16842
16843 @item fcc
16844 Set color space conforming to the United States Federal Communications
16845 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
16846
16847 @item bt601
16848 @item bt470
16849 @item smpte170m
16850 Set color space conforming to:
16851
16852 @itemize
16853 @item
16854 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
16855
16856 @item
16857 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
16858
16859 @item
16860 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
16861
16862 @end itemize
16863
16864 @item smpte240m
16865 Set color space conforming to SMPTE ST 240:1999.
16866
16867 @item bt2020
16868 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
16869 @end table
16870
16871 @item in_range
16872 @item out_range
16873 Set in/output YCbCr sample range.
16874
16875 This allows the autodetected value to be overridden as well as allows forcing
16876 a specific value used for the output and encoder. If not specified, the
16877 range depends on the pixel format. Possible values:
16878
16879 @table @samp
16880 @item auto/unknown
16881 Choose automatically.
16882
16883 @item jpeg/full/pc
16884 Set full range (0-255 in case of 8-bit luma).
16885
16886 @item mpeg/limited/tv
16887 Set "MPEG" range (16-235 in case of 8-bit luma).
16888 @end table
16889
16890 @item force_original_aspect_ratio
16891 Enable decreasing or increasing output video width or height if necessary to
16892 keep the original aspect ratio. Possible values:
16893
16894 @table @samp
16895 @item disable
16896 Scale the video as specified and disable this feature.
16897
16898 @item decrease
16899 The output video dimensions will automatically be decreased if needed.
16900
16901 @item increase
16902 The output video dimensions will automatically be increased if needed.
16903
16904 @end table
16905
16906 One useful instance of this option is that when you know a specific device's
16907 maximum allowed resolution, you can use this to limit the output video to
16908 that, while retaining the aspect ratio. For example, device A allows
16909 1280x720 playback, and your video is 1920x800. Using this option (set it to
16910 decrease) and specifying 1280x720 to the command line makes the output
16911 1280x533.
16912
16913 Please note that this is a different thing than specifying -1 for @option{w}
16914 or @option{h}, you still need to specify the output resolution for this option
16915 to work.
16916
16917 @item force_divisible_by
16918 Ensures that both the output dimensions, width and height, are divisible by the
16919 given integer when used together with @option{force_original_aspect_ratio}. This
16920 works similar to using @code{-n} in the @option{w} and @option{h} options.
16921
16922 This option respects the value set for @option{force_original_aspect_ratio},
16923 increasing or decreasing the resolution accordingly. The video's aspect ratio
16924 may be slightly modified.
16925
16926 This option can be handy if you need to have a video fit within or exceed
16927 a defined resolution using @option{force_original_aspect_ratio} but also have
16928 encoder restrictions on width or height divisibility.
16929
16930 @end table
16931
16932 The values of the @option{w} and @option{h} options are expressions
16933 containing the following constants:
16934
16935 @table @var
16936 @item in_w
16937 @item in_h
16938 The input width and height
16939
16940 @item iw
16941 @item ih
16942 These are the same as @var{in_w} and @var{in_h}.
16943
16944 @item out_w
16945 @item out_h
16946 The output (scaled) width and height
16947
16948 @item ow
16949 @item oh
16950 These are the same as @var{out_w} and @var{out_h}
16951
16952 @item a
16953 The same as @var{iw} / @var{ih}
16954
16955 @item sar
16956 input sample aspect ratio
16957
16958 @item dar
16959 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
16960
16961 @item hsub
16962 @item vsub
16963 horizontal and vertical input chroma subsample values. For example for the
16964 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16965
16966 @item ohsub
16967 @item ovsub
16968 horizontal and vertical output chroma subsample values. For example for the
16969 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16970
16971 @item n
16972 The (sequential) number of the input frame, starting from 0.
16973 Only available with @code{eval=frame}.
16974
16975 @item t
16976 The presentation timestamp of the input frame, expressed as a number of
16977 seconds. Only available with @code{eval=frame}.
16978
16979 @item pos
16980 The position (byte offset) of the frame in the input stream, or NaN if
16981 this information is unavailable and/or meaningless (for example in case of synthetic video).
16982 Only available with @code{eval=frame}.
16983 @end table
16984
16985 @subsection Examples
16986
16987 @itemize
16988 @item
16989 Scale the input video to a size of 200x100
16990 @example
16991 scale=w=200:h=100
16992 @end example
16993
16994 This is equivalent to:
16995 @example
16996 scale=200:100
16997 @end example
16998
16999 or:
17000 @example
17001 scale=200x100
17002 @end example
17003
17004 @item
17005 Specify a size abbreviation for the output size:
17006 @example
17007 scale=qcif
17008 @end example
17009
17010 which can also be written as:
17011 @example
17012 scale=size=qcif
17013 @end example
17014
17015 @item
17016 Scale the input to 2x:
17017 @example
17018 scale=w=2*iw:h=2*ih
17019 @end example
17020
17021 @item
17022 The above is the same as:
17023 @example
17024 scale=2*in_w:2*in_h
17025 @end example
17026
17027 @item
17028 Scale the input to 2x with forced interlaced scaling:
17029 @example
17030 scale=2*iw:2*ih:interl=1
17031 @end example
17032
17033 @item
17034 Scale the input to half size:
17035 @example
17036 scale=w=iw/2:h=ih/2
17037 @end example
17038
17039 @item
17040 Increase the width, and set the height to the same size:
17041 @example
17042 scale=3/2*iw:ow
17043 @end example
17044
17045 @item
17046 Seek Greek harmony:
17047 @example
17048 scale=iw:1/PHI*iw
17049 scale=ih*PHI:ih
17050 @end example
17051
17052 @item
17053 Increase the height, and set the width to 3/2 of the height:
17054 @example
17055 scale=w=3/2*oh:h=3/5*ih
17056 @end example
17057
17058 @item
17059 Increase the size, making the size a multiple of the chroma
17060 subsample values:
17061 @example
17062 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
17063 @end example
17064
17065 @item
17066 Increase the width to a maximum of 500 pixels,
17067 keeping the same aspect ratio as the input:
17068 @example
17069 scale=w='min(500\, iw*3/2):h=-1'
17070 @end example
17071
17072 @item
17073 Make pixels square by combining scale and setsar:
17074 @example
17075 scale='trunc(ih*dar):ih',setsar=1/1
17076 @end example
17077
17078 @item
17079 Make pixels square by combining scale and setsar,
17080 making sure the resulting resolution is even (required by some codecs):
17081 @example
17082 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
17083 @end example
17084 @end itemize
17085
17086 @subsection Commands
17087
17088 This filter supports the following commands:
17089 @table @option
17090 @item width, w
17091 @item height, h
17092 Set the output video dimension expression.
17093 The command accepts the same syntax of the corresponding option.
17094
17095 If the specified expression is not valid, it is kept at its current
17096 value.
17097 @end table
17098
17099 @section scale_npp
17100
17101 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
17102 format conversion on CUDA video frames. Setting the output width and height
17103 works in the same way as for the @var{scale} filter.
17104
17105 The following additional options are accepted:
17106 @table @option
17107 @item format
17108 The pixel format of the output CUDA frames. If set to the string "same" (the
17109 default), the input format will be kept. Note that automatic format negotiation
17110 and conversion is not yet supported for hardware frames
17111
17112 @item interp_algo
17113 The interpolation algorithm used for resizing. One of the following:
17114 @table @option
17115 @item nn
17116 Nearest neighbour.
17117
17118 @item linear
17119 @item cubic
17120 @item cubic2p_bspline
17121 2-parameter cubic (B=1, C=0)
17122
17123 @item cubic2p_catmullrom
17124 2-parameter cubic (B=0, C=1/2)
17125
17126 @item cubic2p_b05c03
17127 2-parameter cubic (B=1/2, C=3/10)
17128
17129 @item super
17130 Supersampling
17131
17132 @item lanczos
17133 @end table
17134
17135 @item force_original_aspect_ratio
17136 Enable decreasing or increasing output video width or height if necessary to
17137 keep the original aspect ratio. Possible values:
17138
17139 @table @samp
17140 @item disable
17141 Scale the video as specified and disable this feature.
17142
17143 @item decrease
17144 The output video dimensions will automatically be decreased if needed.
17145
17146 @item increase
17147 The output video dimensions will automatically be increased if needed.
17148
17149 @end table
17150
17151 One useful instance of this option is that when you know a specific device's
17152 maximum allowed resolution, you can use this to limit the output video to
17153 that, while retaining the aspect ratio. For example, device A allows
17154 1280x720 playback, and your video is 1920x800. Using this option (set it to
17155 decrease) and specifying 1280x720 to the command line makes the output
17156 1280x533.
17157
17158 Please note that this is a different thing than specifying -1 for @option{w}
17159 or @option{h}, you still need to specify the output resolution for this option
17160 to work.
17161
17162 @item force_divisible_by
17163 Ensures that both the output dimensions, width and height, are divisible by the
17164 given integer when used together with @option{force_original_aspect_ratio}. This
17165 works similar to using @code{-n} in the @option{w} and @option{h} options.
17166
17167 This option respects the value set for @option{force_original_aspect_ratio},
17168 increasing or decreasing the resolution accordingly. The video's aspect ratio
17169 may be slightly modified.
17170
17171 This option can be handy if you need to have a video fit within or exceed
17172 a defined resolution using @option{force_original_aspect_ratio} but also have
17173 encoder restrictions on width or height divisibility.
17174
17175 @end table
17176
17177 @section scale2ref
17178
17179 Scale (resize) the input video, based on a reference video.
17180
17181 See the scale filter for available options, scale2ref supports the same but
17182 uses the reference video instead of the main input as basis. scale2ref also
17183 supports the following additional constants for the @option{w} and
17184 @option{h} options:
17185
17186 @table @var
17187 @item main_w
17188 @item main_h
17189 The main input video's width and height
17190
17191 @item main_a
17192 The same as @var{main_w} / @var{main_h}
17193
17194 @item main_sar
17195 The main input video's sample aspect ratio
17196
17197 @item main_dar, mdar
17198 The main input video's display aspect ratio. Calculated from
17199 @code{(main_w / main_h) * main_sar}.
17200
17201 @item main_hsub
17202 @item main_vsub
17203 The main input video's horizontal and vertical chroma subsample values.
17204 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
17205 is 1.
17206
17207 @item main_n
17208 The (sequential) number of the main input frame, starting from 0.
17209 Only available with @code{eval=frame}.
17210
17211 @item main_t
17212 The presentation timestamp of the main input frame, expressed as a number of
17213 seconds. Only available with @code{eval=frame}.
17214
17215 @item main_pos
17216 The position (byte offset) of the frame in the main input stream, or NaN if
17217 this information is unavailable and/or meaningless (for example in case of synthetic video).
17218 Only available with @code{eval=frame}.
17219 @end table
17220
17221 @subsection Examples
17222
17223 @itemize
17224 @item
17225 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
17226 @example
17227 'scale2ref[b][a];[a][b]overlay'
17228 @end example
17229
17230 @item
17231 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
17232 @example
17233 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
17234 @end example
17235 @end itemize
17236
17237 @subsection Commands
17238
17239 This filter supports the following commands:
17240 @table @option
17241 @item width, w
17242 @item height, h
17243 Set the output video dimension expression.
17244 The command accepts the same syntax of the corresponding option.
17245
17246 If the specified expression is not valid, it is kept at its current
17247 value.
17248 @end table
17249
17250 @section scroll
17251 Scroll input video horizontally and/or vertically by constant speed.
17252
17253 The filter accepts the following options:
17254 @table @option
17255 @item horizontal, h
17256 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
17257 Negative values changes scrolling direction.
17258
17259 @item vertical, v
17260 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
17261 Negative values changes scrolling direction.
17262
17263 @item hpos
17264 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
17265
17266 @item vpos
17267 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
17268 @end table
17269
17270 @subsection Commands
17271
17272 This filter supports the following @ref{commands}:
17273 @table @option
17274 @item horizontal, h
17275 Set the horizontal scrolling speed.
17276 @item vertical, v
17277 Set the vertical scrolling speed.
17278 @end table
17279
17280 @anchor{scdet}
17281 @section scdet
17282
17283 Detect video scene change.
17284
17285 This filter sets frame metadata with mafd between frame, the scene score, and
17286 forward the frame to the next filter, so they can use these metadata to detect
17287 scene change or others.
17288
17289 In addition, this filter logs a message and sets frame metadata when it detects
17290 a scene change by @option{threshold}.
17291
17292 @code{lavfi.scd.mafd} metadata keys are set with mafd for every frame.
17293
17294 @code{lavfi.scd.score} metadata keys are set with scene change score for every frame
17295 to detect scene change.
17296
17297 @code{lavfi.scd.time} metadata keys are set with current filtered frame time which
17298 detect scene change with @option{threshold}.
17299
17300 The filter accepts the following options:
17301
17302 @table @option
17303 @item threshold, t
17304 Set the scene change detection threshold as a percentage of maximum change. Good
17305 values are in the @code{[8.0, 14.0]} range. The range for @option{threshold} is
17306 @code{[0., 100.]}.
17307
17308 Default value is @code{10.}.
17309
17310 @item sc_pass, s
17311 Set the flag to pass scene change frames to the next filter. Default value is @code{0}
17312 You can enable it if you want to get snapshot of scene change frames only.
17313 @end table
17314
17315 @anchor{selectivecolor}
17316 @section selectivecolor
17317
17318 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
17319 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
17320 by the "purity" of the color (that is, how saturated it already is).
17321
17322 This filter is similar to the Adobe Photoshop Selective Color tool.
17323
17324 The filter accepts the following options:
17325
17326 @table @option
17327 @item correction_method
17328 Select color correction method.
17329
17330 Available values are:
17331 @table @samp
17332 @item absolute
17333 Specified adjustments are applied "as-is" (added/subtracted to original pixel
17334 component value).
17335 @item relative
17336 Specified adjustments are relative to the original component value.
17337 @end table
17338 Default is @code{absolute}.
17339 @item reds
17340 Adjustments for red pixels (pixels where the red component is the maximum)
17341 @item yellows
17342 Adjustments for yellow pixels (pixels where the blue component is the minimum)
17343 @item greens
17344 Adjustments for green pixels (pixels where the green component is the maximum)
17345 @item cyans
17346 Adjustments for cyan pixels (pixels where the red component is the minimum)
17347 @item blues
17348 Adjustments for blue pixels (pixels where the blue component is the maximum)
17349 @item magentas
17350 Adjustments for magenta pixels (pixels where the green component is the minimum)
17351 @item whites
17352 Adjustments for white pixels (pixels where all components are greater than 128)
17353 @item neutrals
17354 Adjustments for all pixels except pure black and pure white
17355 @item blacks
17356 Adjustments for black pixels (pixels where all components are lesser than 128)
17357 @item psfile
17358 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
17359 @end table
17360
17361 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
17362 4 space separated floating point adjustment values in the [-1,1] range,
17363 respectively to adjust the amount of cyan, magenta, yellow and black for the
17364 pixels of its range.
17365
17366 @subsection Examples
17367
17368 @itemize
17369 @item
17370 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
17371 increase magenta by 27% in blue areas:
17372 @example
17373 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
17374 @end example
17375
17376 @item
17377 Use a Photoshop selective color preset:
17378 @example
17379 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
17380 @end example
17381 @end itemize
17382
17383 @anchor{separatefields}
17384 @section separatefields
17385
17386 The @code{separatefields} takes a frame-based video input and splits
17387 each frame into its components fields, producing a new half height clip
17388 with twice the frame rate and twice the frame count.
17389
17390 This filter use field-dominance information in frame to decide which
17391 of each pair of fields to place first in the output.
17392 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
17393
17394 @section setdar, setsar
17395
17396 The @code{setdar} filter sets the Display Aspect Ratio for the filter
17397 output video.
17398
17399 This is done by changing the specified Sample (aka Pixel) Aspect
17400 Ratio, according to the following equation:
17401 @example
17402 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
17403 @end example
17404
17405 Keep in mind that the @code{setdar} filter does not modify the pixel
17406 dimensions of the video frame. Also, the display aspect ratio set by
17407 this filter may be changed by later filters in the filterchain,
17408 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
17409 applied.
17410
17411 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
17412 the filter output video.
17413
17414 Note that as a consequence of the application of this filter, the
17415 output display aspect ratio will change according to the equation
17416 above.
17417
17418 Keep in mind that the sample aspect ratio set by the @code{setsar}
17419 filter may be changed by later filters in the filterchain, e.g. if
17420 another "setsar" or a "setdar" filter is applied.
17421
17422 It accepts the following parameters:
17423
17424 @table @option
17425 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
17426 Set the aspect ratio used by the filter.
17427
17428 The parameter can be a floating point number string, an expression, or
17429 a string of the form @var{num}:@var{den}, where @var{num} and
17430 @var{den} are the numerator and denominator of the aspect ratio. If
17431 the parameter is not specified, it is assumed the value "0".
17432 In case the form "@var{num}:@var{den}" is used, the @code{:} character
17433 should be escaped.
17434
17435 @item max
17436 Set the maximum integer value to use for expressing numerator and
17437 denominator when reducing the expressed aspect ratio to a rational.
17438 Default value is @code{100}.
17439
17440 @end table
17441
17442 The parameter @var{sar} is an expression containing
17443 the following constants:
17444
17445 @table @option
17446 @item E, PI, PHI
17447 These are approximated values for the mathematical constants e
17448 (Euler's number), pi (Greek pi), and phi (the golden ratio).
17449
17450 @item w, h
17451 The input width and height.
17452
17453 @item a
17454 These are the same as @var{w} / @var{h}.
17455
17456 @item sar
17457 The input sample aspect ratio.
17458
17459 @item dar
17460 The input display aspect ratio. It is the same as
17461 (@var{w} / @var{h}) * @var{sar}.
17462
17463 @item hsub, vsub
17464 Horizontal and vertical chroma subsample values. For example, for the
17465 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17466 @end table
17467
17468 @subsection Examples
17469
17470 @itemize
17471
17472 @item
17473 To change the display aspect ratio to 16:9, specify one of the following:
17474 @example
17475 setdar=dar=1.77777
17476 setdar=dar=16/9
17477 @end example
17478
17479 @item
17480 To change the sample aspect ratio to 10:11, specify:
17481 @example
17482 setsar=sar=10/11
17483 @end example
17484
17485 @item
17486 To set a display aspect ratio of 16:9, and specify a maximum integer value of
17487 1000 in the aspect ratio reduction, use the command:
17488 @example
17489 setdar=ratio=16/9:max=1000
17490 @end example
17491
17492 @end itemize
17493
17494 @anchor{setfield}
17495 @section setfield
17496
17497 Force field for the output video frame.
17498
17499 The @code{setfield} filter marks the interlace type field for the
17500 output frames. It does not change the input frame, but only sets the
17501 corresponding property, which affects how the frame is treated by
17502 following filters (e.g. @code{fieldorder} or @code{yadif}).
17503
17504 The filter accepts the following options:
17505
17506 @table @option
17507
17508 @item mode
17509 Available values are:
17510
17511 @table @samp
17512 @item auto
17513 Keep the same field property.
17514
17515 @item bff
17516 Mark the frame as bottom-field-first.
17517
17518 @item tff
17519 Mark the frame as top-field-first.
17520
17521 @item prog
17522 Mark the frame as progressive.
17523 @end table
17524 @end table
17525
17526 @anchor{setparams}
17527 @section setparams
17528
17529 Force frame parameter for the output video frame.
17530
17531 The @code{setparams} filter marks interlace and color range for the
17532 output frames. It does not change the input frame, but only sets the
17533 corresponding property, which affects how the frame is treated by
17534 filters/encoders.
17535
17536 @table @option
17537 @item field_mode
17538 Available values are:
17539
17540 @table @samp
17541 @item auto
17542 Keep the same field property (default).
17543
17544 @item bff
17545 Mark the frame as bottom-field-first.
17546
17547 @item tff
17548 Mark the frame as top-field-first.
17549
17550 @item prog
17551 Mark the frame as progressive.
17552 @end table
17553
17554 @item range
17555 Available values are:
17556
17557 @table @samp
17558 @item auto
17559 Keep the same color range property (default).
17560
17561 @item unspecified, unknown
17562 Mark the frame as unspecified color range.
17563
17564 @item limited, tv, mpeg
17565 Mark the frame as limited range.
17566
17567 @item full, pc, jpeg
17568 Mark the frame as full range.
17569 @end table
17570
17571 @item color_primaries
17572 Set the color primaries.
17573 Available values are:
17574
17575 @table @samp
17576 @item auto
17577 Keep the same color primaries property (default).
17578
17579 @item bt709
17580 @item unknown
17581 @item bt470m
17582 @item bt470bg
17583 @item smpte170m
17584 @item smpte240m
17585 @item film
17586 @item bt2020
17587 @item smpte428
17588 @item smpte431
17589 @item smpte432
17590 @item jedec-p22
17591 @end table
17592
17593 @item color_trc
17594 Set the color transfer.
17595 Available values are:
17596
17597 @table @samp
17598 @item auto
17599 Keep the same color trc property (default).
17600
17601 @item bt709
17602 @item unknown
17603 @item bt470m
17604 @item bt470bg
17605 @item smpte170m
17606 @item smpte240m
17607 @item linear
17608 @item log100
17609 @item log316
17610 @item iec61966-2-4
17611 @item bt1361e
17612 @item iec61966-2-1
17613 @item bt2020-10
17614 @item bt2020-12
17615 @item smpte2084
17616 @item smpte428
17617 @item arib-std-b67
17618 @end table
17619
17620 @item colorspace
17621 Set the colorspace.
17622 Available values are:
17623
17624 @table @samp
17625 @item auto
17626 Keep the same colorspace property (default).
17627
17628 @item gbr
17629 @item bt709
17630 @item unknown
17631 @item fcc
17632 @item bt470bg
17633 @item smpte170m
17634 @item smpte240m
17635 @item ycgco
17636 @item bt2020nc
17637 @item bt2020c
17638 @item smpte2085
17639 @item chroma-derived-nc
17640 @item chroma-derived-c
17641 @item ictcp
17642 @end table
17643 @end table
17644
17645 @section showinfo
17646
17647 Show a line containing various information for each input video frame.
17648 The input video is not modified.
17649
17650 This filter supports the following options:
17651
17652 @table @option
17653 @item checksum
17654 Calculate checksums of each plane. By default enabled.
17655 @end table
17656
17657 The shown line contains a sequence of key/value pairs of the form
17658 @var{key}:@var{value}.
17659
17660 The following values are shown in the output:
17661
17662 @table @option
17663 @item n
17664 The (sequential) number of the input frame, starting from 0.
17665
17666 @item pts
17667 The Presentation TimeStamp of the input frame, expressed as a number of
17668 time base units. The time base unit depends on the filter input pad.
17669
17670 @item pts_time
17671 The Presentation TimeStamp of the input frame, expressed as a number of
17672 seconds.
17673
17674 @item pos
17675 The position of the frame in the input stream, or -1 if this information is
17676 unavailable and/or meaningless (for example in case of synthetic video).
17677
17678 @item fmt
17679 The pixel format name.
17680
17681 @item sar
17682 The sample aspect ratio of the input frame, expressed in the form
17683 @var{num}/@var{den}.
17684
17685 @item s
17686 The size of the input frame. For the syntax of this option, check the
17687 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17688
17689 @item i
17690 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
17691 for bottom field first).
17692
17693 @item iskey
17694 This is 1 if the frame is a key frame, 0 otherwise.
17695
17696 @item type
17697 The picture type of the input frame ("I" for an I-frame, "P" for a
17698 P-frame, "B" for a B-frame, or "?" for an unknown type).
17699 Also refer to the documentation of the @code{AVPictureType} enum and of
17700 the @code{av_get_picture_type_char} function defined in
17701 @file{libavutil/avutil.h}.
17702
17703 @item checksum
17704 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
17705
17706 @item plane_checksum
17707 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
17708 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
17709
17710 @item mean
17711 The mean value of pixels in each plane of the input frame, expressed in the form
17712 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
17713
17714 @item stdev
17715 The standard deviation of pixel values in each plane of the input frame, expressed
17716 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
17717
17718 @end table
17719
17720 @section showpalette
17721
17722 Displays the 256 colors palette of each frame. This filter is only relevant for
17723 @var{pal8} pixel format frames.
17724
17725 It accepts the following option:
17726
17727 @table @option
17728 @item s
17729 Set the size of the box used to represent one palette color entry. Default is
17730 @code{30} (for a @code{30x30} pixel box).
17731 @end table
17732
17733 @section shuffleframes
17734
17735 Reorder and/or duplicate and/or drop video frames.
17736
17737 It accepts the following parameters:
17738
17739 @table @option
17740 @item mapping
17741 Set the destination indexes of input frames.
17742 This is space or '|' separated list of indexes that maps input frames to output
17743 frames. Number of indexes also sets maximal value that each index may have.
17744 '-1' index have special meaning and that is to drop frame.
17745 @end table
17746
17747 The first frame has the index 0. The default is to keep the input unchanged.
17748
17749 @subsection Examples
17750
17751 @itemize
17752 @item
17753 Swap second and third frame of every three frames of the input:
17754 @example
17755 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
17756 @end example
17757
17758 @item
17759 Swap 10th and 1st frame of every ten frames of the input:
17760 @example
17761 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
17762 @end example
17763 @end itemize
17764
17765 @section shuffleplanes
17766
17767 Reorder and/or duplicate video planes.
17768
17769 It accepts the following parameters:
17770
17771 @table @option
17772
17773 @item map0
17774 The index of the input plane to be used as the first output plane.
17775
17776 @item map1
17777 The index of the input plane to be used as the second output plane.
17778
17779 @item map2
17780 The index of the input plane to be used as the third output plane.
17781
17782 @item map3
17783 The index of the input plane to be used as the fourth output plane.
17784
17785 @end table
17786
17787 The first plane has the index 0. The default is to keep the input unchanged.
17788
17789 @subsection Examples
17790
17791 @itemize
17792 @item
17793 Swap the second and third planes of the input:
17794 @example
17795 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
17796 @end example
17797 @end itemize
17798
17799 @anchor{signalstats}
17800 @section signalstats
17801 Evaluate various visual metrics that assist in determining issues associated
17802 with the digitization of analog video media.
17803
17804 By default the filter will log these metadata values:
17805
17806 @table @option
17807 @item YMIN
17808 Display the minimal Y value contained within the input frame. Expressed in
17809 range of [0-255].
17810
17811 @item YLOW
17812 Display the Y value at the 10% percentile within the input frame. Expressed in
17813 range of [0-255].
17814
17815 @item YAVG
17816 Display the average Y value within the input frame. Expressed in range of
17817 [0-255].
17818
17819 @item YHIGH
17820 Display the Y value at the 90% percentile within the input frame. Expressed in
17821 range of [0-255].
17822
17823 @item YMAX
17824 Display the maximum Y value contained within the input frame. Expressed in
17825 range of [0-255].
17826
17827 @item UMIN
17828 Display the minimal U value contained within the input frame. Expressed in
17829 range of [0-255].
17830
17831 @item ULOW
17832 Display the U value at the 10% percentile within the input frame. Expressed in
17833 range of [0-255].
17834
17835 @item UAVG
17836 Display the average U value within the input frame. Expressed in range of
17837 [0-255].
17838
17839 @item UHIGH
17840 Display the U value at the 90% percentile within the input frame. Expressed in
17841 range of [0-255].
17842
17843 @item UMAX
17844 Display the maximum U value contained within the input frame. Expressed in
17845 range of [0-255].
17846
17847 @item VMIN
17848 Display the minimal V value contained within the input frame. Expressed in
17849 range of [0-255].
17850
17851 @item VLOW
17852 Display the V value at the 10% percentile within the input frame. Expressed in
17853 range of [0-255].
17854
17855 @item VAVG
17856 Display the average V value within the input frame. Expressed in range of
17857 [0-255].
17858
17859 @item VHIGH
17860 Display the V value at the 90% percentile within the input frame. Expressed in
17861 range of [0-255].
17862
17863 @item VMAX
17864 Display the maximum V value contained within the input frame. Expressed in
17865 range of [0-255].
17866
17867 @item SATMIN
17868 Display the minimal saturation value contained within the input frame.
17869 Expressed in range of [0-~181.02].
17870
17871 @item SATLOW
17872 Display the saturation value at the 10% percentile within the input frame.
17873 Expressed in range of [0-~181.02].
17874
17875 @item SATAVG
17876 Display the average saturation value within the input frame. Expressed in range
17877 of [0-~181.02].
17878
17879 @item SATHIGH
17880 Display the saturation value at the 90% percentile within the input frame.
17881 Expressed in range of [0-~181.02].
17882
17883 @item SATMAX
17884 Display the maximum saturation value contained within the input frame.
17885 Expressed in range of [0-~181.02].
17886
17887 @item HUEMED
17888 Display the median value for hue within the input frame. Expressed in range of
17889 [0-360].
17890
17891 @item HUEAVG
17892 Display the average value for hue within the input frame. Expressed in range of
17893 [0-360].
17894
17895 @item YDIF
17896 Display the average of sample value difference between all values of the Y
17897 plane in the current frame and corresponding values of the previous input frame.
17898 Expressed in range of [0-255].
17899
17900 @item UDIF
17901 Display the average of sample value difference between all values of the U
17902 plane in the current frame and corresponding values of the previous input frame.
17903 Expressed in range of [0-255].
17904
17905 @item VDIF
17906 Display the average of sample value difference between all values of the V
17907 plane in the current frame and corresponding values of the previous input frame.
17908 Expressed in range of [0-255].
17909
17910 @item YBITDEPTH
17911 Display bit depth of Y plane in current frame.
17912 Expressed in range of [0-16].
17913
17914 @item UBITDEPTH
17915 Display bit depth of U plane in current frame.
17916 Expressed in range of [0-16].
17917
17918 @item VBITDEPTH
17919 Display bit depth of V plane in current frame.
17920 Expressed in range of [0-16].
17921 @end table
17922
17923 The filter accepts the following options:
17924
17925 @table @option
17926 @item stat
17927 @item out
17928
17929 @option{stat} specify an additional form of image analysis.
17930 @option{out} output video with the specified type of pixel highlighted.
17931
17932 Both options accept the following values:
17933
17934 @table @samp
17935 @item tout
17936 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
17937 unlike the neighboring pixels of the same field. Examples of temporal outliers
17938 include the results of video dropouts, head clogs, or tape tracking issues.
17939
17940 @item vrep
17941 Identify @var{vertical line repetition}. Vertical line repetition includes
17942 similar rows of pixels within a frame. In born-digital video vertical line
17943 repetition is common, but this pattern is uncommon in video digitized from an
17944 analog source. When it occurs in video that results from the digitization of an
17945 analog source it can indicate concealment from a dropout compensator.
17946
17947 @item brng
17948 Identify pixels that fall outside of legal broadcast range.
17949 @end table
17950
17951 @item color, c
17952 Set the highlight color for the @option{out} option. The default color is
17953 yellow.
17954 @end table
17955
17956 @subsection Examples
17957
17958 @itemize
17959 @item
17960 Output data of various video metrics:
17961 @example
17962 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
17963 @end example
17964
17965 @item
17966 Output specific data about the minimum and maximum values of the Y plane per frame:
17967 @example
17968 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
17969 @end example
17970
17971 @item
17972 Playback video while highlighting pixels that are outside of broadcast range in red.
17973 @example
17974 ffplay example.mov -vf signalstats="out=brng:color=red"
17975 @end example
17976
17977 @item
17978 Playback video with signalstats metadata drawn over the frame.
17979 @example
17980 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
17981 @end example
17982
17983 The contents of signalstat_drawtext.txt used in the command are:
17984 @example
17985 time %@{pts:hms@}
17986 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
17987 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
17988 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
17989 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
17990
17991 @end example
17992 @end itemize
17993
17994 @anchor{signature}
17995 @section signature
17996
17997 Calculates the MPEG-7 Video Signature. The filter can handle more than one
17998 input. In this case the matching between the inputs can be calculated additionally.
17999 The filter always passes through the first input. The signature of each stream can
18000 be written into a file.
18001
18002 It accepts the following options:
18003
18004 @table @option
18005 @item detectmode
18006 Enable or disable the matching process.
18007
18008 Available values are:
18009
18010 @table @samp
18011 @item off
18012 Disable the calculation of a matching (default).
18013 @item full
18014 Calculate the matching for the whole video and output whether the whole video
18015 matches or only parts.
18016 @item fast
18017 Calculate only until a matching is found or the video ends. Should be faster in
18018 some cases.
18019 @end table
18020
18021 @item nb_inputs
18022 Set the number of inputs. The option value must be a non negative integer.
18023 Default value is 1.
18024
18025 @item filename
18026 Set the path to which the output is written. If there is more than one input,
18027 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
18028 integer), that will be replaced with the input number. If no filename is
18029 specified, no output will be written. This is the default.
18030
18031 @item format
18032 Choose the output format.
18033
18034 Available values are:
18035
18036 @table @samp
18037 @item binary
18038 Use the specified binary representation (default).
18039 @item xml
18040 Use the specified xml representation.
18041 @end table
18042
18043 @item th_d
18044 Set threshold to detect one word as similar. The option value must be an integer
18045 greater than zero. The default value is 9000.
18046
18047 @item th_dc
18048 Set threshold to detect all words as similar. The option value must be an integer
18049 greater than zero. The default value is 60000.
18050
18051 @item th_xh
18052 Set threshold to detect frames as similar. The option value must be an integer
18053 greater than zero. The default value is 116.
18054
18055 @item th_di
18056 Set the minimum length of a sequence in frames to recognize it as matching
18057 sequence. The option value must be a non negative integer value.
18058 The default value is 0.
18059
18060 @item th_it
18061 Set the minimum relation, that matching frames to all frames must have.
18062 The option value must be a double value between 0 and 1. The default value is 0.5.
18063 @end table
18064
18065 @subsection Examples
18066
18067 @itemize
18068 @item
18069 To calculate the signature of an input video and store it in signature.bin:
18070 @example
18071 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
18072 @end example
18073
18074 @item
18075 To detect whether two videos match and store the signatures in XML format in
18076 signature0.xml and signature1.xml:
18077 @example
18078 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 -
18079 @end example
18080
18081 @end itemize
18082
18083 @anchor{smartblur}
18084 @section smartblur
18085
18086 Blur the input video without impacting the outlines.
18087
18088 It accepts the following options:
18089
18090 @table @option
18091 @item luma_radius, lr
18092 Set the luma radius. The option value must be a float number in
18093 the range [0.1,5.0] that specifies the variance of the gaussian filter
18094 used to blur the image (slower if larger). Default value is 1.0.
18095
18096 @item luma_strength, ls
18097 Set the luma strength. The option value must be a float number
18098 in the range [-1.0,1.0] that configures the blurring. A value included
18099 in [0.0,1.0] will blur the image whereas a value included in
18100 [-1.0,0.0] will sharpen the image. Default value is 1.0.
18101
18102 @item luma_threshold, lt
18103 Set the luma threshold used as a coefficient to determine
18104 whether a pixel should be blurred or not. The option value must be an
18105 integer in the range [-30,30]. A value of 0 will filter all the image,
18106 a value included in [0,30] will filter flat areas and a value included
18107 in [-30,0] will filter edges. Default value is 0.
18108
18109 @item chroma_radius, cr
18110 Set the chroma radius. The option value must be a float number in
18111 the range [0.1,5.0] that specifies the variance of the gaussian filter
18112 used to blur the image (slower if larger). Default value is @option{luma_radius}.
18113
18114 @item chroma_strength, cs
18115 Set the chroma strength. The option value must be a float number
18116 in the range [-1.0,1.0] that configures the blurring. A value included
18117 in [0.0,1.0] will blur the image whereas a value included in
18118 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
18119
18120 @item chroma_threshold, ct
18121 Set the chroma threshold used as a coefficient to determine
18122 whether a pixel should be blurred or not. The option value must be an
18123 integer in the range [-30,30]. A value of 0 will filter all the image,
18124 a value included in [0,30] will filter flat areas and a value included
18125 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
18126 @end table
18127
18128 If a chroma option is not explicitly set, the corresponding luma value
18129 is set.
18130
18131 @section sobel
18132 Apply sobel operator to input video stream.
18133
18134 The filter accepts the following option:
18135
18136 @table @option
18137 @item planes
18138 Set which planes will be processed, unprocessed planes will be copied.
18139 By default value 0xf, all planes will be processed.
18140
18141 @item scale
18142 Set value which will be multiplied with filtered result.
18143
18144 @item delta
18145 Set value which will be added to filtered result.
18146 @end table
18147
18148 @subsection Commands
18149
18150 This filter supports the all above options as @ref{commands}.
18151
18152 @anchor{spp}
18153 @section spp
18154
18155 Apply a simple postprocessing filter that compresses and decompresses the image
18156 at several (or - in the case of @option{quality} level @code{6} - all) shifts
18157 and average the results.
18158
18159 The filter accepts the following options:
18160
18161 @table @option
18162 @item quality
18163 Set quality. This option defines the number of levels for averaging. It accepts
18164 an integer in the range 0-6. If set to @code{0}, the filter will have no
18165 effect. A value of @code{6} means the higher quality. For each increment of
18166 that value the speed drops by a factor of approximately 2.  Default value is
18167 @code{3}.
18168
18169 @item qp
18170 Force a constant quantization parameter. If not set, the filter will use the QP
18171 from the video stream (if available).
18172
18173 @item mode
18174 Set thresholding mode. Available modes are:
18175
18176 @table @samp
18177 @item hard
18178 Set hard thresholding (default).
18179 @item soft
18180 Set soft thresholding (better de-ringing effect, but likely blurrier).
18181 @end table
18182
18183 @item use_bframe_qp
18184 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
18185 option may cause flicker since the B-Frames have often larger QP. Default is
18186 @code{0} (not enabled).
18187 @end table
18188
18189 @subsection Commands
18190
18191 This filter supports the following commands:
18192 @table @option
18193 @item quality, level
18194 Set quality level. The value @code{max} can be used to set the maximum level,
18195 currently @code{6}.
18196 @end table
18197
18198 @anchor{sr}
18199 @section sr
18200
18201 Scale the input by applying one of the super-resolution methods based on
18202 convolutional neural networks. Supported models:
18203
18204 @itemize
18205 @item
18206 Super-Resolution Convolutional Neural Network model (SRCNN).
18207 See @url{https://arxiv.org/abs/1501.00092}.
18208
18209 @item
18210 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
18211 See @url{https://arxiv.org/abs/1609.05158}.
18212 @end itemize
18213
18214 Training scripts as well as scripts for model file (.pb) saving can be found at
18215 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
18216 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
18217
18218 Native model files (.model) can be generated from TensorFlow model
18219 files (.pb) by using tools/python/convert.py
18220
18221 The filter accepts the following options:
18222
18223 @table @option
18224 @item dnn_backend
18225 Specify which DNN backend to use for model loading and execution. This option accepts
18226 the following values:
18227
18228 @table @samp
18229 @item native
18230 Native implementation of DNN loading and execution.
18231
18232 @item tensorflow
18233 TensorFlow backend. To enable this backend you
18234 need to install the TensorFlow for C library (see
18235 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
18236 @code{--enable-libtensorflow}
18237 @end table
18238
18239 Default value is @samp{native}.
18240
18241 @item model
18242 Set path to model file specifying network architecture and its parameters.
18243 Note that different backends use different file formats. TensorFlow backend
18244 can load files for both formats, while native backend can load files for only
18245 its format.
18246
18247 @item scale_factor
18248 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
18249 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
18250 input upscaled using bicubic upscaling with proper scale factor.
18251 @end table
18252
18253 This feature can also be finished with @ref{dnn_processing} filter.
18254
18255 @section ssim
18256
18257 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
18258
18259 This filter takes in input two input videos, the first input is
18260 considered the "main" source and is passed unchanged to the
18261 output. The second input is used as a "reference" video for computing
18262 the SSIM.
18263
18264 Both video inputs must have the same resolution and pixel format for
18265 this filter to work correctly. Also it assumes that both inputs
18266 have the same number of frames, which are compared one by one.
18267
18268 The filter stores the calculated SSIM of each frame.
18269
18270 The description of the accepted parameters follows.
18271
18272 @table @option
18273 @item stats_file, f
18274 If specified the filter will use the named file to save the SSIM of
18275 each individual frame. When filename equals "-" the data is sent to
18276 standard output.
18277 @end table
18278
18279 The file printed if @var{stats_file} is selected, contains a sequence of
18280 key/value pairs of the form @var{key}:@var{value} for each compared
18281 couple of frames.
18282
18283 A description of each shown parameter follows:
18284
18285 @table @option
18286 @item n
18287 sequential number of the input frame, starting from 1
18288
18289 @item Y, U, V, R, G, B
18290 SSIM of the compared frames for the component specified by the suffix.
18291
18292 @item All
18293 SSIM of the compared frames for the whole frame.
18294
18295 @item dB
18296 Same as above but in dB representation.
18297 @end table
18298
18299 This filter also supports the @ref{framesync} options.
18300
18301 @subsection Examples
18302 @itemize
18303 @item
18304 For example:
18305 @example
18306 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
18307 [main][ref] ssim="stats_file=stats.log" [out]
18308 @end example
18309
18310 On this example the input file being processed is compared with the
18311 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
18312 is stored in @file{stats.log}.
18313
18314 @item
18315 Another example with both psnr and ssim at same time:
18316 @example
18317 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
18318 @end example
18319
18320 @item
18321 Another example with different containers:
18322 @example
18323 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 -
18324 @end example
18325 @end itemize
18326
18327 @section stereo3d
18328
18329 Convert between different stereoscopic image formats.
18330
18331 The filters accept the following options:
18332
18333 @table @option
18334 @item in
18335 Set stereoscopic image format of input.
18336
18337 Available values for input image formats are:
18338 @table @samp
18339 @item sbsl
18340 side by side parallel (left eye left, right eye right)
18341
18342 @item sbsr
18343 side by side crosseye (right eye left, left eye right)
18344
18345 @item sbs2l
18346 side by side parallel with half width resolution
18347 (left eye left, right eye right)
18348
18349 @item sbs2r
18350 side by side crosseye with half width resolution
18351 (right eye left, left eye right)
18352
18353 @item abl
18354 @item tbl
18355 above-below (left eye above, right eye below)
18356
18357 @item abr
18358 @item tbr
18359 above-below (right eye above, left eye below)
18360
18361 @item ab2l
18362 @item tb2l
18363 above-below with half height resolution
18364 (left eye above, right eye below)
18365
18366 @item ab2r
18367 @item tb2r
18368 above-below with half height resolution
18369 (right eye above, left eye below)
18370
18371 @item al
18372 alternating frames (left eye first, right eye second)
18373
18374 @item ar
18375 alternating frames (right eye first, left eye second)
18376
18377 @item irl
18378 interleaved rows (left eye has top row, right eye starts on next row)
18379
18380 @item irr
18381 interleaved rows (right eye has top row, left eye starts on next row)
18382
18383 @item icl
18384 interleaved columns, left eye first
18385
18386 @item icr
18387 interleaved columns, right eye first
18388
18389 Default value is @samp{sbsl}.
18390 @end table
18391
18392 @item out
18393 Set stereoscopic image format of output.
18394
18395 @table @samp
18396 @item sbsl
18397 side by side parallel (left eye left, right eye right)
18398
18399 @item sbsr
18400 side by side crosseye (right eye left, left eye right)
18401
18402 @item sbs2l
18403 side by side parallel with half width resolution
18404 (left eye left, right eye right)
18405
18406 @item sbs2r
18407 side by side crosseye with half width resolution
18408 (right eye left, left eye right)
18409
18410 @item abl
18411 @item tbl
18412 above-below (left eye above, right eye below)
18413
18414 @item abr
18415 @item tbr
18416 above-below (right eye above, left eye below)
18417
18418 @item ab2l
18419 @item tb2l
18420 above-below with half height resolution
18421 (left eye above, right eye below)
18422
18423 @item ab2r
18424 @item tb2r
18425 above-below with half height resolution
18426 (right eye above, left eye below)
18427
18428 @item al
18429 alternating frames (left eye first, right eye second)
18430
18431 @item ar
18432 alternating frames (right eye first, left eye second)
18433
18434 @item irl
18435 interleaved rows (left eye has top row, right eye starts on next row)
18436
18437 @item irr
18438 interleaved rows (right eye has top row, left eye starts on next row)
18439
18440 @item arbg
18441 anaglyph red/blue gray
18442 (red filter on left eye, blue filter on right eye)
18443
18444 @item argg
18445 anaglyph red/green gray
18446 (red filter on left eye, green filter on right eye)
18447
18448 @item arcg
18449 anaglyph red/cyan gray
18450 (red filter on left eye, cyan filter on right eye)
18451
18452 @item arch
18453 anaglyph red/cyan half colored
18454 (red filter on left eye, cyan filter on right eye)
18455
18456 @item arcc
18457 anaglyph red/cyan color
18458 (red filter on left eye, cyan filter on right eye)
18459
18460 @item arcd
18461 anaglyph red/cyan color optimized with the least squares projection of dubois
18462 (red filter on left eye, cyan filter on right eye)
18463
18464 @item agmg
18465 anaglyph green/magenta gray
18466 (green filter on left eye, magenta filter on right eye)
18467
18468 @item agmh
18469 anaglyph green/magenta half colored
18470 (green filter on left eye, magenta filter on right eye)
18471
18472 @item agmc
18473 anaglyph green/magenta colored
18474 (green filter on left eye, magenta filter on right eye)
18475
18476 @item agmd
18477 anaglyph green/magenta color optimized with the least squares projection of dubois
18478 (green filter on left eye, magenta filter on right eye)
18479
18480 @item aybg
18481 anaglyph yellow/blue gray
18482 (yellow filter on left eye, blue filter on right eye)
18483
18484 @item aybh
18485 anaglyph yellow/blue half colored
18486 (yellow filter on left eye, blue filter on right eye)
18487
18488 @item aybc
18489 anaglyph yellow/blue colored
18490 (yellow filter on left eye, blue filter on right eye)
18491
18492 @item aybd
18493 anaglyph yellow/blue color optimized with the least squares projection of dubois
18494 (yellow filter on left eye, blue filter on right eye)
18495
18496 @item ml
18497 mono output (left eye only)
18498
18499 @item mr
18500 mono output (right eye only)
18501
18502 @item chl
18503 checkerboard, left eye first
18504
18505 @item chr
18506 checkerboard, right eye first
18507
18508 @item icl
18509 interleaved columns, left eye first
18510
18511 @item icr
18512 interleaved columns, right eye first
18513
18514 @item hdmi
18515 HDMI frame pack
18516 @end table
18517
18518 Default value is @samp{arcd}.
18519 @end table
18520
18521 @subsection Examples
18522
18523 @itemize
18524 @item
18525 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
18526 @example
18527 stereo3d=sbsl:aybd
18528 @end example
18529
18530 @item
18531 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
18532 @example
18533 stereo3d=abl:sbsr
18534 @end example
18535 @end itemize
18536
18537 @section streamselect, astreamselect
18538 Select video or audio streams.
18539
18540 The filter accepts the following options:
18541
18542 @table @option
18543 @item inputs
18544 Set number of inputs. Default is 2.
18545
18546 @item map
18547 Set input indexes to remap to outputs.
18548 @end table
18549
18550 @subsection Commands
18551
18552 The @code{streamselect} and @code{astreamselect} filter supports the following
18553 commands:
18554
18555 @table @option
18556 @item map
18557 Set input indexes to remap to outputs.
18558 @end table
18559
18560 @subsection Examples
18561
18562 @itemize
18563 @item
18564 Select first 5 seconds 1st stream and rest of time 2nd stream:
18565 @example
18566 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
18567 @end example
18568
18569 @item
18570 Same as above, but for audio:
18571 @example
18572 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
18573 @end example
18574 @end itemize
18575
18576 @anchor{subtitles}
18577 @section subtitles
18578
18579 Draw subtitles on top of input video using the libass library.
18580
18581 To enable compilation of this filter you need to configure FFmpeg with
18582 @code{--enable-libass}. This filter also requires a build with libavcodec and
18583 libavformat to convert the passed subtitles file to ASS (Advanced Substation
18584 Alpha) subtitles format.
18585
18586 The filter accepts the following options:
18587
18588 @table @option
18589 @item filename, f
18590 Set the filename of the subtitle file to read. It must be specified.
18591
18592 @item original_size
18593 Specify the size of the original video, the video for which the ASS file
18594 was composed. For the syntax of this option, check the
18595 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18596 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
18597 correctly scale the fonts if the aspect ratio has been changed.
18598
18599 @item fontsdir
18600 Set a directory path containing fonts that can be used by the filter.
18601 These fonts will be used in addition to whatever the font provider uses.
18602
18603 @item alpha
18604 Process alpha channel, by default alpha channel is untouched.
18605
18606 @item charenc
18607 Set subtitles input character encoding. @code{subtitles} filter only. Only
18608 useful if not UTF-8.
18609
18610 @item stream_index, si
18611 Set subtitles stream index. @code{subtitles} filter only.
18612
18613 @item force_style
18614 Override default style or script info parameters of the subtitles. It accepts a
18615 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
18616 @end table
18617
18618 If the first key is not specified, it is assumed that the first value
18619 specifies the @option{filename}.
18620
18621 For example, to render the file @file{sub.srt} on top of the input
18622 video, use the command:
18623 @example
18624 subtitles=sub.srt
18625 @end example
18626
18627 which is equivalent to:
18628 @example
18629 subtitles=filename=sub.srt
18630 @end example
18631
18632 To render the default subtitles stream from file @file{video.mkv}, use:
18633 @example
18634 subtitles=video.mkv
18635 @end example
18636
18637 To render the second subtitles stream from that file, use:
18638 @example
18639 subtitles=video.mkv:si=1
18640 @end example
18641
18642 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
18643 @code{DejaVu Serif}, use:
18644 @example
18645 subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
18646 @end example
18647
18648 @section super2xsai
18649
18650 Scale the input by 2x and smooth using the Super2xSaI (Scale and
18651 Interpolate) pixel art scaling algorithm.
18652
18653 Useful for enlarging pixel art images without reducing sharpness.
18654
18655 @section swaprect
18656
18657 Swap two rectangular objects in video.
18658
18659 This filter accepts the following options:
18660
18661 @table @option
18662 @item w
18663 Set object width.
18664
18665 @item h
18666 Set object height.
18667
18668 @item x1
18669 Set 1st rect x coordinate.
18670
18671 @item y1
18672 Set 1st rect y coordinate.
18673
18674 @item x2
18675 Set 2nd rect x coordinate.
18676
18677 @item y2
18678 Set 2nd rect y coordinate.
18679
18680 All expressions are evaluated once for each frame.
18681 @end table
18682
18683 The all options are expressions containing the following constants:
18684
18685 @table @option
18686 @item w
18687 @item h
18688 The input width and height.
18689
18690 @item a
18691 same as @var{w} / @var{h}
18692
18693 @item sar
18694 input sample aspect ratio
18695
18696 @item dar
18697 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
18698
18699 @item n
18700 The number of the input frame, starting from 0.
18701
18702 @item t
18703 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
18704
18705 @item pos
18706 the position in the file of the input frame, NAN if unknown
18707 @end table
18708
18709 @section swapuv
18710 Swap U & V plane.
18711
18712 @section tblend
18713 Blend successive video frames.
18714
18715 See @ref{blend}
18716
18717 @section telecine
18718
18719 Apply telecine process to the video.
18720
18721 This filter accepts the following options:
18722
18723 @table @option
18724 @item first_field
18725 @table @samp
18726 @item top, t
18727 top field first
18728 @item bottom, b
18729 bottom field first
18730 The default value is @code{top}.
18731 @end table
18732
18733 @item pattern
18734 A string of numbers representing the pulldown pattern you wish to apply.
18735 The default value is @code{23}.
18736 @end table
18737
18738 @example
18739 Some typical patterns:
18740
18741 NTSC output (30i):
18742 27.5p: 32222
18743 24p: 23 (classic)
18744 24p: 2332 (preferred)
18745 20p: 33
18746 18p: 334
18747 16p: 3444
18748
18749 PAL output (25i):
18750 27.5p: 12222
18751 24p: 222222222223 ("Euro pulldown")
18752 16.67p: 33
18753 16p: 33333334
18754 @end example
18755
18756 @section thistogram
18757
18758 Compute and draw a color distribution histogram for the input video across time.
18759
18760 Unlike @ref{histogram} video filter which only shows histogram of single input frame
18761 at certain time, this filter shows also past histograms of number of frames defined
18762 by @code{width} option.
18763
18764 The computed histogram is a representation of the color component
18765 distribution in an image.
18766
18767 The filter accepts the following options:
18768
18769 @table @option
18770 @item width, w
18771 Set width of single color component output. Default value is @code{0}.
18772 Value of @code{0} means width will be picked from input video.
18773 This also set number of passed histograms to keep.
18774 Allowed range is [0, 8192].
18775
18776 @item display_mode, d
18777 Set display mode.
18778 It accepts the following values:
18779 @table @samp
18780 @item stack
18781 Per color component graphs are placed below each other.
18782
18783 @item parade
18784 Per color component graphs are placed side by side.
18785
18786 @item overlay
18787 Presents information identical to that in the @code{parade}, except
18788 that the graphs representing color components are superimposed directly
18789 over one another.
18790 @end table
18791 Default is @code{stack}.
18792
18793 @item levels_mode, m
18794 Set mode. Can be either @code{linear}, or @code{logarithmic}.
18795 Default is @code{linear}.
18796
18797 @item components, c
18798 Set what color components to display.
18799 Default is @code{7}.
18800
18801 @item bgopacity, b
18802 Set background opacity. Default is @code{0.9}.
18803
18804 @item envelope, e
18805 Show envelope. Default is disabled.
18806
18807 @item ecolor, ec
18808 Set envelope color. Default is @code{gold}.
18809
18810 @item slide
18811 Set slide mode.
18812
18813 Available values for slide is:
18814 @table @samp
18815 @item frame
18816 Draw new frame when right border is reached.
18817
18818 @item replace
18819 Replace old columns with new ones.
18820
18821 @item scroll
18822 Scroll from right to left.
18823
18824 @item rscroll
18825 Scroll from left to right.
18826
18827 @item picture
18828 Draw single picture.
18829 @end table
18830
18831 Default is @code{replace}.
18832 @end table
18833
18834 @section threshold
18835
18836 Apply threshold effect to video stream.
18837
18838 This filter needs four video streams to perform thresholding.
18839 First stream is stream we are filtering.
18840 Second stream is holding threshold values, third stream is holding min values,
18841 and last, fourth stream is holding max values.
18842
18843 The filter accepts the following option:
18844
18845 @table @option
18846 @item planes
18847 Set which planes will be processed, unprocessed planes will be copied.
18848 By default value 0xf, all planes will be processed.
18849 @end table
18850
18851 For example if first stream pixel's component value is less then threshold value
18852 of pixel component from 2nd threshold stream, third stream value will picked,
18853 otherwise fourth stream pixel component value will be picked.
18854
18855 Using color source filter one can perform various types of thresholding:
18856
18857 @subsection Examples
18858
18859 @itemize
18860 @item
18861 Binary threshold, using gray color as threshold:
18862 @example
18863 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
18864 @end example
18865
18866 @item
18867 Inverted binary threshold, using gray color as threshold:
18868 @example
18869 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
18870 @end example
18871
18872 @item
18873 Truncate binary threshold, using gray color as threshold:
18874 @example
18875 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
18876 @end example
18877
18878 @item
18879 Threshold to zero, using gray color as threshold:
18880 @example
18881 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
18882 @end example
18883
18884 @item
18885 Inverted threshold to zero, using gray color as threshold:
18886 @example
18887 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
18888 @end example
18889 @end itemize
18890
18891 @section thumbnail
18892 Select the most representative frame in a given sequence of consecutive frames.
18893
18894 The filter accepts the following options:
18895
18896 @table @option
18897 @item n
18898 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
18899 will pick one of them, and then handle the next batch of @var{n} frames until
18900 the end. Default is @code{100}.
18901 @end table
18902
18903 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
18904 value will result in a higher memory usage, so a high value is not recommended.
18905
18906 @subsection Examples
18907
18908 @itemize
18909 @item
18910 Extract one picture each 50 frames:
18911 @example
18912 thumbnail=50
18913 @end example
18914
18915 @item
18916 Complete example of a thumbnail creation with @command{ffmpeg}:
18917 @example
18918 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
18919 @end example
18920 @end itemize
18921
18922 @anchor{tile}
18923 @section tile
18924
18925 Tile several successive frames together.
18926
18927 The @ref{untile} filter can do the reverse.
18928
18929 The filter accepts the following options:
18930
18931 @table @option
18932
18933 @item layout
18934 Set the grid size (i.e. the number of lines and columns). For the syntax of
18935 this option, check the
18936 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18937
18938 @item nb_frames
18939 Set the maximum number of frames to render in the given area. It must be less
18940 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
18941 the area will be used.
18942
18943 @item margin
18944 Set the outer border margin in pixels.
18945
18946 @item padding
18947 Set the inner border thickness (i.e. the number of pixels between frames). For
18948 more advanced padding options (such as having different values for the edges),
18949 refer to the pad video filter.
18950
18951 @item color
18952 Specify the color of the unused area. For the syntax of this option, check the
18953 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18954 The default value of @var{color} is "black".
18955
18956 @item overlap
18957 Set the number of frames to overlap when tiling several successive frames together.
18958 The value must be between @code{0} and @var{nb_frames - 1}.
18959
18960 @item init_padding
18961 Set the number of frames to initially be empty before displaying first output frame.
18962 This controls how soon will one get first output frame.
18963 The value must be between @code{0} and @var{nb_frames - 1}.
18964 @end table
18965
18966 @subsection Examples
18967
18968 @itemize
18969 @item
18970 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
18971 @example
18972 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
18973 @end example
18974 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
18975 duplicating each output frame to accommodate the originally detected frame
18976 rate.
18977
18978 @item
18979 Display @code{5} pictures in an area of @code{3x2} frames,
18980 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
18981 mixed flat and named options:
18982 @example
18983 tile=3x2:nb_frames=5:padding=7:margin=2
18984 @end example
18985 @end itemize
18986
18987 @section tinterlace
18988
18989 Perform various types of temporal field interlacing.
18990
18991 Frames are counted starting from 1, so the first input frame is
18992 considered odd.
18993
18994 The filter accepts the following options:
18995
18996 @table @option
18997
18998 @item mode
18999 Specify the mode of the interlacing. This option can also be specified
19000 as a value alone. See below for a list of values for this option.
19001
19002 Available values are:
19003
19004 @table @samp
19005 @item merge, 0
19006 Move odd frames into the upper field, even into the lower field,
19007 generating a double height frame at half frame rate.
19008 @example
19009  ------> time
19010 Input:
19011 Frame 1         Frame 2         Frame 3         Frame 4
19012
19013 11111           22222           33333           44444
19014 11111           22222           33333           44444
19015 11111           22222           33333           44444
19016 11111           22222           33333           44444
19017
19018 Output:
19019 11111                           33333
19020 22222                           44444
19021 11111                           33333
19022 22222                           44444
19023 11111                           33333
19024 22222                           44444
19025 11111                           33333
19026 22222                           44444
19027 @end example
19028
19029 @item drop_even, 1
19030 Only output odd frames, even frames are dropped, generating a frame with
19031 unchanged height at half frame rate.
19032
19033 @example
19034  ------> time
19035 Input:
19036 Frame 1         Frame 2         Frame 3         Frame 4
19037
19038 11111           22222           33333           44444
19039 11111           22222           33333           44444
19040 11111           22222           33333           44444
19041 11111           22222           33333           44444
19042
19043 Output:
19044 11111                           33333
19045 11111                           33333
19046 11111                           33333
19047 11111                           33333
19048 @end example
19049
19050 @item drop_odd, 2
19051 Only output even frames, odd frames are dropped, generating a frame with
19052 unchanged height at half frame rate.
19053
19054 @example
19055  ------> time
19056 Input:
19057 Frame 1         Frame 2         Frame 3         Frame 4
19058
19059 11111           22222           33333           44444
19060 11111           22222           33333           44444
19061 11111           22222           33333           44444
19062 11111           22222           33333           44444
19063
19064 Output:
19065                 22222                           44444
19066                 22222                           44444
19067                 22222                           44444
19068                 22222                           44444
19069 @end example
19070
19071 @item pad, 3
19072 Expand each frame to full height, but pad alternate lines with black,
19073 generating a frame with double height at the same input frame rate.
19074
19075 @example
19076  ------> time
19077 Input:
19078 Frame 1         Frame 2         Frame 3         Frame 4
19079
19080 11111           22222           33333           44444
19081 11111           22222           33333           44444
19082 11111           22222           33333           44444
19083 11111           22222           33333           44444
19084
19085 Output:
19086 11111           .....           33333           .....
19087 .....           22222           .....           44444
19088 11111           .....           33333           .....
19089 .....           22222           .....           44444
19090 11111           .....           33333           .....
19091 .....           22222           .....           44444
19092 11111           .....           33333           .....
19093 .....           22222           .....           44444
19094 @end example
19095
19096
19097 @item interleave_top, 4
19098 Interleave the upper field from odd frames with the lower field from
19099 even frames, generating a frame with unchanged height at half frame rate.
19100
19101 @example
19102  ------> time
19103 Input:
19104 Frame 1         Frame 2         Frame 3         Frame 4
19105
19106 11111<-         22222           33333<-         44444
19107 11111           22222<-         33333           44444<-
19108 11111<-         22222           33333<-         44444
19109 11111           22222<-         33333           44444<-
19110
19111 Output:
19112 11111                           33333
19113 22222                           44444
19114 11111                           33333
19115 22222                           44444
19116 @end example
19117
19118
19119 @item interleave_bottom, 5
19120 Interleave the lower field from odd frames with the upper field from
19121 even frames, generating a frame with unchanged height at half frame rate.
19122
19123 @example
19124  ------> time
19125 Input:
19126 Frame 1         Frame 2         Frame 3         Frame 4
19127
19128 11111           22222<-         33333           44444<-
19129 11111<-         22222           33333<-         44444
19130 11111           22222<-         33333           44444<-
19131 11111<-         22222           33333<-         44444
19132
19133 Output:
19134 22222                           44444
19135 11111                           33333
19136 22222                           44444
19137 11111                           33333
19138 @end example
19139
19140
19141 @item interlacex2, 6
19142 Double frame rate with unchanged height. Frames are inserted each
19143 containing the second temporal field from the previous input frame and
19144 the first temporal field from the next input frame. This mode relies on
19145 the top_field_first flag. Useful for interlaced video displays with no
19146 field synchronisation.
19147
19148 @example
19149  ------> time
19150 Input:
19151 Frame 1         Frame 2         Frame 3         Frame 4
19152
19153 11111           22222           33333           44444
19154  11111           22222           33333           44444
19155 11111           22222           33333           44444
19156  11111           22222           33333           44444
19157
19158 Output:
19159 11111   22222   22222   33333   33333   44444   44444
19160  11111   11111   22222   22222   33333   33333   44444
19161 11111   22222   22222   33333   33333   44444   44444
19162  11111   11111   22222   22222   33333   33333   44444
19163 @end example
19164
19165
19166 @item mergex2, 7
19167 Move odd frames into the upper field, even into the lower field,
19168 generating a double height frame at same frame rate.
19169
19170 @example
19171  ------> time
19172 Input:
19173 Frame 1         Frame 2         Frame 3         Frame 4
19174
19175 11111           22222           33333           44444
19176 11111           22222           33333           44444
19177 11111           22222           33333           44444
19178 11111           22222           33333           44444
19179
19180 Output:
19181 11111           33333           33333           55555
19182 22222           22222           44444           44444
19183 11111           33333           33333           55555
19184 22222           22222           44444           44444
19185 11111           33333           33333           55555
19186 22222           22222           44444           44444
19187 11111           33333           33333           55555
19188 22222           22222           44444           44444
19189 @end example
19190
19191 @end table
19192
19193 Numeric values are deprecated but are accepted for backward
19194 compatibility reasons.
19195
19196 Default mode is @code{merge}.
19197
19198 @item flags
19199 Specify flags influencing the filter process.
19200
19201 Available value for @var{flags} is:
19202
19203 @table @option
19204 @item low_pass_filter, vlpf
19205 Enable linear vertical low-pass filtering in the filter.
19206 Vertical low-pass filtering is required when creating an interlaced
19207 destination from a progressive source which contains high-frequency
19208 vertical detail. Filtering will reduce interlace 'twitter' and Moire
19209 patterning.
19210
19211 @item complex_filter, cvlpf
19212 Enable complex vertical low-pass filtering.
19213 This will slightly less reduce interlace 'twitter' and Moire
19214 patterning but better retain detail and subjective sharpness impression.
19215
19216 @item bypass_il
19217 Bypass already interlaced frames, only adjust the frame rate.
19218 @end table
19219
19220 Vertical low-pass filtering and bypassing already interlaced frames can only be
19221 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
19222
19223 @end table
19224
19225 @section tmedian
19226 Pick median pixels from several successive input video frames.
19227
19228 The filter accepts the following options:
19229
19230 @table @option
19231 @item radius
19232 Set radius of median filter.
19233 Default is 1. Allowed range is from 1 to 127.
19234
19235 @item planes
19236 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
19237
19238 @item percentile
19239 Set median percentile. Default value is @code{0.5}.
19240 Default value of @code{0.5} will pick always median values, while @code{0} will pick
19241 minimum values, and @code{1} maximum values.
19242 @end table
19243
19244 @section tmix
19245
19246 Mix successive video frames.
19247
19248 A description of the accepted options follows.
19249
19250 @table @option
19251 @item frames
19252 The number of successive frames to mix. If unspecified, it defaults to 3.
19253
19254 @item weights
19255 Specify weight of each input video frame.
19256 Each weight is separated by space. If number of weights is smaller than
19257 number of @var{frames} last specified weight will be used for all remaining
19258 unset weights.
19259
19260 @item scale
19261 Specify scale, if it is set it will be multiplied with sum
19262 of each weight multiplied with pixel values to give final destination
19263 pixel value. By default @var{scale} is auto scaled to sum of weights.
19264 @end table
19265
19266 @subsection Examples
19267
19268 @itemize
19269 @item
19270 Average 7 successive frames:
19271 @example
19272 tmix=frames=7:weights="1 1 1 1 1 1 1"
19273 @end example
19274
19275 @item
19276 Apply simple temporal convolution:
19277 @example
19278 tmix=frames=3:weights="-1 3 -1"
19279 @end example
19280
19281 @item
19282 Similar as above but only showing temporal differences:
19283 @example
19284 tmix=frames=3:weights="-1 2 -1":scale=1
19285 @end example
19286 @end itemize
19287
19288 @anchor{tonemap}
19289 @section tonemap
19290 Tone map colors from different dynamic ranges.
19291
19292 This filter expects data in single precision floating point, as it needs to
19293 operate on (and can output) out-of-range values. Another filter, such as
19294 @ref{zscale}, is needed to convert the resulting frame to a usable format.
19295
19296 The tonemapping algorithms implemented only work on linear light, so input
19297 data should be linearized beforehand (and possibly correctly tagged).
19298
19299 @example
19300 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
19301 @end example
19302
19303 @subsection Options
19304 The filter accepts the following options.
19305
19306 @table @option
19307 @item tonemap
19308 Set the tone map algorithm to use.
19309
19310 Possible values are:
19311 @table @var
19312 @item none
19313 Do not apply any tone map, only desaturate overbright pixels.
19314
19315 @item clip
19316 Hard-clip any out-of-range values. Use it for perfect color accuracy for
19317 in-range values, while distorting out-of-range values.
19318
19319 @item linear
19320 Stretch the entire reference gamut to a linear multiple of the display.
19321
19322 @item gamma
19323 Fit a logarithmic transfer between the tone curves.
19324
19325 @item reinhard
19326 Preserve overall image brightness with a simple curve, using nonlinear
19327 contrast, which results in flattening details and degrading color accuracy.
19328
19329 @item hable
19330 Preserve both dark and bright details better than @var{reinhard}, at the cost
19331 of slightly darkening everything. Use it when detail preservation is more
19332 important than color and brightness accuracy.
19333
19334 @item mobius
19335 Smoothly map out-of-range values, while retaining contrast and colors for
19336 in-range material as much as possible. Use it when color accuracy is more
19337 important than detail preservation.
19338 @end table
19339
19340 Default is none.
19341
19342 @item param
19343 Tune the tone mapping algorithm.
19344
19345 This affects the following algorithms:
19346 @table @var
19347 @item none
19348 Ignored.
19349
19350 @item linear
19351 Specifies the scale factor to use while stretching.
19352 Default to 1.0.
19353
19354 @item gamma
19355 Specifies the exponent of the function.
19356 Default to 1.8.
19357
19358 @item clip
19359 Specify an extra linear coefficient to multiply into the signal before clipping.
19360 Default to 1.0.
19361
19362 @item reinhard
19363 Specify the local contrast coefficient at the display peak.
19364 Default to 0.5, which means that in-gamut values will be about half as bright
19365 as when clipping.
19366
19367 @item hable
19368 Ignored.
19369
19370 @item mobius
19371 Specify the transition point from linear to mobius transform. Every value
19372 below this point is guaranteed to be mapped 1:1. The higher the value, the
19373 more accurate the result will be, at the cost of losing bright details.
19374 Default to 0.3, which due to the steep initial slope still preserves in-range
19375 colors fairly accurately.
19376 @end table
19377
19378 @item desat
19379 Apply desaturation for highlights that exceed this level of brightness. The
19380 higher the parameter, the more color information will be preserved. This
19381 setting helps prevent unnaturally blown-out colors for super-highlights, by
19382 (smoothly) turning into white instead. This makes images feel more natural,
19383 at the cost of reducing information about out-of-range colors.
19384
19385 The default of 2.0 is somewhat conservative and will mostly just apply to
19386 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
19387
19388 This option works only if the input frame has a supported color tag.
19389
19390 @item peak
19391 Override signal/nominal/reference peak with this value. Useful when the
19392 embedded peak information in display metadata is not reliable or when tone
19393 mapping from a lower range to a higher range.
19394 @end table
19395
19396 @section tpad
19397
19398 Temporarily pad video frames.
19399
19400 The filter accepts the following options:
19401
19402 @table @option
19403 @item start
19404 Specify number of delay frames before input video stream. Default is 0.
19405
19406 @item stop
19407 Specify number of padding frames after input video stream.
19408 Set to -1 to pad indefinitely. Default is 0.
19409
19410 @item start_mode
19411 Set kind of frames added to beginning of stream.
19412 Can be either @var{add} or @var{clone}.
19413 With @var{add} frames of solid-color are added.
19414 With @var{clone} frames are clones of first frame.
19415 Default is @var{add}.
19416
19417 @item stop_mode
19418 Set kind of frames added to end of stream.
19419 Can be either @var{add} or @var{clone}.
19420 With @var{add} frames of solid-color are added.
19421 With @var{clone} frames are clones of last frame.
19422 Default is @var{add}.
19423
19424 @item start_duration, stop_duration
19425 Specify the duration of the start/stop delay. See
19426 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19427 for the accepted syntax.
19428 These options override @var{start} and @var{stop}. Default is 0.
19429
19430 @item color
19431 Specify the color of the padded area. For the syntax of this option,
19432 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
19433 manual,ffmpeg-utils}.
19434
19435 The default value of @var{color} is "black".
19436 @end table
19437
19438 @anchor{transpose}
19439 @section transpose
19440
19441 Transpose rows with columns in the input video and optionally flip it.
19442
19443 It accepts the following parameters:
19444
19445 @table @option
19446
19447 @item dir
19448 Specify the transposition direction.
19449
19450 Can assume the following values:
19451 @table @samp
19452 @item 0, 4, cclock_flip
19453 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
19454 @example
19455 L.R     L.l
19456 . . ->  . .
19457 l.r     R.r
19458 @end example
19459
19460 @item 1, 5, clock
19461 Rotate by 90 degrees clockwise, that is:
19462 @example
19463 L.R     l.L
19464 . . ->  . .
19465 l.r     r.R
19466 @end example
19467
19468 @item 2, 6, cclock
19469 Rotate by 90 degrees counterclockwise, that is:
19470 @example
19471 L.R     R.r
19472 . . ->  . .
19473 l.r     L.l
19474 @end example
19475
19476 @item 3, 7, clock_flip
19477 Rotate by 90 degrees clockwise and vertically flip, that is:
19478 @example
19479 L.R     r.R
19480 . . ->  . .
19481 l.r     l.L
19482 @end example
19483 @end table
19484
19485 For values between 4-7, the transposition is only done if the input
19486 video geometry is portrait and not landscape. These values are
19487 deprecated, the @code{passthrough} option should be used instead.
19488
19489 Numerical values are deprecated, and should be dropped in favor of
19490 symbolic constants.
19491
19492 @item passthrough
19493 Do not apply the transposition if the input geometry matches the one
19494 specified by the specified value. It accepts the following values:
19495 @table @samp
19496 @item none
19497 Always apply transposition.
19498 @item portrait
19499 Preserve portrait geometry (when @var{height} >= @var{width}).
19500 @item landscape
19501 Preserve landscape geometry (when @var{width} >= @var{height}).
19502 @end table
19503
19504 Default value is @code{none}.
19505 @end table
19506
19507 For example to rotate by 90 degrees clockwise and preserve portrait
19508 layout:
19509 @example
19510 transpose=dir=1:passthrough=portrait
19511 @end example
19512
19513 The command above can also be specified as:
19514 @example
19515 transpose=1:portrait
19516 @end example
19517
19518 @section transpose_npp
19519
19520 Transpose rows with columns in the input video and optionally flip it.
19521 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
19522
19523 It accepts the following parameters:
19524
19525 @table @option
19526
19527 @item dir
19528 Specify the transposition direction.
19529
19530 Can assume the following values:
19531 @table @samp
19532 @item cclock_flip
19533 Rotate by 90 degrees counterclockwise and vertically flip. (default)
19534
19535 @item clock
19536 Rotate by 90 degrees clockwise.
19537
19538 @item cclock
19539 Rotate by 90 degrees counterclockwise.
19540
19541 @item clock_flip
19542 Rotate by 90 degrees clockwise and vertically flip.
19543 @end table
19544
19545 @item passthrough
19546 Do not apply the transposition if the input geometry matches the one
19547 specified by the specified value. It accepts the following values:
19548 @table @samp
19549 @item none
19550 Always apply transposition. (default)
19551 @item portrait
19552 Preserve portrait geometry (when @var{height} >= @var{width}).
19553 @item landscape
19554 Preserve landscape geometry (when @var{width} >= @var{height}).
19555 @end table
19556
19557 @end table
19558
19559 @section trim
19560 Trim the input so that the output contains one continuous subpart of the input.
19561
19562 It accepts the following parameters:
19563 @table @option
19564 @item start
19565 Specify the time of the start of the kept section, i.e. the frame with the
19566 timestamp @var{start} will be the first frame in the output.
19567
19568 @item end
19569 Specify the time of the first frame that will be dropped, i.e. the frame
19570 immediately preceding the one with the timestamp @var{end} will be the last
19571 frame in the output.
19572
19573 @item start_pts
19574 This is the same as @var{start}, except this option sets the start timestamp
19575 in timebase units instead of seconds.
19576
19577 @item end_pts
19578 This is the same as @var{end}, except this option sets the end timestamp
19579 in timebase units instead of seconds.
19580
19581 @item duration
19582 The maximum duration of the output in seconds.
19583
19584 @item start_frame
19585 The number of the first frame that should be passed to the output.
19586
19587 @item end_frame
19588 The number of the first frame that should be dropped.
19589 @end table
19590
19591 @option{start}, @option{end}, and @option{duration} are expressed as time
19592 duration specifications; see
19593 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19594 for the accepted syntax.
19595
19596 Note that the first two sets of the start/end options and the @option{duration}
19597 option look at the frame timestamp, while the _frame variants simply count the
19598 frames that pass through the filter. Also note that this filter does not modify
19599 the timestamps. If you wish for the output timestamps to start at zero, insert a
19600 setpts filter after the trim filter.
19601
19602 If multiple start or end options are set, this filter tries to be greedy and
19603 keep all the frames that match at least one of the specified constraints. To keep
19604 only the part that matches all the constraints at once, chain multiple trim
19605 filters.
19606
19607 The defaults are such that all the input is kept. So it is possible to set e.g.
19608 just the end values to keep everything before the specified time.
19609
19610 Examples:
19611 @itemize
19612 @item
19613 Drop everything except the second minute of input:
19614 @example
19615 ffmpeg -i INPUT -vf trim=60:120
19616 @end example
19617
19618 @item
19619 Keep only the first second:
19620 @example
19621 ffmpeg -i INPUT -vf trim=duration=1
19622 @end example
19623
19624 @end itemize
19625
19626 @section unpremultiply
19627 Apply alpha unpremultiply effect to input video stream using first plane
19628 of second stream as alpha.
19629
19630 Both streams must have same dimensions and same pixel format.
19631
19632 The filter accepts the following option:
19633
19634 @table @option
19635 @item planes
19636 Set which planes will be processed, unprocessed planes will be copied.
19637 By default value 0xf, all planes will be processed.
19638
19639 If the format has 1 or 2 components, then luma is bit 0.
19640 If the format has 3 or 4 components:
19641 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
19642 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
19643 If present, the alpha channel is always the last bit.
19644
19645 @item inplace
19646 Do not require 2nd input for processing, instead use alpha plane from input stream.
19647 @end table
19648
19649 @anchor{unsharp}
19650 @section unsharp
19651
19652 Sharpen or blur the input video.
19653
19654 It accepts the following parameters:
19655
19656 @table @option
19657 @item luma_msize_x, lx
19658 Set the luma matrix horizontal size. It must be an odd integer between
19659 3 and 23. The default value is 5.
19660
19661 @item luma_msize_y, ly
19662 Set the luma matrix vertical size. It must be an odd integer between 3
19663 and 23. The default value is 5.
19664
19665 @item luma_amount, la
19666 Set the luma effect strength. It must be a floating point number, reasonable
19667 values lay between -1.5 and 1.5.
19668
19669 Negative values will blur the input video, while positive values will
19670 sharpen it, a value of zero will disable the effect.
19671
19672 Default value is 1.0.
19673
19674 @item chroma_msize_x, cx
19675 Set the chroma matrix horizontal size. It must be an odd integer
19676 between 3 and 23. The default value is 5.
19677
19678 @item chroma_msize_y, cy
19679 Set the chroma matrix vertical size. It must be an odd integer
19680 between 3 and 23. The default value is 5.
19681
19682 @item chroma_amount, ca
19683 Set the chroma effect strength. It must be a floating point number, reasonable
19684 values lay between -1.5 and 1.5.
19685
19686 Negative values will blur the input video, while positive values will
19687 sharpen it, a value of zero will disable the effect.
19688
19689 Default value is 0.0.
19690
19691 @end table
19692
19693 All parameters are optional and default to the equivalent of the
19694 string '5:5:1.0:5:5:0.0'.
19695
19696 @subsection Examples
19697
19698 @itemize
19699 @item
19700 Apply strong luma sharpen effect:
19701 @example
19702 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
19703 @end example
19704
19705 @item
19706 Apply a strong blur of both luma and chroma parameters:
19707 @example
19708 unsharp=7:7:-2:7:7:-2
19709 @end example
19710 @end itemize
19711
19712 @anchor{untile}
19713 @section untile
19714
19715 Decompose a video made of tiled images into the individual images.
19716
19717 The frame rate of the output video is the frame rate of the input video
19718 multiplied by the number of tiles.
19719
19720 This filter does the reverse of @ref{tile}.
19721
19722 The filter accepts the following options:
19723
19724 @table @option
19725
19726 @item layout
19727 Set the grid size (i.e. the number of lines and columns). For the syntax of
19728 this option, check the
19729 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19730 @end table
19731
19732 @subsection Examples
19733
19734 @itemize
19735 @item
19736 Produce a 1-second video from a still image file made of 25 frames stacked
19737 vertically, like an analogic film reel:
19738 @example
19739 ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
19740 @end example
19741 @end itemize
19742
19743 @section uspp
19744
19745 Apply ultra slow/simple postprocessing filter that compresses and decompresses
19746 the image at several (or - in the case of @option{quality} level @code{8} - all)
19747 shifts and average the results.
19748
19749 The way this differs from the behavior of spp is that uspp actually encodes &
19750 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
19751 DCT similar to MJPEG.
19752
19753 The filter accepts the following options:
19754
19755 @table @option
19756 @item quality
19757 Set quality. This option defines the number of levels for averaging. It accepts
19758 an integer in the range 0-8. If set to @code{0}, the filter will have no
19759 effect. A value of @code{8} means the higher quality. For each increment of
19760 that value the speed drops by a factor of approximately 2.  Default value is
19761 @code{3}.
19762
19763 @item qp
19764 Force a constant quantization parameter. If not set, the filter will use the QP
19765 from the video stream (if available).
19766 @end table
19767
19768 @section v360
19769
19770 Convert 360 videos between various formats.
19771
19772 The filter accepts the following options:
19773
19774 @table @option
19775
19776 @item input
19777 @item output
19778 Set format of the input/output video.
19779
19780 Available formats:
19781
19782 @table @samp
19783
19784 @item e
19785 @item equirect
19786 Equirectangular projection.
19787
19788 @item c3x2
19789 @item c6x1
19790 @item c1x6
19791 Cubemap with 3x2/6x1/1x6 layout.
19792
19793 Format specific options:
19794
19795 @table @option
19796 @item in_pad
19797 @item out_pad
19798 Set padding proportion for the input/output cubemap. Values in decimals.
19799
19800 Example values:
19801 @table @samp
19802 @item 0
19803 No padding.
19804 @item 0.01
19805 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)
19806 @end table
19807
19808 Default value is @b{@samp{0}}.
19809 Maximum value is @b{@samp{0.1}}.
19810
19811 @item fin_pad
19812 @item fout_pad
19813 Set fixed padding for the input/output cubemap. Values in pixels.
19814
19815 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
19816
19817 @item in_forder
19818 @item out_forder
19819 Set order of faces for the input/output cubemap. Choose one direction for each position.
19820
19821 Designation of directions:
19822 @table @samp
19823 @item r
19824 right
19825 @item l
19826 left
19827 @item u
19828 up
19829 @item d
19830 down
19831 @item f
19832 forward
19833 @item b
19834 back
19835 @end table
19836
19837 Default value is @b{@samp{rludfb}}.
19838
19839 @item in_frot
19840 @item out_frot
19841 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
19842
19843 Designation of angles:
19844 @table @samp
19845 @item 0
19846 0 degrees clockwise
19847 @item 1
19848 90 degrees clockwise
19849 @item 2
19850 180 degrees clockwise
19851 @item 3
19852 270 degrees clockwise
19853 @end table
19854
19855 Default value is @b{@samp{000000}}.
19856 @end table
19857
19858 @item eac
19859 Equi-Angular Cubemap.
19860
19861 @item flat
19862 @item gnomonic
19863 @item rectilinear
19864 Regular video.
19865
19866 Format specific options:
19867 @table @option
19868 @item h_fov
19869 @item v_fov
19870 @item d_fov
19871 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19872
19873 If diagonal field of view is set it overrides horizontal and vertical field of view.
19874
19875 @item ih_fov
19876 @item iv_fov
19877 @item id_fov
19878 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19879
19880 If diagonal field of view is set it overrides horizontal and vertical field of view.
19881 @end table
19882
19883 @item dfisheye
19884 Dual fisheye.
19885
19886 Format specific options:
19887 @table @option
19888 @item h_fov
19889 @item v_fov
19890 @item d_fov
19891 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19892
19893 If diagonal field of view is set it overrides horizontal and vertical field of view.
19894
19895 @item ih_fov
19896 @item iv_fov
19897 @item id_fov
19898 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19899
19900 If diagonal field of view is set it overrides horizontal and vertical field of view.
19901 @end table
19902
19903 @item barrel
19904 @item fb
19905 @item barrelsplit
19906 Facebook's 360 formats.
19907
19908 @item sg
19909 Stereographic format.
19910
19911 Format specific options:
19912 @table @option
19913 @item h_fov
19914 @item v_fov
19915 @item d_fov
19916 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19917
19918 If diagonal field of view is set it overrides horizontal and vertical field of view.
19919
19920 @item ih_fov
19921 @item iv_fov
19922 @item id_fov
19923 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19924
19925 If diagonal field of view is set it overrides horizontal and vertical field of view.
19926 @end table
19927
19928 @item mercator
19929 Mercator format.
19930
19931 @item ball
19932 Ball format, gives significant distortion toward the back.
19933
19934 @item hammer
19935 Hammer-Aitoff map projection format.
19936
19937 @item sinusoidal
19938 Sinusoidal map projection format.
19939
19940 @item fisheye
19941 Fisheye projection.
19942
19943 Format specific options:
19944 @table @option
19945 @item h_fov
19946 @item v_fov
19947 @item d_fov
19948 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19949
19950 If diagonal field of view is set it overrides horizontal and vertical field of view.
19951
19952 @item ih_fov
19953 @item iv_fov
19954 @item id_fov
19955 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19956
19957 If diagonal field of view is set it overrides horizontal and vertical field of view.
19958 @end table
19959
19960 @item pannini
19961 Pannini projection.
19962
19963 Format specific options:
19964 @table @option
19965 @item h_fov
19966 Set output pannini parameter.
19967
19968 @item ih_fov
19969 Set input pannini parameter.
19970 @end table
19971
19972 @item cylindrical
19973 Cylindrical projection.
19974
19975 Format specific options:
19976 @table @option
19977 @item h_fov
19978 @item v_fov
19979 @item d_fov
19980 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19981
19982 If diagonal field of view is set it overrides horizontal and vertical field of view.
19983
19984 @item ih_fov
19985 @item iv_fov
19986 @item id_fov
19987 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19988
19989 If diagonal field of view is set it overrides horizontal and vertical field of view.
19990 @end table
19991
19992 @item perspective
19993 Perspective projection. @i{(output only)}
19994
19995 Format specific options:
19996 @table @option
19997 @item v_fov
19998 Set perspective parameter.
19999 @end table
20000
20001 @item tetrahedron
20002 Tetrahedron projection.
20003
20004 @item tsp
20005 Truncated square pyramid projection.
20006
20007 @item he
20008 @item hequirect
20009 Half equirectangular projection.
20010
20011 @item equisolid
20012 Equisolid format.
20013
20014 Format specific options:
20015 @table @option
20016 @item h_fov
20017 @item v_fov
20018 @item d_fov
20019 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20020
20021 If diagonal field of view is set it overrides horizontal and vertical field of view.
20022
20023 @item ih_fov
20024 @item iv_fov
20025 @item id_fov
20026 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20027
20028 If diagonal field of view is set it overrides horizontal and vertical field of view.
20029 @end table
20030
20031 @item og
20032 Orthographic format.
20033
20034 Format specific options:
20035 @table @option
20036 @item h_fov
20037 @item v_fov
20038 @item d_fov
20039 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20040
20041 If diagonal field of view is set it overrides horizontal and vertical field of view.
20042
20043 @item ih_fov
20044 @item iv_fov
20045 @item id_fov
20046 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20047
20048 If diagonal field of view is set it overrides horizontal and vertical field of view.
20049 @end table
20050
20051 @item octahedron
20052 Octahedron projection.
20053 @end table
20054
20055 @item interp
20056 Set interpolation method.@*
20057 @i{Note: more complex interpolation methods require much more memory to run.}
20058
20059 Available methods:
20060
20061 @table @samp
20062 @item near
20063 @item nearest
20064 Nearest neighbour.
20065 @item line
20066 @item linear
20067 Bilinear interpolation.
20068 @item lagrange9
20069 Lagrange9 interpolation.
20070 @item cube
20071 @item cubic
20072 Bicubic interpolation.
20073 @item lanc
20074 @item lanczos
20075 Lanczos interpolation.
20076 @item sp16
20077 @item spline16
20078 Spline16 interpolation.
20079 @item gauss
20080 @item gaussian
20081 Gaussian interpolation.
20082 @item mitchell
20083 Mitchell interpolation.
20084 @end table
20085
20086 Default value is @b{@samp{line}}.
20087
20088 @item w
20089 @item h
20090 Set the output video resolution.
20091
20092 Default resolution depends on formats.
20093
20094 @item in_stereo
20095 @item out_stereo
20096 Set the input/output stereo format.
20097
20098 @table @samp
20099 @item 2d
20100 2D mono
20101 @item sbs
20102 Side by side
20103 @item tb
20104 Top bottom
20105 @end table
20106
20107 Default value is @b{@samp{2d}} for input and output format.
20108
20109 @item yaw
20110 @item pitch
20111 @item roll
20112 Set rotation for the output video. Values in degrees.
20113
20114 @item rorder
20115 Set rotation order for the output video. Choose one item for each position.
20116
20117 @table @samp
20118 @item y, Y
20119 yaw
20120 @item p, P
20121 pitch
20122 @item r, R
20123 roll
20124 @end table
20125
20126 Default value is @b{@samp{ypr}}.
20127
20128 @item h_flip
20129 @item v_flip
20130 @item d_flip
20131 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
20132
20133 @item ih_flip
20134 @item iv_flip
20135 Set if input video is flipped horizontally/vertically. Boolean values.
20136
20137 @item in_trans
20138 Set if input video is transposed. Boolean value, by default disabled.
20139
20140 @item out_trans
20141 Set if output video needs to be transposed. Boolean value, by default disabled.
20142
20143 @item alpha_mask
20144 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
20145 @end table
20146
20147 @subsection Examples
20148
20149 @itemize
20150 @item
20151 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
20152 @example
20153 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
20154 @end example
20155 @item
20156 Extract back view of Equi-Angular Cubemap:
20157 @example
20158 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
20159 @end example
20160 @item
20161 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
20162 @example
20163 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
20164 @end example
20165 @end itemize
20166
20167 @subsection Commands
20168
20169 This filter supports subset of above options as @ref{commands}.
20170
20171 @section vaguedenoiser
20172
20173 Apply a wavelet based denoiser.
20174
20175 It transforms each frame from the video input into the wavelet domain,
20176 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
20177 the obtained coefficients. It does an inverse wavelet transform after.
20178 Due to wavelet properties, it should give a nice smoothed result, and
20179 reduced noise, without blurring picture features.
20180
20181 This filter accepts the following options:
20182
20183 @table @option
20184 @item threshold
20185 The filtering strength. The higher, the more filtered the video will be.
20186 Hard thresholding can use a higher threshold than soft thresholding
20187 before the video looks overfiltered. Default value is 2.
20188
20189 @item method
20190 The filtering method the filter will use.
20191
20192 It accepts the following values:
20193 @table @samp
20194 @item hard
20195 All values under the threshold will be zeroed.
20196
20197 @item soft
20198 All values under the threshold will be zeroed. All values above will be
20199 reduced by the threshold.
20200
20201 @item garrote
20202 Scales or nullifies coefficients - intermediary between (more) soft and
20203 (less) hard thresholding.
20204 @end table
20205
20206 Default is garrote.
20207
20208 @item nsteps
20209 Number of times, the wavelet will decompose the picture. Picture can't
20210 be decomposed beyond a particular point (typically, 8 for a 640x480
20211 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
20212
20213 @item percent
20214 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
20215
20216 @item planes
20217 A list of the planes to process. By default all planes are processed.
20218
20219 @item type
20220 The threshold type the filter will use.
20221
20222 It accepts the following values:
20223 @table @samp
20224 @item universal
20225 Threshold used is same for all decompositions.
20226
20227 @item bayes
20228 Threshold used depends also on each decomposition coefficients.
20229 @end table
20230
20231 Default is universal.
20232 @end table
20233
20234 @section vectorscope
20235
20236 Display 2 color component values in the two dimensional graph (which is called
20237 a vectorscope).
20238
20239 This filter accepts the following options:
20240
20241 @table @option
20242 @item mode, m
20243 Set vectorscope mode.
20244
20245 It accepts the following values:
20246 @table @samp
20247 @item gray
20248 @item tint
20249 Gray values are displayed on graph, higher brightness means more pixels have
20250 same component color value on location in graph. This is the default mode.
20251
20252 @item color
20253 Gray values are displayed on graph. Surrounding pixels values which are not
20254 present in video frame are drawn in gradient of 2 color components which are
20255 set by option @code{x} and @code{y}. The 3rd color component is static.
20256
20257 @item color2
20258 Actual color components values present in video frame are displayed on graph.
20259
20260 @item color3
20261 Similar as color2 but higher frequency of same values @code{x} and @code{y}
20262 on graph increases value of another color component, which is luminance by
20263 default values of @code{x} and @code{y}.
20264
20265 @item color4
20266 Actual colors present in video frame are displayed on graph. If two different
20267 colors map to same position on graph then color with higher value of component
20268 not present in graph is picked.
20269
20270 @item color5
20271 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
20272 component picked from radial gradient.
20273 @end table
20274
20275 @item x
20276 Set which color component will be represented on X-axis. Default is @code{1}.
20277
20278 @item y
20279 Set which color component will be represented on Y-axis. Default is @code{2}.
20280
20281 @item intensity, i
20282 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
20283 of color component which represents frequency of (X, Y) location in graph.
20284
20285 @item envelope, e
20286 @table @samp
20287 @item none
20288 No envelope, this is default.
20289
20290 @item instant
20291 Instant envelope, even darkest single pixel will be clearly highlighted.
20292
20293 @item peak
20294 Hold maximum and minimum values presented in graph over time. This way you
20295 can still spot out of range values without constantly looking at vectorscope.
20296
20297 @item peak+instant
20298 Peak and instant envelope combined together.
20299 @end table
20300
20301 @item graticule, g
20302 Set what kind of graticule to draw.
20303 @table @samp
20304 @item none
20305 @item green
20306 @item color
20307 @item invert
20308 @end table
20309
20310 @item opacity, o
20311 Set graticule opacity.
20312
20313 @item flags, f
20314 Set graticule flags.
20315
20316 @table @samp
20317 @item white
20318 Draw graticule for white point.
20319
20320 @item black
20321 Draw graticule for black point.
20322
20323 @item name
20324 Draw color points short names.
20325 @end table
20326
20327 @item bgopacity, b
20328 Set background opacity.
20329
20330 @item lthreshold, l
20331 Set low threshold for color component not represented on X or Y axis.
20332 Values lower than this value will be ignored. Default is 0.
20333 Note this value is multiplied with actual max possible value one pixel component
20334 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
20335 is 0.1 * 255 = 25.
20336
20337 @item hthreshold, h
20338 Set high threshold for color component not represented on X or Y axis.
20339 Values higher than this value will be ignored. Default is 1.
20340 Note this value is multiplied with actual max possible value one pixel component
20341 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
20342 is 0.9 * 255 = 230.
20343
20344 @item colorspace, c
20345 Set what kind of colorspace to use when drawing graticule.
20346 @table @samp
20347 @item auto
20348 @item 601
20349 @item 709
20350 @end table
20351 Default is auto.
20352
20353 @item tint0, t0
20354 @item tint1, t1
20355 Set color tint for gray/tint vectorscope mode. By default both options are zero.
20356 This means no tint, and output will remain gray.
20357 @end table
20358
20359 @anchor{vidstabdetect}
20360 @section vidstabdetect
20361
20362 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
20363 @ref{vidstabtransform} for pass 2.
20364
20365 This filter generates a file with relative translation and rotation
20366 transform information about subsequent frames, which is then used by
20367 the @ref{vidstabtransform} filter.
20368
20369 To enable compilation of this filter you need to configure FFmpeg with
20370 @code{--enable-libvidstab}.
20371
20372 This filter accepts the following options:
20373
20374 @table @option
20375 @item result
20376 Set the path to the file used to write the transforms information.
20377 Default value is @file{transforms.trf}.
20378
20379 @item shakiness
20380 Set how shaky the video is and how quick the camera is. It accepts an
20381 integer in the range 1-10, a value of 1 means little shakiness, a
20382 value of 10 means strong shakiness. Default value is 5.
20383
20384 @item accuracy
20385 Set the accuracy of the detection process. It must be a value in the
20386 range 1-15. A value of 1 means low accuracy, a value of 15 means high
20387 accuracy. Default value is 15.
20388
20389 @item stepsize
20390 Set stepsize of the search process. The region around minimum is
20391 scanned with 1 pixel resolution. Default value is 6.
20392
20393 @item mincontrast
20394 Set minimum contrast. Below this value a local measurement field is
20395 discarded. Must be a floating point value in the range 0-1. Default
20396 value is 0.3.
20397
20398 @item tripod
20399 Set reference frame number for tripod mode.
20400
20401 If enabled, the motion of the frames is compared to a reference frame
20402 in the filtered stream, identified by the specified number. The idea
20403 is to compensate all movements in a more-or-less static scene and keep
20404 the camera view absolutely still.
20405
20406 If set to 0, it is disabled. The frames are counted starting from 1.
20407
20408 @item show
20409 Show fields and transforms in the resulting frames. It accepts an
20410 integer in the range 0-2. Default value is 0, which disables any
20411 visualization.
20412 @end table
20413
20414 @subsection Examples
20415
20416 @itemize
20417 @item
20418 Use default values:
20419 @example
20420 vidstabdetect
20421 @end example
20422
20423 @item
20424 Analyze strongly shaky movie and put the results in file
20425 @file{mytransforms.trf}:
20426 @example
20427 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
20428 @end example
20429
20430 @item
20431 Visualize the result of internal transformations in the resulting
20432 video:
20433 @example
20434 vidstabdetect=show=1
20435 @end example
20436
20437 @item
20438 Analyze a video with medium shakiness using @command{ffmpeg}:
20439 @example
20440 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
20441 @end example
20442 @end itemize
20443
20444 @anchor{vidstabtransform}
20445 @section vidstabtransform
20446
20447 Video stabilization/deshaking: pass 2 of 2,
20448 see @ref{vidstabdetect} for pass 1.
20449
20450 Read a file with transform information for each frame and
20451 apply/compensate them. Together with the @ref{vidstabdetect}
20452 filter this can be used to deshake videos. See also
20453 @url{http://public.hronopik.de/vid.stab}. It is important to also use
20454 the @ref{unsharp} filter, see below.
20455
20456 To enable compilation of this filter you need to configure FFmpeg with
20457 @code{--enable-libvidstab}.
20458
20459 @subsection Options
20460
20461 @table @option
20462 @item input
20463 Set path to the file used to read the transforms. Default value is
20464 @file{transforms.trf}.
20465
20466 @item smoothing
20467 Set the number of frames (value*2 + 1) used for lowpass filtering the
20468 camera movements. Default value is 10.
20469
20470 For example a number of 10 means that 21 frames are used (10 in the
20471 past and 10 in the future) to smoothen the motion in the video. A
20472 larger value leads to a smoother video, but limits the acceleration of
20473 the camera (pan/tilt movements). 0 is a special case where a static
20474 camera is simulated.
20475
20476 @item optalgo
20477 Set the camera path optimization algorithm.
20478
20479 Accepted values are:
20480 @table @samp
20481 @item gauss
20482 gaussian kernel low-pass filter on camera motion (default)
20483 @item avg
20484 averaging on transformations
20485 @end table
20486
20487 @item maxshift
20488 Set maximal number of pixels to translate frames. Default value is -1,
20489 meaning no limit.
20490
20491 @item maxangle
20492 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
20493 value is -1, meaning no limit.
20494
20495 @item crop
20496 Specify how to deal with borders that may be visible due to movement
20497 compensation.
20498
20499 Available values are:
20500 @table @samp
20501 @item keep
20502 keep image information from previous frame (default)
20503 @item black
20504 fill the border black
20505 @end table
20506
20507 @item invert
20508 Invert transforms if set to 1. Default value is 0.
20509
20510 @item relative
20511 Consider transforms as relative to previous frame if set to 1,
20512 absolute if set to 0. Default value is 0.
20513
20514 @item zoom
20515 Set percentage to zoom. A positive value will result in a zoom-in
20516 effect, a negative value in a zoom-out effect. Default value is 0 (no
20517 zoom).
20518
20519 @item optzoom
20520 Set optimal zooming to avoid borders.
20521
20522 Accepted values are:
20523 @table @samp
20524 @item 0
20525 disabled
20526 @item 1
20527 optimal static zoom value is determined (only very strong movements
20528 will lead to visible borders) (default)
20529 @item 2
20530 optimal adaptive zoom value is determined (no borders will be
20531 visible), see @option{zoomspeed}
20532 @end table
20533
20534 Note that the value given at zoom is added to the one calculated here.
20535
20536 @item zoomspeed
20537 Set percent to zoom maximally each frame (enabled when
20538 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
20539 0.25.
20540
20541 @item interpol
20542 Specify type of interpolation.
20543
20544 Available values are:
20545 @table @samp
20546 @item no
20547 no interpolation
20548 @item linear
20549 linear only horizontal
20550 @item bilinear
20551 linear in both directions (default)
20552 @item bicubic
20553 cubic in both directions (slow)
20554 @end table
20555
20556 @item tripod
20557 Enable virtual tripod mode if set to 1, which is equivalent to
20558 @code{relative=0:smoothing=0}. Default value is 0.
20559
20560 Use also @code{tripod} option of @ref{vidstabdetect}.
20561
20562 @item debug
20563 Increase log verbosity if set to 1. Also the detected global motions
20564 are written to the temporary file @file{global_motions.trf}. Default
20565 value is 0.
20566 @end table
20567
20568 @subsection Examples
20569
20570 @itemize
20571 @item
20572 Use @command{ffmpeg} for a typical stabilization with default values:
20573 @example
20574 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
20575 @end example
20576
20577 Note the use of the @ref{unsharp} filter which is always recommended.
20578
20579 @item
20580 Zoom in a bit more and load transform data from a given file:
20581 @example
20582 vidstabtransform=zoom=5:input="mytransforms.trf"
20583 @end example
20584
20585 @item
20586 Smoothen the video even more:
20587 @example
20588 vidstabtransform=smoothing=30
20589 @end example
20590 @end itemize
20591
20592 @section vflip
20593
20594 Flip the input video vertically.
20595
20596 For example, to vertically flip a video with @command{ffmpeg}:
20597 @example
20598 ffmpeg -i in.avi -vf "vflip" out.avi
20599 @end example
20600
20601 @section vfrdet
20602
20603 Detect variable frame rate video.
20604
20605 This filter tries to detect if the input is variable or constant frame rate.
20606
20607 At end it will output number of frames detected as having variable delta pts,
20608 and ones with constant delta pts.
20609 If there was frames with variable delta, than it will also show min, max and
20610 average delta encountered.
20611
20612 @section vibrance
20613
20614 Boost or alter saturation.
20615
20616 The filter accepts the following options:
20617 @table @option
20618 @item intensity
20619 Set strength of boost if positive value or strength of alter if negative value.
20620 Default is 0. Allowed range is from -2 to 2.
20621
20622 @item rbal
20623 Set the red balance. Default is 1. Allowed range is from -10 to 10.
20624
20625 @item gbal
20626 Set the green balance. Default is 1. Allowed range is from -10 to 10.
20627
20628 @item bbal
20629 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
20630
20631 @item rlum
20632 Set the red luma coefficient.
20633
20634 @item glum
20635 Set the green luma coefficient.
20636
20637 @item blum
20638 Set the blue luma coefficient.
20639
20640 @item alternate
20641 If @code{intensity} is negative and this is set to 1, colors will change,
20642 otherwise colors will be less saturated, more towards gray.
20643 @end table
20644
20645 @subsection Commands
20646
20647 This filter supports the all above options as @ref{commands}.
20648
20649 @anchor{vignette}
20650 @section vignette
20651
20652 Make or reverse a natural vignetting effect.
20653
20654 The filter accepts the following options:
20655
20656 @table @option
20657 @item angle, a
20658 Set lens angle expression as a number of radians.
20659
20660 The value is clipped in the @code{[0,PI/2]} range.
20661
20662 Default value: @code{"PI/5"}
20663
20664 @item x0
20665 @item y0
20666 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
20667 by default.
20668
20669 @item mode
20670 Set forward/backward mode.
20671
20672 Available modes are:
20673 @table @samp
20674 @item forward
20675 The larger the distance from the central point, the darker the image becomes.
20676
20677 @item backward
20678 The larger the distance from the central point, the brighter the image becomes.
20679 This can be used to reverse a vignette effect, though there is no automatic
20680 detection to extract the lens @option{angle} and other settings (yet). It can
20681 also be used to create a burning effect.
20682 @end table
20683
20684 Default value is @samp{forward}.
20685
20686 @item eval
20687 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
20688
20689 It accepts the following values:
20690 @table @samp
20691 @item init
20692 Evaluate expressions only once during the filter initialization.
20693
20694 @item frame
20695 Evaluate expressions for each incoming frame. This is way slower than the
20696 @samp{init} mode since it requires all the scalers to be re-computed, but it
20697 allows advanced dynamic expressions.
20698 @end table
20699
20700 Default value is @samp{init}.
20701
20702 @item dither
20703 Set dithering to reduce the circular banding effects. Default is @code{1}
20704 (enabled).
20705
20706 @item aspect
20707 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
20708 Setting this value to the SAR of the input will make a rectangular vignetting
20709 following the dimensions of the video.
20710
20711 Default is @code{1/1}.
20712 @end table
20713
20714 @subsection Expressions
20715
20716 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
20717 following parameters.
20718
20719 @table @option
20720 @item w
20721 @item h
20722 input width and height
20723
20724 @item n
20725 the number of input frame, starting from 0
20726
20727 @item pts
20728 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
20729 @var{TB} units, NAN if undefined
20730
20731 @item r
20732 frame rate of the input video, NAN if the input frame rate is unknown
20733
20734 @item t
20735 the PTS (Presentation TimeStamp) of the filtered video frame,
20736 expressed in seconds, NAN if undefined
20737
20738 @item tb
20739 time base of the input video
20740 @end table
20741
20742
20743 @subsection Examples
20744
20745 @itemize
20746 @item
20747 Apply simple strong vignetting effect:
20748 @example
20749 vignette=PI/4
20750 @end example
20751
20752 @item
20753 Make a flickering vignetting:
20754 @example
20755 vignette='PI/4+random(1)*PI/50':eval=frame
20756 @end example
20757
20758 @end itemize
20759
20760 @section vmafmotion
20761
20762 Obtain the average VMAF motion score of a video.
20763 It is one of the component metrics of VMAF.
20764
20765 The obtained average motion score is printed through the logging system.
20766
20767 The filter accepts the following options:
20768
20769 @table @option
20770 @item stats_file
20771 If specified, the filter will use the named file to save the motion score of
20772 each frame with respect to the previous frame.
20773 When filename equals "-" the data is sent to standard output.
20774 @end table
20775
20776 Example:
20777 @example
20778 ffmpeg -i ref.mpg -vf vmafmotion -f null -
20779 @end example
20780
20781 @section vstack
20782 Stack input videos vertically.
20783
20784 All streams must be of same pixel format and of same width.
20785
20786 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
20787 to create same output.
20788
20789 The filter accepts the following options:
20790
20791 @table @option
20792 @item inputs
20793 Set number of input streams. Default is 2.
20794
20795 @item shortest
20796 If set to 1, force the output to terminate when the shortest input
20797 terminates. Default value is 0.
20798 @end table
20799
20800 @section w3fdif
20801
20802 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
20803 Deinterlacing Filter").
20804
20805 Based on the process described by Martin Weston for BBC R&D, and
20806 implemented based on the de-interlace algorithm written by Jim
20807 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
20808 uses filter coefficients calculated by BBC R&D.
20809
20810 This filter uses field-dominance information in frame to decide which
20811 of each pair of fields to place first in the output.
20812 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
20813
20814 There are two sets of filter coefficients, so called "simple"
20815 and "complex". Which set of filter coefficients is used can
20816 be set by passing an optional parameter:
20817
20818 @table @option
20819 @item filter
20820 Set the interlacing filter coefficients. Accepts one of the following values:
20821
20822 @table @samp
20823 @item simple
20824 Simple filter coefficient set.
20825 @item complex
20826 More-complex filter coefficient set.
20827 @end table
20828 Default value is @samp{complex}.
20829
20830 @item deint
20831 Specify which frames to deinterlace. Accepts one of the following values:
20832
20833 @table @samp
20834 @item all
20835 Deinterlace all frames,
20836 @item interlaced
20837 Only deinterlace frames marked as interlaced.
20838 @end table
20839
20840 Default value is @samp{all}.
20841 @end table
20842
20843 @section waveform
20844 Video waveform monitor.
20845
20846 The waveform monitor plots color component intensity. By default luminance
20847 only. Each column of the waveform corresponds to a column of pixels in the
20848 source video.
20849
20850 It accepts the following options:
20851
20852 @table @option
20853 @item mode, m
20854 Can be either @code{row}, or @code{column}. Default is @code{column}.
20855 In row mode, the graph on the left side represents color component value 0 and
20856 the right side represents value = 255. In column mode, the top side represents
20857 color component value = 0 and bottom side represents value = 255.
20858
20859 @item intensity, i
20860 Set intensity. Smaller values are useful to find out how many values of the same
20861 luminance are distributed across input rows/columns.
20862 Default value is @code{0.04}. Allowed range is [0, 1].
20863
20864 @item mirror, r
20865 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
20866 In mirrored mode, higher values will be represented on the left
20867 side for @code{row} mode and at the top for @code{column} mode. Default is
20868 @code{1} (mirrored).
20869
20870 @item display, d
20871 Set display mode.
20872 It accepts the following values:
20873 @table @samp
20874 @item overlay
20875 Presents information identical to that in the @code{parade}, except
20876 that the graphs representing color components are superimposed directly
20877 over one another.
20878
20879 This display mode makes it easier to spot relative differences or similarities
20880 in overlapping areas of the color components that are supposed to be identical,
20881 such as neutral whites, grays, or blacks.
20882
20883 @item stack
20884 Display separate graph for the color components side by side in
20885 @code{row} mode or one below the other in @code{column} mode.
20886
20887 @item parade
20888 Display separate graph for the color components side by side in
20889 @code{column} mode or one below the other in @code{row} mode.
20890
20891 Using this display mode makes it easy to spot color casts in the highlights
20892 and shadows of an image, by comparing the contours of the top and the bottom
20893 graphs of each waveform. Since whites, grays, and blacks are characterized
20894 by exactly equal amounts of red, green, and blue, neutral areas of the picture
20895 should display three waveforms of roughly equal width/height. If not, the
20896 correction is easy to perform by making level adjustments the three waveforms.
20897 @end table
20898 Default is @code{stack}.
20899
20900 @item components, c
20901 Set which color components to display. Default is 1, which means only luminance
20902 or red color component if input is in RGB colorspace. If is set for example to
20903 7 it will display all 3 (if) available color components.
20904
20905 @item envelope, e
20906 @table @samp
20907 @item none
20908 No envelope, this is default.
20909
20910 @item instant
20911 Instant envelope, minimum and maximum values presented in graph will be easily
20912 visible even with small @code{step} value.
20913
20914 @item peak
20915 Hold minimum and maximum values presented in graph across time. This way you
20916 can still spot out of range values without constantly looking at waveforms.
20917
20918 @item peak+instant
20919 Peak and instant envelope combined together.
20920 @end table
20921
20922 @item filter, f
20923 @table @samp
20924 @item lowpass
20925 No filtering, this is default.
20926
20927 @item flat
20928 Luma and chroma combined together.
20929
20930 @item aflat
20931 Similar as above, but shows difference between blue and red chroma.
20932
20933 @item xflat
20934 Similar as above, but use different colors.
20935
20936 @item yflat
20937 Similar as above, but again with different colors.
20938
20939 @item chroma
20940 Displays only chroma.
20941
20942 @item color
20943 Displays actual color value on waveform.
20944
20945 @item acolor
20946 Similar as above, but with luma showing frequency of chroma values.
20947 @end table
20948
20949 @item graticule, g
20950 Set which graticule to display.
20951
20952 @table @samp
20953 @item none
20954 Do not display graticule.
20955
20956 @item green
20957 Display green graticule showing legal broadcast ranges.
20958
20959 @item orange
20960 Display orange graticule showing legal broadcast ranges.
20961
20962 @item invert
20963 Display invert graticule showing legal broadcast ranges.
20964 @end table
20965
20966 @item opacity, o
20967 Set graticule opacity.
20968
20969 @item flags, fl
20970 Set graticule flags.
20971
20972 @table @samp
20973 @item numbers
20974 Draw numbers above lines. By default enabled.
20975
20976 @item dots
20977 Draw dots instead of lines.
20978 @end table
20979
20980 @item scale, s
20981 Set scale used for displaying graticule.
20982
20983 @table @samp
20984 @item digital
20985 @item millivolts
20986 @item ire
20987 @end table
20988 Default is digital.
20989
20990 @item bgopacity, b
20991 Set background opacity.
20992
20993 @item tint0, t0
20994 @item tint1, t1
20995 Set tint for output.
20996 Only used with lowpass filter and when display is not overlay and input
20997 pixel formats are not RGB.
20998 @end table
20999
21000 @section weave, doubleweave
21001
21002 The @code{weave} takes a field-based video input and join
21003 each two sequential fields into single frame, producing a new double
21004 height clip with half the frame rate and half the frame count.
21005
21006 The @code{doubleweave} works same as @code{weave} but without
21007 halving frame rate and frame count.
21008
21009 It accepts the following option:
21010
21011 @table @option
21012 @item first_field
21013 Set first field. Available values are:
21014
21015 @table @samp
21016 @item top, t
21017 Set the frame as top-field-first.
21018
21019 @item bottom, b
21020 Set the frame as bottom-field-first.
21021 @end table
21022 @end table
21023
21024 @subsection Examples
21025
21026 @itemize
21027 @item
21028 Interlace video using @ref{select} and @ref{separatefields} filter:
21029 @example
21030 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
21031 @end example
21032 @end itemize
21033
21034 @section xbr
21035 Apply the xBR high-quality magnification filter which is designed for pixel
21036 art. It follows a set of edge-detection rules, see
21037 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
21038
21039 It accepts the following option:
21040
21041 @table @option
21042 @item n
21043 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
21044 @code{3xBR} and @code{4} for @code{4xBR}.
21045 Default is @code{3}.
21046 @end table
21047
21048 @section xfade
21049
21050 Apply cross fade from one input video stream to another input video stream.
21051 The cross fade is applied for specified duration.
21052
21053 The filter accepts the following options:
21054
21055 @table @option
21056 @item transition
21057 Set one of available transition effects:
21058
21059 @table @samp
21060 @item custom
21061 @item fade
21062 @item wipeleft
21063 @item wiperight
21064 @item wipeup
21065 @item wipedown
21066 @item slideleft
21067 @item slideright
21068 @item slideup
21069 @item slidedown
21070 @item circlecrop
21071 @item rectcrop
21072 @item distance
21073 @item fadeblack
21074 @item fadewhite
21075 @item radial
21076 @item smoothleft
21077 @item smoothright
21078 @item smoothup
21079 @item smoothdown
21080 @item circleopen
21081 @item circleclose
21082 @item vertopen
21083 @item vertclose
21084 @item horzopen
21085 @item horzclose
21086 @item dissolve
21087 @item pixelize
21088 @item diagtl
21089 @item diagtr
21090 @item diagbl
21091 @item diagbr
21092 @item hlslice
21093 @item hrslice
21094 @item vuslice
21095 @item vdslice
21096 @item hblur
21097 @item fadegrays
21098 @item wipetl
21099 @item wipetr
21100 @item wipebl
21101 @item wipebr
21102 @item squeezeh
21103 @item squeezev
21104 @end table
21105 Default transition effect is fade.
21106
21107 @item duration
21108 Set cross fade duration in seconds.
21109 Default duration is 1 second.
21110
21111 @item offset
21112 Set cross fade start relative to first input stream in seconds.
21113 Default offset is 0.
21114
21115 @item expr
21116 Set expression for custom transition effect.
21117
21118 The expressions can use the following variables and functions:
21119
21120 @table @option
21121 @item X
21122 @item Y
21123 The coordinates of the current sample.
21124
21125 @item W
21126 @item H
21127 The width and height of the image.
21128
21129 @item P
21130 Progress of transition effect.
21131
21132 @item PLANE
21133 Currently processed plane.
21134
21135 @item A
21136 Return value of first input at current location and plane.
21137
21138 @item B
21139 Return value of second input at current location and plane.
21140
21141 @item a0(x, y)
21142 @item a1(x, y)
21143 @item a2(x, y)
21144 @item a3(x, y)
21145 Return the value of the pixel at location (@var{x},@var{y}) of the
21146 first/second/third/fourth component of first input.
21147
21148 @item b0(x, y)
21149 @item b1(x, y)
21150 @item b2(x, y)
21151 @item b3(x, y)
21152 Return the value of the pixel at location (@var{x},@var{y}) of the
21153 first/second/third/fourth component of second input.
21154 @end table
21155 @end table
21156
21157 @subsection Examples
21158
21159 @itemize
21160 @item
21161 Cross fade from one input video to another input video, with fade transition and duration of transition
21162 of 2 seconds starting at offset of 5 seconds:
21163 @example
21164 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
21165 @end example
21166 @end itemize
21167
21168 @section xmedian
21169 Pick median pixels from several input videos.
21170
21171 The filter accepts the following options:
21172
21173 @table @option
21174 @item inputs
21175 Set number of inputs.
21176 Default is 3. Allowed range is from 3 to 255.
21177 If number of inputs is even number, than result will be mean value between two median values.
21178
21179 @item planes
21180 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
21181
21182 @item percentile
21183 Set median percentile. Default value is @code{0.5}.
21184 Default value of @code{0.5} will pick always median values, while @code{0} will pick
21185 minimum values, and @code{1} maximum values.
21186 @end table
21187
21188 @section xstack
21189 Stack video inputs into custom layout.
21190
21191 All streams must be of same pixel format.
21192
21193 The filter accepts the following options:
21194
21195 @table @option
21196 @item inputs
21197 Set number of input streams. Default is 2.
21198
21199 @item layout
21200 Specify layout of inputs.
21201 This option requires the desired layout configuration to be explicitly set by the user.
21202 This sets position of each video input in output. Each input
21203 is separated by '|'.
21204 The first number represents the column, and the second number represents the row.
21205 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
21206 where X is video input from which to take width or height.
21207 Multiple values can be used when separated by '+'. In such
21208 case values are summed together.
21209
21210 Note that if inputs are of different sizes gaps may appear, as not all of
21211 the output video frame will be filled. Similarly, videos can overlap each
21212 other if their position doesn't leave enough space for the full frame of
21213 adjoining videos.
21214
21215 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
21216 a layout must be set by the user.
21217
21218 @item shortest
21219 If set to 1, force the output to terminate when the shortest input
21220 terminates. Default value is 0.
21221
21222 @item fill
21223 If set to valid color, all unused pixels will be filled with that color.
21224 By default fill is set to none, so it is disabled.
21225 @end table
21226
21227 @subsection Examples
21228
21229 @itemize
21230 @item
21231 Display 4 inputs into 2x2 grid.
21232
21233 Layout:
21234 @example
21235 input1(0, 0)  | input3(w0, 0)
21236 input2(0, h0) | input4(w0, h0)
21237 @end example
21238
21239 @example
21240 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
21241 @end example
21242
21243 Note that if inputs are of different sizes, gaps or overlaps may occur.
21244
21245 @item
21246 Display 4 inputs into 1x4 grid.
21247
21248 Layout:
21249 @example
21250 input1(0, 0)
21251 input2(0, h0)
21252 input3(0, h0+h1)
21253 input4(0, h0+h1+h2)
21254 @end example
21255
21256 @example
21257 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
21258 @end example
21259
21260 Note that if inputs are of different widths, unused space will appear.
21261
21262 @item
21263 Display 9 inputs into 3x3 grid.
21264
21265 Layout:
21266 @example
21267 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
21268 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
21269 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
21270 @end example
21271
21272 @example
21273 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
21274 @end example
21275
21276 Note that if inputs are of different sizes, gaps or overlaps may occur.
21277
21278 @item
21279 Display 16 inputs into 4x4 grid.
21280
21281 Layout:
21282 @example
21283 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
21284 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
21285 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
21286 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
21287 @end example
21288
21289 @example
21290 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|
21291 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
21292 @end example
21293
21294 Note that if inputs are of different sizes, gaps or overlaps may occur.
21295
21296 @end itemize
21297
21298 @anchor{yadif}
21299 @section yadif
21300
21301 Deinterlace the input video ("yadif" means "yet another deinterlacing
21302 filter").
21303
21304 It accepts the following parameters:
21305
21306
21307 @table @option
21308
21309 @item mode
21310 The interlacing mode to adopt. It accepts one of the following values:
21311
21312 @table @option
21313 @item 0, send_frame
21314 Output one frame for each frame.
21315 @item 1, send_field
21316 Output one frame for each field.
21317 @item 2, send_frame_nospatial
21318 Like @code{send_frame}, but it skips the spatial interlacing check.
21319 @item 3, send_field_nospatial
21320 Like @code{send_field}, but it skips the spatial interlacing check.
21321 @end table
21322
21323 The default value is @code{send_frame}.
21324
21325 @item parity
21326 The picture field parity assumed for the input interlaced video. It accepts one
21327 of the following values:
21328
21329 @table @option
21330 @item 0, tff
21331 Assume the top field is first.
21332 @item 1, bff
21333 Assume the bottom field is first.
21334 @item -1, auto
21335 Enable automatic detection of field parity.
21336 @end table
21337
21338 The default value is @code{auto}.
21339 If the interlacing is unknown or the decoder does not export this information,
21340 top field first will be assumed.
21341
21342 @item deint
21343 Specify which frames to deinterlace. Accepts one of the following
21344 values:
21345
21346 @table @option
21347 @item 0, all
21348 Deinterlace all frames.
21349 @item 1, interlaced
21350 Only deinterlace frames marked as interlaced.
21351 @end table
21352
21353 The default value is @code{all}.
21354 @end table
21355
21356 @section yadif_cuda
21357
21358 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
21359 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
21360 and/or nvenc.
21361
21362 It accepts the following parameters:
21363
21364
21365 @table @option
21366
21367 @item mode
21368 The interlacing mode to adopt. It accepts one of the following values:
21369
21370 @table @option
21371 @item 0, send_frame
21372 Output one frame for each frame.
21373 @item 1, send_field
21374 Output one frame for each field.
21375 @item 2, send_frame_nospatial
21376 Like @code{send_frame}, but it skips the spatial interlacing check.
21377 @item 3, send_field_nospatial
21378 Like @code{send_field}, but it skips the spatial interlacing check.
21379 @end table
21380
21381 The default value is @code{send_frame}.
21382
21383 @item parity
21384 The picture field parity assumed for the input interlaced video. It accepts one
21385 of the following values:
21386
21387 @table @option
21388 @item 0, tff
21389 Assume the top field is first.
21390 @item 1, bff
21391 Assume the bottom field is first.
21392 @item -1, auto
21393 Enable automatic detection of field parity.
21394 @end table
21395
21396 The default value is @code{auto}.
21397 If the interlacing is unknown or the decoder does not export this information,
21398 top field first will be assumed.
21399
21400 @item deint
21401 Specify which frames to deinterlace. Accepts one of the following
21402 values:
21403
21404 @table @option
21405 @item 0, all
21406 Deinterlace all frames.
21407 @item 1, interlaced
21408 Only deinterlace frames marked as interlaced.
21409 @end table
21410
21411 The default value is @code{all}.
21412 @end table
21413
21414 @section yaepblur
21415
21416 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
21417 The algorithm is described in
21418 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
21419
21420 It accepts the following parameters:
21421
21422 @table @option
21423 @item radius, r
21424 Set the window radius. Default value is 3.
21425
21426 @item planes, p
21427 Set which planes to filter. Default is only the first plane.
21428
21429 @item sigma, s
21430 Set blur strength. Default value is 128.
21431 @end table
21432
21433 @subsection Commands
21434 This filter supports same @ref{commands} as options.
21435
21436 @section zoompan
21437
21438 Apply Zoom & Pan effect.
21439
21440 This filter accepts the following options:
21441
21442 @table @option
21443 @item zoom, z
21444 Set the zoom expression. Range is 1-10. Default is 1.
21445
21446 @item x
21447 @item y
21448 Set the x and y expression. Default is 0.
21449
21450 @item d
21451 Set the duration expression in number of frames.
21452 This sets for how many number of frames effect will last for
21453 single input image.
21454
21455 @item s
21456 Set the output image size, default is 'hd720'.
21457
21458 @item fps
21459 Set the output frame rate, default is '25'.
21460 @end table
21461
21462 Each expression can contain the following constants:
21463
21464 @table @option
21465 @item in_w, iw
21466 Input width.
21467
21468 @item in_h, ih
21469 Input height.
21470
21471 @item out_w, ow
21472 Output width.
21473
21474 @item out_h, oh
21475 Output height.
21476
21477 @item in
21478 Input frame count.
21479
21480 @item on
21481 Output frame count.
21482
21483 @item in_time, it
21484 The input timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
21485
21486 @item out_time, time, ot
21487 The output timestamp expressed in seconds.
21488
21489 @item x
21490 @item y
21491 Last calculated 'x' and 'y' position from 'x' and 'y' expression
21492 for current input frame.
21493
21494 @item px
21495 @item py
21496 'x' and 'y' of last output frame of previous input frame or 0 when there was
21497 not yet such frame (first input frame).
21498
21499 @item zoom
21500 Last calculated zoom from 'z' expression for current input frame.
21501
21502 @item pzoom
21503 Last calculated zoom of last output frame of previous input frame.
21504
21505 @item duration
21506 Number of output frames for current input frame. Calculated from 'd' expression
21507 for each input frame.
21508
21509 @item pduration
21510 number of output frames created for previous input frame
21511
21512 @item a
21513 Rational number: input width / input height
21514
21515 @item sar
21516 sample aspect ratio
21517
21518 @item dar
21519 display aspect ratio
21520
21521 @end table
21522
21523 @subsection Examples
21524
21525 @itemize
21526 @item
21527 Zoom in up to 1.5x and pan at same time to some spot near center of picture:
21528 @example
21529 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
21530 @end example
21531
21532 @item
21533 Zoom in up to 1.5x and pan always at center of picture:
21534 @example
21535 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21536 @end example
21537
21538 @item
21539 Same as above but without pausing:
21540 @example
21541 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21542 @end example
21543
21544 @item
21545 Zoom in 2x into center of picture only for the first second of the input video:
21546 @example
21547 zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21548 @end example
21549
21550 @end itemize
21551
21552 @anchor{zscale}
21553 @section zscale
21554 Scale (resize) the input video, using the z.lib library:
21555 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
21556 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
21557
21558 The zscale filter forces the output display aspect ratio to be the same
21559 as the input, by changing the output sample aspect ratio.
21560
21561 If the input image format is different from the format requested by
21562 the next filter, the zscale filter will convert the input to the
21563 requested format.
21564
21565 @subsection Options
21566 The filter accepts the following options.
21567
21568 @table @option
21569 @item width, w
21570 @item height, h
21571 Set the output video dimension expression. Default value is the input
21572 dimension.
21573
21574 If the @var{width} or @var{w} value is 0, the input width is used for
21575 the output. If the @var{height} or @var{h} value is 0, the input height
21576 is used for the output.
21577
21578 If one and only one of the values is -n with n >= 1, the zscale filter
21579 will use a value that maintains the aspect ratio of the input image,
21580 calculated from the other specified dimension. After that it will,
21581 however, make sure that the calculated dimension is divisible by n and
21582 adjust the value if necessary.
21583
21584 If both values are -n with n >= 1, the behavior will be identical to
21585 both values being set to 0 as previously detailed.
21586
21587 See below for the list of accepted constants for use in the dimension
21588 expression.
21589
21590 @item size, s
21591 Set the video size. For the syntax of this option, check the
21592 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21593
21594 @item dither, d
21595 Set the dither type.
21596
21597 Possible values are:
21598 @table @var
21599 @item none
21600 @item ordered
21601 @item random
21602 @item error_diffusion
21603 @end table
21604
21605 Default is none.
21606
21607 @item filter, f
21608 Set the resize filter type.
21609
21610 Possible values are:
21611 @table @var
21612 @item point
21613 @item bilinear
21614 @item bicubic
21615 @item spline16
21616 @item spline36
21617 @item lanczos
21618 @end table
21619
21620 Default is bilinear.
21621
21622 @item range, r
21623 Set the color range.
21624
21625 Possible values are:
21626 @table @var
21627 @item input
21628 @item limited
21629 @item full
21630 @end table
21631
21632 Default is same as input.
21633
21634 @item primaries, p
21635 Set the color primaries.
21636
21637 Possible values are:
21638 @table @var
21639 @item input
21640 @item 709
21641 @item unspecified
21642 @item 170m
21643 @item 240m
21644 @item 2020
21645 @end table
21646
21647 Default is same as input.
21648
21649 @item transfer, t
21650 Set the transfer characteristics.
21651
21652 Possible values are:
21653 @table @var
21654 @item input
21655 @item 709
21656 @item unspecified
21657 @item 601
21658 @item linear
21659 @item 2020_10
21660 @item 2020_12
21661 @item smpte2084
21662 @item iec61966-2-1
21663 @item arib-std-b67
21664 @end table
21665
21666 Default is same as input.
21667
21668 @item matrix, m
21669 Set the colorspace matrix.
21670
21671 Possible value are:
21672 @table @var
21673 @item input
21674 @item 709
21675 @item unspecified
21676 @item 470bg
21677 @item 170m
21678 @item 2020_ncl
21679 @item 2020_cl
21680 @end table
21681
21682 Default is same as input.
21683
21684 @item rangein, rin
21685 Set the input color range.
21686
21687 Possible values are:
21688 @table @var
21689 @item input
21690 @item limited
21691 @item full
21692 @end table
21693
21694 Default is same as input.
21695
21696 @item primariesin, pin
21697 Set the input color primaries.
21698
21699 Possible values are:
21700 @table @var
21701 @item input
21702 @item 709
21703 @item unspecified
21704 @item 170m
21705 @item 240m
21706 @item 2020
21707 @end table
21708
21709 Default is same as input.
21710
21711 @item transferin, tin
21712 Set the input transfer characteristics.
21713
21714 Possible values are:
21715 @table @var
21716 @item input
21717 @item 709
21718 @item unspecified
21719 @item 601
21720 @item linear
21721 @item 2020_10
21722 @item 2020_12
21723 @end table
21724
21725 Default is same as input.
21726
21727 @item matrixin, min
21728 Set the input colorspace matrix.
21729
21730 Possible value are:
21731 @table @var
21732 @item input
21733 @item 709
21734 @item unspecified
21735 @item 470bg
21736 @item 170m
21737 @item 2020_ncl
21738 @item 2020_cl
21739 @end table
21740
21741 @item chromal, c
21742 Set the output chroma location.
21743
21744 Possible values are:
21745 @table @var
21746 @item input
21747 @item left
21748 @item center
21749 @item topleft
21750 @item top
21751 @item bottomleft
21752 @item bottom
21753 @end table
21754
21755 @item chromalin, cin
21756 Set the input chroma location.
21757
21758 Possible values are:
21759 @table @var
21760 @item input
21761 @item left
21762 @item center
21763 @item topleft
21764 @item top
21765 @item bottomleft
21766 @item bottom
21767 @end table
21768
21769 @item npl
21770 Set the nominal peak luminance.
21771 @end table
21772
21773 The values of the @option{w} and @option{h} options are expressions
21774 containing the following constants:
21775
21776 @table @var
21777 @item in_w
21778 @item in_h
21779 The input width and height
21780
21781 @item iw
21782 @item ih
21783 These are the same as @var{in_w} and @var{in_h}.
21784
21785 @item out_w
21786 @item out_h
21787 The output (scaled) width and height
21788
21789 @item ow
21790 @item oh
21791 These are the same as @var{out_w} and @var{out_h}
21792
21793 @item a
21794 The same as @var{iw} / @var{ih}
21795
21796 @item sar
21797 input sample aspect ratio
21798
21799 @item dar
21800 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
21801
21802 @item hsub
21803 @item vsub
21804 horizontal and vertical input chroma subsample values. For example for the
21805 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21806
21807 @item ohsub
21808 @item ovsub
21809 horizontal and vertical output chroma subsample values. For example for the
21810 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21811 @end table
21812
21813 @subsection Commands
21814
21815 This filter supports the following commands:
21816 @table @option
21817 @item width, w
21818 @item height, h
21819 Set the output video dimension expression.
21820 The command accepts the same syntax of the corresponding option.
21821
21822 If the specified expression is not valid, it is kept at its current
21823 value.
21824 @end table
21825
21826 @c man end VIDEO FILTERS
21827
21828 @chapter OpenCL Video Filters
21829 @c man begin OPENCL VIDEO FILTERS
21830
21831 Below is a description of the currently available OpenCL video filters.
21832
21833 To enable compilation of these filters you need to configure FFmpeg with
21834 @code{--enable-opencl}.
21835
21836 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
21837 @table @option
21838
21839 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
21840 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
21841 given device parameters.
21842
21843 @item -filter_hw_device @var{name}
21844 Pass the hardware device called @var{name} to all filters in any filter graph.
21845
21846 @end table
21847
21848 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
21849
21850 @itemize
21851 @item
21852 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
21853 @example
21854 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
21855 @end example
21856 @end itemize
21857
21858 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.
21859
21860 @section avgblur_opencl
21861
21862 Apply average blur filter.
21863
21864 The filter accepts the following options:
21865
21866 @table @option
21867 @item sizeX
21868 Set horizontal radius size.
21869 Range is @code{[1, 1024]} and default value is @code{1}.
21870
21871 @item planes
21872 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21873
21874 @item sizeY
21875 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
21876 @end table
21877
21878 @subsection Example
21879
21880 @itemize
21881 @item
21882 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.
21883 @example
21884 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
21885 @end example
21886 @end itemize
21887
21888 @section boxblur_opencl
21889
21890 Apply a boxblur algorithm to the input video.
21891
21892 It accepts the following parameters:
21893
21894 @table @option
21895
21896 @item luma_radius, lr
21897 @item luma_power, lp
21898 @item chroma_radius, cr
21899 @item chroma_power, cp
21900 @item alpha_radius, ar
21901 @item alpha_power, ap
21902
21903 @end table
21904
21905 A description of the accepted options follows.
21906
21907 @table @option
21908 @item luma_radius, lr
21909 @item chroma_radius, cr
21910 @item alpha_radius, ar
21911 Set an expression for the box radius in pixels used for blurring the
21912 corresponding input plane.
21913
21914 The radius value must be a non-negative number, and must not be
21915 greater than the value of the expression @code{min(w,h)/2} for the
21916 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
21917 planes.
21918
21919 Default value for @option{luma_radius} is "2". If not specified,
21920 @option{chroma_radius} and @option{alpha_radius} default to the
21921 corresponding value set for @option{luma_radius}.
21922
21923 The expressions can contain the following constants:
21924 @table @option
21925 @item w
21926 @item h
21927 The input width and height in pixels.
21928
21929 @item cw
21930 @item ch
21931 The input chroma image width and height in pixels.
21932
21933 @item hsub
21934 @item vsub
21935 The horizontal and vertical chroma subsample values. For example, for the
21936 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
21937 @end table
21938
21939 @item luma_power, lp
21940 @item chroma_power, cp
21941 @item alpha_power, ap
21942 Specify how many times the boxblur filter is applied to the
21943 corresponding plane.
21944
21945 Default value for @option{luma_power} is 2. If not specified,
21946 @option{chroma_power} and @option{alpha_power} default to the
21947 corresponding value set for @option{luma_power}.
21948
21949 A value of 0 will disable the effect.
21950 @end table
21951
21952 @subsection Examples
21953
21954 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.
21955
21956 @itemize
21957 @item
21958 Apply a boxblur filter with the luma, chroma, and alpha radius
21959 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.
21960 @example
21961 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
21962 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
21963 @end example
21964
21965 @item
21966 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.
21967
21968 For the luma plane, a 2x2 box radius will be run once.
21969
21970 For the chroma plane, a 4x4 box radius will be run 5 times.
21971
21972 For the alpha plane, a 3x3 box radius will be run 7 times.
21973 @example
21974 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
21975 @end example
21976 @end itemize
21977
21978 @section colorkey_opencl
21979 RGB colorspace color keying.
21980
21981 The filter accepts the following options:
21982
21983 @table @option
21984 @item color
21985 The color which will be replaced with transparency.
21986
21987 @item similarity
21988 Similarity percentage with the key color.
21989
21990 0.01 matches only the exact key color, while 1.0 matches everything.
21991
21992 @item blend
21993 Blend percentage.
21994
21995 0.0 makes pixels either fully transparent, or not transparent at all.
21996
21997 Higher values result in semi-transparent pixels, with a higher transparency
21998 the more similar the pixels color is to the key color.
21999 @end table
22000
22001 @subsection Examples
22002
22003 @itemize
22004 @item
22005 Make every semi-green pixel in the input transparent with some slight blending:
22006 @example
22007 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
22008 @end example
22009 @end itemize
22010
22011 @section convolution_opencl
22012
22013 Apply convolution of 3x3, 5x5, 7x7 matrix.
22014
22015 The filter accepts the following options:
22016
22017 @table @option
22018 @item 0m
22019 @item 1m
22020 @item 2m
22021 @item 3m
22022 Set matrix for each plane.
22023 Matrix is sequence of 9, 25 or 49 signed numbers.
22024 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
22025
22026 @item 0rdiv
22027 @item 1rdiv
22028 @item 2rdiv
22029 @item 3rdiv
22030 Set multiplier for calculated value for each plane.
22031 If unset or 0, it will be sum of all matrix elements.
22032 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
22033
22034 @item 0bias
22035 @item 1bias
22036 @item 2bias
22037 @item 3bias
22038 Set bias for each plane. This value is added to the result of the multiplication.
22039 Useful for making the overall image brighter or darker.
22040 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
22041
22042 @end table
22043
22044 @subsection Examples
22045
22046 @itemize
22047 @item
22048 Apply sharpen:
22049 @example
22050 -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
22051 @end example
22052
22053 @item
22054 Apply blur:
22055 @example
22056 -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
22057 @end example
22058
22059 @item
22060 Apply edge enhance:
22061 @example
22062 -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
22063 @end example
22064
22065 @item
22066 Apply edge detect:
22067 @example
22068 -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
22069 @end example
22070
22071 @item
22072 Apply laplacian edge detector which includes diagonals:
22073 @example
22074 -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
22075 @end example
22076
22077 @item
22078 Apply emboss:
22079 @example
22080 -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
22081 @end example
22082 @end itemize
22083
22084 @section erosion_opencl
22085
22086 Apply erosion effect to the video.
22087
22088 This filter replaces the pixel by the local(3x3) minimum.
22089
22090 It accepts the following options:
22091
22092 @table @option
22093 @item threshold0
22094 @item threshold1
22095 @item threshold2
22096 @item threshold3
22097 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
22098 If @code{0}, plane will remain unchanged.
22099
22100 @item coordinates
22101 Flag which specifies the pixel to refer to.
22102 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
22103
22104 Flags to local 3x3 coordinates region centered on @code{x}:
22105
22106     1 2 3
22107
22108     4 x 5
22109
22110     6 7 8
22111 @end table
22112
22113 @subsection Example
22114
22115 @itemize
22116 @item
22117 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.
22118 @example
22119 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
22120 @end example
22121 @end itemize
22122
22123 @section deshake_opencl
22124 Feature-point based video stabilization filter.
22125
22126 The filter accepts the following options:
22127
22128 @table @option
22129 @item tripod
22130 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
22131
22132 @item debug
22133 Whether or not additional debug info should be displayed, both in the processed output and in the console.
22134
22135 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
22136
22137 Viewing point matches in the output video is only supported for RGB input.
22138
22139 Defaults to @code{0}.
22140
22141 @item adaptive_crop
22142 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
22143
22144 Defaults to @code{1}.
22145
22146 @item refine_features
22147 Whether or not feature points should be refined at a sub-pixel level.
22148
22149 This can be turned off for a slight performance gain at the cost of precision.
22150
22151 Defaults to @code{1}.
22152
22153 @item smooth_strength
22154 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
22155
22156 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
22157
22158 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
22159
22160 Defaults to @code{0.0}.
22161
22162 @item smooth_window_multiplier
22163 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
22164
22165 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
22166
22167 Acceptable values range from @code{0.1} to @code{10.0}.
22168
22169 Larger values increase the amount of motion data available for determining how to smooth the camera path,
22170 potentially improving smoothness, but also increase latency and memory usage.
22171
22172 Defaults to @code{2.0}.
22173
22174 @end table
22175
22176 @subsection Examples
22177
22178 @itemize
22179 @item
22180 Stabilize a video with a fixed, medium smoothing strength:
22181 @example
22182 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
22183 @end example
22184
22185 @item
22186 Stabilize a video with debugging (both in console and in rendered video):
22187 @example
22188 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
22189 @end example
22190 @end itemize
22191
22192 @section dilation_opencl
22193
22194 Apply dilation effect to the video.
22195
22196 This filter replaces the pixel by the local(3x3) maximum.
22197
22198 It accepts the following options:
22199
22200 @table @option
22201 @item threshold0
22202 @item threshold1
22203 @item threshold2
22204 @item threshold3
22205 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
22206 If @code{0}, plane will remain unchanged.
22207
22208 @item coordinates
22209 Flag which specifies the pixel to refer to.
22210 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
22211
22212 Flags to local 3x3 coordinates region centered on @code{x}:
22213
22214     1 2 3
22215
22216     4 x 5
22217
22218     6 7 8
22219 @end table
22220
22221 @subsection Example
22222
22223 @itemize
22224 @item
22225 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.
22226 @example
22227 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
22228 @end example
22229 @end itemize
22230
22231 @section nlmeans_opencl
22232
22233 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
22234
22235 @section overlay_opencl
22236
22237 Overlay one video on top of another.
22238
22239 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
22240 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
22241
22242 The filter accepts the following options:
22243
22244 @table @option
22245
22246 @item x
22247 Set the x coordinate of the overlaid video on the main video.
22248 Default value is @code{0}.
22249
22250 @item y
22251 Set the y coordinate of the overlaid video on the main video.
22252 Default value is @code{0}.
22253
22254 @end table
22255
22256 @subsection Examples
22257
22258 @itemize
22259 @item
22260 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
22261 @example
22262 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22263 @end example
22264 @item
22265 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
22266 @example
22267 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22268 @end example
22269
22270 @end itemize
22271
22272 @section pad_opencl
22273
22274 Add paddings to the input image, and place the original input at the
22275 provided @var{x}, @var{y} coordinates.
22276
22277 It accepts the following options:
22278
22279 @table @option
22280 @item width, w
22281 @item height, h
22282 Specify an expression for the size of the output image with the
22283 paddings added. If the value for @var{width} or @var{height} is 0, the
22284 corresponding input size is used for the output.
22285
22286 The @var{width} expression can reference the value set by the
22287 @var{height} expression, and vice versa.
22288
22289 The default value of @var{width} and @var{height} is 0.
22290
22291 @item x
22292 @item y
22293 Specify the offsets to place the input image at within the padded area,
22294 with respect to the top/left border of the output image.
22295
22296 The @var{x} expression can reference the value set by the @var{y}
22297 expression, and vice versa.
22298
22299 The default value of @var{x} and @var{y} is 0.
22300
22301 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
22302 so the input image is centered on the padded area.
22303
22304 @item color
22305 Specify the color of the padded area. For the syntax of this option,
22306 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
22307 manual,ffmpeg-utils}.
22308
22309 @item aspect
22310 Pad to an aspect instead to a resolution.
22311 @end table
22312
22313 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
22314 options are expressions containing the following constants:
22315
22316 @table @option
22317 @item in_w
22318 @item in_h
22319 The input video width and height.
22320
22321 @item iw
22322 @item ih
22323 These are the same as @var{in_w} and @var{in_h}.
22324
22325 @item out_w
22326 @item out_h
22327 The output width and height (the size of the padded area), as
22328 specified by the @var{width} and @var{height} expressions.
22329
22330 @item ow
22331 @item oh
22332 These are the same as @var{out_w} and @var{out_h}.
22333
22334 @item x
22335 @item y
22336 The x and y offsets as specified by the @var{x} and @var{y}
22337 expressions, or NAN if not yet specified.
22338
22339 @item a
22340 same as @var{iw} / @var{ih}
22341
22342 @item sar
22343 input sample aspect ratio
22344
22345 @item dar
22346 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
22347 @end table
22348
22349 @section prewitt_opencl
22350
22351 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
22352
22353 The filter accepts the following option:
22354
22355 @table @option
22356 @item planes
22357 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22358
22359 @item scale
22360 Set value which will be multiplied with filtered result.
22361 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22362
22363 @item delta
22364 Set value which will be added to filtered result.
22365 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22366 @end table
22367
22368 @subsection Example
22369
22370 @itemize
22371 @item
22372 Apply the Prewitt operator with scale set to 2 and delta set to 10.
22373 @example
22374 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
22375 @end example
22376 @end itemize
22377
22378 @anchor{program_opencl}
22379 @section program_opencl
22380
22381 Filter video using an OpenCL program.
22382
22383 @table @option
22384
22385 @item source
22386 OpenCL program source file.
22387
22388 @item kernel
22389 Kernel name in program.
22390
22391 @item inputs
22392 Number of inputs to the filter.  Defaults to 1.
22393
22394 @item size, s
22395 Size of output frames.  Defaults to the same as the first input.
22396
22397 @end table
22398
22399 The @code{program_opencl} filter also supports the @ref{framesync} options.
22400
22401 The program source file must contain a kernel function with the given name,
22402 which will be run once for each plane of the output.  Each run on a plane
22403 gets enqueued as a separate 2D global NDRange with one work-item for each
22404 pixel to be generated.  The global ID offset for each work-item is therefore
22405 the coordinates of a pixel in the destination image.
22406
22407 The kernel function needs to take the following arguments:
22408 @itemize
22409 @item
22410 Destination image, @var{__write_only image2d_t}.
22411
22412 This image will become the output; the kernel should write all of it.
22413 @item
22414 Frame index, @var{unsigned int}.
22415
22416 This is a counter starting from zero and increasing by one for each frame.
22417 @item
22418 Source images, @var{__read_only image2d_t}.
22419
22420 These are the most recent images on each input.  The kernel may read from
22421 them to generate the output, but they can't be written to.
22422 @end itemize
22423
22424 Example programs:
22425
22426 @itemize
22427 @item
22428 Copy the input to the output (output must be the same size as the input).
22429 @verbatim
22430 __kernel void copy(__write_only image2d_t destination,
22431                    unsigned int index,
22432                    __read_only  image2d_t source)
22433 {
22434     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
22435
22436     int2 location = (int2)(get_global_id(0), get_global_id(1));
22437
22438     float4 value = read_imagef(source, sampler, location);
22439
22440     write_imagef(destination, location, value);
22441 }
22442 @end verbatim
22443
22444 @item
22445 Apply a simple transformation, rotating the input by an amount increasing
22446 with the index counter.  Pixel values are linearly interpolated by the
22447 sampler, and the output need not have the same dimensions as the input.
22448 @verbatim
22449 __kernel void rotate_image(__write_only image2d_t dst,
22450                            unsigned int index,
22451                            __read_only  image2d_t src)
22452 {
22453     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22454                                CLK_FILTER_LINEAR);
22455
22456     float angle = (float)index / 100.0f;
22457
22458     float2 dst_dim = convert_float2(get_image_dim(dst));
22459     float2 src_dim = convert_float2(get_image_dim(src));
22460
22461     float2 dst_cen = dst_dim / 2.0f;
22462     float2 src_cen = src_dim / 2.0f;
22463
22464     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
22465
22466     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
22467     float2 src_pos = {
22468         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
22469         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
22470     };
22471     src_pos = src_pos * src_dim / dst_dim;
22472
22473     float2 src_loc = src_pos + src_cen;
22474
22475     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
22476         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
22477         write_imagef(dst, dst_loc, 0.5f);
22478     else
22479         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
22480 }
22481 @end verbatim
22482
22483 @item
22484 Blend two inputs together, with the amount of each input used varying
22485 with the index counter.
22486 @verbatim
22487 __kernel void blend_images(__write_only image2d_t dst,
22488                            unsigned int index,
22489                            __read_only  image2d_t src1,
22490                            __read_only  image2d_t src2)
22491 {
22492     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22493                                CLK_FILTER_LINEAR);
22494
22495     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
22496
22497     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
22498     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
22499     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
22500
22501     float4 val1 = read_imagef(src1, sampler, src1_loc);
22502     float4 val2 = read_imagef(src2, sampler, src2_loc);
22503
22504     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
22505 }
22506 @end verbatim
22507
22508 @end itemize
22509
22510 @section roberts_opencl
22511 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
22512
22513 The filter accepts the following option:
22514
22515 @table @option
22516 @item planes
22517 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22518
22519 @item scale
22520 Set value which will be multiplied with filtered result.
22521 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22522
22523 @item delta
22524 Set value which will be added to filtered result.
22525 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22526 @end table
22527
22528 @subsection Example
22529
22530 @itemize
22531 @item
22532 Apply the Roberts cross operator with scale set to 2 and delta set to 10
22533 @example
22534 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
22535 @end example
22536 @end itemize
22537
22538 @section sobel_opencl
22539
22540 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
22541
22542 The filter accepts the following option:
22543
22544 @table @option
22545 @item planes
22546 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22547
22548 @item scale
22549 Set value which will be multiplied with filtered result.
22550 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22551
22552 @item delta
22553 Set value which will be added to filtered result.
22554 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22555 @end table
22556
22557 @subsection Example
22558
22559 @itemize
22560 @item
22561 Apply sobel operator with scale set to 2 and delta set to 10
22562 @example
22563 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
22564 @end example
22565 @end itemize
22566
22567 @section tonemap_opencl
22568
22569 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
22570
22571 It accepts the following parameters:
22572
22573 @table @option
22574 @item tonemap
22575 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
22576
22577 @item param
22578 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
22579
22580 @item desat
22581 Apply desaturation for highlights that exceed this level of brightness. The
22582 higher the parameter, the more color information will be preserved. This
22583 setting helps prevent unnaturally blown-out colors for super-highlights, by
22584 (smoothly) turning into white instead. This makes images feel more natural,
22585 at the cost of reducing information about out-of-range colors.
22586
22587 The default value is 0.5, and the algorithm here is a little different from
22588 the cpu version tonemap currently. A setting of 0.0 disables this option.
22589
22590 @item threshold
22591 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
22592 is used to detect whether the scene has changed or not. If the distance between
22593 the current frame average brightness and the current running average exceeds
22594 a threshold value, we would re-calculate scene average and peak brightness.
22595 The default value is 0.2.
22596
22597 @item format
22598 Specify the output pixel format.
22599
22600 Currently supported formats are:
22601 @table @var
22602 @item p010
22603 @item nv12
22604 @end table
22605
22606 @item range, r
22607 Set the output color range.
22608
22609 Possible values are:
22610 @table @var
22611 @item tv/mpeg
22612 @item pc/jpeg
22613 @end table
22614
22615 Default is same as input.
22616
22617 @item primaries, p
22618 Set the output color primaries.
22619
22620 Possible values are:
22621 @table @var
22622 @item bt709
22623 @item bt2020
22624 @end table
22625
22626 Default is same as input.
22627
22628 @item transfer, t
22629 Set the output transfer characteristics.
22630
22631 Possible values are:
22632 @table @var
22633 @item bt709
22634 @item bt2020
22635 @end table
22636
22637 Default is bt709.
22638
22639 @item matrix, m
22640 Set the output colorspace matrix.
22641
22642 Possible value are:
22643 @table @var
22644 @item bt709
22645 @item bt2020
22646 @end table
22647
22648 Default is same as input.
22649
22650 @end table
22651
22652 @subsection Example
22653
22654 @itemize
22655 @item
22656 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
22657 @example
22658 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
22659 @end example
22660 @end itemize
22661
22662 @section unsharp_opencl
22663
22664 Sharpen or blur the input video.
22665
22666 It accepts the following parameters:
22667
22668 @table @option
22669 @item luma_msize_x, lx
22670 Set the luma matrix horizontal size.
22671 Range is @code{[1, 23]} and default value is @code{5}.
22672
22673 @item luma_msize_y, ly
22674 Set the luma matrix vertical size.
22675 Range is @code{[1, 23]} and default value is @code{5}.
22676
22677 @item luma_amount, la
22678 Set the luma effect strength.
22679 Range is @code{[-10, 10]} and default value is @code{1.0}.
22680
22681 Negative values will blur the input video, while positive values will
22682 sharpen it, a value of zero will disable the effect.
22683
22684 @item chroma_msize_x, cx
22685 Set the chroma matrix horizontal size.
22686 Range is @code{[1, 23]} and default value is @code{5}.
22687
22688 @item chroma_msize_y, cy
22689 Set the chroma matrix vertical size.
22690 Range is @code{[1, 23]} and default value is @code{5}.
22691
22692 @item chroma_amount, ca
22693 Set the chroma effect strength.
22694 Range is @code{[-10, 10]} and default value is @code{0.0}.
22695
22696 Negative values will blur the input video, while positive values will
22697 sharpen it, a value of zero will disable the effect.
22698
22699 @end table
22700
22701 All parameters are optional and default to the equivalent of the
22702 string '5:5:1.0:5:5:0.0'.
22703
22704 @subsection Examples
22705
22706 @itemize
22707 @item
22708 Apply strong luma sharpen effect:
22709 @example
22710 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
22711 @end example
22712
22713 @item
22714 Apply a strong blur of both luma and chroma parameters:
22715 @example
22716 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
22717 @end example
22718 @end itemize
22719
22720 @section xfade_opencl
22721
22722 Cross fade two videos with custom transition effect by using OpenCL.
22723
22724 It accepts the following options:
22725
22726 @table @option
22727 @item transition
22728 Set one of possible transition effects.
22729
22730 @table @option
22731 @item custom
22732 Select custom transition effect, the actual transition description
22733 will be picked from source and kernel options.
22734
22735 @item fade
22736 @item wipeleft
22737 @item wiperight
22738 @item wipeup
22739 @item wipedown
22740 @item slideleft
22741 @item slideright
22742 @item slideup
22743 @item slidedown
22744
22745 Default transition is fade.
22746 @end table
22747
22748 @item source
22749 OpenCL program source file for custom transition.
22750
22751 @item kernel
22752 Set name of kernel to use for custom transition from program source file.
22753
22754 @item duration
22755 Set duration of video transition.
22756
22757 @item offset
22758 Set time of start of transition relative to first video.
22759 @end table
22760
22761 The program source file must contain a kernel function with the given name,
22762 which will be run once for each plane of the output.  Each run on a plane
22763 gets enqueued as a separate 2D global NDRange with one work-item for each
22764 pixel to be generated.  The global ID offset for each work-item is therefore
22765 the coordinates of a pixel in the destination image.
22766
22767 The kernel function needs to take the following arguments:
22768 @itemize
22769 @item
22770 Destination image, @var{__write_only image2d_t}.
22771
22772 This image will become the output; the kernel should write all of it.
22773
22774 @item
22775 First Source image, @var{__read_only image2d_t}.
22776 Second Source image, @var{__read_only image2d_t}.
22777
22778 These are the most recent images on each input.  The kernel may read from
22779 them to generate the output, but they can't be written to.
22780
22781 @item
22782 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
22783 @end itemize
22784
22785 Example programs:
22786
22787 @itemize
22788 @item
22789 Apply dots curtain transition effect:
22790 @verbatim
22791 __kernel void blend_images(__write_only image2d_t dst,
22792                            __read_only  image2d_t src1,
22793                            __read_only  image2d_t src2,
22794                            float progress)
22795 {
22796     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22797                                CLK_FILTER_LINEAR);
22798     int2  p = (int2)(get_global_id(0), get_global_id(1));
22799     float2 rp = (float2)(get_global_id(0), get_global_id(1));
22800     float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
22801     rp = rp / dim;
22802
22803     float2 dots = (float2)(20.0, 20.0);
22804     float2 center = (float2)(0,0);
22805     float2 unused;
22806
22807     float4 val1 = read_imagef(src1, sampler, p);
22808     float4 val2 = read_imagef(src2, sampler, p);
22809     bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
22810
22811     write_imagef(dst, p, next ? val1 : val2);
22812 }
22813 @end verbatim
22814
22815 @end itemize
22816
22817 @c man end OPENCL VIDEO FILTERS
22818
22819 @chapter VAAPI Video Filters
22820 @c man begin VAAPI VIDEO FILTERS
22821
22822 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
22823
22824 To enable compilation of these filters you need to configure FFmpeg with
22825 @code{--enable-vaapi}.
22826
22827 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}
22828
22829 @section tonemap_vaapi
22830
22831 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
22832 It maps the dynamic range of HDR10 content to the SDR content.
22833 It currently only accepts HDR10 as input.
22834
22835 It accepts the following parameters:
22836
22837 @table @option
22838 @item format
22839 Specify the output pixel format.
22840
22841 Currently supported formats are:
22842 @table @var
22843 @item p010
22844 @item nv12
22845 @end table
22846
22847 Default is nv12.
22848
22849 @item primaries, p
22850 Set the output color primaries.
22851
22852 Default is same as input.
22853
22854 @item transfer, t
22855 Set the output transfer characteristics.
22856
22857 Default is bt709.
22858
22859 @item matrix, m
22860 Set the output colorspace matrix.
22861
22862 Default is same as input.
22863
22864 @end table
22865
22866 @subsection Example
22867
22868 @itemize
22869 @item
22870 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
22871 @example
22872 tonemap_vaapi=format=p010:t=bt2020-10
22873 @end example
22874 @end itemize
22875
22876 @c man end VAAPI VIDEO FILTERS
22877
22878 @chapter Video Sources
22879 @c man begin VIDEO SOURCES
22880
22881 Below is a description of the currently available video sources.
22882
22883 @section buffer
22884
22885 Buffer video frames, and make them available to the filter chain.
22886
22887 This source is mainly intended for a programmatic use, in particular
22888 through the interface defined in @file{libavfilter/buffersrc.h}.
22889
22890 It accepts the following parameters:
22891
22892 @table @option
22893
22894 @item video_size
22895 Specify the size (width and height) of the buffered video frames. For the
22896 syntax of this option, check the
22897 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22898
22899 @item width
22900 The input video width.
22901
22902 @item height
22903 The input video height.
22904
22905 @item pix_fmt
22906 A string representing the pixel format of the buffered video frames.
22907 It may be a number corresponding to a pixel format, or a pixel format
22908 name.
22909
22910 @item time_base
22911 Specify the timebase assumed by the timestamps of the buffered frames.
22912
22913 @item frame_rate
22914 Specify the frame rate expected for the video stream.
22915
22916 @item pixel_aspect, sar
22917 The sample (pixel) aspect ratio of the input video.
22918
22919 @item sws_param
22920 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
22921 to the filtergraph description to specify swscale flags for automatically
22922 inserted scalers. See @ref{Filtergraph syntax}.
22923
22924 @item hw_frames_ctx
22925 When using a hardware pixel format, this should be a reference to an
22926 AVHWFramesContext describing input frames.
22927 @end table
22928
22929 For example:
22930 @example
22931 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
22932 @end example
22933
22934 will instruct the source to accept video frames with size 320x240 and
22935 with format "yuv410p", assuming 1/24 as the timestamps timebase and
22936 square pixels (1:1 sample aspect ratio).
22937 Since the pixel format with name "yuv410p" corresponds to the number 6
22938 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
22939 this example corresponds to:
22940 @example
22941 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
22942 @end example
22943
22944 Alternatively, the options can be specified as a flat string, but this
22945 syntax is deprecated:
22946
22947 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
22948
22949 @section cellauto
22950
22951 Create a pattern generated by an elementary cellular automaton.
22952
22953 The initial state of the cellular automaton can be defined through the
22954 @option{filename} and @option{pattern} options. If such options are
22955 not specified an initial state is created randomly.
22956
22957 At each new frame a new row in the video is filled with the result of
22958 the cellular automaton next generation. The behavior when the whole
22959 frame is filled is defined by the @option{scroll} option.
22960
22961 This source accepts the following options:
22962
22963 @table @option
22964 @item filename, f
22965 Read the initial cellular automaton state, i.e. the starting row, from
22966 the specified file.
22967 In the file, each non-whitespace character is considered an alive
22968 cell, a newline will terminate the row, and further characters in the
22969 file will be ignored.
22970
22971 @item pattern, p
22972 Read the initial cellular automaton state, i.e. the starting row, from
22973 the specified string.
22974
22975 Each non-whitespace character in the string is considered an alive
22976 cell, a newline will terminate the row, and further characters in the
22977 string will be ignored.
22978
22979 @item rate, r
22980 Set the video rate, that is the number of frames generated per second.
22981 Default is 25.
22982
22983 @item random_fill_ratio, ratio
22984 Set the random fill ratio for the initial cellular automaton row. It
22985 is a floating point number value ranging from 0 to 1, defaults to
22986 1/PHI.
22987
22988 This option is ignored when a file or a pattern is specified.
22989
22990 @item random_seed, seed
22991 Set the seed for filling randomly the initial row, must be an integer
22992 included between 0 and UINT32_MAX. If not specified, or if explicitly
22993 set to -1, the filter will try to use a good random seed on a best
22994 effort basis.
22995
22996 @item rule
22997 Set the cellular automaton rule, it is a number ranging from 0 to 255.
22998 Default value is 110.
22999
23000 @item size, s
23001 Set the size of the output video. For the syntax of this option, check the
23002 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23003
23004 If @option{filename} or @option{pattern} is specified, the size is set
23005 by default to the width of the specified initial state row, and the
23006 height is set to @var{width} * PHI.
23007
23008 If @option{size} is set, it must contain the width of the specified
23009 pattern string, and the specified pattern will be centered in the
23010 larger row.
23011
23012 If a filename or a pattern string is not specified, the size value
23013 defaults to "320x518" (used for a randomly generated initial state).
23014
23015 @item scroll
23016 If set to 1, scroll the output upward when all the rows in the output
23017 have been already filled. If set to 0, the new generated row will be
23018 written over the top row just after the bottom row is filled.
23019 Defaults to 1.
23020
23021 @item start_full, full
23022 If set to 1, completely fill the output with generated rows before
23023 outputting the first frame.
23024 This is the default behavior, for disabling set the value to 0.
23025
23026 @item stitch
23027 If set to 1, stitch the left and right row edges together.
23028 This is the default behavior, for disabling set the value to 0.
23029 @end table
23030
23031 @subsection Examples
23032
23033 @itemize
23034 @item
23035 Read the initial state from @file{pattern}, and specify an output of
23036 size 200x400.
23037 @example
23038 cellauto=f=pattern:s=200x400
23039 @end example
23040
23041 @item
23042 Generate a random initial row with a width of 200 cells, with a fill
23043 ratio of 2/3:
23044 @example
23045 cellauto=ratio=2/3:s=200x200
23046 @end example
23047
23048 @item
23049 Create a pattern generated by rule 18 starting by a single alive cell
23050 centered on an initial row with width 100:
23051 @example
23052 cellauto=p=@@:s=100x400:full=0:rule=18
23053 @end example
23054
23055 @item
23056 Specify a more elaborated initial pattern:
23057 @example
23058 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
23059 @end example
23060
23061 @end itemize
23062
23063 @anchor{coreimagesrc}
23064 @section coreimagesrc
23065 Video source generated on GPU using Apple's CoreImage API on OSX.
23066
23067 This video source is a specialized version of the @ref{coreimage} video filter.
23068 Use a core image generator at the beginning of the applied filterchain to
23069 generate the content.
23070
23071 The coreimagesrc video source accepts the following options:
23072 @table @option
23073 @item list_generators
23074 List all available generators along with all their respective options as well as
23075 possible minimum and maximum values along with the default values.
23076 @example
23077 list_generators=true
23078 @end example
23079
23080 @item size, s
23081 Specify the size of the sourced video. For the syntax of this option, check the
23082 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23083 The default value is @code{320x240}.
23084
23085 @item rate, r
23086 Specify the frame rate of the sourced video, as the number of frames
23087 generated per second. It has to be a string in the format
23088 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23089 number or a valid video frame rate abbreviation. The default value is
23090 "25".
23091
23092 @item sar
23093 Set the sample aspect ratio of the sourced video.
23094
23095 @item duration, d
23096 Set the duration of the sourced video. See
23097 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23098 for the accepted syntax.
23099
23100 If not specified, or the expressed duration is negative, the video is
23101 supposed to be generated forever.
23102 @end table
23103
23104 Additionally, all options of the @ref{coreimage} video filter are accepted.
23105 A complete filterchain can be used for further processing of the
23106 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
23107 and examples for details.
23108
23109 @subsection Examples
23110
23111 @itemize
23112
23113 @item
23114 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
23115 given as complete and escaped command-line for Apple's standard bash shell:
23116 @example
23117 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
23118 @end example
23119 This example is equivalent to the QRCode example of @ref{coreimage} without the
23120 need for a nullsrc video source.
23121 @end itemize
23122
23123
23124 @section gradients
23125 Generate several gradients.
23126
23127 @table @option
23128 @item size, s
23129 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23130 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23131
23132 @item rate, r
23133 Set frame rate, expressed as number of frames per second. Default
23134 value is "25".
23135
23136 @item c0, c1, c2, c3, c4, c5, c6, c7
23137 Set 8 colors. Default values for colors is to pick random one.
23138
23139 @item x0, y0, y0, y1
23140 Set gradient line source and destination points. If negative or out of range, random ones
23141 are picked.
23142
23143 @item nb_colors, n
23144 Set number of colors to use at once. Allowed range is from 2 to 8. Default value is 2.
23145
23146 @item seed
23147 Set seed for picking gradient line points.
23148
23149 @item duration, d
23150 Set the duration of the sourced video. See
23151 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23152 for the accepted syntax.
23153
23154 If not specified, or the expressed duration is negative, the video is
23155 supposed to be generated forever.
23156
23157 @item speed
23158 Set speed of gradients rotation.
23159 @end table
23160
23161
23162 @section mandelbrot
23163
23164 Generate a Mandelbrot set fractal, and progressively zoom towards the
23165 point specified with @var{start_x} and @var{start_y}.
23166
23167 This source accepts the following options:
23168
23169 @table @option
23170
23171 @item end_pts
23172 Set the terminal pts value. Default value is 400.
23173
23174 @item end_scale
23175 Set the terminal scale value.
23176 Must be a floating point value. Default value is 0.3.
23177
23178 @item inner
23179 Set the inner coloring mode, that is the algorithm used to draw the
23180 Mandelbrot fractal internal region.
23181
23182 It shall assume one of the following values:
23183 @table @option
23184 @item black
23185 Set black mode.
23186 @item convergence
23187 Show time until convergence.
23188 @item mincol
23189 Set color based on point closest to the origin of the iterations.
23190 @item period
23191 Set period mode.
23192 @end table
23193
23194 Default value is @var{mincol}.
23195
23196 @item bailout
23197 Set the bailout value. Default value is 10.0.
23198
23199 @item maxiter
23200 Set the maximum of iterations performed by the rendering
23201 algorithm. Default value is 7189.
23202
23203 @item outer
23204 Set outer coloring mode.
23205 It shall assume one of following values:
23206 @table @option
23207 @item iteration_count
23208 Set iteration count mode.
23209 @item normalized_iteration_count
23210 set normalized iteration count mode.
23211 @end table
23212 Default value is @var{normalized_iteration_count}.
23213
23214 @item rate, r
23215 Set frame rate, expressed as number of frames per second. Default
23216 value is "25".
23217
23218 @item size, s
23219 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23220 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23221
23222 @item start_scale
23223 Set the initial scale value. Default value is 3.0.
23224
23225 @item start_x
23226 Set the initial x position. Must be a floating point value between
23227 -100 and 100. Default value is -0.743643887037158704752191506114774.
23228
23229 @item start_y
23230 Set the initial y position. Must be a floating point value between
23231 -100 and 100. Default value is -0.131825904205311970493132056385139.
23232 @end table
23233
23234 @section mptestsrc
23235
23236 Generate various test patterns, as generated by the MPlayer test filter.
23237
23238 The size of the generated video is fixed, and is 256x256.
23239 This source is useful in particular for testing encoding features.
23240
23241 This source accepts the following options:
23242
23243 @table @option
23244
23245 @item rate, r
23246 Specify the frame rate of the sourced video, as the number of frames
23247 generated per second. It has to be a string in the format
23248 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23249 number or a valid video frame rate abbreviation. The default value is
23250 "25".
23251
23252 @item duration, d
23253 Set the duration of the sourced video. See
23254 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23255 for the accepted syntax.
23256
23257 If not specified, or the expressed duration is negative, the video is
23258 supposed to be generated forever.
23259
23260 @item test, t
23261
23262 Set the number or the name of the test to perform. Supported tests are:
23263 @table @option
23264 @item dc_luma
23265 @item dc_chroma
23266 @item freq_luma
23267 @item freq_chroma
23268 @item amp_luma
23269 @item amp_chroma
23270 @item cbp
23271 @item mv
23272 @item ring1
23273 @item ring2
23274 @item all
23275
23276 @item max_frames, m
23277 Set the maximum number of frames generated for each test, default value is 30.
23278
23279 @end table
23280
23281 Default value is "all", which will cycle through the list of all tests.
23282 @end table
23283
23284 Some examples:
23285 @example
23286 mptestsrc=t=dc_luma
23287 @end example
23288
23289 will generate a "dc_luma" test pattern.
23290
23291 @section frei0r_src
23292
23293 Provide a frei0r source.
23294
23295 To enable compilation of this filter you need to install the frei0r
23296 header and configure FFmpeg with @code{--enable-frei0r}.
23297
23298 This source accepts the following parameters:
23299
23300 @table @option
23301
23302 @item size
23303 The size of the video to generate. For the syntax of this option, check the
23304 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23305
23306 @item framerate
23307 The framerate of the generated video. It may be a string of the form
23308 @var{num}/@var{den} or a frame rate abbreviation.
23309
23310 @item filter_name
23311 The name to the frei0r source to load. For more information regarding frei0r and
23312 how to set the parameters, read the @ref{frei0r} section in the video filters
23313 documentation.
23314
23315 @item filter_params
23316 A '|'-separated list of parameters to pass to the frei0r source.
23317
23318 @end table
23319
23320 For example, to generate a frei0r partik0l source with size 200x200
23321 and frame rate 10 which is overlaid on the overlay filter main input:
23322 @example
23323 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
23324 @end example
23325
23326 @section life
23327
23328 Generate a life pattern.
23329
23330 This source is based on a generalization of John Conway's life game.
23331
23332 The sourced input represents a life grid, each pixel represents a cell
23333 which can be in one of two possible states, alive or dead. Every cell
23334 interacts with its eight neighbours, which are the cells that are
23335 horizontally, vertically, or diagonally adjacent.
23336
23337 At each interaction the grid evolves according to the adopted rule,
23338 which specifies the number of neighbor alive cells which will make a
23339 cell stay alive or born. The @option{rule} option allows one to specify
23340 the rule to adopt.
23341
23342 This source accepts the following options:
23343
23344 @table @option
23345 @item filename, f
23346 Set the file from which to read the initial grid state. In the file,
23347 each non-whitespace character is considered an alive cell, and newline
23348 is used to delimit the end of each row.
23349
23350 If this option is not specified, the initial grid is generated
23351 randomly.
23352
23353 @item rate, r
23354 Set the video rate, that is the number of frames generated per second.
23355 Default is 25.
23356
23357 @item random_fill_ratio, ratio
23358 Set the random fill ratio for the initial random grid. It is a
23359 floating point number value ranging from 0 to 1, defaults to 1/PHI.
23360 It is ignored when a file is specified.
23361
23362 @item random_seed, seed
23363 Set the seed for filling the initial random grid, must be an integer
23364 included between 0 and UINT32_MAX. If not specified, or if explicitly
23365 set to -1, the filter will try to use a good random seed on a best
23366 effort basis.
23367
23368 @item rule
23369 Set the life rule.
23370
23371 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
23372 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
23373 @var{NS} specifies the number of alive neighbor cells which make a
23374 live cell stay alive, and @var{NB} the number of alive neighbor cells
23375 which make a dead cell to become alive (i.e. to "born").
23376 "s" and "b" can be used in place of "S" and "B", respectively.
23377
23378 Alternatively a rule can be specified by an 18-bits integer. The 9
23379 high order bits are used to encode the next cell state if it is alive
23380 for each number of neighbor alive cells, the low order bits specify
23381 the rule for "borning" new cells. Higher order bits encode for an
23382 higher number of neighbor cells.
23383 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
23384 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
23385
23386 Default value is "S23/B3", which is the original Conway's game of life
23387 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
23388 cells, and will born a new cell if there are three alive cells around
23389 a dead cell.
23390
23391 @item size, s
23392 Set the size of the output video. For the syntax of this option, check the
23393 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23394
23395 If @option{filename} is specified, the size is set by default to the
23396 same size of the input file. If @option{size} is set, it must contain
23397 the size specified in the input file, and the initial grid defined in
23398 that file is centered in the larger resulting area.
23399
23400 If a filename is not specified, the size value defaults to "320x240"
23401 (used for a randomly generated initial grid).
23402
23403 @item stitch
23404 If set to 1, stitch the left and right grid edges together, and the
23405 top and bottom edges also. Defaults to 1.
23406
23407 @item mold
23408 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
23409 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
23410 value from 0 to 255.
23411
23412 @item life_color
23413 Set the color of living (or new born) cells.
23414
23415 @item death_color
23416 Set the color of dead cells. If @option{mold} is set, this is the first color
23417 used to represent a dead cell.
23418
23419 @item mold_color
23420 Set mold color, for definitely dead and moldy cells.
23421
23422 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
23423 ffmpeg-utils manual,ffmpeg-utils}.
23424 @end table
23425
23426 @subsection Examples
23427
23428 @itemize
23429 @item
23430 Read a grid from @file{pattern}, and center it on a grid of size
23431 300x300 pixels:
23432 @example
23433 life=f=pattern:s=300x300
23434 @end example
23435
23436 @item
23437 Generate a random grid of size 200x200, with a fill ratio of 2/3:
23438 @example
23439 life=ratio=2/3:s=200x200
23440 @end example
23441
23442 @item
23443 Specify a custom rule for evolving a randomly generated grid:
23444 @example
23445 life=rule=S14/B34
23446 @end example
23447
23448 @item
23449 Full example with slow death effect (mold) using @command{ffplay}:
23450 @example
23451 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
23452 @end example
23453 @end itemize
23454
23455 @anchor{allrgb}
23456 @anchor{allyuv}
23457 @anchor{color}
23458 @anchor{haldclutsrc}
23459 @anchor{nullsrc}
23460 @anchor{pal75bars}
23461 @anchor{pal100bars}
23462 @anchor{rgbtestsrc}
23463 @anchor{smptebars}
23464 @anchor{smptehdbars}
23465 @anchor{testsrc}
23466 @anchor{testsrc2}
23467 @anchor{yuvtestsrc}
23468 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
23469
23470 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
23471
23472 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
23473
23474 The @code{color} source provides an uniformly colored input.
23475
23476 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
23477 @ref{haldclut} filter.
23478
23479 The @code{nullsrc} source returns unprocessed video frames. It is
23480 mainly useful to be employed in analysis / debugging tools, or as the
23481 source for filters which ignore the input data.
23482
23483 The @code{pal75bars} source generates a color bars pattern, based on
23484 EBU PAL recommendations with 75% color levels.
23485
23486 The @code{pal100bars} source generates a color bars pattern, based on
23487 EBU PAL recommendations with 100% color levels.
23488
23489 The @code{rgbtestsrc} source generates an RGB test pattern useful for
23490 detecting RGB vs BGR issues. You should see a red, green and blue
23491 stripe from top to bottom.
23492
23493 The @code{smptebars} source generates a color bars pattern, based on
23494 the SMPTE Engineering Guideline EG 1-1990.
23495
23496 The @code{smptehdbars} source generates a color bars pattern, based on
23497 the SMPTE RP 219-2002.
23498
23499 The @code{testsrc} source generates a test video pattern, showing a
23500 color pattern, a scrolling gradient and a timestamp. This is mainly
23501 intended for testing purposes.
23502
23503 The @code{testsrc2} source is similar to testsrc, but supports more
23504 pixel formats instead of just @code{rgb24}. This allows using it as an
23505 input for other tests without requiring a format conversion.
23506
23507 The @code{yuvtestsrc} source generates an YUV test pattern. You should
23508 see a y, cb and cr stripe from top to bottom.
23509
23510 The sources accept the following parameters:
23511
23512 @table @option
23513
23514 @item level
23515 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
23516 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
23517 pixels to be used as identity matrix for 3D lookup tables. Each component is
23518 coded on a @code{1/(N*N)} scale.
23519
23520 @item color, c
23521 Specify the color of the source, only available in the @code{color}
23522 source. For the syntax of this option, check the
23523 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
23524
23525 @item size, s
23526 Specify the size of the sourced video. For the syntax of this option, check the
23527 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23528 The default value is @code{320x240}.
23529
23530 This option is not available with the @code{allrgb}, @code{allyuv}, and
23531 @code{haldclutsrc} filters.
23532
23533 @item rate, r
23534 Specify the frame rate of the sourced video, as the number of frames
23535 generated per second. It has to be a string in the format
23536 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23537 number or a valid video frame rate abbreviation. The default value is
23538 "25".
23539
23540 @item duration, d
23541 Set the duration of the sourced video. See
23542 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23543 for the accepted syntax.
23544
23545 If not specified, or the expressed duration is negative, the video is
23546 supposed to be generated forever.
23547
23548 Since the frame rate is used as time base, all frames including the last one
23549 will have their full duration. If the specified duration is not a multiple
23550 of the frame duration, it will be rounded up.
23551
23552 @item sar
23553 Set the sample aspect ratio of the sourced video.
23554
23555 @item alpha
23556 Specify the alpha (opacity) of the background, only available in the
23557 @code{testsrc2} source. The value must be between 0 (fully transparent) and
23558 255 (fully opaque, the default).
23559
23560 @item decimals, n
23561 Set the number of decimals to show in the timestamp, only available in the
23562 @code{testsrc} source.
23563
23564 The displayed timestamp value will correspond to the original
23565 timestamp value multiplied by the power of 10 of the specified
23566 value. Default value is 0.
23567 @end table
23568
23569 @subsection Examples
23570
23571 @itemize
23572 @item
23573 Generate a video with a duration of 5.3 seconds, with size
23574 176x144 and a frame rate of 10 frames per second:
23575 @example
23576 testsrc=duration=5.3:size=qcif:rate=10
23577 @end example
23578
23579 @item
23580 The following graph description will generate a red source
23581 with an opacity of 0.2, with size "qcif" and a frame rate of 10
23582 frames per second:
23583 @example
23584 color=c=red@@0.2:s=qcif:r=10
23585 @end example
23586
23587 @item
23588 If the input content is to be ignored, @code{nullsrc} can be used. The
23589 following command generates noise in the luminance plane by employing
23590 the @code{geq} filter:
23591 @example
23592 nullsrc=s=256x256, geq=random(1)*255:128:128
23593 @end example
23594 @end itemize
23595
23596 @subsection Commands
23597
23598 The @code{color} source supports the following commands:
23599
23600 @table @option
23601 @item c, color
23602 Set the color of the created image. Accepts the same syntax of the
23603 corresponding @option{color} option.
23604 @end table
23605
23606 @section openclsrc
23607
23608 Generate video using an OpenCL program.
23609
23610 @table @option
23611
23612 @item source
23613 OpenCL program source file.
23614
23615 @item kernel
23616 Kernel name in program.
23617
23618 @item size, s
23619 Size of frames to generate.  This must be set.
23620
23621 @item format
23622 Pixel format to use for the generated frames.  This must be set.
23623
23624 @item rate, r
23625 Number of frames generated every second.  Default value is '25'.
23626
23627 @end table
23628
23629 For details of how the program loading works, see the @ref{program_opencl}
23630 filter.
23631
23632 Example programs:
23633
23634 @itemize
23635 @item
23636 Generate a colour ramp by setting pixel values from the position of the pixel
23637 in the output image.  (Note that this will work with all pixel formats, but
23638 the generated output will not be the same.)
23639 @verbatim
23640 __kernel void ramp(__write_only image2d_t dst,
23641                    unsigned int index)
23642 {
23643     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23644
23645     float4 val;
23646     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
23647
23648     write_imagef(dst, loc, val);
23649 }
23650 @end verbatim
23651
23652 @item
23653 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
23654 @verbatim
23655 __kernel void sierpinski_carpet(__write_only image2d_t dst,
23656                                 unsigned int index)
23657 {
23658     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23659
23660     float4 value = 0.0f;
23661     int x = loc.x + index;
23662     int y = loc.y + index;
23663     while (x > 0 || y > 0) {
23664         if (x % 3 == 1 && y % 3 == 1) {
23665             value = 1.0f;
23666             break;
23667         }
23668         x /= 3;
23669         y /= 3;
23670     }
23671
23672     write_imagef(dst, loc, value);
23673 }
23674 @end verbatim
23675
23676 @end itemize
23677
23678 @section sierpinski
23679
23680 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
23681
23682 This source accepts the following options:
23683
23684 @table @option
23685 @item size, s
23686 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23687 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23688
23689 @item rate, r
23690 Set frame rate, expressed as number of frames per second. Default
23691 value is "25".
23692
23693 @item seed
23694 Set seed which is used for random panning.
23695
23696 @item jump
23697 Set max jump for single pan destination. Allowed range is from 1 to 10000.
23698
23699 @item type
23700 Set fractal type, can be default @code{carpet} or @code{triangle}.
23701 @end table
23702
23703 @c man end VIDEO SOURCES
23704
23705 @chapter Video Sinks
23706 @c man begin VIDEO SINKS
23707
23708 Below is a description of the currently available video sinks.
23709
23710 @section buffersink
23711
23712 Buffer video frames, and make them available to the end of the filter
23713 graph.
23714
23715 This sink is mainly intended for programmatic use, in particular
23716 through the interface defined in @file{libavfilter/buffersink.h}
23717 or the options system.
23718
23719 It accepts a pointer to an AVBufferSinkContext structure, which
23720 defines the incoming buffers' formats, to be passed as the opaque
23721 parameter to @code{avfilter_init_filter} for initialization.
23722
23723 @section nullsink
23724
23725 Null video sink: do absolutely nothing with the input video. It is
23726 mainly useful as a template and for use in analysis / debugging
23727 tools.
23728
23729 @c man end VIDEO SINKS
23730
23731 @chapter Multimedia Filters
23732 @c man begin MULTIMEDIA FILTERS
23733
23734 Below is a description of the currently available multimedia filters.
23735
23736 @section abitscope
23737
23738 Convert input audio to a video output, displaying the audio bit scope.
23739
23740 The filter accepts the following options:
23741
23742 @table @option
23743 @item rate, r
23744 Set frame rate, expressed as number of frames per second. Default
23745 value is "25".
23746
23747 @item size, s
23748 Specify the video size for the output. For the syntax of this option, check the
23749 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23750 Default value is @code{1024x256}.
23751
23752 @item colors
23753 Specify list of colors separated by space or by '|' which will be used to
23754 draw channels. Unrecognized or missing colors will be replaced
23755 by white color.
23756 @end table
23757
23758 @section adrawgraph
23759 Draw a graph using input audio metadata.
23760
23761 See @ref{drawgraph}
23762
23763 @section agraphmonitor
23764
23765 See @ref{graphmonitor}.
23766
23767 @section ahistogram
23768
23769 Convert input audio to a video output, displaying the volume histogram.
23770
23771 The filter accepts the following options:
23772
23773 @table @option
23774 @item dmode
23775 Specify how histogram is calculated.
23776
23777 It accepts the following values:
23778 @table @samp
23779 @item single
23780 Use single histogram for all channels.
23781 @item separate
23782 Use separate histogram for each channel.
23783 @end table
23784 Default is @code{single}.
23785
23786 @item rate, r
23787 Set frame rate, expressed as number of frames per second. Default
23788 value is "25".
23789
23790 @item size, s
23791 Specify the video size for the output. For the syntax of this option, check the
23792 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23793 Default value is @code{hd720}.
23794
23795 @item scale
23796 Set display scale.
23797
23798 It accepts the following values:
23799 @table @samp
23800 @item log
23801 logarithmic
23802 @item sqrt
23803 square root
23804 @item cbrt
23805 cubic root
23806 @item lin
23807 linear
23808 @item rlog
23809 reverse logarithmic
23810 @end table
23811 Default is @code{log}.
23812
23813 @item ascale
23814 Set amplitude scale.
23815
23816 It accepts the following values:
23817 @table @samp
23818 @item log
23819 logarithmic
23820 @item lin
23821 linear
23822 @end table
23823 Default is @code{log}.
23824
23825 @item acount
23826 Set how much frames to accumulate in histogram.
23827 Default is 1. Setting this to -1 accumulates all frames.
23828
23829 @item rheight
23830 Set histogram ratio of window height.
23831
23832 @item slide
23833 Set sonogram sliding.
23834
23835 It accepts the following values:
23836 @table @samp
23837 @item replace
23838 replace old rows with new ones.
23839 @item scroll
23840 scroll from top to bottom.
23841 @end table
23842 Default is @code{replace}.
23843 @end table
23844
23845 @section aphasemeter
23846
23847 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
23848 representing mean phase of current audio frame. A video output can also be produced and is
23849 enabled by default. The audio is passed through as first output.
23850
23851 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
23852 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
23853 and @code{1} means channels are in phase.
23854
23855 The filter accepts the following options, all related to its video output:
23856
23857 @table @option
23858 @item rate, r
23859 Set the output frame rate. Default value is @code{25}.
23860
23861 @item size, s
23862 Set the video size for the output. For the syntax of this option, check the
23863 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23864 Default value is @code{800x400}.
23865
23866 @item rc
23867 @item gc
23868 @item bc
23869 Specify the red, green, blue contrast. Default values are @code{2},
23870 @code{7} and @code{1}.
23871 Allowed range is @code{[0, 255]}.
23872
23873 @item mpc
23874 Set color which will be used for drawing median phase. If color is
23875 @code{none} which is default, no median phase value will be drawn.
23876
23877 @item video
23878 Enable video output. Default is enabled.
23879 @end table
23880
23881 @subsection phasing detection
23882
23883 The filter also detects out of phase and mono sequences in stereo streams.
23884 It logs the sequence start, end and duration when it lasts longer or as long as the minimum set.
23885
23886 The filter accepts the following options for this detection:
23887
23888 @table @option
23889 @item phasing
23890 Enable mono and out of phase detection. Default is disabled.
23891
23892 @item tolerance, t
23893 Set phase tolerance for mono detection, in amplitude ratio. Default is @code{0}.
23894 Allowed range is @code{[0, 1]}.
23895
23896 @item angle, a
23897 Set angle threshold for out of phase detection, in degree. Default is @code{170}.
23898 Allowed range is @code{[90, 180]}.
23899
23900 @item duration, d
23901 Set mono or out of phase duration until notification, expressed in seconds. Default is @code{2}.
23902 @end table
23903
23904 @subsection Examples
23905
23906 @itemize
23907 @item
23908 Complete example with @command{ffmpeg} to detect 1 second of mono with 0.001 phase tolerance:
23909 @example
23910 ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
23911 @end example
23912 @end itemize
23913
23914 @section avectorscope
23915
23916 Convert input audio to a video output, representing the audio vector
23917 scope.
23918
23919 The filter is used to measure the difference between channels of stereo
23920 audio stream. A monaural signal, consisting of identical left and right
23921 signal, results in straight vertical line. Any stereo separation is visible
23922 as a deviation from this line, creating a Lissajous figure.
23923 If the straight (or deviation from it) but horizontal line appears this
23924 indicates that the left and right channels are out of phase.
23925
23926 The filter accepts the following options:
23927
23928 @table @option
23929 @item mode, m
23930 Set the vectorscope mode.
23931
23932 Available values are:
23933 @table @samp
23934 @item lissajous
23935 Lissajous rotated by 45 degrees.
23936
23937 @item lissajous_xy
23938 Same as above but not rotated.
23939
23940 @item polar
23941 Shape resembling half of circle.
23942 @end table
23943
23944 Default value is @samp{lissajous}.
23945
23946 @item size, s
23947 Set the video size for the output. For the syntax of this option, check the
23948 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23949 Default value is @code{400x400}.
23950
23951 @item rate, r
23952 Set the output frame rate. Default value is @code{25}.
23953
23954 @item rc
23955 @item gc
23956 @item bc
23957 @item ac
23958 Specify the red, green, blue and alpha contrast. Default values are @code{40},
23959 @code{160}, @code{80} and @code{255}.
23960 Allowed range is @code{[0, 255]}.
23961
23962 @item rf
23963 @item gf
23964 @item bf
23965 @item af
23966 Specify the red, green, blue and alpha fade. Default values are @code{15},
23967 @code{10}, @code{5} and @code{5}.
23968 Allowed range is @code{[0, 255]}.
23969
23970 @item zoom
23971 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
23972 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
23973
23974 @item draw
23975 Set the vectorscope drawing mode.
23976
23977 Available values are:
23978 @table @samp
23979 @item dot
23980 Draw dot for each sample.
23981
23982 @item line
23983 Draw line between previous and current sample.
23984 @end table
23985
23986 Default value is @samp{dot}.
23987
23988 @item scale
23989 Specify amplitude scale of audio samples.
23990
23991 Available values are:
23992 @table @samp
23993 @item lin
23994 Linear.
23995
23996 @item sqrt
23997 Square root.
23998
23999 @item cbrt
24000 Cubic root.
24001
24002 @item log
24003 Logarithmic.
24004 @end table
24005
24006 @item swap
24007 Swap left channel axis with right channel axis.
24008
24009 @item mirror
24010 Mirror axis.
24011
24012 @table @samp
24013 @item none
24014 No mirror.
24015
24016 @item x
24017 Mirror only x axis.
24018
24019 @item y
24020 Mirror only y axis.
24021
24022 @item xy
24023 Mirror both axis.
24024 @end table
24025
24026 @end table
24027
24028 @subsection Examples
24029
24030 @itemize
24031 @item
24032 Complete example using @command{ffplay}:
24033 @example
24034 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
24035              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
24036 @end example
24037 @end itemize
24038
24039 @section bench, abench
24040
24041 Benchmark part of a filtergraph.
24042
24043 The filter accepts the following options:
24044
24045 @table @option
24046 @item action
24047 Start or stop a timer.
24048
24049 Available values are:
24050 @table @samp
24051 @item start
24052 Get the current time, set it as frame metadata (using the key
24053 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
24054
24055 @item stop
24056 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
24057 the input frame metadata to get the time difference. Time difference, average,
24058 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
24059 @code{min}) are then printed. The timestamps are expressed in seconds.
24060 @end table
24061 @end table
24062
24063 @subsection Examples
24064
24065 @itemize
24066 @item
24067 Benchmark @ref{selectivecolor} filter:
24068 @example
24069 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
24070 @end example
24071 @end itemize
24072
24073 @section concat
24074
24075 Concatenate audio and video streams, joining them together one after the
24076 other.
24077
24078 The filter works on segments of synchronized video and audio streams. All
24079 segments must have the same number of streams of each type, and that will
24080 also be the number of streams at output.
24081
24082 The filter accepts the following options:
24083
24084 @table @option
24085
24086 @item n
24087 Set the number of segments. Default is 2.
24088
24089 @item v
24090 Set the number of output video streams, that is also the number of video
24091 streams in each segment. Default is 1.
24092
24093 @item a
24094 Set the number of output audio streams, that is also the number of audio
24095 streams in each segment. Default is 0.
24096
24097 @item unsafe
24098 Activate unsafe mode: do not fail if segments have a different format.
24099
24100 @end table
24101
24102 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
24103 @var{a} audio outputs.
24104
24105 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
24106 segment, in the same order as the outputs, then the inputs for the second
24107 segment, etc.
24108
24109 Related streams do not always have exactly the same duration, for various
24110 reasons including codec frame size or sloppy authoring. For that reason,
24111 related synchronized streams (e.g. a video and its audio track) should be
24112 concatenated at once. The concat filter will use the duration of the longest
24113 stream in each segment (except the last one), and if necessary pad shorter
24114 audio streams with silence.
24115
24116 For this filter to work correctly, all segments must start at timestamp 0.
24117
24118 All corresponding streams must have the same parameters in all segments; the
24119 filtering system will automatically select a common pixel format for video
24120 streams, and a common sample format, sample rate and channel layout for
24121 audio streams, but other settings, such as resolution, must be converted
24122 explicitly by the user.
24123
24124 Different frame rates are acceptable but will result in variable frame rate
24125 at output; be sure to configure the output file to handle it.
24126
24127 @subsection Examples
24128
24129 @itemize
24130 @item
24131 Concatenate an opening, an episode and an ending, all in bilingual version
24132 (video in stream 0, audio in streams 1 and 2):
24133 @example
24134 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
24135   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
24136    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
24137   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
24138 @end example
24139
24140 @item
24141 Concatenate two parts, handling audio and video separately, using the
24142 (a)movie sources, and adjusting the resolution:
24143 @example
24144 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
24145 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
24146 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
24147 @end example
24148 Note that a desync will happen at the stitch if the audio and video streams
24149 do not have exactly the same duration in the first file.
24150
24151 @end itemize
24152
24153 @subsection Commands
24154
24155 This filter supports the following commands:
24156 @table @option
24157 @item next
24158 Close the current segment and step to the next one
24159 @end table
24160
24161 @anchor{ebur128}
24162 @section ebur128
24163
24164 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
24165 level. By default, it logs a message at a frequency of 10Hz with the
24166 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
24167 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
24168
24169 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
24170 sample format is double-precision floating point. The input stream will be converted to
24171 this specification, if needed. Users may need to insert aformat and/or aresample filters
24172 after this filter to obtain the original parameters.
24173
24174 The filter also has a video output (see the @var{video} option) with a real
24175 time graph to observe the loudness evolution. The graphic contains the logged
24176 message mentioned above, so it is not printed anymore when this option is set,
24177 unless the verbose logging is set. The main graphing area contains the
24178 short-term loudness (3 seconds of analysis), and the gauge on the right is for
24179 the momentary loudness (400 milliseconds), but can optionally be configured
24180 to instead display short-term loudness (see @var{gauge}).
24181
24182 The green area marks a  +/- 1LU target range around the target loudness
24183 (-23LUFS by default, unless modified through @var{target}).
24184
24185 More information about the Loudness Recommendation EBU R128 on
24186 @url{http://tech.ebu.ch/loudness}.
24187
24188 The filter accepts the following options:
24189
24190 @table @option
24191
24192 @item video
24193 Activate the video output. The audio stream is passed unchanged whether this
24194 option is set or no. The video stream will be the first output stream if
24195 activated. Default is @code{0}.
24196
24197 @item size
24198 Set the video size. This option is for video only. For the syntax of this
24199 option, check the
24200 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24201 Default and minimum resolution is @code{640x480}.
24202
24203 @item meter
24204 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
24205 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
24206 other integer value between this range is allowed.
24207
24208 @item metadata
24209 Set metadata injection. If set to @code{1}, the audio input will be segmented
24210 into 100ms output frames, each of them containing various loudness information
24211 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
24212
24213 Default is @code{0}.
24214
24215 @item framelog
24216 Force the frame logging level.
24217
24218 Available values are:
24219 @table @samp
24220 @item info
24221 information logging level
24222 @item verbose
24223 verbose logging level
24224 @end table
24225
24226 By default, the logging level is set to @var{info}. If the @option{video} or
24227 the @option{metadata} options are set, it switches to @var{verbose}.
24228
24229 @item peak
24230 Set peak mode(s).
24231
24232 Available modes can be cumulated (the option is a @code{flag} type). Possible
24233 values are:
24234 @table @samp
24235 @item none
24236 Disable any peak mode (default).
24237 @item sample
24238 Enable sample-peak mode.
24239
24240 Simple peak mode looking for the higher sample value. It logs a message
24241 for sample-peak (identified by @code{SPK}).
24242 @item true
24243 Enable true-peak mode.
24244
24245 If enabled, the peak lookup is done on an over-sampled version of the input
24246 stream for better peak accuracy. It logs a message for true-peak.
24247 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
24248 This mode requires a build with @code{libswresample}.
24249 @end table
24250
24251 @item dualmono
24252 Treat mono input files as "dual mono". If a mono file is intended for playback
24253 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
24254 If set to @code{true}, this option will compensate for this effect.
24255 Multi-channel input files are not affected by this option.
24256
24257 @item panlaw
24258 Set a specific pan law to be used for the measurement of dual mono files.
24259 This parameter is optional, and has a default value of -3.01dB.
24260
24261 @item target
24262 Set a specific target level (in LUFS) used as relative zero in the visualization.
24263 This parameter is optional and has a default value of -23LUFS as specified
24264 by EBU R128. However, material published online may prefer a level of -16LUFS
24265 (e.g. for use with podcasts or video platforms).
24266
24267 @item gauge
24268 Set the value displayed by the gauge. Valid values are @code{momentary} and s
24269 @code{shortterm}. By default the momentary value will be used, but in certain
24270 scenarios it may be more useful to observe the short term value instead (e.g.
24271 live mixing).
24272
24273 @item scale
24274 Sets the display scale for the loudness. Valid parameters are @code{absolute}
24275 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
24276 video output, not the summary or continuous log output.
24277 @end table
24278
24279 @subsection Examples
24280
24281 @itemize
24282 @item
24283 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
24284 @example
24285 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
24286 @end example
24287
24288 @item
24289 Run an analysis with @command{ffmpeg}:
24290 @example
24291 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
24292 @end example
24293 @end itemize
24294
24295 @section interleave, ainterleave
24296
24297 Temporally interleave frames from several inputs.
24298
24299 @code{interleave} works with video inputs, @code{ainterleave} with audio.
24300
24301 These filters read frames from several inputs and send the oldest
24302 queued frame to the output.
24303
24304 Input streams must have well defined, monotonically increasing frame
24305 timestamp values.
24306
24307 In order to submit one frame to output, these filters need to enqueue
24308 at least one frame for each input, so they cannot work in case one
24309 input is not yet terminated and will not receive incoming frames.
24310
24311 For example consider the case when one input is a @code{select} filter
24312 which always drops input frames. The @code{interleave} filter will keep
24313 reading from that input, but it will never be able to send new frames
24314 to output until the input sends an end-of-stream signal.
24315
24316 Also, depending on inputs synchronization, the filters will drop
24317 frames in case one input receives more frames than the other ones, and
24318 the queue is already filled.
24319
24320 These filters accept the following options:
24321
24322 @table @option
24323 @item nb_inputs, n
24324 Set the number of different inputs, it is 2 by default.
24325
24326 @item duration
24327 How to determine the end-of-stream.
24328
24329 @table @option
24330 @item longest
24331 The duration of the longest input. (default)
24332
24333 @item shortest
24334 The duration of the shortest input.
24335
24336 @item first
24337 The duration of the first input.
24338 @end table
24339
24340 @end table
24341
24342 @subsection Examples
24343
24344 @itemize
24345 @item
24346 Interleave frames belonging to different streams using @command{ffmpeg}:
24347 @example
24348 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
24349 @end example
24350
24351 @item
24352 Add flickering blur effect:
24353 @example
24354 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
24355 @end example
24356 @end itemize
24357
24358 @section metadata, ametadata
24359
24360 Manipulate frame metadata.
24361
24362 This filter accepts the following options:
24363
24364 @table @option
24365 @item mode
24366 Set mode of operation of the filter.
24367
24368 Can be one of the following:
24369
24370 @table @samp
24371 @item select
24372 If both @code{value} and @code{key} is set, select frames
24373 which have such metadata. If only @code{key} is set, select
24374 every frame that has such key in metadata.
24375
24376 @item add
24377 Add new metadata @code{key} and @code{value}. If key is already available
24378 do nothing.
24379
24380 @item modify
24381 Modify value of already present key.
24382
24383 @item delete
24384 If @code{value} is set, delete only keys that have such value.
24385 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
24386 the frame.
24387
24388 @item print
24389 Print key and its value if metadata was found. If @code{key} is not set print all
24390 metadata values available in frame.
24391 @end table
24392
24393 @item key
24394 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
24395
24396 @item value
24397 Set metadata value which will be used. This option is mandatory for
24398 @code{modify} and @code{add} mode.
24399
24400 @item function
24401 Which function to use when comparing metadata value and @code{value}.
24402
24403 Can be one of following:
24404
24405 @table @samp
24406 @item same_str
24407 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
24408
24409 @item starts_with
24410 Values are interpreted as strings, returns true if metadata value starts with
24411 the @code{value} option string.
24412
24413 @item less
24414 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
24415
24416 @item equal
24417 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
24418
24419 @item greater
24420 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
24421
24422 @item expr
24423 Values are interpreted as floats, returns true if expression from option @code{expr}
24424 evaluates to true.
24425
24426 @item ends_with
24427 Values are interpreted as strings, returns true if metadata value ends with
24428 the @code{value} option string.
24429 @end table
24430
24431 @item expr
24432 Set expression which is used when @code{function} is set to @code{expr}.
24433 The expression is evaluated through the eval API and can contain the following
24434 constants:
24435
24436 @table @option
24437 @item VALUE1
24438 Float representation of @code{value} from metadata key.
24439
24440 @item VALUE2
24441 Float representation of @code{value} as supplied by user in @code{value} option.
24442 @end table
24443
24444 @item file
24445 If specified in @code{print} mode, output is written to the named file. Instead of
24446 plain filename any writable url can be specified. Filename ``-'' is a shorthand
24447 for standard output. If @code{file} option is not set, output is written to the log
24448 with AV_LOG_INFO loglevel.
24449
24450 @item direct
24451 Reduces buffering in print mode when output is written to a URL set using @var{file}.
24452
24453 @end table
24454
24455 @subsection Examples
24456
24457 @itemize
24458 @item
24459 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
24460 between 0 and 1.
24461 @example
24462 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
24463 @end example
24464 @item
24465 Print silencedetect output to file @file{metadata.txt}.
24466 @example
24467 silencedetect,ametadata=mode=print:file=metadata.txt
24468 @end example
24469 @item
24470 Direct all metadata to a pipe with file descriptor 4.
24471 @example
24472 metadata=mode=print:file='pipe\:4'
24473 @end example
24474 @end itemize
24475
24476 @section perms, aperms
24477
24478 Set read/write permissions for the output frames.
24479
24480 These filters are mainly aimed at developers to test direct path in the
24481 following filter in the filtergraph.
24482
24483 The filters accept the following options:
24484
24485 @table @option
24486 @item mode
24487 Select the permissions mode.
24488
24489 It accepts the following values:
24490 @table @samp
24491 @item none
24492 Do nothing. This is the default.
24493 @item ro
24494 Set all the output frames read-only.
24495 @item rw
24496 Set all the output frames directly writable.
24497 @item toggle
24498 Make the frame read-only if writable, and writable if read-only.
24499 @item random
24500 Set each output frame read-only or writable randomly.
24501 @end table
24502
24503 @item seed
24504 Set the seed for the @var{random} mode, must be an integer included between
24505 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
24506 @code{-1}, the filter will try to use a good random seed on a best effort
24507 basis.
24508 @end table
24509
24510 Note: in case of auto-inserted filter between the permission filter and the
24511 following one, the permission might not be received as expected in that
24512 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
24513 perms/aperms filter can avoid this problem.
24514
24515 @section realtime, arealtime
24516
24517 Slow down filtering to match real time approximately.
24518
24519 These filters will pause the filtering for a variable amount of time to
24520 match the output rate with the input timestamps.
24521 They are similar to the @option{re} option to @code{ffmpeg}.
24522
24523 They accept the following options:
24524
24525 @table @option
24526 @item limit
24527 Time limit for the pauses. Any pause longer than that will be considered
24528 a timestamp discontinuity and reset the timer. Default is 2 seconds.
24529 @item speed
24530 Speed factor for processing. The value must be a float larger than zero.
24531 Values larger than 1.0 will result in faster than realtime processing,
24532 smaller will slow processing down. The @var{limit} is automatically adapted
24533 accordingly. Default is 1.0.
24534
24535 A processing speed faster than what is possible without these filters cannot
24536 be achieved.
24537 @end table
24538
24539 @anchor{select}
24540 @section select, aselect
24541
24542 Select frames to pass in output.
24543
24544 This filter accepts the following options:
24545
24546 @table @option
24547
24548 @item expr, e
24549 Set expression, which is evaluated for each input frame.
24550
24551 If the expression is evaluated to zero, the frame is discarded.
24552
24553 If the evaluation result is negative or NaN, the frame is sent to the
24554 first output; otherwise it is sent to the output with index
24555 @code{ceil(val)-1}, assuming that the input index starts from 0.
24556
24557 For example a value of @code{1.2} corresponds to the output with index
24558 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
24559
24560 @item outputs, n
24561 Set the number of outputs. The output to which to send the selected
24562 frame is based on the result of the evaluation. Default value is 1.
24563 @end table
24564
24565 The expression can contain the following constants:
24566
24567 @table @option
24568 @item n
24569 The (sequential) number of the filtered frame, starting from 0.
24570
24571 @item selected_n
24572 The (sequential) number of the selected frame, starting from 0.
24573
24574 @item prev_selected_n
24575 The sequential number of the last selected frame. It's NAN if undefined.
24576
24577 @item TB
24578 The timebase of the input timestamps.
24579
24580 @item pts
24581 The PTS (Presentation TimeStamp) of the filtered video frame,
24582 expressed in @var{TB} units. It's NAN if undefined.
24583
24584 @item t
24585 The PTS of the filtered video frame,
24586 expressed in seconds. It's NAN if undefined.
24587
24588 @item prev_pts
24589 The PTS of the previously filtered video frame. It's NAN if undefined.
24590
24591 @item prev_selected_pts
24592 The PTS of the last previously filtered video frame. It's NAN if undefined.
24593
24594 @item prev_selected_t
24595 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
24596
24597 @item start_pts
24598 The PTS of the first video frame in the video. It's NAN if undefined.
24599
24600 @item start_t
24601 The time of the first video frame in the video. It's NAN if undefined.
24602
24603 @item pict_type @emph{(video only)}
24604 The type of the filtered frame. It can assume one of the following
24605 values:
24606 @table @option
24607 @item I
24608 @item P
24609 @item B
24610 @item S
24611 @item SI
24612 @item SP
24613 @item BI
24614 @end table
24615
24616 @item interlace_type @emph{(video only)}
24617 The frame interlace type. It can assume one of the following values:
24618 @table @option
24619 @item PROGRESSIVE
24620 The frame is progressive (not interlaced).
24621 @item TOPFIRST
24622 The frame is top-field-first.
24623 @item BOTTOMFIRST
24624 The frame is bottom-field-first.
24625 @end table
24626
24627 @item consumed_sample_n @emph{(audio only)}
24628 the number of selected samples before the current frame
24629
24630 @item samples_n @emph{(audio only)}
24631 the number of samples in the current frame
24632
24633 @item sample_rate @emph{(audio only)}
24634 the input sample rate
24635
24636 @item key
24637 This is 1 if the filtered frame is a key-frame, 0 otherwise.
24638
24639 @item pos
24640 the position in the file of the filtered frame, -1 if the information
24641 is not available (e.g. for synthetic video)
24642
24643 @item scene @emph{(video only)}
24644 value between 0 and 1 to indicate a new scene; a low value reflects a low
24645 probability for the current frame to introduce a new scene, while a higher
24646 value means the current frame is more likely to be one (see the example below)
24647
24648 @item concatdec_select
24649 The concat demuxer can select only part of a concat input file by setting an
24650 inpoint and an outpoint, but the output packets may not be entirely contained
24651 in the selected interval. By using this variable, it is possible to skip frames
24652 generated by the concat demuxer which are not exactly contained in the selected
24653 interval.
24654
24655 This works by comparing the frame pts against the @var{lavf.concat.start_time}
24656 and the @var{lavf.concat.duration} packet metadata values which are also
24657 present in the decoded frames.
24658
24659 The @var{concatdec_select} variable is -1 if the frame pts is at least
24660 start_time and either the duration metadata is missing or the frame pts is less
24661 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
24662 missing.
24663
24664 That basically means that an input frame is selected if its pts is within the
24665 interval set by the concat demuxer.
24666
24667 @end table
24668
24669 The default value of the select expression is "1".
24670
24671 @subsection Examples
24672
24673 @itemize
24674 @item
24675 Select all frames in input:
24676 @example
24677 select
24678 @end example
24679
24680 The example above is the same as:
24681 @example
24682 select=1
24683 @end example
24684
24685 @item
24686 Skip all frames:
24687 @example
24688 select=0
24689 @end example
24690
24691 @item
24692 Select only I-frames:
24693 @example
24694 select='eq(pict_type\,I)'
24695 @end example
24696
24697 @item
24698 Select one frame every 100:
24699 @example
24700 select='not(mod(n\,100))'
24701 @end example
24702
24703 @item
24704 Select only frames contained in the 10-20 time interval:
24705 @example
24706 select=between(t\,10\,20)
24707 @end example
24708
24709 @item
24710 Select only I-frames contained in the 10-20 time interval:
24711 @example
24712 select=between(t\,10\,20)*eq(pict_type\,I)
24713 @end example
24714
24715 @item
24716 Select frames with a minimum distance of 10 seconds:
24717 @example
24718 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
24719 @end example
24720
24721 @item
24722 Use aselect to select only audio frames with samples number > 100:
24723 @example
24724 aselect='gt(samples_n\,100)'
24725 @end example
24726
24727 @item
24728 Create a mosaic of the first scenes:
24729 @example
24730 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
24731 @end example
24732
24733 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
24734 choice.
24735
24736 @item
24737 Send even and odd frames to separate outputs, and compose them:
24738 @example
24739 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
24740 @end example
24741
24742 @item
24743 Select useful frames from an ffconcat file which is using inpoints and
24744 outpoints but where the source files are not intra frame only.
24745 @example
24746 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
24747 @end example
24748 @end itemize
24749
24750 @section sendcmd, asendcmd
24751
24752 Send commands to filters in the filtergraph.
24753
24754 These filters read commands to be sent to other filters in the
24755 filtergraph.
24756
24757 @code{sendcmd} must be inserted between two video filters,
24758 @code{asendcmd} must be inserted between two audio filters, but apart
24759 from that they act the same way.
24760
24761 The specification of commands can be provided in the filter arguments
24762 with the @var{commands} option, or in a file specified by the
24763 @var{filename} option.
24764
24765 These filters accept the following options:
24766 @table @option
24767 @item commands, c
24768 Set the commands to be read and sent to the other filters.
24769 @item filename, f
24770 Set the filename of the commands to be read and sent to the other
24771 filters.
24772 @end table
24773
24774 @subsection Commands syntax
24775
24776 A commands description consists of a sequence of interval
24777 specifications, comprising a list of commands to be executed when a
24778 particular event related to that interval occurs. The occurring event
24779 is typically the current frame time entering or leaving a given time
24780 interval.
24781
24782 An interval is specified by the following syntax:
24783 @example
24784 @var{START}[-@var{END}] @var{COMMANDS};
24785 @end example
24786
24787 The time interval is specified by the @var{START} and @var{END} times.
24788 @var{END} is optional and defaults to the maximum time.
24789
24790 The current frame time is considered within the specified interval if
24791 it is included in the interval [@var{START}, @var{END}), that is when
24792 the time is greater or equal to @var{START} and is lesser than
24793 @var{END}.
24794
24795 @var{COMMANDS} consists of a sequence of one or more command
24796 specifications, separated by ",", relating to that interval.  The
24797 syntax of a command specification is given by:
24798 @example
24799 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
24800 @end example
24801
24802 @var{FLAGS} is optional and specifies the type of events relating to
24803 the time interval which enable sending the specified command, and must
24804 be a non-null sequence of identifier flags separated by "+" or "|" and
24805 enclosed between "[" and "]".
24806
24807 The following flags are recognized:
24808 @table @option
24809 @item enter
24810 The command is sent when the current frame timestamp enters the
24811 specified interval. In other words, the command is sent when the
24812 previous frame timestamp was not in the given interval, and the
24813 current is.
24814
24815 @item leave
24816 The command is sent when the current frame timestamp leaves the
24817 specified interval. In other words, the command is sent when the
24818 previous frame timestamp was in the given interval, and the
24819 current is not.
24820
24821 @item expr
24822 The command @var{ARG} is interpreted as expression and result of
24823 expression is passed as @var{ARG}.
24824
24825 The expression is evaluated through the eval API and can contain the following
24826 constants:
24827
24828 @table @option
24829 @item POS
24830 Original position in the file of the frame, or undefined if undefined
24831 for the current frame.
24832
24833 @item PTS
24834 The presentation timestamp in input.
24835
24836 @item N
24837 The count of the input frame for video or audio, starting from 0.
24838
24839 @item T
24840 The time in seconds of the current frame.
24841
24842 @item TS
24843 The start time in seconds of the current command interval.
24844
24845 @item TE
24846 The end time in seconds of the current command interval.
24847
24848 @item TI
24849 The interpolated time of the current command interval, TI = (T - TS) / (TE - TS).
24850 @end table
24851
24852 @end table
24853
24854 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
24855 assumed.
24856
24857 @var{TARGET} specifies the target of the command, usually the name of
24858 the filter class or a specific filter instance name.
24859
24860 @var{COMMAND} specifies the name of the command for the target filter.
24861
24862 @var{ARG} is optional and specifies the optional list of argument for
24863 the given @var{COMMAND}.
24864
24865 Between one interval specification and another, whitespaces, or
24866 sequences of characters starting with @code{#} until the end of line,
24867 are ignored and can be used to annotate comments.
24868
24869 A simplified BNF description of the commands specification syntax
24870 follows:
24871 @example
24872 @var{COMMAND_FLAG}  ::= "enter" | "leave"
24873 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
24874 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
24875 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
24876 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
24877 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
24878 @end example
24879
24880 @subsection Examples
24881
24882 @itemize
24883 @item
24884 Specify audio tempo change at second 4:
24885 @example
24886 asendcmd=c='4.0 atempo tempo 1.5',atempo
24887 @end example
24888
24889 @item
24890 Target a specific filter instance:
24891 @example
24892 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
24893 @end example
24894
24895 @item
24896 Specify a list of drawtext and hue commands in a file.
24897 @example
24898 # show text in the interval 5-10
24899 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
24900          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
24901
24902 # desaturate the image in the interval 15-20
24903 15.0-20.0 [enter] hue s 0,
24904           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
24905           [leave] hue s 1,
24906           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
24907
24908 # apply an exponential saturation fade-out effect, starting from time 25
24909 25 [enter] hue s exp(25-t)
24910 @end example
24911
24912 A filtergraph allowing to read and process the above command list
24913 stored in a file @file{test.cmd}, can be specified with:
24914 @example
24915 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
24916 @end example
24917 @end itemize
24918
24919 @anchor{setpts}
24920 @section setpts, asetpts
24921
24922 Change the PTS (presentation timestamp) of the input frames.
24923
24924 @code{setpts} works on video frames, @code{asetpts} on audio frames.
24925
24926 This filter accepts the following options:
24927
24928 @table @option
24929
24930 @item expr
24931 The expression which is evaluated for each frame to construct its timestamp.
24932
24933 @end table
24934
24935 The expression is evaluated through the eval API and can contain the following
24936 constants:
24937
24938 @table @option
24939 @item FRAME_RATE, FR
24940 frame rate, only defined for constant frame-rate video
24941
24942 @item PTS
24943 The presentation timestamp in input
24944
24945 @item N
24946 The count of the input frame for video or the number of consumed samples,
24947 not including the current frame for audio, starting from 0.
24948
24949 @item NB_CONSUMED_SAMPLES
24950 The number of consumed samples, not including the current frame (only
24951 audio)
24952
24953 @item NB_SAMPLES, S
24954 The number of samples in the current frame (only audio)
24955
24956 @item SAMPLE_RATE, SR
24957 The audio sample rate.
24958
24959 @item STARTPTS
24960 The PTS of the first frame.
24961
24962 @item STARTT
24963 the time in seconds of the first frame
24964
24965 @item INTERLACED
24966 State whether the current frame is interlaced.
24967
24968 @item T
24969 the time in seconds of the current frame
24970
24971 @item POS
24972 original position in the file of the frame, or undefined if undefined
24973 for the current frame
24974
24975 @item PREV_INPTS
24976 The previous input PTS.
24977
24978 @item PREV_INT
24979 previous input time in seconds
24980
24981 @item PREV_OUTPTS
24982 The previous output PTS.
24983
24984 @item PREV_OUTT
24985 previous output time in seconds
24986
24987 @item RTCTIME
24988 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
24989 instead.
24990
24991 @item RTCSTART
24992 The wallclock (RTC) time at the start of the movie in microseconds.
24993
24994 @item TB
24995 The timebase of the input timestamps.
24996
24997 @end table
24998
24999 @subsection Examples
25000
25001 @itemize
25002 @item
25003 Start counting PTS from zero
25004 @example
25005 setpts=PTS-STARTPTS
25006 @end example
25007
25008 @item
25009 Apply fast motion effect:
25010 @example
25011 setpts=0.5*PTS
25012 @end example
25013
25014 @item
25015 Apply slow motion effect:
25016 @example
25017 setpts=2.0*PTS
25018 @end example
25019
25020 @item
25021 Set fixed rate of 25 frames per second:
25022 @example
25023 setpts=N/(25*TB)
25024 @end example
25025
25026 @item
25027 Set fixed rate 25 fps with some jitter:
25028 @example
25029 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
25030 @end example
25031
25032 @item
25033 Apply an offset of 10 seconds to the input PTS:
25034 @example
25035 setpts=PTS+10/TB
25036 @end example
25037
25038 @item
25039 Generate timestamps from a "live source" and rebase onto the current timebase:
25040 @example
25041 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
25042 @end example
25043
25044 @item
25045 Generate timestamps by counting samples:
25046 @example
25047 asetpts=N/SR/TB
25048 @end example
25049
25050 @end itemize
25051
25052 @section setrange
25053
25054 Force color range for the output video frame.
25055
25056 The @code{setrange} filter marks the color range property for the
25057 output frames. It does not change the input frame, but only sets the
25058 corresponding property, which affects how the frame is treated by
25059 following filters.
25060
25061 The filter accepts the following options:
25062
25063 @table @option
25064
25065 @item range
25066 Available values are:
25067
25068 @table @samp
25069 @item auto
25070 Keep the same color range property.
25071
25072 @item unspecified, unknown
25073 Set the color range as unspecified.
25074
25075 @item limited, tv, mpeg
25076 Set the color range as limited.
25077
25078 @item full, pc, jpeg
25079 Set the color range as full.
25080 @end table
25081 @end table
25082
25083 @section settb, asettb
25084
25085 Set the timebase to use for the output frames timestamps.
25086 It is mainly useful for testing timebase configuration.
25087
25088 It accepts the following parameters:
25089
25090 @table @option
25091
25092 @item expr, tb
25093 The expression which is evaluated into the output timebase.
25094
25095 @end table
25096
25097 The value for @option{tb} is an arithmetic expression representing a
25098 rational. The expression can contain the constants "AVTB" (the default
25099 timebase), "intb" (the input timebase) and "sr" (the sample rate,
25100 audio only). Default value is "intb".
25101
25102 @subsection Examples
25103
25104 @itemize
25105 @item
25106 Set the timebase to 1/25:
25107 @example
25108 settb=expr=1/25
25109 @end example
25110
25111 @item
25112 Set the timebase to 1/10:
25113 @example
25114 settb=expr=0.1
25115 @end example
25116
25117 @item
25118 Set the timebase to 1001/1000:
25119 @example
25120 settb=1+0.001
25121 @end example
25122
25123 @item
25124 Set the timebase to 2*intb:
25125 @example
25126 settb=2*intb
25127 @end example
25128
25129 @item
25130 Set the default timebase value:
25131 @example
25132 settb=AVTB
25133 @end example
25134 @end itemize
25135
25136 @section showcqt
25137 Convert input audio to a video output representing frequency spectrum
25138 logarithmically using Brown-Puckette constant Q transform algorithm with
25139 direct frequency domain coefficient calculation (but the transform itself
25140 is not really constant Q, instead the Q factor is actually variable/clamped),
25141 with musical tone scale, from E0 to D#10.
25142
25143 The filter accepts the following options:
25144
25145 @table @option
25146 @item size, s
25147 Specify the video size for the output. It must be even. For the syntax of this option,
25148 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25149 Default value is @code{1920x1080}.
25150
25151 @item fps, rate, r
25152 Set the output frame rate. Default value is @code{25}.
25153
25154 @item bar_h
25155 Set the bargraph height. It must be even. Default value is @code{-1} which
25156 computes the bargraph height automatically.
25157
25158 @item axis_h
25159 Set the axis height. It must be even. Default value is @code{-1} which computes
25160 the axis height automatically.
25161
25162 @item sono_h
25163 Set the sonogram height. It must be even. Default value is @code{-1} which
25164 computes the sonogram height automatically.
25165
25166 @item fullhd
25167 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
25168 instead. Default value is @code{1}.
25169
25170 @item sono_v, volume
25171 Specify the sonogram volume expression. It can contain variables:
25172 @table @option
25173 @item bar_v
25174 the @var{bar_v} evaluated expression
25175 @item frequency, freq, f
25176 the frequency where it is evaluated
25177 @item timeclamp, tc
25178 the value of @var{timeclamp} option
25179 @end table
25180 and functions:
25181 @table @option
25182 @item a_weighting(f)
25183 A-weighting of equal loudness
25184 @item b_weighting(f)
25185 B-weighting of equal loudness
25186 @item c_weighting(f)
25187 C-weighting of equal loudness.
25188 @end table
25189 Default value is @code{16}.
25190
25191 @item bar_v, volume2
25192 Specify the bargraph volume expression. It can contain variables:
25193 @table @option
25194 @item sono_v
25195 the @var{sono_v} evaluated expression
25196 @item frequency, freq, f
25197 the frequency where it is evaluated
25198 @item timeclamp, tc
25199 the value of @var{timeclamp} option
25200 @end table
25201 and functions:
25202 @table @option
25203 @item a_weighting(f)
25204 A-weighting of equal loudness
25205 @item b_weighting(f)
25206 B-weighting of equal loudness
25207 @item c_weighting(f)
25208 C-weighting of equal loudness.
25209 @end table
25210 Default value is @code{sono_v}.
25211
25212 @item sono_g, gamma
25213 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
25214 higher gamma makes the spectrum having more range. Default value is @code{3}.
25215 Acceptable range is @code{[1, 7]}.
25216
25217 @item bar_g, gamma2
25218 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
25219 @code{[1, 7]}.
25220
25221 @item bar_t
25222 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
25223 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
25224
25225 @item timeclamp, tc
25226 Specify the transform timeclamp. At low frequency, there is trade-off between
25227 accuracy in time domain and frequency domain. If timeclamp is lower,
25228 event in time domain is represented more accurately (such as fast bass drum),
25229 otherwise event in frequency domain is represented more accurately
25230 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
25231
25232 @item attack
25233 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
25234 limits future samples by applying asymmetric windowing in time domain, useful
25235 when low latency is required. Accepted range is @code{[0, 1]}.
25236
25237 @item basefreq
25238 Specify the transform base frequency. Default value is @code{20.01523126408007475},
25239 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
25240
25241 @item endfreq
25242 Specify the transform end frequency. Default value is @code{20495.59681441799654},
25243 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
25244
25245 @item coeffclamp
25246 This option is deprecated and ignored.
25247
25248 @item tlength
25249 Specify the transform length in time domain. Use this option to control accuracy
25250 trade-off between time domain and frequency domain at every frequency sample.
25251 It can contain variables:
25252 @table @option
25253 @item frequency, freq, f
25254 the frequency where it is evaluated
25255 @item timeclamp, tc
25256 the value of @var{timeclamp} option.
25257 @end table
25258 Default value is @code{384*tc/(384+tc*f)}.
25259
25260 @item count
25261 Specify the transform count for every video frame. Default value is @code{6}.
25262 Acceptable range is @code{[1, 30]}.
25263
25264 @item fcount
25265 Specify the transform count for every single pixel. Default value is @code{0},
25266 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
25267
25268 @item fontfile
25269 Specify font file for use with freetype to draw the axis. If not specified,
25270 use embedded font. Note that drawing with font file or embedded font is not
25271 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
25272 option instead.
25273
25274 @item font
25275 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
25276 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
25277 escaping.
25278
25279 @item fontcolor
25280 Specify font color expression. This is arithmetic expression that should return
25281 integer value 0xRRGGBB. It can contain variables:
25282 @table @option
25283 @item frequency, freq, f
25284 the frequency where it is evaluated
25285 @item timeclamp, tc
25286 the value of @var{timeclamp} option
25287 @end table
25288 and functions:
25289 @table @option
25290 @item midi(f)
25291 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
25292 @item r(x), g(x), b(x)
25293 red, green, and blue value of intensity x.
25294 @end table
25295 Default value is @code{st(0, (midi(f)-59.5)/12);
25296 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
25297 r(1-ld(1)) + b(ld(1))}.
25298
25299 @item axisfile
25300 Specify image file to draw the axis. This option override @var{fontfile} and
25301 @var{fontcolor} option.
25302
25303 @item axis, text
25304 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
25305 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
25306 Default value is @code{1}.
25307
25308 @item csp
25309 Set colorspace. The accepted values are:
25310 @table @samp
25311 @item unspecified
25312 Unspecified (default)
25313
25314 @item bt709
25315 BT.709
25316
25317 @item fcc
25318 FCC
25319
25320 @item bt470bg
25321 BT.470BG or BT.601-6 625
25322
25323 @item smpte170m
25324 SMPTE-170M or BT.601-6 525
25325
25326 @item smpte240m
25327 SMPTE-240M
25328
25329 @item bt2020ncl
25330 BT.2020 with non-constant luminance
25331
25332 @end table
25333
25334 @item cscheme
25335 Set spectrogram color scheme. This is list of floating point values with format
25336 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
25337 The default is @code{1|0.5|0|0|0.5|1}.
25338
25339 @end table
25340
25341 @subsection Examples
25342
25343 @itemize
25344 @item
25345 Playing audio while showing the spectrum:
25346 @example
25347 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
25348 @end example
25349
25350 @item
25351 Same as above, but with frame rate 30 fps:
25352 @example
25353 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
25354 @end example
25355
25356 @item
25357 Playing at 1280x720:
25358 @example
25359 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
25360 @end example
25361
25362 @item
25363 Disable sonogram display:
25364 @example
25365 sono_h=0
25366 @end example
25367
25368 @item
25369 A1 and its harmonics: A1, A2, (near)E3, A3:
25370 @example
25371 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),
25372                  asplit[a][out1]; [a] showcqt [out0]'
25373 @end example
25374
25375 @item
25376 Same as above, but with more accuracy in frequency domain:
25377 @example
25378 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),
25379                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
25380 @end example
25381
25382 @item
25383 Custom volume:
25384 @example
25385 bar_v=10:sono_v=bar_v*a_weighting(f)
25386 @end example
25387
25388 @item
25389 Custom gamma, now spectrum is linear to the amplitude.
25390 @example
25391 bar_g=2:sono_g=2
25392 @end example
25393
25394 @item
25395 Custom tlength equation:
25396 @example
25397 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)))'
25398 @end example
25399
25400 @item
25401 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
25402 @example
25403 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
25404 @end example
25405
25406 @item
25407 Custom font using fontconfig:
25408 @example
25409 font='Courier New,Monospace,mono|bold'
25410 @end example
25411
25412 @item
25413 Custom frequency range with custom axis using image file:
25414 @example
25415 axisfile=myaxis.png:basefreq=40:endfreq=10000
25416 @end example
25417 @end itemize
25418
25419 @section showfreqs
25420
25421 Convert input audio to video output representing the audio power spectrum.
25422 Audio amplitude is on Y-axis while frequency is on X-axis.
25423
25424 The filter accepts the following options:
25425
25426 @table @option
25427 @item size, s
25428 Specify size of video. For the syntax of this option, check the
25429 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25430 Default is @code{1024x512}.
25431
25432 @item mode
25433 Set display mode.
25434 This set how each frequency bin will be represented.
25435
25436 It accepts the following values:
25437 @table @samp
25438 @item line
25439 @item bar
25440 @item dot
25441 @end table
25442 Default is @code{bar}.
25443
25444 @item ascale
25445 Set amplitude scale.
25446
25447 It accepts the following values:
25448 @table @samp
25449 @item lin
25450 Linear scale.
25451
25452 @item sqrt
25453 Square root scale.
25454
25455 @item cbrt
25456 Cubic root scale.
25457
25458 @item log
25459 Logarithmic scale.
25460 @end table
25461 Default is @code{log}.
25462
25463 @item fscale
25464 Set frequency scale.
25465
25466 It accepts the following values:
25467 @table @samp
25468 @item lin
25469 Linear scale.
25470
25471 @item log
25472 Logarithmic scale.
25473
25474 @item rlog
25475 Reverse logarithmic scale.
25476 @end table
25477 Default is @code{lin}.
25478
25479 @item win_size
25480 Set window size. Allowed range is from 16 to 65536.
25481
25482 Default is @code{2048}
25483
25484 @item win_func
25485 Set windowing function.
25486
25487 It accepts the following values:
25488 @table @samp
25489 @item rect
25490 @item bartlett
25491 @item hanning
25492 @item hamming
25493 @item blackman
25494 @item welch
25495 @item flattop
25496 @item bharris
25497 @item bnuttall
25498 @item bhann
25499 @item sine
25500 @item nuttall
25501 @item lanczos
25502 @item gauss
25503 @item tukey
25504 @item dolph
25505 @item cauchy
25506 @item parzen
25507 @item poisson
25508 @item bohman
25509 @end table
25510 Default is @code{hanning}.
25511
25512 @item overlap
25513 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25514 which means optimal overlap for selected window function will be picked.
25515
25516 @item averaging
25517 Set time averaging. Setting this to 0 will display current maximal peaks.
25518 Default is @code{1}, which means time averaging is disabled.
25519
25520 @item colors
25521 Specify list of colors separated by space or by '|' which will be used to
25522 draw channel frequencies. Unrecognized or missing colors will be replaced
25523 by white color.
25524
25525 @item cmode
25526 Set channel display mode.
25527
25528 It accepts the following values:
25529 @table @samp
25530 @item combined
25531 @item separate
25532 @end table
25533 Default is @code{combined}.
25534
25535 @item minamp
25536 Set minimum amplitude used in @code{log} amplitude scaler.
25537
25538 @item data
25539 Set data display mode.
25540
25541 It accepts the following values:
25542 @table @samp
25543 @item magnitude
25544 @item phase
25545 @item delay
25546 @end table
25547 Default is @code{magnitude}.
25548 @end table
25549
25550 @section showspatial
25551
25552 Convert stereo input audio to a video output, representing the spatial relationship
25553 between two channels.
25554
25555 The filter accepts the following options:
25556
25557 @table @option
25558 @item size, s
25559 Specify the video size for the output. For the syntax of this option, check the
25560 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25561 Default value is @code{512x512}.
25562
25563 @item win_size
25564 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
25565
25566 @item win_func
25567 Set window function.
25568
25569 It accepts the following values:
25570 @table @samp
25571 @item rect
25572 @item bartlett
25573 @item hann
25574 @item hanning
25575 @item hamming
25576 @item blackman
25577 @item welch
25578 @item flattop
25579 @item bharris
25580 @item bnuttall
25581 @item bhann
25582 @item sine
25583 @item nuttall
25584 @item lanczos
25585 @item gauss
25586 @item tukey
25587 @item dolph
25588 @item cauchy
25589 @item parzen
25590 @item poisson
25591 @item bohman
25592 @end table
25593
25594 Default value is @code{hann}.
25595
25596 @item overlap
25597 Set ratio of overlap window. Default value is @code{0.5}.
25598 When value is @code{1} overlap is set to recommended size for specific
25599 window function currently used.
25600 @end table
25601
25602 @anchor{showspectrum}
25603 @section showspectrum
25604
25605 Convert input audio to a video output, representing the audio frequency
25606 spectrum.
25607
25608 The filter accepts the following options:
25609
25610 @table @option
25611 @item size, s
25612 Specify the video size for the output. For the syntax of this option, check the
25613 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25614 Default value is @code{640x512}.
25615
25616 @item slide
25617 Specify how the spectrum should slide along the window.
25618
25619 It accepts the following values:
25620 @table @samp
25621 @item replace
25622 the samples start again on the left when they reach the right
25623 @item scroll
25624 the samples scroll from right to left
25625 @item fullframe
25626 frames are only produced when the samples reach the right
25627 @item rscroll
25628 the samples scroll from left to right
25629 @end table
25630
25631 Default value is @code{replace}.
25632
25633 @item mode
25634 Specify display mode.
25635
25636 It accepts the following values:
25637 @table @samp
25638 @item combined
25639 all channels are displayed in the same row
25640 @item separate
25641 all channels are displayed in separate rows
25642 @end table
25643
25644 Default value is @samp{combined}.
25645
25646 @item color
25647 Specify display color mode.
25648
25649 It accepts the following values:
25650 @table @samp
25651 @item channel
25652 each channel is displayed in a separate color
25653 @item intensity
25654 each channel is displayed using the same color scheme
25655 @item rainbow
25656 each channel is displayed using the rainbow color scheme
25657 @item moreland
25658 each channel is displayed using the moreland color scheme
25659 @item nebulae
25660 each channel is displayed using the nebulae color scheme
25661 @item fire
25662 each channel is displayed using the fire color scheme
25663 @item fiery
25664 each channel is displayed using the fiery color scheme
25665 @item fruit
25666 each channel is displayed using the fruit color scheme
25667 @item cool
25668 each channel is displayed using the cool color scheme
25669 @item magma
25670 each channel is displayed using the magma color scheme
25671 @item green
25672 each channel is displayed using the green color scheme
25673 @item viridis
25674 each channel is displayed using the viridis color scheme
25675 @item plasma
25676 each channel is displayed using the plasma color scheme
25677 @item cividis
25678 each channel is displayed using the cividis color scheme
25679 @item terrain
25680 each channel is displayed using the terrain color scheme
25681 @end table
25682
25683 Default value is @samp{channel}.
25684
25685 @item scale
25686 Specify scale used for calculating intensity color values.
25687
25688 It accepts the following values:
25689 @table @samp
25690 @item lin
25691 linear
25692 @item sqrt
25693 square root, default
25694 @item cbrt
25695 cubic root
25696 @item log
25697 logarithmic
25698 @item 4thrt
25699 4th root
25700 @item 5thrt
25701 5th root
25702 @end table
25703
25704 Default value is @samp{sqrt}.
25705
25706 @item fscale
25707 Specify frequency scale.
25708
25709 It accepts the following values:
25710 @table @samp
25711 @item lin
25712 linear
25713 @item log
25714 logarithmic
25715 @end table
25716
25717 Default value is @samp{lin}.
25718
25719 @item saturation
25720 Set saturation modifier for displayed colors. Negative values provide
25721 alternative color scheme. @code{0} is no saturation at all.
25722 Saturation must be in [-10.0, 10.0] range.
25723 Default value is @code{1}.
25724
25725 @item win_func
25726 Set window function.
25727
25728 It accepts the following values:
25729 @table @samp
25730 @item rect
25731 @item bartlett
25732 @item hann
25733 @item hanning
25734 @item hamming
25735 @item blackman
25736 @item welch
25737 @item flattop
25738 @item bharris
25739 @item bnuttall
25740 @item bhann
25741 @item sine
25742 @item nuttall
25743 @item lanczos
25744 @item gauss
25745 @item tukey
25746 @item dolph
25747 @item cauchy
25748 @item parzen
25749 @item poisson
25750 @item bohman
25751 @end table
25752
25753 Default value is @code{hann}.
25754
25755 @item orientation
25756 Set orientation of time vs frequency axis. Can be @code{vertical} or
25757 @code{horizontal}. Default is @code{vertical}.
25758
25759 @item overlap
25760 Set ratio of overlap window. Default value is @code{0}.
25761 When value is @code{1} overlap is set to recommended size for specific
25762 window function currently used.
25763
25764 @item gain
25765 Set scale gain for calculating intensity color values.
25766 Default value is @code{1}.
25767
25768 @item data
25769 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
25770
25771 @item rotation
25772 Set color rotation, must be in [-1.0, 1.0] range.
25773 Default value is @code{0}.
25774
25775 @item start
25776 Set start frequency from which to display spectrogram. Default is @code{0}.
25777
25778 @item stop
25779 Set stop frequency to which to display spectrogram. Default is @code{0}.
25780
25781 @item fps
25782 Set upper frame rate limit. Default is @code{auto}, unlimited.
25783
25784 @item legend
25785 Draw time and frequency axes and legends. Default is disabled.
25786 @end table
25787
25788 The usage is very similar to the showwaves filter; see the examples in that
25789 section.
25790
25791 @subsection Examples
25792
25793 @itemize
25794 @item
25795 Large window with logarithmic color scaling:
25796 @example
25797 showspectrum=s=1280x480:scale=log
25798 @end example
25799
25800 @item
25801 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
25802 @example
25803 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
25804              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
25805 @end example
25806 @end itemize
25807
25808 @section showspectrumpic
25809
25810 Convert input audio to a single video frame, representing the audio frequency
25811 spectrum.
25812
25813 The filter accepts the following options:
25814
25815 @table @option
25816 @item size, s
25817 Specify the video size for the output. For the syntax of this option, check the
25818 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25819 Default value is @code{4096x2048}.
25820
25821 @item mode
25822 Specify display mode.
25823
25824 It accepts the following values:
25825 @table @samp
25826 @item combined
25827 all channels are displayed in the same row
25828 @item separate
25829 all channels are displayed in separate rows
25830 @end table
25831 Default value is @samp{combined}.
25832
25833 @item color
25834 Specify display color mode.
25835
25836 It accepts the following values:
25837 @table @samp
25838 @item channel
25839 each channel is displayed in a separate color
25840 @item intensity
25841 each channel is displayed using the same color scheme
25842 @item rainbow
25843 each channel is displayed using the rainbow color scheme
25844 @item moreland
25845 each channel is displayed using the moreland color scheme
25846 @item nebulae
25847 each channel is displayed using the nebulae color scheme
25848 @item fire
25849 each channel is displayed using the fire color scheme
25850 @item fiery
25851 each channel is displayed using the fiery color scheme
25852 @item fruit
25853 each channel is displayed using the fruit color scheme
25854 @item cool
25855 each channel is displayed using the cool color scheme
25856 @item magma
25857 each channel is displayed using the magma color scheme
25858 @item green
25859 each channel is displayed using the green color scheme
25860 @item viridis
25861 each channel is displayed using the viridis color scheme
25862 @item plasma
25863 each channel is displayed using the plasma color scheme
25864 @item cividis
25865 each channel is displayed using the cividis color scheme
25866 @item terrain
25867 each channel is displayed using the terrain color scheme
25868 @end table
25869 Default value is @samp{intensity}.
25870
25871 @item scale
25872 Specify scale used for calculating intensity color values.
25873
25874 It accepts the following values:
25875 @table @samp
25876 @item lin
25877 linear
25878 @item sqrt
25879 square root, default
25880 @item cbrt
25881 cubic root
25882 @item log
25883 logarithmic
25884 @item 4thrt
25885 4th root
25886 @item 5thrt
25887 5th root
25888 @end table
25889 Default value is @samp{log}.
25890
25891 @item fscale
25892 Specify frequency scale.
25893
25894 It accepts the following values:
25895 @table @samp
25896 @item lin
25897 linear
25898 @item log
25899 logarithmic
25900 @end table
25901
25902 Default value is @samp{lin}.
25903
25904 @item saturation
25905 Set saturation modifier for displayed colors. Negative values provide
25906 alternative color scheme. @code{0} is no saturation at all.
25907 Saturation must be in [-10.0, 10.0] range.
25908 Default value is @code{1}.
25909
25910 @item win_func
25911 Set window function.
25912
25913 It accepts the following values:
25914 @table @samp
25915 @item rect
25916 @item bartlett
25917 @item hann
25918 @item hanning
25919 @item hamming
25920 @item blackman
25921 @item welch
25922 @item flattop
25923 @item bharris
25924 @item bnuttall
25925 @item bhann
25926 @item sine
25927 @item nuttall
25928 @item lanczos
25929 @item gauss
25930 @item tukey
25931 @item dolph
25932 @item cauchy
25933 @item parzen
25934 @item poisson
25935 @item bohman
25936 @end table
25937 Default value is @code{hann}.
25938
25939 @item orientation
25940 Set orientation of time vs frequency axis. Can be @code{vertical} or
25941 @code{horizontal}. Default is @code{vertical}.
25942
25943 @item gain
25944 Set scale gain for calculating intensity color values.
25945 Default value is @code{1}.
25946
25947 @item legend
25948 Draw time and frequency axes and legends. Default is enabled.
25949
25950 @item rotation
25951 Set color rotation, must be in [-1.0, 1.0] range.
25952 Default value is @code{0}.
25953
25954 @item start
25955 Set start frequency from which to display spectrogram. Default is @code{0}.
25956
25957 @item stop
25958 Set stop frequency to which to display spectrogram. Default is @code{0}.
25959 @end table
25960
25961 @subsection Examples
25962
25963 @itemize
25964 @item
25965 Extract an audio spectrogram of a whole audio track
25966 in a 1024x1024 picture using @command{ffmpeg}:
25967 @example
25968 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
25969 @end example
25970 @end itemize
25971
25972 @section showvolume
25973
25974 Convert input audio volume to a video output.
25975
25976 The filter accepts the following options:
25977
25978 @table @option
25979 @item rate, r
25980 Set video rate.
25981
25982 @item b
25983 Set border width, allowed range is [0, 5]. Default is 1.
25984
25985 @item w
25986 Set channel width, allowed range is [80, 8192]. Default is 400.
25987
25988 @item h
25989 Set channel height, allowed range is [1, 900]. Default is 20.
25990
25991 @item f
25992 Set fade, allowed range is [0, 1]. Default is 0.95.
25993
25994 @item c
25995 Set volume color expression.
25996
25997 The expression can use the following variables:
25998
25999 @table @option
26000 @item VOLUME
26001 Current max volume of channel in dB.
26002
26003 @item PEAK
26004 Current peak.
26005
26006 @item CHANNEL
26007 Current channel number, starting from 0.
26008 @end table
26009
26010 @item t
26011 If set, displays channel names. Default is enabled.
26012
26013 @item v
26014 If set, displays volume values. Default is enabled.
26015
26016 @item o
26017 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
26018 default is @code{h}.
26019
26020 @item s
26021 Set step size, allowed range is [0, 5]. Default is 0, which means
26022 step is disabled.
26023
26024 @item p
26025 Set background opacity, allowed range is [0, 1]. Default is 0.
26026
26027 @item m
26028 Set metering mode, can be peak: @code{p} or rms: @code{r},
26029 default is @code{p}.
26030
26031 @item ds
26032 Set display scale, can be linear: @code{lin} or log: @code{log},
26033 default is @code{lin}.
26034
26035 @item dm
26036 In second.
26037 If set to > 0., display a line for the max level
26038 in the previous seconds.
26039 default is disabled: @code{0.}
26040
26041 @item dmc
26042 The color of the max line. Use when @code{dm} option is set to > 0.
26043 default is: @code{orange}
26044 @end table
26045
26046 @section showwaves
26047
26048 Convert input audio to a video output, representing the samples waves.
26049
26050 The filter accepts the following options:
26051
26052 @table @option
26053 @item size, s
26054 Specify the video size for the output. For the syntax of this option, check the
26055 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26056 Default value is @code{600x240}.
26057
26058 @item mode
26059 Set display mode.
26060
26061 Available values are:
26062 @table @samp
26063 @item point
26064 Draw a point for each sample.
26065
26066 @item line
26067 Draw a vertical line for each sample.
26068
26069 @item p2p
26070 Draw a point for each sample and a line between them.
26071
26072 @item cline
26073 Draw a centered vertical line for each sample.
26074 @end table
26075
26076 Default value is @code{point}.
26077
26078 @item n
26079 Set the number of samples which are printed on the same column. A
26080 larger value will decrease the frame rate. Must be a positive
26081 integer. This option can be set only if the value for @var{rate}
26082 is not explicitly specified.
26083
26084 @item rate, r
26085 Set the (approximate) output frame rate. This is done by setting the
26086 option @var{n}. Default value is "25".
26087
26088 @item split_channels
26089 Set if channels should be drawn separately or overlap. Default value is 0.
26090
26091 @item colors
26092 Set colors separated by '|' which are going to be used for drawing of each channel.
26093
26094 @item scale
26095 Set amplitude scale.
26096
26097 Available values are:
26098 @table @samp
26099 @item lin
26100 Linear.
26101
26102 @item log
26103 Logarithmic.
26104
26105 @item sqrt
26106 Square root.
26107
26108 @item cbrt
26109 Cubic root.
26110 @end table
26111
26112 Default is linear.
26113
26114 @item draw
26115 Set the draw mode. This is mostly useful to set for high @var{n}.
26116
26117 Available values are:
26118 @table @samp
26119 @item scale
26120 Scale pixel values for each drawn sample.
26121
26122 @item full
26123 Draw every sample directly.
26124 @end table
26125
26126 Default value is @code{scale}.
26127 @end table
26128
26129 @subsection Examples
26130
26131 @itemize
26132 @item
26133 Output the input file audio and the corresponding video representation
26134 at the same time:
26135 @example
26136 amovie=a.mp3,asplit[out0],showwaves[out1]
26137 @end example
26138
26139 @item
26140 Create a synthetic signal and show it with showwaves, forcing a
26141 frame rate of 30 frames per second:
26142 @example
26143 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
26144 @end example
26145 @end itemize
26146
26147 @section showwavespic
26148
26149 Convert input audio to a single video frame, representing the samples waves.
26150
26151 The filter accepts the following options:
26152
26153 @table @option
26154 @item size, s
26155 Specify the video size for the output. For the syntax of this option, check the
26156 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26157 Default value is @code{600x240}.
26158
26159 @item split_channels
26160 Set if channels should be drawn separately or overlap. Default value is 0.
26161
26162 @item colors
26163 Set colors separated by '|' which are going to be used for drawing of each channel.
26164
26165 @item scale
26166 Set amplitude scale.
26167
26168 Available values are:
26169 @table @samp
26170 @item lin
26171 Linear.
26172
26173 @item log
26174 Logarithmic.
26175
26176 @item sqrt
26177 Square root.
26178
26179 @item cbrt
26180 Cubic root.
26181 @end table
26182
26183 Default is linear.
26184
26185 @item draw
26186 Set the draw mode.
26187
26188 Available values are:
26189 @table @samp
26190 @item scale
26191 Scale pixel values for each drawn sample.
26192
26193 @item full
26194 Draw every sample directly.
26195 @end table
26196
26197 Default value is @code{scale}.
26198
26199 @item filter
26200 Set the filter mode.
26201
26202 Available values are:
26203 @table @samp
26204 @item average
26205 Use average samples values for each drawn sample.
26206
26207 @item peak
26208 Use peak samples values for each drawn sample.
26209 @end table
26210
26211 Default value is @code{average}.
26212 @end table
26213
26214 @subsection Examples
26215
26216 @itemize
26217 @item
26218 Extract a channel split representation of the wave form of a whole audio track
26219 in a 1024x800 picture using @command{ffmpeg}:
26220 @example
26221 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
26222 @end example
26223 @end itemize
26224
26225 @section sidedata, asidedata
26226
26227 Delete frame side data, or select frames based on it.
26228
26229 This filter accepts the following options:
26230
26231 @table @option
26232 @item mode
26233 Set mode of operation of the filter.
26234
26235 Can be one of the following:
26236
26237 @table @samp
26238 @item select
26239 Select every frame with side data of @code{type}.
26240
26241 @item delete
26242 Delete side data of @code{type}. If @code{type} is not set, delete all side
26243 data in the frame.
26244
26245 @end table
26246
26247 @item type
26248 Set side data type used with all modes. Must be set for @code{select} mode. For
26249 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
26250 in @file{libavutil/frame.h}. For example, to choose
26251 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
26252
26253 @end table
26254
26255 @section spectrumsynth
26256
26257 Synthesize audio from 2 input video spectrums, first input stream represents
26258 magnitude across time and second represents phase across time.
26259 The filter will transform from frequency domain as displayed in videos back
26260 to time domain as presented in audio output.
26261
26262 This filter is primarily created for reversing processed @ref{showspectrum}
26263 filter outputs, but can synthesize sound from other spectrograms too.
26264 But in such case results are going to be poor if the phase data is not
26265 available, because in such cases phase data need to be recreated, usually
26266 it's just recreated from random noise.
26267 For best results use gray only output (@code{channel} color mode in
26268 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
26269 @code{lin} scale for phase video. To produce phase, for 2nd video, use
26270 @code{data} option. Inputs videos should generally use @code{fullframe}
26271 slide mode as that saves resources needed for decoding video.
26272
26273 The filter accepts the following options:
26274
26275 @table @option
26276 @item sample_rate
26277 Specify sample rate of output audio, the sample rate of audio from which
26278 spectrum was generated may differ.
26279
26280 @item channels
26281 Set number of channels represented in input video spectrums.
26282
26283 @item scale
26284 Set scale which was used when generating magnitude input spectrum.
26285 Can be @code{lin} or @code{log}. Default is @code{log}.
26286
26287 @item slide
26288 Set slide which was used when generating inputs spectrums.
26289 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
26290 Default is @code{fullframe}.
26291
26292 @item win_func
26293 Set window function used for resynthesis.
26294
26295 @item overlap
26296 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
26297 which means optimal overlap for selected window function will be picked.
26298
26299 @item orientation
26300 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
26301 Default is @code{vertical}.
26302 @end table
26303
26304 @subsection Examples
26305
26306 @itemize
26307 @item
26308 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
26309 then resynthesize videos back to audio with spectrumsynth:
26310 @example
26311 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
26312 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
26313 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
26314 @end example
26315 @end itemize
26316
26317 @section split, asplit
26318
26319 Split input into several identical outputs.
26320
26321 @code{asplit} works with audio input, @code{split} with video.
26322
26323 The filter accepts a single parameter which specifies the number of outputs. If
26324 unspecified, it defaults to 2.
26325
26326 @subsection Examples
26327
26328 @itemize
26329 @item
26330 Create two separate outputs from the same input:
26331 @example
26332 [in] split [out0][out1]
26333 @end example
26334
26335 @item
26336 To create 3 or more outputs, you need to specify the number of
26337 outputs, like in:
26338 @example
26339 [in] asplit=3 [out0][out1][out2]
26340 @end example
26341
26342 @item
26343 Create two separate outputs from the same input, one cropped and
26344 one padded:
26345 @example
26346 [in] split [splitout1][splitout2];
26347 [splitout1] crop=100:100:0:0    [cropout];
26348 [splitout2] pad=200:200:100:100 [padout];
26349 @end example
26350
26351 @item
26352 Create 5 copies of the input audio with @command{ffmpeg}:
26353 @example
26354 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
26355 @end example
26356 @end itemize
26357
26358 @section zmq, azmq
26359
26360 Receive commands sent through a libzmq client, and forward them to
26361 filters in the filtergraph.
26362
26363 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
26364 must be inserted between two video filters, @code{azmq} between two
26365 audio filters. Both are capable to send messages to any filter type.
26366
26367 To enable these filters you need to install the libzmq library and
26368 headers and configure FFmpeg with @code{--enable-libzmq}.
26369
26370 For more information about libzmq see:
26371 @url{http://www.zeromq.org/}
26372
26373 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
26374 receives messages sent through a network interface defined by the
26375 @option{bind_address} (or the abbreviation "@option{b}") option.
26376 Default value of this option is @file{tcp://localhost:5555}. You may
26377 want to alter this value to your needs, but do not forget to escape any
26378 ':' signs (see @ref{filtergraph escaping}).
26379
26380 The received message must be in the form:
26381 @example
26382 @var{TARGET} @var{COMMAND} [@var{ARG}]
26383 @end example
26384
26385 @var{TARGET} specifies the target of the command, usually the name of
26386 the filter class or a specific filter instance name. The default
26387 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
26388 but you can override this by using the @samp{filter_name@@id} syntax
26389 (see @ref{Filtergraph syntax}).
26390
26391 @var{COMMAND} specifies the name of the command for the target filter.
26392
26393 @var{ARG} is optional and specifies the optional argument list for the
26394 given @var{COMMAND}.
26395
26396 Upon reception, the message is processed and the corresponding command
26397 is injected into the filtergraph. Depending on the result, the filter
26398 will send a reply to the client, adopting the format:
26399 @example
26400 @var{ERROR_CODE} @var{ERROR_REASON}
26401 @var{MESSAGE}
26402 @end example
26403
26404 @var{MESSAGE} is optional.
26405
26406 @subsection Examples
26407
26408 Look at @file{tools/zmqsend} for an example of a zmq client which can
26409 be used to send commands processed by these filters.
26410
26411 Consider the following filtergraph generated by @command{ffplay}.
26412 In this example the last overlay filter has an instance name. All other
26413 filters will have default instance names.
26414
26415 @example
26416 ffplay -dumpgraph 1 -f lavfi "
26417 color=s=100x100:c=red  [l];
26418 color=s=100x100:c=blue [r];
26419 nullsrc=s=200x100, zmq [bg];
26420 [bg][l]   overlay     [bg+l];
26421 [bg+l][r] overlay@@my=x=100 "
26422 @end example
26423
26424 To change the color of the left side of the video, the following
26425 command can be used:
26426 @example
26427 echo Parsed_color_0 c yellow | tools/zmqsend
26428 @end example
26429
26430 To change the right side:
26431 @example
26432 echo Parsed_color_1 c pink | tools/zmqsend
26433 @end example
26434
26435 To change the position of the right side:
26436 @example
26437 echo overlay@@my x 150 | tools/zmqsend
26438 @end example
26439
26440
26441 @c man end MULTIMEDIA FILTERS
26442
26443 @chapter Multimedia Sources
26444 @c man begin MULTIMEDIA SOURCES
26445
26446 Below is a description of the currently available multimedia sources.
26447
26448 @section amovie
26449
26450 This is the same as @ref{movie} source, except it selects an audio
26451 stream by default.
26452
26453 @anchor{movie}
26454 @section movie
26455
26456 Read audio and/or video stream(s) from a movie container.
26457
26458 It accepts the following parameters:
26459
26460 @table @option
26461 @item filename
26462 The name of the resource to read (not necessarily a file; it can also be a
26463 device or a stream accessed through some protocol).
26464
26465 @item format_name, f
26466 Specifies the format assumed for the movie to read, and can be either
26467 the name of a container or an input device. If not specified, the
26468 format is guessed from @var{movie_name} or by probing.
26469
26470 @item seek_point, sp
26471 Specifies the seek point in seconds. The frames will be output
26472 starting from this seek point. The parameter is evaluated with
26473 @code{av_strtod}, so the numerical value may be suffixed by an IS
26474 postfix. The default value is "0".
26475
26476 @item streams, s
26477 Specifies the streams to read. Several streams can be specified,
26478 separated by "+". The source will then have as many outputs, in the
26479 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
26480 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
26481 respectively the default (best suited) video and audio stream. Default
26482 is "dv", or "da" if the filter is called as "amovie".
26483
26484 @item stream_index, si
26485 Specifies the index of the video stream to read. If the value is -1,
26486 the most suitable video stream will be automatically selected. The default
26487 value is "-1". Deprecated. If the filter is called "amovie", it will select
26488 audio instead of video.
26489
26490 @item loop
26491 Specifies how many times to read the stream in sequence.
26492 If the value is 0, the stream will be looped infinitely.
26493 Default value is "1".
26494
26495 Note that when the movie is looped the source timestamps are not
26496 changed, so it will generate non monotonically increasing timestamps.
26497
26498 @item discontinuity
26499 Specifies the time difference between frames above which the point is
26500 considered a timestamp discontinuity which is removed by adjusting the later
26501 timestamps.
26502 @end table
26503
26504 It allows overlaying a second video on top of the main input of
26505 a filtergraph, as shown in this graph:
26506 @example
26507 input -----------> deltapts0 --> overlay --> output
26508                                     ^
26509                                     |
26510 movie --> scale--> deltapts1 -------+
26511 @end example
26512 @subsection Examples
26513
26514 @itemize
26515 @item
26516 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
26517 on top of the input labelled "in":
26518 @example
26519 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
26520 [in] setpts=PTS-STARTPTS [main];
26521 [main][over] overlay=16:16 [out]
26522 @end example
26523
26524 @item
26525 Read from a video4linux2 device, and overlay it on top of the input
26526 labelled "in":
26527 @example
26528 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
26529 [in] setpts=PTS-STARTPTS [main];
26530 [main][over] overlay=16:16 [out]
26531 @end example
26532
26533 @item
26534 Read the first video stream and the audio stream with id 0x81 from
26535 dvd.vob; the video is connected to the pad named "video" and the audio is
26536 connected to the pad named "audio":
26537 @example
26538 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
26539 @end example
26540 @end itemize
26541
26542 @subsection Commands
26543
26544 Both movie and amovie support the following commands:
26545 @table @option
26546 @item seek
26547 Perform seek using "av_seek_frame".
26548 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
26549 @itemize
26550 @item
26551 @var{stream_index}: If stream_index is -1, a default
26552 stream is selected, and @var{timestamp} is automatically converted
26553 from AV_TIME_BASE units to the stream specific time_base.
26554 @item
26555 @var{timestamp}: Timestamp in AVStream.time_base units
26556 or, if no stream is specified, in AV_TIME_BASE units.
26557 @item
26558 @var{flags}: Flags which select direction and seeking mode.
26559 @end itemize
26560
26561 @item get_duration
26562 Get movie duration in AV_TIME_BASE units.
26563
26564 @end table
26565
26566 @c man end MULTIMEDIA SOURCES