]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avfilter/af_crystalizer: improve filter description
[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 threshold
2458 Set threshold from where to start clipping. Default value is 0dB or 1.
2459
2460 @item output
2461 Set gain applied to output. Default value is 0dB or 1.
2462
2463 @item param
2464 Set additional parameter which controls sigmoid function.
2465
2466 @item oversample
2467 Set oversampling factor.
2468 @end table
2469
2470 @subsection Commands
2471
2472 This filter supports the all above options as @ref{commands}.
2473
2474 @section asr
2475 Automatic Speech Recognition
2476
2477 This filter uses PocketSphinx for speech recognition. To enable
2478 compilation of this filter, you need to configure FFmpeg with
2479 @code{--enable-pocketsphinx}.
2480
2481 It accepts the following options:
2482
2483 @table @option
2484 @item rate
2485 Set sampling rate of input audio. Defaults is @code{16000}.
2486 This need to match speech models, otherwise one will get poor results.
2487
2488 @item hmm
2489 Set dictionary containing acoustic model files.
2490
2491 @item dict
2492 Set pronunciation dictionary.
2493
2494 @item lm
2495 Set language model file.
2496
2497 @item lmctl
2498 Set language model set.
2499
2500 @item lmname
2501 Set which language model to use.
2502
2503 @item logfn
2504 Set output for log messages.
2505 @end table
2506
2507 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2508
2509 @anchor{astats}
2510 @section astats
2511
2512 Display time domain statistical information about the audio channels.
2513 Statistics are calculated and displayed for each audio channel and,
2514 where applicable, an overall figure is also given.
2515
2516 It accepts the following option:
2517 @table @option
2518 @item length
2519 Short window length in seconds, used for peak and trough RMS measurement.
2520 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2521
2522 @item metadata
2523
2524 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2525 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2526 disabled.
2527
2528 Available keys for each channel are:
2529 DC_offset
2530 Min_level
2531 Max_level
2532 Min_difference
2533 Max_difference
2534 Mean_difference
2535 RMS_difference
2536 Peak_level
2537 RMS_peak
2538 RMS_trough
2539 Crest_factor
2540 Flat_factor
2541 Peak_count
2542 Noise_floor
2543 Noise_floor_count
2544 Bit_depth
2545 Dynamic_range
2546 Zero_crossings
2547 Zero_crossings_rate
2548 Number_of_NaNs
2549 Number_of_Infs
2550 Number_of_denormals
2551
2552 and for Overall:
2553 DC_offset
2554 Min_level
2555 Max_level
2556 Min_difference
2557 Max_difference
2558 Mean_difference
2559 RMS_difference
2560 Peak_level
2561 RMS_level
2562 RMS_peak
2563 RMS_trough
2564 Flat_factor
2565 Peak_count
2566 Noise_floor
2567 Noise_floor_count
2568 Bit_depth
2569 Number_of_samples
2570 Number_of_NaNs
2571 Number_of_Infs
2572 Number_of_denormals
2573
2574 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2575 this @code{lavfi.astats.Overall.Peak_count}.
2576
2577 For description what each key means read below.
2578
2579 @item reset
2580 Set number of frame after which stats are going to be recalculated.
2581 Default is disabled.
2582
2583 @item measure_perchannel
2584 Select the entries which need to be measured per channel. The metadata keys can
2585 be used as flags, default is @option{all} which measures everything.
2586 @option{none} disables all per channel measurement.
2587
2588 @item measure_overall
2589 Select the entries which need to be measured overall. The metadata keys can
2590 be used as flags, default is @option{all} which measures everything.
2591 @option{none} disables all overall measurement.
2592
2593 @end table
2594
2595 A description of each shown parameter follows:
2596
2597 @table @option
2598 @item DC offset
2599 Mean amplitude displacement from zero.
2600
2601 @item Min level
2602 Minimal sample level.
2603
2604 @item Max level
2605 Maximal sample level.
2606
2607 @item Min difference
2608 Minimal difference between two consecutive samples.
2609
2610 @item Max difference
2611 Maximal difference between two consecutive samples.
2612
2613 @item Mean difference
2614 Mean difference between two consecutive samples.
2615 The average of each difference between two consecutive samples.
2616
2617 @item RMS difference
2618 Root Mean Square difference between two consecutive samples.
2619
2620 @item Peak level dB
2621 @item RMS level dB
2622 Standard peak and RMS level measured in dBFS.
2623
2624 @item RMS peak dB
2625 @item RMS trough dB
2626 Peak and trough values for RMS level measured over a short window.
2627
2628 @item Crest factor
2629 Standard ratio of peak to RMS level (note: not in dB).
2630
2631 @item Flat factor
2632 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2633 (i.e. either @var{Min level} or @var{Max level}).
2634
2635 @item Peak count
2636 Number of occasions (not the number of samples) that the signal attained either
2637 @var{Min level} or @var{Max level}.
2638
2639 @item Noise floor dB
2640 Minimum local peak measured in dBFS over a short window.
2641
2642 @item Noise floor count
2643 Number of occasions (not the number of samples) that the signal attained
2644 @var{Noise floor}.
2645
2646 @item Bit depth
2647 Overall bit depth of audio. Number of bits used for each sample.
2648
2649 @item Dynamic range
2650 Measured dynamic range of audio in dB.
2651
2652 @item Zero crossings
2653 Number of points where the waveform crosses the zero level axis.
2654
2655 @item Zero crossings rate
2656 Rate of Zero crossings and number of audio samples.
2657 @end table
2658
2659 @section asubboost
2660 Boost subwoofer frequencies.
2661
2662 The filter accepts the following options:
2663
2664 @table @option
2665 @item dry
2666 Set dry gain, how much of original signal is kept. Allowed range is from 0 to 1.
2667 Default value is 0.7.
2668
2669 @item wet
2670 Set wet gain, how much of filtered signal is kept. Allowed range is from 0 to 1.
2671 Default value is 0.7.
2672
2673 @item decay
2674 Set delay line decay gain value. Allowed range is from 0 to 1.
2675 Default value is 0.7.
2676
2677 @item feedback
2678 Set delay line feedback gain value. Allowed range is from 0 to 1.
2679 Default value is 0.9.
2680
2681 @item cutoff
2682 Set cutoff frequency in Hertz. Allowed range is 50 to 900.
2683 Default value is 100.
2684
2685 @item slope
2686 Set slope amount for cutoff frequency. Allowed range is 0.0001 to 1.
2687 Default value is 0.5.
2688
2689 @item delay
2690 Set delay. Allowed range is from 1 to 100.
2691 Default value is 20.
2692 @end table
2693
2694 @subsection Commands
2695
2696 This filter supports the all above options as @ref{commands}.
2697
2698 @section asubcut
2699 Cut subwoofer frequencies.
2700
2701 This filter allows to set custom, steeper
2702 roll off than highpass filter, and thus is able to more attenuate
2703 frequency content in stop-band.
2704
2705 The filter accepts the following options:
2706
2707 @table @option
2708 @item cutoff
2709 Set cutoff frequency in Hertz. Allowed range is 2 to 200.
2710 Default value is 20.
2711
2712 @item order
2713 Set filter order. Available values are from 3 to 20.
2714 Default value is 10.
2715
2716 @item level
2717 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
2718 @end table
2719
2720 @subsection Commands
2721
2722 This filter supports the all above options as @ref{commands}.
2723
2724 @section asupercut
2725 Cut super frequencies.
2726
2727 The filter accepts the following options:
2728
2729 @table @option
2730 @item cutoff
2731 Set cutoff frequency in Hertz. Allowed range is 20000 to 192000.
2732 Default value is 20000.
2733
2734 @item order
2735 Set filter order. Available values are from 3 to 20.
2736 Default value is 10.
2737
2738 @item level
2739 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
2740 @end table
2741
2742 @subsection Commands
2743
2744 This filter supports the all above options as @ref{commands}.
2745
2746 @section asuperpass
2747 Apply high order Butterworth band-pass filter.
2748
2749 The filter accepts the following options:
2750
2751 @table @option
2752 @item centerf
2753 Set center frequency in Hertz. Allowed range is 2 to 999999.
2754 Default value is 1000.
2755
2756 @item order
2757 Set filter order. Available values are from 4 to 20.
2758 Default value is 4.
2759
2760 @item qfactor
2761 Set Q-factor. Allowed range is from 0.01 to 100. Default value is 1.
2762
2763 @item level
2764 Set input gain level. Allowed range is from 0 to 2. Default value is 1.
2765 @end table
2766
2767 @subsection Commands
2768
2769 This filter supports the all above options as @ref{commands}.
2770
2771 @section asuperstop
2772 Apply high order Butterworth band-stop filter.
2773
2774 The filter accepts the following options:
2775
2776 @table @option
2777 @item centerf
2778 Set center frequency in Hertz. Allowed range is 2 to 999999.
2779 Default value is 1000.
2780
2781 @item order
2782 Set filter order. Available values are from 4 to 20.
2783 Default value is 4.
2784
2785 @item qfactor
2786 Set Q-factor. Allowed range is from 0.01 to 100. Default value is 1.
2787
2788 @item level
2789 Set input gain level. Allowed range is from 0 to 2. Default value is 1.
2790 @end table
2791
2792 @subsection Commands
2793
2794 This filter supports the all above options as @ref{commands}.
2795
2796 @section atempo
2797
2798 Adjust audio tempo.
2799
2800 The filter accepts exactly one parameter, the audio tempo. If not
2801 specified then the filter will assume nominal 1.0 tempo. Tempo must
2802 be in the [0.5, 100.0] range.
2803
2804 Note that tempo greater than 2 will skip some samples rather than
2805 blend them in.  If for any reason this is a concern it is always
2806 possible to daisy-chain several instances of atempo to achieve the
2807 desired product tempo.
2808
2809 @subsection Examples
2810
2811 @itemize
2812 @item
2813 Slow down audio to 80% tempo:
2814 @example
2815 atempo=0.8
2816 @end example
2817
2818 @item
2819 To speed up audio to 300% tempo:
2820 @example
2821 atempo=3
2822 @end example
2823
2824 @item
2825 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2826 @example
2827 atempo=sqrt(3),atempo=sqrt(3)
2828 @end example
2829 @end itemize
2830
2831 @subsection Commands
2832
2833 This filter supports the following commands:
2834 @table @option
2835 @item tempo
2836 Change filter tempo scale factor.
2837 Syntax for the command is : "@var{tempo}"
2838 @end table
2839
2840 @section atrim
2841
2842 Trim the input so that the output contains one continuous subpart of the input.
2843
2844 It accepts the following parameters:
2845 @table @option
2846 @item start
2847 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2848 sample with the timestamp @var{start} will be the first sample in the output.
2849
2850 @item end
2851 Specify time of the first audio sample that will be dropped, i.e. the
2852 audio sample immediately preceding the one with the timestamp @var{end} will be
2853 the last sample in the output.
2854
2855 @item start_pts
2856 Same as @var{start}, except this option sets the start timestamp in samples
2857 instead of seconds.
2858
2859 @item end_pts
2860 Same as @var{end}, except this option sets the end timestamp in samples instead
2861 of seconds.
2862
2863 @item duration
2864 The maximum duration of the output in seconds.
2865
2866 @item start_sample
2867 The number of the first sample that should be output.
2868
2869 @item end_sample
2870 The number of the first sample that should be dropped.
2871 @end table
2872
2873 @option{start}, @option{end}, and @option{duration} are expressed as time
2874 duration specifications; see
2875 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2876
2877 Note that the first two sets of the start/end options and the @option{duration}
2878 option look at the frame timestamp, while the _sample options simply count the
2879 samples that pass through the filter. So start/end_pts and start/end_sample will
2880 give different results when the timestamps are wrong, inexact or do not start at
2881 zero. Also note that this filter does not modify the timestamps. If you wish
2882 to have the output timestamps start at zero, insert the asetpts filter after the
2883 atrim filter.
2884
2885 If multiple start or end options are set, this filter tries to be greedy and
2886 keep all samples that match at least one of the specified constraints. To keep
2887 only the part that matches all the constraints at once, chain multiple atrim
2888 filters.
2889
2890 The defaults are such that all the input is kept. So it is possible to set e.g.
2891 just the end values to keep everything before the specified time.
2892
2893 Examples:
2894 @itemize
2895 @item
2896 Drop everything except the second minute of input:
2897 @example
2898 ffmpeg -i INPUT -af atrim=60:120
2899 @end example
2900
2901 @item
2902 Keep only the first 1000 samples:
2903 @example
2904 ffmpeg -i INPUT -af atrim=end_sample=1000
2905 @end example
2906
2907 @end itemize
2908
2909 @section axcorrelate
2910 Calculate normalized cross-correlation between two input audio streams.
2911
2912 Resulted samples are always between -1 and 1 inclusive.
2913 If result is 1 it means two input samples are highly correlated in that selected segment.
2914 Result 0 means they are not correlated at all.
2915 If result is -1 it means two input samples are out of phase, which means they cancel each
2916 other.
2917
2918 The filter accepts the following options:
2919
2920 @table @option
2921 @item size
2922 Set size of segment over which cross-correlation is calculated.
2923 Default is 256. Allowed range is from 2 to 131072.
2924
2925 @item algo
2926 Set algorithm for cross-correlation. Can be @code{slow} or @code{fast}.
2927 Default is @code{slow}. Fast algorithm assumes mean values over any given segment
2928 are always zero and thus need much less calculations to make.
2929 This is generally not true, but is valid for typical audio streams.
2930 @end table
2931
2932 @subsection Examples
2933
2934 @itemize
2935 @item
2936 Calculate correlation between channels in stereo audio stream:
2937 @example
2938 ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
2939 @end example
2940 @end itemize
2941
2942 @section bandpass
2943
2944 Apply a two-pole Butterworth band-pass filter with central
2945 frequency @var{frequency}, and (3dB-point) band-width width.
2946 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2947 instead of the default: constant 0dB peak gain.
2948 The filter roll off at 6dB per octave (20dB per decade).
2949
2950 The filter accepts the following options:
2951
2952 @table @option
2953 @item frequency, f
2954 Set the filter's central frequency. Default is @code{3000}.
2955
2956 @item csg
2957 Constant skirt gain if set to 1. Defaults to 0.
2958
2959 @item width_type, t
2960 Set method to specify band-width of filter.
2961 @table @option
2962 @item h
2963 Hz
2964 @item q
2965 Q-Factor
2966 @item o
2967 octave
2968 @item s
2969 slope
2970 @item k
2971 kHz
2972 @end table
2973
2974 @item width, w
2975 Specify the band-width of a filter in width_type units.
2976
2977 @item mix, m
2978 How much to use filtered signal in output. Default is 1.
2979 Range is between 0 and 1.
2980
2981 @item channels, c
2982 Specify which channels to filter, by default all available are filtered.
2983
2984 @item normalize, n
2985 Normalize biquad coefficients, by default is disabled.
2986 Enabling it will normalize magnitude response at DC to 0dB.
2987
2988 @item transform, a
2989 Set transform type of IIR filter.
2990 @table @option
2991 @item di
2992 @item dii
2993 @item tdii
2994 @item latt
2995 @end table
2996
2997 @item precision, r
2998 Set precison of filtering.
2999 @table @option
3000 @item auto
3001 Pick automatic sample format depending on surround filters.
3002 @item s16
3003 Always use signed 16-bit.
3004 @item s32
3005 Always use signed 32-bit.
3006 @item f32
3007 Always use float 32-bit.
3008 @item f64
3009 Always use float 64-bit.
3010 @end table
3011 @end table
3012
3013 @subsection Commands
3014
3015 This filter supports the following commands:
3016 @table @option
3017 @item frequency, f
3018 Change bandpass frequency.
3019 Syntax for the command is : "@var{frequency}"
3020
3021 @item width_type, t
3022 Change bandpass width_type.
3023 Syntax for the command is : "@var{width_type}"
3024
3025 @item width, w
3026 Change bandpass width.
3027 Syntax for the command is : "@var{width}"
3028
3029 @item mix, m
3030 Change bandpass mix.
3031 Syntax for the command is : "@var{mix}"
3032 @end table
3033
3034 @section bandreject
3035
3036 Apply a two-pole Butterworth band-reject filter with central
3037 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
3038 The filter roll off at 6dB per octave (20dB per decade).
3039
3040 The filter accepts the following options:
3041
3042 @table @option
3043 @item frequency, f
3044 Set the filter's central frequency. Default is @code{3000}.
3045
3046 @item width_type, t
3047 Set method to specify band-width of filter.
3048 @table @option
3049 @item h
3050 Hz
3051 @item q
3052 Q-Factor
3053 @item o
3054 octave
3055 @item s
3056 slope
3057 @item k
3058 kHz
3059 @end table
3060
3061 @item width, w
3062 Specify the band-width of a filter in width_type units.
3063
3064 @item mix, m
3065 How much to use filtered signal in output. Default is 1.
3066 Range is between 0 and 1.
3067
3068 @item channels, c
3069 Specify which channels to filter, by default all available are filtered.
3070
3071 @item normalize, n
3072 Normalize biquad coefficients, by default is disabled.
3073 Enabling it will normalize magnitude response at DC to 0dB.
3074
3075 @item transform, a
3076 Set transform type of IIR filter.
3077 @table @option
3078 @item di
3079 @item dii
3080 @item tdii
3081 @item latt
3082 @end table
3083
3084 @item precision, r
3085 Set precison of filtering.
3086 @table @option
3087 @item auto
3088 Pick automatic sample format depending on surround filters.
3089 @item s16
3090 Always use signed 16-bit.
3091 @item s32
3092 Always use signed 32-bit.
3093 @item f32
3094 Always use float 32-bit.
3095 @item f64
3096 Always use float 64-bit.
3097 @end table
3098 @end table
3099
3100 @subsection Commands
3101
3102 This filter supports the following commands:
3103 @table @option
3104 @item frequency, f
3105 Change bandreject frequency.
3106 Syntax for the command is : "@var{frequency}"
3107
3108 @item width_type, t
3109 Change bandreject width_type.
3110 Syntax for the command is : "@var{width_type}"
3111
3112 @item width, w
3113 Change bandreject width.
3114 Syntax for the command is : "@var{width}"
3115
3116 @item mix, m
3117 Change bandreject mix.
3118 Syntax for the command is : "@var{mix}"
3119 @end table
3120
3121 @section bass, lowshelf
3122
3123 Boost or cut the bass (lower) frequencies of the audio using a two-pole
3124 shelving filter with a response similar to that of a standard
3125 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
3126
3127 The filter accepts the following options:
3128
3129 @table @option
3130 @item gain, g
3131 Give the gain at 0 Hz. Its useful range is about -20
3132 (for a large cut) to +20 (for a large boost).
3133 Beware of clipping when using a positive gain.
3134
3135 @item frequency, f
3136 Set the filter's central frequency and so can be used
3137 to extend or reduce the frequency range to be boosted or cut.
3138 The default value is @code{100} Hz.
3139
3140 @item width_type, t
3141 Set method to specify band-width of filter.
3142 @table @option
3143 @item h
3144 Hz
3145 @item q
3146 Q-Factor
3147 @item o
3148 octave
3149 @item s
3150 slope
3151 @item k
3152 kHz
3153 @end table
3154
3155 @item width, w
3156 Determine how steep is the filter's shelf transition.
3157
3158 @item poles, p
3159 Set number of poles. Default is 2.
3160
3161 @item mix, m
3162 How much to use filtered signal in output. Default is 1.
3163 Range is between 0 and 1.
3164
3165 @item channels, c
3166 Specify which channels to filter, by default all available are filtered.
3167
3168 @item normalize, n
3169 Normalize biquad coefficients, by default is disabled.
3170 Enabling it will normalize magnitude response at DC to 0dB.
3171
3172 @item transform, a
3173 Set transform type of IIR filter.
3174 @table @option
3175 @item di
3176 @item dii
3177 @item tdii
3178 @item latt
3179 @end table
3180
3181 @item precision, r
3182 Set precison of filtering.
3183 @table @option
3184 @item auto
3185 Pick automatic sample format depending on surround filters.
3186 @item s16
3187 Always use signed 16-bit.
3188 @item s32
3189 Always use signed 32-bit.
3190 @item f32
3191 Always use float 32-bit.
3192 @item f64
3193 Always use float 64-bit.
3194 @end table
3195 @end table
3196
3197 @subsection Commands
3198
3199 This filter supports the following commands:
3200 @table @option
3201 @item frequency, f
3202 Change bass frequency.
3203 Syntax for the command is : "@var{frequency}"
3204
3205 @item width_type, t
3206 Change bass width_type.
3207 Syntax for the command is : "@var{width_type}"
3208
3209 @item width, w
3210 Change bass width.
3211 Syntax for the command is : "@var{width}"
3212
3213 @item gain, g
3214 Change bass gain.
3215 Syntax for the command is : "@var{gain}"
3216
3217 @item mix, m
3218 Change bass mix.
3219 Syntax for the command is : "@var{mix}"
3220 @end table
3221
3222 @section biquad
3223
3224 Apply a biquad IIR filter with the given coefficients.
3225 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
3226 are the numerator and denominator coefficients respectively.
3227 and @var{channels}, @var{c} specify which channels to filter, by default all
3228 available are filtered.
3229
3230 @subsection Commands
3231
3232 This filter supports the following commands:
3233 @table @option
3234 @item a0
3235 @item a1
3236 @item a2
3237 @item b0
3238 @item b1
3239 @item b2
3240 Change biquad parameter.
3241 Syntax for the command is : "@var{value}"
3242
3243 @item mix, m
3244 How much to use filtered signal in output. Default is 1.
3245 Range is between 0 and 1.
3246
3247 @item channels, c
3248 Specify which channels to filter, by default all available are filtered.
3249
3250 @item normalize, n
3251 Normalize biquad coefficients, by default is disabled.
3252 Enabling it will normalize magnitude response at DC to 0dB.
3253
3254 @item transform, a
3255 Set transform type of IIR filter.
3256 @table @option
3257 @item di
3258 @item dii
3259 @item tdii
3260 @item latt
3261 @end table
3262
3263 @item precision, r
3264 Set precison of filtering.
3265 @table @option
3266 @item auto
3267 Pick automatic sample format depending on surround filters.
3268 @item s16
3269 Always use signed 16-bit.
3270 @item s32
3271 Always use signed 32-bit.
3272 @item f32
3273 Always use float 32-bit.
3274 @item f64
3275 Always use float 64-bit.
3276 @end table
3277 @end table
3278
3279 @section bs2b
3280 Bauer stereo to binaural transformation, which improves headphone listening of
3281 stereo audio records.
3282
3283 To enable compilation of this filter you need to configure FFmpeg with
3284 @code{--enable-libbs2b}.
3285
3286 It accepts the following parameters:
3287 @table @option
3288
3289 @item profile
3290 Pre-defined crossfeed level.
3291 @table @option
3292
3293 @item default
3294 Default level (fcut=700, feed=50).
3295
3296 @item cmoy
3297 Chu Moy circuit (fcut=700, feed=60).
3298
3299 @item jmeier
3300 Jan Meier circuit (fcut=650, feed=95).
3301
3302 @end table
3303
3304 @item fcut
3305 Cut frequency (in Hz).
3306
3307 @item feed
3308 Feed level (in Hz).
3309
3310 @end table
3311
3312 @section channelmap
3313
3314 Remap input channels to new locations.
3315
3316 It accepts the following parameters:
3317 @table @option
3318 @item map
3319 Map channels from input to output. The argument is a '|'-separated list of
3320 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
3321 @var{in_channel} form. @var{in_channel} can be either the name of the input
3322 channel (e.g. FL for front left) or its index in the input channel layout.
3323 @var{out_channel} is the name of the output channel or its index in the output
3324 channel layout. If @var{out_channel} is not given then it is implicitly an
3325 index, starting with zero and increasing by one for each mapping.
3326
3327 @item channel_layout
3328 The channel layout of the output stream.
3329 @end table
3330
3331 If no mapping is present, the filter will implicitly map input channels to
3332 output channels, preserving indices.
3333
3334 @subsection Examples
3335
3336 @itemize
3337 @item
3338 For example, assuming a 5.1+downmix input MOV file,
3339 @example
3340 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
3341 @end example
3342 will create an output WAV file tagged as stereo from the downmix channels of
3343 the input.
3344
3345 @item
3346 To fix a 5.1 WAV improperly encoded in AAC's native channel order
3347 @example
3348 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
3349 @end example
3350 @end itemize
3351
3352 @section channelsplit
3353
3354 Split each channel from an input audio stream into a separate output stream.
3355
3356 It accepts the following parameters:
3357 @table @option
3358 @item channel_layout
3359 The channel layout of the input stream. The default is "stereo".
3360 @item channels
3361 A channel layout describing the channels to be extracted as separate output streams
3362 or "all" to extract each input channel as a separate stream. The default is "all".
3363
3364 Choosing channels not present in channel layout in the input will result in an error.
3365 @end table
3366
3367 @subsection Examples
3368
3369 @itemize
3370 @item
3371 For example, assuming a stereo input MP3 file,
3372 @example
3373 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
3374 @end example
3375 will create an output Matroska file with two audio streams, one containing only
3376 the left channel and the other the right channel.
3377
3378 @item
3379 Split a 5.1 WAV file into per-channel files:
3380 @example
3381 ffmpeg -i in.wav -filter_complex
3382 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
3383 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
3384 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
3385 side_right.wav
3386 @end example
3387
3388 @item
3389 Extract only LFE from a 5.1 WAV file:
3390 @example
3391 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
3392 -map '[LFE]' lfe.wav
3393 @end example
3394 @end itemize
3395
3396 @section chorus
3397 Add a chorus effect to the audio.
3398
3399 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
3400
3401 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
3402 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
3403 The modulation depth defines the range the modulated delay is played before or after
3404 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
3405 sound tuned around the original one, like in a chorus where some vocals are slightly
3406 off key.
3407
3408 It accepts the following parameters:
3409 @table @option
3410 @item in_gain
3411 Set input gain. Default is 0.4.
3412
3413 @item out_gain
3414 Set output gain. Default is 0.4.
3415
3416 @item delays
3417 Set delays. A typical delay is around 40ms to 60ms.
3418
3419 @item decays
3420 Set decays.
3421
3422 @item speeds
3423 Set speeds.
3424
3425 @item depths
3426 Set depths.
3427 @end table
3428
3429 @subsection Examples
3430
3431 @itemize
3432 @item
3433 A single delay:
3434 @example
3435 chorus=0.7:0.9:55:0.4:0.25:2
3436 @end example
3437
3438 @item
3439 Two delays:
3440 @example
3441 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
3442 @end example
3443
3444 @item
3445 Fuller sounding chorus with three delays:
3446 @example
3447 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
3448 @end example
3449 @end itemize
3450
3451 @section compand
3452 Compress or expand the audio's dynamic range.
3453
3454 It accepts the following parameters:
3455
3456 @table @option
3457
3458 @item attacks
3459 @item decays
3460 A list of times in seconds for each channel over which the instantaneous level
3461 of the input signal is averaged to determine its volume. @var{attacks} refers to
3462 increase of volume and @var{decays} refers to decrease of volume. For most
3463 situations, the attack time (response to the audio getting louder) should be
3464 shorter than the decay time, because the human ear is more sensitive to sudden
3465 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
3466 a typical value for decay is 0.8 seconds.
3467 If specified number of attacks & decays is lower than number of channels, the last
3468 set attack/decay will be used for all remaining channels.
3469
3470 @item points
3471 A list of points for the transfer function, specified in dB relative to the
3472 maximum possible signal amplitude. Each key points list must be defined using
3473 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
3474 @code{x0/y0 x1/y1 x2/y2 ....}
3475
3476 The input values must be in strictly increasing order but the transfer function
3477 does not have to be monotonically rising. The point @code{0/0} is assumed but
3478 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
3479 function are @code{-70/-70|-60/-20|1/0}.
3480
3481 @item soft-knee
3482 Set the curve radius in dB for all joints. It defaults to 0.01.
3483
3484 @item gain
3485 Set the additional gain in dB to be applied at all points on the transfer
3486 function. This allows for easy adjustment of the overall gain.
3487 It defaults to 0.
3488
3489 @item volume
3490 Set an initial volume, in dB, to be assumed for each channel when filtering
3491 starts. This permits the user to supply a nominal level initially, so that, for
3492 example, a very large gain is not applied to initial signal levels before the
3493 companding has begun to operate. A typical value for audio which is initially
3494 quiet is -90 dB. It defaults to 0.
3495
3496 @item delay
3497 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
3498 delayed before being fed to the volume adjuster. Specifying a delay
3499 approximately equal to the attack/decay times allows the filter to effectively
3500 operate in predictive rather than reactive mode. It defaults to 0.
3501
3502 @end table
3503
3504 @subsection Examples
3505
3506 @itemize
3507 @item
3508 Make music with both quiet and loud passages suitable for listening to in a
3509 noisy environment:
3510 @example
3511 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
3512 @end example
3513
3514 Another example for audio with whisper and explosion parts:
3515 @example
3516 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
3517 @end example
3518
3519 @item
3520 A noise gate for when the noise is at a lower level than the signal:
3521 @example
3522 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
3523 @end example
3524
3525 @item
3526 Here is another noise gate, this time for when the noise is at a higher level
3527 than the signal (making it, in some ways, similar to squelch):
3528 @example
3529 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3530 @end example
3531
3532 @item
3533 2:1 compression starting at -6dB:
3534 @example
3535 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3536 @end example
3537
3538 @item
3539 2:1 compression starting at -9dB:
3540 @example
3541 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3542 @end example
3543
3544 @item
3545 2:1 compression starting at -12dB:
3546 @example
3547 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3548 @end example
3549
3550 @item
3551 2:1 compression starting at -18dB:
3552 @example
3553 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3554 @end example
3555
3556 @item
3557 3:1 compression starting at -15dB:
3558 @example
3559 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3560 @end example
3561
3562 @item
3563 Compressor/Gate:
3564 @example
3565 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3566 @end example
3567
3568 @item
3569 Expander:
3570 @example
3571 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
3572 @end example
3573
3574 @item
3575 Hard limiter at -6dB:
3576 @example
3577 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3578 @end example
3579
3580 @item
3581 Hard limiter at -12dB:
3582 @example
3583 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3584 @end example
3585
3586 @item
3587 Hard noise gate at -35 dB:
3588 @example
3589 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3590 @end example
3591
3592 @item
3593 Soft limiter:
3594 @example
3595 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3596 @end example
3597 @end itemize
3598
3599 @section compensationdelay
3600
3601 Compensation Delay Line is a metric based delay to compensate differing
3602 positions of microphones or speakers.
3603
3604 For example, you have recorded guitar with two microphones placed in
3605 different locations. Because the front of sound wave has fixed speed in
3606 normal conditions, the phasing of microphones can vary and depends on
3607 their location and interposition. The best sound mix can be achieved when
3608 these microphones are in phase (synchronized). Note that a distance of
3609 ~30 cm between microphones makes one microphone capture the signal in
3610 antiphase to the other microphone. That makes the final mix sound moody.
3611 This filter helps to solve phasing problems by adding different delays
3612 to each microphone track and make them synchronized.
3613
3614 The best result can be reached when you take one track as base and
3615 synchronize other tracks one by one with it.
3616 Remember that synchronization/delay tolerance depends on sample rate, too.
3617 Higher sample rates will give more tolerance.
3618
3619 The filter accepts the following parameters:
3620
3621 @table @option
3622 @item mm
3623 Set millimeters distance. This is compensation distance for fine tuning.
3624 Default is 0.
3625
3626 @item cm
3627 Set cm distance. This is compensation distance for tightening distance setup.
3628 Default is 0.
3629
3630 @item m
3631 Set meters distance. This is compensation distance for hard distance setup.
3632 Default is 0.
3633
3634 @item dry
3635 Set dry amount. Amount of unprocessed (dry) signal.
3636 Default is 0.
3637
3638 @item wet
3639 Set wet amount. Amount of processed (wet) signal.
3640 Default is 1.
3641
3642 @item temp
3643 Set temperature in degrees Celsius. This is the temperature of the environment.
3644 Default is 20.
3645 @end table
3646
3647 @section crossfeed
3648 Apply headphone crossfeed filter.
3649
3650 Crossfeed is the process of blending the left and right channels of stereo
3651 audio recording.
3652 It is mainly used to reduce extreme stereo separation of low frequencies.
3653
3654 The intent is to produce more speaker like sound to the listener.
3655
3656 The filter accepts the following options:
3657
3658 @table @option
3659 @item strength
3660 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3661 This sets gain of low shelf filter for side part of stereo image.
3662 Default is -6dB. Max allowed is -30db when strength is set to 1.
3663
3664 @item range
3665 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3666 This sets cut off frequency of low shelf filter. Default is cut off near
3667 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3668
3669 @item slope
3670 Set curve slope of low shelf filter. Default is 0.5.
3671 Allowed range is from 0.01 to 1.
3672
3673 @item level_in
3674 Set input gain. Default is 0.9.
3675
3676 @item level_out
3677 Set output gain. Default is 1.
3678 @end table
3679
3680 @subsection Commands
3681
3682 This filter supports the all above options as @ref{commands}.
3683
3684 @section crystalizer
3685 Simple algorithm for audio noise sharpening.
3686
3687 This filter linearly increases differences betweeen each audio sample.
3688
3689 The filter accepts the following options:
3690
3691 @table @option
3692 @item i
3693 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3694 (unchanged sound) to 10.0 (maximum effect).
3695
3696 @item c
3697 Enable clipping. By default is enabled.
3698 @end table
3699
3700 @subsection Commands
3701
3702 This filter supports the all above options as @ref{commands}.
3703
3704 @section dcshift
3705 Apply a DC shift to the audio.
3706
3707 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3708 in the recording chain) from the audio. The effect of a DC offset is reduced
3709 headroom and hence volume. The @ref{astats} filter can be used to determine if
3710 a signal has a DC offset.
3711
3712 @table @option
3713 @item shift
3714 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3715 the audio.
3716
3717 @item limitergain
3718 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3719 used to prevent clipping.
3720 @end table
3721
3722 @section deesser
3723
3724 Apply de-essing to the audio samples.
3725
3726 @table @option
3727 @item i
3728 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3729 Default is 0.
3730
3731 @item m
3732 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3733 Default is 0.5.
3734
3735 @item f
3736 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3737 Default is 0.5.
3738
3739 @item s
3740 Set the output mode.
3741
3742 It accepts the following values:
3743 @table @option
3744 @item i
3745 Pass input unchanged.
3746
3747 @item o
3748 Pass ess filtered out.
3749
3750 @item e
3751 Pass only ess.
3752
3753 Default value is @var{o}.
3754 @end table
3755
3756 @end table
3757
3758 @section drmeter
3759 Measure audio dynamic range.
3760
3761 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3762 is found in transition material. And anything less that 8 have very poor dynamics
3763 and is very compressed.
3764
3765 The filter accepts the following options:
3766
3767 @table @option
3768 @item length
3769 Set window length in seconds used to split audio into segments of equal length.
3770 Default is 3 seconds.
3771 @end table
3772
3773 @section dynaudnorm
3774 Dynamic Audio Normalizer.
3775
3776 This filter applies a certain amount of gain to the input audio in order
3777 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3778 contrast to more "simple" normalization algorithms, the Dynamic Audio
3779 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3780 This allows for applying extra gain to the "quiet" sections of the audio
3781 while avoiding distortions or clipping the "loud" sections. In other words:
3782 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3783 sections, in the sense that the volume of each section is brought to the
3784 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3785 this goal *without* applying "dynamic range compressing". It will retain 100%
3786 of the dynamic range *within* each section of the audio file.
3787
3788 @table @option
3789 @item framelen, f
3790 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3791 Default is 500 milliseconds.
3792 The Dynamic Audio Normalizer processes the input audio in small chunks,
3793 referred to as frames. This is required, because a peak magnitude has no
3794 meaning for just a single sample value. Instead, we need to determine the
3795 peak magnitude for a contiguous sequence of sample values. While a "standard"
3796 normalizer would simply use the peak magnitude of the complete file, the
3797 Dynamic Audio Normalizer determines the peak magnitude individually for each
3798 frame. The length of a frame is specified in milliseconds. By default, the
3799 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3800 been found to give good results with most files.
3801 Note that the exact frame length, in number of samples, will be determined
3802 automatically, based on the sampling rate of the individual input audio file.
3803
3804 @item gausssize, g
3805 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3806 number. Default is 31.
3807 Probably the most important parameter of the Dynamic Audio Normalizer is the
3808 @code{window size} of the Gaussian smoothing filter. The filter's window size
3809 is specified in frames, centered around the current frame. For the sake of
3810 simplicity, this must be an odd number. Consequently, the default value of 31
3811 takes into account the current frame, as well as the 15 preceding frames and
3812 the 15 subsequent frames. Using a larger window results in a stronger
3813 smoothing effect and thus in less gain variation, i.e. slower gain
3814 adaptation. Conversely, using a smaller window results in a weaker smoothing
3815 effect and thus in more gain variation, i.e. faster gain adaptation.
3816 In other words, the more you increase this value, the more the Dynamic Audio
3817 Normalizer will behave like a "traditional" normalization filter. On the
3818 contrary, the more you decrease this value, the more the Dynamic Audio
3819 Normalizer will behave like a dynamic range compressor.
3820
3821 @item peak, p
3822 Set the target peak value. This specifies the highest permissible magnitude
3823 level for the normalized audio input. This filter will try to approach the
3824 target peak magnitude as closely as possible, but at the same time it also
3825 makes sure that the normalized signal will never exceed the peak magnitude.
3826 A frame's maximum local gain factor is imposed directly by the target peak
3827 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3828 It is not recommended to go above this value.
3829
3830 @item maxgain, m
3831 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3832 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3833 factor for each input frame, i.e. the maximum gain factor that does not
3834 result in clipping or distortion. The maximum gain factor is determined by
3835 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3836 additionally bounds the frame's maximum gain factor by a predetermined
3837 (global) maximum gain factor. This is done in order to avoid excessive gain
3838 factors in "silent" or almost silent frames. By default, the maximum gain
3839 factor is 10.0, For most inputs the default value should be sufficient and
3840 it usually is not recommended to increase this value. Though, for input
3841 with an extremely low overall volume level, it may be necessary to allow even
3842 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3843 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3844 Instead, a "sigmoid" threshold function will be applied. This way, the
3845 gain factors will smoothly approach the threshold value, but never exceed that
3846 value.
3847
3848 @item targetrms, r
3849 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3850 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3851 This means that the maximum local gain factor for each frame is defined
3852 (only) by the frame's highest magnitude sample. This way, the samples can
3853 be amplified as much as possible without exceeding the maximum signal
3854 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3855 Normalizer can also take into account the frame's root mean square,
3856 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3857 determine the power of a time-varying signal. It is therefore considered
3858 that the RMS is a better approximation of the "perceived loudness" than
3859 just looking at the signal's peak magnitude. Consequently, by adjusting all
3860 frames to a constant RMS value, a uniform "perceived loudness" can be
3861 established. If a target RMS value has been specified, a frame's local gain
3862 factor is defined as the factor that would result in exactly that RMS value.
3863 Note, however, that the maximum local gain factor is still restricted by the
3864 frame's highest magnitude sample, in order to prevent clipping.
3865
3866 @item coupling, n
3867 Enable channels coupling. By default is enabled.
3868 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3869 amount. This means the same gain factor will be applied to all channels, i.e.
3870 the maximum possible gain factor is determined by the "loudest" channel.
3871 However, in some recordings, it may happen that the volume of the different
3872 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3873 In this case, this option can be used to disable the channel coupling. This way,
3874 the gain factor will be determined independently for each channel, depending
3875 only on the individual channel's highest magnitude sample. This allows for
3876 harmonizing the volume of the different channels.
3877
3878 @item correctdc, c
3879 Enable DC bias correction. By default is disabled.
3880 An audio signal (in the time domain) is a sequence of sample values.
3881 In the Dynamic Audio Normalizer these sample values are represented in the
3882 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3883 audio signal, or "waveform", should be centered around the zero point.
3884 That means if we calculate the mean value of all samples in a file, or in a
3885 single frame, then the result should be 0.0 or at least very close to that
3886 value. If, however, there is a significant deviation of the mean value from
3887 0.0, in either positive or negative direction, this is referred to as a
3888 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3889 Audio Normalizer provides optional DC bias correction.
3890 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3891 the mean value, or "DC correction" offset, of each input frame and subtract
3892 that value from all of the frame's sample values which ensures those samples
3893 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3894 boundaries, the DC correction offset values will be interpolated smoothly
3895 between neighbouring frames.
3896
3897 @item altboundary, b
3898 Enable alternative boundary mode. By default is disabled.
3899 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3900 around each frame. This includes the preceding frames as well as the
3901 subsequent frames. However, for the "boundary" frames, located at the very
3902 beginning and at the very end of the audio file, not all neighbouring
3903 frames are available. In particular, for the first few frames in the audio
3904 file, the preceding frames are not known. And, similarly, for the last few
3905 frames in the audio file, the subsequent frames are not known. Thus, the
3906 question arises which gain factors should be assumed for the missing frames
3907 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3908 to deal with this situation. The default boundary mode assumes a gain factor
3909 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3910 "fade out" at the beginning and at the end of the input, respectively.
3911
3912 @item compress, s
3913 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3914 By default, the Dynamic Audio Normalizer does not apply "traditional"
3915 compression. This means that signal peaks will not be pruned and thus the
3916 full dynamic range will be retained within each local neighbourhood. However,
3917 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3918 normalization algorithm with a more "traditional" compression.
3919 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3920 (thresholding) function. If (and only if) the compression feature is enabled,
3921 all input frames will be processed by a soft knee thresholding function prior
3922 to the actual normalization process. Put simply, the thresholding function is
3923 going to prune all samples whose magnitude exceeds a certain threshold value.
3924 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3925 value. Instead, the threshold value will be adjusted for each individual
3926 frame.
3927 In general, smaller parameters result in stronger compression, and vice versa.
3928 Values below 3.0 are not recommended, because audible distortion may appear.
3929
3930 @item threshold, t
3931 Set the target threshold value. This specifies the lowest permissible
3932 magnitude level for the audio input which will be normalized.
3933 If input frame volume is above this value frame will be normalized.
3934 Otherwise frame may not be normalized at all. The default value is set
3935 to 0, which means all input frames will be normalized.
3936 This option is mostly useful if digital noise is not wanted to be amplified.
3937 @end table
3938
3939 @subsection Commands
3940
3941 This filter supports the all above options as @ref{commands}.
3942
3943 @section earwax
3944
3945 Make audio easier to listen to on headphones.
3946
3947 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3948 so that when listened to on headphones the stereo image is moved from
3949 inside your head (standard for headphones) to outside and in front of
3950 the listener (standard for speakers).
3951
3952 Ported from SoX.
3953
3954 @section equalizer
3955
3956 Apply a two-pole peaking equalisation (EQ) filter. With this
3957 filter, the signal-level at and around a selected frequency can
3958 be increased or decreased, whilst (unlike bandpass and bandreject
3959 filters) that at all other frequencies is unchanged.
3960
3961 In order to produce complex equalisation curves, this filter can
3962 be given several times, each with a different central frequency.
3963
3964 The filter accepts the following options:
3965
3966 @table @option
3967 @item frequency, f
3968 Set the filter's central frequency in Hz.
3969
3970 @item width_type, t
3971 Set method to specify band-width of filter.
3972 @table @option
3973 @item h
3974 Hz
3975 @item q
3976 Q-Factor
3977 @item o
3978 octave
3979 @item s
3980 slope
3981 @item k
3982 kHz
3983 @end table
3984
3985 @item width, w
3986 Specify the band-width of a filter in width_type units.
3987
3988 @item gain, g
3989 Set the required gain or attenuation in dB.
3990 Beware of clipping when using a positive gain.
3991
3992 @item mix, m
3993 How much to use filtered signal in output. Default is 1.
3994 Range is between 0 and 1.
3995
3996 @item channels, c
3997 Specify which channels to filter, by default all available are filtered.
3998
3999 @item normalize, n
4000 Normalize biquad coefficients, by default is disabled.
4001 Enabling it will normalize magnitude response at DC to 0dB.
4002
4003 @item transform, a
4004 Set transform type of IIR filter.
4005 @table @option
4006 @item di
4007 @item dii
4008 @item tdii
4009 @item latt
4010 @end table
4011
4012 @item precision, r
4013 Set precison of filtering.
4014 @table @option
4015 @item auto
4016 Pick automatic sample format depending on surround filters.
4017 @item s16
4018 Always use signed 16-bit.
4019 @item s32
4020 Always use signed 32-bit.
4021 @item f32
4022 Always use float 32-bit.
4023 @item f64
4024 Always use float 64-bit.
4025 @end table
4026 @end table
4027
4028 @subsection Examples
4029 @itemize
4030 @item
4031 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
4032 @example
4033 equalizer=f=1000:t=h:width=200:g=-10
4034 @end example
4035
4036 @item
4037 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
4038 @example
4039 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
4040 @end example
4041 @end itemize
4042
4043 @subsection Commands
4044
4045 This filter supports the following commands:
4046 @table @option
4047 @item frequency, f
4048 Change equalizer frequency.
4049 Syntax for the command is : "@var{frequency}"
4050
4051 @item width_type, t
4052 Change equalizer width_type.
4053 Syntax for the command is : "@var{width_type}"
4054
4055 @item width, w
4056 Change equalizer width.
4057 Syntax for the command is : "@var{width}"
4058
4059 @item gain, g
4060 Change equalizer gain.
4061 Syntax for the command is : "@var{gain}"
4062
4063 @item mix, m
4064 Change equalizer mix.
4065 Syntax for the command is : "@var{mix}"
4066 @end table
4067
4068 @section extrastereo
4069
4070 Linearly increases the difference between left and right channels which
4071 adds some sort of "live" effect to playback.
4072
4073 The filter accepts the following options:
4074
4075 @table @option
4076 @item m
4077 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
4078 (average of both channels), with 1.0 sound will be unchanged, with
4079 -1.0 left and right channels will be swapped.
4080
4081 @item c
4082 Enable clipping. By default is enabled.
4083 @end table
4084
4085 @subsection Commands
4086
4087 This filter supports the all above options as @ref{commands}.
4088
4089 @section firequalizer
4090 Apply FIR Equalization using arbitrary frequency response.
4091
4092 The filter accepts the following option:
4093
4094 @table @option
4095 @item gain
4096 Set gain curve equation (in dB). The expression can contain variables:
4097 @table @option
4098 @item f
4099 the evaluated frequency
4100 @item sr
4101 sample rate
4102 @item ch
4103 channel number, set to 0 when multichannels evaluation is disabled
4104 @item chid
4105 channel id, see libavutil/channel_layout.h, set to the first channel id when
4106 multichannels evaluation is disabled
4107 @item chs
4108 number of channels
4109 @item chlayout
4110 channel_layout, see libavutil/channel_layout.h
4111
4112 @end table
4113 and functions:
4114 @table @option
4115 @item gain_interpolate(f)
4116 interpolate gain on frequency f based on gain_entry
4117 @item cubic_interpolate(f)
4118 same as gain_interpolate, but smoother
4119 @end table
4120 This option is also available as command. Default is @code{gain_interpolate(f)}.
4121
4122 @item gain_entry
4123 Set gain entry for gain_interpolate function. The expression can
4124 contain functions:
4125 @table @option
4126 @item entry(f, g)
4127 store gain entry at frequency f with value g
4128 @end table
4129 This option is also available as command.
4130
4131 @item delay
4132 Set filter delay in seconds. Higher value means more accurate.
4133 Default is @code{0.01}.
4134
4135 @item accuracy
4136 Set filter accuracy in Hz. Lower value means more accurate.
4137 Default is @code{5}.
4138
4139 @item wfunc
4140 Set window function. Acceptable values are:
4141 @table @option
4142 @item rectangular
4143 rectangular window, useful when gain curve is already smooth
4144 @item hann
4145 hann window (default)
4146 @item hamming
4147 hamming window
4148 @item blackman
4149 blackman window
4150 @item nuttall3
4151 3-terms continuous 1st derivative nuttall window
4152 @item mnuttall3
4153 minimum 3-terms discontinuous nuttall window
4154 @item nuttall
4155 4-terms continuous 1st derivative nuttall window
4156 @item bnuttall
4157 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
4158 @item bharris
4159 blackman-harris window
4160 @item tukey
4161 tukey window
4162 @end table
4163
4164 @item fixed
4165 If enabled, use fixed number of audio samples. This improves speed when
4166 filtering with large delay. Default is disabled.
4167
4168 @item multi
4169 Enable multichannels evaluation on gain. Default is disabled.
4170
4171 @item zero_phase
4172 Enable zero phase mode by subtracting timestamp to compensate delay.
4173 Default is disabled.
4174
4175 @item scale
4176 Set scale used by gain. Acceptable values are:
4177 @table @option
4178 @item linlin
4179 linear frequency, linear gain
4180 @item linlog
4181 linear frequency, logarithmic (in dB) gain (default)
4182 @item loglin
4183 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
4184 @item loglog
4185 logarithmic frequency, logarithmic gain
4186 @end table
4187
4188 @item dumpfile
4189 Set file for dumping, suitable for gnuplot.
4190
4191 @item dumpscale
4192 Set scale for dumpfile. Acceptable values are same with scale option.
4193 Default is linlog.
4194
4195 @item fft2
4196 Enable 2-channel convolution using complex FFT. This improves speed significantly.
4197 Default is disabled.
4198
4199 @item min_phase
4200 Enable minimum phase impulse response. Default is disabled.
4201 @end table
4202
4203 @subsection Examples
4204 @itemize
4205 @item
4206 lowpass at 1000 Hz:
4207 @example
4208 firequalizer=gain='if(lt(f,1000), 0, -INF)'
4209 @end example
4210 @item
4211 lowpass at 1000 Hz with gain_entry:
4212 @example
4213 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
4214 @end example
4215 @item
4216 custom equalization:
4217 @example
4218 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
4219 @end example
4220 @item
4221 higher delay with zero phase to compensate delay:
4222 @example
4223 firequalizer=delay=0.1:fixed=on:zero_phase=on
4224 @end example
4225 @item
4226 lowpass on left channel, highpass on right channel:
4227 @example
4228 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
4229 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
4230 @end example
4231 @end itemize
4232
4233 @section flanger
4234 Apply a flanging effect to the audio.
4235
4236 The filter accepts the following options:
4237
4238 @table @option
4239 @item delay
4240 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
4241
4242 @item depth
4243 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
4244
4245 @item regen
4246 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
4247 Default value is 0.
4248
4249 @item width
4250 Set percentage of delayed signal mixed with original. Range from 0 to 100.
4251 Default value is 71.
4252
4253 @item speed
4254 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
4255
4256 @item shape
4257 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
4258 Default value is @var{sinusoidal}.
4259
4260 @item phase
4261 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
4262 Default value is 25.
4263
4264 @item interp
4265 Set delay-line interpolation, @var{linear} or @var{quadratic}.
4266 Default is @var{linear}.
4267 @end table
4268
4269 @section haas
4270 Apply Haas effect to audio.
4271
4272 Note that this makes most sense to apply on mono signals.
4273 With this filter applied to mono signals it give some directionality and
4274 stretches its stereo image.
4275
4276 The filter accepts the following options:
4277
4278 @table @option
4279 @item level_in
4280 Set input level. By default is @var{1}, or 0dB
4281
4282 @item level_out
4283 Set output level. By default is @var{1}, or 0dB.
4284
4285 @item side_gain
4286 Set gain applied to side part of signal. By default is @var{1}.
4287
4288 @item middle_source
4289 Set kind of middle source. Can be one of the following:
4290
4291 @table @samp
4292 @item left
4293 Pick left channel.
4294
4295 @item right
4296 Pick right channel.
4297
4298 @item mid
4299 Pick middle part signal of stereo image.
4300
4301 @item side
4302 Pick side part signal of stereo image.
4303 @end table
4304
4305 @item middle_phase
4306 Change middle phase. By default is disabled.
4307
4308 @item left_delay
4309 Set left channel delay. By default is @var{2.05} milliseconds.
4310
4311 @item left_balance
4312 Set left channel balance. By default is @var{-1}.
4313
4314 @item left_gain
4315 Set left channel gain. By default is @var{1}.
4316
4317 @item left_phase
4318 Change left phase. By default is disabled.
4319
4320 @item right_delay
4321 Set right channel delay. By defaults is @var{2.12} milliseconds.
4322
4323 @item right_balance
4324 Set right channel balance. By default is @var{1}.
4325
4326 @item right_gain
4327 Set right channel gain. By default is @var{1}.
4328
4329 @item right_phase
4330 Change right phase. By default is enabled.
4331 @end table
4332
4333 @section hdcd
4334
4335 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
4336 embedded HDCD codes is expanded into a 20-bit PCM stream.
4337
4338 The filter supports the Peak Extend and Low-level Gain Adjustment features
4339 of HDCD, and detects the Transient Filter flag.
4340
4341 @example
4342 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
4343 @end example
4344
4345 When using the filter with wav, note the default encoding for wav is 16-bit,
4346 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
4347 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
4348 @example
4349 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
4350 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
4351 @end example
4352
4353 The filter accepts the following options:
4354
4355 @table @option
4356 @item disable_autoconvert
4357 Disable any automatic format conversion or resampling in the filter graph.
4358
4359 @item process_stereo
4360 Process the stereo channels together. If target_gain does not match between
4361 channels, consider it invalid and use the last valid target_gain.
4362
4363 @item cdt_ms
4364 Set the code detect timer period in ms.
4365
4366 @item force_pe
4367 Always extend peaks above -3dBFS even if PE isn't signaled.
4368
4369 @item analyze_mode
4370 Replace audio with a solid tone and adjust the amplitude to signal some
4371 specific aspect of the decoding process. The output file can be loaded in
4372 an audio editor alongside the original to aid analysis.
4373
4374 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
4375
4376 Modes are:
4377 @table @samp
4378 @item 0, off
4379 Disabled
4380 @item 1, lle
4381 Gain adjustment level at each sample
4382 @item 2, pe
4383 Samples where peak extend occurs
4384 @item 3, cdt
4385 Samples where the code detect timer is active
4386 @item 4, tgm
4387 Samples where the target gain does not match between channels
4388 @end table
4389 @end table
4390
4391 @section headphone
4392
4393 Apply head-related transfer functions (HRTFs) to create virtual
4394 loudspeakers around the user for binaural listening via headphones.
4395 The HRIRs are provided via additional streams, for each channel
4396 one stereo input stream is needed.
4397
4398 The filter accepts the following options:
4399
4400 @table @option
4401 @item map
4402 Set mapping of input streams for convolution.
4403 The argument is a '|'-separated list of channel names in order as they
4404 are given as additional stream inputs for filter.
4405 This also specify number of input streams. Number of input streams
4406 must be not less than number of channels in first stream plus one.
4407
4408 @item gain
4409 Set gain applied to audio. Value is in dB. Default is 0.
4410
4411 @item type
4412 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4413 processing audio in time domain which is slow.
4414 @var{freq} is processing audio in frequency domain which is fast.
4415 Default is @var{freq}.
4416
4417 @item lfe
4418 Set custom gain for LFE channels. Value is in dB. Default is 0.
4419
4420 @item size
4421 Set size of frame in number of samples which will be processed at once.
4422 Default value is @var{1024}. Allowed range is from 1024 to 96000.
4423
4424 @item hrir
4425 Set format of hrir stream.
4426 Default value is @var{stereo}. Alternative value is @var{multich}.
4427 If value is set to @var{stereo}, number of additional streams should
4428 be greater or equal to number of input channels in first input stream.
4429 Also each additional stream should have stereo number of channels.
4430 If value is set to @var{multich}, number of additional streams should
4431 be exactly one. Also number of input channels of additional stream
4432 should be equal or greater than twice number of channels of first input
4433 stream.
4434 @end table
4435
4436 @subsection Examples
4437
4438 @itemize
4439 @item
4440 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4441 each amovie filter use stereo file with IR coefficients as input.
4442 The files give coefficients for each position of virtual loudspeaker:
4443 @example
4444 ffmpeg -i input.wav
4445 -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"
4446 output.wav
4447 @end example
4448
4449 @item
4450 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4451 but now in @var{multich} @var{hrir} format.
4452 @example
4453 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"
4454 output.wav
4455 @end example
4456 @end itemize
4457
4458 @section highpass
4459
4460 Apply a high-pass filter with 3dB point frequency.
4461 The filter can be either single-pole, or double-pole (the default).
4462 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4463
4464 The filter accepts the following options:
4465
4466 @table @option
4467 @item frequency, f
4468 Set frequency in Hz. Default is 3000.
4469
4470 @item poles, p
4471 Set number of poles. Default is 2.
4472
4473 @item width_type, t
4474 Set method to specify band-width of filter.
4475 @table @option
4476 @item h
4477 Hz
4478 @item q
4479 Q-Factor
4480 @item o
4481 octave
4482 @item s
4483 slope
4484 @item k
4485 kHz
4486 @end table
4487
4488 @item width, w
4489 Specify the band-width of a filter in width_type units.
4490 Applies only to double-pole filter.
4491 The default is 0.707q and gives a Butterworth response.
4492
4493 @item mix, m
4494 How much to use filtered signal in output. Default is 1.
4495 Range is between 0 and 1.
4496
4497 @item channels, c
4498 Specify which channels to filter, by default all available are filtered.
4499
4500 @item normalize, n
4501 Normalize biquad coefficients, by default is disabled.
4502 Enabling it will normalize magnitude response at DC to 0dB.
4503
4504 @item transform, a
4505 Set transform type of IIR filter.
4506 @table @option
4507 @item di
4508 @item dii
4509 @item tdii
4510 @item latt
4511 @end table
4512
4513 @item precision, r
4514 Set precison of filtering.
4515 @table @option
4516 @item auto
4517 Pick automatic sample format depending on surround filters.
4518 @item s16
4519 Always use signed 16-bit.
4520 @item s32
4521 Always use signed 32-bit.
4522 @item f32
4523 Always use float 32-bit.
4524 @item f64
4525 Always use float 64-bit.
4526 @end table
4527 @end table
4528
4529 @subsection Commands
4530
4531 This filter supports the following commands:
4532 @table @option
4533 @item frequency, f
4534 Change highpass frequency.
4535 Syntax for the command is : "@var{frequency}"
4536
4537 @item width_type, t
4538 Change highpass width_type.
4539 Syntax for the command is : "@var{width_type}"
4540
4541 @item width, w
4542 Change highpass width.
4543 Syntax for the command is : "@var{width}"
4544
4545 @item mix, m
4546 Change highpass mix.
4547 Syntax for the command is : "@var{mix}"
4548 @end table
4549
4550 @section join
4551
4552 Join multiple input streams into one multi-channel stream.
4553
4554 It accepts the following parameters:
4555 @table @option
4556
4557 @item inputs
4558 The number of input streams. It defaults to 2.
4559
4560 @item channel_layout
4561 The desired output channel layout. It defaults to stereo.
4562
4563 @item map
4564 Map channels from inputs to output. The argument is a '|'-separated list of
4565 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
4566 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
4567 can be either the name of the input channel (e.g. FL for front left) or its
4568 index in the specified input stream. @var{out_channel} is the name of the output
4569 channel.
4570 @end table
4571
4572 The filter will attempt to guess the mappings when they are not specified
4573 explicitly. It does so by first trying to find an unused matching input channel
4574 and if that fails it picks the first unused input channel.
4575
4576 Join 3 inputs (with properly set channel layouts):
4577 @example
4578 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
4579 @end example
4580
4581 Build a 5.1 output from 6 single-channel streams:
4582 @example
4583 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
4584 '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'
4585 out
4586 @end example
4587
4588 @section ladspa
4589
4590 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
4591
4592 To enable compilation of this filter you need to configure FFmpeg with
4593 @code{--enable-ladspa}.
4594
4595 @table @option
4596 @item file, f
4597 Specifies the name of LADSPA plugin library to load. If the environment
4598 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
4599 each one of the directories specified by the colon separated list in
4600 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
4601 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
4602 @file{/usr/lib/ladspa/}.
4603
4604 @item plugin, p
4605 Specifies the plugin within the library. Some libraries contain only
4606 one plugin, but others contain many of them. If this is not set filter
4607 will list all available plugins within the specified library.
4608
4609 @item controls, c
4610 Set the '|' separated list of controls which are zero or more floating point
4611 values that determine the behavior of the loaded plugin (for example delay,
4612 threshold or gain).
4613 Controls need to be defined using the following syntax:
4614 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
4615 @var{valuei} is the value set on the @var{i}-th control.
4616 Alternatively they can be also defined using the following syntax:
4617 @var{value0}|@var{value1}|@var{value2}|..., where
4618 @var{valuei} is the value set on the @var{i}-th control.
4619 If @option{controls} is set to @code{help}, all available controls and
4620 their valid ranges are printed.
4621
4622 @item sample_rate, s
4623 Specify the sample rate, default to 44100. Only used if plugin have
4624 zero inputs.
4625
4626 @item nb_samples, n
4627 Set the number of samples per channel per each output frame, default
4628 is 1024. Only used if plugin have zero inputs.
4629
4630 @item duration, d
4631 Set the minimum duration of the sourced audio. See
4632 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4633 for the accepted syntax.
4634 Note that the resulting duration may be greater than the specified duration,
4635 as the generated audio is always cut at the end of a complete frame.
4636 If not specified, or the expressed duration is negative, the audio is
4637 supposed to be generated forever.
4638 Only used if plugin have zero inputs.
4639
4640 @item latency, l
4641 Enable latency compensation, by default is disabled.
4642 Only used if plugin have inputs.
4643 @end table
4644
4645 @subsection Examples
4646
4647 @itemize
4648 @item
4649 List all available plugins within amp (LADSPA example plugin) library:
4650 @example
4651 ladspa=file=amp
4652 @end example
4653
4654 @item
4655 List all available controls and their valid ranges for @code{vcf_notch}
4656 plugin from @code{VCF} library:
4657 @example
4658 ladspa=f=vcf:p=vcf_notch:c=help
4659 @end example
4660
4661 @item
4662 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4663 plugin library:
4664 @example
4665 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4666 @end example
4667
4668 @item
4669 Add reverberation to the audio using TAP-plugins
4670 (Tom's Audio Processing plugins):
4671 @example
4672 ladspa=file=tap_reverb:tap_reverb
4673 @end example
4674
4675 @item
4676 Generate white noise, with 0.2 amplitude:
4677 @example
4678 ladspa=file=cmt:noise_source_white:c=c0=.2
4679 @end example
4680
4681 @item
4682 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4683 @code{C* Audio Plugin Suite} (CAPS) library:
4684 @example
4685 ladspa=file=caps:Click:c=c1=20'
4686 @end example
4687
4688 @item
4689 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4690 @example
4691 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4692 @end example
4693
4694 @item
4695 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4696 @code{SWH Plugins} collection:
4697 @example
4698 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4699 @end example
4700
4701 @item
4702 Attenuate low frequencies using Multiband EQ from Steve Harris
4703 @code{SWH Plugins} collection:
4704 @example
4705 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4706 @end example
4707
4708 @item
4709 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4710 (CAPS) library:
4711 @example
4712 ladspa=caps:Narrower
4713 @end example
4714
4715 @item
4716 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4717 @example
4718 ladspa=caps:White:.2
4719 @end example
4720
4721 @item
4722 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4723 @example
4724 ladspa=caps:Fractal:c=c1=1
4725 @end example
4726
4727 @item
4728 Dynamic volume normalization using @code{VLevel} plugin:
4729 @example
4730 ladspa=vlevel-ladspa:vlevel_mono
4731 @end example
4732 @end itemize
4733
4734 @subsection Commands
4735
4736 This filter supports the following commands:
4737 @table @option
4738 @item cN
4739 Modify the @var{N}-th control value.
4740
4741 If the specified value is not valid, it is ignored and prior one is kept.
4742 @end table
4743
4744 @section loudnorm
4745
4746 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4747 Support for both single pass (livestreams, files) and double pass (files) modes.
4748 This algorithm can target IL, LRA, and maximum true peak. In dynamic mode, to accurately
4749 detect true peaks, the audio stream will be upsampled to 192 kHz.
4750 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4751
4752 The filter accepts the following options:
4753
4754 @table @option
4755 @item I, i
4756 Set integrated loudness target.
4757 Range is -70.0 - -5.0. Default value is -24.0.
4758
4759 @item LRA, lra
4760 Set loudness range target.
4761 Range is 1.0 - 20.0. Default value is 7.0.
4762
4763 @item TP, tp
4764 Set maximum true peak.
4765 Range is -9.0 - +0.0. Default value is -2.0.
4766
4767 @item measured_I, measured_i
4768 Measured IL of input file.
4769 Range is -99.0 - +0.0.
4770
4771 @item measured_LRA, measured_lra
4772 Measured LRA of input file.
4773 Range is  0.0 - 99.0.
4774
4775 @item measured_TP, measured_tp
4776 Measured true peak of input file.
4777 Range is  -99.0 - +99.0.
4778
4779 @item measured_thresh
4780 Measured threshold of input file.
4781 Range is -99.0 - +0.0.
4782
4783 @item offset
4784 Set offset gain. Gain is applied before the true-peak limiter.
4785 Range is  -99.0 - +99.0. Default is +0.0.
4786
4787 @item linear
4788 Normalize by linearly scaling the source audio.
4789 @code{measured_I}, @code{measured_LRA}, @code{measured_TP},
4790 and @code{measured_thresh} must all be specified. Target LRA shouldn't
4791 be lower than source LRA and the change in integrated loudness shouldn't
4792 result in a true peak which exceeds the target TP. If any of these
4793 conditions aren't met, normalization mode will revert to @var{dynamic}.
4794 Options are @code{true} or @code{false}. Default is @code{true}.
4795
4796 @item dual_mono
4797 Treat mono input files as "dual-mono". If a mono file is intended for playback
4798 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4799 If set to @code{true}, this option will compensate for this effect.
4800 Multi-channel input files are not affected by this option.
4801 Options are true or false. Default is false.
4802
4803 @item print_format
4804 Set print format for stats. Options are summary, json, or none.
4805 Default value is none.
4806 @end table
4807
4808 @section lowpass
4809
4810 Apply a low-pass filter with 3dB point frequency.
4811 The filter can be either single-pole or double-pole (the default).
4812 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4813
4814 The filter accepts the following options:
4815
4816 @table @option
4817 @item frequency, f
4818 Set frequency in Hz. Default is 500.
4819
4820 @item poles, p
4821 Set number of poles. Default is 2.
4822
4823 @item width_type, t
4824 Set method to specify band-width of filter.
4825 @table @option
4826 @item h
4827 Hz
4828 @item q
4829 Q-Factor
4830 @item o
4831 octave
4832 @item s
4833 slope
4834 @item k
4835 kHz
4836 @end table
4837
4838 @item width, w
4839 Specify the band-width of a filter in width_type units.
4840 Applies only to double-pole filter.
4841 The default is 0.707q and gives a Butterworth response.
4842
4843 @item mix, m
4844 How much to use filtered signal in output. Default is 1.
4845 Range is between 0 and 1.
4846
4847 @item channels, c
4848 Specify which channels to filter, by default all available are filtered.
4849
4850 @item normalize, n
4851 Normalize biquad coefficients, by default is disabled.
4852 Enabling it will normalize magnitude response at DC to 0dB.
4853
4854 @item transform, a
4855 Set transform type of IIR filter.
4856 @table @option
4857 @item di
4858 @item dii
4859 @item tdii
4860 @item latt
4861 @end table
4862
4863 @item precision, r
4864 Set precison of filtering.
4865 @table @option
4866 @item auto
4867 Pick automatic sample format depending on surround filters.
4868 @item s16
4869 Always use signed 16-bit.
4870 @item s32
4871 Always use signed 32-bit.
4872 @item f32
4873 Always use float 32-bit.
4874 @item f64
4875 Always use float 64-bit.
4876 @end table
4877 @end table
4878
4879 @subsection Examples
4880 @itemize
4881 @item
4882 Lowpass only LFE channel, it LFE is not present it does nothing:
4883 @example
4884 lowpass=c=LFE
4885 @end example
4886 @end itemize
4887
4888 @subsection Commands
4889
4890 This filter supports the following commands:
4891 @table @option
4892 @item frequency, f
4893 Change lowpass frequency.
4894 Syntax for the command is : "@var{frequency}"
4895
4896 @item width_type, t
4897 Change lowpass width_type.
4898 Syntax for the command is : "@var{width_type}"
4899
4900 @item width, w
4901 Change lowpass width.
4902 Syntax for the command is : "@var{width}"
4903
4904 @item mix, m
4905 Change lowpass mix.
4906 Syntax for the command is : "@var{mix}"
4907 @end table
4908
4909 @section lv2
4910
4911 Load a LV2 (LADSPA Version 2) plugin.
4912
4913 To enable compilation of this filter you need to configure FFmpeg with
4914 @code{--enable-lv2}.
4915
4916 @table @option
4917 @item plugin, p
4918 Specifies the plugin URI. You may need to escape ':'.
4919
4920 @item controls, c
4921 Set the '|' separated list of controls which are zero or more floating point
4922 values that determine the behavior of the loaded plugin (for example delay,
4923 threshold or gain).
4924 If @option{controls} is set to @code{help}, all available controls and
4925 their valid ranges are printed.
4926
4927 @item sample_rate, s
4928 Specify the sample rate, default to 44100. Only used if plugin have
4929 zero inputs.
4930
4931 @item nb_samples, n
4932 Set the number of samples per channel per each output frame, default
4933 is 1024. Only used if plugin have zero inputs.
4934
4935 @item duration, d
4936 Set the minimum duration of the sourced audio. See
4937 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4938 for the accepted syntax.
4939 Note that the resulting duration may be greater than the specified duration,
4940 as the generated audio is always cut at the end of a complete frame.
4941 If not specified, or the expressed duration is negative, the audio is
4942 supposed to be generated forever.
4943 Only used if plugin have zero inputs.
4944 @end table
4945
4946 @subsection Examples
4947
4948 @itemize
4949 @item
4950 Apply bass enhancer plugin from Calf:
4951 @example
4952 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4953 @end example
4954
4955 @item
4956 Apply vinyl plugin from Calf:
4957 @example
4958 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4959 @end example
4960
4961 @item
4962 Apply bit crusher plugin from ArtyFX:
4963 @example
4964 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4965 @end example
4966 @end itemize
4967
4968 @section mcompand
4969 Multiband Compress or expand the audio's dynamic range.
4970
4971 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4972 This is akin to the crossover of a loudspeaker, and results in flat frequency
4973 response when absent compander action.
4974
4975 It accepts the following parameters:
4976
4977 @table @option
4978 @item args
4979 This option syntax is:
4980 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4981 For explanation of each item refer to compand filter documentation.
4982 @end table
4983
4984 @anchor{pan}
4985 @section pan
4986
4987 Mix channels with specific gain levels. The filter accepts the output
4988 channel layout followed by a set of channels definitions.
4989
4990 This filter is also designed to efficiently remap the channels of an audio
4991 stream.
4992
4993 The filter accepts parameters of the form:
4994 "@var{l}|@var{outdef}|@var{outdef}|..."
4995
4996 @table @option
4997 @item l
4998 output channel layout or number of channels
4999
5000 @item outdef
5001 output channel specification, of the form:
5002 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
5003
5004 @item out_name
5005 output channel to define, either a channel name (FL, FR, etc.) or a channel
5006 number (c0, c1, etc.)
5007
5008 @item gain
5009 multiplicative coefficient for the channel, 1 leaving the volume unchanged
5010
5011 @item in_name
5012 input channel to use, see out_name for details; it is not possible to mix
5013 named and numbered input channels
5014 @end table
5015
5016 If the `=' in a channel specification is replaced by `<', then the gains for
5017 that specification will be renormalized so that the total is 1, thus
5018 avoiding clipping noise.
5019
5020 @subsection Mixing examples
5021
5022 For example, if you want to down-mix from stereo to mono, but with a bigger
5023 factor for the left channel:
5024 @example
5025 pan=1c|c0=0.9*c0+0.1*c1
5026 @end example
5027
5028 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
5029 7-channels surround:
5030 @example
5031 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
5032 @end example
5033
5034 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
5035 that should be preferred (see "-ac" option) unless you have very specific
5036 needs.
5037
5038 @subsection Remapping examples
5039
5040 The channel remapping will be effective if, and only if:
5041
5042 @itemize
5043 @item gain coefficients are zeroes or ones,
5044 @item only one input per channel output,
5045 @end itemize
5046
5047 If all these conditions are satisfied, the filter will notify the user ("Pure
5048 channel mapping detected"), and use an optimized and lossless method to do the
5049 remapping.
5050
5051 For example, if you have a 5.1 source and want a stereo audio stream by
5052 dropping the extra channels:
5053 @example
5054 pan="stereo| c0=FL | c1=FR"
5055 @end example
5056
5057 Given the same source, you can also switch front left and front right channels
5058 and keep the input channel layout:
5059 @example
5060 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
5061 @end example
5062
5063 If the input is a stereo audio stream, you can mute the front left channel (and
5064 still keep the stereo channel layout) with:
5065 @example
5066 pan="stereo|c1=c1"
5067 @end example
5068
5069 Still with a stereo audio stream input, you can copy the right channel in both
5070 front left and right:
5071 @example
5072 pan="stereo| c0=FR | c1=FR"
5073 @end example
5074
5075 @section replaygain
5076
5077 ReplayGain scanner filter. This filter takes an audio stream as an input and
5078 outputs it unchanged.
5079 At end of filtering it displays @code{track_gain} and @code{track_peak}.
5080
5081 @section resample
5082
5083 Convert the audio sample format, sample rate and channel layout. It is
5084 not meant to be used directly.
5085
5086 @section rubberband
5087 Apply time-stretching and pitch-shifting with librubberband.
5088
5089 To enable compilation of this filter, you need to configure FFmpeg with
5090 @code{--enable-librubberband}.
5091
5092 The filter accepts the following options:
5093
5094 @table @option
5095 @item tempo
5096 Set tempo scale factor.
5097
5098 @item pitch
5099 Set pitch scale factor.
5100
5101 @item transients
5102 Set transients detector.
5103 Possible values are:
5104 @table @var
5105 @item crisp
5106 @item mixed
5107 @item smooth
5108 @end table
5109
5110 @item detector
5111 Set detector.
5112 Possible values are:
5113 @table @var
5114 @item compound
5115 @item percussive
5116 @item soft
5117 @end table
5118
5119 @item phase
5120 Set phase.
5121 Possible values are:
5122 @table @var
5123 @item laminar
5124 @item independent
5125 @end table
5126
5127 @item window
5128 Set processing window size.
5129 Possible values are:
5130 @table @var
5131 @item standard
5132 @item short
5133 @item long
5134 @end table
5135
5136 @item smoothing
5137 Set smoothing.
5138 Possible values are:
5139 @table @var
5140 @item off
5141 @item on
5142 @end table
5143
5144 @item formant
5145 Enable formant preservation when shift pitching.
5146 Possible values are:
5147 @table @var
5148 @item shifted
5149 @item preserved
5150 @end table
5151
5152 @item pitchq
5153 Set pitch quality.
5154 Possible values are:
5155 @table @var
5156 @item quality
5157 @item speed
5158 @item consistency
5159 @end table
5160
5161 @item channels
5162 Set channels.
5163 Possible values are:
5164 @table @var
5165 @item apart
5166 @item together
5167 @end table
5168 @end table
5169
5170 @subsection Commands
5171
5172 This filter supports the following commands:
5173 @table @option
5174 @item tempo
5175 Change filter tempo scale factor.
5176 Syntax for the command is : "@var{tempo}"
5177
5178 @item pitch
5179 Change filter pitch scale factor.
5180 Syntax for the command is : "@var{pitch}"
5181 @end table
5182
5183 @section sidechaincompress
5184
5185 This filter acts like normal compressor but has the ability to compress
5186 detected signal using second input signal.
5187 It needs two input streams and returns one output stream.
5188 First input stream will be processed depending on second stream signal.
5189 The filtered signal then can be filtered with other filters in later stages of
5190 processing. See @ref{pan} and @ref{amerge} filter.
5191
5192 The filter accepts the following options:
5193
5194 @table @option
5195 @item level_in
5196 Set input gain. Default is 1. Range is between 0.015625 and 64.
5197
5198 @item mode
5199 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
5200 Default is @code{downward}.
5201
5202 @item threshold
5203 If a signal of second stream raises above this level it will affect the gain
5204 reduction of first stream.
5205 By default is 0.125. Range is between 0.00097563 and 1.
5206
5207 @item ratio
5208 Set a ratio about which the signal is reduced. 1:2 means that if the level
5209 raised 4dB above the threshold, it will be only 2dB above after the reduction.
5210 Default is 2. Range is between 1 and 20.
5211
5212 @item attack
5213 Amount of milliseconds the signal has to rise above the threshold before gain
5214 reduction starts. Default is 20. Range is between 0.01 and 2000.
5215
5216 @item release
5217 Amount of milliseconds the signal has to fall below the threshold before
5218 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
5219
5220 @item makeup
5221 Set the amount by how much signal will be amplified after processing.
5222 Default is 1. Range is from 1 to 64.
5223
5224 @item knee
5225 Curve the sharp knee around the threshold to enter gain reduction more softly.
5226 Default is 2.82843. Range is between 1 and 8.
5227
5228 @item link
5229 Choose if the @code{average} level between all channels of side-chain stream
5230 or the louder(@code{maximum}) channel of side-chain stream affects the
5231 reduction. Default is @code{average}.
5232
5233 @item detection
5234 Should the exact signal be taken in case of @code{peak} or an RMS one in case
5235 of @code{rms}. Default is @code{rms} which is mainly smoother.
5236
5237 @item level_sc
5238 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
5239
5240 @item mix
5241 How much to use compressed signal in output. Default is 1.
5242 Range is between 0 and 1.
5243 @end table
5244
5245 @subsection Commands
5246
5247 This filter supports the all above options as @ref{commands}.
5248
5249 @subsection Examples
5250
5251 @itemize
5252 @item
5253 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
5254 depending on the signal of 2nd input and later compressed signal to be
5255 merged with 2nd input:
5256 @example
5257 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
5258 @end example
5259 @end itemize
5260
5261 @section sidechaingate
5262
5263 A sidechain gate acts like a normal (wideband) gate but has the ability to
5264 filter the detected signal before sending it to the gain reduction stage.
5265 Normally a gate uses the full range signal to detect a level above the
5266 threshold.
5267 For example: If you cut all lower frequencies from your sidechain signal
5268 the gate will decrease the volume of your track only if not enough highs
5269 appear. With this technique you are able to reduce the resonation of a
5270 natural drum or remove "rumbling" of muted strokes from a heavily distorted
5271 guitar.
5272 It needs two input streams and returns one output stream.
5273 First input stream will be processed depending on second stream signal.
5274
5275 The filter accepts the following options:
5276
5277 @table @option
5278 @item level_in
5279 Set input level before filtering.
5280 Default is 1. Allowed range is from 0.015625 to 64.
5281
5282 @item mode
5283 Set the mode of operation. Can be @code{upward} or @code{downward}.
5284 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
5285 will be amplified, expanding dynamic range in upward direction.
5286 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
5287
5288 @item range
5289 Set the level of gain reduction when the signal is below the threshold.
5290 Default is 0.06125. Allowed range is from 0 to 1.
5291 Setting this to 0 disables reduction and then filter behaves like expander.
5292
5293 @item threshold
5294 If a signal rises above this level the gain reduction is released.
5295 Default is 0.125. Allowed range is from 0 to 1.
5296
5297 @item ratio
5298 Set a ratio about which the signal is reduced.
5299 Default is 2. Allowed range is from 1 to 9000.
5300
5301 @item attack
5302 Amount of milliseconds the signal has to rise above the threshold before gain
5303 reduction stops.
5304 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
5305
5306 @item release
5307 Amount of milliseconds the signal has to fall below the threshold before the
5308 reduction is increased again. Default is 250 milliseconds.
5309 Allowed range is from 0.01 to 9000.
5310
5311 @item makeup
5312 Set amount of amplification of signal after processing.
5313 Default is 1. Allowed range is from 1 to 64.
5314
5315 @item knee
5316 Curve the sharp knee around the threshold to enter gain reduction more softly.
5317 Default is 2.828427125. Allowed range is from 1 to 8.
5318
5319 @item detection
5320 Choose if exact signal should be taken for detection or an RMS like one.
5321 Default is rms. Can be peak or rms.
5322
5323 @item link
5324 Choose if the average level between all channels or the louder channel affects
5325 the reduction.
5326 Default is average. Can be average or maximum.
5327
5328 @item level_sc
5329 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
5330 @end table
5331
5332 @subsection Commands
5333
5334 This filter supports the all above options as @ref{commands}.
5335
5336 @section silencedetect
5337
5338 Detect silence in an audio stream.
5339
5340 This filter logs a message when it detects that the input audio volume is less
5341 or equal to a noise tolerance value for a duration greater or equal to the
5342 minimum detected noise duration.
5343
5344 The printed times and duration are expressed in seconds. The
5345 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
5346 is set on the first frame whose timestamp equals or exceeds the detection
5347 duration and it contains the timestamp of the first frame of the silence.
5348
5349 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
5350 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
5351 keys are set on the first frame after the silence. If @option{mono} is
5352 enabled, and each channel is evaluated separately, the @code{.X}
5353 suffixed keys are used, and @code{X} corresponds to the channel number.
5354
5355 The filter accepts the following options:
5356
5357 @table @option
5358 @item noise, n
5359 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
5360 specified value) or amplitude ratio. Default is -60dB, or 0.001.
5361
5362 @item duration, d
5363 Set silence duration until notification (default is 2 seconds). See
5364 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5365 for the accepted syntax.
5366
5367 @item mono, m
5368 Process each channel separately, instead of combined. By default is disabled.
5369 @end table
5370
5371 @subsection Examples
5372
5373 @itemize
5374 @item
5375 Detect 5 seconds of silence with -50dB noise tolerance:
5376 @example
5377 silencedetect=n=-50dB:d=5
5378 @end example
5379
5380 @item
5381 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
5382 tolerance in @file{silence.mp3}:
5383 @example
5384 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
5385 @end example
5386 @end itemize
5387
5388 @section silenceremove
5389
5390 Remove silence from the beginning, middle or end of the audio.
5391
5392 The filter accepts the following options:
5393
5394 @table @option
5395 @item start_periods
5396 This value is used to indicate if audio should be trimmed at beginning of
5397 the audio. A value of zero indicates no silence should be trimmed from the
5398 beginning. When specifying a non-zero value, it trims audio up until it
5399 finds non-silence. Normally, when trimming silence from beginning of audio
5400 the @var{start_periods} will be @code{1} but it can be increased to higher
5401 values to trim all audio up to specific count of non-silence periods.
5402 Default value is @code{0}.
5403
5404 @item start_duration
5405 Specify the amount of time that non-silence must be detected before it stops
5406 trimming audio. By increasing the duration, bursts of noises can be treated
5407 as silence and trimmed off. Default value is @code{0}.
5408
5409 @item start_threshold
5410 This indicates what sample value should be treated as silence. For digital
5411 audio, a value of @code{0} may be fine but for audio recorded from analog,
5412 you may wish to increase the value to account for background noise.
5413 Can be specified in dB (in case "dB" is appended to the specified value)
5414 or amplitude ratio. Default value is @code{0}.
5415
5416 @item start_silence
5417 Specify max duration of silence at beginning that will be kept after
5418 trimming. Default is 0, which is equal to trimming all samples detected
5419 as silence.
5420
5421 @item start_mode
5422 Specify mode of detection of silence end in start of multi-channel audio.
5423 Can be @var{any} or @var{all}. Default is @var{any}.
5424 With @var{any}, any sample that is detected as non-silence will cause
5425 stopped trimming of silence.
5426 With @var{all}, only if all channels are detected as non-silence will cause
5427 stopped trimming of silence.
5428
5429 @item stop_periods
5430 Set the count for trimming silence from the end of audio.
5431 To remove silence from the middle of a file, specify a @var{stop_periods}
5432 that is negative. This value is then treated as a positive value and is
5433 used to indicate the effect should restart processing as specified by
5434 @var{start_periods}, making it suitable for removing periods of silence
5435 in the middle of the audio.
5436 Default value is @code{0}.
5437
5438 @item stop_duration
5439 Specify a duration of silence that must exist before audio is not copied any
5440 more. By specifying a higher duration, silence that is wanted can be left in
5441 the audio.
5442 Default value is @code{0}.
5443
5444 @item stop_threshold
5445 This is the same as @option{start_threshold} but for trimming silence from
5446 the end of audio.
5447 Can be specified in dB (in case "dB" is appended to the specified value)
5448 or amplitude ratio. Default value is @code{0}.
5449
5450 @item stop_silence
5451 Specify max duration of silence at end that will be kept after
5452 trimming. Default is 0, which is equal to trimming all samples detected
5453 as silence.
5454
5455 @item stop_mode
5456 Specify mode of detection of silence start in end of multi-channel audio.
5457 Can be @var{any} or @var{all}. Default is @var{any}.
5458 With @var{any}, any sample that is detected as non-silence will cause
5459 stopped trimming of silence.
5460 With @var{all}, only if all channels are detected as non-silence will cause
5461 stopped trimming of silence.
5462
5463 @item detection
5464 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
5465 and works better with digital silence which is exactly 0.
5466 Default value is @code{rms}.
5467
5468 @item window
5469 Set duration in number of seconds used to calculate size of window in number
5470 of samples for detecting silence.
5471 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
5472 @end table
5473
5474 @subsection Examples
5475
5476 @itemize
5477 @item
5478 The following example shows how this filter can be used to start a recording
5479 that does not contain the delay at the start which usually occurs between
5480 pressing the record button and the start of the performance:
5481 @example
5482 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
5483 @end example
5484
5485 @item
5486 Trim all silence encountered from beginning to end where there is more than 1
5487 second of silence in audio:
5488 @example
5489 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
5490 @end example
5491
5492 @item
5493 Trim all digital silence samples, using peak detection, from beginning to end
5494 where there is more than 0 samples of digital silence in audio and digital
5495 silence is detected in all channels at same positions in stream:
5496 @example
5497 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
5498 @end example
5499 @end itemize
5500
5501 @section sofalizer
5502
5503 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
5504 loudspeakers around the user for binaural listening via headphones (audio
5505 formats up to 9 channels supported).
5506 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
5507 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
5508 Austrian Academy of Sciences.
5509
5510 To enable compilation of this filter you need to configure FFmpeg with
5511 @code{--enable-libmysofa}.
5512
5513 The filter accepts the following options:
5514
5515 @table @option
5516 @item sofa
5517 Set the SOFA file used for rendering.
5518
5519 @item gain
5520 Set gain applied to audio. Value is in dB. Default is 0.
5521
5522 @item rotation
5523 Set rotation of virtual loudspeakers in deg. Default is 0.
5524
5525 @item elevation
5526 Set elevation of virtual speakers in deg. Default is 0.
5527
5528 @item radius
5529 Set distance in meters between loudspeakers and the listener with near-field
5530 HRTFs. Default is 1.
5531
5532 @item type
5533 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
5534 processing audio in time domain which is slow.
5535 @var{freq} is processing audio in frequency domain which is fast.
5536 Default is @var{freq}.
5537
5538 @item speakers
5539 Set custom positions of virtual loudspeakers. Syntax for this option is:
5540 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
5541 Each virtual loudspeaker is described with short channel name following with
5542 azimuth and elevation in degrees.
5543 Each virtual loudspeaker description is separated by '|'.
5544 For example to override front left and front right channel positions use:
5545 'speakers=FL 45 15|FR 345 15'.
5546 Descriptions with unrecognised channel names are ignored.
5547
5548 @item lfegain
5549 Set custom gain for LFE channels. Value is in dB. Default is 0.
5550
5551 @item framesize
5552 Set custom frame size in number of samples. Default is 1024.
5553 Allowed range is from 1024 to 96000. Only used if option @samp{type}
5554 is set to @var{freq}.
5555
5556 @item normalize
5557 Should all IRs be normalized upon importing SOFA file.
5558 By default is enabled.
5559
5560 @item interpolate
5561 Should nearest IRs be interpolated with neighbor IRs if exact position
5562 does not match. By default is disabled.
5563
5564 @item minphase
5565 Minphase all IRs upon loading of SOFA file. By default is disabled.
5566
5567 @item anglestep
5568 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
5569
5570 @item radstep
5571 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
5572 @end table
5573
5574 @subsection Examples
5575
5576 @itemize
5577 @item
5578 Using ClubFritz6 sofa file:
5579 @example
5580 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
5581 @end example
5582
5583 @item
5584 Using ClubFritz12 sofa file and bigger radius with small rotation:
5585 @example
5586 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
5587 @end example
5588
5589 @item
5590 Similar as above but with custom speaker positions for front left, front right, back left and back right
5591 and also with custom gain:
5592 @example
5593 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
5594 @end example
5595 @end itemize
5596
5597 @section speechnorm
5598 Speech Normalizer.
5599
5600 This filter expands or compresses each half-cycle of audio samples
5601 (local set of samples all above or all below zero and between two nearest zero crossings) depending
5602 on threshold value, so audio reaches target peak value under conditions controlled by below options.
5603
5604 The filter accepts the following options:
5605
5606 @table @option
5607 @item peak, p
5608 Set the expansion target peak value. This specifies the highest allowed absolute amplitude
5609 level for the normalized audio input. Default value is 0.95. Allowed range is from 0.0 to 1.0.
5610
5611 @item expansion, e
5612 Set the maximum expansion factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5613 This option controls maximum local half-cycle of samples expansion. The maximum expansion
5614 would be such that local peak value reaches target peak value but never to surpass it and that
5615 ratio between new and previous peak value does not surpass this option value.
5616
5617 @item compression, c
5618 Set the maximum compression factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5619 This option controls maximum local half-cycle of samples compression. This option is used
5620 only if @option{threshold} option is set to value greater than 0.0, then in such cases
5621 when local peak is lower or same as value set by @option{threshold} all samples belonging to
5622 that peak's half-cycle will be compressed by current compression factor.
5623
5624 @item threshold, t
5625 Set the threshold value. Default value is 0.0. Allowed range is from 0.0 to 1.0.
5626 This option specifies which half-cycles of samples will be compressed and which will be expanded.
5627 Any half-cycle samples with their local peak value below or same as this option value will be
5628 compressed by current compression factor, otherwise, if greater than threshold value they will be
5629 expanded with expansion factor so that it could reach peak target value but never surpass it.
5630
5631 @item raise, r
5632 Set the expansion raising amount per each half-cycle of samples. Default value is 0.001.
5633 Allowed range is from 0.0 to 1.0. This controls how fast expansion factor is raised per
5634 each new half-cycle until it reaches @option{expansion} value.
5635 Setting this options too high may lead to distortions.
5636
5637 @item fall, f
5638 Set the compression raising amount per each half-cycle of samples. Default value is 0.001.
5639 Allowed range is from 0.0 to 1.0. This controls how fast compression factor is raised per
5640 each new half-cycle until it reaches @option{compression} value.
5641
5642 @item channels, h
5643 Specify which channels to filter, by default all available channels are filtered.
5644
5645 @item invert, i
5646 Enable inverted filtering, by default is disabled. This inverts interpretation of @option{threshold}
5647 option. When enabled any half-cycle of samples with their local peak value below or same as
5648 @option{threshold} option will be expanded otherwise it will be compressed.
5649
5650 @item link, l
5651 Link channels when calculating gain applied to each filtered channel sample, by default is disabled.
5652 When disabled each filtered channel gain calculation is independent, otherwise when this option
5653 is enabled the minimum of all possible gains for each filtered channel is used.
5654 @end table
5655
5656 @subsection Commands
5657
5658 This filter supports the all above options as @ref{commands}.
5659
5660 @section stereotools
5661
5662 This filter has some handy utilities to manage stereo signals, for converting
5663 M/S stereo recordings to L/R signal while having control over the parameters
5664 or spreading the stereo image of master track.
5665
5666 The filter accepts the following options:
5667
5668 @table @option
5669 @item level_in
5670 Set input level before filtering for both channels. Defaults is 1.
5671 Allowed range is from 0.015625 to 64.
5672
5673 @item level_out
5674 Set output level after filtering for both channels. Defaults is 1.
5675 Allowed range is from 0.015625 to 64.
5676
5677 @item balance_in
5678 Set input balance between both channels. Default is 0.
5679 Allowed range is from -1 to 1.
5680
5681 @item balance_out
5682 Set output balance between both channels. Default is 0.
5683 Allowed range is from -1 to 1.
5684
5685 @item softclip
5686 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
5687 clipping. Disabled by default.
5688
5689 @item mutel
5690 Mute the left channel. Disabled by default.
5691
5692 @item muter
5693 Mute the right channel. Disabled by default.
5694
5695 @item phasel
5696 Change the phase of the left channel. Disabled by default.
5697
5698 @item phaser
5699 Change the phase of the right channel. Disabled by default.
5700
5701 @item mode
5702 Set stereo mode. Available values are:
5703
5704 @table @samp
5705 @item lr>lr
5706 Left/Right to Left/Right, this is default.
5707
5708 @item lr>ms
5709 Left/Right to Mid/Side.
5710
5711 @item ms>lr
5712 Mid/Side to Left/Right.
5713
5714 @item lr>ll
5715 Left/Right to Left/Left.
5716
5717 @item lr>rr
5718 Left/Right to Right/Right.
5719
5720 @item lr>l+r
5721 Left/Right to Left + Right.
5722
5723 @item lr>rl
5724 Left/Right to Right/Left.
5725
5726 @item ms>ll
5727 Mid/Side to Left/Left.
5728
5729 @item ms>rr
5730 Mid/Side to Right/Right.
5731
5732 @item ms>rl
5733 Mid/Side to Right/Left.
5734
5735 @item lr>l-r
5736 Left/Right to Left - Right.
5737 @end table
5738
5739 @item slev
5740 Set level of side signal. Default is 1.
5741 Allowed range is from 0.015625 to 64.
5742
5743 @item sbal
5744 Set balance of side signal. Default is 0.
5745 Allowed range is from -1 to 1.
5746
5747 @item mlev
5748 Set level of the middle signal. Default is 1.
5749 Allowed range is from 0.015625 to 64.
5750
5751 @item mpan
5752 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5753
5754 @item base
5755 Set stereo base between mono and inversed channels. Default is 0.
5756 Allowed range is from -1 to 1.
5757
5758 @item delay
5759 Set delay in milliseconds how much to delay left from right channel and
5760 vice versa. Default is 0. Allowed range is from -20 to 20.
5761
5762 @item sclevel
5763 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5764
5765 @item phase
5766 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5767
5768 @item bmode_in, bmode_out
5769 Set balance mode for balance_in/balance_out option.
5770
5771 Can be one of the following:
5772
5773 @table @samp
5774 @item balance
5775 Classic balance mode. Attenuate one channel at time.
5776 Gain is raised up to 1.
5777
5778 @item amplitude
5779 Similar as classic mode above but gain is raised up to 2.
5780
5781 @item power
5782 Equal power distribution, from -6dB to +6dB range.
5783 @end table
5784 @end table
5785
5786 @subsection Commands
5787
5788 This filter supports the all above options as @ref{commands}.
5789
5790 @subsection Examples
5791
5792 @itemize
5793 @item
5794 Apply karaoke like effect:
5795 @example
5796 stereotools=mlev=0.015625
5797 @end example
5798
5799 @item
5800 Convert M/S signal to L/R:
5801 @example
5802 "stereotools=mode=ms>lr"
5803 @end example
5804 @end itemize
5805
5806 @section stereowiden
5807
5808 This filter enhance the stereo effect by suppressing signal common to both
5809 channels and by delaying the signal of left into right and vice versa,
5810 thereby widening the stereo effect.
5811
5812 The filter accepts the following options:
5813
5814 @table @option
5815 @item delay
5816 Time in milliseconds of the delay of left signal into right and vice versa.
5817 Default is 20 milliseconds.
5818
5819 @item feedback
5820 Amount of gain in delayed signal into right and vice versa. Gives a delay
5821 effect of left signal in right output and vice versa which gives widening
5822 effect. Default is 0.3.
5823
5824 @item crossfeed
5825 Cross feed of left into right with inverted phase. This helps in suppressing
5826 the mono. If the value is 1 it will cancel all the signal common to both
5827 channels. Default is 0.3.
5828
5829 @item drymix
5830 Set level of input signal of original channel. Default is 0.8.
5831 @end table
5832
5833 @subsection Commands
5834
5835 This filter supports the all above options except @code{delay} as @ref{commands}.
5836
5837 @section superequalizer
5838 Apply 18 band equalizer.
5839
5840 The filter accepts the following options:
5841 @table @option
5842 @item 1b
5843 Set 65Hz band gain.
5844 @item 2b
5845 Set 92Hz band gain.
5846 @item 3b
5847 Set 131Hz band gain.
5848 @item 4b
5849 Set 185Hz band gain.
5850 @item 5b
5851 Set 262Hz band gain.
5852 @item 6b
5853 Set 370Hz band gain.
5854 @item 7b
5855 Set 523Hz band gain.
5856 @item 8b
5857 Set 740Hz band gain.
5858 @item 9b
5859 Set 1047Hz band gain.
5860 @item 10b
5861 Set 1480Hz band gain.
5862 @item 11b
5863 Set 2093Hz band gain.
5864 @item 12b
5865 Set 2960Hz band gain.
5866 @item 13b
5867 Set 4186Hz band gain.
5868 @item 14b
5869 Set 5920Hz band gain.
5870 @item 15b
5871 Set 8372Hz band gain.
5872 @item 16b
5873 Set 11840Hz band gain.
5874 @item 17b
5875 Set 16744Hz band gain.
5876 @item 18b
5877 Set 20000Hz band gain.
5878 @end table
5879
5880 @section surround
5881 Apply audio surround upmix filter.
5882
5883 This filter allows to produce multichannel output from audio stream.
5884
5885 The filter accepts the following options:
5886
5887 @table @option
5888 @item chl_out
5889 Set output channel layout. By default, this is @var{5.1}.
5890
5891 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5892 for the required syntax.
5893
5894 @item chl_in
5895 Set input channel layout. By default, this is @var{stereo}.
5896
5897 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5898 for the required syntax.
5899
5900 @item level_in
5901 Set input volume level. By default, this is @var{1}.
5902
5903 @item level_out
5904 Set output volume level. By default, this is @var{1}.
5905
5906 @item lfe
5907 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5908
5909 @item lfe_low
5910 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5911
5912 @item lfe_high
5913 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5914
5915 @item lfe_mode
5916 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5917 In @var{add} mode, LFE channel is created from input audio and added to output.
5918 In @var{sub} mode, LFE channel is created from input audio and added to output but
5919 also all non-LFE output channels are subtracted with output LFE channel.
5920
5921 @item angle
5922 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5923 Default is @var{90}.
5924
5925 @item fc_in
5926 Set front center input volume. By default, this is @var{1}.
5927
5928 @item fc_out
5929 Set front center output volume. By default, this is @var{1}.
5930
5931 @item fl_in
5932 Set front left input volume. By default, this is @var{1}.
5933
5934 @item fl_out
5935 Set front left output volume. By default, this is @var{1}.
5936
5937 @item fr_in
5938 Set front right input volume. By default, this is @var{1}.
5939
5940 @item fr_out
5941 Set front right output volume. By default, this is @var{1}.
5942
5943 @item sl_in
5944 Set side left input volume. By default, this is @var{1}.
5945
5946 @item sl_out
5947 Set side left output volume. By default, this is @var{1}.
5948
5949 @item sr_in
5950 Set side right input volume. By default, this is @var{1}.
5951
5952 @item sr_out
5953 Set side right output volume. By default, this is @var{1}.
5954
5955 @item bl_in
5956 Set back left input volume. By default, this is @var{1}.
5957
5958 @item bl_out
5959 Set back left output volume. By default, this is @var{1}.
5960
5961 @item br_in
5962 Set back right input volume. By default, this is @var{1}.
5963
5964 @item br_out
5965 Set back right output volume. By default, this is @var{1}.
5966
5967 @item bc_in
5968 Set back center input volume. By default, this is @var{1}.
5969
5970 @item bc_out
5971 Set back center output volume. By default, this is @var{1}.
5972
5973 @item lfe_in
5974 Set LFE input volume. By default, this is @var{1}.
5975
5976 @item lfe_out
5977 Set LFE output volume. By default, this is @var{1}.
5978
5979 @item allx
5980 Set spread usage of stereo image across X axis for all channels.
5981
5982 @item ally
5983 Set spread usage of stereo image across Y axis for all channels.
5984
5985 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5986 Set spread usage of stereo image across X axis for each channel.
5987
5988 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5989 Set spread usage of stereo image across Y axis for each channel.
5990
5991 @item win_size
5992 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5993
5994 @item win_func
5995 Set window function.
5996
5997 It accepts the following values:
5998 @table @samp
5999 @item rect
6000 @item bartlett
6001 @item hann, hanning
6002 @item hamming
6003 @item blackman
6004 @item welch
6005 @item flattop
6006 @item bharris
6007 @item bnuttall
6008 @item bhann
6009 @item sine
6010 @item nuttall
6011 @item lanczos
6012 @item gauss
6013 @item tukey
6014 @item dolph
6015 @item cauchy
6016 @item parzen
6017 @item poisson
6018 @item bohman
6019 @end table
6020 Default is @code{hann}.
6021
6022 @item overlap
6023 Set window overlap. If set to 1, the recommended overlap for selected
6024 window function will be picked. Default is @code{0.5}.
6025 @end table
6026
6027 @section treble, highshelf
6028
6029 Boost or cut treble (upper) frequencies of the audio using a two-pole
6030 shelving filter with a response similar to that of a standard
6031 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
6032
6033 The filter accepts the following options:
6034
6035 @table @option
6036 @item gain, g
6037 Give the gain at whichever is the lower of ~22 kHz and the
6038 Nyquist frequency. Its useful range is about -20 (for a large cut)
6039 to +20 (for a large boost). Beware of clipping when using a positive gain.
6040
6041 @item frequency, f
6042 Set the filter's central frequency and so can be used
6043 to extend or reduce the frequency range to be boosted or cut.
6044 The default value is @code{3000} Hz.
6045
6046 @item width_type, t
6047 Set method to specify band-width of filter.
6048 @table @option
6049 @item h
6050 Hz
6051 @item q
6052 Q-Factor
6053 @item o
6054 octave
6055 @item s
6056 slope
6057 @item k
6058 kHz
6059 @end table
6060
6061 @item width, w
6062 Determine how steep is the filter's shelf transition.
6063
6064 @item poles, p
6065 Set number of poles. Default is 2.
6066
6067 @item mix, m
6068 How much to use filtered signal in output. Default is 1.
6069 Range is between 0 and 1.
6070
6071 @item channels, c
6072 Specify which channels to filter, by default all available are filtered.
6073
6074 @item normalize, n
6075 Normalize biquad coefficients, by default is disabled.
6076 Enabling it will normalize magnitude response at DC to 0dB.
6077
6078 @item transform, a
6079 Set transform type of IIR filter.
6080 @table @option
6081 @item di
6082 @item dii
6083 @item tdii
6084 @item latt
6085 @end table
6086
6087 @item precision, r
6088 Set precison of filtering.
6089 @table @option
6090 @item auto
6091 Pick automatic sample format depending on surround filters.
6092 @item s16
6093 Always use signed 16-bit.
6094 @item s32
6095 Always use signed 32-bit.
6096 @item f32
6097 Always use float 32-bit.
6098 @item f64
6099 Always use float 64-bit.
6100 @end table
6101 @end table
6102
6103 @subsection Commands
6104
6105 This filter supports the following commands:
6106 @table @option
6107 @item frequency, f
6108 Change treble frequency.
6109 Syntax for the command is : "@var{frequency}"
6110
6111 @item width_type, t
6112 Change treble width_type.
6113 Syntax for the command is : "@var{width_type}"
6114
6115 @item width, w
6116 Change treble width.
6117 Syntax for the command is : "@var{width}"
6118
6119 @item gain, g
6120 Change treble gain.
6121 Syntax for the command is : "@var{gain}"
6122
6123 @item mix, m
6124 Change treble mix.
6125 Syntax for the command is : "@var{mix}"
6126 @end table
6127
6128 @section tremolo
6129
6130 Sinusoidal amplitude modulation.
6131
6132 The filter accepts the following options:
6133
6134 @table @option
6135 @item f
6136 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
6137 (20 Hz or lower) will result in a tremolo effect.
6138 This filter may also be used as a ring modulator by specifying
6139 a modulation frequency higher than 20 Hz.
6140 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
6141
6142 @item d
6143 Depth of modulation as a percentage. Range is 0.0 - 1.0.
6144 Default value is 0.5.
6145 @end table
6146
6147 @section vibrato
6148
6149 Sinusoidal phase modulation.
6150
6151 The filter accepts the following options:
6152
6153 @table @option
6154 @item f
6155 Modulation frequency in Hertz.
6156 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
6157
6158 @item d
6159 Depth of modulation as a percentage. Range is 0.0 - 1.0.
6160 Default value is 0.5.
6161 @end table
6162
6163 @section volume
6164
6165 Adjust the input audio volume.
6166
6167 It accepts the following parameters:
6168 @table @option
6169
6170 @item volume
6171 Set audio volume expression.
6172
6173 Output values are clipped to the maximum value.
6174
6175 The output audio volume is given by the relation:
6176 @example
6177 @var{output_volume} = @var{volume} * @var{input_volume}
6178 @end example
6179
6180 The default value for @var{volume} is "1.0".
6181
6182 @item precision
6183 This parameter represents the mathematical precision.
6184
6185 It determines which input sample formats will be allowed, which affects the
6186 precision of the volume scaling.
6187
6188 @table @option
6189 @item fixed
6190 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
6191 @item float
6192 32-bit floating-point; this limits input sample format to FLT. (default)
6193 @item double
6194 64-bit floating-point; this limits input sample format to DBL.
6195 @end table
6196
6197 @item replaygain
6198 Choose the behaviour on encountering ReplayGain side data in input frames.
6199
6200 @table @option
6201 @item drop
6202 Remove ReplayGain side data, ignoring its contents (the default).
6203
6204 @item ignore
6205 Ignore ReplayGain side data, but leave it in the frame.
6206
6207 @item track
6208 Prefer the track gain, if present.
6209
6210 @item album
6211 Prefer the album gain, if present.
6212 @end table
6213
6214 @item replaygain_preamp
6215 Pre-amplification gain in dB to apply to the selected replaygain gain.
6216
6217 Default value for @var{replaygain_preamp} is 0.0.
6218
6219 @item replaygain_noclip
6220 Prevent clipping by limiting the gain applied.
6221
6222 Default value for @var{replaygain_noclip} is 1.
6223
6224 @item eval
6225 Set when the volume expression is evaluated.
6226
6227 It accepts the following values:
6228 @table @samp
6229 @item once
6230 only evaluate expression once during the filter initialization, or
6231 when the @samp{volume} command is sent
6232
6233 @item frame
6234 evaluate expression for each incoming frame
6235 @end table
6236
6237 Default value is @samp{once}.
6238 @end table
6239
6240 The volume expression can contain the following parameters.
6241
6242 @table @option
6243 @item n
6244 frame number (starting at zero)
6245 @item nb_channels
6246 number of channels
6247 @item nb_consumed_samples
6248 number of samples consumed by the filter
6249 @item nb_samples
6250 number of samples in the current frame
6251 @item pos
6252 original frame position in the file
6253 @item pts
6254 frame PTS
6255 @item sample_rate
6256 sample rate
6257 @item startpts
6258 PTS at start of stream
6259 @item startt
6260 time at start of stream
6261 @item t
6262 frame time
6263 @item tb
6264 timestamp timebase
6265 @item volume
6266 last set volume value
6267 @end table
6268
6269 Note that when @option{eval} is set to @samp{once} only the
6270 @var{sample_rate} and @var{tb} variables are available, all other
6271 variables will evaluate to NAN.
6272
6273 @subsection Commands
6274
6275 This filter supports the following commands:
6276 @table @option
6277 @item volume
6278 Modify the volume expression.
6279 The command accepts the same syntax of the corresponding option.
6280
6281 If the specified expression is not valid, it is kept at its current
6282 value.
6283 @end table
6284
6285 @subsection Examples
6286
6287 @itemize
6288 @item
6289 Halve the input audio volume:
6290 @example
6291 volume=volume=0.5
6292 volume=volume=1/2
6293 volume=volume=-6.0206dB
6294 @end example
6295
6296 In all the above example the named key for @option{volume} can be
6297 omitted, for example like in:
6298 @example
6299 volume=0.5
6300 @end example
6301
6302 @item
6303 Increase input audio power by 6 decibels using fixed-point precision:
6304 @example
6305 volume=volume=6dB:precision=fixed
6306 @end example
6307
6308 @item
6309 Fade volume after time 10 with an annihilation period of 5 seconds:
6310 @example
6311 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
6312 @end example
6313 @end itemize
6314
6315 @section volumedetect
6316
6317 Detect the volume of the input video.
6318
6319 The filter has no parameters. The input is not modified. Statistics about
6320 the volume will be printed in the log when the input stream end is reached.
6321
6322 In particular it will show the mean volume (root mean square), maximum
6323 volume (on a per-sample basis), and the beginning of a histogram of the
6324 registered volume values (from the maximum value to a cumulated 1/1000 of
6325 the samples).
6326
6327 All volumes are in decibels relative to the maximum PCM value.
6328
6329 @subsection Examples
6330
6331 Here is an excerpt of the output:
6332 @example
6333 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
6334 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
6335 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
6336 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
6337 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
6338 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
6339 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
6340 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
6341 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
6342 @end example
6343
6344 It means that:
6345 @itemize
6346 @item
6347 The mean square energy is approximately -27 dB, or 10^-2.7.
6348 @item
6349 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
6350 @item
6351 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
6352 @end itemize
6353
6354 In other words, raising the volume by +4 dB does not cause any clipping,
6355 raising it by +5 dB causes clipping for 6 samples, etc.
6356
6357 @c man end AUDIO FILTERS
6358
6359 @chapter Audio Sources
6360 @c man begin AUDIO SOURCES
6361
6362 Below is a description of the currently available audio sources.
6363
6364 @section abuffer
6365
6366 Buffer audio frames, and make them available to the filter chain.
6367
6368 This source is mainly intended for a programmatic use, in particular
6369 through the interface defined in @file{libavfilter/buffersrc.h}.
6370
6371 It accepts the following parameters:
6372 @table @option
6373
6374 @item time_base
6375 The timebase which will be used for timestamps of submitted frames. It must be
6376 either a floating-point number or in @var{numerator}/@var{denominator} form.
6377
6378 @item sample_rate
6379 The sample rate of the incoming audio buffers.
6380
6381 @item sample_fmt
6382 The sample format of the incoming audio buffers.
6383 Either a sample format name or its corresponding integer representation from
6384 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
6385
6386 @item channel_layout
6387 The channel layout of the incoming audio buffers.
6388 Either a channel layout name from channel_layout_map in
6389 @file{libavutil/channel_layout.c} or its corresponding integer representation
6390 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
6391
6392 @item channels
6393 The number of channels of the incoming audio buffers.
6394 If both @var{channels} and @var{channel_layout} are specified, then they
6395 must be consistent.
6396
6397 @end table
6398
6399 @subsection Examples
6400
6401 @example
6402 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
6403 @end example
6404
6405 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
6406 Since the sample format with name "s16p" corresponds to the number
6407 6 and the "stereo" channel layout corresponds to the value 0x3, this is
6408 equivalent to:
6409 @example
6410 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
6411 @end example
6412
6413 @section aevalsrc
6414
6415 Generate an audio signal specified by an expression.
6416
6417 This source accepts in input one or more expressions (one for each
6418 channel), which are evaluated and used to generate a corresponding
6419 audio signal.
6420
6421 This source accepts the following options:
6422
6423 @table @option
6424 @item exprs
6425 Set the '|'-separated expressions list for each separate channel. In case the
6426 @option{channel_layout} option is not specified, the selected channel layout
6427 depends on the number of provided expressions. Otherwise the last
6428 specified expression is applied to the remaining output channels.
6429
6430 @item channel_layout, c
6431 Set the channel layout. The number of channels in the specified layout
6432 must be equal to the number of specified expressions.
6433
6434 @item duration, d
6435 Set the minimum duration of the sourced audio. See
6436 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6437 for the accepted syntax.
6438 Note that the resulting duration may be greater than the specified
6439 duration, as the generated audio is always cut at the end of a
6440 complete frame.
6441
6442 If not specified, or the expressed duration is negative, the audio is
6443 supposed to be generated forever.
6444
6445 @item nb_samples, n
6446 Set the number of samples per channel per each output frame,
6447 default to 1024.
6448
6449 @item sample_rate, s
6450 Specify the sample rate, default to 44100.
6451 @end table
6452
6453 Each expression in @var{exprs} can contain the following constants:
6454
6455 @table @option
6456 @item n
6457 number of the evaluated sample, starting from 0
6458
6459 @item t
6460 time of the evaluated sample expressed in seconds, starting from 0
6461
6462 @item s
6463 sample rate
6464
6465 @end table
6466
6467 @subsection Examples
6468
6469 @itemize
6470 @item
6471 Generate silence:
6472 @example
6473 aevalsrc=0
6474 @end example
6475
6476 @item
6477 Generate a sin signal with frequency of 440 Hz, set sample rate to
6478 8000 Hz:
6479 @example
6480 aevalsrc="sin(440*2*PI*t):s=8000"
6481 @end example
6482
6483 @item
6484 Generate a two channels signal, specify the channel layout (Front
6485 Center + Back Center) explicitly:
6486 @example
6487 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
6488 @end example
6489
6490 @item
6491 Generate white noise:
6492 @example
6493 aevalsrc="-2+random(0)"
6494 @end example
6495
6496 @item
6497 Generate an amplitude modulated signal:
6498 @example
6499 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
6500 @end example
6501
6502 @item
6503 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
6504 @example
6505 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
6506 @end example
6507
6508 @end itemize
6509
6510 @section afirsrc
6511
6512 Generate a FIR coefficients using frequency sampling method.
6513
6514 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6515
6516 The filter accepts the following options:
6517
6518 @table @option
6519 @item taps, t
6520 Set number of filter coefficents in output audio stream.
6521 Default value is 1025.
6522
6523 @item frequency, f
6524 Set frequency points from where magnitude and phase are set.
6525 This must be in non decreasing order, and first element must be 0, while last element
6526 must be 1. Elements are separated by white spaces.
6527
6528 @item magnitude, m
6529 Set magnitude value for every frequency point set by @option{frequency}.
6530 Number of values must be same as number of frequency points.
6531 Values are separated by white spaces.
6532
6533 @item phase, p
6534 Set phase value for every frequency point set by @option{frequency}.
6535 Number of values must be same as number of frequency points.
6536 Values are separated by white spaces.
6537
6538 @item sample_rate, r
6539 Set sample rate, default is 44100.
6540
6541 @item nb_samples, n
6542 Set number of samples per each frame. Default is 1024.
6543
6544 @item win_func, w
6545 Set window function. Default is blackman.
6546 @end table
6547
6548 @section anullsrc
6549
6550 The null audio source, return unprocessed audio frames. It is mainly useful
6551 as a template and to be employed in analysis / debugging tools, or as
6552 the source for filters which ignore the input data (for example the sox
6553 synth filter).
6554
6555 This source accepts the following options:
6556
6557 @table @option
6558
6559 @item channel_layout, cl
6560
6561 Specifies the channel layout, and can be either an integer or a string
6562 representing a channel layout. The default value of @var{channel_layout}
6563 is "stereo".
6564
6565 Check the channel_layout_map definition in
6566 @file{libavutil/channel_layout.c} for the mapping between strings and
6567 channel layout values.
6568
6569 @item sample_rate, r
6570 Specifies the sample rate, and defaults to 44100.
6571
6572 @item nb_samples, n
6573 Set the number of samples per requested frames.
6574
6575 @item duration, d
6576 Set the duration of the sourced audio. See
6577 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6578 for the accepted syntax.
6579
6580 If not specified, or the expressed duration is negative, the audio is
6581 supposed to be generated forever.
6582 @end table
6583
6584 @subsection Examples
6585
6586 @itemize
6587 @item
6588 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
6589 @example
6590 anullsrc=r=48000:cl=4
6591 @end example
6592
6593 @item
6594 Do the same operation with a more obvious syntax:
6595 @example
6596 anullsrc=r=48000:cl=mono
6597 @end example
6598 @end itemize
6599
6600 All the parameters need to be explicitly defined.
6601
6602 @section flite
6603
6604 Synthesize a voice utterance using the libflite library.
6605
6606 To enable compilation of this filter you need to configure FFmpeg with
6607 @code{--enable-libflite}.
6608
6609 Note that versions of the flite library prior to 2.0 are not thread-safe.
6610
6611 The filter accepts the following options:
6612
6613 @table @option
6614
6615 @item list_voices
6616 If set to 1, list the names of the available voices and exit
6617 immediately. Default value is 0.
6618
6619 @item nb_samples, n
6620 Set the maximum number of samples per frame. Default value is 512.
6621
6622 @item textfile
6623 Set the filename containing the text to speak.
6624
6625 @item text
6626 Set the text to speak.
6627
6628 @item voice, v
6629 Set the voice to use for the speech synthesis. Default value is
6630 @code{kal}. See also the @var{list_voices} option.
6631 @end table
6632
6633 @subsection Examples
6634
6635 @itemize
6636 @item
6637 Read from file @file{speech.txt}, and synthesize the text using the
6638 standard flite voice:
6639 @example
6640 flite=textfile=speech.txt
6641 @end example
6642
6643 @item
6644 Read the specified text selecting the @code{slt} voice:
6645 @example
6646 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6647 @end example
6648
6649 @item
6650 Input text to ffmpeg:
6651 @example
6652 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6653 @end example
6654
6655 @item
6656 Make @file{ffplay} speak the specified text, using @code{flite} and
6657 the @code{lavfi} device:
6658 @example
6659 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
6660 @end example
6661 @end itemize
6662
6663 For more information about libflite, check:
6664 @url{http://www.festvox.org/flite/}
6665
6666 @section anoisesrc
6667
6668 Generate a noise audio signal.
6669
6670 The filter accepts the following options:
6671
6672 @table @option
6673 @item sample_rate, r
6674 Specify the sample rate. Default value is 48000 Hz.
6675
6676 @item amplitude, a
6677 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
6678 is 1.0.
6679
6680 @item duration, d
6681 Specify the duration of the generated audio stream. Not specifying this option
6682 results in noise with an infinite length.
6683
6684 @item color, colour, c
6685 Specify the color of noise. Available noise colors are white, pink, brown,
6686 blue, violet and velvet. Default color is white.
6687
6688 @item seed, s
6689 Specify a value used to seed the PRNG.
6690
6691 @item nb_samples, n
6692 Set the number of samples per each output frame, default is 1024.
6693 @end table
6694
6695 @subsection Examples
6696
6697 @itemize
6698
6699 @item
6700 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
6701 @example
6702 anoisesrc=d=60:c=pink:r=44100:a=0.5
6703 @end example
6704 @end itemize
6705
6706 @section hilbert
6707
6708 Generate odd-tap Hilbert transform FIR coefficients.
6709
6710 The resulting stream can be used with @ref{afir} filter for phase-shifting
6711 the signal by 90 degrees.
6712
6713 This is used in many matrix coding schemes and for analytic signal generation.
6714 The process is often written as a multiplication by i (or j), the imaginary unit.
6715
6716 The filter accepts the following options:
6717
6718 @table @option
6719
6720 @item sample_rate, s
6721 Set sample rate, default is 44100.
6722
6723 @item taps, t
6724 Set length of FIR filter, default is 22051.
6725
6726 @item nb_samples, n
6727 Set number of samples per each frame.
6728
6729 @item win_func, w
6730 Set window function to be used when generating FIR coefficients.
6731 @end table
6732
6733 @section sinc
6734
6735 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
6736
6737 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6738
6739 The filter accepts the following options:
6740
6741 @table @option
6742 @item sample_rate, r
6743 Set sample rate, default is 44100.
6744
6745 @item nb_samples, n
6746 Set number of samples per each frame. Default is 1024.
6747
6748 @item hp
6749 Set high-pass frequency. Default is 0.
6750
6751 @item lp
6752 Set low-pass frequency. Default is 0.
6753 If high-pass frequency is lower than low-pass frequency and low-pass frequency
6754 is higher than 0 then filter will create band-pass filter coefficients,
6755 otherwise band-reject filter coefficients.
6756
6757 @item phase
6758 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
6759
6760 @item beta
6761 Set Kaiser window beta.
6762
6763 @item att
6764 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
6765
6766 @item round
6767 Enable rounding, by default is disabled.
6768
6769 @item hptaps
6770 Set number of taps for high-pass filter.
6771
6772 @item lptaps
6773 Set number of taps for low-pass filter.
6774 @end table
6775
6776 @section sine
6777
6778 Generate an audio signal made of a sine wave with amplitude 1/8.
6779
6780 The audio signal is bit-exact.
6781
6782 The filter accepts the following options:
6783
6784 @table @option
6785
6786 @item frequency, f
6787 Set the carrier frequency. Default is 440 Hz.
6788
6789 @item beep_factor, b
6790 Enable a periodic beep every second with frequency @var{beep_factor} times
6791 the carrier frequency. Default is 0, meaning the beep is disabled.
6792
6793 @item sample_rate, r
6794 Specify the sample rate, default is 44100.
6795
6796 @item duration, d
6797 Specify the duration of the generated audio stream.
6798
6799 @item samples_per_frame
6800 Set the number of samples per output frame.
6801
6802 The expression can contain the following constants:
6803
6804 @table @option
6805 @item n
6806 The (sequential) number of the output audio frame, starting from 0.
6807
6808 @item pts
6809 The PTS (Presentation TimeStamp) of the output audio frame,
6810 expressed in @var{TB} units.
6811
6812 @item t
6813 The PTS of the output audio frame, expressed in seconds.
6814
6815 @item TB
6816 The timebase of the output audio frames.
6817 @end table
6818
6819 Default is @code{1024}.
6820 @end table
6821
6822 @subsection Examples
6823
6824 @itemize
6825
6826 @item
6827 Generate a simple 440 Hz sine wave:
6828 @example
6829 sine
6830 @end example
6831
6832 @item
6833 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6834 @example
6835 sine=220:4:d=5
6836 sine=f=220:b=4:d=5
6837 sine=frequency=220:beep_factor=4:duration=5
6838 @end example
6839
6840 @item
6841 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6842 pattern:
6843 @example
6844 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6845 @end example
6846 @end itemize
6847
6848 @c man end AUDIO SOURCES
6849
6850 @chapter Audio Sinks
6851 @c man begin AUDIO SINKS
6852
6853 Below is a description of the currently available audio sinks.
6854
6855 @section abuffersink
6856
6857 Buffer audio frames, and make them available to the end of filter chain.
6858
6859 This sink is mainly intended for programmatic use, in particular
6860 through the interface defined in @file{libavfilter/buffersink.h}
6861 or the options system.
6862
6863 It accepts a pointer to an AVABufferSinkContext structure, which
6864 defines the incoming buffers' formats, to be passed as the opaque
6865 parameter to @code{avfilter_init_filter} for initialization.
6866 @section anullsink
6867
6868 Null audio sink; do absolutely nothing with the input audio. It is
6869 mainly useful as a template and for use in analysis / debugging
6870 tools.
6871
6872 @c man end AUDIO SINKS
6873
6874 @chapter Video Filters
6875 @c man begin VIDEO FILTERS
6876
6877 When you configure your FFmpeg build, you can disable any of the
6878 existing filters using @code{--disable-filters}.
6879 The configure output will show the video filters included in your
6880 build.
6881
6882 Below is a description of the currently available video filters.
6883
6884 @section addroi
6885
6886 Mark a region of interest in a video frame.
6887
6888 The frame data is passed through unchanged, but metadata is attached
6889 to the frame indicating regions of interest which can affect the
6890 behaviour of later encoding.  Multiple regions can be marked by
6891 applying the filter multiple times.
6892
6893 @table @option
6894 @item x
6895 Region distance in pixels from the left edge of the frame.
6896 @item y
6897 Region distance in pixels from the top edge of the frame.
6898 @item w
6899 Region width in pixels.
6900 @item h
6901 Region height in pixels.
6902
6903 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6904 and may contain the following variables:
6905 @table @option
6906 @item iw
6907 Width of the input frame.
6908 @item ih
6909 Height of the input frame.
6910 @end table
6911
6912 @item qoffset
6913 Quantisation offset to apply within the region.
6914
6915 This must be a real value in the range -1 to +1.  A value of zero
6916 indicates no quality change.  A negative value asks for better quality
6917 (less quantisation), while a positive value asks for worse quality
6918 (greater quantisation).
6919
6920 The range is calibrated so that the extreme values indicate the
6921 largest possible offset - if the rest of the frame is encoded with the
6922 worst possible quality, an offset of -1 indicates that this region
6923 should be encoded with the best possible quality anyway.  Intermediate
6924 values are then interpolated in some codec-dependent way.
6925
6926 For example, in 10-bit H.264 the quantisation parameter varies between
6927 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6928 this region should be encoded with a QP around one-tenth of the full
6929 range better than the rest of the frame.  So, if most of the frame
6930 were to be encoded with a QP of around 30, this region would get a QP
6931 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6932 An extreme value of -1 would indicate that this region should be
6933 encoded with the best possible quality regardless of the treatment of
6934 the rest of the frame - that is, should be encoded at a QP of -12.
6935 @item clear
6936 If set to true, remove any existing regions of interest marked on the
6937 frame before adding the new one.
6938 @end table
6939
6940 @subsection Examples
6941
6942 @itemize
6943 @item
6944 Mark the centre quarter of the frame as interesting.
6945 @example
6946 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6947 @end example
6948 @item
6949 Mark the 100-pixel-wide region on the left edge of the frame as very
6950 uninteresting (to be encoded at much lower quality than the rest of
6951 the frame).
6952 @example
6953 addroi=0:0:100:ih:+1/5
6954 @end example
6955 @end itemize
6956
6957 @section alphaextract
6958
6959 Extract the alpha component from the input as a grayscale video. This
6960 is especially useful with the @var{alphamerge} filter.
6961
6962 @section alphamerge
6963
6964 Add or replace the alpha component of the primary input with the
6965 grayscale value of a second input. This is intended for use with
6966 @var{alphaextract} to allow the transmission or storage of frame
6967 sequences that have alpha in a format that doesn't support an alpha
6968 channel.
6969
6970 For example, to reconstruct full frames from a normal YUV-encoded video
6971 and a separate video created with @var{alphaextract}, you might use:
6972 @example
6973 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6974 @end example
6975
6976 @section amplify
6977
6978 Amplify differences between current pixel and pixels of adjacent frames in
6979 same pixel location.
6980
6981 This filter accepts the following options:
6982
6983 @table @option
6984 @item radius
6985 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6986 For example radius of 3 will instruct filter to calculate average of 7 frames.
6987
6988 @item factor
6989 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6990
6991 @item threshold
6992 Set threshold for difference amplification. Any difference greater or equal to
6993 this value will not alter source pixel. Default is 10.
6994 Allowed range is from 0 to 65535.
6995
6996 @item tolerance
6997 Set tolerance for difference amplification. Any difference lower to
6998 this value will not alter source pixel. Default is 0.
6999 Allowed range is from 0 to 65535.
7000
7001 @item low
7002 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
7003 This option controls maximum possible value that will decrease source pixel value.
7004
7005 @item high
7006 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
7007 This option controls maximum possible value that will increase source pixel value.
7008
7009 @item planes
7010 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
7011 @end table
7012
7013 @subsection Commands
7014
7015 This filter supports the following @ref{commands} that corresponds to option of same name:
7016 @table @option
7017 @item factor
7018 @item threshold
7019 @item tolerance
7020 @item low
7021 @item high
7022 @item planes
7023 @end table
7024
7025 @section ass
7026
7027 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
7028 and libavformat to work. On the other hand, it is limited to ASS (Advanced
7029 Substation Alpha) subtitles files.
7030
7031 This filter accepts the following option in addition to the common options from
7032 the @ref{subtitles} filter:
7033
7034 @table @option
7035 @item shaping
7036 Set the shaping engine
7037
7038 Available values are:
7039 @table @samp
7040 @item auto
7041 The default libass shaping engine, which is the best available.
7042 @item simple
7043 Fast, font-agnostic shaper that can do only substitutions
7044 @item complex
7045 Slower shaper using OpenType for substitutions and positioning
7046 @end table
7047
7048 The default is @code{auto}.
7049 @end table
7050
7051 @section atadenoise
7052 Apply an Adaptive Temporal Averaging Denoiser to the video input.
7053
7054 The filter accepts the following options:
7055
7056 @table @option
7057 @item 0a
7058 Set threshold A for 1st plane. Default is 0.02.
7059 Valid range is 0 to 0.3.
7060
7061 @item 0b
7062 Set threshold B for 1st plane. Default is 0.04.
7063 Valid range is 0 to 5.
7064
7065 @item 1a
7066 Set threshold A for 2nd plane. Default is 0.02.
7067 Valid range is 0 to 0.3.
7068
7069 @item 1b
7070 Set threshold B for 2nd plane. Default is 0.04.
7071 Valid range is 0 to 5.
7072
7073 @item 2a
7074 Set threshold A for 3rd plane. Default is 0.02.
7075 Valid range is 0 to 0.3.
7076
7077 @item 2b
7078 Set threshold B for 3rd plane. Default is 0.04.
7079 Valid range is 0 to 5.
7080
7081 Threshold A is designed to react on abrupt changes in the input signal and
7082 threshold B is designed to react on continuous changes in the input signal.
7083
7084 @item s
7085 Set number of frames filter will use for averaging. Default is 9. Must be odd
7086 number in range [5, 129].
7087
7088 @item p
7089 Set what planes of frame filter will use for averaging. Default is all.
7090
7091 @item a
7092 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
7093 Alternatively can be set to @code{s} serial.
7094
7095 Parallel can be faster then serial, while other way around is never true.
7096 Parallel will abort early on first change being greater then thresholds, while serial
7097 will continue processing other side of frames if they are equal or below thresholds.
7098 @end table
7099
7100 @subsection Commands
7101 This filter supports same @ref{commands} as options except option @code{s}.
7102 The command accepts the same syntax of the corresponding option.
7103
7104 @section avgblur
7105
7106 Apply average blur filter.
7107
7108 The filter accepts the following options:
7109
7110 @table @option
7111 @item sizeX
7112 Set horizontal radius size.
7113
7114 @item planes
7115 Set which planes to filter. By default all planes are filtered.
7116
7117 @item sizeY
7118 Set vertical radius size, if zero it will be same as @code{sizeX}.
7119 Default is @code{0}.
7120 @end table
7121
7122 @subsection Commands
7123 This filter supports same commands as options.
7124 The command accepts the same syntax of the corresponding option.
7125
7126 If the specified expression is not valid, it is kept at its current
7127 value.
7128
7129 @section bbox
7130
7131 Compute the bounding box for the non-black pixels in the input frame
7132 luminance plane.
7133
7134 This filter computes the bounding box containing all the pixels with a
7135 luminance value greater than the minimum allowed value.
7136 The parameters describing the bounding box are printed on the filter
7137 log.
7138
7139 The filter accepts the following option:
7140
7141 @table @option
7142 @item min_val
7143 Set the minimal luminance value. Default is @code{16}.
7144 @end table
7145
7146 @section bilateral
7147 Apply bilateral filter, spatial smoothing while preserving edges.
7148
7149 The filter accepts the following options:
7150 @table @option
7151 @item sigmaS
7152 Set sigma of gaussian function to calculate spatial weight.
7153 Allowed range is 0 to 512. Default is 0.1.
7154
7155 @item sigmaR
7156 Set sigma of gaussian function to calculate range weight.
7157 Allowed range is 0 to 1. Default is 0.1.
7158
7159 @item planes
7160 Set planes to filter. Default is first only.
7161 @end table
7162
7163 @subsection Commands
7164
7165 This filter supports the all above options as @ref{commands}.
7166
7167 @section bitplanenoise
7168
7169 Show and measure bit plane noise.
7170
7171 The filter accepts the following options:
7172
7173 @table @option
7174 @item bitplane
7175 Set which plane to analyze. Default is @code{1}.
7176
7177 @item filter
7178 Filter out noisy pixels from @code{bitplane} set above.
7179 Default is disabled.
7180 @end table
7181
7182 @section blackdetect
7183
7184 Detect video intervals that are (almost) completely black. Can be
7185 useful to detect chapter transitions, commercials, or invalid
7186 recordings.
7187
7188 The filter outputs its detection analysis to both the log as well as
7189 frame metadata. If a black segment of at least the specified minimum
7190 duration is found, a line with the start and end timestamps as well
7191 as duration is printed to the log with level @code{info}. In addition,
7192 a log line with level @code{debug} is printed per frame showing the
7193 black amount detected for that frame.
7194
7195 The filter also attaches metadata to the first frame of a black
7196 segment with key @code{lavfi.black_start} and to the first frame
7197 after the black segment ends with key @code{lavfi.black_end}. The
7198 value is the frame's timestamp. This metadata is added regardless
7199 of the minimum duration specified.
7200
7201 The filter accepts the following options:
7202
7203 @table @option
7204 @item black_min_duration, d
7205 Set the minimum detected black duration expressed in seconds. It must
7206 be a non-negative floating point number.
7207
7208 Default value is 2.0.
7209
7210 @item picture_black_ratio_th, pic_th
7211 Set the threshold for considering a picture "black".
7212 Express the minimum value for the ratio:
7213 @example
7214 @var{nb_black_pixels} / @var{nb_pixels}
7215 @end example
7216
7217 for which a picture is considered black.
7218 Default value is 0.98.
7219
7220 @item pixel_black_th, pix_th
7221 Set the threshold for considering a pixel "black".
7222
7223 The threshold expresses the maximum pixel luminance value for which a
7224 pixel is considered "black". The provided value is scaled according to
7225 the following equation:
7226 @example
7227 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
7228 @end example
7229
7230 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
7231 the input video format, the range is [0-255] for YUV full-range
7232 formats and [16-235] for YUV non full-range formats.
7233
7234 Default value is 0.10.
7235 @end table
7236
7237 The following example sets the maximum pixel threshold to the minimum
7238 value, and detects only black intervals of 2 or more seconds:
7239 @example
7240 blackdetect=d=2:pix_th=0.00
7241 @end example
7242
7243 @section blackframe
7244
7245 Detect frames that are (almost) completely black. Can be useful to
7246 detect chapter transitions or commercials. Output lines consist of
7247 the frame number of the detected frame, the percentage of blackness,
7248 the position in the file if known or -1 and the timestamp in seconds.
7249
7250 In order to display the output lines, you need to set the loglevel at
7251 least to the AV_LOG_INFO value.
7252
7253 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
7254 The value represents the percentage of pixels in the picture that
7255 are below the threshold value.
7256
7257 It accepts the following parameters:
7258
7259 @table @option
7260
7261 @item amount
7262 The percentage of the pixels that have to be below the threshold; it defaults to
7263 @code{98}.
7264
7265 @item threshold, thresh
7266 The threshold below which a pixel value is considered black; it defaults to
7267 @code{32}.
7268
7269 @end table
7270
7271 @anchor{blend}
7272 @section blend
7273
7274 Blend two video frames into each other.
7275
7276 The @code{blend} filter takes two input streams and outputs one
7277 stream, the first input is the "top" layer and second input is
7278 "bottom" layer.  By default, the output terminates when the longest input terminates.
7279
7280 The @code{tblend} (time blend) filter takes two consecutive frames
7281 from one single stream, and outputs the result obtained by blending
7282 the new frame on top of the old frame.
7283
7284 A description of the accepted options follows.
7285
7286 @table @option
7287 @item c0_mode
7288 @item c1_mode
7289 @item c2_mode
7290 @item c3_mode
7291 @item all_mode
7292 Set blend mode for specific pixel component or all pixel components in case
7293 of @var{all_mode}. Default value is @code{normal}.
7294
7295 Available values for component modes are:
7296 @table @samp
7297 @item addition
7298 @item grainmerge
7299 @item and
7300 @item average
7301 @item burn
7302 @item darken
7303 @item difference
7304 @item grainextract
7305 @item divide
7306 @item dodge
7307 @item freeze
7308 @item exclusion
7309 @item extremity
7310 @item glow
7311 @item hardlight
7312 @item hardmix
7313 @item heat
7314 @item lighten
7315 @item linearlight
7316 @item multiply
7317 @item multiply128
7318 @item negation
7319 @item normal
7320 @item or
7321 @item overlay
7322 @item phoenix
7323 @item pinlight
7324 @item reflect
7325 @item screen
7326 @item softlight
7327 @item subtract
7328 @item vividlight
7329 @item xor
7330 @end table
7331
7332 @item c0_opacity
7333 @item c1_opacity
7334 @item c2_opacity
7335 @item c3_opacity
7336 @item all_opacity
7337 Set blend opacity for specific pixel component or all pixel components in case
7338 of @var{all_opacity}. Only used in combination with pixel component blend modes.
7339
7340 @item c0_expr
7341 @item c1_expr
7342 @item c2_expr
7343 @item c3_expr
7344 @item all_expr
7345 Set blend expression for specific pixel component or all pixel components in case
7346 of @var{all_expr}. Note that related mode options will be ignored if those are set.
7347
7348 The expressions can use the following variables:
7349
7350 @table @option
7351 @item N
7352 The sequential number of the filtered frame, starting from @code{0}.
7353
7354 @item X
7355 @item Y
7356 the coordinates of the current sample
7357
7358 @item W
7359 @item H
7360 the width and height of currently filtered plane
7361
7362 @item SW
7363 @item SH
7364 Width and height scale for the plane being filtered. It is the
7365 ratio between the dimensions of the current plane to the luma plane,
7366 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
7367 the luma plane and @code{0.5,0.5} for the chroma planes.
7368
7369 @item T
7370 Time of the current frame, expressed in seconds.
7371
7372 @item TOP, A
7373 Value of pixel component at current location for first video frame (top layer).
7374
7375 @item BOTTOM, B
7376 Value of pixel component at current location for second video frame (bottom layer).
7377 @end table
7378 @end table
7379
7380 The @code{blend} filter also supports the @ref{framesync} options.
7381
7382 @subsection Examples
7383
7384 @itemize
7385 @item
7386 Apply transition from bottom layer to top layer in first 10 seconds:
7387 @example
7388 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
7389 @end example
7390
7391 @item
7392 Apply linear horizontal transition from top layer to bottom layer:
7393 @example
7394 blend=all_expr='A*(X/W)+B*(1-X/W)'
7395 @end example
7396
7397 @item
7398 Apply 1x1 checkerboard effect:
7399 @example
7400 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
7401 @end example
7402
7403 @item
7404 Apply uncover left effect:
7405 @example
7406 blend=all_expr='if(gte(N*SW+X,W),A,B)'
7407 @end example
7408
7409 @item
7410 Apply uncover down effect:
7411 @example
7412 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
7413 @end example
7414
7415 @item
7416 Apply uncover up-left effect:
7417 @example
7418 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
7419 @end example
7420
7421 @item
7422 Split diagonally video and shows top and bottom layer on each side:
7423 @example
7424 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
7425 @end example
7426
7427 @item
7428 Display differences between the current and the previous frame:
7429 @example
7430 tblend=all_mode=grainextract
7431 @end example
7432 @end itemize
7433
7434 @section bm3d
7435
7436 Denoise frames using Block-Matching 3D algorithm.
7437
7438 The filter accepts the following options.
7439
7440 @table @option
7441 @item sigma
7442 Set denoising strength. Default value is 1.
7443 Allowed range is from 0 to 999.9.
7444 The denoising algorithm is very sensitive to sigma, so adjust it
7445 according to the source.
7446
7447 @item block
7448 Set local patch size. This sets dimensions in 2D.
7449
7450 @item bstep
7451 Set sliding step for processing blocks. Default value is 4.
7452 Allowed range is from 1 to 64.
7453 Smaller values allows processing more reference blocks and is slower.
7454
7455 @item group
7456 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
7457 When set to 1, no block matching is done. Larger values allows more blocks
7458 in single group.
7459 Allowed range is from 1 to 256.
7460
7461 @item range
7462 Set radius for search block matching. Default is 9.
7463 Allowed range is from 1 to INT32_MAX.
7464
7465 @item mstep
7466 Set step between two search locations for block matching. Default is 1.
7467 Allowed range is from 1 to 64. Smaller is slower.
7468
7469 @item thmse
7470 Set threshold of mean square error for block matching. Valid range is 0 to
7471 INT32_MAX.
7472
7473 @item hdthr
7474 Set thresholding parameter for hard thresholding in 3D transformed domain.
7475 Larger values results in stronger hard-thresholding filtering in frequency
7476 domain.
7477
7478 @item estim
7479 Set filtering estimation mode. Can be @code{basic} or @code{final}.
7480 Default is @code{basic}.
7481
7482 @item ref
7483 If enabled, filter will use 2nd stream for block matching.
7484 Default is disabled for @code{basic} value of @var{estim} option,
7485 and always enabled if value of @var{estim} is @code{final}.
7486
7487 @item planes
7488 Set planes to filter. Default is all available except alpha.
7489 @end table
7490
7491 @subsection Examples
7492
7493 @itemize
7494 @item
7495 Basic filtering with bm3d:
7496 @example
7497 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
7498 @end example
7499
7500 @item
7501 Same as above, but filtering only luma:
7502 @example
7503 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
7504 @end example
7505
7506 @item
7507 Same as above, but with both estimation modes:
7508 @example
7509 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
7510 @end example
7511
7512 @item
7513 Same as above, but prefilter with @ref{nlmeans} filter instead:
7514 @example
7515 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
7516 @end example
7517 @end itemize
7518
7519 @section boxblur
7520
7521 Apply a boxblur algorithm to the input video.
7522
7523 It accepts the following parameters:
7524
7525 @table @option
7526
7527 @item luma_radius, lr
7528 @item luma_power, lp
7529 @item chroma_radius, cr
7530 @item chroma_power, cp
7531 @item alpha_radius, ar
7532 @item alpha_power, ap
7533
7534 @end table
7535
7536 A description of the accepted options follows.
7537
7538 @table @option
7539 @item luma_radius, lr
7540 @item chroma_radius, cr
7541 @item alpha_radius, ar
7542 Set an expression for the box radius in pixels used for blurring the
7543 corresponding input plane.
7544
7545 The radius value must be a non-negative number, and must not be
7546 greater than the value of the expression @code{min(w,h)/2} for the
7547 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
7548 planes.
7549
7550 Default value for @option{luma_radius} is "2". If not specified,
7551 @option{chroma_radius} and @option{alpha_radius} default to the
7552 corresponding value set for @option{luma_radius}.
7553
7554 The expressions can contain the following constants:
7555 @table @option
7556 @item w
7557 @item h
7558 The input width and height in pixels.
7559
7560 @item cw
7561 @item ch
7562 The input chroma image width and height in pixels.
7563
7564 @item hsub
7565 @item vsub
7566 The horizontal and vertical chroma subsample values. For example, for the
7567 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
7568 @end table
7569
7570 @item luma_power, lp
7571 @item chroma_power, cp
7572 @item alpha_power, ap
7573 Specify how many times the boxblur filter is applied to the
7574 corresponding plane.
7575
7576 Default value for @option{luma_power} is 2. If not specified,
7577 @option{chroma_power} and @option{alpha_power} default to the
7578 corresponding value set for @option{luma_power}.
7579
7580 A value of 0 will disable the effect.
7581 @end table
7582
7583 @subsection Examples
7584
7585 @itemize
7586 @item
7587 Apply a boxblur filter with the luma, chroma, and alpha radii
7588 set to 2:
7589 @example
7590 boxblur=luma_radius=2:luma_power=1
7591 boxblur=2:1
7592 @end example
7593
7594 @item
7595 Set the luma radius to 2, and alpha and chroma radius to 0:
7596 @example
7597 boxblur=2:1:cr=0:ar=0
7598 @end example
7599
7600 @item
7601 Set the luma and chroma radii to a fraction of the video dimension:
7602 @example
7603 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
7604 @end example
7605 @end itemize
7606
7607 @section bwdif
7608
7609 Deinterlace the input video ("bwdif" stands for "Bob Weaver
7610 Deinterlacing Filter").
7611
7612 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
7613 interpolation algorithms.
7614 It accepts the following parameters:
7615
7616 @table @option
7617 @item mode
7618 The interlacing mode to adopt. It accepts one of the following values:
7619
7620 @table @option
7621 @item 0, send_frame
7622 Output one frame for each frame.
7623 @item 1, send_field
7624 Output one frame for each field.
7625 @end table
7626
7627 The default value is @code{send_field}.
7628
7629 @item parity
7630 The picture field parity assumed for the input interlaced video. It accepts one
7631 of the following values:
7632
7633 @table @option
7634 @item 0, tff
7635 Assume the top field is first.
7636 @item 1, bff
7637 Assume the bottom field is first.
7638 @item -1, auto
7639 Enable automatic detection of field parity.
7640 @end table
7641
7642 The default value is @code{auto}.
7643 If the interlacing is unknown or the decoder does not export this information,
7644 top field first will be assumed.
7645
7646 @item deint
7647 Specify which frames to deinterlace. Accepts one of the following
7648 values:
7649
7650 @table @option
7651 @item 0, all
7652 Deinterlace all frames.
7653 @item 1, interlaced
7654 Only deinterlace frames marked as interlaced.
7655 @end table
7656
7657 The default value is @code{all}.
7658 @end table
7659
7660 @section cas
7661
7662 Apply Contrast Adaptive Sharpen filter to video stream.
7663
7664 The filter accepts the following options:
7665
7666 @table @option
7667 @item strength
7668 Set the sharpening strength. Default value is 0.
7669
7670 @item planes
7671 Set planes to filter. Default value is to filter all
7672 planes except alpha plane.
7673 @end table
7674
7675 @subsection Commands
7676 This filter supports same @ref{commands} as options.
7677
7678 @section chromahold
7679 Remove all color information for all colors except for certain one.
7680
7681 The filter accepts the following options:
7682
7683 @table @option
7684 @item color
7685 The color which will not be replaced with neutral chroma.
7686
7687 @item similarity
7688 Similarity percentage with the above color.
7689 0.01 matches only the exact key color, while 1.0 matches everything.
7690
7691 @item blend
7692 Blend percentage.
7693 0.0 makes pixels either fully gray, or not gray at all.
7694 Higher values result in more preserved color.
7695
7696 @item yuv
7697 Signals that the color passed is already in YUV instead of RGB.
7698
7699 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7700 This can be used to pass exact YUV values as hexadecimal numbers.
7701 @end table
7702
7703 @subsection Commands
7704 This filter supports same @ref{commands} as options.
7705 The command accepts the same syntax of the corresponding option.
7706
7707 If the specified expression is not valid, it is kept at its current
7708 value.
7709
7710 @section chromakey
7711 YUV colorspace color/chroma keying.
7712
7713 The filter accepts the following options:
7714
7715 @table @option
7716 @item color
7717 The color which will be replaced with transparency.
7718
7719 @item similarity
7720 Similarity percentage with the key color.
7721
7722 0.01 matches only the exact key color, while 1.0 matches everything.
7723
7724 @item blend
7725 Blend percentage.
7726
7727 0.0 makes pixels either fully transparent, or not transparent at all.
7728
7729 Higher values result in semi-transparent pixels, with a higher transparency
7730 the more similar the pixels color is to the key color.
7731
7732 @item yuv
7733 Signals that the color passed is already in YUV instead of RGB.
7734
7735 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7736 This can be used to pass exact YUV values as hexadecimal numbers.
7737 @end table
7738
7739 @subsection Commands
7740 This filter supports same @ref{commands} as options.
7741 The command accepts the same syntax of the corresponding option.
7742
7743 If the specified expression is not valid, it is kept at its current
7744 value.
7745
7746 @subsection Examples
7747
7748 @itemize
7749 @item
7750 Make every green pixel in the input image transparent:
7751 @example
7752 ffmpeg -i input.png -vf chromakey=green out.png
7753 @end example
7754
7755 @item
7756 Overlay a greenscreen-video on top of a static black background.
7757 @example
7758 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
7759 @end example
7760 @end itemize
7761
7762 @section chromanr
7763 Reduce chrominance noise.
7764
7765 The filter accepts the following options:
7766
7767 @table @option
7768 @item thres
7769 Set threshold for averaging chrominance values.
7770 Sum of absolute difference of Y, U and V pixel components of current
7771 pixel and neighbour pixels lower than this threshold will be used in
7772 averaging. Luma component is left unchanged and is copied to output.
7773 Default value is 30. Allowed range is from 1 to 200.
7774
7775 @item sizew
7776 Set horizontal radius of rectangle used for averaging.
7777 Allowed range is from 1 to 100. Default value is 5.
7778
7779 @item sizeh
7780 Set vertical radius of rectangle used for averaging.
7781 Allowed range is from 1 to 100. Default value is 5.
7782
7783 @item stepw
7784 Set horizontal step when averaging. Default value is 1.
7785 Allowed range is from 1 to 50.
7786 Mostly useful to speed-up filtering.
7787
7788 @item steph
7789 Set vertical step when averaging. Default value is 1.
7790 Allowed range is from 1 to 50.
7791 Mostly useful to speed-up filtering.
7792
7793 @item threy
7794 Set Y threshold for averaging chrominance values.
7795 Set finer control for max allowed difference between Y components
7796 of current pixel and neigbour pixels.
7797 Default value is 200. Allowed range is from 1 to 200.
7798
7799 @item threu
7800 Set U threshold for averaging chrominance values.
7801 Set finer control for max allowed difference between U components
7802 of current pixel and neigbour pixels.
7803 Default value is 200. Allowed range is from 1 to 200.
7804
7805 @item threv
7806 Set V threshold for averaging chrominance values.
7807 Set finer control for max allowed difference between V components
7808 of current pixel and neigbour pixels.
7809 Default value is 200. Allowed range is from 1 to 200.
7810 @end table
7811
7812 @subsection Commands
7813 This filter supports same @ref{commands} as options.
7814 The command accepts the same syntax of the corresponding option.
7815
7816 @section chromashift
7817 Shift chroma pixels horizontally and/or vertically.
7818
7819 The filter accepts the following options:
7820 @table @option
7821 @item cbh
7822 Set amount to shift chroma-blue horizontally.
7823 @item cbv
7824 Set amount to shift chroma-blue vertically.
7825 @item crh
7826 Set amount to shift chroma-red horizontally.
7827 @item crv
7828 Set amount to shift chroma-red vertically.
7829 @item edge
7830 Set edge mode, can be @var{smear}, default, or @var{warp}.
7831 @end table
7832
7833 @subsection Commands
7834
7835 This filter supports the all above options as @ref{commands}.
7836
7837 @section ciescope
7838
7839 Display CIE color diagram with pixels overlaid onto it.
7840
7841 The filter accepts the following options:
7842
7843 @table @option
7844 @item system
7845 Set color system.
7846
7847 @table @samp
7848 @item ntsc, 470m
7849 @item ebu, 470bg
7850 @item smpte
7851 @item 240m
7852 @item apple
7853 @item widergb
7854 @item cie1931
7855 @item rec709, hdtv
7856 @item uhdtv, rec2020
7857 @item dcip3
7858 @end table
7859
7860 @item cie
7861 Set CIE system.
7862
7863 @table @samp
7864 @item xyy
7865 @item ucs
7866 @item luv
7867 @end table
7868
7869 @item gamuts
7870 Set what gamuts to draw.
7871
7872 See @code{system} option for available values.
7873
7874 @item size, s
7875 Set ciescope size, by default set to 512.
7876
7877 @item intensity, i
7878 Set intensity used to map input pixel values to CIE diagram.
7879
7880 @item contrast
7881 Set contrast used to draw tongue colors that are out of active color system gamut.
7882
7883 @item corrgamma
7884 Correct gamma displayed on scope, by default enabled.
7885
7886 @item showwhite
7887 Show white point on CIE diagram, by default disabled.
7888
7889 @item gamma
7890 Set input gamma. Used only with XYZ input color space.
7891 @end table
7892
7893 @section codecview
7894
7895 Visualize information exported by some codecs.
7896
7897 Some codecs can export information through frames using side-data or other
7898 means. For example, some MPEG based codecs export motion vectors through the
7899 @var{export_mvs} flag in the codec @option{flags2} option.
7900
7901 The filter accepts the following option:
7902
7903 @table @option
7904 @item mv
7905 Set motion vectors to visualize.
7906
7907 Available flags for @var{mv} are:
7908
7909 @table @samp
7910 @item pf
7911 forward predicted MVs of P-frames
7912 @item bf
7913 forward predicted MVs of B-frames
7914 @item bb
7915 backward predicted MVs of B-frames
7916 @end table
7917
7918 @item qp
7919 Display quantization parameters using the chroma planes.
7920
7921 @item mv_type, mvt
7922 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7923
7924 Available flags for @var{mv_type} are:
7925
7926 @table @samp
7927 @item fp
7928 forward predicted MVs
7929 @item bp
7930 backward predicted MVs
7931 @end table
7932
7933 @item frame_type, ft
7934 Set frame type to visualize motion vectors of.
7935
7936 Available flags for @var{frame_type} are:
7937
7938 @table @samp
7939 @item if
7940 intra-coded frames (I-frames)
7941 @item pf
7942 predicted frames (P-frames)
7943 @item bf
7944 bi-directionally predicted frames (B-frames)
7945 @end table
7946 @end table
7947
7948 @subsection Examples
7949
7950 @itemize
7951 @item
7952 Visualize forward predicted MVs of all frames using @command{ffplay}:
7953 @example
7954 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7955 @end example
7956
7957 @item
7958 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7959 @example
7960 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7961 @end example
7962 @end itemize
7963
7964 @section colorbalance
7965 Modify intensity of primary colors (red, green and blue) of input frames.
7966
7967 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7968 regions for the red-cyan, green-magenta or blue-yellow balance.
7969
7970 A positive adjustment value shifts the balance towards the primary color, a negative
7971 value towards the complementary color.
7972
7973 The filter accepts the following options:
7974
7975 @table @option
7976 @item rs
7977 @item gs
7978 @item bs
7979 Adjust red, green and blue shadows (darkest pixels).
7980
7981 @item rm
7982 @item gm
7983 @item bm
7984 Adjust red, green and blue midtones (medium pixels).
7985
7986 @item rh
7987 @item gh
7988 @item bh
7989 Adjust red, green and blue highlights (brightest pixels).
7990
7991 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7992
7993 @item pl
7994 Preserve lightness when changing color balance. Default is disabled.
7995 @end table
7996
7997 @subsection Examples
7998
7999 @itemize
8000 @item
8001 Add red color cast to shadows:
8002 @example
8003 colorbalance=rs=.3
8004 @end example
8005 @end itemize
8006
8007 @subsection Commands
8008
8009 This filter supports the all above options as @ref{commands}.
8010
8011 @section colorchannelmixer
8012
8013 Adjust video input frames by re-mixing color channels.
8014
8015 This filter modifies a color channel by adding the values associated to
8016 the other channels of the same pixels. For example if the value to
8017 modify is red, the output value will be:
8018 @example
8019 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
8020 @end example
8021
8022 The filter accepts the following options:
8023
8024 @table @option
8025 @item rr
8026 @item rg
8027 @item rb
8028 @item ra
8029 Adjust contribution of input red, green, blue and alpha channels for output red channel.
8030 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
8031
8032 @item gr
8033 @item gg
8034 @item gb
8035 @item ga
8036 Adjust contribution of input red, green, blue and alpha channels for output green channel.
8037 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
8038
8039 @item br
8040 @item bg
8041 @item bb
8042 @item ba
8043 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
8044 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
8045
8046 @item ar
8047 @item ag
8048 @item ab
8049 @item aa
8050 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
8051 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
8052
8053 Allowed ranges for options are @code{[-2.0, 2.0]}.
8054 @end table
8055
8056 @subsection Examples
8057
8058 @itemize
8059 @item
8060 Convert source to grayscale:
8061 @example
8062 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
8063 @end example
8064 @item
8065 Simulate sepia tones:
8066 @example
8067 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
8068 @end example
8069 @end itemize
8070
8071 @subsection Commands
8072
8073 This filter supports the all above options as @ref{commands}.
8074
8075 @section colorkey
8076 RGB colorspace color keying.
8077
8078 The filter accepts the following options:
8079
8080 @table @option
8081 @item color
8082 The color which will be replaced with transparency.
8083
8084 @item similarity
8085 Similarity percentage with the key color.
8086
8087 0.01 matches only the exact key color, while 1.0 matches everything.
8088
8089 @item blend
8090 Blend percentage.
8091
8092 0.0 makes pixels either fully transparent, or not transparent at all.
8093
8094 Higher values result in semi-transparent pixels, with a higher transparency
8095 the more similar the pixels color is to the key color.
8096 @end table
8097
8098 @subsection Examples
8099
8100 @itemize
8101 @item
8102 Make every green pixel in the input image transparent:
8103 @example
8104 ffmpeg -i input.png -vf colorkey=green out.png
8105 @end example
8106
8107 @item
8108 Overlay a greenscreen-video on top of a static background image.
8109 @example
8110 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
8111 @end example
8112 @end itemize
8113
8114 @subsection Commands
8115 This filter supports same @ref{commands} as options.
8116 The command accepts the same syntax of the corresponding option.
8117
8118 If the specified expression is not valid, it is kept at its current
8119 value.
8120
8121 @section colorhold
8122 Remove all color information for all RGB colors except for certain one.
8123
8124 The filter accepts the following options:
8125
8126 @table @option
8127 @item color
8128 The color which will not be replaced with neutral gray.
8129
8130 @item similarity
8131 Similarity percentage with the above color.
8132 0.01 matches only the exact key color, while 1.0 matches everything.
8133
8134 @item blend
8135 Blend percentage. 0.0 makes pixels fully gray.
8136 Higher values result in more preserved color.
8137 @end table
8138
8139 @subsection Commands
8140 This filter supports same @ref{commands} as options.
8141 The command accepts the same syntax of the corresponding option.
8142
8143 If the specified expression is not valid, it is kept at its current
8144 value.
8145
8146 @section colorlevels
8147
8148 Adjust video input frames using levels.
8149
8150 The filter accepts the following options:
8151
8152 @table @option
8153 @item rimin
8154 @item gimin
8155 @item bimin
8156 @item aimin
8157 Adjust red, green, blue and alpha input black point.
8158 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
8159
8160 @item rimax
8161 @item gimax
8162 @item bimax
8163 @item aimax
8164 Adjust red, green, blue and alpha input white point.
8165 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
8166
8167 Input levels are used to lighten highlights (bright tones), darken shadows
8168 (dark tones), change the balance of bright and dark tones.
8169
8170 @item romin
8171 @item gomin
8172 @item bomin
8173 @item aomin
8174 Adjust red, green, blue and alpha output black point.
8175 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
8176
8177 @item romax
8178 @item gomax
8179 @item bomax
8180 @item aomax
8181 Adjust red, green, blue and alpha output white point.
8182 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
8183
8184 Output levels allows manual selection of a constrained output level range.
8185 @end table
8186
8187 @subsection Examples
8188
8189 @itemize
8190 @item
8191 Make video output darker:
8192 @example
8193 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
8194 @end example
8195
8196 @item
8197 Increase contrast:
8198 @example
8199 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
8200 @end example
8201
8202 @item
8203 Make video output lighter:
8204 @example
8205 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
8206 @end example
8207
8208 @item
8209 Increase brightness:
8210 @example
8211 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
8212 @end example
8213 @end itemize
8214
8215 @subsection Commands
8216
8217 This filter supports the all above options as @ref{commands}.
8218
8219 @section colormatrix
8220
8221 Convert color matrix.
8222
8223 The filter accepts the following options:
8224
8225 @table @option
8226 @item src
8227 @item dst
8228 Specify the source and destination color matrix. Both values must be
8229 specified.
8230
8231 The accepted values are:
8232 @table @samp
8233 @item bt709
8234 BT.709
8235
8236 @item fcc
8237 FCC
8238
8239 @item bt601
8240 BT.601
8241
8242 @item bt470
8243 BT.470
8244
8245 @item bt470bg
8246 BT.470BG
8247
8248 @item smpte170m
8249 SMPTE-170M
8250
8251 @item smpte240m
8252 SMPTE-240M
8253
8254 @item bt2020
8255 BT.2020
8256 @end table
8257 @end table
8258
8259 For example to convert from BT.601 to SMPTE-240M, use the command:
8260 @example
8261 colormatrix=bt601:smpte240m
8262 @end example
8263
8264 @section colorspace
8265
8266 Convert colorspace, transfer characteristics or color primaries.
8267 Input video needs to have an even size.
8268
8269 The filter accepts the following options:
8270
8271 @table @option
8272 @anchor{all}
8273 @item all
8274 Specify all color properties at once.
8275
8276 The accepted values are:
8277 @table @samp
8278 @item bt470m
8279 BT.470M
8280
8281 @item bt470bg
8282 BT.470BG
8283
8284 @item bt601-6-525
8285 BT.601-6 525
8286
8287 @item bt601-6-625
8288 BT.601-6 625
8289
8290 @item bt709
8291 BT.709
8292
8293 @item smpte170m
8294 SMPTE-170M
8295
8296 @item smpte240m
8297 SMPTE-240M
8298
8299 @item bt2020
8300 BT.2020
8301
8302 @end table
8303
8304 @anchor{space}
8305 @item space
8306 Specify output colorspace.
8307
8308 The accepted values are:
8309 @table @samp
8310 @item bt709
8311 BT.709
8312
8313 @item fcc
8314 FCC
8315
8316 @item bt470bg
8317 BT.470BG or BT.601-6 625
8318
8319 @item smpte170m
8320 SMPTE-170M or BT.601-6 525
8321
8322 @item smpte240m
8323 SMPTE-240M
8324
8325 @item ycgco
8326 YCgCo
8327
8328 @item bt2020ncl
8329 BT.2020 with non-constant luminance
8330
8331 @end table
8332
8333 @anchor{trc}
8334 @item trc
8335 Specify output transfer characteristics.
8336
8337 The accepted values are:
8338 @table @samp
8339 @item bt709
8340 BT.709
8341
8342 @item bt470m
8343 BT.470M
8344
8345 @item bt470bg
8346 BT.470BG
8347
8348 @item gamma22
8349 Constant gamma of 2.2
8350
8351 @item gamma28
8352 Constant gamma of 2.8
8353
8354 @item smpte170m
8355 SMPTE-170M, BT.601-6 625 or BT.601-6 525
8356
8357 @item smpte240m
8358 SMPTE-240M
8359
8360 @item srgb
8361 SRGB
8362
8363 @item iec61966-2-1
8364 iec61966-2-1
8365
8366 @item iec61966-2-4
8367 iec61966-2-4
8368
8369 @item xvycc
8370 xvycc
8371
8372 @item bt2020-10
8373 BT.2020 for 10-bits content
8374
8375 @item bt2020-12
8376 BT.2020 for 12-bits content
8377
8378 @end table
8379
8380 @anchor{primaries}
8381 @item primaries
8382 Specify output color primaries.
8383
8384 The accepted values are:
8385 @table @samp
8386 @item bt709
8387 BT.709
8388
8389 @item bt470m
8390 BT.470M
8391
8392 @item bt470bg
8393 BT.470BG or BT.601-6 625
8394
8395 @item smpte170m
8396 SMPTE-170M or BT.601-6 525
8397
8398 @item smpte240m
8399 SMPTE-240M
8400
8401 @item film
8402 film
8403
8404 @item smpte431
8405 SMPTE-431
8406
8407 @item smpte432
8408 SMPTE-432
8409
8410 @item bt2020
8411 BT.2020
8412
8413 @item jedec-p22
8414 JEDEC P22 phosphors
8415
8416 @end table
8417
8418 @anchor{range}
8419 @item range
8420 Specify output color range.
8421
8422 The accepted values are:
8423 @table @samp
8424 @item tv
8425 TV (restricted) range
8426
8427 @item mpeg
8428 MPEG (restricted) range
8429
8430 @item pc
8431 PC (full) range
8432
8433 @item jpeg
8434 JPEG (full) range
8435
8436 @end table
8437
8438 @item format
8439 Specify output color format.
8440
8441 The accepted values are:
8442 @table @samp
8443 @item yuv420p
8444 YUV 4:2:0 planar 8-bits
8445
8446 @item yuv420p10
8447 YUV 4:2:0 planar 10-bits
8448
8449 @item yuv420p12
8450 YUV 4:2:0 planar 12-bits
8451
8452 @item yuv422p
8453 YUV 4:2:2 planar 8-bits
8454
8455 @item yuv422p10
8456 YUV 4:2:2 planar 10-bits
8457
8458 @item yuv422p12
8459 YUV 4:2:2 planar 12-bits
8460
8461 @item yuv444p
8462 YUV 4:4:4 planar 8-bits
8463
8464 @item yuv444p10
8465 YUV 4:4:4 planar 10-bits
8466
8467 @item yuv444p12
8468 YUV 4:4:4 planar 12-bits
8469
8470 @end table
8471
8472 @item fast
8473 Do a fast conversion, which skips gamma/primary correction. This will take
8474 significantly less CPU, but will be mathematically incorrect. To get output
8475 compatible with that produced by the colormatrix filter, use fast=1.
8476
8477 @item dither
8478 Specify dithering mode.
8479
8480 The accepted values are:
8481 @table @samp
8482 @item none
8483 No dithering
8484
8485 @item fsb
8486 Floyd-Steinberg dithering
8487 @end table
8488
8489 @item wpadapt
8490 Whitepoint adaptation mode.
8491
8492 The accepted values are:
8493 @table @samp
8494 @item bradford
8495 Bradford whitepoint adaptation
8496
8497 @item vonkries
8498 von Kries whitepoint adaptation
8499
8500 @item identity
8501 identity whitepoint adaptation (i.e. no whitepoint adaptation)
8502 @end table
8503
8504 @item iall
8505 Override all input properties at once. Same accepted values as @ref{all}.
8506
8507 @item ispace
8508 Override input colorspace. Same accepted values as @ref{space}.
8509
8510 @item iprimaries
8511 Override input color primaries. Same accepted values as @ref{primaries}.
8512
8513 @item itrc
8514 Override input transfer characteristics. Same accepted values as @ref{trc}.
8515
8516 @item irange
8517 Override input color range. Same accepted values as @ref{range}.
8518
8519 @end table
8520
8521 The filter converts the transfer characteristics, color space and color
8522 primaries to the specified user values. The output value, if not specified,
8523 is set to a default value based on the "all" property. If that property is
8524 also not specified, the filter will log an error. The output color range and
8525 format default to the same value as the input color range and format. The
8526 input transfer characteristics, color space, color primaries and color range
8527 should be set on the input data. If any of these are missing, the filter will
8528 log an error and no conversion will take place.
8529
8530 For example to convert the input to SMPTE-240M, use the command:
8531 @example
8532 colorspace=smpte240m
8533 @end example
8534
8535 @section convolution
8536
8537 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
8538
8539 The filter accepts the following options:
8540
8541 @table @option
8542 @item 0m
8543 @item 1m
8544 @item 2m
8545 @item 3m
8546 Set matrix for each plane.
8547 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
8548 and from 1 to 49 odd number of signed integers in @var{row} mode.
8549
8550 @item 0rdiv
8551 @item 1rdiv
8552 @item 2rdiv
8553 @item 3rdiv
8554 Set multiplier for calculated value for each plane.
8555 If unset or 0, it will be sum of all matrix elements.
8556
8557 @item 0bias
8558 @item 1bias
8559 @item 2bias
8560 @item 3bias
8561 Set bias for each plane. This value is added to the result of the multiplication.
8562 Useful for making the overall image brighter or darker. Default is 0.0.
8563
8564 @item 0mode
8565 @item 1mode
8566 @item 2mode
8567 @item 3mode
8568 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
8569 Default is @var{square}.
8570 @end table
8571
8572 @subsection Commands
8573
8574 This filter supports the all above options as @ref{commands}.
8575
8576 @subsection Examples
8577
8578 @itemize
8579 @item
8580 Apply sharpen:
8581 @example
8582 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"
8583 @end example
8584
8585 @item
8586 Apply blur:
8587 @example
8588 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"
8589 @end example
8590
8591 @item
8592 Apply edge enhance:
8593 @example
8594 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"
8595 @end example
8596
8597 @item
8598 Apply edge detect:
8599 @example
8600 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"
8601 @end example
8602
8603 @item
8604 Apply laplacian edge detector which includes diagonals:
8605 @example
8606 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"
8607 @end example
8608
8609 @item
8610 Apply emboss:
8611 @example
8612 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"
8613 @end example
8614 @end itemize
8615
8616 @section convolve
8617
8618 Apply 2D convolution of video stream in frequency domain using second stream
8619 as impulse.
8620
8621 The filter accepts the following options:
8622
8623 @table @option
8624 @item planes
8625 Set which planes to process.
8626
8627 @item impulse
8628 Set which impulse video frames will be processed, can be @var{first}
8629 or @var{all}. Default is @var{all}.
8630 @end table
8631
8632 The @code{convolve} filter also supports the @ref{framesync} options.
8633
8634 @section copy
8635
8636 Copy the input video source unchanged to the output. This is mainly useful for
8637 testing purposes.
8638
8639 @anchor{coreimage}
8640 @section coreimage
8641 Video filtering on GPU using Apple's CoreImage API on OSX.
8642
8643 Hardware acceleration is based on an OpenGL context. Usually, this means it is
8644 processed by video hardware. However, software-based OpenGL implementations
8645 exist which means there is no guarantee for hardware processing. It depends on
8646 the respective OSX.
8647
8648 There are many filters and image generators provided by Apple that come with a
8649 large variety of options. The filter has to be referenced by its name along
8650 with its options.
8651
8652 The coreimage filter accepts the following options:
8653 @table @option
8654 @item list_filters
8655 List all available filters and generators along with all their respective
8656 options as well as possible minimum and maximum values along with the default
8657 values.
8658 @example
8659 list_filters=true
8660 @end example
8661
8662 @item filter
8663 Specify all filters by their respective name and options.
8664 Use @var{list_filters} to determine all valid filter names and options.
8665 Numerical options are specified by a float value and are automatically clamped
8666 to their respective value range.  Vector and color options have to be specified
8667 by a list of space separated float values. Character escaping has to be done.
8668 A special option name @code{default} is available to use default options for a
8669 filter.
8670
8671 It is required to specify either @code{default} or at least one of the filter options.
8672 All omitted options are used with their default values.
8673 The syntax of the filter string is as follows:
8674 @example
8675 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
8676 @end example
8677
8678 @item output_rect
8679 Specify a rectangle where the output of the filter chain is copied into the
8680 input image. It is given by a list of space separated float values:
8681 @example
8682 output_rect=x\ y\ width\ height
8683 @end example
8684 If not given, the output rectangle equals the dimensions of the input image.
8685 The output rectangle is automatically cropped at the borders of the input
8686 image. Negative values are valid for each component.
8687 @example
8688 output_rect=25\ 25\ 100\ 100
8689 @end example
8690 @end table
8691
8692 Several filters can be chained for successive processing without GPU-HOST
8693 transfers allowing for fast processing of complex filter chains.
8694 Currently, only filters with zero (generators) or exactly one (filters) input
8695 image and one output image are supported. Also, transition filters are not yet
8696 usable as intended.
8697
8698 Some filters generate output images with additional padding depending on the
8699 respective filter kernel. The padding is automatically removed to ensure the
8700 filter output has the same size as the input image.
8701
8702 For image generators, the size of the output image is determined by the
8703 previous output image of the filter chain or the input image of the whole
8704 filterchain, respectively. The generators do not use the pixel information of
8705 this image to generate their output. However, the generated output is
8706 blended onto this image, resulting in partial or complete coverage of the
8707 output image.
8708
8709 The @ref{coreimagesrc} video source can be used for generating input images
8710 which are directly fed into the filter chain. By using it, providing input
8711 images by another video source or an input video is not required.
8712
8713 @subsection Examples
8714
8715 @itemize
8716
8717 @item
8718 List all filters available:
8719 @example
8720 coreimage=list_filters=true
8721 @end example
8722
8723 @item
8724 Use the CIBoxBlur filter with default options to blur an image:
8725 @example
8726 coreimage=filter=CIBoxBlur@@default
8727 @end example
8728
8729 @item
8730 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
8731 its center at 100x100 and a radius of 50 pixels:
8732 @example
8733 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
8734 @end example
8735
8736 @item
8737 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
8738 given as complete and escaped command-line for Apple's standard bash shell:
8739 @example
8740 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
8741 @end example
8742 @end itemize
8743
8744 @section cover_rect
8745
8746 Cover a rectangular object
8747
8748 It accepts the following options:
8749
8750 @table @option
8751 @item cover
8752 Filepath of the optional cover image, needs to be in yuv420.
8753
8754 @item mode
8755 Set covering mode.
8756
8757 It accepts the following values:
8758 @table @samp
8759 @item cover
8760 cover it by the supplied image
8761 @item blur
8762 cover it by interpolating the surrounding pixels
8763 @end table
8764
8765 Default value is @var{blur}.
8766 @end table
8767
8768 @subsection Examples
8769
8770 @itemize
8771 @item
8772 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
8773 @example
8774 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8775 @end example
8776 @end itemize
8777
8778 @section crop
8779
8780 Crop the input video to given dimensions.
8781
8782 It accepts the following parameters:
8783
8784 @table @option
8785 @item w, out_w
8786 The width of the output video. It defaults to @code{iw}.
8787 This expression is evaluated only once during the filter
8788 configuration, or when the @samp{w} or @samp{out_w} command is sent.
8789
8790 @item h, out_h
8791 The height of the output video. It defaults to @code{ih}.
8792 This expression is evaluated only once during the filter
8793 configuration, or when the @samp{h} or @samp{out_h} command is sent.
8794
8795 @item x
8796 The horizontal position, in the input video, of the left edge of the output
8797 video. It defaults to @code{(in_w-out_w)/2}.
8798 This expression is evaluated per-frame.
8799
8800 @item y
8801 The vertical position, in the input video, of the top edge of the output video.
8802 It defaults to @code{(in_h-out_h)/2}.
8803 This expression is evaluated per-frame.
8804
8805 @item keep_aspect
8806 If set to 1 will force the output display aspect ratio
8807 to be the same of the input, by changing the output sample aspect
8808 ratio. It defaults to 0.
8809
8810 @item exact
8811 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
8812 width/height/x/y as specified and will not be rounded to nearest smaller value.
8813 It defaults to 0.
8814 @end table
8815
8816 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
8817 expressions containing the following constants:
8818
8819 @table @option
8820 @item x
8821 @item y
8822 The computed values for @var{x} and @var{y}. They are evaluated for
8823 each new frame.
8824
8825 @item in_w
8826 @item in_h
8827 The input width and height.
8828
8829 @item iw
8830 @item ih
8831 These are the same as @var{in_w} and @var{in_h}.
8832
8833 @item out_w
8834 @item out_h
8835 The output (cropped) width and height.
8836
8837 @item ow
8838 @item oh
8839 These are the same as @var{out_w} and @var{out_h}.
8840
8841 @item a
8842 same as @var{iw} / @var{ih}
8843
8844 @item sar
8845 input sample aspect ratio
8846
8847 @item dar
8848 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8849
8850 @item hsub
8851 @item vsub
8852 horizontal and vertical chroma subsample values. For example for the
8853 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8854
8855 @item n
8856 The number of the input frame, starting from 0.
8857
8858 @item pos
8859 the position in the file of the input frame, NAN if unknown
8860
8861 @item t
8862 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
8863
8864 @end table
8865
8866 The expression for @var{out_w} may depend on the value of @var{out_h},
8867 and the expression for @var{out_h} may depend on @var{out_w}, but they
8868 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
8869 evaluated after @var{out_w} and @var{out_h}.
8870
8871 The @var{x} and @var{y} parameters specify the expressions for the
8872 position of the top-left corner of the output (non-cropped) area. They
8873 are evaluated for each frame. If the evaluated value is not valid, it
8874 is approximated to the nearest valid value.
8875
8876 The expression for @var{x} may depend on @var{y}, and the expression
8877 for @var{y} may depend on @var{x}.
8878
8879 @subsection Examples
8880
8881 @itemize
8882 @item
8883 Crop area with size 100x100 at position (12,34).
8884 @example
8885 crop=100:100:12:34
8886 @end example
8887
8888 Using named options, the example above becomes:
8889 @example
8890 crop=w=100:h=100:x=12:y=34
8891 @end example
8892
8893 @item
8894 Crop the central input area with size 100x100:
8895 @example
8896 crop=100:100
8897 @end example
8898
8899 @item
8900 Crop the central input area with size 2/3 of the input video:
8901 @example
8902 crop=2/3*in_w:2/3*in_h
8903 @end example
8904
8905 @item
8906 Crop the input video central square:
8907 @example
8908 crop=out_w=in_h
8909 crop=in_h
8910 @end example
8911
8912 @item
8913 Delimit the rectangle with the top-left corner placed at position
8914 100:100 and the right-bottom corner corresponding to the right-bottom
8915 corner of the input image.
8916 @example
8917 crop=in_w-100:in_h-100:100:100
8918 @end example
8919
8920 @item
8921 Crop 10 pixels from the left and right borders, and 20 pixels from
8922 the top and bottom borders
8923 @example
8924 crop=in_w-2*10:in_h-2*20
8925 @end example
8926
8927 @item
8928 Keep only the bottom right quarter of the input image:
8929 @example
8930 crop=in_w/2:in_h/2:in_w/2:in_h/2
8931 @end example
8932
8933 @item
8934 Crop height for getting Greek harmony:
8935 @example
8936 crop=in_w:1/PHI*in_w
8937 @end example
8938
8939 @item
8940 Apply trembling effect:
8941 @example
8942 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)
8943 @end example
8944
8945 @item
8946 Apply erratic camera effect depending on timestamp:
8947 @example
8948 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)"
8949 @end example
8950
8951 @item
8952 Set x depending on the value of y:
8953 @example
8954 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
8955 @end example
8956 @end itemize
8957
8958 @subsection Commands
8959
8960 This filter supports the following commands:
8961 @table @option
8962 @item w, out_w
8963 @item h, out_h
8964 @item x
8965 @item y
8966 Set width/height of the output video and the horizontal/vertical position
8967 in the input video.
8968 The command accepts the same syntax of the corresponding option.
8969
8970 If the specified expression is not valid, it is kept at its current
8971 value.
8972 @end table
8973
8974 @section cropdetect
8975
8976 Auto-detect the crop size.
8977
8978 It calculates the necessary cropping parameters and prints the
8979 recommended parameters via the logging system. The detected dimensions
8980 correspond to the non-black area of the input video.
8981
8982 It accepts the following parameters:
8983
8984 @table @option
8985
8986 @item limit
8987 Set higher black value threshold, which can be optionally specified
8988 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8989 value greater to the set value is considered non-black. It defaults to 24.
8990 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8991 on the bitdepth of the pixel format.
8992
8993 @item round
8994 The value which the width/height should be divisible by. It defaults to
8995 16. The offset is automatically adjusted to center the video. Use 2 to
8996 get only even dimensions (needed for 4:2:2 video). 16 is best when
8997 encoding to most video codecs.
8998
8999 @item skip
9000 Set the number of initial frames for which evaluation is skipped.
9001 Default is 2. Range is 0 to INT_MAX.
9002
9003 @item reset_count, reset
9004 Set the counter that determines after how many frames cropdetect will
9005 reset the previously detected largest video area and start over to
9006 detect the current optimal crop area. Default value is 0.
9007
9008 This can be useful when channel logos distort the video area. 0
9009 indicates 'never reset', and returns the largest area encountered during
9010 playback.
9011 @end table
9012
9013 @anchor{cue}
9014 @section cue
9015
9016 Delay video filtering until a given wallclock timestamp. The filter first
9017 passes on @option{preroll} amount of frames, then it buffers at most
9018 @option{buffer} amount of frames and waits for the cue. After reaching the cue
9019 it forwards the buffered frames and also any subsequent frames coming in its
9020 input.
9021
9022 The filter can be used synchronize the output of multiple ffmpeg processes for
9023 realtime output devices like decklink. By putting the delay in the filtering
9024 chain and pre-buffering frames the process can pass on data to output almost
9025 immediately after the target wallclock timestamp is reached.
9026
9027 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
9028 some use cases.
9029
9030 @table @option
9031
9032 @item cue
9033 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
9034
9035 @item preroll
9036 The duration of content to pass on as preroll expressed in seconds. Default is 0.
9037
9038 @item buffer
9039 The maximum duration of content to buffer before waiting for the cue expressed
9040 in seconds. Default is 0.
9041
9042 @end table
9043
9044 @anchor{curves}
9045 @section curves
9046
9047 Apply color adjustments using curves.
9048
9049 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
9050 component (red, green and blue) has its values defined by @var{N} key points
9051 tied from each other using a smooth curve. The x-axis represents the pixel
9052 values from the input frame, and the y-axis the new pixel values to be set for
9053 the output frame.
9054
9055 By default, a component curve is defined by the two points @var{(0;0)} and
9056 @var{(1;1)}. This creates a straight line where each original pixel value is
9057 "adjusted" to its own value, which means no change to the image.
9058
9059 The filter allows you to redefine these two points and add some more. A new
9060 curve (using a natural cubic spline interpolation) will be define to pass
9061 smoothly through all these new coordinates. The new defined points needs to be
9062 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
9063 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
9064 the vector spaces, the values will be clipped accordingly.
9065
9066 The filter accepts the following options:
9067
9068 @table @option
9069 @item preset
9070 Select one of the available color presets. This option can be used in addition
9071 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
9072 options takes priority on the preset values.
9073 Available presets are:
9074 @table @samp
9075 @item none
9076 @item color_negative
9077 @item cross_process
9078 @item darker
9079 @item increase_contrast
9080 @item lighter
9081 @item linear_contrast
9082 @item medium_contrast
9083 @item negative
9084 @item strong_contrast
9085 @item vintage
9086 @end table
9087 Default is @code{none}.
9088 @item master, m
9089 Set the master key points. These points will define a second pass mapping. It
9090 is sometimes called a "luminance" or "value" mapping. It can be used with
9091 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
9092 post-processing LUT.
9093 @item red, r
9094 Set the key points for the red component.
9095 @item green, g
9096 Set the key points for the green component.
9097 @item blue, b
9098 Set the key points for the blue component.
9099 @item all
9100 Set the key points for all components (not including master).
9101 Can be used in addition to the other key points component
9102 options. In this case, the unset component(s) will fallback on this
9103 @option{all} setting.
9104 @item psfile
9105 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
9106 @item plot
9107 Save Gnuplot script of the curves in specified file.
9108 @end table
9109
9110 To avoid some filtergraph syntax conflicts, each key points list need to be
9111 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
9112
9113 @subsection Examples
9114
9115 @itemize
9116 @item
9117 Increase slightly the middle level of blue:
9118 @example
9119 curves=blue='0/0 0.5/0.58 1/1'
9120 @end example
9121
9122 @item
9123 Vintage effect:
9124 @example
9125 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'
9126 @end example
9127 Here we obtain the following coordinates for each components:
9128 @table @var
9129 @item red
9130 @code{(0;0.11) (0.42;0.51) (1;0.95)}
9131 @item green
9132 @code{(0;0) (0.50;0.48) (1;1)}
9133 @item blue
9134 @code{(0;0.22) (0.49;0.44) (1;0.80)}
9135 @end table
9136
9137 @item
9138 The previous example can also be achieved with the associated built-in preset:
9139 @example
9140 curves=preset=vintage
9141 @end example
9142
9143 @item
9144 Or simply:
9145 @example
9146 curves=vintage
9147 @end example
9148
9149 @item
9150 Use a Photoshop preset and redefine the points of the green component:
9151 @example
9152 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
9153 @end example
9154
9155 @item
9156 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
9157 and @command{gnuplot}:
9158 @example
9159 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
9160 gnuplot -p /tmp/curves.plt
9161 @end example
9162 @end itemize
9163
9164 @section datascope
9165
9166 Video data analysis filter.
9167
9168 This filter shows hexadecimal pixel values of part of video.
9169
9170 The filter accepts the following options:
9171
9172 @table @option
9173 @item size, s
9174 Set output video size.
9175
9176 @item x
9177 Set x offset from where to pick pixels.
9178
9179 @item y
9180 Set y offset from where to pick pixels.
9181
9182 @item mode
9183 Set scope mode, can be one of the following:
9184 @table @samp
9185 @item mono
9186 Draw hexadecimal pixel values with white color on black background.
9187
9188 @item color
9189 Draw hexadecimal pixel values with input video pixel color on black
9190 background.
9191
9192 @item color2
9193 Draw hexadecimal pixel values on color background picked from input video,
9194 the text color is picked in such way so its always visible.
9195 @end table
9196
9197 @item axis
9198 Draw rows and columns numbers on left and top of video.
9199
9200 @item opacity
9201 Set background opacity.
9202
9203 @item format
9204 Set display number format. Can be @code{hex}, or @code{dec}. Default is @code{hex}.
9205 @end table
9206
9207 @section dblur
9208 Apply Directional blur filter.
9209
9210 The filter accepts the following options:
9211
9212 @table @option
9213 @item angle
9214 Set angle of directional blur. Default is @code{45}.
9215
9216 @item radius
9217 Set radius of directional blur. Default is @code{5}.
9218
9219 @item planes
9220 Set which planes to filter. By default all planes are filtered.
9221 @end table
9222
9223 @subsection Commands
9224 This filter supports same @ref{commands} as options.
9225 The command accepts the same syntax of the corresponding option.
9226
9227 If the specified expression is not valid, it is kept at its current
9228 value.
9229
9230 @section dctdnoiz
9231
9232 Denoise frames using 2D DCT (frequency domain filtering).
9233
9234 This filter is not designed for real time.
9235
9236 The filter accepts the following options:
9237
9238 @table @option
9239 @item sigma, s
9240 Set the noise sigma constant.
9241
9242 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
9243 coefficient (absolute value) below this threshold with be dropped.
9244
9245 If you need a more advanced filtering, see @option{expr}.
9246
9247 Default is @code{0}.
9248
9249 @item overlap
9250 Set number overlapping pixels for each block. Since the filter can be slow, you
9251 may want to reduce this value, at the cost of a less effective filter and the
9252 risk of various artefacts.
9253
9254 If the overlapping value doesn't permit processing the whole input width or
9255 height, a warning will be displayed and according borders won't be denoised.
9256
9257 Default value is @var{blocksize}-1, which is the best possible setting.
9258
9259 @item expr, e
9260 Set the coefficient factor expression.
9261
9262 For each coefficient of a DCT block, this expression will be evaluated as a
9263 multiplier value for the coefficient.
9264
9265 If this is option is set, the @option{sigma} option will be ignored.
9266
9267 The absolute value of the coefficient can be accessed through the @var{c}
9268 variable.
9269
9270 @item n
9271 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
9272 @var{blocksize}, which is the width and height of the processed blocks.
9273
9274 The default value is @var{3} (8x8) and can be raised to @var{4} for a
9275 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
9276 on the speed processing. Also, a larger block size does not necessarily means a
9277 better de-noising.
9278 @end table
9279
9280 @subsection Examples
9281
9282 Apply a denoise with a @option{sigma} of @code{4.5}:
9283 @example
9284 dctdnoiz=4.5
9285 @end example
9286
9287 The same operation can be achieved using the expression system:
9288 @example
9289 dctdnoiz=e='gte(c, 4.5*3)'
9290 @end example
9291
9292 Violent denoise using a block size of @code{16x16}:
9293 @example
9294 dctdnoiz=15:n=4
9295 @end example
9296
9297 @section deband
9298
9299 Remove banding artifacts from input video.
9300 It works by replacing banded pixels with average value of referenced pixels.
9301
9302 The filter accepts the following options:
9303
9304 @table @option
9305 @item 1thr
9306 @item 2thr
9307 @item 3thr
9308 @item 4thr
9309 Set banding detection threshold for each plane. Default is 0.02.
9310 Valid range is 0.00003 to 0.5.
9311 If difference between current pixel and reference pixel is less than threshold,
9312 it will be considered as banded.
9313
9314 @item range, r
9315 Banding detection range in pixels. Default is 16. If positive, random number
9316 in range 0 to set value will be used. If negative, exact absolute value
9317 will be used.
9318 The range defines square of four pixels around current pixel.
9319
9320 @item direction, d
9321 Set direction in radians from which four pixel will be compared. If positive,
9322 random direction from 0 to set direction will be picked. If negative, exact of
9323 absolute value will be picked. For example direction 0, -PI or -2*PI radians
9324 will pick only pixels on same row and -PI/2 will pick only pixels on same
9325 column.
9326
9327 @item blur, b
9328 If enabled, current pixel is compared with average value of all four
9329 surrounding pixels. The default is enabled. If disabled current pixel is
9330 compared with all four surrounding pixels. The pixel is considered banded
9331 if only all four differences with surrounding pixels are less than threshold.
9332
9333 @item coupling, c
9334 If enabled, current pixel is changed if and only if all pixel components are banded,
9335 e.g. banding detection threshold is triggered for all color components.
9336 The default is disabled.
9337 @end table
9338
9339 @section deblock
9340
9341 Remove blocking artifacts from input video.
9342
9343 The filter accepts the following options:
9344
9345 @table @option
9346 @item filter
9347 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
9348 This controls what kind of deblocking is applied.
9349
9350 @item block
9351 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
9352
9353 @item alpha
9354 @item beta
9355 @item gamma
9356 @item delta
9357 Set blocking detection thresholds. Allowed range is 0 to 1.
9358 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
9359 Using higher threshold gives more deblocking strength.
9360 Setting @var{alpha} controls threshold detection at exact edge of block.
9361 Remaining options controls threshold detection near the edge. Each one for
9362 below/above or left/right. Setting any of those to @var{0} disables
9363 deblocking.
9364
9365 @item planes
9366 Set planes to filter. Default is to filter all available planes.
9367 @end table
9368
9369 @subsection Examples
9370
9371 @itemize
9372 @item
9373 Deblock using weak filter and block size of 4 pixels.
9374 @example
9375 deblock=filter=weak:block=4
9376 @end example
9377
9378 @item
9379 Deblock using strong filter, block size of 4 pixels and custom thresholds for
9380 deblocking more edges.
9381 @example
9382 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
9383 @end example
9384
9385 @item
9386 Similar as above, but filter only first plane.
9387 @example
9388 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
9389 @end example
9390
9391 @item
9392 Similar as above, but filter only second and third plane.
9393 @example
9394 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
9395 @end example
9396 @end itemize
9397
9398 @anchor{decimate}
9399 @section decimate
9400
9401 Drop duplicated frames at regular intervals.
9402
9403 The filter accepts the following options:
9404
9405 @table @option
9406 @item cycle
9407 Set the number of frames from which one will be dropped. Setting this to
9408 @var{N} means one frame in every batch of @var{N} frames will be dropped.
9409 Default is @code{5}.
9410
9411 @item dupthresh
9412 Set the threshold for duplicate detection. If the difference metric for a frame
9413 is less than or equal to this value, then it is declared as duplicate. Default
9414 is @code{1.1}
9415
9416 @item scthresh
9417 Set scene change threshold. Default is @code{15}.
9418
9419 @item blockx
9420 @item blocky
9421 Set the size of the x and y-axis blocks used during metric calculations.
9422 Larger blocks give better noise suppression, but also give worse detection of
9423 small movements. Must be a power of two. Default is @code{32}.
9424
9425 @item ppsrc
9426 Mark main input as a pre-processed input and activate clean source input
9427 stream. This allows the input to be pre-processed with various filters to help
9428 the metrics calculation while keeping the frame selection lossless. When set to
9429 @code{1}, the first stream is for the pre-processed input, and the second
9430 stream is the clean source from where the kept frames are chosen. Default is
9431 @code{0}.
9432
9433 @item chroma
9434 Set whether or not chroma is considered in the metric calculations. Default is
9435 @code{1}.
9436 @end table
9437
9438 @section deconvolve
9439
9440 Apply 2D deconvolution of video stream in frequency domain using second stream
9441 as impulse.
9442
9443 The filter accepts the following options:
9444
9445 @table @option
9446 @item planes
9447 Set which planes to process.
9448
9449 @item impulse
9450 Set which impulse video frames will be processed, can be @var{first}
9451 or @var{all}. Default is @var{all}.
9452
9453 @item noise
9454 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
9455 and height are not same and not power of 2 or if stream prior to convolving
9456 had noise.
9457 @end table
9458
9459 The @code{deconvolve} filter also supports the @ref{framesync} options.
9460
9461 @section dedot
9462
9463 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
9464
9465 It accepts the following options:
9466
9467 @table @option
9468 @item m
9469 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
9470 @var{rainbows} for cross-color reduction.
9471
9472 @item lt
9473 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
9474
9475 @item tl
9476 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
9477
9478 @item tc
9479 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
9480
9481 @item ct
9482 Set temporal chroma threshold. Lower values increases reduction of cross-color.
9483 @end table
9484
9485 @section deflate
9486
9487 Apply deflate effect to the video.
9488
9489 This filter replaces the pixel by the local(3x3) average by taking into account
9490 only values lower than the pixel.
9491
9492 It accepts the following options:
9493
9494 @table @option
9495 @item threshold0
9496 @item threshold1
9497 @item threshold2
9498 @item threshold3
9499 Limit the maximum change for each plane, default is 65535.
9500 If 0, plane will remain unchanged.
9501 @end table
9502
9503 @subsection Commands
9504
9505 This filter supports the all above options as @ref{commands}.
9506
9507 @section deflicker
9508
9509 Remove temporal frame luminance variations.
9510
9511 It accepts the following options:
9512
9513 @table @option
9514 @item size, s
9515 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
9516
9517 @item mode, m
9518 Set averaging mode to smooth temporal luminance variations.
9519
9520 Available values are:
9521 @table @samp
9522 @item am
9523 Arithmetic mean
9524
9525 @item gm
9526 Geometric mean
9527
9528 @item hm
9529 Harmonic mean
9530
9531 @item qm
9532 Quadratic mean
9533
9534 @item cm
9535 Cubic mean
9536
9537 @item pm
9538 Power mean
9539
9540 @item median
9541 Median
9542 @end table
9543
9544 @item bypass
9545 Do not actually modify frame. Useful when one only wants metadata.
9546 @end table
9547
9548 @section dejudder
9549
9550 Remove judder produced by partially interlaced telecined content.
9551
9552 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
9553 source was partially telecined content then the output of @code{pullup,dejudder}
9554 will have a variable frame rate. May change the recorded frame rate of the
9555 container. Aside from that change, this filter will not affect constant frame
9556 rate video.
9557
9558 The option available in this filter is:
9559 @table @option
9560
9561 @item cycle
9562 Specify the length of the window over which the judder repeats.
9563
9564 Accepts any integer greater than 1. Useful values are:
9565 @table @samp
9566
9567 @item 4
9568 If the original was telecined from 24 to 30 fps (Film to NTSC).
9569
9570 @item 5
9571 If the original was telecined from 25 to 30 fps (PAL to NTSC).
9572
9573 @item 20
9574 If a mixture of the two.
9575 @end table
9576
9577 The default is @samp{4}.
9578 @end table
9579
9580 @section delogo
9581
9582 Suppress a TV station logo by a simple interpolation of the surrounding
9583 pixels. Just set a rectangle covering the logo and watch it disappear
9584 (and sometimes something even uglier appear - your mileage may vary).
9585
9586 It accepts the following parameters:
9587 @table @option
9588
9589 @item x
9590 @item y
9591 Specify the top left corner coordinates of the logo. They must be
9592 specified.
9593
9594 @item w
9595 @item h
9596 Specify the width and height of the logo to clear. They must be
9597 specified.
9598
9599 @item band, t
9600 Specify the thickness of the fuzzy edge of the rectangle (added to
9601 @var{w} and @var{h}). The default value is 1. This option is
9602 deprecated, setting higher values should no longer be necessary and
9603 is not recommended.
9604
9605 @item show
9606 When set to 1, a green rectangle is drawn on the screen to simplify
9607 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
9608 The default value is 0.
9609
9610 The rectangle is drawn on the outermost pixels which will be (partly)
9611 replaced with interpolated values. The values of the next pixels
9612 immediately outside this rectangle in each direction will be used to
9613 compute the interpolated pixel values inside the rectangle.
9614
9615 @end table
9616
9617 @subsection Examples
9618
9619 @itemize
9620 @item
9621 Set a rectangle covering the area with top left corner coordinates 0,0
9622 and size 100x77, and a band of size 10:
9623 @example
9624 delogo=x=0:y=0:w=100:h=77:band=10
9625 @end example
9626
9627 @end itemize
9628
9629 @anchor{derain}
9630 @section derain
9631
9632 Remove the rain in the input image/video by applying the derain methods based on
9633 convolutional neural networks. Supported models:
9634
9635 @itemize
9636 @item
9637 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
9638 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
9639 @end itemize
9640
9641 Training as well as model generation scripts are provided in
9642 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
9643
9644 Native model files (.model) can be generated from TensorFlow model
9645 files (.pb) by using tools/python/convert.py
9646
9647 The filter accepts the following options:
9648
9649 @table @option
9650 @item filter_type
9651 Specify which filter to use. This option accepts the following values:
9652
9653 @table @samp
9654 @item derain
9655 Derain filter. To conduct derain filter, you need to use a derain model.
9656
9657 @item dehaze
9658 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
9659 @end table
9660 Default value is @samp{derain}.
9661
9662 @item dnn_backend
9663 Specify which DNN backend to use for model loading and execution. This option accepts
9664 the following values:
9665
9666 @table @samp
9667 @item native
9668 Native implementation of DNN loading and execution.
9669
9670 @item tensorflow
9671 TensorFlow backend. To enable this backend you
9672 need to install the TensorFlow for C library (see
9673 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9674 @code{--enable-libtensorflow}
9675 @end table
9676 Default value is @samp{native}.
9677
9678 @item model
9679 Set path to model file specifying network architecture and its parameters.
9680 Note that different backends use different file formats. TensorFlow and native
9681 backend can load files for only its format.
9682 @end table
9683
9684 It can also be finished with @ref{dnn_processing} filter.
9685
9686 @section deshake
9687
9688 Attempt to fix small changes in horizontal and/or vertical shift. This
9689 filter helps remove camera shake from hand-holding a camera, bumping a
9690 tripod, moving on a vehicle, etc.
9691
9692 The filter accepts the following options:
9693
9694 @table @option
9695
9696 @item x
9697 @item y
9698 @item w
9699 @item h
9700 Specify a rectangular area where to limit the search for motion
9701 vectors.
9702 If desired the search for motion vectors can be limited to a
9703 rectangular area of the frame defined by its top left corner, width
9704 and height. These parameters have the same meaning as the drawbox
9705 filter which can be used to visualise the position of the bounding
9706 box.
9707
9708 This is useful when simultaneous movement of subjects within the frame
9709 might be confused for camera motion by the motion vector search.
9710
9711 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
9712 then the full frame is used. This allows later options to be set
9713 without specifying the bounding box for the motion vector search.
9714
9715 Default - search the whole frame.
9716
9717 @item rx
9718 @item ry
9719 Specify the maximum extent of movement in x and y directions in the
9720 range 0-64 pixels. Default 16.
9721
9722 @item edge
9723 Specify how to generate pixels to fill blanks at the edge of the
9724 frame. Available values are:
9725 @table @samp
9726 @item blank, 0
9727 Fill zeroes at blank locations
9728 @item original, 1
9729 Original image at blank locations
9730 @item clamp, 2
9731 Extruded edge value at blank locations
9732 @item mirror, 3
9733 Mirrored edge at blank locations
9734 @end table
9735 Default value is @samp{mirror}.
9736
9737 @item blocksize
9738 Specify the blocksize to use for motion search. Range 4-128 pixels,
9739 default 8.
9740
9741 @item contrast
9742 Specify the contrast threshold for blocks. Only blocks with more than
9743 the specified contrast (difference between darkest and lightest
9744 pixels) will be considered. Range 1-255, default 125.
9745
9746 @item search
9747 Specify the search strategy. Available values are:
9748 @table @samp
9749 @item exhaustive, 0
9750 Set exhaustive search
9751 @item less, 1
9752 Set less exhaustive search.
9753 @end table
9754 Default value is @samp{exhaustive}.
9755
9756 @item filename
9757 If set then a detailed log of the motion search is written to the
9758 specified file.
9759
9760 @end table
9761
9762 @section despill
9763
9764 Remove unwanted contamination of foreground colors, caused by reflected color of
9765 greenscreen or bluescreen.
9766
9767 This filter accepts the following options:
9768
9769 @table @option
9770 @item type
9771 Set what type of despill to use.
9772
9773 @item mix
9774 Set how spillmap will be generated.
9775
9776 @item expand
9777 Set how much to get rid of still remaining spill.
9778
9779 @item red
9780 Controls amount of red in spill area.
9781
9782 @item green
9783 Controls amount of green in spill area.
9784 Should be -1 for greenscreen.
9785
9786 @item blue
9787 Controls amount of blue in spill area.
9788 Should be -1 for bluescreen.
9789
9790 @item brightness
9791 Controls brightness of spill area, preserving colors.
9792
9793 @item alpha
9794 Modify alpha from generated spillmap.
9795 @end table
9796
9797 @subsection Commands
9798
9799 This filter supports the all above options as @ref{commands}.
9800
9801 @section detelecine
9802
9803 Apply an exact inverse of the telecine operation. It requires a predefined
9804 pattern specified using the pattern option which must be the same as that passed
9805 to the telecine filter.
9806
9807 This filter accepts the following options:
9808
9809 @table @option
9810 @item first_field
9811 @table @samp
9812 @item top, t
9813 top field first
9814 @item bottom, b
9815 bottom field first
9816 The default value is @code{top}.
9817 @end table
9818
9819 @item pattern
9820 A string of numbers representing the pulldown pattern you wish to apply.
9821 The default value is @code{23}.
9822
9823 @item start_frame
9824 A number representing position of the first frame with respect to the telecine
9825 pattern. This is to be used if the stream is cut. The default value is @code{0}.
9826 @end table
9827
9828 @section dilation
9829
9830 Apply dilation effect to the video.
9831
9832 This filter replaces the pixel by the local(3x3) maximum.
9833
9834 It accepts the following options:
9835
9836 @table @option
9837 @item threshold0
9838 @item threshold1
9839 @item threshold2
9840 @item threshold3
9841 Limit the maximum change for each plane, default is 65535.
9842 If 0, plane will remain unchanged.
9843
9844 @item coordinates
9845 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9846 pixels are used.
9847
9848 Flags to local 3x3 coordinates maps like this:
9849
9850     1 2 3
9851     4   5
9852     6 7 8
9853 @end table
9854
9855 @subsection Commands
9856
9857 This filter supports the all above options as @ref{commands}.
9858
9859 @section displace
9860
9861 Displace pixels as indicated by second and third input stream.
9862
9863 It takes three input streams and outputs one stream, the first input is the
9864 source, and second and third input are displacement maps.
9865
9866 The second input specifies how much to displace pixels along the
9867 x-axis, while the third input specifies how much to displace pixels
9868 along the y-axis.
9869 If one of displacement map streams terminates, last frame from that
9870 displacement map will be used.
9871
9872 Note that once generated, displacements maps can be reused over and over again.
9873
9874 A description of the accepted options follows.
9875
9876 @table @option
9877 @item edge
9878 Set displace behavior for pixels that are out of range.
9879
9880 Available values are:
9881 @table @samp
9882 @item blank
9883 Missing pixels are replaced by black pixels.
9884
9885 @item smear
9886 Adjacent pixels will spread out to replace missing pixels.
9887
9888 @item wrap
9889 Out of range pixels are wrapped so they point to pixels of other side.
9890
9891 @item mirror
9892 Out of range pixels will be replaced with mirrored pixels.
9893 @end table
9894 Default is @samp{smear}.
9895
9896 @end table
9897
9898 @subsection Examples
9899
9900 @itemize
9901 @item
9902 Add ripple effect to rgb input of video size hd720:
9903 @example
9904 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
9905 @end example
9906
9907 @item
9908 Add wave effect to rgb input of video size hd720:
9909 @example
9910 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
9911 @end example
9912 @end itemize
9913
9914 @anchor{dnn_processing}
9915 @section dnn_processing
9916
9917 Do image processing with deep neural networks. It works together with another filter
9918 which converts the pixel format of the Frame to what the dnn network requires.
9919
9920 The filter accepts the following options:
9921
9922 @table @option
9923 @item dnn_backend
9924 Specify which DNN backend to use for model loading and execution. This option accepts
9925 the following values:
9926
9927 @table @samp
9928 @item native
9929 Native implementation of DNN loading and execution.
9930
9931 @item tensorflow
9932 TensorFlow backend. To enable this backend you
9933 need to install the TensorFlow for C library (see
9934 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9935 @code{--enable-libtensorflow}
9936
9937 @item openvino
9938 OpenVINO backend. To enable this backend you
9939 need to build and install the OpenVINO for C library (see
9940 @url{https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md}) and configure FFmpeg with
9941 @code{--enable-libopenvino} (--extra-cflags=-I... --extra-ldflags=-L... might
9942 be needed if the header files and libraries are not installed into system path)
9943
9944 @end table
9945
9946 Default value is @samp{native}.
9947
9948 @item model
9949 Set path to model file specifying network architecture and its parameters.
9950 Note that different backends use different file formats. TensorFlow, OpenVINO and native
9951 backend can load files for only its format.
9952
9953 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
9954
9955 @item input
9956 Set the input name of the dnn network.
9957
9958 @item output
9959 Set the output name of the dnn network.
9960
9961 @end table
9962
9963 @subsection Examples
9964
9965 @itemize
9966 @item
9967 Remove rain in rgb24 frame with can.pb (see @ref{derain} filter):
9968 @example
9969 ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
9970 @end example
9971
9972 @item
9973 Halve the pixel value of the frame with format gray32f:
9974 @example
9975 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
9976 @end example
9977
9978 @item
9979 Handle the Y channel with srcnn.pb (see @ref{sr} filter) for frame with yuv420p (planar YUV formats supported):
9980 @example
9981 ./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
9982 @end example
9983
9984 @item
9985 Handle the Y channel with espcn.pb (see @ref{sr} filter), which changes frame size, for format yuv420p (planar YUV formats supported):
9986 @example
9987 ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y -y tmp.espcn.jpg
9988 @end example
9989
9990 @end itemize
9991
9992 @section drawbox
9993
9994 Draw a colored box on the input image.
9995
9996 It accepts the following parameters:
9997
9998 @table @option
9999 @item x
10000 @item y
10001 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
10002
10003 @item width, w
10004 @item height, h
10005 The expressions which specify the width and height of the box; if 0 they are interpreted as
10006 the input width and height. It defaults to 0.
10007
10008 @item color, c
10009 Specify the color of the box to write. For the general syntax of this option,
10010 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
10011 value @code{invert} is used, the box edge color is the same as the
10012 video with inverted luma.
10013
10014 @item thickness, t
10015 The expression which sets the thickness of the box edge.
10016 A value of @code{fill} will create a filled box. Default value is @code{3}.
10017
10018 See below for the list of accepted constants.
10019
10020 @item replace
10021 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
10022 will overwrite the video's color and alpha pixels.
10023 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
10024 @end table
10025
10026 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
10027 following constants:
10028
10029 @table @option
10030 @item dar
10031 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
10032
10033 @item hsub
10034 @item vsub
10035 horizontal and vertical chroma subsample values. For example for the
10036 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10037
10038 @item in_h, ih
10039 @item in_w, iw
10040 The input width and height.
10041
10042 @item sar
10043 The input sample aspect ratio.
10044
10045 @item x
10046 @item y
10047 The x and y offset coordinates where the box is drawn.
10048
10049 @item w
10050 @item h
10051 The width and height of the drawn box.
10052
10053 @item t
10054 The thickness of the drawn box.
10055
10056 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
10057 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
10058
10059 @end table
10060
10061 @subsection Examples
10062
10063 @itemize
10064 @item
10065 Draw a black box around the edge of the input image:
10066 @example
10067 drawbox
10068 @end example
10069
10070 @item
10071 Draw a box with color red and an opacity of 50%:
10072 @example
10073 drawbox=10:20:200:60:red@@0.5
10074 @end example
10075
10076 The previous example can be specified as:
10077 @example
10078 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
10079 @end example
10080
10081 @item
10082 Fill the box with pink color:
10083 @example
10084 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
10085 @end example
10086
10087 @item
10088 Draw a 2-pixel red 2.40:1 mask:
10089 @example
10090 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
10091 @end example
10092 @end itemize
10093
10094 @subsection Commands
10095 This filter supports same commands as options.
10096 The command accepts the same syntax of the corresponding option.
10097
10098 If the specified expression is not valid, it is kept at its current
10099 value.
10100
10101 @anchor{drawgraph}
10102 @section drawgraph
10103 Draw a graph using input video metadata.
10104
10105 It accepts the following parameters:
10106
10107 @table @option
10108 @item m1
10109 Set 1st frame metadata key from which metadata values will be used to draw a graph.
10110
10111 @item fg1
10112 Set 1st foreground color expression.
10113
10114 @item m2
10115 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
10116
10117 @item fg2
10118 Set 2nd foreground color expression.
10119
10120 @item m3
10121 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
10122
10123 @item fg3
10124 Set 3rd foreground color expression.
10125
10126 @item m4
10127 Set 4th frame metadata key from which metadata values will be used to draw a graph.
10128
10129 @item fg4
10130 Set 4th foreground color expression.
10131
10132 @item min
10133 Set minimal value of metadata value.
10134
10135 @item max
10136 Set maximal value of metadata value.
10137
10138 @item bg
10139 Set graph background color. Default is white.
10140
10141 @item mode
10142 Set graph mode.
10143
10144 Available values for mode is:
10145 @table @samp
10146 @item bar
10147 @item dot
10148 @item line
10149 @end table
10150
10151 Default is @code{line}.
10152
10153 @item slide
10154 Set slide mode.
10155
10156 Available values for slide is:
10157 @table @samp
10158 @item frame
10159 Draw new frame when right border is reached.
10160
10161 @item replace
10162 Replace old columns with new ones.
10163
10164 @item scroll
10165 Scroll from right to left.
10166
10167 @item rscroll
10168 Scroll from left to right.
10169
10170 @item picture
10171 Draw single picture.
10172 @end table
10173
10174 Default is @code{frame}.
10175
10176 @item size
10177 Set size of graph video. For the syntax of this option, check the
10178 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
10179 The default value is @code{900x256}.
10180
10181 @item rate, r
10182 Set the output frame rate. Default value is @code{25}.
10183
10184 The foreground color expressions can use the following variables:
10185 @table @option
10186 @item MIN
10187 Minimal value of metadata value.
10188
10189 @item MAX
10190 Maximal value of metadata value.
10191
10192 @item VAL
10193 Current metadata key value.
10194 @end table
10195
10196 The color is defined as 0xAABBGGRR.
10197 @end table
10198
10199 Example using metadata from @ref{signalstats} filter:
10200 @example
10201 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
10202 @end example
10203
10204 Example using metadata from @ref{ebur128} filter:
10205 @example
10206 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
10207 @end example
10208
10209 @section drawgrid
10210
10211 Draw a grid on the input image.
10212
10213 It accepts the following parameters:
10214
10215 @table @option
10216 @item x
10217 @item y
10218 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
10219
10220 @item width, w
10221 @item height, h
10222 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
10223 input width and height, respectively, minus @code{thickness}, so image gets
10224 framed. Default to 0.
10225
10226 @item color, c
10227 Specify the color of the grid. For the general syntax of this option,
10228 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
10229 value @code{invert} is used, the grid color is the same as the
10230 video with inverted luma.
10231
10232 @item thickness, t
10233 The expression which sets the thickness of the grid line. Default value is @code{1}.
10234
10235 See below for the list of accepted constants.
10236
10237 @item replace
10238 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
10239 will overwrite the video's color and alpha pixels.
10240 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
10241 @end table
10242
10243 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
10244 following constants:
10245
10246 @table @option
10247 @item dar
10248 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
10249
10250 @item hsub
10251 @item vsub
10252 horizontal and vertical chroma subsample values. For example for the
10253 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10254
10255 @item in_h, ih
10256 @item in_w, iw
10257 The input grid cell width and height.
10258
10259 @item sar
10260 The input sample aspect ratio.
10261
10262 @item x
10263 @item y
10264 The x and y coordinates of some point of grid intersection (meant to configure offset).
10265
10266 @item w
10267 @item h
10268 The width and height of the drawn cell.
10269
10270 @item t
10271 The thickness of the drawn cell.
10272
10273 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
10274 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
10275
10276 @end table
10277
10278 @subsection Examples
10279
10280 @itemize
10281 @item
10282 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
10283 @example
10284 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
10285 @end example
10286
10287 @item
10288 Draw a white 3x3 grid with an opacity of 50%:
10289 @example
10290 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
10291 @end example
10292 @end itemize
10293
10294 @subsection Commands
10295 This filter supports same commands as options.
10296 The command accepts the same syntax of the corresponding option.
10297
10298 If the specified expression is not valid, it is kept at its current
10299 value.
10300
10301 @anchor{drawtext}
10302 @section drawtext
10303
10304 Draw a text string or text from a specified file on top of a video, using the
10305 libfreetype library.
10306
10307 To enable compilation of this filter, you need to configure FFmpeg with
10308 @code{--enable-libfreetype}.
10309 To enable default font fallback and the @var{font} option you need to
10310 configure FFmpeg with @code{--enable-libfontconfig}.
10311 To enable the @var{text_shaping} option, you need to configure FFmpeg with
10312 @code{--enable-libfribidi}.
10313
10314 @subsection Syntax
10315
10316 It accepts the following parameters:
10317
10318 @table @option
10319
10320 @item box
10321 Used to draw a box around text using the background color.
10322 The value must be either 1 (enable) or 0 (disable).
10323 The default value of @var{box} is 0.
10324
10325 @item boxborderw
10326 Set the width of the border to be drawn around the box using @var{boxcolor}.
10327 The default value of @var{boxborderw} is 0.
10328
10329 @item boxcolor
10330 The color to be used for drawing box around text. For the syntax of this
10331 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10332
10333 The default value of @var{boxcolor} is "white".
10334
10335 @item line_spacing
10336 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
10337 The default value of @var{line_spacing} is 0.
10338
10339 @item borderw
10340 Set the width of the border to be drawn around the text using @var{bordercolor}.
10341 The default value of @var{borderw} is 0.
10342
10343 @item bordercolor
10344 Set the color to be used for drawing border around text. For the syntax of this
10345 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10346
10347 The default value of @var{bordercolor} is "black".
10348
10349 @item expansion
10350 Select how the @var{text} is expanded. Can be either @code{none},
10351 @code{strftime} (deprecated) or
10352 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
10353 below for details.
10354
10355 @item basetime
10356 Set a start time for the count. Value is in microseconds. Only applied
10357 in the deprecated strftime expansion mode. To emulate in normal expansion
10358 mode use the @code{pts} function, supplying the start time (in seconds)
10359 as the second argument.
10360
10361 @item fix_bounds
10362 If true, check and fix text coords to avoid clipping.
10363
10364 @item fontcolor
10365 The color to be used for drawing fonts. For the syntax of this option, check
10366 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10367
10368 The default value of @var{fontcolor} is "black".
10369
10370 @item fontcolor_expr
10371 String which is expanded the same way as @var{text} to obtain dynamic
10372 @var{fontcolor} value. By default this option has empty value and is not
10373 processed. When this option is set, it overrides @var{fontcolor} option.
10374
10375 @item font
10376 The font family to be used for drawing text. By default Sans.
10377
10378 @item fontfile
10379 The font file to be used for drawing text. The path must be included.
10380 This parameter is mandatory if the fontconfig support is disabled.
10381
10382 @item alpha
10383 Draw the text applying alpha blending. The value can
10384 be a number between 0.0 and 1.0.
10385 The expression accepts the same variables @var{x, y} as well.
10386 The default value is 1.
10387 Please see @var{fontcolor_expr}.
10388
10389 @item fontsize
10390 The font size to be used for drawing text.
10391 The default value of @var{fontsize} is 16.
10392
10393 @item text_shaping
10394 If set to 1, attempt to shape the text (for example, reverse the order of
10395 right-to-left text and join Arabic characters) before drawing it.
10396 Otherwise, just draw the text exactly as given.
10397 By default 1 (if supported).
10398
10399 @item ft_load_flags
10400 The flags to be used for loading the fonts.
10401
10402 The flags map the corresponding flags supported by libfreetype, and are
10403 a combination of the following values:
10404 @table @var
10405 @item default
10406 @item no_scale
10407 @item no_hinting
10408 @item render
10409 @item no_bitmap
10410 @item vertical_layout
10411 @item force_autohint
10412 @item crop_bitmap
10413 @item pedantic
10414 @item ignore_global_advance_width
10415 @item no_recurse
10416 @item ignore_transform
10417 @item monochrome
10418 @item linear_design
10419 @item no_autohint
10420 @end table
10421
10422 Default value is "default".
10423
10424 For more information consult the documentation for the FT_LOAD_*
10425 libfreetype flags.
10426
10427 @item shadowcolor
10428 The color to be used for drawing a shadow behind the drawn text. For the
10429 syntax of this option, check the @ref{color syntax,,"Color" section in the
10430 ffmpeg-utils manual,ffmpeg-utils}.
10431
10432 The default value of @var{shadowcolor} is "black".
10433
10434 @item shadowx
10435 @item shadowy
10436 The x and y offsets for the text shadow position with respect to the
10437 position of the text. They can be either positive or negative
10438 values. The default value for both is "0".
10439
10440 @item start_number
10441 The starting frame number for the n/frame_num variable. The default value
10442 is "0".
10443
10444 @item tabsize
10445 The size in number of spaces to use for rendering the tab.
10446 Default value is 4.
10447
10448 @item timecode
10449 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
10450 format. It can be used with or without text parameter. @var{timecode_rate}
10451 option must be specified.
10452
10453 @item timecode_rate, rate, r
10454 Set the timecode frame rate (timecode only). Value will be rounded to nearest
10455 integer. Minimum value is "1".
10456 Drop-frame timecode is supported for frame rates 30 & 60.
10457
10458 @item tc24hmax
10459 If set to 1, the output of the timecode option will wrap around at 24 hours.
10460 Default is 0 (disabled).
10461
10462 @item text
10463 The text string to be drawn. The text must be a sequence of UTF-8
10464 encoded characters.
10465 This parameter is mandatory if no file is specified with the parameter
10466 @var{textfile}.
10467
10468 @item textfile
10469 A text file containing text to be drawn. The text must be a sequence
10470 of UTF-8 encoded characters.
10471
10472 This parameter is mandatory if no text string is specified with the
10473 parameter @var{text}.
10474
10475 If both @var{text} and @var{textfile} are specified, an error is thrown.
10476
10477 @item reload
10478 If set to 1, the @var{textfile} will be reloaded before each frame.
10479 Be sure to update it atomically, or it may be read partially, or even fail.
10480
10481 @item x
10482 @item y
10483 The expressions which specify the offsets where text will be drawn
10484 within the video frame. They are relative to the top/left border of the
10485 output image.
10486
10487 The default value of @var{x} and @var{y} is "0".
10488
10489 See below for the list of accepted constants and functions.
10490 @end table
10491
10492 The parameters for @var{x} and @var{y} are expressions containing the
10493 following constants and functions:
10494
10495 @table @option
10496 @item dar
10497 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
10498
10499 @item hsub
10500 @item vsub
10501 horizontal and vertical chroma subsample values. For example for the
10502 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10503
10504 @item line_h, lh
10505 the height of each text line
10506
10507 @item main_h, h, H
10508 the input height
10509
10510 @item main_w, w, W
10511 the input width
10512
10513 @item max_glyph_a, ascent
10514 the maximum distance from the baseline to the highest/upper grid
10515 coordinate used to place a glyph outline point, for all the rendered
10516 glyphs.
10517 It is a positive value, due to the grid's orientation with the Y axis
10518 upwards.
10519
10520 @item max_glyph_d, descent
10521 the maximum distance from the baseline to the lowest grid coordinate
10522 used to place a glyph outline point, for all the rendered glyphs.
10523 This is a negative value, due to the grid's orientation, with the Y axis
10524 upwards.
10525
10526 @item max_glyph_h
10527 maximum glyph height, that is the maximum height for all the glyphs
10528 contained in the rendered text, it is equivalent to @var{ascent} -
10529 @var{descent}.
10530
10531 @item max_glyph_w
10532 maximum glyph width, that is the maximum width for all the glyphs
10533 contained in the rendered text
10534
10535 @item n
10536 the number of input frame, starting from 0
10537
10538 @item rand(min, max)
10539 return a random number included between @var{min} and @var{max}
10540
10541 @item sar
10542 The input sample aspect ratio.
10543
10544 @item t
10545 timestamp expressed in seconds, NAN if the input timestamp is unknown
10546
10547 @item text_h, th
10548 the height of the rendered text
10549
10550 @item text_w, tw
10551 the width of the rendered text
10552
10553 @item x
10554 @item y
10555 the x and y offset coordinates where the text is drawn.
10556
10557 These parameters allow the @var{x} and @var{y} expressions to refer
10558 to each other, so you can for example specify @code{y=x/dar}.
10559
10560 @item pict_type
10561 A one character description of the current frame's picture type.
10562
10563 @item pkt_pos
10564 The current packet's position in the input file or stream
10565 (in bytes, from the start of the input). A value of -1 indicates
10566 this info is not available.
10567
10568 @item pkt_duration
10569 The current packet's duration, in seconds.
10570
10571 @item pkt_size
10572 The current packet's size (in bytes).
10573 @end table
10574
10575 @anchor{drawtext_expansion}
10576 @subsection Text expansion
10577
10578 If @option{expansion} is set to @code{strftime},
10579 the filter recognizes strftime() sequences in the provided text and
10580 expands them accordingly. Check the documentation of strftime(). This
10581 feature is deprecated.
10582
10583 If @option{expansion} is set to @code{none}, the text is printed verbatim.
10584
10585 If @option{expansion} is set to @code{normal} (which is the default),
10586 the following expansion mechanism is used.
10587
10588 The backslash character @samp{\}, followed by any character, always expands to
10589 the second character.
10590
10591 Sequences of the form @code{%@{...@}} are expanded. The text between the
10592 braces is a function name, possibly followed by arguments separated by ':'.
10593 If the arguments contain special characters or delimiters (':' or '@}'),
10594 they should be escaped.
10595
10596 Note that they probably must also be escaped as the value for the
10597 @option{text} option in the filter argument string and as the filter
10598 argument in the filtergraph description, and possibly also for the shell,
10599 that makes up to four levels of escaping; using a text file avoids these
10600 problems.
10601
10602 The following functions are available:
10603
10604 @table @command
10605
10606 @item expr, e
10607 The expression evaluation result.
10608
10609 It must take one argument specifying the expression to be evaluated,
10610 which accepts the same constants and functions as the @var{x} and
10611 @var{y} values. Note that not all constants should be used, for
10612 example the text size is not known when evaluating the expression, so
10613 the constants @var{text_w} and @var{text_h} will have an undefined
10614 value.
10615
10616 @item expr_int_format, eif
10617 Evaluate the expression's value and output as formatted integer.
10618
10619 The first argument is the expression to be evaluated, just as for the @var{expr} function.
10620 The second argument specifies the output format. Allowed values are @samp{x},
10621 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
10622 @code{printf} function.
10623 The third parameter is optional and sets the number of positions taken by the output.
10624 It can be used to add padding with zeros from the left.
10625
10626 @item gmtime
10627 The time at which the filter is running, expressed in UTC.
10628 It can accept an argument: a strftime() format string.
10629
10630 @item localtime
10631 The time at which the filter is running, expressed in the local time zone.
10632 It can accept an argument: a strftime() format string.
10633
10634 @item metadata
10635 Frame metadata. Takes one or two arguments.
10636
10637 The first argument is mandatory and specifies the metadata key.
10638
10639 The second argument is optional and specifies a default value, used when the
10640 metadata key is not found or empty.
10641
10642 Available metadata can be identified by inspecting entries
10643 starting with TAG included within each frame section
10644 printed by running @code{ffprobe -show_frames}.
10645
10646 String metadata generated in filters leading to
10647 the drawtext filter are also available.
10648
10649 @item n, frame_num
10650 The frame number, starting from 0.
10651
10652 @item pict_type
10653 A one character description of the current picture type.
10654
10655 @item pts
10656 The timestamp of the current frame.
10657 It can take up to three arguments.
10658
10659 The first argument is the format of the timestamp; it defaults to @code{flt}
10660 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
10661 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
10662 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
10663 @code{localtime} stands for the timestamp of the frame formatted as
10664 local time zone time.
10665
10666 The second argument is an offset added to the timestamp.
10667
10668 If the format is set to @code{hms}, a third argument @code{24HH} may be
10669 supplied to present the hour part of the formatted timestamp in 24h format
10670 (00-23).
10671
10672 If the format is set to @code{localtime} or @code{gmtime},
10673 a third argument may be supplied: a strftime() format string.
10674 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
10675 @end table
10676
10677 @subsection Commands
10678
10679 This filter supports altering parameters via commands:
10680 @table @option
10681 @item reinit
10682 Alter existing filter parameters.
10683
10684 Syntax for the argument is the same as for filter invocation, e.g.
10685
10686 @example
10687 fontsize=56:fontcolor=green:text='Hello World'
10688 @end example
10689
10690 Full filter invocation with sendcmd would look like this:
10691
10692 @example
10693 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
10694 @end example
10695 @end table
10696
10697 If the entire argument can't be parsed or applied as valid values then the filter will
10698 continue with its existing parameters.
10699
10700 @subsection Examples
10701
10702 @itemize
10703 @item
10704 Draw "Test Text" with font FreeSerif, using the default values for the
10705 optional parameters.
10706
10707 @example
10708 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
10709 @end example
10710
10711 @item
10712 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
10713 and y=50 (counting from the top-left corner of the screen), text is
10714 yellow with a red box around it. Both the text and the box have an
10715 opacity of 20%.
10716
10717 @example
10718 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
10719           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
10720 @end example
10721
10722 Note that the double quotes are not necessary if spaces are not used
10723 within the parameter list.
10724
10725 @item
10726 Show the text at the center of the video frame:
10727 @example
10728 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
10729 @end example
10730
10731 @item
10732 Show the text at a random position, switching to a new position every 30 seconds:
10733 @example
10734 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)"
10735 @end example
10736
10737 @item
10738 Show a text line sliding from right to left in the last row of the video
10739 frame. The file @file{LONG_LINE} is assumed to contain a single line
10740 with no newlines.
10741 @example
10742 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
10743 @end example
10744
10745 @item
10746 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
10747 @example
10748 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
10749 @end example
10750
10751 @item
10752 Draw a single green letter "g", at the center of the input video.
10753 The glyph baseline is placed at half screen height.
10754 @example
10755 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
10756 @end example
10757
10758 @item
10759 Show text for 1 second every 3 seconds:
10760 @example
10761 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
10762 @end example
10763
10764 @item
10765 Use fontconfig to set the font. Note that the colons need to be escaped.
10766 @example
10767 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
10768 @end example
10769
10770 @item
10771 Draw "Test Text" with font size dependent on height of the video.
10772 @example
10773 drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
10774 @end example
10775
10776 @item
10777 Print the date of a real-time encoding (see strftime(3)):
10778 @example
10779 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
10780 @end example
10781
10782 @item
10783 Show text fading in and out (appearing/disappearing):
10784 @example
10785 #!/bin/sh
10786 DS=1.0 # display start
10787 DE=10.0 # display end
10788 FID=1.5 # fade in duration
10789 FOD=5 # fade out duration
10790 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 @}"
10791 @end example
10792
10793 @item
10794 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
10795 and the @option{fontsize} value are included in the @option{y} offset.
10796 @example
10797 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
10798 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
10799 @end example
10800
10801 @item
10802 Plot special @var{lavf.image2dec.source_basename} metadata onto each frame if
10803 such metadata exists. Otherwise, plot the string "NA". Note that image2 demuxer
10804 must have option @option{-export_path_metadata 1} for the special metadata fields
10805 to be available for filters.
10806 @example
10807 drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%@{metadata\:lavf.image2dec.source_basename\:NA@}':x=10:y=10"
10808 @end example
10809
10810 @end itemize
10811
10812 For more information about libfreetype, check:
10813 @url{http://www.freetype.org/}.
10814
10815 For more information about fontconfig, check:
10816 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
10817
10818 For more information about libfribidi, check:
10819 @url{http://fribidi.org/}.
10820
10821 @section edgedetect
10822
10823 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
10824
10825 The filter accepts the following options:
10826
10827 @table @option
10828 @item low
10829 @item high
10830 Set low and high threshold values used by the Canny thresholding
10831 algorithm.
10832
10833 The high threshold selects the "strong" edge pixels, which are then
10834 connected through 8-connectivity with the "weak" edge pixels selected
10835 by the low threshold.
10836
10837 @var{low} and @var{high} threshold values must be chosen in the range
10838 [0,1], and @var{low} should be lesser or equal to @var{high}.
10839
10840 Default value for @var{low} is @code{20/255}, and default value for @var{high}
10841 is @code{50/255}.
10842
10843 @item mode
10844 Define the drawing mode.
10845
10846 @table @samp
10847 @item wires
10848 Draw white/gray wires on black background.
10849
10850 @item colormix
10851 Mix the colors to create a paint/cartoon effect.
10852
10853 @item canny
10854 Apply Canny edge detector on all selected planes.
10855 @end table
10856 Default value is @var{wires}.
10857
10858 @item planes
10859 Select planes for filtering. By default all available planes are filtered.
10860 @end table
10861
10862 @subsection Examples
10863
10864 @itemize
10865 @item
10866 Standard edge detection with custom values for the hysteresis thresholding:
10867 @example
10868 edgedetect=low=0.1:high=0.4
10869 @end example
10870
10871 @item
10872 Painting effect without thresholding:
10873 @example
10874 edgedetect=mode=colormix:high=0
10875 @end example
10876 @end itemize
10877
10878 @section elbg
10879
10880 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
10881
10882 For each input image, the filter will compute the optimal mapping from
10883 the input to the output given the codebook length, that is the number
10884 of distinct output colors.
10885
10886 This filter accepts the following options.
10887
10888 @table @option
10889 @item codebook_length, l
10890 Set codebook length. The value must be a positive integer, and
10891 represents the number of distinct output colors. Default value is 256.
10892
10893 @item nb_steps, n
10894 Set the maximum number of iterations to apply for computing the optimal
10895 mapping. The higher the value the better the result and the higher the
10896 computation time. Default value is 1.
10897
10898 @item seed, s
10899 Set a random seed, must be an integer included between 0 and
10900 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
10901 will try to use a good random seed on a best effort basis.
10902
10903 @item pal8
10904 Set pal8 output pixel format. This option does not work with codebook
10905 length greater than 256.
10906 @end table
10907
10908 @section entropy
10909
10910 Measure graylevel entropy in histogram of color channels of video frames.
10911
10912 It accepts the following parameters:
10913
10914 @table @option
10915 @item mode
10916 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
10917
10918 @var{diff} mode measures entropy of histogram delta values, absolute differences
10919 between neighbour histogram values.
10920 @end table
10921
10922 @section eq
10923 Set brightness, contrast, saturation and approximate gamma adjustment.
10924
10925 The filter accepts the following options:
10926
10927 @table @option
10928 @item contrast
10929 Set the contrast expression. The value must be a float value in range
10930 @code{-1000.0} to @code{1000.0}. The default value is "1".
10931
10932 @item brightness
10933 Set the brightness expression. The value must be a float value in
10934 range @code{-1.0} to @code{1.0}. The default value is "0".
10935
10936 @item saturation
10937 Set the saturation expression. The value must be a float in
10938 range @code{0.0} to @code{3.0}. The default value is "1".
10939
10940 @item gamma
10941 Set the gamma expression. The value must be a float in range
10942 @code{0.1} to @code{10.0}.  The default value is "1".
10943
10944 @item gamma_r
10945 Set the gamma expression for red. The value must be a float in
10946 range @code{0.1} to @code{10.0}. The default value is "1".
10947
10948 @item gamma_g
10949 Set the gamma expression for green. The value must be a float in range
10950 @code{0.1} to @code{10.0}. The default value is "1".
10951
10952 @item gamma_b
10953 Set the gamma expression for blue. The value must be a float in range
10954 @code{0.1} to @code{10.0}. The default value is "1".
10955
10956 @item gamma_weight
10957 Set the gamma weight expression. It can be used to reduce the effect
10958 of a high gamma value on bright image areas, e.g. keep them from
10959 getting overamplified and just plain white. The value must be a float
10960 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
10961 gamma correction all the way down while @code{1.0} leaves it at its
10962 full strength. Default is "1".
10963
10964 @item eval
10965 Set when the expressions for brightness, contrast, saturation and
10966 gamma expressions are evaluated.
10967
10968 It accepts the following values:
10969 @table @samp
10970 @item init
10971 only evaluate expressions once during the filter initialization or
10972 when a command is processed
10973
10974 @item frame
10975 evaluate expressions for each incoming frame
10976 @end table
10977
10978 Default value is @samp{init}.
10979 @end table
10980
10981 The expressions accept the following parameters:
10982 @table @option
10983 @item n
10984 frame count of the input frame starting from 0
10985
10986 @item pos
10987 byte position of the corresponding packet in the input file, NAN if
10988 unspecified
10989
10990 @item r
10991 frame rate of the input video, NAN if the input frame rate is unknown
10992
10993 @item t
10994 timestamp expressed in seconds, NAN if the input timestamp is unknown
10995 @end table
10996
10997 @subsection Commands
10998 The filter supports the following commands:
10999
11000 @table @option
11001 @item contrast
11002 Set the contrast expression.
11003
11004 @item brightness
11005 Set the brightness expression.
11006
11007 @item saturation
11008 Set the saturation expression.
11009
11010 @item gamma
11011 Set the gamma expression.
11012
11013 @item gamma_r
11014 Set the gamma_r expression.
11015
11016 @item gamma_g
11017 Set gamma_g expression.
11018
11019 @item gamma_b
11020 Set gamma_b expression.
11021
11022 @item gamma_weight
11023 Set gamma_weight expression.
11024
11025 The command accepts the same syntax of the corresponding option.
11026
11027 If the specified expression is not valid, it is kept at its current
11028 value.
11029
11030 @end table
11031
11032 @section erosion
11033
11034 Apply erosion effect to the video.
11035
11036 This filter replaces the pixel by the local(3x3) minimum.
11037
11038 It accepts the following options:
11039
11040 @table @option
11041 @item threshold0
11042 @item threshold1
11043 @item threshold2
11044 @item threshold3
11045 Limit the maximum change for each plane, default is 65535.
11046 If 0, plane will remain unchanged.
11047
11048 @item coordinates
11049 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
11050 pixels are used.
11051
11052 Flags to local 3x3 coordinates maps like this:
11053
11054     1 2 3
11055     4   5
11056     6 7 8
11057 @end table
11058
11059 @subsection Commands
11060
11061 This filter supports the all above options as @ref{commands}.
11062
11063 @section extractplanes
11064
11065 Extract color channel components from input video stream into
11066 separate grayscale video streams.
11067
11068 The filter accepts the following option:
11069
11070 @table @option
11071 @item planes
11072 Set plane(s) to extract.
11073
11074 Available values for planes are:
11075 @table @samp
11076 @item y
11077 @item u
11078 @item v
11079 @item a
11080 @item r
11081 @item g
11082 @item b
11083 @end table
11084
11085 Choosing planes not available in the input will result in an error.
11086 That means you cannot select @code{r}, @code{g}, @code{b} planes
11087 with @code{y}, @code{u}, @code{v} planes at same time.
11088 @end table
11089
11090 @subsection Examples
11091
11092 @itemize
11093 @item
11094 Extract luma, u and v color channel component from input video frame
11095 into 3 grayscale outputs:
11096 @example
11097 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
11098 @end example
11099 @end itemize
11100
11101 @section fade
11102
11103 Apply a fade-in/out effect to the input video.
11104
11105 It accepts the following parameters:
11106
11107 @table @option
11108 @item type, t
11109 The effect type can be either "in" for a fade-in, or "out" for a fade-out
11110 effect.
11111 Default is @code{in}.
11112
11113 @item start_frame, s
11114 Specify the number of the frame to start applying the fade
11115 effect at. Default is 0.
11116
11117 @item nb_frames, n
11118 The number of frames that the fade effect lasts. At the end of the
11119 fade-in effect, the output video will have the same intensity as the input video.
11120 At the end of the fade-out transition, the output video will be filled with the
11121 selected @option{color}.
11122 Default is 25.
11123
11124 @item alpha
11125 If set to 1, fade only alpha channel, if one exists on the input.
11126 Default value is 0.
11127
11128 @item start_time, st
11129 Specify the timestamp (in seconds) of the frame to start to apply the fade
11130 effect. If both start_frame and start_time are specified, the fade will start at
11131 whichever comes last.  Default is 0.
11132
11133 @item duration, d
11134 The number of seconds for which the fade effect has to last. At the end of the
11135 fade-in effect the output video will have the same intensity as the input video,
11136 at the end of the fade-out transition the output video will be filled with the
11137 selected @option{color}.
11138 If both duration and nb_frames are specified, duration is used. Default is 0
11139 (nb_frames is used by default).
11140
11141 @item color, c
11142 Specify the color of the fade. Default is "black".
11143 @end table
11144
11145 @subsection Examples
11146
11147 @itemize
11148 @item
11149 Fade in the first 30 frames of video:
11150 @example
11151 fade=in:0:30
11152 @end example
11153
11154 The command above is equivalent to:
11155 @example
11156 fade=t=in:s=0:n=30
11157 @end example
11158
11159 @item
11160 Fade out the last 45 frames of a 200-frame video:
11161 @example
11162 fade=out:155:45
11163 fade=type=out:start_frame=155:nb_frames=45
11164 @end example
11165
11166 @item
11167 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
11168 @example
11169 fade=in:0:25, fade=out:975:25
11170 @end example
11171
11172 @item
11173 Make the first 5 frames yellow, then fade in from frame 5-24:
11174 @example
11175 fade=in:5:20:color=yellow
11176 @end example
11177
11178 @item
11179 Fade in alpha over first 25 frames of video:
11180 @example
11181 fade=in:0:25:alpha=1
11182 @end example
11183
11184 @item
11185 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
11186 @example
11187 fade=t=in:st=5.5:d=0.5
11188 @end example
11189
11190 @end itemize
11191
11192 @section fftdnoiz
11193 Denoise frames using 3D FFT (frequency domain filtering).
11194
11195 The filter accepts the following options:
11196
11197 @table @option
11198 @item sigma
11199 Set the noise sigma constant. This sets denoising strength.
11200 Default value is 1. Allowed range is from 0 to 30.
11201 Using very high sigma with low overlap may give blocking artifacts.
11202
11203 @item amount
11204 Set amount of denoising. By default all detected noise is reduced.
11205 Default value is 1. Allowed range is from 0 to 1.
11206
11207 @item block
11208 Set size of block, Default is 4, can be 3, 4, 5 or 6.
11209 Actual size of block in pixels is 2 to power of @var{block}, so by default
11210 block size in pixels is 2^4 which is 16.
11211
11212 @item overlap
11213 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
11214
11215 @item prev
11216 Set number of previous frames to use for denoising. By default is set to 0.
11217
11218 @item next
11219 Set number of next frames to to use for denoising. By default is set to 0.
11220
11221 @item planes
11222 Set planes which will be filtered, by default are all available filtered
11223 except alpha.
11224 @end table
11225
11226 @section fftfilt
11227 Apply arbitrary expressions to samples in frequency domain
11228
11229 @table @option
11230 @item dc_Y
11231 Adjust the dc value (gain) of the luma plane of the image. The filter
11232 accepts an integer value in range @code{0} to @code{1000}. The default
11233 value is set to @code{0}.
11234
11235 @item dc_U
11236 Adjust the dc value (gain) of the 1st chroma plane of the image. The
11237 filter accepts an integer value in range @code{0} to @code{1000}. The
11238 default value is set to @code{0}.
11239
11240 @item dc_V
11241 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
11242 filter accepts an integer value in range @code{0} to @code{1000}. The
11243 default value is set to @code{0}.
11244
11245 @item weight_Y
11246 Set the frequency domain weight expression for the luma plane.
11247
11248 @item weight_U
11249 Set the frequency domain weight expression for the 1st chroma plane.
11250
11251 @item weight_V
11252 Set the frequency domain weight expression for the 2nd chroma plane.
11253
11254 @item eval
11255 Set when the expressions are evaluated.
11256
11257 It accepts the following values:
11258 @table @samp
11259 @item init
11260 Only evaluate expressions once during the filter initialization.
11261
11262 @item frame
11263 Evaluate expressions for each incoming frame.
11264 @end table
11265
11266 Default value is @samp{init}.
11267
11268 The filter accepts the following variables:
11269 @item X
11270 @item Y
11271 The coordinates of the current sample.
11272
11273 @item W
11274 @item H
11275 The width and height of the image.
11276
11277 @item N
11278 The number of input frame, starting from 0.
11279 @end table
11280
11281 @subsection Examples
11282
11283 @itemize
11284 @item
11285 High-pass:
11286 @example
11287 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
11288 @end example
11289
11290 @item
11291 Low-pass:
11292 @example
11293 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
11294 @end example
11295
11296 @item
11297 Sharpen:
11298 @example
11299 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
11300 @end example
11301
11302 @item
11303 Blur:
11304 @example
11305 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
11306 @end example
11307
11308 @end itemize
11309
11310 @section field
11311
11312 Extract a single field from an interlaced image using stride
11313 arithmetic to avoid wasting CPU time. The output frames are marked as
11314 non-interlaced.
11315
11316 The filter accepts the following options:
11317
11318 @table @option
11319 @item type
11320 Specify whether to extract the top (if the value is @code{0} or
11321 @code{top}) or the bottom field (if the value is @code{1} or
11322 @code{bottom}).
11323 @end table
11324
11325 @section fieldhint
11326
11327 Create new frames by copying the top and bottom fields from surrounding frames
11328 supplied as numbers by the hint file.
11329
11330 @table @option
11331 @item hint
11332 Set file containing hints: absolute/relative frame numbers.
11333
11334 There must be one line for each frame in a clip. Each line must contain two
11335 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
11336 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
11337 is current frame number for @code{absolute} mode or out of [-1, 1] range
11338 for @code{relative} mode. First number tells from which frame to pick up top
11339 field and second number tells from which frame to pick up bottom field.
11340
11341 If optionally followed by @code{+} output frame will be marked as interlaced,
11342 else if followed by @code{-} output frame will be marked as progressive, else
11343 it will be marked same as input frame.
11344 If optionally followed by @code{t} output frame will use only top field, or in
11345 case of @code{b} it will use only bottom field.
11346 If line starts with @code{#} or @code{;} that line is skipped.
11347
11348 @item mode
11349 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
11350 @end table
11351
11352 Example of first several lines of @code{hint} file for @code{relative} mode:
11353 @example
11354 0,0 - # first frame
11355 1,0 - # second frame, use third's frame top field and second's frame bottom field
11356 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
11357 1,0 -
11358 0,0 -
11359 0,0 -
11360 1,0 -
11361 1,0 -
11362 1,0 -
11363 0,0 -
11364 0,0 -
11365 1,0 -
11366 1,0 -
11367 1,0 -
11368 0,0 -
11369 @end example
11370
11371 @section fieldmatch
11372
11373 Field matching filter for inverse telecine. It is meant to reconstruct the
11374 progressive frames from a telecined stream. The filter does not drop duplicated
11375 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
11376 followed by a decimation filter such as @ref{decimate} in the filtergraph.
11377
11378 The separation of the field matching and the decimation is notably motivated by
11379 the possibility of inserting a de-interlacing filter fallback between the two.
11380 If the source has mixed telecined and real interlaced content,
11381 @code{fieldmatch} will not be able to match fields for the interlaced parts.
11382 But these remaining combed frames will be marked as interlaced, and thus can be
11383 de-interlaced by a later filter such as @ref{yadif} before decimation.
11384
11385 In addition to the various configuration options, @code{fieldmatch} can take an
11386 optional second stream, activated through the @option{ppsrc} option. If
11387 enabled, the frames reconstruction will be based on the fields and frames from
11388 this second stream. This allows the first input to be pre-processed in order to
11389 help the various algorithms of the filter, while keeping the output lossless
11390 (assuming the fields are matched properly). Typically, a field-aware denoiser,
11391 or brightness/contrast adjustments can help.
11392
11393 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
11394 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
11395 which @code{fieldmatch} is based on. While the semantic and usage are very
11396 close, some behaviour and options names can differ.
11397
11398 The @ref{decimate} filter currently only works for constant frame rate input.
11399 If your input has mixed telecined (30fps) and progressive content with a lower
11400 framerate like 24fps use the following filterchain to produce the necessary cfr
11401 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
11402
11403 The filter accepts the following options:
11404
11405 @table @option
11406 @item order
11407 Specify the assumed field order of the input stream. Available values are:
11408
11409 @table @samp
11410 @item auto
11411 Auto detect parity (use FFmpeg's internal parity value).
11412 @item bff
11413 Assume bottom field first.
11414 @item tff
11415 Assume top field first.
11416 @end table
11417
11418 Note that it is sometimes recommended not to trust the parity announced by the
11419 stream.
11420
11421 Default value is @var{auto}.
11422
11423 @item mode
11424 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
11425 sense that it won't risk creating jerkiness due to duplicate frames when
11426 possible, but if there are bad edits or blended fields it will end up
11427 outputting combed frames when a good match might actually exist. On the other
11428 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
11429 but will almost always find a good frame if there is one. The other values are
11430 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
11431 jerkiness and creating duplicate frames versus finding good matches in sections
11432 with bad edits, orphaned fields, blended fields, etc.
11433
11434 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
11435
11436 Available values are:
11437
11438 @table @samp
11439 @item pc
11440 2-way matching (p/c)
11441 @item pc_n
11442 2-way matching, and trying 3rd match if still combed (p/c + n)
11443 @item pc_u
11444 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
11445 @item pc_n_ub
11446 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
11447 still combed (p/c + n + u/b)
11448 @item pcn
11449 3-way matching (p/c/n)
11450 @item pcn_ub
11451 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
11452 detected as combed (p/c/n + u/b)
11453 @end table
11454
11455 The parenthesis at the end indicate the matches that would be used for that
11456 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
11457 @var{top}).
11458
11459 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
11460 the slowest.
11461
11462 Default value is @var{pc_n}.
11463
11464 @item ppsrc
11465 Mark the main input stream as a pre-processed input, and enable the secondary
11466 input stream as the clean source to pick the fields from. See the filter
11467 introduction for more details. It is similar to the @option{clip2} feature from
11468 VFM/TFM.
11469
11470 Default value is @code{0} (disabled).
11471
11472 @item field
11473 Set the field to match from. It is recommended to set this to the same value as
11474 @option{order} unless you experience matching failures with that setting. In
11475 certain circumstances changing the field that is used to match from can have a
11476 large impact on matching performance. Available values are:
11477
11478 @table @samp
11479 @item auto
11480 Automatic (same value as @option{order}).
11481 @item bottom
11482 Match from the bottom field.
11483 @item top
11484 Match from the top field.
11485 @end table
11486
11487 Default value is @var{auto}.
11488
11489 @item mchroma
11490 Set whether or not chroma is included during the match comparisons. In most
11491 cases it is recommended to leave this enabled. You should set this to @code{0}
11492 only if your clip has bad chroma problems such as heavy rainbowing or other
11493 artifacts. Setting this to @code{0} could also be used to speed things up at
11494 the cost of some accuracy.
11495
11496 Default value is @code{1}.
11497
11498 @item y0
11499 @item y1
11500 These define an exclusion band which excludes the lines between @option{y0} and
11501 @option{y1} from being included in the field matching decision. An exclusion
11502 band can be used to ignore subtitles, a logo, or other things that may
11503 interfere with the matching. @option{y0} sets the starting scan line and
11504 @option{y1} sets the ending line; all lines in between @option{y0} and
11505 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
11506 @option{y0} and @option{y1} to the same value will disable the feature.
11507 @option{y0} and @option{y1} defaults to @code{0}.
11508
11509 @item scthresh
11510 Set the scene change detection threshold as a percentage of maximum change on
11511 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
11512 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
11513 @option{scthresh} is @code{[0.0, 100.0]}.
11514
11515 Default value is @code{12.0}.
11516
11517 @item combmatch
11518 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
11519 account the combed scores of matches when deciding what match to use as the
11520 final match. Available values are:
11521
11522 @table @samp
11523 @item none
11524 No final matching based on combed scores.
11525 @item sc
11526 Combed scores are only used when a scene change is detected.
11527 @item full
11528 Use combed scores all the time.
11529 @end table
11530
11531 Default is @var{sc}.
11532
11533 @item combdbg
11534 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
11535 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
11536 Available values are:
11537
11538 @table @samp
11539 @item none
11540 No forced calculation.
11541 @item pcn
11542 Force p/c/n calculations.
11543 @item pcnub
11544 Force p/c/n/u/b calculations.
11545 @end table
11546
11547 Default value is @var{none}.
11548
11549 @item cthresh
11550 This is the area combing threshold used for combed frame detection. This
11551 essentially controls how "strong" or "visible" combing must be to be detected.
11552 Larger values mean combing must be more visible and smaller values mean combing
11553 can be less visible or strong and still be detected. Valid settings are from
11554 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
11555 be detected as combed). This is basically a pixel difference value. A good
11556 range is @code{[8, 12]}.
11557
11558 Default value is @code{9}.
11559
11560 @item chroma
11561 Sets whether or not chroma is considered in the combed frame decision.  Only
11562 disable this if your source has chroma problems (rainbowing, etc.) that are
11563 causing problems for the combed frame detection with chroma enabled. Actually,
11564 using @option{chroma}=@var{0} is usually more reliable, except for the case
11565 where there is chroma only combing in the source.
11566
11567 Default value is @code{0}.
11568
11569 @item blockx
11570 @item blocky
11571 Respectively set the x-axis and y-axis size of the window used during combed
11572 frame detection. This has to do with the size of the area in which
11573 @option{combpel} pixels are required to be detected as combed for a frame to be
11574 declared combed. See the @option{combpel} parameter description for more info.
11575 Possible values are any number that is a power of 2 starting at 4 and going up
11576 to 512.
11577
11578 Default value is @code{16}.
11579
11580 @item combpel
11581 The number of combed pixels inside any of the @option{blocky} by
11582 @option{blockx} size blocks on the frame for the frame to be detected as
11583 combed. While @option{cthresh} controls how "visible" the combing must be, this
11584 setting controls "how much" combing there must be in any localized area (a
11585 window defined by the @option{blockx} and @option{blocky} settings) on the
11586 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
11587 which point no frames will ever be detected as combed). This setting is known
11588 as @option{MI} in TFM/VFM vocabulary.
11589
11590 Default value is @code{80}.
11591 @end table
11592
11593 @anchor{p/c/n/u/b meaning}
11594 @subsection p/c/n/u/b meaning
11595
11596 @subsubsection p/c/n
11597
11598 We assume the following telecined stream:
11599
11600 @example
11601 Top fields:     1 2 2 3 4
11602 Bottom fields:  1 2 3 4 4
11603 @end example
11604
11605 The numbers correspond to the progressive frame the fields relate to. Here, the
11606 first two frames are progressive, the 3rd and 4th are combed, and so on.
11607
11608 When @code{fieldmatch} is configured to run a matching from bottom
11609 (@option{field}=@var{bottom}) this is how this input stream get transformed:
11610
11611 @example
11612 Input stream:
11613                 T     1 2 2 3 4
11614                 B     1 2 3 4 4   <-- matching reference
11615
11616 Matches:              c c n n c
11617
11618 Output stream:
11619                 T     1 2 3 4 4
11620                 B     1 2 3 4 4
11621 @end example
11622
11623 As a result of the field matching, we can see that some frames get duplicated.
11624 To perform a complete inverse telecine, you need to rely on a decimation filter
11625 after this operation. See for instance the @ref{decimate} filter.
11626
11627 The same operation now matching from top fields (@option{field}=@var{top})
11628 looks like this:
11629
11630 @example
11631 Input stream:
11632                 T     1 2 2 3 4   <-- matching reference
11633                 B     1 2 3 4 4
11634
11635 Matches:              c c p p c
11636
11637 Output stream:
11638                 T     1 2 2 3 4
11639                 B     1 2 2 3 4
11640 @end example
11641
11642 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
11643 basically, they refer to the frame and field of the opposite parity:
11644
11645 @itemize
11646 @item @var{p} matches the field of the opposite parity in the previous frame
11647 @item @var{c} matches the field of the opposite parity in the current frame
11648 @item @var{n} matches the field of the opposite parity in the next frame
11649 @end itemize
11650
11651 @subsubsection u/b
11652
11653 The @var{u} and @var{b} matching are a bit special in the sense that they match
11654 from the opposite parity flag. In the following examples, we assume that we are
11655 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
11656 'x' is placed above and below each matched fields.
11657
11658 With bottom matching (@option{field}=@var{bottom}):
11659 @example
11660 Match:           c         p           n          b          u
11661
11662                  x       x               x        x          x
11663   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11664   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11665                  x         x           x        x              x
11666
11667 Output frames:
11668                  2          1          2          2          2
11669                  2          2          2          1          3
11670 @end example
11671
11672 With top matching (@option{field}=@var{top}):
11673 @example
11674 Match:           c         p           n          b          u
11675
11676                  x         x           x        x              x
11677   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11678   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11679                  x       x               x        x          x
11680
11681 Output frames:
11682                  2          2          2          1          2
11683                  2          1          3          2          2
11684 @end example
11685
11686 @subsection Examples
11687
11688 Simple IVTC of a top field first telecined stream:
11689 @example
11690 fieldmatch=order=tff:combmatch=none, decimate
11691 @end example
11692
11693 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
11694 @example
11695 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11696 @end example
11697
11698 @section fieldorder
11699
11700 Transform the field order of the input video.
11701
11702 It accepts the following parameters:
11703
11704 @table @option
11705
11706 @item order
11707 The output field order. Valid values are @var{tff} for top field first or @var{bff}
11708 for bottom field first.
11709 @end table
11710
11711 The default value is @samp{tff}.
11712
11713 The transformation is done by shifting the picture content up or down
11714 by one line, and filling the remaining line with appropriate picture content.
11715 This method is consistent with most broadcast field order converters.
11716
11717 If the input video is not flagged as being interlaced, or it is already
11718 flagged as being of the required output field order, then this filter does
11719 not alter the incoming video.
11720
11721 It is very useful when converting to or from PAL DV material,
11722 which is bottom field first.
11723
11724 For example:
11725 @example
11726 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11727 @end example
11728
11729 @section fifo, afifo
11730
11731 Buffer input images and send them when they are requested.
11732
11733 It is mainly useful when auto-inserted by the libavfilter
11734 framework.
11735
11736 It does not take parameters.
11737
11738 @section fillborders
11739
11740 Fill borders of the input video, without changing video stream dimensions.
11741 Sometimes video can have garbage at the four edges and you may not want to
11742 crop video input to keep size multiple of some number.
11743
11744 This filter accepts the following options:
11745
11746 @table @option
11747 @item left
11748 Number of pixels to fill from left border.
11749
11750 @item right
11751 Number of pixels to fill from right border.
11752
11753 @item top
11754 Number of pixels to fill from top border.
11755
11756 @item bottom
11757 Number of pixels to fill from bottom border.
11758
11759 @item mode
11760 Set fill mode.
11761
11762 It accepts the following values:
11763 @table @samp
11764 @item smear
11765 fill pixels using outermost pixels
11766
11767 @item mirror
11768 fill pixels using mirroring (half sample symmetric)
11769
11770 @item fixed
11771 fill pixels with constant value
11772
11773 @item reflect
11774 fill pixels using reflecting (whole sample symmetric)
11775
11776 @item wrap
11777 fill pixels using wrapping
11778
11779 @item fade
11780 fade pixels to constant value
11781 @end table
11782
11783 Default is @var{smear}.
11784
11785 @item color
11786 Set color for pixels in fixed or fade mode. Default is @var{black}.
11787 @end table
11788
11789 @subsection Commands
11790 This filter supports same @ref{commands} as options.
11791 The command accepts the same syntax of the corresponding option.
11792
11793 If the specified expression is not valid, it is kept at its current
11794 value.
11795
11796 @section find_rect
11797
11798 Find a rectangular object
11799
11800 It accepts the following options:
11801
11802 @table @option
11803 @item object
11804 Filepath of the object image, needs to be in gray8.
11805
11806 @item threshold
11807 Detection threshold, default is 0.5.
11808
11809 @item mipmaps
11810 Number of mipmaps, default is 3.
11811
11812 @item xmin, ymin, xmax, ymax
11813 Specifies the rectangle in which to search.
11814 @end table
11815
11816 @subsection Examples
11817
11818 @itemize
11819 @item
11820 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
11821 @example
11822 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
11823 @end example
11824 @end itemize
11825
11826 @section floodfill
11827
11828 Flood area with values of same pixel components with another values.
11829
11830 It accepts the following options:
11831 @table @option
11832 @item x
11833 Set pixel x coordinate.
11834
11835 @item y
11836 Set pixel y coordinate.
11837
11838 @item s0
11839 Set source #0 component value.
11840
11841 @item s1
11842 Set source #1 component value.
11843
11844 @item s2
11845 Set source #2 component value.
11846
11847 @item s3
11848 Set source #3 component value.
11849
11850 @item d0
11851 Set destination #0 component value.
11852
11853 @item d1
11854 Set destination #1 component value.
11855
11856 @item d2
11857 Set destination #2 component value.
11858
11859 @item d3
11860 Set destination #3 component value.
11861 @end table
11862
11863 @anchor{format}
11864 @section format
11865
11866 Convert the input video to one of the specified pixel formats.
11867 Libavfilter will try to pick one that is suitable as input to
11868 the next filter.
11869
11870 It accepts the following parameters:
11871 @table @option
11872
11873 @item pix_fmts
11874 A '|'-separated list of pixel format names, such as
11875 "pix_fmts=yuv420p|monow|rgb24".
11876
11877 @end table
11878
11879 @subsection Examples
11880
11881 @itemize
11882 @item
11883 Convert the input video to the @var{yuv420p} format
11884 @example
11885 format=pix_fmts=yuv420p
11886 @end example
11887
11888 Convert the input video to any of the formats in the list
11889 @example
11890 format=pix_fmts=yuv420p|yuv444p|yuv410p
11891 @end example
11892 @end itemize
11893
11894 @anchor{fps}
11895 @section fps
11896
11897 Convert the video to specified constant frame rate by duplicating or dropping
11898 frames as necessary.
11899
11900 It accepts the following parameters:
11901 @table @option
11902
11903 @item fps
11904 The desired output frame rate. The default is @code{25}.
11905
11906 @item start_time
11907 Assume the first PTS should be the given value, in seconds. This allows for
11908 padding/trimming at the start of stream. By default, no assumption is made
11909 about the first frame's expected PTS, so no padding or trimming is done.
11910 For example, this could be set to 0 to pad the beginning with duplicates of
11911 the first frame if a video stream starts after the audio stream or to trim any
11912 frames with a negative PTS.
11913
11914 @item round
11915 Timestamp (PTS) rounding method.
11916
11917 Possible values are:
11918 @table @option
11919 @item zero
11920 round towards 0
11921 @item inf
11922 round away from 0
11923 @item down
11924 round towards -infinity
11925 @item up
11926 round towards +infinity
11927 @item near
11928 round to nearest
11929 @end table
11930 The default is @code{near}.
11931
11932 @item eof_action
11933 Action performed when reading the last frame.
11934
11935 Possible values are:
11936 @table @option
11937 @item round
11938 Use same timestamp rounding method as used for other frames.
11939 @item pass
11940 Pass through last frame if input duration has not been reached yet.
11941 @end table
11942 The default is @code{round}.
11943
11944 @end table
11945
11946 Alternatively, the options can be specified as a flat string:
11947 @var{fps}[:@var{start_time}[:@var{round}]].
11948
11949 See also the @ref{setpts} filter.
11950
11951 @subsection Examples
11952
11953 @itemize
11954 @item
11955 A typical usage in order to set the fps to 25:
11956 @example
11957 fps=fps=25
11958 @end example
11959
11960 @item
11961 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
11962 @example
11963 fps=fps=film:round=near
11964 @end example
11965 @end itemize
11966
11967 @section framepack
11968
11969 Pack two different video streams into a stereoscopic video, setting proper
11970 metadata on supported codecs. The two views should have the same size and
11971 framerate and processing will stop when the shorter video ends. Please note
11972 that you may conveniently adjust view properties with the @ref{scale} and
11973 @ref{fps} filters.
11974
11975 It accepts the following parameters:
11976 @table @option
11977
11978 @item format
11979 The desired packing format. Supported values are:
11980
11981 @table @option
11982
11983 @item sbs
11984 The views are next to each other (default).
11985
11986 @item tab
11987 The views are on top of each other.
11988
11989 @item lines
11990 The views are packed by line.
11991
11992 @item columns
11993 The views are packed by column.
11994
11995 @item frameseq
11996 The views are temporally interleaved.
11997
11998 @end table
11999
12000 @end table
12001
12002 Some examples:
12003
12004 @example
12005 # Convert left and right views into a frame-sequential video
12006 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
12007
12008 # Convert views into a side-by-side video with the same output resolution as the input
12009 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
12010 @end example
12011
12012 @section framerate
12013
12014 Change the frame rate by interpolating new video output frames from the source
12015 frames.
12016
12017 This filter is not designed to function correctly with interlaced media. If
12018 you wish to change the frame rate of interlaced media then you are required
12019 to deinterlace before this filter and re-interlace after this filter.
12020
12021 A description of the accepted options follows.
12022
12023 @table @option
12024 @item fps
12025 Specify the output frames per second. This option can also be specified
12026 as a value alone. The default is @code{50}.
12027
12028 @item interp_start
12029 Specify the start of a range where the output frame will be created as a
12030 linear interpolation of two frames. The range is [@code{0}-@code{255}],
12031 the default is @code{15}.
12032
12033 @item interp_end
12034 Specify the end of a range where the output frame will be created as a
12035 linear interpolation of two frames. The range is [@code{0}-@code{255}],
12036 the default is @code{240}.
12037
12038 @item scene
12039 Specify the level at which a scene change is detected as a value between
12040 0 and 100 to indicate a new scene; a low value reflects a low
12041 probability for the current frame to introduce a new scene, while a higher
12042 value means the current frame is more likely to be one.
12043 The default is @code{8.2}.
12044
12045 @item flags
12046 Specify flags influencing the filter process.
12047
12048 Available value for @var{flags} is:
12049
12050 @table @option
12051 @item scene_change_detect, scd
12052 Enable scene change detection using the value of the option @var{scene}.
12053 This flag is enabled by default.
12054 @end table
12055 @end table
12056
12057 @section framestep
12058
12059 Select one frame every N-th frame.
12060
12061 This filter accepts the following option:
12062 @table @option
12063 @item step
12064 Select frame after every @code{step} frames.
12065 Allowed values are positive integers higher than 0. Default value is @code{1}.
12066 @end table
12067
12068 @section freezedetect
12069
12070 Detect frozen video.
12071
12072 This filter logs a message and sets frame metadata when it detects that the
12073 input video has no significant change in content during a specified duration.
12074 Video freeze detection calculates the mean average absolute difference of all
12075 the components of video frames and compares it to a noise floor.
12076
12077 The printed times and duration are expressed in seconds. The
12078 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
12079 whose timestamp equals or exceeds the detection duration and it contains the
12080 timestamp of the first frame of the freeze. The
12081 @code{lavfi.freezedetect.freeze_duration} and
12082 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
12083 after the freeze.
12084
12085 The filter accepts the following options:
12086
12087 @table @option
12088 @item noise, n
12089 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
12090 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
12091 0.001.
12092
12093 @item duration, d
12094 Set freeze duration until notification (default is 2 seconds).
12095 @end table
12096
12097 @section freezeframes
12098
12099 Freeze video frames.
12100
12101 This filter freezes video frames using frame from 2nd input.
12102
12103 The filter accepts the following options:
12104
12105 @table @option
12106 @item first
12107 Set number of first frame from which to start freeze.
12108
12109 @item last
12110 Set number of last frame from which to end freeze.
12111
12112 @item replace
12113 Set number of frame from 2nd input which will be used instead of replaced frames.
12114 @end table
12115
12116 @anchor{frei0r}
12117 @section frei0r
12118
12119 Apply a frei0r effect to the input video.
12120
12121 To enable the compilation of this filter, you need to install the frei0r
12122 header and configure FFmpeg with @code{--enable-frei0r}.
12123
12124 It accepts the following parameters:
12125
12126 @table @option
12127
12128 @item filter_name
12129 The name of the frei0r effect to load. If the environment variable
12130 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
12131 directories specified by the colon-separated list in @env{FREI0R_PATH}.
12132 Otherwise, the standard frei0r paths are searched, in this order:
12133 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
12134 @file{/usr/lib/frei0r-1/}.
12135
12136 @item filter_params
12137 A '|'-separated list of parameters to pass to the frei0r effect.
12138
12139 @end table
12140
12141 A frei0r effect parameter can be a boolean (its value is either
12142 "y" or "n"), a double, a color (specified as
12143 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
12144 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
12145 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
12146 a position (specified as @var{X}/@var{Y}, where
12147 @var{X} and @var{Y} are floating point numbers) and/or a string.
12148
12149 The number and types of parameters depend on the loaded effect. If an
12150 effect parameter is not specified, the default value is set.
12151
12152 @subsection Examples
12153
12154 @itemize
12155 @item
12156 Apply the distort0r effect, setting the first two double parameters:
12157 @example
12158 frei0r=filter_name=distort0r:filter_params=0.5|0.01
12159 @end example
12160
12161 @item
12162 Apply the colordistance effect, taking a color as the first parameter:
12163 @example
12164 frei0r=colordistance:0.2/0.3/0.4
12165 frei0r=colordistance:violet
12166 frei0r=colordistance:0x112233
12167 @end example
12168
12169 @item
12170 Apply the perspective effect, specifying the top left and top right image
12171 positions:
12172 @example
12173 frei0r=perspective:0.2/0.2|0.8/0.2
12174 @end example
12175 @end itemize
12176
12177 For more information, see
12178 @url{http://frei0r.dyne.org}
12179
12180 @subsection Commands
12181
12182 This filter supports the @option{filter_params} option as @ref{commands}.
12183
12184 @section fspp
12185
12186 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
12187
12188 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
12189 processing filter, one of them is performed once per block, not per pixel.
12190 This allows for much higher speed.
12191
12192 The filter accepts the following options:
12193
12194 @table @option
12195 @item quality
12196 Set quality. This option defines the number of levels for averaging. It accepts
12197 an integer in the range 4-5. Default value is @code{4}.
12198
12199 @item qp
12200 Force a constant quantization parameter. It accepts an integer in range 0-63.
12201 If not set, the filter will use the QP from the video stream (if available).
12202
12203 @item strength
12204 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
12205 more details but also more artifacts, while higher values make the image smoother
12206 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
12207
12208 @item use_bframe_qp
12209 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
12210 option may cause flicker since the B-Frames have often larger QP. Default is
12211 @code{0} (not enabled).
12212
12213 @end table
12214
12215 @section gblur
12216
12217 Apply Gaussian blur filter.
12218
12219 The filter accepts the following options:
12220
12221 @table @option
12222 @item sigma
12223 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
12224
12225 @item steps
12226 Set number of steps for Gaussian approximation. Default is @code{1}.
12227
12228 @item planes
12229 Set which planes to filter. By default all planes are filtered.
12230
12231 @item sigmaV
12232 Set vertical sigma, if negative it will be same as @code{sigma}.
12233 Default is @code{-1}.
12234 @end table
12235
12236 @subsection Commands
12237 This filter supports same commands as options.
12238 The command accepts the same syntax of the corresponding option.
12239
12240 If the specified expression is not valid, it is kept at its current
12241 value.
12242
12243 @section geq
12244
12245 Apply generic equation to each pixel.
12246
12247 The filter accepts the following options:
12248
12249 @table @option
12250 @item lum_expr, lum
12251 Set the luminance expression.
12252 @item cb_expr, cb
12253 Set the chrominance blue expression.
12254 @item cr_expr, cr
12255 Set the chrominance red expression.
12256 @item alpha_expr, a
12257 Set the alpha expression.
12258 @item red_expr, r
12259 Set the red expression.
12260 @item green_expr, g
12261 Set the green expression.
12262 @item blue_expr, b
12263 Set the blue expression.
12264 @end table
12265
12266 The colorspace is selected according to the specified options. If one
12267 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
12268 options is specified, the filter will automatically select a YCbCr
12269 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
12270 @option{blue_expr} options is specified, it will select an RGB
12271 colorspace.
12272
12273 If one of the chrominance expression is not defined, it falls back on the other
12274 one. If no alpha expression is specified it will evaluate to opaque value.
12275 If none of chrominance expressions are specified, they will evaluate
12276 to the luminance expression.
12277
12278 The expressions can use the following variables and functions:
12279
12280 @table @option
12281 @item N
12282 The sequential number of the filtered frame, starting from @code{0}.
12283
12284 @item X
12285 @item Y
12286 The coordinates of the current sample.
12287
12288 @item W
12289 @item H
12290 The width and height of the image.
12291
12292 @item SW
12293 @item SH
12294 Width and height scale depending on the currently filtered plane. It is the
12295 ratio between the corresponding luma plane number of pixels and the current
12296 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
12297 @code{0.5,0.5} for chroma planes.
12298
12299 @item T
12300 Time of the current frame, expressed in seconds.
12301
12302 @item p(x, y)
12303 Return the value of the pixel at location (@var{x},@var{y}) of the current
12304 plane.
12305
12306 @item lum(x, y)
12307 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
12308 plane.
12309
12310 @item cb(x, y)
12311 Return the value of the pixel at location (@var{x},@var{y}) of the
12312 blue-difference chroma plane. Return 0 if there is no such plane.
12313
12314 @item cr(x, y)
12315 Return the value of the pixel at location (@var{x},@var{y}) of the
12316 red-difference chroma plane. Return 0 if there is no such plane.
12317
12318 @item r(x, y)
12319 @item g(x, y)
12320 @item b(x, y)
12321 Return the value of the pixel at location (@var{x},@var{y}) of the
12322 red/green/blue component. Return 0 if there is no such component.
12323
12324 @item alpha(x, y)
12325 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
12326 plane. Return 0 if there is no such plane.
12327
12328 @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)
12329 Sum of sample values in the rectangle from (0,0) to (x,y), this allows obtaining
12330 sums of samples within a rectangle. See the functions without the sum postfix.
12331
12332 @item interpolation
12333 Set one of interpolation methods:
12334 @table @option
12335 @item nearest, n
12336 @item bilinear, b
12337 @end table
12338 Default is bilinear.
12339 @end table
12340
12341 For functions, if @var{x} and @var{y} are outside the area, the value will be
12342 automatically clipped to the closer edge.
12343
12344 Please note that this filter can use multiple threads in which case each slice
12345 will have its own expression state. If you want to use only a single expression
12346 state because your expressions depend on previous state then you should limit
12347 the number of filter threads to 1.
12348
12349 @subsection Examples
12350
12351 @itemize
12352 @item
12353 Flip the image horizontally:
12354 @example
12355 geq=p(W-X\,Y)
12356 @end example
12357
12358 @item
12359 Generate a bidimensional sine wave, with angle @code{PI/3} and a
12360 wavelength of 100 pixels:
12361 @example
12362 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
12363 @end example
12364
12365 @item
12366 Generate a fancy enigmatic moving light:
12367 @example
12368 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
12369 @end example
12370
12371 @item
12372 Generate a quick emboss effect:
12373 @example
12374 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
12375 @end example
12376
12377 @item
12378 Modify RGB components depending on pixel position:
12379 @example
12380 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
12381 @end example
12382
12383 @item
12384 Create a radial gradient that is the same size as the input (also see
12385 the @ref{vignette} filter):
12386 @example
12387 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
12388 @end example
12389 @end itemize
12390
12391 @section gradfun
12392
12393 Fix the banding artifacts that are sometimes introduced into nearly flat
12394 regions by truncation to 8-bit color depth.
12395 Interpolate the gradients that should go where the bands are, and
12396 dither them.
12397
12398 It is designed for playback only.  Do not use it prior to
12399 lossy compression, because compression tends to lose the dither and
12400 bring back the bands.
12401
12402 It accepts the following parameters:
12403
12404 @table @option
12405
12406 @item strength
12407 The maximum amount by which the filter will change any one pixel. This is also
12408 the threshold for detecting nearly flat regions. Acceptable values range from
12409 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
12410 valid range.
12411
12412 @item radius
12413 The neighborhood to fit the gradient to. A larger radius makes for smoother
12414 gradients, but also prevents the filter from modifying the pixels near detailed
12415 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
12416 values will be clipped to the valid range.
12417
12418 @end table
12419
12420 Alternatively, the options can be specified as a flat string:
12421 @var{strength}[:@var{radius}]
12422
12423 @subsection Examples
12424
12425 @itemize
12426 @item
12427 Apply the filter with a @code{3.5} strength and radius of @code{8}:
12428 @example
12429 gradfun=3.5:8
12430 @end example
12431
12432 @item
12433 Specify radius, omitting the strength (which will fall-back to the default
12434 value):
12435 @example
12436 gradfun=radius=8
12437 @end example
12438
12439 @end itemize
12440
12441 @anchor{graphmonitor}
12442 @section graphmonitor
12443 Show various filtergraph stats.
12444
12445 With this filter one can debug complete filtergraph.
12446 Especially issues with links filling with queued frames.
12447
12448 The filter accepts the following options:
12449
12450 @table @option
12451 @item size, s
12452 Set video output size. Default is @var{hd720}.
12453
12454 @item opacity, o
12455 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
12456
12457 @item mode, m
12458 Set output mode, can be @var{fulll} or @var{compact}.
12459 In @var{compact} mode only filters with some queued frames have displayed stats.
12460
12461 @item flags, f
12462 Set flags which enable which stats are shown in video.
12463
12464 Available values for flags are:
12465 @table @samp
12466 @item queue
12467 Display number of queued frames in each link.
12468
12469 @item frame_count_in
12470 Display number of frames taken from filter.
12471
12472 @item frame_count_out
12473 Display number of frames given out from filter.
12474
12475 @item pts
12476 Display current filtered frame pts.
12477
12478 @item time
12479 Display current filtered frame time.
12480
12481 @item timebase
12482 Display time base for filter link.
12483
12484 @item format
12485 Display used format for filter link.
12486
12487 @item size
12488 Display video size or number of audio channels in case of audio used by filter link.
12489
12490 @item rate
12491 Display video frame rate or sample rate in case of audio used by filter link.
12492
12493 @item eof
12494 Display link output status.
12495 @end table
12496
12497 @item rate, r
12498 Set upper limit for video rate of output stream, Default value is @var{25}.
12499 This guarantee that output video frame rate will not be higher than this value.
12500 @end table
12501
12502 @section greyedge
12503 A color constancy variation filter which estimates scene illumination via grey edge algorithm
12504 and corrects the scene colors accordingly.
12505
12506 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
12507
12508 The filter accepts the following options:
12509
12510 @table @option
12511 @item difford
12512 The order of differentiation to be applied on the scene. Must be chosen in the range
12513 [0,2] and default value is 1.
12514
12515 @item minknorm
12516 The Minkowski parameter to be used for calculating the Minkowski distance. Must
12517 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
12518 max value instead of calculating Minkowski distance.
12519
12520 @item sigma
12521 The standard deviation of Gaussian blur to be applied on the scene. Must be
12522 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
12523 can't be equal to 0 if @var{difford} is greater than 0.
12524 @end table
12525
12526 @subsection Examples
12527 @itemize
12528
12529 @item
12530 Grey Edge:
12531 @example
12532 greyedge=difford=1:minknorm=5:sigma=2
12533 @end example
12534
12535 @item
12536 Max Edge:
12537 @example
12538 greyedge=difford=1:minknorm=0:sigma=2
12539 @end example
12540
12541 @end itemize
12542
12543 @anchor{haldclut}
12544 @section haldclut
12545
12546 Apply a Hald CLUT to a video stream.
12547
12548 First input is the video stream to process, and second one is the Hald CLUT.
12549 The Hald CLUT input can be a simple picture or a complete video stream.
12550
12551 The filter accepts the following options:
12552
12553 @table @option
12554 @item shortest
12555 Force termination when the shortest input terminates. Default is @code{0}.
12556 @item repeatlast
12557 Continue applying the last CLUT after the end of the stream. A value of
12558 @code{0} disable the filter after the last frame of the CLUT is reached.
12559 Default is @code{1}.
12560 @end table
12561
12562 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
12563 filters share the same internals).
12564
12565 This filter also supports the @ref{framesync} options.
12566
12567 More information about the Hald CLUT can be found on Eskil Steenberg's website
12568 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
12569
12570 @subsection Workflow examples
12571
12572 @subsubsection Hald CLUT video stream
12573
12574 Generate an identity Hald CLUT stream altered with various effects:
12575 @example
12576 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
12577 @end example
12578
12579 Note: make sure you use a lossless codec.
12580
12581 Then use it with @code{haldclut} to apply it on some random stream:
12582 @example
12583 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
12584 @end example
12585
12586 The Hald CLUT will be applied to the 10 first seconds (duration of
12587 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
12588 to the remaining frames of the @code{mandelbrot} stream.
12589
12590 @subsubsection Hald CLUT with preview
12591
12592 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
12593 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
12594 biggest possible square starting at the top left of the picture. The remaining
12595 padding pixels (bottom or right) will be ignored. This area can be used to add
12596 a preview of the Hald CLUT.
12597
12598 Typically, the following generated Hald CLUT will be supported by the
12599 @code{haldclut} filter:
12600
12601 @example
12602 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
12603    pad=iw+320 [padded_clut];
12604    smptebars=s=320x256, split [a][b];
12605    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
12606    [main][b] overlay=W-320" -frames:v 1 clut.png
12607 @end example
12608
12609 It contains the original and a preview of the effect of the CLUT: SMPTE color
12610 bars are displayed on the right-top, and below the same color bars processed by
12611 the color changes.
12612
12613 Then, the effect of this Hald CLUT can be visualized with:
12614 @example
12615 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
12616 @end example
12617
12618 @section hflip
12619
12620 Flip the input video horizontally.
12621
12622 For example, to horizontally flip the input video with @command{ffmpeg}:
12623 @example
12624 ffmpeg -i in.avi -vf "hflip" out.avi
12625 @end example
12626
12627 @section histeq
12628 This filter applies a global color histogram equalization on a
12629 per-frame basis.
12630
12631 It can be used to correct video that has a compressed range of pixel
12632 intensities.  The filter redistributes the pixel intensities to
12633 equalize their distribution across the intensity range. It may be
12634 viewed as an "automatically adjusting contrast filter". This filter is
12635 useful only for correcting degraded or poorly captured source
12636 video.
12637
12638 The filter accepts the following options:
12639
12640 @table @option
12641 @item strength
12642 Determine the amount of equalization to be applied.  As the strength
12643 is reduced, the distribution of pixel intensities more-and-more
12644 approaches that of the input frame. The value must be a float number
12645 in the range [0,1] and defaults to 0.200.
12646
12647 @item intensity
12648 Set the maximum intensity that can generated and scale the output
12649 values appropriately.  The strength should be set as desired and then
12650 the intensity can be limited if needed to avoid washing-out. The value
12651 must be a float number in the range [0,1] and defaults to 0.210.
12652
12653 @item antibanding
12654 Set the antibanding level. If enabled the filter will randomly vary
12655 the luminance of output pixels by a small amount to avoid banding of
12656 the histogram. Possible values are @code{none}, @code{weak} or
12657 @code{strong}. It defaults to @code{none}.
12658 @end table
12659
12660 @anchor{histogram}
12661 @section histogram
12662
12663 Compute and draw a color distribution histogram for the input video.
12664
12665 The computed histogram is a representation of the color component
12666 distribution in an image.
12667
12668 Standard histogram displays the color components distribution in an image.
12669 Displays color graph for each color component. Shows distribution of
12670 the Y, U, V, A or R, G, B components, depending on input format, in the
12671 current frame. Below each graph a color component scale meter is shown.
12672
12673 The filter accepts the following options:
12674
12675 @table @option
12676 @item level_height
12677 Set height of level. Default value is @code{200}.
12678 Allowed range is [50, 2048].
12679
12680 @item scale_height
12681 Set height of color scale. Default value is @code{12}.
12682 Allowed range is [0, 40].
12683
12684 @item display_mode
12685 Set display mode.
12686 It accepts the following values:
12687 @table @samp
12688 @item stack
12689 Per color component graphs are placed below each other.
12690
12691 @item parade
12692 Per color component graphs are placed side by side.
12693
12694 @item overlay
12695 Presents information identical to that in the @code{parade}, except
12696 that the graphs representing color components are superimposed directly
12697 over one another.
12698 @end table
12699 Default is @code{stack}.
12700
12701 @item levels_mode
12702 Set mode. Can be either @code{linear}, or @code{logarithmic}.
12703 Default is @code{linear}.
12704
12705 @item components
12706 Set what color components to display.
12707 Default is @code{7}.
12708
12709 @item fgopacity
12710 Set foreground opacity. Default is @code{0.7}.
12711
12712 @item bgopacity
12713 Set background opacity. Default is @code{0.5}.
12714 @end table
12715
12716 @subsection Examples
12717
12718 @itemize
12719
12720 @item
12721 Calculate and draw histogram:
12722 @example
12723 ffplay -i input -vf histogram
12724 @end example
12725
12726 @end itemize
12727
12728 @anchor{hqdn3d}
12729 @section hqdn3d
12730
12731 This is a high precision/quality 3d denoise filter. It aims to reduce
12732 image noise, producing smooth images and making still images really
12733 still. It should enhance compressibility.
12734
12735 It accepts the following optional parameters:
12736
12737 @table @option
12738 @item luma_spatial
12739 A non-negative floating point number which specifies spatial luma strength.
12740 It defaults to 4.0.
12741
12742 @item chroma_spatial
12743 A non-negative floating point number which specifies spatial chroma strength.
12744 It defaults to 3.0*@var{luma_spatial}/4.0.
12745
12746 @item luma_tmp
12747 A floating point number which specifies luma temporal strength. It defaults to
12748 6.0*@var{luma_spatial}/4.0.
12749
12750 @item chroma_tmp
12751 A floating point number which specifies chroma temporal strength. It defaults to
12752 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
12753 @end table
12754
12755 @subsection Commands
12756 This filter supports same @ref{commands} as options.
12757 The command accepts the same syntax of the corresponding option.
12758
12759 If the specified expression is not valid, it is kept at its current
12760 value.
12761
12762 @anchor{hwdownload}
12763 @section hwdownload
12764
12765 Download hardware frames to system memory.
12766
12767 The input must be in hardware frames, and the output a non-hardware format.
12768 Not all formats will be supported on the output - it may be necessary to insert
12769 an additional @option{format} filter immediately following in the graph to get
12770 the output in a supported format.
12771
12772 @section hwmap
12773
12774 Map hardware frames to system memory or to another device.
12775
12776 This filter has several different modes of operation; which one is used depends
12777 on the input and output formats:
12778 @itemize
12779 @item
12780 Hardware frame input, normal frame output
12781
12782 Map the input frames to system memory and pass them to the output.  If the
12783 original hardware frame is later required (for example, after overlaying
12784 something else on part of it), the @option{hwmap} filter can be used again
12785 in the next mode to retrieve it.
12786 @item
12787 Normal frame input, hardware frame output
12788
12789 If the input is actually a software-mapped hardware frame, then unmap it -
12790 that is, return the original hardware frame.
12791
12792 Otherwise, a device must be provided.  Create new hardware surfaces on that
12793 device for the output, then map them back to the software format at the input
12794 and give those frames to the preceding filter.  This will then act like the
12795 @option{hwupload} filter, but may be able to avoid an additional copy when
12796 the input is already in a compatible format.
12797 @item
12798 Hardware frame input and output
12799
12800 A device must be supplied for the output, either directly or with the
12801 @option{derive_device} option.  The input and output devices must be of
12802 different types and compatible - the exact meaning of this is
12803 system-dependent, but typically it means that they must refer to the same
12804 underlying hardware context (for example, refer to the same graphics card).
12805
12806 If the input frames were originally created on the output device, then unmap
12807 to retrieve the original frames.
12808
12809 Otherwise, map the frames to the output device - create new hardware frames
12810 on the output corresponding to the frames on the input.
12811 @end itemize
12812
12813 The following additional parameters are accepted:
12814
12815 @table @option
12816 @item mode
12817 Set the frame mapping mode.  Some combination of:
12818 @table @var
12819 @item read
12820 The mapped frame should be readable.
12821 @item write
12822 The mapped frame should be writeable.
12823 @item overwrite
12824 The mapping will always overwrite the entire frame.
12825
12826 This may improve performance in some cases, as the original contents of the
12827 frame need not be loaded.
12828 @item direct
12829 The mapping must not involve any copying.
12830
12831 Indirect mappings to copies of frames are created in some cases where either
12832 direct mapping is not possible or it would have unexpected properties.
12833 Setting this flag ensures that the mapping is direct and will fail if that is
12834 not possible.
12835 @end table
12836 Defaults to @var{read+write} if not specified.
12837
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
12842 @item reverse
12843 In a hardware to hardware mapping, map in reverse - create frames in the sink
12844 and map them back to the source.  This may be necessary in some cases where
12845 a mapping in one direction is required but only the opposite direction is
12846 supported by the devices being used.
12847
12848 This option is dangerous - it may break the preceding filter in undefined
12849 ways if there are any additional constraints on that filter's output.
12850 Do not use it without fully understanding the implications of its use.
12851 @end table
12852
12853 @anchor{hwupload}
12854 @section hwupload
12855
12856 Upload system memory frames to hardware surfaces.
12857
12858 The device to upload to must be supplied when the filter is initialised.  If
12859 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
12860 option or with the @option{derive_device} option.  The input and output devices
12861 must be of different types and compatible - the exact meaning of this is
12862 system-dependent, but typically it means that they must refer to the same
12863 underlying hardware context (for example, refer to the same graphics card).
12864
12865 The following additional parameters are accepted:
12866
12867 @table @option
12868 @item derive_device @var{type}
12869 Rather than using the device supplied at initialisation, instead derive a new
12870 device of type @var{type} from the device the input frames exist on.
12871 @end table
12872
12873 @anchor{hwupload_cuda}
12874 @section hwupload_cuda
12875
12876 Upload system memory frames to a CUDA device.
12877
12878 It accepts the following optional parameters:
12879
12880 @table @option
12881 @item device
12882 The number of the CUDA device to use
12883 @end table
12884
12885 @section hqx
12886
12887 Apply a high-quality magnification filter designed for pixel art. This filter
12888 was originally created by Maxim Stepin.
12889
12890 It accepts the following option:
12891
12892 @table @option
12893 @item n
12894 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
12895 @code{hq3x} and @code{4} for @code{hq4x}.
12896 Default is @code{3}.
12897 @end table
12898
12899 @section hstack
12900 Stack input videos horizontally.
12901
12902 All streams must be of same pixel format and of same height.
12903
12904 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
12905 to create same output.
12906
12907 The filter accepts the following option:
12908
12909 @table @option
12910 @item inputs
12911 Set number of input streams. Default is 2.
12912
12913 @item shortest
12914 If set to 1, force the output to terminate when the shortest input
12915 terminates. Default value is 0.
12916 @end table
12917
12918 @section hue
12919
12920 Modify the hue and/or the saturation of the input.
12921
12922 It accepts the following parameters:
12923
12924 @table @option
12925 @item h
12926 Specify the hue angle as a number of degrees. It accepts an expression,
12927 and defaults to "0".
12928
12929 @item s
12930 Specify the saturation in the [-10,10] range. It accepts an expression and
12931 defaults to "1".
12932
12933 @item H
12934 Specify the hue angle as a number of radians. It accepts an
12935 expression, and defaults to "0".
12936
12937 @item b
12938 Specify the brightness in the [-10,10] range. It accepts an expression and
12939 defaults to "0".
12940 @end table
12941
12942 @option{h} and @option{H} are mutually exclusive, and can't be
12943 specified at the same time.
12944
12945 The @option{b}, @option{h}, @option{H} and @option{s} option values are
12946 expressions containing the following constants:
12947
12948 @table @option
12949 @item n
12950 frame count of the input frame starting from 0
12951
12952 @item pts
12953 presentation timestamp of the input frame expressed in time base units
12954
12955 @item r
12956 frame rate of the input video, NAN if the input frame rate is unknown
12957
12958 @item t
12959 timestamp expressed in seconds, NAN if the input timestamp is unknown
12960
12961 @item tb
12962 time base of the input video
12963 @end table
12964
12965 @subsection Examples
12966
12967 @itemize
12968 @item
12969 Set the hue to 90 degrees and the saturation to 1.0:
12970 @example
12971 hue=h=90:s=1
12972 @end example
12973
12974 @item
12975 Same command but expressing the hue in radians:
12976 @example
12977 hue=H=PI/2:s=1
12978 @end example
12979
12980 @item
12981 Rotate hue and make the saturation swing between 0
12982 and 2 over a period of 1 second:
12983 @example
12984 hue="H=2*PI*t: s=sin(2*PI*t)+1"
12985 @end example
12986
12987 @item
12988 Apply a 3 seconds saturation fade-in effect starting at 0:
12989 @example
12990 hue="s=min(t/3\,1)"
12991 @end example
12992
12993 The general fade-in expression can be written as:
12994 @example
12995 hue="s=min(0\, max((t-START)/DURATION\, 1))"
12996 @end example
12997
12998 @item
12999 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
13000 @example
13001 hue="s=max(0\, min(1\, (8-t)/3))"
13002 @end example
13003
13004 The general fade-out expression can be written as:
13005 @example
13006 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
13007 @end example
13008
13009 @end itemize
13010
13011 @subsection Commands
13012
13013 This filter supports the following commands:
13014 @table @option
13015 @item b
13016 @item s
13017 @item h
13018 @item H
13019 Modify the hue and/or the saturation and/or brightness of the input video.
13020 The command accepts the same syntax of the corresponding option.
13021
13022 If the specified expression is not valid, it is kept at its current
13023 value.
13024 @end table
13025
13026 @section hysteresis
13027
13028 Grow first stream into second stream by connecting components.
13029 This makes it possible to build more robust edge masks.
13030
13031 This filter accepts the following options:
13032
13033 @table @option
13034 @item planes
13035 Set which planes will be processed as bitmap, unprocessed planes will be
13036 copied from first stream.
13037 By default value 0xf, all planes will be processed.
13038
13039 @item threshold
13040 Set threshold which is used in filtering. If pixel component value is higher than
13041 this value filter algorithm for connecting components is activated.
13042 By default value is 0.
13043 @end table
13044
13045 The @code{hysteresis} filter also supports the @ref{framesync} options.
13046
13047 @section idet
13048
13049 Detect video interlacing type.
13050
13051 This filter tries to detect if the input frames are interlaced, progressive,
13052 top or bottom field first. It will also try to detect fields that are
13053 repeated between adjacent frames (a sign of telecine).
13054
13055 Single frame detection considers only immediately adjacent frames when classifying each frame.
13056 Multiple frame detection incorporates the classification history of previous frames.
13057
13058 The filter will log these metadata values:
13059
13060 @table @option
13061 @item single.current_frame
13062 Detected type of current frame using single-frame detection. One of:
13063 ``tff'' (top field first), ``bff'' (bottom field first),
13064 ``progressive'', or ``undetermined''
13065
13066 @item single.tff
13067 Cumulative number of frames detected as top field first using single-frame detection.
13068
13069 @item multiple.tff
13070 Cumulative number of frames detected as top field first using multiple-frame detection.
13071
13072 @item single.bff
13073 Cumulative number of frames detected as bottom field first using single-frame detection.
13074
13075 @item multiple.current_frame
13076 Detected type of current frame using multiple-frame detection. One of:
13077 ``tff'' (top field first), ``bff'' (bottom field first),
13078 ``progressive'', or ``undetermined''
13079
13080 @item multiple.bff
13081 Cumulative number of frames detected as bottom field first using multiple-frame detection.
13082
13083 @item single.progressive
13084 Cumulative number of frames detected as progressive using single-frame detection.
13085
13086 @item multiple.progressive
13087 Cumulative number of frames detected as progressive using multiple-frame detection.
13088
13089 @item single.undetermined
13090 Cumulative number of frames that could not be classified using single-frame detection.
13091
13092 @item multiple.undetermined
13093 Cumulative number of frames that could not be classified using multiple-frame detection.
13094
13095 @item repeated.current_frame
13096 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
13097
13098 @item repeated.neither
13099 Cumulative number of frames with no repeated field.
13100
13101 @item repeated.top
13102 Cumulative number of frames with the top field repeated from the previous frame's top field.
13103
13104 @item repeated.bottom
13105 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
13106 @end table
13107
13108 The filter accepts the following options:
13109
13110 @table @option
13111 @item intl_thres
13112 Set interlacing threshold.
13113 @item prog_thres
13114 Set progressive threshold.
13115 @item rep_thres
13116 Threshold for repeated field detection.
13117 @item half_life
13118 Number of frames after which a given frame's contribution to the
13119 statistics is halved (i.e., it contributes only 0.5 to its
13120 classification). The default of 0 means that all frames seen are given
13121 full weight of 1.0 forever.
13122 @item analyze_interlaced_flag
13123 When this is not 0 then idet will use the specified number of frames to determine
13124 if the interlaced flag is accurate, it will not count undetermined frames.
13125 If the flag is found to be accurate it will be used without any further
13126 computations, if it is found to be inaccurate it will be cleared without any
13127 further computations. This allows inserting the idet filter as a low computational
13128 method to clean up the interlaced flag
13129 @end table
13130
13131 @section il
13132
13133 Deinterleave or interleave fields.
13134
13135 This filter allows one to process interlaced images fields without
13136 deinterlacing them. Deinterleaving splits the input frame into 2
13137 fields (so called half pictures). Odd lines are moved to the top
13138 half of the output image, even lines to the bottom half.
13139 You can process (filter) them independently and then re-interleave them.
13140
13141 The filter accepts the following options:
13142
13143 @table @option
13144 @item luma_mode, l
13145 @item chroma_mode, c
13146 @item alpha_mode, a
13147 Available values for @var{luma_mode}, @var{chroma_mode} and
13148 @var{alpha_mode} are:
13149
13150 @table @samp
13151 @item none
13152 Do nothing.
13153
13154 @item deinterleave, d
13155 Deinterleave fields, placing one above the other.
13156
13157 @item interleave, i
13158 Interleave fields. Reverse the effect of deinterleaving.
13159 @end table
13160 Default value is @code{none}.
13161
13162 @item luma_swap, ls
13163 @item chroma_swap, cs
13164 @item alpha_swap, as
13165 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
13166 @end table
13167
13168 @subsection Commands
13169
13170 This filter supports the all above options as @ref{commands}.
13171
13172 @section inflate
13173
13174 Apply inflate effect to the video.
13175
13176 This filter replaces the pixel by the local(3x3) average by taking into account
13177 only values higher than the pixel.
13178
13179 It accepts the following options:
13180
13181 @table @option
13182 @item threshold0
13183 @item threshold1
13184 @item threshold2
13185 @item threshold3
13186 Limit the maximum change for each plane, default is 65535.
13187 If 0, plane will remain unchanged.
13188 @end table
13189
13190 @subsection Commands
13191
13192 This filter supports the all above options as @ref{commands}.
13193
13194 @section interlace
13195
13196 Simple interlacing filter from progressive contents. This interleaves upper (or
13197 lower) lines from odd frames with lower (or upper) lines from even frames,
13198 halving the frame rate and preserving image height.
13199
13200 @example
13201    Original        Original             New Frame
13202    Frame 'j'      Frame 'j+1'             (tff)
13203   ==========      ===========       ==================
13204     Line 0  -------------------->    Frame 'j' Line 0
13205     Line 1          Line 1  ---->   Frame 'j+1' Line 1
13206     Line 2 --------------------->    Frame 'j' Line 2
13207     Line 3          Line 3  ---->   Frame 'j+1' Line 3
13208      ...             ...                   ...
13209 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
13210 @end example
13211
13212 It accepts the following optional parameters:
13213
13214 @table @option
13215 @item scan
13216 This determines whether the interlaced frame is taken from the even
13217 (tff - default) or odd (bff) lines of the progressive frame.
13218
13219 @item lowpass
13220 Vertical lowpass filter to avoid twitter interlacing and
13221 reduce moire patterns.
13222
13223 @table @samp
13224 @item 0, off
13225 Disable vertical lowpass filter
13226
13227 @item 1, linear
13228 Enable linear filter (default)
13229
13230 @item 2, complex
13231 Enable complex filter. This will slightly less reduce twitter and moire
13232 but better retain detail and subjective sharpness impression.
13233
13234 @end table
13235 @end table
13236
13237 @section kerndeint
13238
13239 Deinterlace input video by applying Donald Graft's adaptive kernel
13240 deinterling. Work on interlaced parts of a video to produce
13241 progressive frames.
13242
13243 The description of the accepted parameters follows.
13244
13245 @table @option
13246 @item thresh
13247 Set the threshold which affects the filter's tolerance when
13248 determining if a pixel line must be processed. It must be an integer
13249 in the range [0,255] and defaults to 10. A value of 0 will result in
13250 applying the process on every pixels.
13251
13252 @item map
13253 Paint pixels exceeding the threshold value to white if set to 1.
13254 Default is 0.
13255
13256 @item order
13257 Set the fields order. Swap fields if set to 1, leave fields alone if
13258 0. Default is 0.
13259
13260 @item sharp
13261 Enable additional sharpening if set to 1. Default is 0.
13262
13263 @item twoway
13264 Enable twoway sharpening if set to 1. Default is 0.
13265 @end table
13266
13267 @subsection Examples
13268
13269 @itemize
13270 @item
13271 Apply default values:
13272 @example
13273 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
13274 @end example
13275
13276 @item
13277 Enable additional sharpening:
13278 @example
13279 kerndeint=sharp=1
13280 @end example
13281
13282 @item
13283 Paint processed pixels in white:
13284 @example
13285 kerndeint=map=1
13286 @end example
13287 @end itemize
13288
13289 @section lagfun
13290
13291 Slowly update darker pixels.
13292
13293 This filter makes short flashes of light appear longer.
13294 This filter accepts the following options:
13295
13296 @table @option
13297 @item decay
13298 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
13299
13300 @item planes
13301 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
13302 @end table
13303
13304 @section lenscorrection
13305
13306 Correct radial lens distortion
13307
13308 This filter can be used to correct for radial distortion as can result from the use
13309 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
13310 one can use tools available for example as part of opencv or simply trial-and-error.
13311 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
13312 and extract the k1 and k2 coefficients from the resulting matrix.
13313
13314 Note that effectively the same filter is available in the open-source tools Krita and
13315 Digikam from the KDE project.
13316
13317 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
13318 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
13319 brightness distribution, so you may want to use both filters together in certain
13320 cases, though you will have to take care of ordering, i.e. whether vignetting should
13321 be applied before or after lens correction.
13322
13323 @subsection Options
13324
13325 The filter accepts the following options:
13326
13327 @table @option
13328 @item cx
13329 Relative x-coordinate of the focal point of the image, and thereby the center of the
13330 distortion. This value has a range [0,1] and is expressed as fractions of the image
13331 width. Default is 0.5.
13332 @item cy
13333 Relative y-coordinate of the focal point of the image, and thereby the center of the
13334 distortion. This value has a range [0,1] and is expressed as fractions of the image
13335 height. Default is 0.5.
13336 @item k1
13337 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
13338 no correction. Default is 0.
13339 @item k2
13340 Coefficient of the double quadratic correction term. This value has a range [-1,1].
13341 0 means no correction. Default is 0.
13342 @end table
13343
13344 The formula that generates the correction is:
13345
13346 @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)
13347
13348 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
13349 distances from the focal point in the source and target images, respectively.
13350
13351 @section lensfun
13352
13353 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
13354
13355 The @code{lensfun} filter requires the camera make, camera model, and lens model
13356 to apply the lens correction. The filter will load the lensfun database and
13357 query it to find the corresponding camera and lens entries in the database. As
13358 long as these entries can be found with the given options, the filter can
13359 perform corrections on frames. Note that incomplete strings will result in the
13360 filter choosing the best match with the given options, and the filter will
13361 output the chosen camera and lens models (logged with level "info"). You must
13362 provide the make, camera model, and lens model as they are required.
13363
13364 The filter accepts the following options:
13365
13366 @table @option
13367 @item make
13368 The make of the camera (for example, "Canon"). This option is required.
13369
13370 @item model
13371 The model of the camera (for example, "Canon EOS 100D"). This option is
13372 required.
13373
13374 @item lens_model
13375 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
13376 option is required.
13377
13378 @item mode
13379 The type of correction to apply. The following values are valid options:
13380
13381 @table @samp
13382 @item vignetting
13383 Enables fixing lens vignetting.
13384
13385 @item geometry
13386 Enables fixing lens geometry. This is the default.
13387
13388 @item subpixel
13389 Enables fixing chromatic aberrations.
13390
13391 @item vig_geo
13392 Enables fixing lens vignetting and lens geometry.
13393
13394 @item vig_subpixel
13395 Enables fixing lens vignetting and chromatic aberrations.
13396
13397 @item distortion
13398 Enables fixing both lens geometry and chromatic aberrations.
13399
13400 @item all
13401 Enables all possible corrections.
13402
13403 @end table
13404 @item focal_length
13405 The focal length of the image/video (zoom; expected constant for video). For
13406 example, a 18--55mm lens has focal length range of [18--55], so a value in that
13407 range should be chosen when using that lens. Default 18.
13408
13409 @item aperture
13410 The aperture of the image/video (expected constant for video). Note that
13411 aperture is only used for vignetting correction. Default 3.5.
13412
13413 @item focus_distance
13414 The focus distance of the image/video (expected constant for video). Note that
13415 focus distance is only used for vignetting and only slightly affects the
13416 vignetting correction process. If unknown, leave it at the default value (which
13417 is 1000).
13418
13419 @item scale
13420 The scale factor which is applied after transformation. After correction the
13421 video is no longer necessarily rectangular. This parameter controls how much of
13422 the resulting image is visible. The value 0 means that a value will be chosen
13423 automatically such that there is little or no unmapped area in the output
13424 image. 1.0 means that no additional scaling is done. Lower values may result
13425 in more of the corrected image being visible, while higher values may avoid
13426 unmapped areas in the output.
13427
13428 @item target_geometry
13429 The target geometry of the output image/video. The following values are valid
13430 options:
13431
13432 @table @samp
13433 @item rectilinear (default)
13434 @item fisheye
13435 @item panoramic
13436 @item equirectangular
13437 @item fisheye_orthographic
13438 @item fisheye_stereographic
13439 @item fisheye_equisolid
13440 @item fisheye_thoby
13441 @end table
13442 @item reverse
13443 Apply the reverse of image correction (instead of correcting distortion, apply
13444 it).
13445
13446 @item interpolation
13447 The type of interpolation used when correcting distortion. The following values
13448 are valid options:
13449
13450 @table @samp
13451 @item nearest
13452 @item linear (default)
13453 @item lanczos
13454 @end table
13455 @end table
13456
13457 @subsection Examples
13458
13459 @itemize
13460 @item
13461 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
13462 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
13463 aperture of "8.0".
13464
13465 @example
13466 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
13467 @end example
13468
13469 @item
13470 Apply the same as before, but only for the first 5 seconds of video.
13471
13472 @example
13473 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
13474 @end example
13475
13476 @end itemize
13477
13478 @section libvmaf
13479
13480 Obtain the VMAF (Video Multi-Method Assessment Fusion)
13481 score between two input videos.
13482
13483 The obtained VMAF score is printed through the logging system.
13484
13485 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
13486 After installing the library it can be enabled using:
13487 @code{./configure --enable-libvmaf}.
13488 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
13489
13490 The filter has following options:
13491
13492 @table @option
13493 @item model_path
13494 Set the model path which is to be used for SVM.
13495 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
13496
13497 @item log_path
13498 Set the file path to be used to store logs.
13499
13500 @item log_fmt
13501 Set the format of the log file (csv, json or xml).
13502
13503 @item enable_transform
13504 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
13505 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
13506 Default value: @code{false}
13507
13508 @item phone_model
13509 Invokes the phone model which will generate VMAF scores higher than in the
13510 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
13511 Default value: @code{false}
13512
13513 @item psnr
13514 Enables computing psnr along with vmaf.
13515 Default value: @code{false}
13516
13517 @item ssim
13518 Enables computing ssim along with vmaf.
13519 Default value: @code{false}
13520
13521 @item ms_ssim
13522 Enables computing ms_ssim along with vmaf.
13523 Default value: @code{false}
13524
13525 @item pool
13526 Set the pool method to be used for computing vmaf.
13527 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
13528
13529 @item n_threads
13530 Set number of threads to be used when computing vmaf.
13531 Default value: @code{0}, which makes use of all available logical processors.
13532
13533 @item n_subsample
13534 Set interval for frame subsampling used when computing vmaf.
13535 Default value: @code{1}
13536
13537 @item enable_conf_interval
13538 Enables confidence interval.
13539 Default value: @code{false}
13540 @end table
13541
13542 This filter also supports the @ref{framesync} options.
13543
13544 @subsection Examples
13545 @itemize
13546 @item
13547 On the below examples the input file @file{main.mpg} being processed is
13548 compared with the reference file @file{ref.mpg}.
13549
13550 @example
13551 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
13552 @end example
13553
13554 @item
13555 Example with options:
13556 @example
13557 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
13558 @end example
13559
13560 @item
13561 Example with options and different containers:
13562 @example
13563 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 -
13564 @end example
13565 @end itemize
13566
13567 @section limiter
13568
13569 Limits the pixel components values to the specified range [min, max].
13570
13571 The filter accepts the following options:
13572
13573 @table @option
13574 @item min
13575 Lower bound. Defaults to the lowest allowed value for the input.
13576
13577 @item max
13578 Upper bound. Defaults to the highest allowed value for the input.
13579
13580 @item planes
13581 Specify which planes will be processed. Defaults to all available.
13582 @end table
13583
13584 @subsection Commands
13585
13586 This filter supports the all above options as @ref{commands}.
13587
13588 @section loop
13589
13590 Loop video frames.
13591
13592 The filter accepts the following options:
13593
13594 @table @option
13595 @item loop
13596 Set the number of loops. Setting this value to -1 will result in infinite loops.
13597 Default is 0.
13598
13599 @item size
13600 Set maximal size in number of frames. Default is 0.
13601
13602 @item start
13603 Set first frame of loop. Default is 0.
13604 @end table
13605
13606 @subsection Examples
13607
13608 @itemize
13609 @item
13610 Loop single first frame infinitely:
13611 @example
13612 loop=loop=-1:size=1:start=0
13613 @end example
13614
13615 @item
13616 Loop single first frame 10 times:
13617 @example
13618 loop=loop=10:size=1:start=0
13619 @end example
13620
13621 @item
13622 Loop 10 first frames 5 times:
13623 @example
13624 loop=loop=5:size=10:start=0
13625 @end example
13626 @end itemize
13627
13628 @section lut1d
13629
13630 Apply a 1D LUT to an input video.
13631
13632 The filter accepts the following options:
13633
13634 @table @option
13635 @item file
13636 Set the 1D LUT file name.
13637
13638 Currently supported formats:
13639 @table @samp
13640 @item cube
13641 Iridas
13642 @item csp
13643 cineSpace
13644 @end table
13645
13646 @item interp
13647 Select interpolation mode.
13648
13649 Available values are:
13650
13651 @table @samp
13652 @item nearest
13653 Use values from the nearest defined point.
13654 @item linear
13655 Interpolate values using the linear interpolation.
13656 @item cosine
13657 Interpolate values using the cosine interpolation.
13658 @item cubic
13659 Interpolate values using the cubic interpolation.
13660 @item spline
13661 Interpolate values using the spline interpolation.
13662 @end table
13663 @end table
13664
13665 @anchor{lut3d}
13666 @section lut3d
13667
13668 Apply a 3D LUT to an input video.
13669
13670 The filter accepts the following options:
13671
13672 @table @option
13673 @item file
13674 Set the 3D LUT file name.
13675
13676 Currently supported formats:
13677 @table @samp
13678 @item 3dl
13679 AfterEffects
13680 @item cube
13681 Iridas
13682 @item dat
13683 DaVinci
13684 @item m3d
13685 Pandora
13686 @item csp
13687 cineSpace
13688 @end table
13689 @item interp
13690 Select interpolation mode.
13691
13692 Available values are:
13693
13694 @table @samp
13695 @item nearest
13696 Use values from the nearest defined point.
13697 @item trilinear
13698 Interpolate values using the 8 points defining a cube.
13699 @item tetrahedral
13700 Interpolate values using a tetrahedron.
13701 @end table
13702 @end table
13703
13704 @section lumakey
13705
13706 Turn certain luma values into transparency.
13707
13708 The filter accepts the following options:
13709
13710 @table @option
13711 @item threshold
13712 Set the luma which will be used as base for transparency.
13713 Default value is @code{0}.
13714
13715 @item tolerance
13716 Set the range of luma values to be keyed out.
13717 Default value is @code{0.01}.
13718
13719 @item softness
13720 Set the range of softness. Default value is @code{0}.
13721 Use this to control gradual transition from zero to full transparency.
13722 @end table
13723
13724 @subsection Commands
13725 This filter supports same @ref{commands} as options.
13726 The command accepts the same syntax of the corresponding option.
13727
13728 If the specified expression is not valid, it is kept at its current
13729 value.
13730
13731 @section lut, lutrgb, lutyuv
13732
13733 Compute a look-up table for binding each pixel component input value
13734 to an output value, and apply it to the input video.
13735
13736 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
13737 to an RGB input video.
13738
13739 These filters accept the following parameters:
13740 @table @option
13741 @item c0
13742 set first pixel component expression
13743 @item c1
13744 set second pixel component expression
13745 @item c2
13746 set third pixel component expression
13747 @item c3
13748 set fourth pixel component expression, corresponds to the alpha component
13749
13750 @item r
13751 set red component expression
13752 @item g
13753 set green component expression
13754 @item b
13755 set blue component expression
13756 @item a
13757 alpha component expression
13758
13759 @item y
13760 set Y/luminance component expression
13761 @item u
13762 set U/Cb component expression
13763 @item v
13764 set V/Cr component expression
13765 @end table
13766
13767 Each of them specifies the expression to use for computing the lookup table for
13768 the corresponding pixel component values.
13769
13770 The exact component associated to each of the @var{c*} options depends on the
13771 format in input.
13772
13773 The @var{lut} filter requires either YUV or RGB pixel formats in input,
13774 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
13775
13776 The expressions can contain the following constants and functions:
13777
13778 @table @option
13779 @item w
13780 @item h
13781 The input width and height.
13782
13783 @item val
13784 The input value for the pixel component.
13785
13786 @item clipval
13787 The input value, clipped to the @var{minval}-@var{maxval} range.
13788
13789 @item maxval
13790 The maximum value for the pixel component.
13791
13792 @item minval
13793 The minimum value for the pixel component.
13794
13795 @item negval
13796 The negated value for the pixel component value, clipped to the
13797 @var{minval}-@var{maxval} range; it corresponds to the expression
13798 "maxval-clipval+minval".
13799
13800 @item clip(val)
13801 The computed value in @var{val}, clipped to the
13802 @var{minval}-@var{maxval} range.
13803
13804 @item gammaval(gamma)
13805 The computed gamma correction value of the pixel component value,
13806 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
13807 expression
13808 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
13809
13810 @end table
13811
13812 All expressions default to "val".
13813
13814 @subsection Examples
13815
13816 @itemize
13817 @item
13818 Negate input video:
13819 @example
13820 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
13821 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
13822 @end example
13823
13824 The above is the same as:
13825 @example
13826 lutrgb="r=negval:g=negval:b=negval"
13827 lutyuv="y=negval:u=negval:v=negval"
13828 @end example
13829
13830 @item
13831 Negate luminance:
13832 @example
13833 lutyuv=y=negval
13834 @end example
13835
13836 @item
13837 Remove chroma components, turning the video into a graytone image:
13838 @example
13839 lutyuv="u=128:v=128"
13840 @end example
13841
13842 @item
13843 Apply a luma burning effect:
13844 @example
13845 lutyuv="y=2*val"
13846 @end example
13847
13848 @item
13849 Remove green and blue components:
13850 @example
13851 lutrgb="g=0:b=0"
13852 @end example
13853
13854 @item
13855 Set a constant alpha channel value on input:
13856 @example
13857 format=rgba,lutrgb=a="maxval-minval/2"
13858 @end example
13859
13860 @item
13861 Correct luminance gamma by a factor of 0.5:
13862 @example
13863 lutyuv=y=gammaval(0.5)
13864 @end example
13865
13866 @item
13867 Discard least significant bits of luma:
13868 @example
13869 lutyuv=y='bitand(val, 128+64+32)'
13870 @end example
13871
13872 @item
13873 Technicolor like effect:
13874 @example
13875 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
13876 @end example
13877 @end itemize
13878
13879 @section lut2, tlut2
13880
13881 The @code{lut2} filter takes two input streams and outputs one
13882 stream.
13883
13884 The @code{tlut2} (time lut2) filter takes two consecutive frames
13885 from one single stream.
13886
13887 This filter accepts the following parameters:
13888 @table @option
13889 @item c0
13890 set first pixel component expression
13891 @item c1
13892 set second pixel component expression
13893 @item c2
13894 set third pixel component expression
13895 @item c3
13896 set fourth pixel component expression, corresponds to the alpha component
13897
13898 @item d
13899 set output bit depth, only available for @code{lut2} filter. By default is 0,
13900 which means bit depth is automatically picked from first input format.
13901 @end table
13902
13903 The @code{lut2} filter also supports the @ref{framesync} options.
13904
13905 Each of them specifies the expression to use for computing the lookup table for
13906 the corresponding pixel component values.
13907
13908 The exact component associated to each of the @var{c*} options depends on the
13909 format in inputs.
13910
13911 The expressions can contain the following constants:
13912
13913 @table @option
13914 @item w
13915 @item h
13916 The input width and height.
13917
13918 @item x
13919 The first input value for the pixel component.
13920
13921 @item y
13922 The second input value for the pixel component.
13923
13924 @item bdx
13925 The first input video bit depth.
13926
13927 @item bdy
13928 The second input video bit depth.
13929 @end table
13930
13931 All expressions default to "x".
13932
13933 @subsection Examples
13934
13935 @itemize
13936 @item
13937 Highlight differences between two RGB video streams:
13938 @example
13939 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)'
13940 @end example
13941
13942 @item
13943 Highlight differences between two YUV video streams:
13944 @example
13945 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)'
13946 @end example
13947
13948 @item
13949 Show max difference between two video streams:
13950 @example
13951 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)))'
13952 @end example
13953 @end itemize
13954
13955 @section maskedclamp
13956
13957 Clamp the first input stream with the second input and third input stream.
13958
13959 Returns the value of first stream to be between second input
13960 stream - @code{undershoot} and third input stream + @code{overshoot}.
13961
13962 This filter accepts the following options:
13963 @table @option
13964 @item undershoot
13965 Default value is @code{0}.
13966
13967 @item overshoot
13968 Default value is @code{0}.
13969
13970 @item planes
13971 Set which planes will be processed as bitmap, unprocessed planes will be
13972 copied from first stream.
13973 By default value 0xf, all planes will be processed.
13974 @end table
13975
13976 @subsection Commands
13977
13978 This filter supports the all above options as @ref{commands}.
13979
13980 @section maskedmax
13981
13982 Merge the second and third input stream into output stream using absolute differences
13983 between second input stream and first input stream and absolute difference between
13984 third input stream and first input stream. The picked value will be from second input
13985 stream if second absolute difference is greater than first one or from third input stream
13986 otherwise.
13987
13988 This filter accepts the following options:
13989 @table @option
13990 @item planes
13991 Set which planes will be processed as bitmap, unprocessed planes will be
13992 copied from first stream.
13993 By default value 0xf, all planes will be processed.
13994 @end table
13995
13996 @subsection Commands
13997
13998 This filter supports the all above options as @ref{commands}.
13999
14000 @section maskedmerge
14001
14002 Merge the first input stream with the second input stream using per pixel
14003 weights in the third input stream.
14004
14005 A value of 0 in the third stream pixel component means that pixel component
14006 from first stream is returned unchanged, while maximum value (eg. 255 for
14007 8-bit videos) means that pixel component from second stream is returned
14008 unchanged. Intermediate values define the amount of merging between both
14009 input stream's pixel components.
14010
14011 This filter accepts the following options:
14012 @table @option
14013 @item planes
14014 Set which planes will be processed as bitmap, unprocessed planes will be
14015 copied from first stream.
14016 By default value 0xf, all planes will be processed.
14017 @end table
14018
14019 @section maskedmin
14020
14021 Merge the second and third input stream into output stream using absolute differences
14022 between second input stream and first input stream and absolute difference between
14023 third input stream and first input stream. The picked value will be from second input
14024 stream if second absolute difference is less than first one or from third input stream
14025 otherwise.
14026
14027 This filter accepts the following options:
14028 @table @option
14029 @item planes
14030 Set which planes will be processed as bitmap, unprocessed planes will be
14031 copied from first stream.
14032 By default value 0xf, all planes will be processed.
14033 @end table
14034
14035 @subsection Commands
14036
14037 This filter supports the all above options as @ref{commands}.
14038
14039 @section maskedthreshold
14040 Pick pixels comparing absolute difference of two video streams with fixed
14041 threshold.
14042
14043 If absolute difference between pixel component of first and second video
14044 stream is equal or lower than user supplied threshold than pixel component
14045 from first video stream is picked, otherwise pixel component from second
14046 video stream is picked.
14047
14048 This filter accepts the following options:
14049 @table @option
14050 @item threshold
14051 Set threshold used when picking pixels from absolute difference from two input
14052 video streams.
14053
14054 @item planes
14055 Set which planes will be processed as bitmap, unprocessed planes will be
14056 copied from second stream.
14057 By default value 0xf, all planes will be processed.
14058 @end table
14059
14060 @subsection Commands
14061
14062 This filter supports the all above options as @ref{commands}.
14063
14064 @section maskfun
14065 Create mask from input video.
14066
14067 For example it is useful to create motion masks after @code{tblend} filter.
14068
14069 This filter accepts the following options:
14070
14071 @table @option
14072 @item low
14073 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
14074
14075 @item high
14076 Set high threshold. Any pixel component higher than this value will be set to max value
14077 allowed for current pixel format.
14078
14079 @item planes
14080 Set planes to filter, by default all available planes are filtered.
14081
14082 @item fill
14083 Fill all frame pixels with this value.
14084
14085 @item sum
14086 Set max average pixel value for frame. If sum of all pixel components is higher that this
14087 average, output frame will be completely filled with value set by @var{fill} option.
14088 Typically useful for scene changes when used in combination with @code{tblend} filter.
14089 @end table
14090
14091 @section mcdeint
14092
14093 Apply motion-compensation deinterlacing.
14094
14095 It needs one field per frame as input and must thus be used together
14096 with yadif=1/3 or equivalent.
14097
14098 This filter accepts the following options:
14099 @table @option
14100 @item mode
14101 Set the deinterlacing mode.
14102
14103 It accepts one of the following values:
14104 @table @samp
14105 @item fast
14106 @item medium
14107 @item slow
14108 use iterative motion estimation
14109 @item extra_slow
14110 like @samp{slow}, but use multiple reference frames.
14111 @end table
14112 Default value is @samp{fast}.
14113
14114 @item parity
14115 Set the picture field parity assumed for the input video. It must be
14116 one of the following values:
14117
14118 @table @samp
14119 @item 0, tff
14120 assume top field first
14121 @item 1, bff
14122 assume bottom field first
14123 @end table
14124
14125 Default value is @samp{bff}.
14126
14127 @item qp
14128 Set per-block quantization parameter (QP) used by the internal
14129 encoder.
14130
14131 Higher values should result in a smoother motion vector field but less
14132 optimal individual vectors. Default value is 1.
14133 @end table
14134
14135 @section median
14136
14137 Pick median pixel from certain rectangle defined by radius.
14138
14139 This filter accepts the following options:
14140
14141 @table @option
14142 @item radius
14143 Set horizontal radius size. Default value is @code{1}.
14144 Allowed range is integer from 1 to 127.
14145
14146 @item planes
14147 Set which planes to process. Default is @code{15}, which is all available planes.
14148
14149 @item radiusV
14150 Set vertical radius size. Default value is @code{0}.
14151 Allowed range is integer from 0 to 127.
14152 If it is 0, value will be picked from horizontal @code{radius} option.
14153
14154 @item percentile
14155 Set median percentile. Default value is @code{0.5}.
14156 Default value of @code{0.5} will pick always median values, while @code{0} will pick
14157 minimum values, and @code{1} maximum values.
14158 @end table
14159
14160 @subsection Commands
14161 This filter supports same @ref{commands} as options.
14162 The command accepts the same syntax of the corresponding option.
14163
14164 If the specified expression is not valid, it is kept at its current
14165 value.
14166
14167 @section mergeplanes
14168
14169 Merge color channel components from several video streams.
14170
14171 The filter accepts up to 4 input streams, and merge selected input
14172 planes to the output video.
14173
14174 This filter accepts the following options:
14175 @table @option
14176 @item mapping
14177 Set input to output plane mapping. Default is @code{0}.
14178
14179 The mappings is specified as a bitmap. It should be specified as a
14180 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
14181 mapping for the first plane of the output stream. 'A' sets the number of
14182 the input stream to use (from 0 to 3), and 'a' the plane number of the
14183 corresponding input to use (from 0 to 3). The rest of the mappings is
14184 similar, 'Bb' describes the mapping for the output stream second
14185 plane, 'Cc' describes the mapping for the output stream third plane and
14186 'Dd' describes the mapping for the output stream fourth plane.
14187
14188 @item format
14189 Set output pixel format. Default is @code{yuva444p}.
14190 @end table
14191
14192 @subsection Examples
14193
14194 @itemize
14195 @item
14196 Merge three gray video streams of same width and height into single video stream:
14197 @example
14198 [a0][a1][a2]mergeplanes=0x001020:yuv444p
14199 @end example
14200
14201 @item
14202 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
14203 @example
14204 [a0][a1]mergeplanes=0x00010210:yuva444p
14205 @end example
14206
14207 @item
14208 Swap Y and A plane in yuva444p stream:
14209 @example
14210 format=yuva444p,mergeplanes=0x03010200:yuva444p
14211 @end example
14212
14213 @item
14214 Swap U and V plane in yuv420p stream:
14215 @example
14216 format=yuv420p,mergeplanes=0x000201:yuv420p
14217 @end example
14218
14219 @item
14220 Cast a rgb24 clip to yuv444p:
14221 @example
14222 format=rgb24,mergeplanes=0x000102:yuv444p
14223 @end example
14224 @end itemize
14225
14226 @section mestimate
14227
14228 Estimate and export motion vectors using block matching algorithms.
14229 Motion vectors are stored in frame side data to be used by other filters.
14230
14231 This filter accepts the following options:
14232 @table @option
14233 @item method
14234 Specify the motion estimation method. Accepts one of the following values:
14235
14236 @table @samp
14237 @item esa
14238 Exhaustive search algorithm.
14239 @item tss
14240 Three step search algorithm.
14241 @item tdls
14242 Two dimensional logarithmic search algorithm.
14243 @item ntss
14244 New three step search algorithm.
14245 @item fss
14246 Four step search algorithm.
14247 @item ds
14248 Diamond search algorithm.
14249 @item hexbs
14250 Hexagon-based search algorithm.
14251 @item epzs
14252 Enhanced predictive zonal search algorithm.
14253 @item umh
14254 Uneven multi-hexagon search algorithm.
14255 @end table
14256 Default value is @samp{esa}.
14257
14258 @item mb_size
14259 Macroblock size. Default @code{16}.
14260
14261 @item search_param
14262 Search parameter. Default @code{7}.
14263 @end table
14264
14265 @section midequalizer
14266
14267 Apply Midway Image Equalization effect using two video streams.
14268
14269 Midway Image Equalization adjusts a pair of images to have the same
14270 histogram, while maintaining their dynamics as much as possible. It's
14271 useful for e.g. matching exposures from a pair of stereo cameras.
14272
14273 This filter has two inputs and one output, which must be of same pixel format, but
14274 may be of different sizes. The output of filter is first input adjusted with
14275 midway histogram of both inputs.
14276
14277 This filter accepts the following option:
14278
14279 @table @option
14280 @item planes
14281 Set which planes to process. Default is @code{15}, which is all available planes.
14282 @end table
14283
14284 @section minterpolate
14285
14286 Convert the video to specified frame rate using motion interpolation.
14287
14288 This filter accepts the following options:
14289 @table @option
14290 @item fps
14291 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}.
14292
14293 @item mi_mode
14294 Motion interpolation mode. Following values are accepted:
14295 @table @samp
14296 @item dup
14297 Duplicate previous or next frame for interpolating new ones.
14298 @item blend
14299 Blend source frames. Interpolated frame is mean of previous and next frames.
14300 @item mci
14301 Motion compensated interpolation. Following options are effective when this mode is selected:
14302
14303 @table @samp
14304 @item mc_mode
14305 Motion compensation mode. Following values are accepted:
14306 @table @samp
14307 @item obmc
14308 Overlapped block motion compensation.
14309 @item aobmc
14310 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
14311 @end table
14312 Default mode is @samp{obmc}.
14313
14314 @item me_mode
14315 Motion estimation mode. Following values are accepted:
14316 @table @samp
14317 @item bidir
14318 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
14319 @item bilat
14320 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
14321 @end table
14322 Default mode is @samp{bilat}.
14323
14324 @item me
14325 The algorithm to be used for motion estimation. Following values are accepted:
14326 @table @samp
14327 @item esa
14328 Exhaustive search algorithm.
14329 @item tss
14330 Three step search algorithm.
14331 @item tdls
14332 Two dimensional logarithmic search algorithm.
14333 @item ntss
14334 New three step search algorithm.
14335 @item fss
14336 Four step search algorithm.
14337 @item ds
14338 Diamond search algorithm.
14339 @item hexbs
14340 Hexagon-based search algorithm.
14341 @item epzs
14342 Enhanced predictive zonal search algorithm.
14343 @item umh
14344 Uneven multi-hexagon search algorithm.
14345 @end table
14346 Default algorithm is @samp{epzs}.
14347
14348 @item mb_size
14349 Macroblock size. Default @code{16}.
14350
14351 @item search_param
14352 Motion estimation search parameter. Default @code{32}.
14353
14354 @item vsbmc
14355 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).
14356 @end table
14357 @end table
14358
14359 @item scd
14360 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:
14361 @table @samp
14362 @item none
14363 Disable scene change detection.
14364 @item fdiff
14365 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
14366 @end table
14367 Default method is @samp{fdiff}.
14368
14369 @item scd_threshold
14370 Scene change detection threshold. Default is @code{10.}.
14371 @end table
14372
14373 @section mix
14374
14375 Mix several video input streams into one video stream.
14376
14377 A description of the accepted options follows.
14378
14379 @table @option
14380 @item nb_inputs
14381 The number of inputs. If unspecified, it defaults to 2.
14382
14383 @item weights
14384 Specify weight of each input video stream as sequence.
14385 Each weight is separated by space. If number of weights
14386 is smaller than number of @var{frames} last specified
14387 weight will be used for all remaining unset weights.
14388
14389 @item scale
14390 Specify scale, if it is set it will be multiplied with sum
14391 of each weight multiplied with pixel values to give final destination
14392 pixel value. By default @var{scale} is auto scaled to sum of weights.
14393
14394 @item duration
14395 Specify how end of stream is determined.
14396 @table @samp
14397 @item longest
14398 The duration of the longest input. (default)
14399
14400 @item shortest
14401 The duration of the shortest input.
14402
14403 @item first
14404 The duration of the first input.
14405 @end table
14406 @end table
14407
14408 @section mpdecimate
14409
14410 Drop frames that do not differ greatly from the previous frame in
14411 order to reduce frame rate.
14412
14413 The main use of this filter is for very-low-bitrate encoding
14414 (e.g. streaming over dialup modem), but it could in theory be used for
14415 fixing movies that were inverse-telecined incorrectly.
14416
14417 A description of the accepted options follows.
14418
14419 @table @option
14420 @item max
14421 Set the maximum number of consecutive frames which can be dropped (if
14422 positive), or the minimum interval between dropped frames (if
14423 negative). If the value is 0, the frame is dropped disregarding the
14424 number of previous sequentially dropped frames.
14425
14426 Default value is 0.
14427
14428 @item hi
14429 @item lo
14430 @item frac
14431 Set the dropping threshold values.
14432
14433 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
14434 represent actual pixel value differences, so a threshold of 64
14435 corresponds to 1 unit of difference for each pixel, or the same spread
14436 out differently over the block.
14437
14438 A frame is a candidate for dropping if no 8x8 blocks differ by more
14439 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
14440 meaning the whole image) differ by more than a threshold of @option{lo}.
14441
14442 Default value for @option{hi} is 64*12, default value for @option{lo} is
14443 64*5, and default value for @option{frac} is 0.33.
14444 @end table
14445
14446
14447 @section negate
14448
14449 Negate (invert) the input video.
14450
14451 It accepts the following option:
14452
14453 @table @option
14454
14455 @item negate_alpha
14456 With value 1, it negates the alpha component, if present. Default value is 0.
14457 @end table
14458
14459 @anchor{nlmeans}
14460 @section nlmeans
14461
14462 Denoise frames using Non-Local Means algorithm.
14463
14464 Each pixel is adjusted by looking for other pixels with similar contexts. This
14465 context similarity is defined by comparing their surrounding patches of size
14466 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
14467 around the pixel.
14468
14469 Note that the research area defines centers for patches, which means some
14470 patches will be made of pixels outside that research area.
14471
14472 The filter accepts the following options.
14473
14474 @table @option
14475 @item s
14476 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
14477
14478 @item p
14479 Set patch size. Default is 7. Must be odd number in range [0, 99].
14480
14481 @item pc
14482 Same as @option{p} but for chroma planes.
14483
14484 The default value is @var{0} and means automatic.
14485
14486 @item r
14487 Set research size. Default is 15. Must be odd number in range [0, 99].
14488
14489 @item rc
14490 Same as @option{r} but for chroma planes.
14491
14492 The default value is @var{0} and means automatic.
14493 @end table
14494
14495 @section nnedi
14496
14497 Deinterlace video using neural network edge directed interpolation.
14498
14499 This filter accepts the following options:
14500
14501 @table @option
14502 @item weights
14503 Mandatory option, without binary file filter can not work.
14504 Currently file can be found here:
14505 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
14506
14507 @item deint
14508 Set which frames to deinterlace, by default it is @code{all}.
14509 Can be @code{all} or @code{interlaced}.
14510
14511 @item field
14512 Set mode of operation.
14513
14514 Can be one of the following:
14515
14516 @table @samp
14517 @item af
14518 Use frame flags, both fields.
14519 @item a
14520 Use frame flags, single field.
14521 @item t
14522 Use top field only.
14523 @item b
14524 Use bottom field only.
14525 @item tf
14526 Use both fields, top first.
14527 @item bf
14528 Use both fields, bottom first.
14529 @end table
14530
14531 @item planes
14532 Set which planes to process, by default filter process all frames.
14533
14534 @item nsize
14535 Set size of local neighborhood around each pixel, used by the predictor neural
14536 network.
14537
14538 Can be one of the following:
14539
14540 @table @samp
14541 @item s8x6
14542 @item s16x6
14543 @item s32x6
14544 @item s48x6
14545 @item s8x4
14546 @item s16x4
14547 @item s32x4
14548 @end table
14549
14550 @item nns
14551 Set the number of neurons in predictor neural network.
14552 Can be one of the following:
14553
14554 @table @samp
14555 @item n16
14556 @item n32
14557 @item n64
14558 @item n128
14559 @item n256
14560 @end table
14561
14562 @item qual
14563 Controls the number of different neural network predictions that are blended
14564 together to compute the final output value. Can be @code{fast}, default or
14565 @code{slow}.
14566
14567 @item etype
14568 Set which set of weights to use in the predictor.
14569 Can be one of the following:
14570
14571 @table @samp
14572 @item a
14573 weights trained to minimize absolute error
14574 @item s
14575 weights trained to minimize squared error
14576 @end table
14577
14578 @item pscrn
14579 Controls whether or not the prescreener neural network is used to decide
14580 which pixels should be processed by the predictor neural network and which
14581 can be handled by simple cubic interpolation.
14582 The prescreener is trained to know whether cubic interpolation will be
14583 sufficient for a pixel or whether it should be predicted by the predictor nn.
14584 The computational complexity of the prescreener nn is much less than that of
14585 the predictor nn. Since most pixels can be handled by cubic interpolation,
14586 using the prescreener generally results in much faster processing.
14587 The prescreener is pretty accurate, so the difference between using it and not
14588 using it is almost always unnoticeable.
14589
14590 Can be one of the following:
14591
14592 @table @samp
14593 @item none
14594 @item original
14595 @item new
14596 @end table
14597
14598 Default is @code{new}.
14599
14600 @item fapprox
14601 Set various debugging flags.
14602 @end table
14603
14604 @section noformat
14605
14606 Force libavfilter not to use any of the specified pixel formats for the
14607 input to the next filter.
14608
14609 It accepts the following parameters:
14610 @table @option
14611
14612 @item pix_fmts
14613 A '|'-separated list of pixel format names, such as
14614 pix_fmts=yuv420p|monow|rgb24".
14615
14616 @end table
14617
14618 @subsection Examples
14619
14620 @itemize
14621 @item
14622 Force libavfilter to use a format different from @var{yuv420p} for the
14623 input to the vflip filter:
14624 @example
14625 noformat=pix_fmts=yuv420p,vflip
14626 @end example
14627
14628 @item
14629 Convert the input video to any of the formats not contained in the list:
14630 @example
14631 noformat=yuv420p|yuv444p|yuv410p
14632 @end example
14633 @end itemize
14634
14635 @section noise
14636
14637 Add noise on video input frame.
14638
14639 The filter accepts the following options:
14640
14641 @table @option
14642 @item all_seed
14643 @item c0_seed
14644 @item c1_seed
14645 @item c2_seed
14646 @item c3_seed
14647 Set noise seed for specific pixel component or all pixel components in case
14648 of @var{all_seed}. Default value is @code{123457}.
14649
14650 @item all_strength, alls
14651 @item c0_strength, c0s
14652 @item c1_strength, c1s
14653 @item c2_strength, c2s
14654 @item c3_strength, c3s
14655 Set noise strength for specific pixel component or all pixel components in case
14656 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
14657
14658 @item all_flags, allf
14659 @item c0_flags, c0f
14660 @item c1_flags, c1f
14661 @item c2_flags, c2f
14662 @item c3_flags, c3f
14663 Set pixel component flags or set flags for all components if @var{all_flags}.
14664 Available values for component flags are:
14665 @table @samp
14666 @item a
14667 averaged temporal noise (smoother)
14668 @item p
14669 mix random noise with a (semi)regular pattern
14670 @item t
14671 temporal noise (noise pattern changes between frames)
14672 @item u
14673 uniform noise (gaussian otherwise)
14674 @end table
14675 @end table
14676
14677 @subsection Examples
14678
14679 Add temporal and uniform noise to input video:
14680 @example
14681 noise=alls=20:allf=t+u
14682 @end example
14683
14684 @section normalize
14685
14686 Normalize RGB video (aka histogram stretching, contrast stretching).
14687 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
14688
14689 For each channel of each frame, the filter computes the input range and maps
14690 it linearly to the user-specified output range. The output range defaults
14691 to the full dynamic range from pure black to pure white.
14692
14693 Temporal smoothing can be used on the input range to reduce flickering (rapid
14694 changes in brightness) caused when small dark or bright objects enter or leave
14695 the scene. This is similar to the auto-exposure (automatic gain control) on a
14696 video camera, and, like a video camera, it may cause a period of over- or
14697 under-exposure of the video.
14698
14699 The R,G,B channels can be normalized independently, which may cause some
14700 color shifting, or linked together as a single channel, which prevents
14701 color shifting. Linked normalization preserves hue. Independent normalization
14702 does not, so it can be used to remove some color casts. Independent and linked
14703 normalization can be combined in any ratio.
14704
14705 The normalize filter accepts the following options:
14706
14707 @table @option
14708 @item blackpt
14709 @item whitept
14710 Colors which define the output range. The minimum input value is mapped to
14711 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
14712 The defaults are black and white respectively. Specifying white for
14713 @var{blackpt} and black for @var{whitept} will give color-inverted,
14714 normalized video. Shades of grey can be used to reduce the dynamic range
14715 (contrast). Specifying saturated colors here can create some interesting
14716 effects.
14717
14718 @item smoothing
14719 The number of previous frames to use for temporal smoothing. The input range
14720 of each channel is smoothed using a rolling average over the current frame
14721 and the @var{smoothing} previous frames. The default is 0 (no temporal
14722 smoothing).
14723
14724 @item independence
14725 Controls the ratio of independent (color shifting) channel normalization to
14726 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
14727 independent. Defaults to 1.0 (fully independent).
14728
14729 @item strength
14730 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
14731 expensive no-op. Defaults to 1.0 (full strength).
14732
14733 @end table
14734
14735 @subsection Commands
14736 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
14737 The command accepts the same syntax of the corresponding option.
14738
14739 If the specified expression is not valid, it is kept at its current
14740 value.
14741
14742 @subsection Examples
14743
14744 Stretch video contrast to use the full dynamic range, with no temporal
14745 smoothing; may flicker depending on the source content:
14746 @example
14747 normalize=blackpt=black:whitept=white:smoothing=0
14748 @end example
14749
14750 As above, but with 50 frames of temporal smoothing; flicker should be
14751 reduced, depending on the source content:
14752 @example
14753 normalize=blackpt=black:whitept=white:smoothing=50
14754 @end example
14755
14756 As above, but with hue-preserving linked channel normalization:
14757 @example
14758 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
14759 @end example
14760
14761 As above, but with half strength:
14762 @example
14763 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
14764 @end example
14765
14766 Map the darkest input color to red, the brightest input color to cyan:
14767 @example
14768 normalize=blackpt=red:whitept=cyan
14769 @end example
14770
14771 @section null
14772
14773 Pass the video source unchanged to the output.
14774
14775 @section ocr
14776 Optical Character Recognition
14777
14778 This filter uses Tesseract for optical character recognition. To enable
14779 compilation of this filter, you need to configure FFmpeg with
14780 @code{--enable-libtesseract}.
14781
14782 It accepts the following options:
14783
14784 @table @option
14785 @item datapath
14786 Set datapath to tesseract data. Default is to use whatever was
14787 set at installation.
14788
14789 @item language
14790 Set language, default is "eng".
14791
14792 @item whitelist
14793 Set character whitelist.
14794
14795 @item blacklist
14796 Set character blacklist.
14797 @end table
14798
14799 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
14800 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
14801
14802 @section ocv
14803
14804 Apply a video transform using libopencv.
14805
14806 To enable this filter, install the libopencv library and headers and
14807 configure FFmpeg with @code{--enable-libopencv}.
14808
14809 It accepts the following parameters:
14810
14811 @table @option
14812
14813 @item filter_name
14814 The name of the libopencv filter to apply.
14815
14816 @item filter_params
14817 The parameters to pass to the libopencv filter. If not specified, the default
14818 values are assumed.
14819
14820 @end table
14821
14822 Refer to the official libopencv documentation for more precise
14823 information:
14824 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
14825
14826 Several libopencv filters are supported; see the following subsections.
14827
14828 @anchor{dilate}
14829 @subsection dilate
14830
14831 Dilate an image by using a specific structuring element.
14832 It corresponds to the libopencv function @code{cvDilate}.
14833
14834 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
14835
14836 @var{struct_el} represents a structuring element, and has the syntax:
14837 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
14838
14839 @var{cols} and @var{rows} represent the number of columns and rows of
14840 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
14841 point, and @var{shape} the shape for the structuring element. @var{shape}
14842 must be "rect", "cross", "ellipse", or "custom".
14843
14844 If the value for @var{shape} is "custom", it must be followed by a
14845 string of the form "=@var{filename}". The file with name
14846 @var{filename} is assumed to represent a binary image, with each
14847 printable character corresponding to a bright pixel. When a custom
14848 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
14849 or columns and rows of the read file are assumed instead.
14850
14851 The default value for @var{struct_el} is "3x3+0x0/rect".
14852
14853 @var{nb_iterations} specifies the number of times the transform is
14854 applied to the image, and defaults to 1.
14855
14856 Some examples:
14857 @example
14858 # Use the default values
14859 ocv=dilate
14860
14861 # Dilate using a structuring element with a 5x5 cross, iterating two times
14862 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
14863
14864 # Read the shape from the file diamond.shape, iterating two times.
14865 # The file diamond.shape may contain a pattern of characters like this
14866 #   *
14867 #  ***
14868 # *****
14869 #  ***
14870 #   *
14871 # The specified columns and rows are ignored
14872 # but the anchor point coordinates are not
14873 ocv=dilate:0x0+2x2/custom=diamond.shape|2
14874 @end example
14875
14876 @subsection erode
14877
14878 Erode an image by using a specific structuring element.
14879 It corresponds to the libopencv function @code{cvErode}.
14880
14881 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
14882 with the same syntax and semantics as the @ref{dilate} filter.
14883
14884 @subsection smooth
14885
14886 Smooth the input video.
14887
14888 The filter takes the following parameters:
14889 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
14890
14891 @var{type} is the type of smooth filter to apply, and must be one of
14892 the following values: "blur", "blur_no_scale", "median", "gaussian",
14893 or "bilateral". The default value is "gaussian".
14894
14895 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
14896 depends on the smooth type. @var{param1} and
14897 @var{param2} accept integer positive values or 0. @var{param3} and
14898 @var{param4} accept floating point values.
14899
14900 The default value for @var{param1} is 3. The default value for the
14901 other parameters is 0.
14902
14903 These parameters correspond to the parameters assigned to the
14904 libopencv function @code{cvSmooth}.
14905
14906 @section oscilloscope
14907
14908 2D Video Oscilloscope.
14909
14910 Useful to measure spatial impulse, step responses, chroma delays, etc.
14911
14912 It accepts the following parameters:
14913
14914 @table @option
14915 @item x
14916 Set scope center x position.
14917
14918 @item y
14919 Set scope center y position.
14920
14921 @item s
14922 Set scope size, relative to frame diagonal.
14923
14924 @item t
14925 Set scope tilt/rotation.
14926
14927 @item o
14928 Set trace opacity.
14929
14930 @item tx
14931 Set trace center x position.
14932
14933 @item ty
14934 Set trace center y position.
14935
14936 @item tw
14937 Set trace width, relative to width of frame.
14938
14939 @item th
14940 Set trace height, relative to height of frame.
14941
14942 @item c
14943 Set which components to trace. By default it traces first three components.
14944
14945 @item g
14946 Draw trace grid. By default is enabled.
14947
14948 @item st
14949 Draw some statistics. By default is enabled.
14950
14951 @item sc
14952 Draw scope. By default is enabled.
14953 @end table
14954
14955 @subsection Commands
14956 This filter supports same @ref{commands} as options.
14957 The command accepts the same syntax of the corresponding option.
14958
14959 If the specified expression is not valid, it is kept at its current
14960 value.
14961
14962 @subsection Examples
14963
14964 @itemize
14965 @item
14966 Inspect full first row of video frame.
14967 @example
14968 oscilloscope=x=0.5:y=0:s=1
14969 @end example
14970
14971 @item
14972 Inspect full last row of video frame.
14973 @example
14974 oscilloscope=x=0.5:y=1:s=1
14975 @end example
14976
14977 @item
14978 Inspect full 5th line of video frame of height 1080.
14979 @example
14980 oscilloscope=x=0.5:y=5/1080:s=1
14981 @end example
14982
14983 @item
14984 Inspect full last column of video frame.
14985 @example
14986 oscilloscope=x=1:y=0.5:s=1:t=1
14987 @end example
14988
14989 @end itemize
14990
14991 @anchor{overlay}
14992 @section overlay
14993
14994 Overlay one video on top of another.
14995
14996 It takes two inputs and has one output. The first input is the "main"
14997 video on which the second input is overlaid.
14998
14999 It accepts the following parameters:
15000
15001 A description of the accepted options follows.
15002
15003 @table @option
15004 @item x
15005 @item y
15006 Set the expression for the x and y coordinates of the overlaid video
15007 on the main video. Default value is "0" for both expressions. In case
15008 the expression is invalid, it is set to a huge value (meaning that the
15009 overlay will not be displayed within the output visible area).
15010
15011 @item eof_action
15012 See @ref{framesync}.
15013
15014 @item eval
15015 Set when the expressions for @option{x}, and @option{y} are evaluated.
15016
15017 It accepts the following values:
15018 @table @samp
15019 @item init
15020 only evaluate expressions once during the filter initialization or
15021 when a command is processed
15022
15023 @item frame
15024 evaluate expressions for each incoming frame
15025 @end table
15026
15027 Default value is @samp{frame}.
15028
15029 @item shortest
15030 See @ref{framesync}.
15031
15032 @item format
15033 Set the format for the output video.
15034
15035 It accepts the following values:
15036 @table @samp
15037 @item yuv420
15038 force YUV420 output
15039
15040 @item yuv420p10
15041 force YUV420p10 output
15042
15043 @item yuv422
15044 force YUV422 output
15045
15046 @item yuv422p10
15047 force YUV422p10 output
15048
15049 @item yuv444
15050 force YUV444 output
15051
15052 @item rgb
15053 force packed RGB output
15054
15055 @item gbrp
15056 force planar RGB output
15057
15058 @item auto
15059 automatically pick format
15060 @end table
15061
15062 Default value is @samp{yuv420}.
15063
15064 @item repeatlast
15065 See @ref{framesync}.
15066
15067 @item alpha
15068 Set format of alpha of the overlaid video, it can be @var{straight} or
15069 @var{premultiplied}. Default is @var{straight}.
15070 @end table
15071
15072 The @option{x}, and @option{y} expressions can contain the following
15073 parameters.
15074
15075 @table @option
15076 @item main_w, W
15077 @item main_h, H
15078 The main input width and height.
15079
15080 @item overlay_w, w
15081 @item overlay_h, h
15082 The overlay input width and height.
15083
15084 @item x
15085 @item y
15086 The computed values for @var{x} and @var{y}. They are evaluated for
15087 each new frame.
15088
15089 @item hsub
15090 @item vsub
15091 horizontal and vertical chroma subsample values of the output
15092 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
15093 @var{vsub} is 1.
15094
15095 @item n
15096 the number of input frame, starting from 0
15097
15098 @item pos
15099 the position in the file of the input frame, NAN if unknown
15100
15101 @item t
15102 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
15103
15104 @end table
15105
15106 This filter also supports the @ref{framesync} options.
15107
15108 Note that the @var{n}, @var{pos}, @var{t} variables are available only
15109 when evaluation is done @emph{per frame}, and will evaluate to NAN
15110 when @option{eval} is set to @samp{init}.
15111
15112 Be aware that frames are taken from each input video in timestamp
15113 order, hence, if their initial timestamps differ, it is a good idea
15114 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
15115 have them begin in the same zero timestamp, as the example for
15116 the @var{movie} filter does.
15117
15118 You can chain together more overlays but you should test the
15119 efficiency of such approach.
15120
15121 @subsection Commands
15122
15123 This filter supports the following commands:
15124 @table @option
15125 @item x
15126 @item y
15127 Modify the x and y of the overlay input.
15128 The command accepts the same syntax of the corresponding option.
15129
15130 If the specified expression is not valid, it is kept at its current
15131 value.
15132 @end table
15133
15134 @subsection Examples
15135
15136 @itemize
15137 @item
15138 Draw the overlay at 10 pixels from the bottom right corner of the main
15139 video:
15140 @example
15141 overlay=main_w-overlay_w-10:main_h-overlay_h-10
15142 @end example
15143
15144 Using named options the example above becomes:
15145 @example
15146 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
15147 @end example
15148
15149 @item
15150 Insert a transparent PNG logo in the bottom left corner of the input,
15151 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
15152 @example
15153 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
15154 @end example
15155
15156 @item
15157 Insert 2 different transparent PNG logos (second logo on bottom
15158 right corner) using the @command{ffmpeg} tool:
15159 @example
15160 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
15161 @end example
15162
15163 @item
15164 Add a transparent color layer on top of the main video; @code{WxH}
15165 must specify the size of the main input to the overlay filter:
15166 @example
15167 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
15168 @end example
15169
15170 @item
15171 Play an original video and a filtered version (here with the deshake
15172 filter) side by side using the @command{ffplay} tool:
15173 @example
15174 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
15175 @end example
15176
15177 The above command is the same as:
15178 @example
15179 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
15180 @end example
15181
15182 @item
15183 Make a sliding overlay appearing from the left to the right top part of the
15184 screen starting since time 2:
15185 @example
15186 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
15187 @end example
15188
15189 @item
15190 Compose output by putting two input videos side to side:
15191 @example
15192 ffmpeg -i left.avi -i right.avi -filter_complex "
15193 nullsrc=size=200x100 [background];
15194 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
15195 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
15196 [background][left]       overlay=shortest=1       [background+left];
15197 [background+left][right] overlay=shortest=1:x=100 [left+right]
15198 "
15199 @end example
15200
15201 @item
15202 Mask 10-20 seconds of a video by applying the delogo filter to a section
15203 @example
15204 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
15205 -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]'
15206 masked.avi
15207 @end example
15208
15209 @item
15210 Chain several overlays in cascade:
15211 @example
15212 nullsrc=s=200x200 [bg];
15213 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
15214 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
15215 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
15216 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
15217 [in3] null,       [mid2] overlay=100:100 [out0]
15218 @end example
15219
15220 @end itemize
15221
15222 @anchor{overlay_cuda}
15223 @section overlay_cuda
15224
15225 Overlay one video on top of another.
15226
15227 This is the CUDA variant of the @ref{overlay} filter.
15228 It only accepts CUDA frames. The underlying input pixel formats have to match.
15229
15230 It takes two inputs and has one output. The first input is the "main"
15231 video on which the second input is overlaid.
15232
15233 It accepts the following parameters:
15234
15235 @table @option
15236 @item x
15237 @item y
15238 Set the x and y coordinates of the overlaid video on the main video.
15239 Default value is "0" for both expressions.
15240
15241 @item eof_action
15242 See @ref{framesync}.
15243
15244 @item shortest
15245 See @ref{framesync}.
15246
15247 @item repeatlast
15248 See @ref{framesync}.
15249
15250 @end table
15251
15252 This filter also supports the @ref{framesync} options.
15253
15254 @section owdenoise
15255
15256 Apply Overcomplete Wavelet denoiser.
15257
15258 The filter accepts the following options:
15259
15260 @table @option
15261 @item depth
15262 Set depth.
15263
15264 Larger depth values will denoise lower frequency components more, but
15265 slow down filtering.
15266
15267 Must be an int in the range 8-16, default is @code{8}.
15268
15269 @item luma_strength, ls
15270 Set luma strength.
15271
15272 Must be a double value in the range 0-1000, default is @code{1.0}.
15273
15274 @item chroma_strength, cs
15275 Set chroma strength.
15276
15277 Must be a double value in the range 0-1000, default is @code{1.0}.
15278 @end table
15279
15280 @anchor{pad}
15281 @section pad
15282
15283 Add paddings to the input image, and place the original input at the
15284 provided @var{x}, @var{y} coordinates.
15285
15286 It accepts the following parameters:
15287
15288 @table @option
15289 @item width, w
15290 @item height, h
15291 Specify an expression for the size of the output image with the
15292 paddings added. If the value for @var{width} or @var{height} is 0, the
15293 corresponding input size is used for the output.
15294
15295 The @var{width} expression can reference the value set by the
15296 @var{height} expression, and vice versa.
15297
15298 The default value of @var{width} and @var{height} is 0.
15299
15300 @item x
15301 @item y
15302 Specify the offsets to place the input image at within the padded area,
15303 with respect to the top/left border of the output image.
15304
15305 The @var{x} expression can reference the value set by the @var{y}
15306 expression, and vice versa.
15307
15308 The default value of @var{x} and @var{y} is 0.
15309
15310 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
15311 so the input image is centered on the padded area.
15312
15313 @item color
15314 Specify the color of the padded area. For the syntax of this option,
15315 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
15316 manual,ffmpeg-utils}.
15317
15318 The default value of @var{color} is "black".
15319
15320 @item eval
15321 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
15322
15323 It accepts the following values:
15324
15325 @table @samp
15326 @item init
15327 Only evaluate expressions once during the filter initialization or when
15328 a command is processed.
15329
15330 @item frame
15331 Evaluate expressions for each incoming frame.
15332
15333 @end table
15334
15335 Default value is @samp{init}.
15336
15337 @item aspect
15338 Pad to aspect instead to a resolution.
15339
15340 @end table
15341
15342 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
15343 options are expressions containing the following constants:
15344
15345 @table @option
15346 @item in_w
15347 @item in_h
15348 The input video width and height.
15349
15350 @item iw
15351 @item ih
15352 These are the same as @var{in_w} and @var{in_h}.
15353
15354 @item out_w
15355 @item out_h
15356 The output width and height (the size of the padded area), as
15357 specified by the @var{width} and @var{height} expressions.
15358
15359 @item ow
15360 @item oh
15361 These are the same as @var{out_w} and @var{out_h}.
15362
15363 @item x
15364 @item y
15365 The x and y offsets as specified by the @var{x} and @var{y}
15366 expressions, or NAN if not yet specified.
15367
15368 @item a
15369 same as @var{iw} / @var{ih}
15370
15371 @item sar
15372 input sample aspect ratio
15373
15374 @item dar
15375 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
15376
15377 @item hsub
15378 @item vsub
15379 The horizontal and vertical chroma subsample values. For example for the
15380 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15381 @end table
15382
15383 @subsection Examples
15384
15385 @itemize
15386 @item
15387 Add paddings with the color "violet" to the input video. The output video
15388 size is 640x480, and the top-left corner of the input video is placed at
15389 column 0, row 40
15390 @example
15391 pad=640:480:0:40:violet
15392 @end example
15393
15394 The example above is equivalent to the following command:
15395 @example
15396 pad=width=640:height=480:x=0:y=40:color=violet
15397 @end example
15398
15399 @item
15400 Pad the input to get an output with dimensions increased by 3/2,
15401 and put the input video at the center of the padded area:
15402 @example
15403 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
15404 @end example
15405
15406 @item
15407 Pad the input to get a squared output with size equal to the maximum
15408 value between the input width and height, and put the input video at
15409 the center of the padded area:
15410 @example
15411 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
15412 @end example
15413
15414 @item
15415 Pad the input to get a final w/h ratio of 16:9:
15416 @example
15417 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
15418 @end example
15419
15420 @item
15421 In case of anamorphic video, in order to set the output display aspect
15422 correctly, it is necessary to use @var{sar} in the expression,
15423 according to the relation:
15424 @example
15425 (ih * X / ih) * sar = output_dar
15426 X = output_dar / sar
15427 @end example
15428
15429 Thus the previous example needs to be modified to:
15430 @example
15431 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
15432 @end example
15433
15434 @item
15435 Double the output size and put the input video in the bottom-right
15436 corner of the output padded area:
15437 @example
15438 pad="2*iw:2*ih:ow-iw:oh-ih"
15439 @end example
15440 @end itemize
15441
15442 @anchor{palettegen}
15443 @section palettegen
15444
15445 Generate one palette for a whole video stream.
15446
15447 It accepts the following options:
15448
15449 @table @option
15450 @item max_colors
15451 Set the maximum number of colors to quantize in the palette.
15452 Note: the palette will still contain 256 colors; the unused palette entries
15453 will be black.
15454
15455 @item reserve_transparent
15456 Create a palette of 255 colors maximum and reserve the last one for
15457 transparency. Reserving the transparency color is useful for GIF optimization.
15458 If not set, the maximum of colors in the palette will be 256. You probably want
15459 to disable this option for a standalone image.
15460 Set by default.
15461
15462 @item transparency_color
15463 Set the color that will be used as background for transparency.
15464
15465 @item stats_mode
15466 Set statistics mode.
15467
15468 It accepts the following values:
15469 @table @samp
15470 @item full
15471 Compute full frame histograms.
15472 @item diff
15473 Compute histograms only for the part that differs from previous frame. This
15474 might be relevant to give more importance to the moving part of your input if
15475 the background is static.
15476 @item single
15477 Compute new histogram for each frame.
15478 @end table
15479
15480 Default value is @var{full}.
15481 @end table
15482
15483 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
15484 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
15485 color quantization of the palette. This information is also visible at
15486 @var{info} logging level.
15487
15488 @subsection Examples
15489
15490 @itemize
15491 @item
15492 Generate a representative palette of a given video using @command{ffmpeg}:
15493 @example
15494 ffmpeg -i input.mkv -vf palettegen palette.png
15495 @end example
15496 @end itemize
15497
15498 @section paletteuse
15499
15500 Use a palette to downsample an input video stream.
15501
15502 The filter takes two inputs: one video stream and a palette. The palette must
15503 be a 256 pixels image.
15504
15505 It accepts the following options:
15506
15507 @table @option
15508 @item dither
15509 Select dithering mode. Available algorithms are:
15510 @table @samp
15511 @item bayer
15512 Ordered 8x8 bayer dithering (deterministic)
15513 @item heckbert
15514 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
15515 Note: this dithering is sometimes considered "wrong" and is included as a
15516 reference.
15517 @item floyd_steinberg
15518 Floyd and Steingberg dithering (error diffusion)
15519 @item sierra2
15520 Frankie Sierra dithering v2 (error diffusion)
15521 @item sierra2_4a
15522 Frankie Sierra dithering v2 "Lite" (error diffusion)
15523 @end table
15524
15525 Default is @var{sierra2_4a}.
15526
15527 @item bayer_scale
15528 When @var{bayer} dithering is selected, this option defines the scale of the
15529 pattern (how much the crosshatch pattern is visible). A low value means more
15530 visible pattern for less banding, and higher value means less visible pattern
15531 at the cost of more banding.
15532
15533 The option must be an integer value in the range [0,5]. Default is @var{2}.
15534
15535 @item diff_mode
15536 If set, define the zone to process
15537
15538 @table @samp
15539 @item rectangle
15540 Only the changing rectangle will be reprocessed. This is similar to GIF
15541 cropping/offsetting compression mechanism. This option can be useful for speed
15542 if only a part of the image is changing, and has use cases such as limiting the
15543 scope of the error diffusal @option{dither} to the rectangle that bounds the
15544 moving scene (it leads to more deterministic output if the scene doesn't change
15545 much, and as a result less moving noise and better GIF compression).
15546 @end table
15547
15548 Default is @var{none}.
15549
15550 @item new
15551 Take new palette for each output frame.
15552
15553 @item alpha_threshold
15554 Sets the alpha threshold for transparency. Alpha values above this threshold
15555 will be treated as completely opaque, and values below this threshold will be
15556 treated as completely transparent.
15557
15558 The option must be an integer value in the range [0,255]. Default is @var{128}.
15559 @end table
15560
15561 @subsection Examples
15562
15563 @itemize
15564 @item
15565 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
15566 using @command{ffmpeg}:
15567 @example
15568 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
15569 @end example
15570 @end itemize
15571
15572 @section perspective
15573
15574 Correct perspective of video not recorded perpendicular to the screen.
15575
15576 A description of the accepted parameters follows.
15577
15578 @table @option
15579 @item x0
15580 @item y0
15581 @item x1
15582 @item y1
15583 @item x2
15584 @item y2
15585 @item x3
15586 @item y3
15587 Set coordinates expression for top left, top right, bottom left and bottom right corners.
15588 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
15589 If the @code{sense} option is set to @code{source}, then the specified points will be sent
15590 to the corners of the destination. If the @code{sense} option is set to @code{destination},
15591 then the corners of the source will be sent to the specified coordinates.
15592
15593 The expressions can use the following variables:
15594
15595 @table @option
15596 @item W
15597 @item H
15598 the width and height of video frame.
15599 @item in
15600 Input frame count.
15601 @item on
15602 Output frame count.
15603 @end table
15604
15605 @item interpolation
15606 Set interpolation for perspective correction.
15607
15608 It accepts the following values:
15609 @table @samp
15610 @item linear
15611 @item cubic
15612 @end table
15613
15614 Default value is @samp{linear}.
15615
15616 @item sense
15617 Set interpretation of coordinate options.
15618
15619 It accepts the following values:
15620 @table @samp
15621 @item 0, source
15622
15623 Send point in the source specified by the given coordinates to
15624 the corners of the destination.
15625
15626 @item 1, destination
15627
15628 Send the corners of the source to the point in the destination specified
15629 by the given coordinates.
15630
15631 Default value is @samp{source}.
15632 @end table
15633
15634 @item eval
15635 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
15636
15637 It accepts the following values:
15638 @table @samp
15639 @item init
15640 only evaluate expressions once during the filter initialization or
15641 when a command is processed
15642
15643 @item frame
15644 evaluate expressions for each incoming frame
15645 @end table
15646
15647 Default value is @samp{init}.
15648 @end table
15649
15650 @section phase
15651
15652 Delay interlaced video by one field time so that the field order changes.
15653
15654 The intended use is to fix PAL movies that have been captured with the
15655 opposite field order to the film-to-video transfer.
15656
15657 A description of the accepted parameters follows.
15658
15659 @table @option
15660 @item mode
15661 Set phase mode.
15662
15663 It accepts the following values:
15664 @table @samp
15665 @item t
15666 Capture field order top-first, transfer bottom-first.
15667 Filter will delay the bottom field.
15668
15669 @item b
15670 Capture field order bottom-first, transfer top-first.
15671 Filter will delay the top field.
15672
15673 @item p
15674 Capture and transfer with the same field order. This mode only exists
15675 for the documentation of the other options to refer to, but if you
15676 actually select it, the filter will faithfully do nothing.
15677
15678 @item a
15679 Capture field order determined automatically by field flags, transfer
15680 opposite.
15681 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
15682 basis using field flags. If no field information is available,
15683 then this works just like @samp{u}.
15684
15685 @item u
15686 Capture unknown or varying, transfer opposite.
15687 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
15688 analyzing the images and selecting the alternative that produces best
15689 match between the fields.
15690
15691 @item T
15692 Capture top-first, transfer unknown or varying.
15693 Filter selects among @samp{t} and @samp{p} using image analysis.
15694
15695 @item B
15696 Capture bottom-first, transfer unknown or varying.
15697 Filter selects among @samp{b} and @samp{p} using image analysis.
15698
15699 @item A
15700 Capture determined by field flags, transfer unknown or varying.
15701 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
15702 image analysis. If no field information is available, then this works just
15703 like @samp{U}. This is the default mode.
15704
15705 @item U
15706 Both capture and transfer unknown or varying.
15707 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
15708 @end table
15709 @end table
15710
15711 @section photosensitivity
15712 Reduce various flashes in video, so to help users with epilepsy.
15713
15714 It accepts the following options:
15715 @table @option
15716 @item frames, f
15717 Set how many frames to use when filtering. Default is 30.
15718
15719 @item threshold, t
15720 Set detection threshold factor. Default is 1.
15721 Lower is stricter.
15722
15723 @item skip
15724 Set how many pixels to skip when sampling frames. Default is 1.
15725 Allowed range is from 1 to 1024.
15726
15727 @item bypass
15728 Leave frames unchanged. Default is disabled.
15729 @end table
15730
15731 @section pixdesctest
15732
15733 Pixel format descriptor test filter, mainly useful for internal
15734 testing. The output video should be equal to the input video.
15735
15736 For example:
15737 @example
15738 format=monow, pixdesctest
15739 @end example
15740
15741 can be used to test the monowhite pixel format descriptor definition.
15742
15743 @section pixscope
15744
15745 Display sample values of color channels. Mainly useful for checking color
15746 and levels. Minimum supported resolution is 640x480.
15747
15748 The filters accept the following options:
15749
15750 @table @option
15751 @item x
15752 Set scope X position, relative offset on X axis.
15753
15754 @item y
15755 Set scope Y position, relative offset on Y axis.
15756
15757 @item w
15758 Set scope width.
15759
15760 @item h
15761 Set scope height.
15762
15763 @item o
15764 Set window opacity. This window also holds statistics about pixel area.
15765
15766 @item wx
15767 Set window X position, relative offset on X axis.
15768
15769 @item wy
15770 Set window Y position, relative offset on Y axis.
15771 @end table
15772
15773 @section pp
15774
15775 Enable the specified chain of postprocessing subfilters using libpostproc. This
15776 library should be automatically selected with a GPL build (@code{--enable-gpl}).
15777 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
15778 Each subfilter and some options have a short and a long name that can be used
15779 interchangeably, i.e. dr/dering are the same.
15780
15781 The filters accept the following options:
15782
15783 @table @option
15784 @item subfilters
15785 Set postprocessing subfilters string.
15786 @end table
15787
15788 All subfilters share common options to determine their scope:
15789
15790 @table @option
15791 @item a/autoq
15792 Honor the quality commands for this subfilter.
15793
15794 @item c/chrom
15795 Do chrominance filtering, too (default).
15796
15797 @item y/nochrom
15798 Do luminance filtering only (no chrominance).
15799
15800 @item n/noluma
15801 Do chrominance filtering only (no luminance).
15802 @end table
15803
15804 These options can be appended after the subfilter name, separated by a '|'.
15805
15806 Available subfilters are:
15807
15808 @table @option
15809 @item hb/hdeblock[|difference[|flatness]]
15810 Horizontal deblocking filter
15811 @table @option
15812 @item difference
15813 Difference factor where higher values mean more deblocking (default: @code{32}).
15814 @item flatness
15815 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15816 @end table
15817
15818 @item vb/vdeblock[|difference[|flatness]]
15819 Vertical deblocking filter
15820 @table @option
15821 @item difference
15822 Difference factor where higher values mean more deblocking (default: @code{32}).
15823 @item flatness
15824 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15825 @end table
15826
15827 @item ha/hadeblock[|difference[|flatness]]
15828 Accurate horizontal deblocking filter
15829 @table @option
15830 @item difference
15831 Difference factor where higher values mean more deblocking (default: @code{32}).
15832 @item flatness
15833 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15834 @end table
15835
15836 @item va/vadeblock[|difference[|flatness]]
15837 Accurate vertical deblocking filter
15838 @table @option
15839 @item difference
15840 Difference factor where higher values mean more deblocking (default: @code{32}).
15841 @item flatness
15842 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15843 @end table
15844 @end table
15845
15846 The horizontal and vertical deblocking filters share the difference and
15847 flatness values so you cannot set different horizontal and vertical
15848 thresholds.
15849
15850 @table @option
15851 @item h1/x1hdeblock
15852 Experimental horizontal deblocking filter
15853
15854 @item v1/x1vdeblock
15855 Experimental vertical deblocking filter
15856
15857 @item dr/dering
15858 Deringing filter
15859
15860 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
15861 @table @option
15862 @item threshold1
15863 larger -> stronger filtering
15864 @item threshold2
15865 larger -> stronger filtering
15866 @item threshold3
15867 larger -> stronger filtering
15868 @end table
15869
15870 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
15871 @table @option
15872 @item f/fullyrange
15873 Stretch luminance to @code{0-255}.
15874 @end table
15875
15876 @item lb/linblenddeint
15877 Linear blend deinterlacing filter that deinterlaces the given block by
15878 filtering all lines with a @code{(1 2 1)} filter.
15879
15880 @item li/linipoldeint
15881 Linear interpolating deinterlacing filter that deinterlaces the given block by
15882 linearly interpolating every second line.
15883
15884 @item ci/cubicipoldeint
15885 Cubic interpolating deinterlacing filter deinterlaces the given block by
15886 cubically interpolating every second line.
15887
15888 @item md/mediandeint
15889 Median deinterlacing filter that deinterlaces the given block by applying a
15890 median filter to every second line.
15891
15892 @item fd/ffmpegdeint
15893 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
15894 second line with a @code{(-1 4 2 4 -1)} filter.
15895
15896 @item l5/lowpass5
15897 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
15898 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
15899
15900 @item fq/forceQuant[|quantizer]
15901 Overrides the quantizer table from the input with the constant quantizer you
15902 specify.
15903 @table @option
15904 @item quantizer
15905 Quantizer to use
15906 @end table
15907
15908 @item de/default
15909 Default pp filter combination (@code{hb|a,vb|a,dr|a})
15910
15911 @item fa/fast
15912 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
15913
15914 @item ac
15915 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
15916 @end table
15917
15918 @subsection Examples
15919
15920 @itemize
15921 @item
15922 Apply horizontal and vertical deblocking, deringing and automatic
15923 brightness/contrast:
15924 @example
15925 pp=hb/vb/dr/al
15926 @end example
15927
15928 @item
15929 Apply default filters without brightness/contrast correction:
15930 @example
15931 pp=de/-al
15932 @end example
15933
15934 @item
15935 Apply default filters and temporal denoiser:
15936 @example
15937 pp=default/tmpnoise|1|2|3
15938 @end example
15939
15940 @item
15941 Apply deblocking on luminance only, and switch vertical deblocking on or off
15942 automatically depending on available CPU time:
15943 @example
15944 pp=hb|y/vb|a
15945 @end example
15946 @end itemize
15947
15948 @section pp7
15949 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
15950 similar to spp = 6 with 7 point DCT, where only the center sample is
15951 used after IDCT.
15952
15953 The filter accepts the following options:
15954
15955 @table @option
15956 @item qp
15957 Force a constant quantization parameter. It accepts an integer in range
15958 0 to 63. If not set, the filter will use the QP from the video stream
15959 (if available).
15960
15961 @item mode
15962 Set thresholding mode. Available modes are:
15963
15964 @table @samp
15965 @item hard
15966 Set hard thresholding.
15967 @item soft
15968 Set soft thresholding (better de-ringing effect, but likely blurrier).
15969 @item medium
15970 Set medium thresholding (good results, default).
15971 @end table
15972 @end table
15973
15974 @section premultiply
15975 Apply alpha premultiply effect to input video stream using first plane
15976 of second stream as alpha.
15977
15978 Both streams must have same dimensions and same pixel format.
15979
15980 The filter accepts the following option:
15981
15982 @table @option
15983 @item planes
15984 Set which planes will be processed, unprocessed planes will be copied.
15985 By default value 0xf, all planes will be processed.
15986
15987 @item inplace
15988 Do not require 2nd input for processing, instead use alpha plane from input stream.
15989 @end table
15990
15991 @section prewitt
15992 Apply prewitt operator to input video stream.
15993
15994 The filter accepts the following option:
15995
15996 @table @option
15997 @item planes
15998 Set which planes will be processed, unprocessed planes will be copied.
15999 By default value 0xf, all planes will be processed.
16000
16001 @item scale
16002 Set value which will be multiplied with filtered result.
16003
16004 @item delta
16005 Set value which will be added to filtered result.
16006 @end table
16007
16008 @subsection Commands
16009
16010 This filter supports the all above options as @ref{commands}.
16011
16012 @section pseudocolor
16013
16014 Alter frame colors in video with pseudocolors.
16015
16016 This filter accepts the following options:
16017
16018 @table @option
16019 @item c0
16020 set pixel first component expression
16021
16022 @item c1
16023 set pixel second component expression
16024
16025 @item c2
16026 set pixel third component expression
16027
16028 @item c3
16029 set pixel fourth component expression, corresponds to the alpha component
16030
16031 @item i
16032 set component to use as base for altering colors
16033 @end table
16034
16035 Each of them specifies the expression to use for computing the lookup table for
16036 the corresponding pixel component values.
16037
16038 The expressions can contain the following constants and functions:
16039
16040 @table @option
16041 @item w
16042 @item h
16043 The input width and height.
16044
16045 @item val
16046 The input value for the pixel component.
16047
16048 @item ymin, umin, vmin, amin
16049 The minimum allowed component value.
16050
16051 @item ymax, umax, vmax, amax
16052 The maximum allowed component value.
16053 @end table
16054
16055 All expressions default to "val".
16056
16057 @subsection Examples
16058
16059 @itemize
16060 @item
16061 Change too high luma values to gradient:
16062 @example
16063 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'"
16064 @end example
16065 @end itemize
16066
16067 @section psnr
16068
16069 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
16070 Ratio) between two input videos.
16071
16072 This filter takes in input two input videos, the first input is
16073 considered the "main" source and is passed unchanged to the
16074 output. The second input is used as a "reference" video for computing
16075 the PSNR.
16076
16077 Both video inputs must have the same resolution and pixel format for
16078 this filter to work correctly. Also it assumes that both inputs
16079 have the same number of frames, which are compared one by one.
16080
16081 The obtained average PSNR is printed through the logging system.
16082
16083 The filter stores the accumulated MSE (mean squared error) of each
16084 frame, and at the end of the processing it is averaged across all frames
16085 equally, and the following formula is applied to obtain the PSNR:
16086
16087 @example
16088 PSNR = 10*log10(MAX^2/MSE)
16089 @end example
16090
16091 Where MAX is the average of the maximum values of each component of the
16092 image.
16093
16094 The description of the accepted parameters follows.
16095
16096 @table @option
16097 @item stats_file, f
16098 If specified the filter will use the named file to save the PSNR of
16099 each individual frame. When filename equals "-" the data is sent to
16100 standard output.
16101
16102 @item stats_version
16103 Specifies which version of the stats file format to use. Details of
16104 each format are written below.
16105 Default value is 1.
16106
16107 @item stats_add_max
16108 Determines whether the max value is output to the stats log.
16109 Default value is 0.
16110 Requires stats_version >= 2. If this is set and stats_version < 2,
16111 the filter will return an error.
16112 @end table
16113
16114 This filter also supports the @ref{framesync} options.
16115
16116 The file printed if @var{stats_file} is selected, contains a sequence of
16117 key/value pairs of the form @var{key}:@var{value} for each compared
16118 couple of frames.
16119
16120 If a @var{stats_version} greater than 1 is specified, a header line precedes
16121 the list of per-frame-pair stats, with key value pairs following the frame
16122 format with the following parameters:
16123
16124 @table @option
16125 @item psnr_log_version
16126 The version of the log file format. Will match @var{stats_version}.
16127
16128 @item fields
16129 A comma separated list of the per-frame-pair parameters included in
16130 the log.
16131 @end table
16132
16133 A description of each shown per-frame-pair parameter follows:
16134
16135 @table @option
16136 @item n
16137 sequential number of the input frame, starting from 1
16138
16139 @item mse_avg
16140 Mean Square Error pixel-by-pixel average difference of the compared
16141 frames, averaged over all the image components.
16142
16143 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
16144 Mean Square Error pixel-by-pixel average difference of the compared
16145 frames for the component specified by the suffix.
16146
16147 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
16148 Peak Signal to Noise ratio of the compared frames for the component
16149 specified by the suffix.
16150
16151 @item max_avg, max_y, max_u, max_v
16152 Maximum allowed value for each channel, and average over all
16153 channels.
16154 @end table
16155
16156 @subsection Examples
16157 @itemize
16158 @item
16159 For example:
16160 @example
16161 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
16162 [main][ref] psnr="stats_file=stats.log" [out]
16163 @end example
16164
16165 On this example the input file being processed is compared with the
16166 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
16167 is stored in @file{stats.log}.
16168
16169 @item
16170 Another example with different containers:
16171 @example
16172 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 -
16173 @end example
16174 @end itemize
16175
16176 @anchor{pullup}
16177 @section pullup
16178
16179 Pulldown reversal (inverse telecine) filter, capable of handling mixed
16180 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
16181 content.
16182
16183 The pullup filter is designed to take advantage of future context in making
16184 its decisions. This filter is stateless in the sense that it does not lock
16185 onto a pattern to follow, but it instead looks forward to the following
16186 fields in order to identify matches and rebuild progressive frames.
16187
16188 To produce content with an even framerate, insert the fps filter after
16189 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
16190 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
16191
16192 The filter accepts the following options:
16193
16194 @table @option
16195 @item jl
16196 @item jr
16197 @item jt
16198 @item jb
16199 These options set the amount of "junk" to ignore at the left, right, top, and
16200 bottom of the image, respectively. Left and right are in units of 8 pixels,
16201 while top and bottom are in units of 2 lines.
16202 The default is 8 pixels on each side.
16203
16204 @item sb
16205 Set the strict breaks. Setting this option to 1 will reduce the chances of
16206 filter generating an occasional mismatched frame, but it may also cause an
16207 excessive number of frames to be dropped during high motion sequences.
16208 Conversely, setting it to -1 will make filter match fields more easily.
16209 This may help processing of video where there is slight blurring between
16210 the fields, but may also cause there to be interlaced frames in the output.
16211 Default value is @code{0}.
16212
16213 @item mp
16214 Set the metric plane to use. It accepts the following values:
16215 @table @samp
16216 @item l
16217 Use luma plane.
16218
16219 @item u
16220 Use chroma blue plane.
16221
16222 @item v
16223 Use chroma red plane.
16224 @end table
16225
16226 This option may be set to use chroma plane instead of the default luma plane
16227 for doing filter's computations. This may improve accuracy on very clean
16228 source material, but more likely will decrease accuracy, especially if there
16229 is chroma noise (rainbow effect) or any grayscale video.
16230 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
16231 load and make pullup usable in realtime on slow machines.
16232 @end table
16233
16234 For best results (without duplicated frames in the output file) it is
16235 necessary to change the output frame rate. For example, to inverse
16236 telecine NTSC input:
16237 @example
16238 ffmpeg -i input -vf pullup -r 24000/1001 ...
16239 @end example
16240
16241 @section qp
16242
16243 Change video quantization parameters (QP).
16244
16245 The filter accepts the following option:
16246
16247 @table @option
16248 @item qp
16249 Set expression for quantization parameter.
16250 @end table
16251
16252 The expression is evaluated through the eval API and can contain, among others,
16253 the following constants:
16254
16255 @table @var
16256 @item known
16257 1 if index is not 129, 0 otherwise.
16258
16259 @item qp
16260 Sequential index starting from -129 to 128.
16261 @end table
16262
16263 @subsection Examples
16264
16265 @itemize
16266 @item
16267 Some equation like:
16268 @example
16269 qp=2+2*sin(PI*qp)
16270 @end example
16271 @end itemize
16272
16273 @section random
16274
16275 Flush video frames from internal cache of frames into a random order.
16276 No frame is discarded.
16277 Inspired by @ref{frei0r} nervous filter.
16278
16279 @table @option
16280 @item frames
16281 Set size in number of frames of internal cache, in range from @code{2} to
16282 @code{512}. Default is @code{30}.
16283
16284 @item seed
16285 Set seed for random number generator, must be an integer included between
16286 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
16287 less than @code{0}, the filter will try to use a good random seed on a
16288 best effort basis.
16289 @end table
16290
16291 @section readeia608
16292
16293 Read closed captioning (EIA-608) information from the top lines of a video frame.
16294
16295 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
16296 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
16297 with EIA-608 data (starting from 0). A description of each metadata value follows:
16298
16299 @table @option
16300 @item lavfi.readeia608.X.cc
16301 The two bytes stored as EIA-608 data (printed in hexadecimal).
16302
16303 @item lavfi.readeia608.X.line
16304 The number of the line on which the EIA-608 data was identified and read.
16305 @end table
16306
16307 This filter accepts the following options:
16308
16309 @table @option
16310 @item scan_min
16311 Set the line to start scanning for EIA-608 data. Default is @code{0}.
16312
16313 @item scan_max
16314 Set the line to end scanning for EIA-608 data. Default is @code{29}.
16315
16316 @item spw
16317 Set the ratio of width reserved for sync code detection.
16318 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
16319
16320 @item chp
16321 Enable checking the parity bit. In the event of a parity error, the filter will output
16322 @code{0x00} for that character. Default is false.
16323
16324 @item lp
16325 Lowpass lines prior to further processing. Default is enabled.
16326 @end table
16327
16328 @subsection Commands
16329
16330 This filter supports the all above options as @ref{commands}.
16331
16332 @subsection Examples
16333
16334 @itemize
16335 @item
16336 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
16337 @example
16338 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
16339 @end example
16340 @end itemize
16341
16342 @section readvitc
16343
16344 Read vertical interval timecode (VITC) information from the top lines of a
16345 video frame.
16346
16347 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
16348 timecode value, if a valid timecode has been detected. Further metadata key
16349 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
16350 timecode data has been found or not.
16351
16352 This filter accepts the following options:
16353
16354 @table @option
16355 @item scan_max
16356 Set the maximum number of lines to scan for VITC data. If the value is set to
16357 @code{-1} the full video frame is scanned. Default is @code{45}.
16358
16359 @item thr_b
16360 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
16361 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
16362
16363 @item thr_w
16364 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
16365 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
16366 @end table
16367
16368 @subsection Examples
16369
16370 @itemize
16371 @item
16372 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
16373 draw @code{--:--:--:--} as a placeholder:
16374 @example
16375 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
16376 @end example
16377 @end itemize
16378
16379 @section remap
16380
16381 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
16382
16383 Destination pixel at position (X, Y) will be picked from source (x, y) position
16384 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
16385 value for pixel will be used for destination pixel.
16386
16387 Xmap and Ymap input video streams must be of same dimensions. Output video stream
16388 will have Xmap/Ymap video stream dimensions.
16389 Xmap and Ymap input video streams are 16bit depth, single channel.
16390
16391 @table @option
16392 @item format
16393 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
16394 Default is @code{color}.
16395
16396 @item fill
16397 Specify the color of the unmapped pixels. For the syntax of this option,
16398 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
16399 manual,ffmpeg-utils}. Default color is @code{black}.
16400 @end table
16401
16402 @section removegrain
16403
16404 The removegrain filter is a spatial denoiser for progressive video.
16405
16406 @table @option
16407 @item m0
16408 Set mode for the first plane.
16409
16410 @item m1
16411 Set mode for the second plane.
16412
16413 @item m2
16414 Set mode for the third plane.
16415
16416 @item m3
16417 Set mode for the fourth plane.
16418 @end table
16419
16420 Range of mode is from 0 to 24. Description of each mode follows:
16421
16422 @table @var
16423 @item 0
16424 Leave input plane unchanged. Default.
16425
16426 @item 1
16427 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
16428
16429 @item 2
16430 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
16431
16432 @item 3
16433 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
16434
16435 @item 4
16436 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
16437 This is equivalent to a median filter.
16438
16439 @item 5
16440 Line-sensitive clipping giving the minimal change.
16441
16442 @item 6
16443 Line-sensitive clipping, intermediate.
16444
16445 @item 7
16446 Line-sensitive clipping, intermediate.
16447
16448 @item 8
16449 Line-sensitive clipping, intermediate.
16450
16451 @item 9
16452 Line-sensitive clipping on a line where the neighbours pixels are the closest.
16453
16454 @item 10
16455 Replaces the target pixel with the closest neighbour.
16456
16457 @item 11
16458 [1 2 1] horizontal and vertical kernel blur.
16459
16460 @item 12
16461 Same as mode 11.
16462
16463 @item 13
16464 Bob mode, interpolates top field from the line where the neighbours
16465 pixels are the closest.
16466
16467 @item 14
16468 Bob mode, interpolates bottom field from the line where the neighbours
16469 pixels are the closest.
16470
16471 @item 15
16472 Bob mode, interpolates top field. Same as 13 but with a more complicated
16473 interpolation formula.
16474
16475 @item 16
16476 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
16477 interpolation formula.
16478
16479 @item 17
16480 Clips the pixel with the minimum and maximum of respectively the maximum and
16481 minimum of each pair of opposite neighbour pixels.
16482
16483 @item 18
16484 Line-sensitive clipping using opposite neighbours whose greatest distance from
16485 the current pixel is minimal.
16486
16487 @item 19
16488 Replaces the pixel with the average of its 8 neighbours.
16489
16490 @item 20
16491 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
16492
16493 @item 21
16494 Clips pixels using the averages of opposite neighbour.
16495
16496 @item 22
16497 Same as mode 21 but simpler and faster.
16498
16499 @item 23
16500 Small edge and halo removal, but reputed useless.
16501
16502 @item 24
16503 Similar as 23.
16504 @end table
16505
16506 @section removelogo
16507
16508 Suppress a TV station logo, using an image file to determine which
16509 pixels comprise the logo. It works by filling in the pixels that
16510 comprise the logo with neighboring pixels.
16511
16512 The filter accepts the following options:
16513
16514 @table @option
16515 @item filename, f
16516 Set the filter bitmap file, which can be any image format supported by
16517 libavformat. The width and height of the image file must match those of the
16518 video stream being processed.
16519 @end table
16520
16521 Pixels in the provided bitmap image with a value of zero are not
16522 considered part of the logo, non-zero pixels are considered part of
16523 the logo. If you use white (255) for the logo and black (0) for the
16524 rest, you will be safe. For making the filter bitmap, it is
16525 recommended to take a screen capture of a black frame with the logo
16526 visible, and then using a threshold filter followed by the erode
16527 filter once or twice.
16528
16529 If needed, little splotches can be fixed manually. Remember that if
16530 logo pixels are not covered, the filter quality will be much
16531 reduced. Marking too many pixels as part of the logo does not hurt as
16532 much, but it will increase the amount of blurring needed to cover over
16533 the image and will destroy more information than necessary, and extra
16534 pixels will slow things down on a large logo.
16535
16536 @section repeatfields
16537
16538 This filter uses the repeat_field flag from the Video ES headers and hard repeats
16539 fields based on its value.
16540
16541 @section reverse
16542
16543 Reverse a video clip.
16544
16545 Warning: This filter requires memory to buffer the entire clip, so trimming
16546 is suggested.
16547
16548 @subsection Examples
16549
16550 @itemize
16551 @item
16552 Take the first 5 seconds of a clip, and reverse it.
16553 @example
16554 trim=end=5,reverse
16555 @end example
16556 @end itemize
16557
16558 @section rgbashift
16559 Shift R/G/B/A pixels horizontally and/or vertically.
16560
16561 The filter accepts the following options:
16562 @table @option
16563 @item rh
16564 Set amount to shift red horizontally.
16565 @item rv
16566 Set amount to shift red vertically.
16567 @item gh
16568 Set amount to shift green horizontally.
16569 @item gv
16570 Set amount to shift green vertically.
16571 @item bh
16572 Set amount to shift blue horizontally.
16573 @item bv
16574 Set amount to shift blue vertically.
16575 @item ah
16576 Set amount to shift alpha horizontally.
16577 @item av
16578 Set amount to shift alpha vertically.
16579 @item edge
16580 Set edge mode, can be @var{smear}, default, or @var{warp}.
16581 @end table
16582
16583 @subsection Commands
16584
16585 This filter supports the all above options as @ref{commands}.
16586
16587 @section roberts
16588 Apply roberts cross operator to input video stream.
16589
16590 The filter accepts the following option:
16591
16592 @table @option
16593 @item planes
16594 Set which planes will be processed, unprocessed planes will be copied.
16595 By default value 0xf, all planes will be processed.
16596
16597 @item scale
16598 Set value which will be multiplied with filtered result.
16599
16600 @item delta
16601 Set value which will be added to filtered result.
16602 @end table
16603
16604 @subsection Commands
16605
16606 This filter supports the all above options as @ref{commands}.
16607
16608 @section rotate
16609
16610 Rotate video by an arbitrary angle expressed in radians.
16611
16612 The filter accepts the following options:
16613
16614 A description of the optional parameters follows.
16615 @table @option
16616 @item angle, a
16617 Set an expression for the angle by which to rotate the input video
16618 clockwise, expressed as a number of radians. A negative value will
16619 result in a counter-clockwise rotation. By default it is set to "0".
16620
16621 This expression is evaluated for each frame.
16622
16623 @item out_w, ow
16624 Set the output width expression, default value is "iw".
16625 This expression is evaluated just once during configuration.
16626
16627 @item out_h, oh
16628 Set the output height expression, default value is "ih".
16629 This expression is evaluated just once during configuration.
16630
16631 @item bilinear
16632 Enable bilinear interpolation if set to 1, a value of 0 disables
16633 it. Default value is 1.
16634
16635 @item fillcolor, c
16636 Set the color used to fill the output area not covered by the rotated
16637 image. For the general syntax of this option, check the
16638 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16639 If the special value "none" is selected then no
16640 background is printed (useful for example if the background is never shown).
16641
16642 Default value is "black".
16643 @end table
16644
16645 The expressions for the angle and the output size can contain the
16646 following constants and functions:
16647
16648 @table @option
16649 @item n
16650 sequential number of the input frame, starting from 0. It is always NAN
16651 before the first frame is filtered.
16652
16653 @item t
16654 time in seconds of the input frame, it is set to 0 when the filter is
16655 configured. It is always NAN before the first frame is filtered.
16656
16657 @item hsub
16658 @item vsub
16659 horizontal and vertical chroma subsample values. For example for the
16660 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16661
16662 @item in_w, iw
16663 @item in_h, ih
16664 the input video width and height
16665
16666 @item out_w, ow
16667 @item out_h, oh
16668 the output width and height, that is the size of the padded area as
16669 specified by the @var{width} and @var{height} expressions
16670
16671 @item rotw(a)
16672 @item roth(a)
16673 the minimal width/height required for completely containing the input
16674 video rotated by @var{a} radians.
16675
16676 These are only available when computing the @option{out_w} and
16677 @option{out_h} expressions.
16678 @end table
16679
16680 @subsection Examples
16681
16682 @itemize
16683 @item
16684 Rotate the input by PI/6 radians clockwise:
16685 @example
16686 rotate=PI/6
16687 @end example
16688
16689 @item
16690 Rotate the input by PI/6 radians counter-clockwise:
16691 @example
16692 rotate=-PI/6
16693 @end example
16694
16695 @item
16696 Rotate the input by 45 degrees clockwise:
16697 @example
16698 rotate=45*PI/180
16699 @end example
16700
16701 @item
16702 Apply a constant rotation with period T, starting from an angle of PI/3:
16703 @example
16704 rotate=PI/3+2*PI*t/T
16705 @end example
16706
16707 @item
16708 Make the input video rotation oscillating with a period of T
16709 seconds and an amplitude of A radians:
16710 @example
16711 rotate=A*sin(2*PI/T*t)
16712 @end example
16713
16714 @item
16715 Rotate the video, output size is chosen so that the whole rotating
16716 input video is always completely contained in the output:
16717 @example
16718 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
16719 @end example
16720
16721 @item
16722 Rotate the video, reduce the output size so that no background is ever
16723 shown:
16724 @example
16725 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
16726 @end example
16727 @end itemize
16728
16729 @subsection Commands
16730
16731 The filter supports the following commands:
16732
16733 @table @option
16734 @item a, angle
16735 Set the angle expression.
16736 The command accepts the same syntax of the corresponding option.
16737
16738 If the specified expression is not valid, it is kept at its current
16739 value.
16740 @end table
16741
16742 @section sab
16743
16744 Apply Shape Adaptive Blur.
16745
16746 The filter accepts the following options:
16747
16748 @table @option
16749 @item luma_radius, lr
16750 Set luma blur filter strength, must be a value in range 0.1-4.0, default
16751 value is 1.0. A greater value will result in a more blurred image, and
16752 in slower processing.
16753
16754 @item luma_pre_filter_radius, lpfr
16755 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
16756 value is 1.0.
16757
16758 @item luma_strength, ls
16759 Set luma maximum difference between pixels to still be considered, must
16760 be a value in the 0.1-100.0 range, default value is 1.0.
16761
16762 @item chroma_radius, cr
16763 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
16764 greater value will result in a more blurred image, and in slower
16765 processing.
16766
16767 @item chroma_pre_filter_radius, cpfr
16768 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
16769
16770 @item chroma_strength, cs
16771 Set chroma maximum difference between pixels to still be considered,
16772 must be a value in the -0.9-100.0 range.
16773 @end table
16774
16775 Each chroma option value, if not explicitly specified, is set to the
16776 corresponding luma option value.
16777
16778 @anchor{scale}
16779 @section scale
16780
16781 Scale (resize) the input video, using the libswscale library.
16782
16783 The scale filter forces the output display aspect ratio to be the same
16784 of the input, by changing the output sample aspect ratio.
16785
16786 If the input image format is different from the format requested by
16787 the next filter, the scale filter will convert the input to the
16788 requested format.
16789
16790 @subsection Options
16791 The filter accepts the following options, or any of the options
16792 supported by the libswscale scaler.
16793
16794 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
16795 the complete list of scaler options.
16796
16797 @table @option
16798 @item width, w
16799 @item height, h
16800 Set the output video dimension expression. Default value is the input
16801 dimension.
16802
16803 If the @var{width} or @var{w} value is 0, the input width is used for
16804 the output. If the @var{height} or @var{h} value is 0, the input height
16805 is used for the output.
16806
16807 If one and only one of the values is -n with n >= 1, the scale filter
16808 will use a value that maintains the aspect ratio of the input image,
16809 calculated from the other specified dimension. After that it will,
16810 however, make sure that the calculated dimension is divisible by n and
16811 adjust the value if necessary.
16812
16813 If both values are -n with n >= 1, the behavior will be identical to
16814 both values being set to 0 as previously detailed.
16815
16816 See below for the list of accepted constants for use in the dimension
16817 expression.
16818
16819 @item eval
16820 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
16821
16822 @table @samp
16823 @item init
16824 Only evaluate expressions once during the filter initialization or when a command is processed.
16825
16826 @item frame
16827 Evaluate expressions for each incoming frame.
16828
16829 @end table
16830
16831 Default value is @samp{init}.
16832
16833
16834 @item interl
16835 Set the interlacing mode. It accepts the following values:
16836
16837 @table @samp
16838 @item 1
16839 Force interlaced aware scaling.
16840
16841 @item 0
16842 Do not apply interlaced scaling.
16843
16844 @item -1
16845 Select interlaced aware scaling depending on whether the source frames
16846 are flagged as interlaced or not.
16847 @end table
16848
16849 Default value is @samp{0}.
16850
16851 @item flags
16852 Set libswscale scaling flags. See
16853 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16854 complete list of values. If not explicitly specified the filter applies
16855 the default flags.
16856
16857
16858 @item param0, param1
16859 Set libswscale input parameters for scaling algorithms that need them. See
16860 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16861 complete documentation. If not explicitly specified the filter applies
16862 empty parameters.
16863
16864
16865
16866 @item size, s
16867 Set the video size. For the syntax of this option, check the
16868 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16869
16870 @item in_color_matrix
16871 @item out_color_matrix
16872 Set in/output YCbCr color space type.
16873
16874 This allows the autodetected value to be overridden as well as allows forcing
16875 a specific value used for the output and encoder.
16876
16877 If not specified, the color space type depends on the pixel format.
16878
16879 Possible values:
16880
16881 @table @samp
16882 @item auto
16883 Choose automatically.
16884
16885 @item bt709
16886 Format conforming to International Telecommunication Union (ITU)
16887 Recommendation BT.709.
16888
16889 @item fcc
16890 Set color space conforming to the United States Federal Communications
16891 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
16892
16893 @item bt601
16894 @item bt470
16895 @item smpte170m
16896 Set color space conforming to:
16897
16898 @itemize
16899 @item
16900 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
16901
16902 @item
16903 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
16904
16905 @item
16906 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
16907
16908 @end itemize
16909
16910 @item smpte240m
16911 Set color space conforming to SMPTE ST 240:1999.
16912
16913 @item bt2020
16914 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
16915 @end table
16916
16917 @item in_range
16918 @item out_range
16919 Set in/output YCbCr sample range.
16920
16921 This allows the autodetected value to be overridden as well as allows forcing
16922 a specific value used for the output and encoder. If not specified, the
16923 range depends on the pixel format. Possible values:
16924
16925 @table @samp
16926 @item auto/unknown
16927 Choose automatically.
16928
16929 @item jpeg/full/pc
16930 Set full range (0-255 in case of 8-bit luma).
16931
16932 @item mpeg/limited/tv
16933 Set "MPEG" range (16-235 in case of 8-bit luma).
16934 @end table
16935
16936 @item force_original_aspect_ratio
16937 Enable decreasing or increasing output video width or height if necessary to
16938 keep the original aspect ratio. Possible values:
16939
16940 @table @samp
16941 @item disable
16942 Scale the video as specified and disable this feature.
16943
16944 @item decrease
16945 The output video dimensions will automatically be decreased if needed.
16946
16947 @item increase
16948 The output video dimensions will automatically be increased if needed.
16949
16950 @end table
16951
16952 One useful instance of this option is that when you know a specific device's
16953 maximum allowed resolution, you can use this to limit the output video to
16954 that, while retaining the aspect ratio. For example, device A allows
16955 1280x720 playback, and your video is 1920x800. Using this option (set it to
16956 decrease) and specifying 1280x720 to the command line makes the output
16957 1280x533.
16958
16959 Please note that this is a different thing than specifying -1 for @option{w}
16960 or @option{h}, you still need to specify the output resolution for this option
16961 to work.
16962
16963 @item force_divisible_by
16964 Ensures that both the output dimensions, width and height, are divisible by the
16965 given integer when used together with @option{force_original_aspect_ratio}. This
16966 works similar to using @code{-n} in the @option{w} and @option{h} options.
16967
16968 This option respects the value set for @option{force_original_aspect_ratio},
16969 increasing or decreasing the resolution accordingly. The video's aspect ratio
16970 may be slightly modified.
16971
16972 This option can be handy if you need to have a video fit within or exceed
16973 a defined resolution using @option{force_original_aspect_ratio} but also have
16974 encoder restrictions on width or height divisibility.
16975
16976 @end table
16977
16978 The values of the @option{w} and @option{h} options are expressions
16979 containing the following constants:
16980
16981 @table @var
16982 @item in_w
16983 @item in_h
16984 The input width and height
16985
16986 @item iw
16987 @item ih
16988 These are the same as @var{in_w} and @var{in_h}.
16989
16990 @item out_w
16991 @item out_h
16992 The output (scaled) width and height
16993
16994 @item ow
16995 @item oh
16996 These are the same as @var{out_w} and @var{out_h}
16997
16998 @item a
16999 The same as @var{iw} / @var{ih}
17000
17001 @item sar
17002 input sample aspect ratio
17003
17004 @item dar
17005 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
17006
17007 @item hsub
17008 @item vsub
17009 horizontal and vertical input chroma subsample values. For example for the
17010 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17011
17012 @item ohsub
17013 @item ovsub
17014 horizontal and vertical output chroma subsample values. For example for the
17015 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17016
17017 @item n
17018 The (sequential) number of the input frame, starting from 0.
17019 Only available with @code{eval=frame}.
17020
17021 @item t
17022 The presentation timestamp of the input frame, expressed as a number of
17023 seconds. Only available with @code{eval=frame}.
17024
17025 @item pos
17026 The position (byte offset) of the frame in the input stream, or NaN if
17027 this information is unavailable and/or meaningless (for example in case of synthetic video).
17028 Only available with @code{eval=frame}.
17029 @end table
17030
17031 @subsection Examples
17032
17033 @itemize
17034 @item
17035 Scale the input video to a size of 200x100
17036 @example
17037 scale=w=200:h=100
17038 @end example
17039
17040 This is equivalent to:
17041 @example
17042 scale=200:100
17043 @end example
17044
17045 or:
17046 @example
17047 scale=200x100
17048 @end example
17049
17050 @item
17051 Specify a size abbreviation for the output size:
17052 @example
17053 scale=qcif
17054 @end example
17055
17056 which can also be written as:
17057 @example
17058 scale=size=qcif
17059 @end example
17060
17061 @item
17062 Scale the input to 2x:
17063 @example
17064 scale=w=2*iw:h=2*ih
17065 @end example
17066
17067 @item
17068 The above is the same as:
17069 @example
17070 scale=2*in_w:2*in_h
17071 @end example
17072
17073 @item
17074 Scale the input to 2x with forced interlaced scaling:
17075 @example
17076 scale=2*iw:2*ih:interl=1
17077 @end example
17078
17079 @item
17080 Scale the input to half size:
17081 @example
17082 scale=w=iw/2:h=ih/2
17083 @end example
17084
17085 @item
17086 Increase the width, and set the height to the same size:
17087 @example
17088 scale=3/2*iw:ow
17089 @end example
17090
17091 @item
17092 Seek Greek harmony:
17093 @example
17094 scale=iw:1/PHI*iw
17095 scale=ih*PHI:ih
17096 @end example
17097
17098 @item
17099 Increase the height, and set the width to 3/2 of the height:
17100 @example
17101 scale=w=3/2*oh:h=3/5*ih
17102 @end example
17103
17104 @item
17105 Increase the size, making the size a multiple of the chroma
17106 subsample values:
17107 @example
17108 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
17109 @end example
17110
17111 @item
17112 Increase the width to a maximum of 500 pixels,
17113 keeping the same aspect ratio as the input:
17114 @example
17115 scale=w='min(500\, iw*3/2):h=-1'
17116 @end example
17117
17118 @item
17119 Make pixels square by combining scale and setsar:
17120 @example
17121 scale='trunc(ih*dar):ih',setsar=1/1
17122 @end example
17123
17124 @item
17125 Make pixels square by combining scale and setsar,
17126 making sure the resulting resolution is even (required by some codecs):
17127 @example
17128 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
17129 @end example
17130 @end itemize
17131
17132 @subsection Commands
17133
17134 This filter supports the following commands:
17135 @table @option
17136 @item width, w
17137 @item height, h
17138 Set the output video dimension expression.
17139 The command accepts the same syntax of the corresponding option.
17140
17141 If the specified expression is not valid, it is kept at its current
17142 value.
17143 @end table
17144
17145 @section scale_npp
17146
17147 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
17148 format conversion on CUDA video frames. Setting the output width and height
17149 works in the same way as for the @var{scale} filter.
17150
17151 The following additional options are accepted:
17152 @table @option
17153 @item format
17154 The pixel format of the output CUDA frames. If set to the string "same" (the
17155 default), the input format will be kept. Note that automatic format negotiation
17156 and conversion is not yet supported for hardware frames
17157
17158 @item interp_algo
17159 The interpolation algorithm used for resizing. One of the following:
17160 @table @option
17161 @item nn
17162 Nearest neighbour.
17163
17164 @item linear
17165 @item cubic
17166 @item cubic2p_bspline
17167 2-parameter cubic (B=1, C=0)
17168
17169 @item cubic2p_catmullrom
17170 2-parameter cubic (B=0, C=1/2)
17171
17172 @item cubic2p_b05c03
17173 2-parameter cubic (B=1/2, C=3/10)
17174
17175 @item super
17176 Supersampling
17177
17178 @item lanczos
17179 @end table
17180
17181 @item force_original_aspect_ratio
17182 Enable decreasing or increasing output video width or height if necessary to
17183 keep the original aspect ratio. Possible values:
17184
17185 @table @samp
17186 @item disable
17187 Scale the video as specified and disable this feature.
17188
17189 @item decrease
17190 The output video dimensions will automatically be decreased if needed.
17191
17192 @item increase
17193 The output video dimensions will automatically be increased if needed.
17194
17195 @end table
17196
17197 One useful instance of this option is that when you know a specific device's
17198 maximum allowed resolution, you can use this to limit the output video to
17199 that, while retaining the aspect ratio. For example, device A allows
17200 1280x720 playback, and your video is 1920x800. Using this option (set it to
17201 decrease) and specifying 1280x720 to the command line makes the output
17202 1280x533.
17203
17204 Please note that this is a different thing than specifying -1 for @option{w}
17205 or @option{h}, you still need to specify the output resolution for this option
17206 to work.
17207
17208 @item force_divisible_by
17209 Ensures that both the output dimensions, width and height, are divisible by the
17210 given integer when used together with @option{force_original_aspect_ratio}. This
17211 works similar to using @code{-n} in the @option{w} and @option{h} options.
17212
17213 This option respects the value set for @option{force_original_aspect_ratio},
17214 increasing or decreasing the resolution accordingly. The video's aspect ratio
17215 may be slightly modified.
17216
17217 This option can be handy if you need to have a video fit within or exceed
17218 a defined resolution using @option{force_original_aspect_ratio} but also have
17219 encoder restrictions on width or height divisibility.
17220
17221 @end table
17222
17223 @section scale2ref
17224
17225 Scale (resize) the input video, based on a reference video.
17226
17227 See the scale filter for available options, scale2ref supports the same but
17228 uses the reference video instead of the main input as basis. scale2ref also
17229 supports the following additional constants for the @option{w} and
17230 @option{h} options:
17231
17232 @table @var
17233 @item main_w
17234 @item main_h
17235 The main input video's width and height
17236
17237 @item main_a
17238 The same as @var{main_w} / @var{main_h}
17239
17240 @item main_sar
17241 The main input video's sample aspect ratio
17242
17243 @item main_dar, mdar
17244 The main input video's display aspect ratio. Calculated from
17245 @code{(main_w / main_h) * main_sar}.
17246
17247 @item main_hsub
17248 @item main_vsub
17249 The main input video's horizontal and vertical chroma subsample values.
17250 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
17251 is 1.
17252
17253 @item main_n
17254 The (sequential) number of the main input frame, starting from 0.
17255 Only available with @code{eval=frame}.
17256
17257 @item main_t
17258 The presentation timestamp of the main input frame, expressed as a number of
17259 seconds. Only available with @code{eval=frame}.
17260
17261 @item main_pos
17262 The position (byte offset) of the frame in the main input stream, or NaN if
17263 this information is unavailable and/or meaningless (for example in case of synthetic video).
17264 Only available with @code{eval=frame}.
17265 @end table
17266
17267 @subsection Examples
17268
17269 @itemize
17270 @item
17271 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
17272 @example
17273 'scale2ref[b][a];[a][b]overlay'
17274 @end example
17275
17276 @item
17277 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
17278 @example
17279 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
17280 @end example
17281 @end itemize
17282
17283 @subsection Commands
17284
17285 This filter supports the following commands:
17286 @table @option
17287 @item width, w
17288 @item height, h
17289 Set the output video dimension expression.
17290 The command accepts the same syntax of the corresponding option.
17291
17292 If the specified expression is not valid, it is kept at its current
17293 value.
17294 @end table
17295
17296 @section scroll
17297 Scroll input video horizontally and/or vertically by constant speed.
17298
17299 The filter accepts the following options:
17300 @table @option
17301 @item horizontal, h
17302 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
17303 Negative values changes scrolling direction.
17304
17305 @item vertical, v
17306 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
17307 Negative values changes scrolling direction.
17308
17309 @item hpos
17310 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
17311
17312 @item vpos
17313 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
17314 @end table
17315
17316 @subsection Commands
17317
17318 This filter supports the following @ref{commands}:
17319 @table @option
17320 @item horizontal, h
17321 Set the horizontal scrolling speed.
17322 @item vertical, v
17323 Set the vertical scrolling speed.
17324 @end table
17325
17326 @anchor{scdet}
17327 @section scdet
17328
17329 Detect video scene change.
17330
17331 This filter sets frame metadata with mafd between frame, the scene score, and
17332 forward the frame to the next filter, so they can use these metadata to detect
17333 scene change or others.
17334
17335 In addition, this filter logs a message and sets frame metadata when it detects
17336 a scene change by @option{threshold}.
17337
17338 @code{lavfi.scd.mafd} metadata keys are set with mafd for every frame.
17339
17340 @code{lavfi.scd.score} metadata keys are set with scene change score for every frame
17341 to detect scene change.
17342
17343 @code{lavfi.scd.time} metadata keys are set with current filtered frame time which
17344 detect scene change with @option{threshold}.
17345
17346 The filter accepts the following options:
17347
17348 @table @option
17349 @item threshold, t
17350 Set the scene change detection threshold as a percentage of maximum change. Good
17351 values are in the @code{[8.0, 14.0]} range. The range for @option{threshold} is
17352 @code{[0., 100.]}.
17353
17354 Default value is @code{10.}.
17355
17356 @item sc_pass, s
17357 Set the flag to pass scene change frames to the next filter. Default value is @code{0}
17358 You can enable it if you want to get snapshot of scene change frames only.
17359 @end table
17360
17361 @anchor{selectivecolor}
17362 @section selectivecolor
17363
17364 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
17365 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
17366 by the "purity" of the color (that is, how saturated it already is).
17367
17368 This filter is similar to the Adobe Photoshop Selective Color tool.
17369
17370 The filter accepts the following options:
17371
17372 @table @option
17373 @item correction_method
17374 Select color correction method.
17375
17376 Available values are:
17377 @table @samp
17378 @item absolute
17379 Specified adjustments are applied "as-is" (added/subtracted to original pixel
17380 component value).
17381 @item relative
17382 Specified adjustments are relative to the original component value.
17383 @end table
17384 Default is @code{absolute}.
17385 @item reds
17386 Adjustments for red pixels (pixels where the red component is the maximum)
17387 @item yellows
17388 Adjustments for yellow pixels (pixels where the blue component is the minimum)
17389 @item greens
17390 Adjustments for green pixels (pixels where the green component is the maximum)
17391 @item cyans
17392 Adjustments for cyan pixels (pixels where the red component is the minimum)
17393 @item blues
17394 Adjustments for blue pixels (pixels where the blue component is the maximum)
17395 @item magentas
17396 Adjustments for magenta pixels (pixels where the green component is the minimum)
17397 @item whites
17398 Adjustments for white pixels (pixels where all components are greater than 128)
17399 @item neutrals
17400 Adjustments for all pixels except pure black and pure white
17401 @item blacks
17402 Adjustments for black pixels (pixels where all components are lesser than 128)
17403 @item psfile
17404 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
17405 @end table
17406
17407 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
17408 4 space separated floating point adjustment values in the [-1,1] range,
17409 respectively to adjust the amount of cyan, magenta, yellow and black for the
17410 pixels of its range.
17411
17412 @subsection Examples
17413
17414 @itemize
17415 @item
17416 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
17417 increase magenta by 27% in blue areas:
17418 @example
17419 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
17420 @end example
17421
17422 @item
17423 Use a Photoshop selective color preset:
17424 @example
17425 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
17426 @end example
17427 @end itemize
17428
17429 @anchor{separatefields}
17430 @section separatefields
17431
17432 The @code{separatefields} takes a frame-based video input and splits
17433 each frame into its components fields, producing a new half height clip
17434 with twice the frame rate and twice the frame count.
17435
17436 This filter use field-dominance information in frame to decide which
17437 of each pair of fields to place first in the output.
17438 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
17439
17440 @section setdar, setsar
17441
17442 The @code{setdar} filter sets the Display Aspect Ratio for the filter
17443 output video.
17444
17445 This is done by changing the specified Sample (aka Pixel) Aspect
17446 Ratio, according to the following equation:
17447 @example
17448 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
17449 @end example
17450
17451 Keep in mind that the @code{setdar} filter does not modify the pixel
17452 dimensions of the video frame. Also, the display aspect ratio set by
17453 this filter may be changed by later filters in the filterchain,
17454 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
17455 applied.
17456
17457 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
17458 the filter output video.
17459
17460 Note that as a consequence of the application of this filter, the
17461 output display aspect ratio will change according to the equation
17462 above.
17463
17464 Keep in mind that the sample aspect ratio set by the @code{setsar}
17465 filter may be changed by later filters in the filterchain, e.g. if
17466 another "setsar" or a "setdar" filter is applied.
17467
17468 It accepts the following parameters:
17469
17470 @table @option
17471 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
17472 Set the aspect ratio used by the filter.
17473
17474 The parameter can be a floating point number string, an expression, or
17475 a string of the form @var{num}:@var{den}, where @var{num} and
17476 @var{den} are the numerator and denominator of the aspect ratio. If
17477 the parameter is not specified, it is assumed the value "0".
17478 In case the form "@var{num}:@var{den}" is used, the @code{:} character
17479 should be escaped.
17480
17481 @item max
17482 Set the maximum integer value to use for expressing numerator and
17483 denominator when reducing the expressed aspect ratio to a rational.
17484 Default value is @code{100}.
17485
17486 @end table
17487
17488 The parameter @var{sar} is an expression containing
17489 the following constants:
17490
17491 @table @option
17492 @item E, PI, PHI
17493 These are approximated values for the mathematical constants e
17494 (Euler's number), pi (Greek pi), and phi (the golden ratio).
17495
17496 @item w, h
17497 The input width and height.
17498
17499 @item a
17500 These are the same as @var{w} / @var{h}.
17501
17502 @item sar
17503 The input sample aspect ratio.
17504
17505 @item dar
17506 The input display aspect ratio. It is the same as
17507 (@var{w} / @var{h}) * @var{sar}.
17508
17509 @item hsub, vsub
17510 Horizontal and vertical chroma subsample values. For example, for the
17511 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17512 @end table
17513
17514 @subsection Examples
17515
17516 @itemize
17517
17518 @item
17519 To change the display aspect ratio to 16:9, specify one of the following:
17520 @example
17521 setdar=dar=1.77777
17522 setdar=dar=16/9
17523 @end example
17524
17525 @item
17526 To change the sample aspect ratio to 10:11, specify:
17527 @example
17528 setsar=sar=10/11
17529 @end example
17530
17531 @item
17532 To set a display aspect ratio of 16:9, and specify a maximum integer value of
17533 1000 in the aspect ratio reduction, use the command:
17534 @example
17535 setdar=ratio=16/9:max=1000
17536 @end example
17537
17538 @end itemize
17539
17540 @anchor{setfield}
17541 @section setfield
17542
17543 Force field for the output video frame.
17544
17545 The @code{setfield} filter marks the interlace type field for the
17546 output frames. It does not change the input frame, but only sets the
17547 corresponding property, which affects how the frame is treated by
17548 following filters (e.g. @code{fieldorder} or @code{yadif}).
17549
17550 The filter accepts the following options:
17551
17552 @table @option
17553
17554 @item mode
17555 Available values are:
17556
17557 @table @samp
17558 @item auto
17559 Keep the same field property.
17560
17561 @item bff
17562 Mark the frame as bottom-field-first.
17563
17564 @item tff
17565 Mark the frame as top-field-first.
17566
17567 @item prog
17568 Mark the frame as progressive.
17569 @end table
17570 @end table
17571
17572 @anchor{setparams}
17573 @section setparams
17574
17575 Force frame parameter for the output video frame.
17576
17577 The @code{setparams} filter marks interlace and color range for the
17578 output frames. It does not change the input frame, but only sets the
17579 corresponding property, which affects how the frame is treated by
17580 filters/encoders.
17581
17582 @table @option
17583 @item field_mode
17584 Available values are:
17585
17586 @table @samp
17587 @item auto
17588 Keep the same field property (default).
17589
17590 @item bff
17591 Mark the frame as bottom-field-first.
17592
17593 @item tff
17594 Mark the frame as top-field-first.
17595
17596 @item prog
17597 Mark the frame as progressive.
17598 @end table
17599
17600 @item range
17601 Available values are:
17602
17603 @table @samp
17604 @item auto
17605 Keep the same color range property (default).
17606
17607 @item unspecified, unknown
17608 Mark the frame as unspecified color range.
17609
17610 @item limited, tv, mpeg
17611 Mark the frame as limited range.
17612
17613 @item full, pc, jpeg
17614 Mark the frame as full range.
17615 @end table
17616
17617 @item color_primaries
17618 Set the color primaries.
17619 Available values are:
17620
17621 @table @samp
17622 @item auto
17623 Keep the same color primaries property (default).
17624
17625 @item bt709
17626 @item unknown
17627 @item bt470m
17628 @item bt470bg
17629 @item smpte170m
17630 @item smpte240m
17631 @item film
17632 @item bt2020
17633 @item smpte428
17634 @item smpte431
17635 @item smpte432
17636 @item jedec-p22
17637 @end table
17638
17639 @item color_trc
17640 Set the color transfer.
17641 Available values are:
17642
17643 @table @samp
17644 @item auto
17645 Keep the same color trc property (default).
17646
17647 @item bt709
17648 @item unknown
17649 @item bt470m
17650 @item bt470bg
17651 @item smpte170m
17652 @item smpte240m
17653 @item linear
17654 @item log100
17655 @item log316
17656 @item iec61966-2-4
17657 @item bt1361e
17658 @item iec61966-2-1
17659 @item bt2020-10
17660 @item bt2020-12
17661 @item smpte2084
17662 @item smpte428
17663 @item arib-std-b67
17664 @end table
17665
17666 @item colorspace
17667 Set the colorspace.
17668 Available values are:
17669
17670 @table @samp
17671 @item auto
17672 Keep the same colorspace property (default).
17673
17674 @item gbr
17675 @item bt709
17676 @item unknown
17677 @item fcc
17678 @item bt470bg
17679 @item smpte170m
17680 @item smpte240m
17681 @item ycgco
17682 @item bt2020nc
17683 @item bt2020c
17684 @item smpte2085
17685 @item chroma-derived-nc
17686 @item chroma-derived-c
17687 @item ictcp
17688 @end table
17689 @end table
17690
17691 @section showinfo
17692
17693 Show a line containing various information for each input video frame.
17694 The input video is not modified.
17695
17696 This filter supports the following options:
17697
17698 @table @option
17699 @item checksum
17700 Calculate checksums of each plane. By default enabled.
17701 @end table
17702
17703 The shown line contains a sequence of key/value pairs of the form
17704 @var{key}:@var{value}.
17705
17706 The following values are shown in the output:
17707
17708 @table @option
17709 @item n
17710 The (sequential) number of the input frame, starting from 0.
17711
17712 @item pts
17713 The Presentation TimeStamp of the input frame, expressed as a number of
17714 time base units. The time base unit depends on the filter input pad.
17715
17716 @item pts_time
17717 The Presentation TimeStamp of the input frame, expressed as a number of
17718 seconds.
17719
17720 @item pos
17721 The position of the frame in the input stream, or -1 if this information is
17722 unavailable and/or meaningless (for example in case of synthetic video).
17723
17724 @item fmt
17725 The pixel format name.
17726
17727 @item sar
17728 The sample aspect ratio of the input frame, expressed in the form
17729 @var{num}/@var{den}.
17730
17731 @item s
17732 The size of the input frame. For the syntax of this option, check the
17733 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17734
17735 @item i
17736 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
17737 for bottom field first).
17738
17739 @item iskey
17740 This is 1 if the frame is a key frame, 0 otherwise.
17741
17742 @item type
17743 The picture type of the input frame ("I" for an I-frame, "P" for a
17744 P-frame, "B" for a B-frame, or "?" for an unknown type).
17745 Also refer to the documentation of the @code{AVPictureType} enum and of
17746 the @code{av_get_picture_type_char} function defined in
17747 @file{libavutil/avutil.h}.
17748
17749 @item checksum
17750 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
17751
17752 @item plane_checksum
17753 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
17754 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
17755
17756 @item mean
17757 The mean value of pixels in each plane of the input frame, expressed in the form
17758 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
17759
17760 @item stdev
17761 The standard deviation of pixel values in each plane of the input frame, expressed
17762 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
17763
17764 @end table
17765
17766 @section showpalette
17767
17768 Displays the 256 colors palette of each frame. This filter is only relevant for
17769 @var{pal8} pixel format frames.
17770
17771 It accepts the following option:
17772
17773 @table @option
17774 @item s
17775 Set the size of the box used to represent one palette color entry. Default is
17776 @code{30} (for a @code{30x30} pixel box).
17777 @end table
17778
17779 @section shuffleframes
17780
17781 Reorder and/or duplicate and/or drop video frames.
17782
17783 It accepts the following parameters:
17784
17785 @table @option
17786 @item mapping
17787 Set the destination indexes of input frames.
17788 This is space or '|' separated list of indexes that maps input frames to output
17789 frames. Number of indexes also sets maximal value that each index may have.
17790 '-1' index have special meaning and that is to drop frame.
17791 @end table
17792
17793 The first frame has the index 0. The default is to keep the input unchanged.
17794
17795 @subsection Examples
17796
17797 @itemize
17798 @item
17799 Swap second and third frame of every three frames of the input:
17800 @example
17801 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
17802 @end example
17803
17804 @item
17805 Swap 10th and 1st frame of every ten frames of the input:
17806 @example
17807 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
17808 @end example
17809 @end itemize
17810
17811 @section shufflepixels
17812
17813 Reorder pixels in video frames.
17814
17815 This filter accepts the following options:
17816
17817 @table @option
17818 @item direction, d
17819 Set shuffle direction. Can be forward or inverse direction.
17820 Default direction is forward.
17821
17822 @item mode, m
17823 Set shuffle mode. Can be horizontal, vertical or block mode.
17824
17825 @item width, w
17826 @item height, h
17827 Set shuffle block_size. In case of horizontal shuffle mode only width
17828 part of size is used, and in case of vertical shuffle mode only height
17829 part of size is used.
17830
17831 @item seed, s
17832 Set random seed used with shuffling pixels. Mainly useful to set to be able
17833 to reverse filtering process to get original input.
17834 For example, to reverse forward shuffle you need to use same parameters
17835 and exact same seed and to set direction to inverse.
17836 @end table
17837
17838 @section shuffleplanes
17839
17840 Reorder and/or duplicate video planes.
17841
17842 It accepts the following parameters:
17843
17844 @table @option
17845
17846 @item map0
17847 The index of the input plane to be used as the first output plane.
17848
17849 @item map1
17850 The index of the input plane to be used as the second output plane.
17851
17852 @item map2
17853 The index of the input plane to be used as the third output plane.
17854
17855 @item map3
17856 The index of the input plane to be used as the fourth output plane.
17857
17858 @end table
17859
17860 The first plane has the index 0. The default is to keep the input unchanged.
17861
17862 @subsection Examples
17863
17864 @itemize
17865 @item
17866 Swap the second and third planes of the input:
17867 @example
17868 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
17869 @end example
17870 @end itemize
17871
17872 @anchor{signalstats}
17873 @section signalstats
17874 Evaluate various visual metrics that assist in determining issues associated
17875 with the digitization of analog video media.
17876
17877 By default the filter will log these metadata values:
17878
17879 @table @option
17880 @item YMIN
17881 Display the minimal Y value contained within the input frame. Expressed in
17882 range of [0-255].
17883
17884 @item YLOW
17885 Display the Y value at the 10% percentile within the input frame. Expressed in
17886 range of [0-255].
17887
17888 @item YAVG
17889 Display the average Y value within the input frame. Expressed in range of
17890 [0-255].
17891
17892 @item YHIGH
17893 Display the Y value at the 90% percentile within the input frame. Expressed in
17894 range of [0-255].
17895
17896 @item YMAX
17897 Display the maximum Y value contained within the input frame. Expressed in
17898 range of [0-255].
17899
17900 @item UMIN
17901 Display the minimal U value contained within the input frame. Expressed in
17902 range of [0-255].
17903
17904 @item ULOW
17905 Display the U value at the 10% percentile within the input frame. Expressed in
17906 range of [0-255].
17907
17908 @item UAVG
17909 Display the average U value within the input frame. Expressed in range of
17910 [0-255].
17911
17912 @item UHIGH
17913 Display the U value at the 90% percentile within the input frame. Expressed in
17914 range of [0-255].
17915
17916 @item UMAX
17917 Display the maximum U value contained within the input frame. Expressed in
17918 range of [0-255].
17919
17920 @item VMIN
17921 Display the minimal V value contained within the input frame. Expressed in
17922 range of [0-255].
17923
17924 @item VLOW
17925 Display the V value at the 10% percentile within the input frame. Expressed in
17926 range of [0-255].
17927
17928 @item VAVG
17929 Display the average V value within the input frame. Expressed in range of
17930 [0-255].
17931
17932 @item VHIGH
17933 Display the V value at the 90% percentile within the input frame. Expressed in
17934 range of [0-255].
17935
17936 @item VMAX
17937 Display the maximum V value contained within the input frame. Expressed in
17938 range of [0-255].
17939
17940 @item SATMIN
17941 Display the minimal saturation value contained within the input frame.
17942 Expressed in range of [0-~181.02].
17943
17944 @item SATLOW
17945 Display the saturation value at the 10% percentile within the input frame.
17946 Expressed in range of [0-~181.02].
17947
17948 @item SATAVG
17949 Display the average saturation value within the input frame. Expressed in range
17950 of [0-~181.02].
17951
17952 @item SATHIGH
17953 Display the saturation value at the 90% percentile within the input frame.
17954 Expressed in range of [0-~181.02].
17955
17956 @item SATMAX
17957 Display the maximum saturation value contained within the input frame.
17958 Expressed in range of [0-~181.02].
17959
17960 @item HUEMED
17961 Display the median value for hue within the input frame. Expressed in range of
17962 [0-360].
17963
17964 @item HUEAVG
17965 Display the average value for hue within the input frame. Expressed in range of
17966 [0-360].
17967
17968 @item YDIF
17969 Display the average of sample value difference between all values of the Y
17970 plane in the current frame and corresponding values of the previous input frame.
17971 Expressed in range of [0-255].
17972
17973 @item UDIF
17974 Display the average of sample value difference between all values of the U
17975 plane in the current frame and corresponding values of the previous input frame.
17976 Expressed in range of [0-255].
17977
17978 @item VDIF
17979 Display the average of sample value difference between all values of the V
17980 plane in the current frame and corresponding values of the previous input frame.
17981 Expressed in range of [0-255].
17982
17983 @item YBITDEPTH
17984 Display bit depth of Y plane in current frame.
17985 Expressed in range of [0-16].
17986
17987 @item UBITDEPTH
17988 Display bit depth of U plane in current frame.
17989 Expressed in range of [0-16].
17990
17991 @item VBITDEPTH
17992 Display bit depth of V plane in current frame.
17993 Expressed in range of [0-16].
17994 @end table
17995
17996 The filter accepts the following options:
17997
17998 @table @option
17999 @item stat
18000 @item out
18001
18002 @option{stat} specify an additional form of image analysis.
18003 @option{out} output video with the specified type of pixel highlighted.
18004
18005 Both options accept the following values:
18006
18007 @table @samp
18008 @item tout
18009 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
18010 unlike the neighboring pixels of the same field. Examples of temporal outliers
18011 include the results of video dropouts, head clogs, or tape tracking issues.
18012
18013 @item vrep
18014 Identify @var{vertical line repetition}. Vertical line repetition includes
18015 similar rows of pixels within a frame. In born-digital video vertical line
18016 repetition is common, but this pattern is uncommon in video digitized from an
18017 analog source. When it occurs in video that results from the digitization of an
18018 analog source it can indicate concealment from a dropout compensator.
18019
18020 @item brng
18021 Identify pixels that fall outside of legal broadcast range.
18022 @end table
18023
18024 @item color, c
18025 Set the highlight color for the @option{out} option. The default color is
18026 yellow.
18027 @end table
18028
18029 @subsection Examples
18030
18031 @itemize
18032 @item
18033 Output data of various video metrics:
18034 @example
18035 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
18036 @end example
18037
18038 @item
18039 Output specific data about the minimum and maximum values of the Y plane per frame:
18040 @example
18041 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
18042 @end example
18043
18044 @item
18045 Playback video while highlighting pixels that are outside of broadcast range in red.
18046 @example
18047 ffplay example.mov -vf signalstats="out=brng:color=red"
18048 @end example
18049
18050 @item
18051 Playback video with signalstats metadata drawn over the frame.
18052 @example
18053 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
18054 @end example
18055
18056 The contents of signalstat_drawtext.txt used in the command are:
18057 @example
18058 time %@{pts:hms@}
18059 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
18060 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
18061 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
18062 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
18063
18064 @end example
18065 @end itemize
18066
18067 @anchor{signature}
18068 @section signature
18069
18070 Calculates the MPEG-7 Video Signature. The filter can handle more than one
18071 input. In this case the matching between the inputs can be calculated additionally.
18072 The filter always passes through the first input. The signature of each stream can
18073 be written into a file.
18074
18075 It accepts the following options:
18076
18077 @table @option
18078 @item detectmode
18079 Enable or disable the matching process.
18080
18081 Available values are:
18082
18083 @table @samp
18084 @item off
18085 Disable the calculation of a matching (default).
18086 @item full
18087 Calculate the matching for the whole video and output whether the whole video
18088 matches or only parts.
18089 @item fast
18090 Calculate only until a matching is found or the video ends. Should be faster in
18091 some cases.
18092 @end table
18093
18094 @item nb_inputs
18095 Set the number of inputs. The option value must be a non negative integer.
18096 Default value is 1.
18097
18098 @item filename
18099 Set the path to which the output is written. If there is more than one input,
18100 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
18101 integer), that will be replaced with the input number. If no filename is
18102 specified, no output will be written. This is the default.
18103
18104 @item format
18105 Choose the output format.
18106
18107 Available values are:
18108
18109 @table @samp
18110 @item binary
18111 Use the specified binary representation (default).
18112 @item xml
18113 Use the specified xml representation.
18114 @end table
18115
18116 @item th_d
18117 Set threshold to detect one word as similar. The option value must be an integer
18118 greater than zero. The default value is 9000.
18119
18120 @item th_dc
18121 Set threshold to detect all words as similar. The option value must be an integer
18122 greater than zero. The default value is 60000.
18123
18124 @item th_xh
18125 Set threshold to detect frames as similar. The option value must be an integer
18126 greater than zero. The default value is 116.
18127
18128 @item th_di
18129 Set the minimum length of a sequence in frames to recognize it as matching
18130 sequence. The option value must be a non negative integer value.
18131 The default value is 0.
18132
18133 @item th_it
18134 Set the minimum relation, that matching frames to all frames must have.
18135 The option value must be a double value between 0 and 1. The default value is 0.5.
18136 @end table
18137
18138 @subsection Examples
18139
18140 @itemize
18141 @item
18142 To calculate the signature of an input video and store it in signature.bin:
18143 @example
18144 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
18145 @end example
18146
18147 @item
18148 To detect whether two videos match and store the signatures in XML format in
18149 signature0.xml and signature1.xml:
18150 @example
18151 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 -
18152 @end example
18153
18154 @end itemize
18155
18156 @anchor{smartblur}
18157 @section smartblur
18158
18159 Blur the input video without impacting the outlines.
18160
18161 It accepts the following options:
18162
18163 @table @option
18164 @item luma_radius, lr
18165 Set the luma radius. The option value must be a float number in
18166 the range [0.1,5.0] that specifies the variance of the gaussian filter
18167 used to blur the image (slower if larger). Default value is 1.0.
18168
18169 @item luma_strength, ls
18170 Set the luma strength. The option value must be a float number
18171 in the range [-1.0,1.0] that configures the blurring. A value included
18172 in [0.0,1.0] will blur the image whereas a value included in
18173 [-1.0,0.0] will sharpen the image. Default value is 1.0.
18174
18175 @item luma_threshold, lt
18176 Set the luma threshold used as a coefficient to determine
18177 whether a pixel should be blurred or not. The option value must be an
18178 integer in the range [-30,30]. A value of 0 will filter all the image,
18179 a value included in [0,30] will filter flat areas and a value included
18180 in [-30,0] will filter edges. Default value is 0.
18181
18182 @item chroma_radius, cr
18183 Set the chroma radius. The option value must be a float number in
18184 the range [0.1,5.0] that specifies the variance of the gaussian filter
18185 used to blur the image (slower if larger). Default value is @option{luma_radius}.
18186
18187 @item chroma_strength, cs
18188 Set the chroma strength. The option value must be a float number
18189 in the range [-1.0,1.0] that configures the blurring. A value included
18190 in [0.0,1.0] will blur the image whereas a value included in
18191 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
18192
18193 @item chroma_threshold, ct
18194 Set the chroma threshold used as a coefficient to determine
18195 whether a pixel should be blurred or not. The option value must be an
18196 integer in the range [-30,30]. A value of 0 will filter all the image,
18197 a value included in [0,30] will filter flat areas and a value included
18198 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
18199 @end table
18200
18201 If a chroma option is not explicitly set, the corresponding luma value
18202 is set.
18203
18204 @section sobel
18205 Apply sobel operator to input video stream.
18206
18207 The filter accepts the following option:
18208
18209 @table @option
18210 @item planes
18211 Set which planes will be processed, unprocessed planes will be copied.
18212 By default value 0xf, all planes will be processed.
18213
18214 @item scale
18215 Set value which will be multiplied with filtered result.
18216
18217 @item delta
18218 Set value which will be added to filtered result.
18219 @end table
18220
18221 @subsection Commands
18222
18223 This filter supports the all above options as @ref{commands}.
18224
18225 @anchor{spp}
18226 @section spp
18227
18228 Apply a simple postprocessing filter that compresses and decompresses the image
18229 at several (or - in the case of @option{quality} level @code{6} - all) shifts
18230 and average the results.
18231
18232 The filter accepts the following options:
18233
18234 @table @option
18235 @item quality
18236 Set quality. This option defines the number of levels for averaging. It accepts
18237 an integer in the range 0-6. If set to @code{0}, the filter will have no
18238 effect. A value of @code{6} means the higher quality. For each increment of
18239 that value the speed drops by a factor of approximately 2.  Default value is
18240 @code{3}.
18241
18242 @item qp
18243 Force a constant quantization parameter. If not set, the filter will use the QP
18244 from the video stream (if available).
18245
18246 @item mode
18247 Set thresholding mode. Available modes are:
18248
18249 @table @samp
18250 @item hard
18251 Set hard thresholding (default).
18252 @item soft
18253 Set soft thresholding (better de-ringing effect, but likely blurrier).
18254 @end table
18255
18256 @item use_bframe_qp
18257 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
18258 option may cause flicker since the B-Frames have often larger QP. Default is
18259 @code{0} (not enabled).
18260 @end table
18261
18262 @subsection Commands
18263
18264 This filter supports the following commands:
18265 @table @option
18266 @item quality, level
18267 Set quality level. The value @code{max} can be used to set the maximum level,
18268 currently @code{6}.
18269 @end table
18270
18271 @anchor{sr}
18272 @section sr
18273
18274 Scale the input by applying one of the super-resolution methods based on
18275 convolutional neural networks. Supported models:
18276
18277 @itemize
18278 @item
18279 Super-Resolution Convolutional Neural Network model (SRCNN).
18280 See @url{https://arxiv.org/abs/1501.00092}.
18281
18282 @item
18283 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
18284 See @url{https://arxiv.org/abs/1609.05158}.
18285 @end itemize
18286
18287 Training scripts as well as scripts for model file (.pb) saving can be found at
18288 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
18289 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
18290
18291 Native model files (.model) can be generated from TensorFlow model
18292 files (.pb) by using tools/python/convert.py
18293
18294 The filter accepts the following options:
18295
18296 @table @option
18297 @item dnn_backend
18298 Specify which DNN backend to use for model loading and execution. This option accepts
18299 the following values:
18300
18301 @table @samp
18302 @item native
18303 Native implementation of DNN loading and execution.
18304
18305 @item tensorflow
18306 TensorFlow backend. To enable this backend you
18307 need to install the TensorFlow for C library (see
18308 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
18309 @code{--enable-libtensorflow}
18310 @end table
18311
18312 Default value is @samp{native}.
18313
18314 @item model
18315 Set path to model file specifying network architecture and its parameters.
18316 Note that different backends use different file formats. TensorFlow backend
18317 can load files for both formats, while native backend can load files for only
18318 its format.
18319
18320 @item scale_factor
18321 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
18322 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
18323 input upscaled using bicubic upscaling with proper scale factor.
18324 @end table
18325
18326 This feature can also be finished with @ref{dnn_processing} filter.
18327
18328 @section ssim
18329
18330 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
18331
18332 This filter takes in input two input videos, the first input is
18333 considered the "main" source and is passed unchanged to the
18334 output. The second input is used as a "reference" video for computing
18335 the SSIM.
18336
18337 Both video inputs must have the same resolution and pixel format for
18338 this filter to work correctly. Also it assumes that both inputs
18339 have the same number of frames, which are compared one by one.
18340
18341 The filter stores the calculated SSIM of each frame.
18342
18343 The description of the accepted parameters follows.
18344
18345 @table @option
18346 @item stats_file, f
18347 If specified the filter will use the named file to save the SSIM of
18348 each individual frame. When filename equals "-" the data is sent to
18349 standard output.
18350 @end table
18351
18352 The file printed if @var{stats_file} is selected, contains a sequence of
18353 key/value pairs of the form @var{key}:@var{value} for each compared
18354 couple of frames.
18355
18356 A description of each shown parameter follows:
18357
18358 @table @option
18359 @item n
18360 sequential number of the input frame, starting from 1
18361
18362 @item Y, U, V, R, G, B
18363 SSIM of the compared frames for the component specified by the suffix.
18364
18365 @item All
18366 SSIM of the compared frames for the whole frame.
18367
18368 @item dB
18369 Same as above but in dB representation.
18370 @end table
18371
18372 This filter also supports the @ref{framesync} options.
18373
18374 @subsection Examples
18375 @itemize
18376 @item
18377 For example:
18378 @example
18379 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
18380 [main][ref] ssim="stats_file=stats.log" [out]
18381 @end example
18382
18383 On this example the input file being processed is compared with the
18384 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
18385 is stored in @file{stats.log}.
18386
18387 @item
18388 Another example with both psnr and ssim at same time:
18389 @example
18390 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
18391 @end example
18392
18393 @item
18394 Another example with different containers:
18395 @example
18396 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 -
18397 @end example
18398 @end itemize
18399
18400 @section stereo3d
18401
18402 Convert between different stereoscopic image formats.
18403
18404 The filters accept the following options:
18405
18406 @table @option
18407 @item in
18408 Set stereoscopic image format of input.
18409
18410 Available values for input image formats are:
18411 @table @samp
18412 @item sbsl
18413 side by side parallel (left eye left, right eye right)
18414
18415 @item sbsr
18416 side by side crosseye (right eye left, left eye right)
18417
18418 @item sbs2l
18419 side by side parallel with half width resolution
18420 (left eye left, right eye right)
18421
18422 @item sbs2r
18423 side by side crosseye with half width resolution
18424 (right eye left, left eye right)
18425
18426 @item abl
18427 @item tbl
18428 above-below (left eye above, right eye below)
18429
18430 @item abr
18431 @item tbr
18432 above-below (right eye above, left eye below)
18433
18434 @item ab2l
18435 @item tb2l
18436 above-below with half height resolution
18437 (left eye above, right eye below)
18438
18439 @item ab2r
18440 @item tb2r
18441 above-below with half height resolution
18442 (right eye above, left eye below)
18443
18444 @item al
18445 alternating frames (left eye first, right eye second)
18446
18447 @item ar
18448 alternating frames (right eye first, left eye second)
18449
18450 @item irl
18451 interleaved rows (left eye has top row, right eye starts on next row)
18452
18453 @item irr
18454 interleaved rows (right eye has top row, left eye starts on next row)
18455
18456 @item icl
18457 interleaved columns, left eye first
18458
18459 @item icr
18460 interleaved columns, right eye first
18461
18462 Default value is @samp{sbsl}.
18463 @end table
18464
18465 @item out
18466 Set stereoscopic image format of output.
18467
18468 @table @samp
18469 @item sbsl
18470 side by side parallel (left eye left, right eye right)
18471
18472 @item sbsr
18473 side by side crosseye (right eye left, left eye right)
18474
18475 @item sbs2l
18476 side by side parallel with half width resolution
18477 (left eye left, right eye right)
18478
18479 @item sbs2r
18480 side by side crosseye with half width resolution
18481 (right eye left, left eye right)
18482
18483 @item abl
18484 @item tbl
18485 above-below (left eye above, right eye below)
18486
18487 @item abr
18488 @item tbr
18489 above-below (right eye above, left eye below)
18490
18491 @item ab2l
18492 @item tb2l
18493 above-below with half height resolution
18494 (left eye above, right eye below)
18495
18496 @item ab2r
18497 @item tb2r
18498 above-below with half height resolution
18499 (right eye above, left eye below)
18500
18501 @item al
18502 alternating frames (left eye first, right eye second)
18503
18504 @item ar
18505 alternating frames (right eye first, left eye second)
18506
18507 @item irl
18508 interleaved rows (left eye has top row, right eye starts on next row)
18509
18510 @item irr
18511 interleaved rows (right eye has top row, left eye starts on next row)
18512
18513 @item arbg
18514 anaglyph red/blue gray
18515 (red filter on left eye, blue filter on right eye)
18516
18517 @item argg
18518 anaglyph red/green gray
18519 (red filter on left eye, green filter on right eye)
18520
18521 @item arcg
18522 anaglyph red/cyan gray
18523 (red filter on left eye, cyan filter on right eye)
18524
18525 @item arch
18526 anaglyph red/cyan half colored
18527 (red filter on left eye, cyan filter on right eye)
18528
18529 @item arcc
18530 anaglyph red/cyan color
18531 (red filter on left eye, cyan filter on right eye)
18532
18533 @item arcd
18534 anaglyph red/cyan color optimized with the least squares projection of dubois
18535 (red filter on left eye, cyan filter on right eye)
18536
18537 @item agmg
18538 anaglyph green/magenta gray
18539 (green filter on left eye, magenta filter on right eye)
18540
18541 @item agmh
18542 anaglyph green/magenta half colored
18543 (green filter on left eye, magenta filter on right eye)
18544
18545 @item agmc
18546 anaglyph green/magenta colored
18547 (green filter on left eye, magenta filter on right eye)
18548
18549 @item agmd
18550 anaglyph green/magenta color optimized with the least squares projection of dubois
18551 (green filter on left eye, magenta filter on right eye)
18552
18553 @item aybg
18554 anaglyph yellow/blue gray
18555 (yellow filter on left eye, blue filter on right eye)
18556
18557 @item aybh
18558 anaglyph yellow/blue half colored
18559 (yellow filter on left eye, blue filter on right eye)
18560
18561 @item aybc
18562 anaglyph yellow/blue colored
18563 (yellow filter on left eye, blue filter on right eye)
18564
18565 @item aybd
18566 anaglyph yellow/blue color optimized with the least squares projection of dubois
18567 (yellow filter on left eye, blue filter on right eye)
18568
18569 @item ml
18570 mono output (left eye only)
18571
18572 @item mr
18573 mono output (right eye only)
18574
18575 @item chl
18576 checkerboard, left eye first
18577
18578 @item chr
18579 checkerboard, right eye first
18580
18581 @item icl
18582 interleaved columns, left eye first
18583
18584 @item icr
18585 interleaved columns, right eye first
18586
18587 @item hdmi
18588 HDMI frame pack
18589 @end table
18590
18591 Default value is @samp{arcd}.
18592 @end table
18593
18594 @subsection Examples
18595
18596 @itemize
18597 @item
18598 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
18599 @example
18600 stereo3d=sbsl:aybd
18601 @end example
18602
18603 @item
18604 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
18605 @example
18606 stereo3d=abl:sbsr
18607 @end example
18608 @end itemize
18609
18610 @section streamselect, astreamselect
18611 Select video or audio streams.
18612
18613 The filter accepts the following options:
18614
18615 @table @option
18616 @item inputs
18617 Set number of inputs. Default is 2.
18618
18619 @item map
18620 Set input indexes to remap to outputs.
18621 @end table
18622
18623 @subsection Commands
18624
18625 The @code{streamselect} and @code{astreamselect} filter supports the following
18626 commands:
18627
18628 @table @option
18629 @item map
18630 Set input indexes to remap to outputs.
18631 @end table
18632
18633 @subsection Examples
18634
18635 @itemize
18636 @item
18637 Select first 5 seconds 1st stream and rest of time 2nd stream:
18638 @example
18639 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
18640 @end example
18641
18642 @item
18643 Same as above, but for audio:
18644 @example
18645 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
18646 @end example
18647 @end itemize
18648
18649 @anchor{subtitles}
18650 @section subtitles
18651
18652 Draw subtitles on top of input video using the libass library.
18653
18654 To enable compilation of this filter you need to configure FFmpeg with
18655 @code{--enable-libass}. This filter also requires a build with libavcodec and
18656 libavformat to convert the passed subtitles file to ASS (Advanced Substation
18657 Alpha) subtitles format.
18658
18659 The filter accepts the following options:
18660
18661 @table @option
18662 @item filename, f
18663 Set the filename of the subtitle file to read. It must be specified.
18664
18665 @item original_size
18666 Specify the size of the original video, the video for which the ASS file
18667 was composed. For the syntax of this option, check the
18668 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18669 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
18670 correctly scale the fonts if the aspect ratio has been changed.
18671
18672 @item fontsdir
18673 Set a directory path containing fonts that can be used by the filter.
18674 These fonts will be used in addition to whatever the font provider uses.
18675
18676 @item alpha
18677 Process alpha channel, by default alpha channel is untouched.
18678
18679 @item charenc
18680 Set subtitles input character encoding. @code{subtitles} filter only. Only
18681 useful if not UTF-8.
18682
18683 @item stream_index, si
18684 Set subtitles stream index. @code{subtitles} filter only.
18685
18686 @item force_style
18687 Override default style or script info parameters of the subtitles. It accepts a
18688 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
18689 @end table
18690
18691 If the first key is not specified, it is assumed that the first value
18692 specifies the @option{filename}.
18693
18694 For example, to render the file @file{sub.srt} on top of the input
18695 video, use the command:
18696 @example
18697 subtitles=sub.srt
18698 @end example
18699
18700 which is equivalent to:
18701 @example
18702 subtitles=filename=sub.srt
18703 @end example
18704
18705 To render the default subtitles stream from file @file{video.mkv}, use:
18706 @example
18707 subtitles=video.mkv
18708 @end example
18709
18710 To render the second subtitles stream from that file, use:
18711 @example
18712 subtitles=video.mkv:si=1
18713 @end example
18714
18715 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
18716 @code{DejaVu Serif}, use:
18717 @example
18718 subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
18719 @end example
18720
18721 @section super2xsai
18722
18723 Scale the input by 2x and smooth using the Super2xSaI (Scale and
18724 Interpolate) pixel art scaling algorithm.
18725
18726 Useful for enlarging pixel art images without reducing sharpness.
18727
18728 @section swaprect
18729
18730 Swap two rectangular objects in video.
18731
18732 This filter accepts the following options:
18733
18734 @table @option
18735 @item w
18736 Set object width.
18737
18738 @item h
18739 Set object height.
18740
18741 @item x1
18742 Set 1st rect x coordinate.
18743
18744 @item y1
18745 Set 1st rect y coordinate.
18746
18747 @item x2
18748 Set 2nd rect x coordinate.
18749
18750 @item y2
18751 Set 2nd rect y coordinate.
18752
18753 All expressions are evaluated once for each frame.
18754 @end table
18755
18756 The all options are expressions containing the following constants:
18757
18758 @table @option
18759 @item w
18760 @item h
18761 The input width and height.
18762
18763 @item a
18764 same as @var{w} / @var{h}
18765
18766 @item sar
18767 input sample aspect ratio
18768
18769 @item dar
18770 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
18771
18772 @item n
18773 The number of the input frame, starting from 0.
18774
18775 @item t
18776 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
18777
18778 @item pos
18779 the position in the file of the input frame, NAN if unknown
18780 @end table
18781
18782 @section swapuv
18783 Swap U & V plane.
18784
18785 @section tblend
18786 Blend successive video frames.
18787
18788 See @ref{blend}
18789
18790 @section telecine
18791
18792 Apply telecine process to the video.
18793
18794 This filter accepts the following options:
18795
18796 @table @option
18797 @item first_field
18798 @table @samp
18799 @item top, t
18800 top field first
18801 @item bottom, b
18802 bottom field first
18803 The default value is @code{top}.
18804 @end table
18805
18806 @item pattern
18807 A string of numbers representing the pulldown pattern you wish to apply.
18808 The default value is @code{23}.
18809 @end table
18810
18811 @example
18812 Some typical patterns:
18813
18814 NTSC output (30i):
18815 27.5p: 32222
18816 24p: 23 (classic)
18817 24p: 2332 (preferred)
18818 20p: 33
18819 18p: 334
18820 16p: 3444
18821
18822 PAL output (25i):
18823 27.5p: 12222
18824 24p: 222222222223 ("Euro pulldown")
18825 16.67p: 33
18826 16p: 33333334
18827 @end example
18828
18829 @section thistogram
18830
18831 Compute and draw a color distribution histogram for the input video across time.
18832
18833 Unlike @ref{histogram} video filter which only shows histogram of single input frame
18834 at certain time, this filter shows also past histograms of number of frames defined
18835 by @code{width} option.
18836
18837 The computed histogram is a representation of the color component
18838 distribution in an image.
18839
18840 The filter accepts the following options:
18841
18842 @table @option
18843 @item width, w
18844 Set width of single color component output. Default value is @code{0}.
18845 Value of @code{0} means width will be picked from input video.
18846 This also set number of passed histograms to keep.
18847 Allowed range is [0, 8192].
18848
18849 @item display_mode, d
18850 Set display mode.
18851 It accepts the following values:
18852 @table @samp
18853 @item stack
18854 Per color component graphs are placed below each other.
18855
18856 @item parade
18857 Per color component graphs are placed side by side.
18858
18859 @item overlay
18860 Presents information identical to that in the @code{parade}, except
18861 that the graphs representing color components are superimposed directly
18862 over one another.
18863 @end table
18864 Default is @code{stack}.
18865
18866 @item levels_mode, m
18867 Set mode. Can be either @code{linear}, or @code{logarithmic}.
18868 Default is @code{linear}.
18869
18870 @item components, c
18871 Set what color components to display.
18872 Default is @code{7}.
18873
18874 @item bgopacity, b
18875 Set background opacity. Default is @code{0.9}.
18876
18877 @item envelope, e
18878 Show envelope. Default is disabled.
18879
18880 @item ecolor, ec
18881 Set envelope color. Default is @code{gold}.
18882
18883 @item slide
18884 Set slide mode.
18885
18886 Available values for slide is:
18887 @table @samp
18888 @item frame
18889 Draw new frame when right border is reached.
18890
18891 @item replace
18892 Replace old columns with new ones.
18893
18894 @item scroll
18895 Scroll from right to left.
18896
18897 @item rscroll
18898 Scroll from left to right.
18899
18900 @item picture
18901 Draw single picture.
18902 @end table
18903
18904 Default is @code{replace}.
18905 @end table
18906
18907 @section threshold
18908
18909 Apply threshold effect to video stream.
18910
18911 This filter needs four video streams to perform thresholding.
18912 First stream is stream we are filtering.
18913 Second stream is holding threshold values, third stream is holding min values,
18914 and last, fourth stream is holding max values.
18915
18916 The filter accepts the following option:
18917
18918 @table @option
18919 @item planes
18920 Set which planes will be processed, unprocessed planes will be copied.
18921 By default value 0xf, all planes will be processed.
18922 @end table
18923
18924 For example if first stream pixel's component value is less then threshold value
18925 of pixel component from 2nd threshold stream, third stream value will picked,
18926 otherwise fourth stream pixel component value will be picked.
18927
18928 Using color source filter one can perform various types of thresholding:
18929
18930 @subsection Examples
18931
18932 @itemize
18933 @item
18934 Binary threshold, using gray color as threshold:
18935 @example
18936 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
18937 @end example
18938
18939 @item
18940 Inverted binary threshold, using gray color as threshold:
18941 @example
18942 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
18943 @end example
18944
18945 @item
18946 Truncate binary threshold, using gray color as threshold:
18947 @example
18948 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
18949 @end example
18950
18951 @item
18952 Threshold to zero, using gray color as threshold:
18953 @example
18954 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
18955 @end example
18956
18957 @item
18958 Inverted threshold to zero, using gray color as threshold:
18959 @example
18960 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
18961 @end example
18962 @end itemize
18963
18964 @section thumbnail
18965 Select the most representative frame in a given sequence of consecutive frames.
18966
18967 The filter accepts the following options:
18968
18969 @table @option
18970 @item n
18971 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
18972 will pick one of them, and then handle the next batch of @var{n} frames until
18973 the end. Default is @code{100}.
18974 @end table
18975
18976 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
18977 value will result in a higher memory usage, so a high value is not recommended.
18978
18979 @subsection Examples
18980
18981 @itemize
18982 @item
18983 Extract one picture each 50 frames:
18984 @example
18985 thumbnail=50
18986 @end example
18987
18988 @item
18989 Complete example of a thumbnail creation with @command{ffmpeg}:
18990 @example
18991 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
18992 @end example
18993 @end itemize
18994
18995 @anchor{tile}
18996 @section tile
18997
18998 Tile several successive frames together.
18999
19000 The @ref{untile} filter can do the reverse.
19001
19002 The filter accepts the following options:
19003
19004 @table @option
19005
19006 @item layout
19007 Set the grid size (i.e. the number of lines and columns). For the syntax of
19008 this option, check the
19009 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19010
19011 @item nb_frames
19012 Set the maximum number of frames to render in the given area. It must be less
19013 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
19014 the area will be used.
19015
19016 @item margin
19017 Set the outer border margin in pixels.
19018
19019 @item padding
19020 Set the inner border thickness (i.e. the number of pixels between frames). For
19021 more advanced padding options (such as having different values for the edges),
19022 refer to the pad video filter.
19023
19024 @item color
19025 Specify the color of the unused area. For the syntax of this option, check the
19026 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
19027 The default value of @var{color} is "black".
19028
19029 @item overlap
19030 Set the number of frames to overlap when tiling several successive frames together.
19031 The value must be between @code{0} and @var{nb_frames - 1}.
19032
19033 @item init_padding
19034 Set the number of frames to initially be empty before displaying first output frame.
19035 This controls how soon will one get first output frame.
19036 The value must be between @code{0} and @var{nb_frames - 1}.
19037 @end table
19038
19039 @subsection Examples
19040
19041 @itemize
19042 @item
19043 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
19044 @example
19045 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
19046 @end example
19047 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
19048 duplicating each output frame to accommodate the originally detected frame
19049 rate.
19050
19051 @item
19052 Display @code{5} pictures in an area of @code{3x2} frames,
19053 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
19054 mixed flat and named options:
19055 @example
19056 tile=3x2:nb_frames=5:padding=7:margin=2
19057 @end example
19058 @end itemize
19059
19060 @section tinterlace
19061
19062 Perform various types of temporal field interlacing.
19063
19064 Frames are counted starting from 1, so the first input frame is
19065 considered odd.
19066
19067 The filter accepts the following options:
19068
19069 @table @option
19070
19071 @item mode
19072 Specify the mode of the interlacing. This option can also be specified
19073 as a value alone. See below for a list of values for this option.
19074
19075 Available values are:
19076
19077 @table @samp
19078 @item merge, 0
19079 Move odd frames into the upper field, even into the lower field,
19080 generating a double height frame at half frame rate.
19081 @example
19082  ------> time
19083 Input:
19084 Frame 1         Frame 2         Frame 3         Frame 4
19085
19086 11111           22222           33333           44444
19087 11111           22222           33333           44444
19088 11111           22222           33333           44444
19089 11111           22222           33333           44444
19090
19091 Output:
19092 11111                           33333
19093 22222                           44444
19094 11111                           33333
19095 22222                           44444
19096 11111                           33333
19097 22222                           44444
19098 11111                           33333
19099 22222                           44444
19100 @end example
19101
19102 @item drop_even, 1
19103 Only output odd frames, even frames are dropped, generating a frame with
19104 unchanged height at half frame rate.
19105
19106 @example
19107  ------> time
19108 Input:
19109 Frame 1         Frame 2         Frame 3         Frame 4
19110
19111 11111           22222           33333           44444
19112 11111           22222           33333           44444
19113 11111           22222           33333           44444
19114 11111           22222           33333           44444
19115
19116 Output:
19117 11111                           33333
19118 11111                           33333
19119 11111                           33333
19120 11111                           33333
19121 @end example
19122
19123 @item drop_odd, 2
19124 Only output even frames, odd frames are dropped, generating a frame with
19125 unchanged height at half frame rate.
19126
19127 @example
19128  ------> time
19129 Input:
19130 Frame 1         Frame 2         Frame 3         Frame 4
19131
19132 11111           22222           33333           44444
19133 11111           22222           33333           44444
19134 11111           22222           33333           44444
19135 11111           22222           33333           44444
19136
19137 Output:
19138                 22222                           44444
19139                 22222                           44444
19140                 22222                           44444
19141                 22222                           44444
19142 @end example
19143
19144 @item pad, 3
19145 Expand each frame to full height, but pad alternate lines with black,
19146 generating a frame with double height at the same input frame rate.
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           .....           33333           .....
19160 .....           22222           .....           44444
19161 11111           .....           33333           .....
19162 .....           22222           .....           44444
19163 11111           .....           33333           .....
19164 .....           22222           .....           44444
19165 11111           .....           33333           .....
19166 .....           22222           .....           44444
19167 @end example
19168
19169
19170 @item interleave_top, 4
19171 Interleave the upper field from odd frames with the lower field from
19172 even frames, generating a frame with unchanged height at half frame rate.
19173
19174 @example
19175  ------> time
19176 Input:
19177 Frame 1         Frame 2         Frame 3         Frame 4
19178
19179 11111<-         22222           33333<-         44444
19180 11111           22222<-         33333           44444<-
19181 11111<-         22222           33333<-         44444
19182 11111           22222<-         33333           44444<-
19183
19184 Output:
19185 11111                           33333
19186 22222                           44444
19187 11111                           33333
19188 22222                           44444
19189 @end example
19190
19191
19192 @item interleave_bottom, 5
19193 Interleave the lower field from odd frames with the upper field from
19194 even frames, generating a frame with unchanged height at half frame rate.
19195
19196 @example
19197  ------> time
19198 Input:
19199 Frame 1         Frame 2         Frame 3         Frame 4
19200
19201 11111           22222<-         33333           44444<-
19202 11111<-         22222           33333<-         44444
19203 11111           22222<-         33333           44444<-
19204 11111<-         22222           33333<-         44444
19205
19206 Output:
19207 22222                           44444
19208 11111                           33333
19209 22222                           44444
19210 11111                           33333
19211 @end example
19212
19213
19214 @item interlacex2, 6
19215 Double frame rate with unchanged height. Frames are inserted each
19216 containing the second temporal field from the previous input frame and
19217 the first temporal field from the next input frame. This mode relies on
19218 the top_field_first flag. Useful for interlaced video displays with no
19219 field synchronisation.
19220
19221 @example
19222  ------> time
19223 Input:
19224 Frame 1         Frame 2         Frame 3         Frame 4
19225
19226 11111           22222           33333           44444
19227  11111           22222           33333           44444
19228 11111           22222           33333           44444
19229  11111           22222           33333           44444
19230
19231 Output:
19232 11111   22222   22222   33333   33333   44444   44444
19233  11111   11111   22222   22222   33333   33333   44444
19234 11111   22222   22222   33333   33333   44444   44444
19235  11111   11111   22222   22222   33333   33333   44444
19236 @end example
19237
19238
19239 @item mergex2, 7
19240 Move odd frames into the upper field, even into the lower field,
19241 generating a double height frame at same frame rate.
19242
19243 @example
19244  ------> time
19245 Input:
19246 Frame 1         Frame 2         Frame 3         Frame 4
19247
19248 11111           22222           33333           44444
19249 11111           22222           33333           44444
19250 11111           22222           33333           44444
19251 11111           22222           33333           44444
19252
19253 Output:
19254 11111           33333           33333           55555
19255 22222           22222           44444           44444
19256 11111           33333           33333           55555
19257 22222           22222           44444           44444
19258 11111           33333           33333           55555
19259 22222           22222           44444           44444
19260 11111           33333           33333           55555
19261 22222           22222           44444           44444
19262 @end example
19263
19264 @end table
19265
19266 Numeric values are deprecated but are accepted for backward
19267 compatibility reasons.
19268
19269 Default mode is @code{merge}.
19270
19271 @item flags
19272 Specify flags influencing the filter process.
19273
19274 Available value for @var{flags} is:
19275
19276 @table @option
19277 @item low_pass_filter, vlpf
19278 Enable linear vertical low-pass filtering in the filter.
19279 Vertical low-pass filtering is required when creating an interlaced
19280 destination from a progressive source which contains high-frequency
19281 vertical detail. Filtering will reduce interlace 'twitter' and Moire
19282 patterning.
19283
19284 @item complex_filter, cvlpf
19285 Enable complex vertical low-pass filtering.
19286 This will slightly less reduce interlace 'twitter' and Moire
19287 patterning but better retain detail and subjective sharpness impression.
19288
19289 @item bypass_il
19290 Bypass already interlaced frames, only adjust the frame rate.
19291 @end table
19292
19293 Vertical low-pass filtering and bypassing already interlaced frames can only be
19294 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
19295
19296 @end table
19297
19298 @section tmedian
19299 Pick median pixels from several successive input video frames.
19300
19301 The filter accepts the following options:
19302
19303 @table @option
19304 @item radius
19305 Set radius of median filter.
19306 Default is 1. Allowed range is from 1 to 127.
19307
19308 @item planes
19309 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
19310
19311 @item percentile
19312 Set median percentile. Default value is @code{0.5}.
19313 Default value of @code{0.5} will pick always median values, while @code{0} will pick
19314 minimum values, and @code{1} maximum values.
19315 @end table
19316
19317 @section tmix
19318
19319 Mix successive video frames.
19320
19321 A description of the accepted options follows.
19322
19323 @table @option
19324 @item frames
19325 The number of successive frames to mix. If unspecified, it defaults to 3.
19326
19327 @item weights
19328 Specify weight of each input video frame.
19329 Each weight is separated by space. If number of weights is smaller than
19330 number of @var{frames} last specified weight will be used for all remaining
19331 unset weights.
19332
19333 @item scale
19334 Specify scale, if it is set it will be multiplied with sum
19335 of each weight multiplied with pixel values to give final destination
19336 pixel value. By default @var{scale} is auto scaled to sum of weights.
19337 @end table
19338
19339 @subsection Examples
19340
19341 @itemize
19342 @item
19343 Average 7 successive frames:
19344 @example
19345 tmix=frames=7:weights="1 1 1 1 1 1 1"
19346 @end example
19347
19348 @item
19349 Apply simple temporal convolution:
19350 @example
19351 tmix=frames=3:weights="-1 3 -1"
19352 @end example
19353
19354 @item
19355 Similar as above but only showing temporal differences:
19356 @example
19357 tmix=frames=3:weights="-1 2 -1":scale=1
19358 @end example
19359 @end itemize
19360
19361 @anchor{tonemap}
19362 @section tonemap
19363 Tone map colors from different dynamic ranges.
19364
19365 This filter expects data in single precision floating point, as it needs to
19366 operate on (and can output) out-of-range values. Another filter, such as
19367 @ref{zscale}, is needed to convert the resulting frame to a usable format.
19368
19369 The tonemapping algorithms implemented only work on linear light, so input
19370 data should be linearized beforehand (and possibly correctly tagged).
19371
19372 @example
19373 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
19374 @end example
19375
19376 @subsection Options
19377 The filter accepts the following options.
19378
19379 @table @option
19380 @item tonemap
19381 Set the tone map algorithm to use.
19382
19383 Possible values are:
19384 @table @var
19385 @item none
19386 Do not apply any tone map, only desaturate overbright pixels.
19387
19388 @item clip
19389 Hard-clip any out-of-range values. Use it for perfect color accuracy for
19390 in-range values, while distorting out-of-range values.
19391
19392 @item linear
19393 Stretch the entire reference gamut to a linear multiple of the display.
19394
19395 @item gamma
19396 Fit a logarithmic transfer between the tone curves.
19397
19398 @item reinhard
19399 Preserve overall image brightness with a simple curve, using nonlinear
19400 contrast, which results in flattening details and degrading color accuracy.
19401
19402 @item hable
19403 Preserve both dark and bright details better than @var{reinhard}, at the cost
19404 of slightly darkening everything. Use it when detail preservation is more
19405 important than color and brightness accuracy.
19406
19407 @item mobius
19408 Smoothly map out-of-range values, while retaining contrast and colors for
19409 in-range material as much as possible. Use it when color accuracy is more
19410 important than detail preservation.
19411 @end table
19412
19413 Default is none.
19414
19415 @item param
19416 Tune the tone mapping algorithm.
19417
19418 This affects the following algorithms:
19419 @table @var
19420 @item none
19421 Ignored.
19422
19423 @item linear
19424 Specifies the scale factor to use while stretching.
19425 Default to 1.0.
19426
19427 @item gamma
19428 Specifies the exponent of the function.
19429 Default to 1.8.
19430
19431 @item clip
19432 Specify an extra linear coefficient to multiply into the signal before clipping.
19433 Default to 1.0.
19434
19435 @item reinhard
19436 Specify the local contrast coefficient at the display peak.
19437 Default to 0.5, which means that in-gamut values will be about half as bright
19438 as when clipping.
19439
19440 @item hable
19441 Ignored.
19442
19443 @item mobius
19444 Specify the transition point from linear to mobius transform. Every value
19445 below this point is guaranteed to be mapped 1:1. The higher the value, the
19446 more accurate the result will be, at the cost of losing bright details.
19447 Default to 0.3, which due to the steep initial slope still preserves in-range
19448 colors fairly accurately.
19449 @end table
19450
19451 @item desat
19452 Apply desaturation for highlights that exceed this level of brightness. The
19453 higher the parameter, the more color information will be preserved. This
19454 setting helps prevent unnaturally blown-out colors for super-highlights, by
19455 (smoothly) turning into white instead. This makes images feel more natural,
19456 at the cost of reducing information about out-of-range colors.
19457
19458 The default of 2.0 is somewhat conservative and will mostly just apply to
19459 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
19460
19461 This option works only if the input frame has a supported color tag.
19462
19463 @item peak
19464 Override signal/nominal/reference peak with this value. Useful when the
19465 embedded peak information in display metadata is not reliable or when tone
19466 mapping from a lower range to a higher range.
19467 @end table
19468
19469 @section tpad
19470
19471 Temporarily pad video frames.
19472
19473 The filter accepts the following options:
19474
19475 @table @option
19476 @item start
19477 Specify number of delay frames before input video stream. Default is 0.
19478
19479 @item stop
19480 Specify number of padding frames after input video stream.
19481 Set to -1 to pad indefinitely. Default is 0.
19482
19483 @item start_mode
19484 Set kind of frames added to beginning of stream.
19485 Can be either @var{add} or @var{clone}.
19486 With @var{add} frames of solid-color are added.
19487 With @var{clone} frames are clones of first frame.
19488 Default is @var{add}.
19489
19490 @item stop_mode
19491 Set kind of frames added to end of stream.
19492 Can be either @var{add} or @var{clone}.
19493 With @var{add} frames of solid-color are added.
19494 With @var{clone} frames are clones of last frame.
19495 Default is @var{add}.
19496
19497 @item start_duration, stop_duration
19498 Specify the duration of the start/stop delay. See
19499 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19500 for the accepted syntax.
19501 These options override @var{start} and @var{stop}. Default is 0.
19502
19503 @item color
19504 Specify the color of the padded area. For the syntax of this option,
19505 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
19506 manual,ffmpeg-utils}.
19507
19508 The default value of @var{color} is "black".
19509 @end table
19510
19511 @anchor{transpose}
19512 @section transpose
19513
19514 Transpose rows with columns in the input video and optionally flip it.
19515
19516 It accepts the following parameters:
19517
19518 @table @option
19519
19520 @item dir
19521 Specify the transposition direction.
19522
19523 Can assume the following values:
19524 @table @samp
19525 @item 0, 4, cclock_flip
19526 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
19527 @example
19528 L.R     L.l
19529 . . ->  . .
19530 l.r     R.r
19531 @end example
19532
19533 @item 1, 5, clock
19534 Rotate by 90 degrees clockwise, that is:
19535 @example
19536 L.R     l.L
19537 . . ->  . .
19538 l.r     r.R
19539 @end example
19540
19541 @item 2, 6, cclock
19542 Rotate by 90 degrees counterclockwise, that is:
19543 @example
19544 L.R     R.r
19545 . . ->  . .
19546 l.r     L.l
19547 @end example
19548
19549 @item 3, 7, clock_flip
19550 Rotate by 90 degrees clockwise and vertically flip, that is:
19551 @example
19552 L.R     r.R
19553 . . ->  . .
19554 l.r     l.L
19555 @end example
19556 @end table
19557
19558 For values between 4-7, the transposition is only done if the input
19559 video geometry is portrait and not landscape. These values are
19560 deprecated, the @code{passthrough} option should be used instead.
19561
19562 Numerical values are deprecated, and should be dropped in favor of
19563 symbolic constants.
19564
19565 @item passthrough
19566 Do not apply the transposition if the input geometry matches the one
19567 specified by the specified value. It accepts the following values:
19568 @table @samp
19569 @item none
19570 Always apply transposition.
19571 @item portrait
19572 Preserve portrait geometry (when @var{height} >= @var{width}).
19573 @item landscape
19574 Preserve landscape geometry (when @var{width} >= @var{height}).
19575 @end table
19576
19577 Default value is @code{none}.
19578 @end table
19579
19580 For example to rotate by 90 degrees clockwise and preserve portrait
19581 layout:
19582 @example
19583 transpose=dir=1:passthrough=portrait
19584 @end example
19585
19586 The command above can also be specified as:
19587 @example
19588 transpose=1:portrait
19589 @end example
19590
19591 @section transpose_npp
19592
19593 Transpose rows with columns in the input video and optionally flip it.
19594 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
19595
19596 It accepts the following parameters:
19597
19598 @table @option
19599
19600 @item dir
19601 Specify the transposition direction.
19602
19603 Can assume the following values:
19604 @table @samp
19605 @item cclock_flip
19606 Rotate by 90 degrees counterclockwise and vertically flip. (default)
19607
19608 @item clock
19609 Rotate by 90 degrees clockwise.
19610
19611 @item cclock
19612 Rotate by 90 degrees counterclockwise.
19613
19614 @item clock_flip
19615 Rotate by 90 degrees clockwise and vertically flip.
19616 @end table
19617
19618 @item passthrough
19619 Do not apply the transposition if the input geometry matches the one
19620 specified by the specified value. It accepts the following values:
19621 @table @samp
19622 @item none
19623 Always apply transposition. (default)
19624 @item portrait
19625 Preserve portrait geometry (when @var{height} >= @var{width}).
19626 @item landscape
19627 Preserve landscape geometry (when @var{width} >= @var{height}).
19628 @end table
19629
19630 @end table
19631
19632 @section trim
19633 Trim the input so that the output contains one continuous subpart of the input.
19634
19635 It accepts the following parameters:
19636 @table @option
19637 @item start
19638 Specify the time of the start of the kept section, i.e. the frame with the
19639 timestamp @var{start} will be the first frame in the output.
19640
19641 @item end
19642 Specify the time of the first frame that will be dropped, i.e. the frame
19643 immediately preceding the one with the timestamp @var{end} will be the last
19644 frame in the output.
19645
19646 @item start_pts
19647 This is the same as @var{start}, except this option sets the start timestamp
19648 in timebase units instead of seconds.
19649
19650 @item end_pts
19651 This is the same as @var{end}, except this option sets the end timestamp
19652 in timebase units instead of seconds.
19653
19654 @item duration
19655 The maximum duration of the output in seconds.
19656
19657 @item start_frame
19658 The number of the first frame that should be passed to the output.
19659
19660 @item end_frame
19661 The number of the first frame that should be dropped.
19662 @end table
19663
19664 @option{start}, @option{end}, and @option{duration} are expressed as time
19665 duration specifications; see
19666 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19667 for the accepted syntax.
19668
19669 Note that the first two sets of the start/end options and the @option{duration}
19670 option look at the frame timestamp, while the _frame variants simply count the
19671 frames that pass through the filter. Also note that this filter does not modify
19672 the timestamps. If you wish for the output timestamps to start at zero, insert a
19673 setpts filter after the trim filter.
19674
19675 If multiple start or end options are set, this filter tries to be greedy and
19676 keep all the frames that match at least one of the specified constraints. To keep
19677 only the part that matches all the constraints at once, chain multiple trim
19678 filters.
19679
19680 The defaults are such that all the input is kept. So it is possible to set e.g.
19681 just the end values to keep everything before the specified time.
19682
19683 Examples:
19684 @itemize
19685 @item
19686 Drop everything except the second minute of input:
19687 @example
19688 ffmpeg -i INPUT -vf trim=60:120
19689 @end example
19690
19691 @item
19692 Keep only the first second:
19693 @example
19694 ffmpeg -i INPUT -vf trim=duration=1
19695 @end example
19696
19697 @end itemize
19698
19699 @section unpremultiply
19700 Apply alpha unpremultiply effect to input video stream using first plane
19701 of second stream as alpha.
19702
19703 Both streams must have same dimensions and same pixel format.
19704
19705 The filter accepts the following option:
19706
19707 @table @option
19708 @item planes
19709 Set which planes will be processed, unprocessed planes will be copied.
19710 By default value 0xf, all planes will be processed.
19711
19712 If the format has 1 or 2 components, then luma is bit 0.
19713 If the format has 3 or 4 components:
19714 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
19715 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
19716 If present, the alpha channel is always the last bit.
19717
19718 @item inplace
19719 Do not require 2nd input for processing, instead use alpha plane from input stream.
19720 @end table
19721
19722 @anchor{unsharp}
19723 @section unsharp
19724
19725 Sharpen or blur the input video.
19726
19727 It accepts the following parameters:
19728
19729 @table @option
19730 @item luma_msize_x, lx
19731 Set the luma matrix horizontal size. It must be an odd integer between
19732 3 and 23. The default value is 5.
19733
19734 @item luma_msize_y, ly
19735 Set the luma matrix vertical size. It must be an odd integer between 3
19736 and 23. The default value is 5.
19737
19738 @item luma_amount, la
19739 Set the luma effect strength. It must be a floating point number, reasonable
19740 values lay between -1.5 and 1.5.
19741
19742 Negative values will blur the input video, while positive values will
19743 sharpen it, a value of zero will disable the effect.
19744
19745 Default value is 1.0.
19746
19747 @item chroma_msize_x, cx
19748 Set the chroma matrix horizontal size. It must be an odd integer
19749 between 3 and 23. The default value is 5.
19750
19751 @item chroma_msize_y, cy
19752 Set the chroma matrix vertical size. It must be an odd integer
19753 between 3 and 23. The default value is 5.
19754
19755 @item chroma_amount, ca
19756 Set the chroma effect strength. It must be a floating point number, reasonable
19757 values lay between -1.5 and 1.5.
19758
19759 Negative values will blur the input video, while positive values will
19760 sharpen it, a value of zero will disable the effect.
19761
19762 Default value is 0.0.
19763
19764 @end table
19765
19766 All parameters are optional and default to the equivalent of the
19767 string '5:5:1.0:5:5:0.0'.
19768
19769 @subsection Examples
19770
19771 @itemize
19772 @item
19773 Apply strong luma sharpen effect:
19774 @example
19775 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
19776 @end example
19777
19778 @item
19779 Apply a strong blur of both luma and chroma parameters:
19780 @example
19781 unsharp=7:7:-2:7:7:-2
19782 @end example
19783 @end itemize
19784
19785 @anchor{untile}
19786 @section untile
19787
19788 Decompose a video made of tiled images into the individual images.
19789
19790 The frame rate of the output video is the frame rate of the input video
19791 multiplied by the number of tiles.
19792
19793 This filter does the reverse of @ref{tile}.
19794
19795 The filter accepts the following options:
19796
19797 @table @option
19798
19799 @item layout
19800 Set the grid size (i.e. the number of lines and columns). For the syntax of
19801 this option, check the
19802 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19803 @end table
19804
19805 @subsection Examples
19806
19807 @itemize
19808 @item
19809 Produce a 1-second video from a still image file made of 25 frames stacked
19810 vertically, like an analogic film reel:
19811 @example
19812 ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
19813 @end example
19814 @end itemize
19815
19816 @section uspp
19817
19818 Apply ultra slow/simple postprocessing filter that compresses and decompresses
19819 the image at several (or - in the case of @option{quality} level @code{8} - all)
19820 shifts and average the results.
19821
19822 The way this differs from the behavior of spp is that uspp actually encodes &
19823 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
19824 DCT similar to MJPEG.
19825
19826 The filter accepts the following options:
19827
19828 @table @option
19829 @item quality
19830 Set quality. This option defines the number of levels for averaging. It accepts
19831 an integer in the range 0-8. If set to @code{0}, the filter will have no
19832 effect. A value of @code{8} means the higher quality. For each increment of
19833 that value the speed drops by a factor of approximately 2.  Default value is
19834 @code{3}.
19835
19836 @item qp
19837 Force a constant quantization parameter. If not set, the filter will use the QP
19838 from the video stream (if available).
19839 @end table
19840
19841 @section v360
19842
19843 Convert 360 videos between various formats.
19844
19845 The filter accepts the following options:
19846
19847 @table @option
19848
19849 @item input
19850 @item output
19851 Set format of the input/output video.
19852
19853 Available formats:
19854
19855 @table @samp
19856
19857 @item e
19858 @item equirect
19859 Equirectangular projection.
19860
19861 @item c3x2
19862 @item c6x1
19863 @item c1x6
19864 Cubemap with 3x2/6x1/1x6 layout.
19865
19866 Format specific options:
19867
19868 @table @option
19869 @item in_pad
19870 @item out_pad
19871 Set padding proportion for the input/output cubemap. Values in decimals.
19872
19873 Example values:
19874 @table @samp
19875 @item 0
19876 No padding.
19877 @item 0.01
19878 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)
19879 @end table
19880
19881 Default value is @b{@samp{0}}.
19882 Maximum value is @b{@samp{0.1}}.
19883
19884 @item fin_pad
19885 @item fout_pad
19886 Set fixed padding for the input/output cubemap. Values in pixels.
19887
19888 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
19889
19890 @item in_forder
19891 @item out_forder
19892 Set order of faces for the input/output cubemap. Choose one direction for each position.
19893
19894 Designation of directions:
19895 @table @samp
19896 @item r
19897 right
19898 @item l
19899 left
19900 @item u
19901 up
19902 @item d
19903 down
19904 @item f
19905 forward
19906 @item b
19907 back
19908 @end table
19909
19910 Default value is @b{@samp{rludfb}}.
19911
19912 @item in_frot
19913 @item out_frot
19914 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
19915
19916 Designation of angles:
19917 @table @samp
19918 @item 0
19919 0 degrees clockwise
19920 @item 1
19921 90 degrees clockwise
19922 @item 2
19923 180 degrees clockwise
19924 @item 3
19925 270 degrees clockwise
19926 @end table
19927
19928 Default value is @b{@samp{000000}}.
19929 @end table
19930
19931 @item eac
19932 Equi-Angular Cubemap.
19933
19934 @item flat
19935 @item gnomonic
19936 @item rectilinear
19937 Regular video.
19938
19939 Format specific options:
19940 @table @option
19941 @item h_fov
19942 @item v_fov
19943 @item d_fov
19944 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19945
19946 If diagonal field of view is set it overrides horizontal and vertical field of view.
19947
19948 @item ih_fov
19949 @item iv_fov
19950 @item id_fov
19951 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19952
19953 If diagonal field of view is set it overrides horizontal and vertical field of view.
19954 @end table
19955
19956 @item dfisheye
19957 Dual fisheye.
19958
19959 Format specific options:
19960 @table @option
19961 @item h_fov
19962 @item v_fov
19963 @item d_fov
19964 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19965
19966 If diagonal field of view is set it overrides horizontal and vertical field of view.
19967
19968 @item ih_fov
19969 @item iv_fov
19970 @item id_fov
19971 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19972
19973 If diagonal field of view is set it overrides horizontal and vertical field of view.
19974 @end table
19975
19976 @item barrel
19977 @item fb
19978 @item barrelsplit
19979 Facebook's 360 formats.
19980
19981 @item sg
19982 Stereographic format.
19983
19984 Format specific options:
19985 @table @option
19986 @item h_fov
19987 @item v_fov
19988 @item d_fov
19989 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19990
19991 If diagonal field of view is set it overrides horizontal and vertical field of view.
19992
19993 @item ih_fov
19994 @item iv_fov
19995 @item id_fov
19996 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19997
19998 If diagonal field of view is set it overrides horizontal and vertical field of view.
19999 @end table
20000
20001 @item mercator
20002 Mercator format.
20003
20004 @item ball
20005 Ball format, gives significant distortion toward the back.
20006
20007 @item hammer
20008 Hammer-Aitoff map projection format.
20009
20010 @item sinusoidal
20011 Sinusoidal map projection format.
20012
20013 @item fisheye
20014 Fisheye projection.
20015
20016 Format specific options:
20017 @table @option
20018 @item h_fov
20019 @item v_fov
20020 @item d_fov
20021 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20022
20023 If diagonal field of view is set it overrides horizontal and vertical field of view.
20024
20025 @item ih_fov
20026 @item iv_fov
20027 @item id_fov
20028 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20029
20030 If diagonal field of view is set it overrides horizontal and vertical field of view.
20031 @end table
20032
20033 @item pannini
20034 Pannini projection.
20035
20036 Format specific options:
20037 @table @option
20038 @item h_fov
20039 Set output pannini parameter.
20040
20041 @item ih_fov
20042 Set input pannini parameter.
20043 @end table
20044
20045 @item cylindrical
20046 Cylindrical projection.
20047
20048 Format specific options:
20049 @table @option
20050 @item h_fov
20051 @item v_fov
20052 @item d_fov
20053 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20054
20055 If diagonal field of view is set it overrides horizontal and vertical field of view.
20056
20057 @item ih_fov
20058 @item iv_fov
20059 @item id_fov
20060 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20061
20062 If diagonal field of view is set it overrides horizontal and vertical field of view.
20063 @end table
20064
20065 @item perspective
20066 Perspective projection. @i{(output only)}
20067
20068 Format specific options:
20069 @table @option
20070 @item v_fov
20071 Set perspective parameter.
20072 @end table
20073
20074 @item tetrahedron
20075 Tetrahedron projection.
20076
20077 @item tsp
20078 Truncated square pyramid projection.
20079
20080 @item he
20081 @item hequirect
20082 Half equirectangular projection.
20083
20084 @item equisolid
20085 Equisolid format.
20086
20087 Format specific options:
20088 @table @option
20089 @item h_fov
20090 @item v_fov
20091 @item d_fov
20092 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20093
20094 If diagonal field of view is set it overrides horizontal and vertical field of view.
20095
20096 @item ih_fov
20097 @item iv_fov
20098 @item id_fov
20099 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20100
20101 If diagonal field of view is set it overrides horizontal and vertical field of view.
20102 @end table
20103
20104 @item og
20105 Orthographic format.
20106
20107 Format specific options:
20108 @table @option
20109 @item h_fov
20110 @item v_fov
20111 @item d_fov
20112 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20113
20114 If diagonal field of view is set it overrides horizontal and vertical field of view.
20115
20116 @item ih_fov
20117 @item iv_fov
20118 @item id_fov
20119 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20120
20121 If diagonal field of view is set it overrides horizontal and vertical field of view.
20122 @end table
20123
20124 @item octahedron
20125 Octahedron projection.
20126 @end table
20127
20128 @item interp
20129 Set interpolation method.@*
20130 @i{Note: more complex interpolation methods require much more memory to run.}
20131
20132 Available methods:
20133
20134 @table @samp
20135 @item near
20136 @item nearest
20137 Nearest neighbour.
20138 @item line
20139 @item linear
20140 Bilinear interpolation.
20141 @item lagrange9
20142 Lagrange9 interpolation.
20143 @item cube
20144 @item cubic
20145 Bicubic interpolation.
20146 @item lanc
20147 @item lanczos
20148 Lanczos interpolation.
20149 @item sp16
20150 @item spline16
20151 Spline16 interpolation.
20152 @item gauss
20153 @item gaussian
20154 Gaussian interpolation.
20155 @item mitchell
20156 Mitchell interpolation.
20157 @end table
20158
20159 Default value is @b{@samp{line}}.
20160
20161 @item w
20162 @item h
20163 Set the output video resolution.
20164
20165 Default resolution depends on formats.
20166
20167 @item in_stereo
20168 @item out_stereo
20169 Set the input/output stereo format.
20170
20171 @table @samp
20172 @item 2d
20173 2D mono
20174 @item sbs
20175 Side by side
20176 @item tb
20177 Top bottom
20178 @end table
20179
20180 Default value is @b{@samp{2d}} for input and output format.
20181
20182 @item yaw
20183 @item pitch
20184 @item roll
20185 Set rotation for the output video. Values in degrees.
20186
20187 @item rorder
20188 Set rotation order for the output video. Choose one item for each position.
20189
20190 @table @samp
20191 @item y, Y
20192 yaw
20193 @item p, P
20194 pitch
20195 @item r, R
20196 roll
20197 @end table
20198
20199 Default value is @b{@samp{ypr}}.
20200
20201 @item h_flip
20202 @item v_flip
20203 @item d_flip
20204 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
20205
20206 @item ih_flip
20207 @item iv_flip
20208 Set if input video is flipped horizontally/vertically. Boolean values.
20209
20210 @item in_trans
20211 Set if input video is transposed. Boolean value, by default disabled.
20212
20213 @item out_trans
20214 Set if output video needs to be transposed. Boolean value, by default disabled.
20215
20216 @item alpha_mask
20217 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
20218 @end table
20219
20220 @subsection Examples
20221
20222 @itemize
20223 @item
20224 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
20225 @example
20226 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
20227 @end example
20228 @item
20229 Extract back view of Equi-Angular Cubemap:
20230 @example
20231 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
20232 @end example
20233 @item
20234 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
20235 @example
20236 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
20237 @end example
20238 @end itemize
20239
20240 @subsection Commands
20241
20242 This filter supports subset of above options as @ref{commands}.
20243
20244 @section vaguedenoiser
20245
20246 Apply a wavelet based denoiser.
20247
20248 It transforms each frame from the video input into the wavelet domain,
20249 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
20250 the obtained coefficients. It does an inverse wavelet transform after.
20251 Due to wavelet properties, it should give a nice smoothed result, and
20252 reduced noise, without blurring picture features.
20253
20254 This filter accepts the following options:
20255
20256 @table @option
20257 @item threshold
20258 The filtering strength. The higher, the more filtered the video will be.
20259 Hard thresholding can use a higher threshold than soft thresholding
20260 before the video looks overfiltered. Default value is 2.
20261
20262 @item method
20263 The filtering method the filter will use.
20264
20265 It accepts the following values:
20266 @table @samp
20267 @item hard
20268 All values under the threshold will be zeroed.
20269
20270 @item soft
20271 All values under the threshold will be zeroed. All values above will be
20272 reduced by the threshold.
20273
20274 @item garrote
20275 Scales or nullifies coefficients - intermediary between (more) soft and
20276 (less) hard thresholding.
20277 @end table
20278
20279 Default is garrote.
20280
20281 @item nsteps
20282 Number of times, the wavelet will decompose the picture. Picture can't
20283 be decomposed beyond a particular point (typically, 8 for a 640x480
20284 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
20285
20286 @item percent
20287 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
20288
20289 @item planes
20290 A list of the planes to process. By default all planes are processed.
20291
20292 @item type
20293 The threshold type the filter will use.
20294
20295 It accepts the following values:
20296 @table @samp
20297 @item universal
20298 Threshold used is same for all decompositions.
20299
20300 @item bayes
20301 Threshold used depends also on each decomposition coefficients.
20302 @end table
20303
20304 Default is universal.
20305 @end table
20306
20307 @section vectorscope
20308
20309 Display 2 color component values in the two dimensional graph (which is called
20310 a vectorscope).
20311
20312 This filter accepts the following options:
20313
20314 @table @option
20315 @item mode, m
20316 Set vectorscope mode.
20317
20318 It accepts the following values:
20319 @table @samp
20320 @item gray
20321 @item tint
20322 Gray values are displayed on graph, higher brightness means more pixels have
20323 same component color value on location in graph. This is the default mode.
20324
20325 @item color
20326 Gray values are displayed on graph. Surrounding pixels values which are not
20327 present in video frame are drawn in gradient of 2 color components which are
20328 set by option @code{x} and @code{y}. The 3rd color component is static.
20329
20330 @item color2
20331 Actual color components values present in video frame are displayed on graph.
20332
20333 @item color3
20334 Similar as color2 but higher frequency of same values @code{x} and @code{y}
20335 on graph increases value of another color component, which is luminance by
20336 default values of @code{x} and @code{y}.
20337
20338 @item color4
20339 Actual colors present in video frame are displayed on graph. If two different
20340 colors map to same position on graph then color with higher value of component
20341 not present in graph is picked.
20342
20343 @item color5
20344 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
20345 component picked from radial gradient.
20346 @end table
20347
20348 @item x
20349 Set which color component will be represented on X-axis. Default is @code{1}.
20350
20351 @item y
20352 Set which color component will be represented on Y-axis. Default is @code{2}.
20353
20354 @item intensity, i
20355 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
20356 of color component which represents frequency of (X, Y) location in graph.
20357
20358 @item envelope, e
20359 @table @samp
20360 @item none
20361 No envelope, this is default.
20362
20363 @item instant
20364 Instant envelope, even darkest single pixel will be clearly highlighted.
20365
20366 @item peak
20367 Hold maximum and minimum values presented in graph over time. This way you
20368 can still spot out of range values without constantly looking at vectorscope.
20369
20370 @item peak+instant
20371 Peak and instant envelope combined together.
20372 @end table
20373
20374 @item graticule, g
20375 Set what kind of graticule to draw.
20376 @table @samp
20377 @item none
20378 @item green
20379 @item color
20380 @item invert
20381 @end table
20382
20383 @item opacity, o
20384 Set graticule opacity.
20385
20386 @item flags, f
20387 Set graticule flags.
20388
20389 @table @samp
20390 @item white
20391 Draw graticule for white point.
20392
20393 @item black
20394 Draw graticule for black point.
20395
20396 @item name
20397 Draw color points short names.
20398 @end table
20399
20400 @item bgopacity, b
20401 Set background opacity.
20402
20403 @item lthreshold, l
20404 Set low threshold for color component not represented on X or Y axis.
20405 Values lower than this value will be ignored. Default is 0.
20406 Note this value is multiplied with actual max possible value one pixel component
20407 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
20408 is 0.1 * 255 = 25.
20409
20410 @item hthreshold, h
20411 Set high threshold for color component not represented on X or Y axis.
20412 Values higher than this value will be ignored. Default is 1.
20413 Note this value is multiplied with actual max possible value one pixel component
20414 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
20415 is 0.9 * 255 = 230.
20416
20417 @item colorspace, c
20418 Set what kind of colorspace to use when drawing graticule.
20419 @table @samp
20420 @item auto
20421 @item 601
20422 @item 709
20423 @end table
20424 Default is auto.
20425
20426 @item tint0, t0
20427 @item tint1, t1
20428 Set color tint for gray/tint vectorscope mode. By default both options are zero.
20429 This means no tint, and output will remain gray.
20430 @end table
20431
20432 @anchor{vidstabdetect}
20433 @section vidstabdetect
20434
20435 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
20436 @ref{vidstabtransform} for pass 2.
20437
20438 This filter generates a file with relative translation and rotation
20439 transform information about subsequent frames, which is then used by
20440 the @ref{vidstabtransform} filter.
20441
20442 To enable compilation of this filter you need to configure FFmpeg with
20443 @code{--enable-libvidstab}.
20444
20445 This filter accepts the following options:
20446
20447 @table @option
20448 @item result
20449 Set the path to the file used to write the transforms information.
20450 Default value is @file{transforms.trf}.
20451
20452 @item shakiness
20453 Set how shaky the video is and how quick the camera is. It accepts an
20454 integer in the range 1-10, a value of 1 means little shakiness, a
20455 value of 10 means strong shakiness. Default value is 5.
20456
20457 @item accuracy
20458 Set the accuracy of the detection process. It must be a value in the
20459 range 1-15. A value of 1 means low accuracy, a value of 15 means high
20460 accuracy. Default value is 15.
20461
20462 @item stepsize
20463 Set stepsize of the search process. The region around minimum is
20464 scanned with 1 pixel resolution. Default value is 6.
20465
20466 @item mincontrast
20467 Set minimum contrast. Below this value a local measurement field is
20468 discarded. Must be a floating point value in the range 0-1. Default
20469 value is 0.3.
20470
20471 @item tripod
20472 Set reference frame number for tripod mode.
20473
20474 If enabled, the motion of the frames is compared to a reference frame
20475 in the filtered stream, identified by the specified number. The idea
20476 is to compensate all movements in a more-or-less static scene and keep
20477 the camera view absolutely still.
20478
20479 If set to 0, it is disabled. The frames are counted starting from 1.
20480
20481 @item show
20482 Show fields and transforms in the resulting frames. It accepts an
20483 integer in the range 0-2. Default value is 0, which disables any
20484 visualization.
20485 @end table
20486
20487 @subsection Examples
20488
20489 @itemize
20490 @item
20491 Use default values:
20492 @example
20493 vidstabdetect
20494 @end example
20495
20496 @item
20497 Analyze strongly shaky movie and put the results in file
20498 @file{mytransforms.trf}:
20499 @example
20500 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
20501 @end example
20502
20503 @item
20504 Visualize the result of internal transformations in the resulting
20505 video:
20506 @example
20507 vidstabdetect=show=1
20508 @end example
20509
20510 @item
20511 Analyze a video with medium shakiness using @command{ffmpeg}:
20512 @example
20513 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
20514 @end example
20515 @end itemize
20516
20517 @anchor{vidstabtransform}
20518 @section vidstabtransform
20519
20520 Video stabilization/deshaking: pass 2 of 2,
20521 see @ref{vidstabdetect} for pass 1.
20522
20523 Read a file with transform information for each frame and
20524 apply/compensate them. Together with the @ref{vidstabdetect}
20525 filter this can be used to deshake videos. See also
20526 @url{http://public.hronopik.de/vid.stab}. It is important to also use
20527 the @ref{unsharp} filter, see below.
20528
20529 To enable compilation of this filter you need to configure FFmpeg with
20530 @code{--enable-libvidstab}.
20531
20532 @subsection Options
20533
20534 @table @option
20535 @item input
20536 Set path to the file used to read the transforms. Default value is
20537 @file{transforms.trf}.
20538
20539 @item smoothing
20540 Set the number of frames (value*2 + 1) used for lowpass filtering the
20541 camera movements. Default value is 10.
20542
20543 For example a number of 10 means that 21 frames are used (10 in the
20544 past and 10 in the future) to smoothen the motion in the video. A
20545 larger value leads to a smoother video, but limits the acceleration of
20546 the camera (pan/tilt movements). 0 is a special case where a static
20547 camera is simulated.
20548
20549 @item optalgo
20550 Set the camera path optimization algorithm.
20551
20552 Accepted values are:
20553 @table @samp
20554 @item gauss
20555 gaussian kernel low-pass filter on camera motion (default)
20556 @item avg
20557 averaging on transformations
20558 @end table
20559
20560 @item maxshift
20561 Set maximal number of pixels to translate frames. Default value is -1,
20562 meaning no limit.
20563
20564 @item maxangle
20565 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
20566 value is -1, meaning no limit.
20567
20568 @item crop
20569 Specify how to deal with borders that may be visible due to movement
20570 compensation.
20571
20572 Available values are:
20573 @table @samp
20574 @item keep
20575 keep image information from previous frame (default)
20576 @item black
20577 fill the border black
20578 @end table
20579
20580 @item invert
20581 Invert transforms if set to 1. Default value is 0.
20582
20583 @item relative
20584 Consider transforms as relative to previous frame if set to 1,
20585 absolute if set to 0. Default value is 0.
20586
20587 @item zoom
20588 Set percentage to zoom. A positive value will result in a zoom-in
20589 effect, a negative value in a zoom-out effect. Default value is 0 (no
20590 zoom).
20591
20592 @item optzoom
20593 Set optimal zooming to avoid borders.
20594
20595 Accepted values are:
20596 @table @samp
20597 @item 0
20598 disabled
20599 @item 1
20600 optimal static zoom value is determined (only very strong movements
20601 will lead to visible borders) (default)
20602 @item 2
20603 optimal adaptive zoom value is determined (no borders will be
20604 visible), see @option{zoomspeed}
20605 @end table
20606
20607 Note that the value given at zoom is added to the one calculated here.
20608
20609 @item zoomspeed
20610 Set percent to zoom maximally each frame (enabled when
20611 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
20612 0.25.
20613
20614 @item interpol
20615 Specify type of interpolation.
20616
20617 Available values are:
20618 @table @samp
20619 @item no
20620 no interpolation
20621 @item linear
20622 linear only horizontal
20623 @item bilinear
20624 linear in both directions (default)
20625 @item bicubic
20626 cubic in both directions (slow)
20627 @end table
20628
20629 @item tripod
20630 Enable virtual tripod mode if set to 1, which is equivalent to
20631 @code{relative=0:smoothing=0}. Default value is 0.
20632
20633 Use also @code{tripod} option of @ref{vidstabdetect}.
20634
20635 @item debug
20636 Increase log verbosity if set to 1. Also the detected global motions
20637 are written to the temporary file @file{global_motions.trf}. Default
20638 value is 0.
20639 @end table
20640
20641 @subsection Examples
20642
20643 @itemize
20644 @item
20645 Use @command{ffmpeg} for a typical stabilization with default values:
20646 @example
20647 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
20648 @end example
20649
20650 Note the use of the @ref{unsharp} filter which is always recommended.
20651
20652 @item
20653 Zoom in a bit more and load transform data from a given file:
20654 @example
20655 vidstabtransform=zoom=5:input="mytransforms.trf"
20656 @end example
20657
20658 @item
20659 Smoothen the video even more:
20660 @example
20661 vidstabtransform=smoothing=30
20662 @end example
20663 @end itemize
20664
20665 @section vflip
20666
20667 Flip the input video vertically.
20668
20669 For example, to vertically flip a video with @command{ffmpeg}:
20670 @example
20671 ffmpeg -i in.avi -vf "vflip" out.avi
20672 @end example
20673
20674 @section vfrdet
20675
20676 Detect variable frame rate video.
20677
20678 This filter tries to detect if the input is variable or constant frame rate.
20679
20680 At end it will output number of frames detected as having variable delta pts,
20681 and ones with constant delta pts.
20682 If there was frames with variable delta, than it will also show min, max and
20683 average delta encountered.
20684
20685 @section vibrance
20686
20687 Boost or alter saturation.
20688
20689 The filter accepts the following options:
20690 @table @option
20691 @item intensity
20692 Set strength of boost if positive value or strength of alter if negative value.
20693 Default is 0. Allowed range is from -2 to 2.
20694
20695 @item rbal
20696 Set the red balance. Default is 1. Allowed range is from -10 to 10.
20697
20698 @item gbal
20699 Set the green balance. Default is 1. Allowed range is from -10 to 10.
20700
20701 @item bbal
20702 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
20703
20704 @item rlum
20705 Set the red luma coefficient.
20706
20707 @item glum
20708 Set the green luma coefficient.
20709
20710 @item blum
20711 Set the blue luma coefficient.
20712
20713 @item alternate
20714 If @code{intensity} is negative and this is set to 1, colors will change,
20715 otherwise colors will be less saturated, more towards gray.
20716 @end table
20717
20718 @subsection Commands
20719
20720 This filter supports the all above options as @ref{commands}.
20721
20722 @anchor{vignette}
20723 @section vignette
20724
20725 Make or reverse a natural vignetting effect.
20726
20727 The filter accepts the following options:
20728
20729 @table @option
20730 @item angle, a
20731 Set lens angle expression as a number of radians.
20732
20733 The value is clipped in the @code{[0,PI/2]} range.
20734
20735 Default value: @code{"PI/5"}
20736
20737 @item x0
20738 @item y0
20739 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
20740 by default.
20741
20742 @item mode
20743 Set forward/backward mode.
20744
20745 Available modes are:
20746 @table @samp
20747 @item forward
20748 The larger the distance from the central point, the darker the image becomes.
20749
20750 @item backward
20751 The larger the distance from the central point, the brighter the image becomes.
20752 This can be used to reverse a vignette effect, though there is no automatic
20753 detection to extract the lens @option{angle} and other settings (yet). It can
20754 also be used to create a burning effect.
20755 @end table
20756
20757 Default value is @samp{forward}.
20758
20759 @item eval
20760 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
20761
20762 It accepts the following values:
20763 @table @samp
20764 @item init
20765 Evaluate expressions only once during the filter initialization.
20766
20767 @item frame
20768 Evaluate expressions for each incoming frame. This is way slower than the
20769 @samp{init} mode since it requires all the scalers to be re-computed, but it
20770 allows advanced dynamic expressions.
20771 @end table
20772
20773 Default value is @samp{init}.
20774
20775 @item dither
20776 Set dithering to reduce the circular banding effects. Default is @code{1}
20777 (enabled).
20778
20779 @item aspect
20780 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
20781 Setting this value to the SAR of the input will make a rectangular vignetting
20782 following the dimensions of the video.
20783
20784 Default is @code{1/1}.
20785 @end table
20786
20787 @subsection Expressions
20788
20789 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
20790 following parameters.
20791
20792 @table @option
20793 @item w
20794 @item h
20795 input width and height
20796
20797 @item n
20798 the number of input frame, starting from 0
20799
20800 @item pts
20801 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
20802 @var{TB} units, NAN if undefined
20803
20804 @item r
20805 frame rate of the input video, NAN if the input frame rate is unknown
20806
20807 @item t
20808 the PTS (Presentation TimeStamp) of the filtered video frame,
20809 expressed in seconds, NAN if undefined
20810
20811 @item tb
20812 time base of the input video
20813 @end table
20814
20815
20816 @subsection Examples
20817
20818 @itemize
20819 @item
20820 Apply simple strong vignetting effect:
20821 @example
20822 vignette=PI/4
20823 @end example
20824
20825 @item
20826 Make a flickering vignetting:
20827 @example
20828 vignette='PI/4+random(1)*PI/50':eval=frame
20829 @end example
20830
20831 @end itemize
20832
20833 @section vmafmotion
20834
20835 Obtain the average VMAF motion score of a video.
20836 It is one of the component metrics of VMAF.
20837
20838 The obtained average motion score is printed through the logging system.
20839
20840 The filter accepts the following options:
20841
20842 @table @option
20843 @item stats_file
20844 If specified, the filter will use the named file to save the motion score of
20845 each frame with respect to the previous frame.
20846 When filename equals "-" the data is sent to standard output.
20847 @end table
20848
20849 Example:
20850 @example
20851 ffmpeg -i ref.mpg -vf vmafmotion -f null -
20852 @end example
20853
20854 @section vstack
20855 Stack input videos vertically.
20856
20857 All streams must be of same pixel format and of same width.
20858
20859 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
20860 to create same output.
20861
20862 The filter accepts the following options:
20863
20864 @table @option
20865 @item inputs
20866 Set number of input streams. Default is 2.
20867
20868 @item shortest
20869 If set to 1, force the output to terminate when the shortest input
20870 terminates. Default value is 0.
20871 @end table
20872
20873 @section w3fdif
20874
20875 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
20876 Deinterlacing Filter").
20877
20878 Based on the process described by Martin Weston for BBC R&D, and
20879 implemented based on the de-interlace algorithm written by Jim
20880 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
20881 uses filter coefficients calculated by BBC R&D.
20882
20883 This filter uses field-dominance information in frame to decide which
20884 of each pair of fields to place first in the output.
20885 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
20886
20887 There are two sets of filter coefficients, so called "simple"
20888 and "complex". Which set of filter coefficients is used can
20889 be set by passing an optional parameter:
20890
20891 @table @option
20892 @item filter
20893 Set the interlacing filter coefficients. Accepts one of the following values:
20894
20895 @table @samp
20896 @item simple
20897 Simple filter coefficient set.
20898 @item complex
20899 More-complex filter coefficient set.
20900 @end table
20901 Default value is @samp{complex}.
20902
20903 @item deint
20904 Specify which frames to deinterlace. Accepts one of the following values:
20905
20906 @table @samp
20907 @item all
20908 Deinterlace all frames,
20909 @item interlaced
20910 Only deinterlace frames marked as interlaced.
20911 @end table
20912
20913 Default value is @samp{all}.
20914 @end table
20915
20916 @section waveform
20917 Video waveform monitor.
20918
20919 The waveform monitor plots color component intensity. By default luminance
20920 only. Each column of the waveform corresponds to a column of pixels in the
20921 source video.
20922
20923 It accepts the following options:
20924
20925 @table @option
20926 @item mode, m
20927 Can be either @code{row}, or @code{column}. Default is @code{column}.
20928 In row mode, the graph on the left side represents color component value 0 and
20929 the right side represents value = 255. In column mode, the top side represents
20930 color component value = 0 and bottom side represents value = 255.
20931
20932 @item intensity, i
20933 Set intensity. Smaller values are useful to find out how many values of the same
20934 luminance are distributed across input rows/columns.
20935 Default value is @code{0.04}. Allowed range is [0, 1].
20936
20937 @item mirror, r
20938 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
20939 In mirrored mode, higher values will be represented on the left
20940 side for @code{row} mode and at the top for @code{column} mode. Default is
20941 @code{1} (mirrored).
20942
20943 @item display, d
20944 Set display mode.
20945 It accepts the following values:
20946 @table @samp
20947 @item overlay
20948 Presents information identical to that in the @code{parade}, except
20949 that the graphs representing color components are superimposed directly
20950 over one another.
20951
20952 This display mode makes it easier to spot relative differences or similarities
20953 in overlapping areas of the color components that are supposed to be identical,
20954 such as neutral whites, grays, or blacks.
20955
20956 @item stack
20957 Display separate graph for the color components side by side in
20958 @code{row} mode or one below the other in @code{column} mode.
20959
20960 @item parade
20961 Display separate graph for the color components side by side in
20962 @code{column} mode or one below the other in @code{row} mode.
20963
20964 Using this display mode makes it easy to spot color casts in the highlights
20965 and shadows of an image, by comparing the contours of the top and the bottom
20966 graphs of each waveform. Since whites, grays, and blacks are characterized
20967 by exactly equal amounts of red, green, and blue, neutral areas of the picture
20968 should display three waveforms of roughly equal width/height. If not, the
20969 correction is easy to perform by making level adjustments the three waveforms.
20970 @end table
20971 Default is @code{stack}.
20972
20973 @item components, c
20974 Set which color components to display. Default is 1, which means only luminance
20975 or red color component if input is in RGB colorspace. If is set for example to
20976 7 it will display all 3 (if) available color components.
20977
20978 @item envelope, e
20979 @table @samp
20980 @item none
20981 No envelope, this is default.
20982
20983 @item instant
20984 Instant envelope, minimum and maximum values presented in graph will be easily
20985 visible even with small @code{step} value.
20986
20987 @item peak
20988 Hold minimum and maximum values presented in graph across time. This way you
20989 can still spot out of range values without constantly looking at waveforms.
20990
20991 @item peak+instant
20992 Peak and instant envelope combined together.
20993 @end table
20994
20995 @item filter, f
20996 @table @samp
20997 @item lowpass
20998 No filtering, this is default.
20999
21000 @item flat
21001 Luma and chroma combined together.
21002
21003 @item aflat
21004 Similar as above, but shows difference between blue and red chroma.
21005
21006 @item xflat
21007 Similar as above, but use different colors.
21008
21009 @item yflat
21010 Similar as above, but again with different colors.
21011
21012 @item chroma
21013 Displays only chroma.
21014
21015 @item color
21016 Displays actual color value on waveform.
21017
21018 @item acolor
21019 Similar as above, but with luma showing frequency of chroma values.
21020 @end table
21021
21022 @item graticule, g
21023 Set which graticule to display.
21024
21025 @table @samp
21026 @item none
21027 Do not display graticule.
21028
21029 @item green
21030 Display green graticule showing legal broadcast ranges.
21031
21032 @item orange
21033 Display orange graticule showing legal broadcast ranges.
21034
21035 @item invert
21036 Display invert graticule showing legal broadcast ranges.
21037 @end table
21038
21039 @item opacity, o
21040 Set graticule opacity.
21041
21042 @item flags, fl
21043 Set graticule flags.
21044
21045 @table @samp
21046 @item numbers
21047 Draw numbers above lines. By default enabled.
21048
21049 @item dots
21050 Draw dots instead of lines.
21051 @end table
21052
21053 @item scale, s
21054 Set scale used for displaying graticule.
21055
21056 @table @samp
21057 @item digital
21058 @item millivolts
21059 @item ire
21060 @end table
21061 Default is digital.
21062
21063 @item bgopacity, b
21064 Set background opacity.
21065
21066 @item tint0, t0
21067 @item tint1, t1
21068 Set tint for output.
21069 Only used with lowpass filter and when display is not overlay and input
21070 pixel formats are not RGB.
21071 @end table
21072
21073 @section weave, doubleweave
21074
21075 The @code{weave} takes a field-based video input and join
21076 each two sequential fields into single frame, producing a new double
21077 height clip with half the frame rate and half the frame count.
21078
21079 The @code{doubleweave} works same as @code{weave} but without
21080 halving frame rate and frame count.
21081
21082 It accepts the following option:
21083
21084 @table @option
21085 @item first_field
21086 Set first field. Available values are:
21087
21088 @table @samp
21089 @item top, t
21090 Set the frame as top-field-first.
21091
21092 @item bottom, b
21093 Set the frame as bottom-field-first.
21094 @end table
21095 @end table
21096
21097 @subsection Examples
21098
21099 @itemize
21100 @item
21101 Interlace video using @ref{select} and @ref{separatefields} filter:
21102 @example
21103 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
21104 @end example
21105 @end itemize
21106
21107 @section xbr
21108 Apply the xBR high-quality magnification filter which is designed for pixel
21109 art. It follows a set of edge-detection rules, see
21110 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
21111
21112 It accepts the following option:
21113
21114 @table @option
21115 @item n
21116 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
21117 @code{3xBR} and @code{4} for @code{4xBR}.
21118 Default is @code{3}.
21119 @end table
21120
21121 @section xfade
21122
21123 Apply cross fade from one input video stream to another input video stream.
21124 The cross fade is applied for specified duration.
21125
21126 The filter accepts the following options:
21127
21128 @table @option
21129 @item transition
21130 Set one of available transition effects:
21131
21132 @table @samp
21133 @item custom
21134 @item fade
21135 @item wipeleft
21136 @item wiperight
21137 @item wipeup
21138 @item wipedown
21139 @item slideleft
21140 @item slideright
21141 @item slideup
21142 @item slidedown
21143 @item circlecrop
21144 @item rectcrop
21145 @item distance
21146 @item fadeblack
21147 @item fadewhite
21148 @item radial
21149 @item smoothleft
21150 @item smoothright
21151 @item smoothup
21152 @item smoothdown
21153 @item circleopen
21154 @item circleclose
21155 @item vertopen
21156 @item vertclose
21157 @item horzopen
21158 @item horzclose
21159 @item dissolve
21160 @item pixelize
21161 @item diagtl
21162 @item diagtr
21163 @item diagbl
21164 @item diagbr
21165 @item hlslice
21166 @item hrslice
21167 @item vuslice
21168 @item vdslice
21169 @item hblur
21170 @item fadegrays
21171 @item wipetl
21172 @item wipetr
21173 @item wipebl
21174 @item wipebr
21175 @item squeezeh
21176 @item squeezev
21177 @end table
21178 Default transition effect is fade.
21179
21180 @item duration
21181 Set cross fade duration in seconds.
21182 Default duration is 1 second.
21183
21184 @item offset
21185 Set cross fade start relative to first input stream in seconds.
21186 Default offset is 0.
21187
21188 @item expr
21189 Set expression for custom transition effect.
21190
21191 The expressions can use the following variables and functions:
21192
21193 @table @option
21194 @item X
21195 @item Y
21196 The coordinates of the current sample.
21197
21198 @item W
21199 @item H
21200 The width and height of the image.
21201
21202 @item P
21203 Progress of transition effect.
21204
21205 @item PLANE
21206 Currently processed plane.
21207
21208 @item A
21209 Return value of first input at current location and plane.
21210
21211 @item B
21212 Return value of second input at current location and plane.
21213
21214 @item a0(x, y)
21215 @item a1(x, y)
21216 @item a2(x, y)
21217 @item a3(x, y)
21218 Return the value of the pixel at location (@var{x},@var{y}) of the
21219 first/second/third/fourth component of first input.
21220
21221 @item b0(x, y)
21222 @item b1(x, y)
21223 @item b2(x, y)
21224 @item b3(x, y)
21225 Return the value of the pixel at location (@var{x},@var{y}) of the
21226 first/second/third/fourth component of second input.
21227 @end table
21228 @end table
21229
21230 @subsection Examples
21231
21232 @itemize
21233 @item
21234 Cross fade from one input video to another input video, with fade transition and duration of transition
21235 of 2 seconds starting at offset of 5 seconds:
21236 @example
21237 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
21238 @end example
21239 @end itemize
21240
21241 @section xmedian
21242 Pick median pixels from several input videos.
21243
21244 The filter accepts the following options:
21245
21246 @table @option
21247 @item inputs
21248 Set number of inputs.
21249 Default is 3. Allowed range is from 3 to 255.
21250 If number of inputs is even number, than result will be mean value between two median values.
21251
21252 @item planes
21253 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
21254
21255 @item percentile
21256 Set median percentile. Default value is @code{0.5}.
21257 Default value of @code{0.5} will pick always median values, while @code{0} will pick
21258 minimum values, and @code{1} maximum values.
21259 @end table
21260
21261 @section xstack
21262 Stack video inputs into custom layout.
21263
21264 All streams must be of same pixel format.
21265
21266 The filter accepts the following options:
21267
21268 @table @option
21269 @item inputs
21270 Set number of input streams. Default is 2.
21271
21272 @item layout
21273 Specify layout of inputs.
21274 This option requires the desired layout configuration to be explicitly set by the user.
21275 This sets position of each video input in output. Each input
21276 is separated by '|'.
21277 The first number represents the column, and the second number represents the row.
21278 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
21279 where X is video input from which to take width or height.
21280 Multiple values can be used when separated by '+'. In such
21281 case values are summed together.
21282
21283 Note that if inputs are of different sizes gaps may appear, as not all of
21284 the output video frame will be filled. Similarly, videos can overlap each
21285 other if their position doesn't leave enough space for the full frame of
21286 adjoining videos.
21287
21288 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
21289 a layout must be set by the user.
21290
21291 @item shortest
21292 If set to 1, force the output to terminate when the shortest input
21293 terminates. Default value is 0.
21294
21295 @item fill
21296 If set to valid color, all unused pixels will be filled with that color.
21297 By default fill is set to none, so it is disabled.
21298 @end table
21299
21300 @subsection Examples
21301
21302 @itemize
21303 @item
21304 Display 4 inputs into 2x2 grid.
21305
21306 Layout:
21307 @example
21308 input1(0, 0)  | input3(w0, 0)
21309 input2(0, h0) | input4(w0, h0)
21310 @end example
21311
21312 @example
21313 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
21314 @end example
21315
21316 Note that if inputs are of different sizes, gaps or overlaps may occur.
21317
21318 @item
21319 Display 4 inputs into 1x4 grid.
21320
21321 Layout:
21322 @example
21323 input1(0, 0)
21324 input2(0, h0)
21325 input3(0, h0+h1)
21326 input4(0, h0+h1+h2)
21327 @end example
21328
21329 @example
21330 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
21331 @end example
21332
21333 Note that if inputs are of different widths, unused space will appear.
21334
21335 @item
21336 Display 9 inputs into 3x3 grid.
21337
21338 Layout:
21339 @example
21340 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
21341 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
21342 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
21343 @end example
21344
21345 @example
21346 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
21347 @end example
21348
21349 Note that if inputs are of different sizes, gaps or overlaps may occur.
21350
21351 @item
21352 Display 16 inputs into 4x4 grid.
21353
21354 Layout:
21355 @example
21356 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
21357 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
21358 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
21359 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
21360 @end example
21361
21362 @example
21363 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|
21364 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
21365 @end example
21366
21367 Note that if inputs are of different sizes, gaps or overlaps may occur.
21368
21369 @end itemize
21370
21371 @anchor{yadif}
21372 @section yadif
21373
21374 Deinterlace the input video ("yadif" means "yet another deinterlacing
21375 filter").
21376
21377 It accepts the following parameters:
21378
21379
21380 @table @option
21381
21382 @item mode
21383 The interlacing mode to adopt. It accepts one of the following values:
21384
21385 @table @option
21386 @item 0, send_frame
21387 Output one frame for each frame.
21388 @item 1, send_field
21389 Output one frame for each field.
21390 @item 2, send_frame_nospatial
21391 Like @code{send_frame}, but it skips the spatial interlacing check.
21392 @item 3, send_field_nospatial
21393 Like @code{send_field}, but it skips the spatial interlacing check.
21394 @end table
21395
21396 The default value is @code{send_frame}.
21397
21398 @item parity
21399 The picture field parity assumed for the input interlaced video. It accepts one
21400 of the following values:
21401
21402 @table @option
21403 @item 0, tff
21404 Assume the top field is first.
21405 @item 1, bff
21406 Assume the bottom field is first.
21407 @item -1, auto
21408 Enable automatic detection of field parity.
21409 @end table
21410
21411 The default value is @code{auto}.
21412 If the interlacing is unknown or the decoder does not export this information,
21413 top field first will be assumed.
21414
21415 @item deint
21416 Specify which frames to deinterlace. Accepts one of the following
21417 values:
21418
21419 @table @option
21420 @item 0, all
21421 Deinterlace all frames.
21422 @item 1, interlaced
21423 Only deinterlace frames marked as interlaced.
21424 @end table
21425
21426 The default value is @code{all}.
21427 @end table
21428
21429 @section yadif_cuda
21430
21431 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
21432 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
21433 and/or nvenc.
21434
21435 It accepts the following parameters:
21436
21437
21438 @table @option
21439
21440 @item mode
21441 The interlacing mode to adopt. It accepts one of the following values:
21442
21443 @table @option
21444 @item 0, send_frame
21445 Output one frame for each frame.
21446 @item 1, send_field
21447 Output one frame for each field.
21448 @item 2, send_frame_nospatial
21449 Like @code{send_frame}, but it skips the spatial interlacing check.
21450 @item 3, send_field_nospatial
21451 Like @code{send_field}, but it skips the spatial interlacing check.
21452 @end table
21453
21454 The default value is @code{send_frame}.
21455
21456 @item parity
21457 The picture field parity assumed for the input interlaced video. It accepts one
21458 of the following values:
21459
21460 @table @option
21461 @item 0, tff
21462 Assume the top field is first.
21463 @item 1, bff
21464 Assume the bottom field is first.
21465 @item -1, auto
21466 Enable automatic detection of field parity.
21467 @end table
21468
21469 The default value is @code{auto}.
21470 If the interlacing is unknown or the decoder does not export this information,
21471 top field first will be assumed.
21472
21473 @item deint
21474 Specify which frames to deinterlace. Accepts one of the following
21475 values:
21476
21477 @table @option
21478 @item 0, all
21479 Deinterlace all frames.
21480 @item 1, interlaced
21481 Only deinterlace frames marked as interlaced.
21482 @end table
21483
21484 The default value is @code{all}.
21485 @end table
21486
21487 @section yaepblur
21488
21489 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
21490 The algorithm is described in
21491 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
21492
21493 It accepts the following parameters:
21494
21495 @table @option
21496 @item radius, r
21497 Set the window radius. Default value is 3.
21498
21499 @item planes, p
21500 Set which planes to filter. Default is only the first plane.
21501
21502 @item sigma, s
21503 Set blur strength. Default value is 128.
21504 @end table
21505
21506 @subsection Commands
21507 This filter supports same @ref{commands} as options.
21508
21509 @section zoompan
21510
21511 Apply Zoom & Pan effect.
21512
21513 This filter accepts the following options:
21514
21515 @table @option
21516 @item zoom, z
21517 Set the zoom expression. Range is 1-10. Default is 1.
21518
21519 @item x
21520 @item y
21521 Set the x and y expression. Default is 0.
21522
21523 @item d
21524 Set the duration expression in number of frames.
21525 This sets for how many number of frames effect will last for
21526 single input image.
21527
21528 @item s
21529 Set the output image size, default is 'hd720'.
21530
21531 @item fps
21532 Set the output frame rate, default is '25'.
21533 @end table
21534
21535 Each expression can contain the following constants:
21536
21537 @table @option
21538 @item in_w, iw
21539 Input width.
21540
21541 @item in_h, ih
21542 Input height.
21543
21544 @item out_w, ow
21545 Output width.
21546
21547 @item out_h, oh
21548 Output height.
21549
21550 @item in
21551 Input frame count.
21552
21553 @item on
21554 Output frame count.
21555
21556 @item in_time, it
21557 The input timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
21558
21559 @item out_time, time, ot
21560 The output timestamp expressed in seconds.
21561
21562 @item x
21563 @item y
21564 Last calculated 'x' and 'y' position from 'x' and 'y' expression
21565 for current input frame.
21566
21567 @item px
21568 @item py
21569 'x' and 'y' of last output frame of previous input frame or 0 when there was
21570 not yet such frame (first input frame).
21571
21572 @item zoom
21573 Last calculated zoom from 'z' expression for current input frame.
21574
21575 @item pzoom
21576 Last calculated zoom of last output frame of previous input frame.
21577
21578 @item duration
21579 Number of output frames for current input frame. Calculated from 'd' expression
21580 for each input frame.
21581
21582 @item pduration
21583 number of output frames created for previous input frame
21584
21585 @item a
21586 Rational number: input width / input height
21587
21588 @item sar
21589 sample aspect ratio
21590
21591 @item dar
21592 display aspect ratio
21593
21594 @end table
21595
21596 @subsection Examples
21597
21598 @itemize
21599 @item
21600 Zoom in up to 1.5x and pan at same time to some spot near center of picture:
21601 @example
21602 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
21603 @end example
21604
21605 @item
21606 Zoom in up to 1.5x and pan always at center of picture:
21607 @example
21608 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21609 @end example
21610
21611 @item
21612 Same as above but without pausing:
21613 @example
21614 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21615 @end example
21616
21617 @item
21618 Zoom in 2x into center of picture only for the first second of the input video:
21619 @example
21620 zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21621 @end example
21622
21623 @end itemize
21624
21625 @anchor{zscale}
21626 @section zscale
21627 Scale (resize) the input video, using the z.lib library:
21628 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
21629 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
21630
21631 The zscale filter forces the output display aspect ratio to be the same
21632 as the input, by changing the output sample aspect ratio.
21633
21634 If the input image format is different from the format requested by
21635 the next filter, the zscale filter will convert the input to the
21636 requested format.
21637
21638 @subsection Options
21639 The filter accepts the following options.
21640
21641 @table @option
21642 @item width, w
21643 @item height, h
21644 Set the output video dimension expression. Default value is the input
21645 dimension.
21646
21647 If the @var{width} or @var{w} value is 0, the input width is used for
21648 the output. If the @var{height} or @var{h} value is 0, the input height
21649 is used for the output.
21650
21651 If one and only one of the values is -n with n >= 1, the zscale filter
21652 will use a value that maintains the aspect ratio of the input image,
21653 calculated from the other specified dimension. After that it will,
21654 however, make sure that the calculated dimension is divisible by n and
21655 adjust the value if necessary.
21656
21657 If both values are -n with n >= 1, the behavior will be identical to
21658 both values being set to 0 as previously detailed.
21659
21660 See below for the list of accepted constants for use in the dimension
21661 expression.
21662
21663 @item size, s
21664 Set the video size. For the syntax of this option, check the
21665 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21666
21667 @item dither, d
21668 Set the dither type.
21669
21670 Possible values are:
21671 @table @var
21672 @item none
21673 @item ordered
21674 @item random
21675 @item error_diffusion
21676 @end table
21677
21678 Default is none.
21679
21680 @item filter, f
21681 Set the resize filter type.
21682
21683 Possible values are:
21684 @table @var
21685 @item point
21686 @item bilinear
21687 @item bicubic
21688 @item spline16
21689 @item spline36
21690 @item lanczos
21691 @end table
21692
21693 Default is bilinear.
21694
21695 @item range, r
21696 Set the color range.
21697
21698 Possible values are:
21699 @table @var
21700 @item input
21701 @item limited
21702 @item full
21703 @end table
21704
21705 Default is same as input.
21706
21707 @item primaries, p
21708 Set the color primaries.
21709
21710 Possible values are:
21711 @table @var
21712 @item input
21713 @item 709
21714 @item unspecified
21715 @item 170m
21716 @item 240m
21717 @item 2020
21718 @end table
21719
21720 Default is same as input.
21721
21722 @item transfer, t
21723 Set the transfer characteristics.
21724
21725 Possible values are:
21726 @table @var
21727 @item input
21728 @item 709
21729 @item unspecified
21730 @item 601
21731 @item linear
21732 @item 2020_10
21733 @item 2020_12
21734 @item smpte2084
21735 @item iec61966-2-1
21736 @item arib-std-b67
21737 @end table
21738
21739 Default is same as input.
21740
21741 @item matrix, m
21742 Set the colorspace matrix.
21743
21744 Possible value are:
21745 @table @var
21746 @item input
21747 @item 709
21748 @item unspecified
21749 @item 470bg
21750 @item 170m
21751 @item 2020_ncl
21752 @item 2020_cl
21753 @end table
21754
21755 Default is same as input.
21756
21757 @item rangein, rin
21758 Set the input color range.
21759
21760 Possible values are:
21761 @table @var
21762 @item input
21763 @item limited
21764 @item full
21765 @end table
21766
21767 Default is same as input.
21768
21769 @item primariesin, pin
21770 Set the input color primaries.
21771
21772 Possible values are:
21773 @table @var
21774 @item input
21775 @item 709
21776 @item unspecified
21777 @item 170m
21778 @item 240m
21779 @item 2020
21780 @end table
21781
21782 Default is same as input.
21783
21784 @item transferin, tin
21785 Set the input transfer characteristics.
21786
21787 Possible values are:
21788 @table @var
21789 @item input
21790 @item 709
21791 @item unspecified
21792 @item 601
21793 @item linear
21794 @item 2020_10
21795 @item 2020_12
21796 @end table
21797
21798 Default is same as input.
21799
21800 @item matrixin, min
21801 Set the input colorspace matrix.
21802
21803 Possible value are:
21804 @table @var
21805 @item input
21806 @item 709
21807 @item unspecified
21808 @item 470bg
21809 @item 170m
21810 @item 2020_ncl
21811 @item 2020_cl
21812 @end table
21813
21814 @item chromal, c
21815 Set the output chroma location.
21816
21817 Possible values are:
21818 @table @var
21819 @item input
21820 @item left
21821 @item center
21822 @item topleft
21823 @item top
21824 @item bottomleft
21825 @item bottom
21826 @end table
21827
21828 @item chromalin, cin
21829 Set the input chroma location.
21830
21831 Possible values are:
21832 @table @var
21833 @item input
21834 @item left
21835 @item center
21836 @item topleft
21837 @item top
21838 @item bottomleft
21839 @item bottom
21840 @end table
21841
21842 @item npl
21843 Set the nominal peak luminance.
21844 @end table
21845
21846 The values of the @option{w} and @option{h} options are expressions
21847 containing the following constants:
21848
21849 @table @var
21850 @item in_w
21851 @item in_h
21852 The input width and height
21853
21854 @item iw
21855 @item ih
21856 These are the same as @var{in_w} and @var{in_h}.
21857
21858 @item out_w
21859 @item out_h
21860 The output (scaled) width and height
21861
21862 @item ow
21863 @item oh
21864 These are the same as @var{out_w} and @var{out_h}
21865
21866 @item a
21867 The same as @var{iw} / @var{ih}
21868
21869 @item sar
21870 input sample aspect ratio
21871
21872 @item dar
21873 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
21874
21875 @item hsub
21876 @item vsub
21877 horizontal and vertical input chroma subsample values. For example for the
21878 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21879
21880 @item ohsub
21881 @item ovsub
21882 horizontal and vertical output chroma subsample values. For example for the
21883 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21884 @end table
21885
21886 @subsection Commands
21887
21888 This filter supports the following commands:
21889 @table @option
21890 @item width, w
21891 @item height, h
21892 Set the output video dimension expression.
21893 The command accepts the same syntax of the corresponding option.
21894
21895 If the specified expression is not valid, it is kept at its current
21896 value.
21897 @end table
21898
21899 @c man end VIDEO FILTERS
21900
21901 @chapter OpenCL Video Filters
21902 @c man begin OPENCL VIDEO FILTERS
21903
21904 Below is a description of the currently available OpenCL video filters.
21905
21906 To enable compilation of these filters you need to configure FFmpeg with
21907 @code{--enable-opencl}.
21908
21909 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
21910 @table @option
21911
21912 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
21913 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
21914 given device parameters.
21915
21916 @item -filter_hw_device @var{name}
21917 Pass the hardware device called @var{name} to all filters in any filter graph.
21918
21919 @end table
21920
21921 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
21922
21923 @itemize
21924 @item
21925 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
21926 @example
21927 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
21928 @end example
21929 @end itemize
21930
21931 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.
21932
21933 @section avgblur_opencl
21934
21935 Apply average blur filter.
21936
21937 The filter accepts the following options:
21938
21939 @table @option
21940 @item sizeX
21941 Set horizontal radius size.
21942 Range is @code{[1, 1024]} and default value is @code{1}.
21943
21944 @item planes
21945 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21946
21947 @item sizeY
21948 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
21949 @end table
21950
21951 @subsection Example
21952
21953 @itemize
21954 @item
21955 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.
21956 @example
21957 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
21958 @end example
21959 @end itemize
21960
21961 @section boxblur_opencl
21962
21963 Apply a boxblur algorithm to the input video.
21964
21965 It accepts the following parameters:
21966
21967 @table @option
21968
21969 @item luma_radius, lr
21970 @item luma_power, lp
21971 @item chroma_radius, cr
21972 @item chroma_power, cp
21973 @item alpha_radius, ar
21974 @item alpha_power, ap
21975
21976 @end table
21977
21978 A description of the accepted options follows.
21979
21980 @table @option
21981 @item luma_radius, lr
21982 @item chroma_radius, cr
21983 @item alpha_radius, ar
21984 Set an expression for the box radius in pixels used for blurring the
21985 corresponding input plane.
21986
21987 The radius value must be a non-negative number, and must not be
21988 greater than the value of the expression @code{min(w,h)/2} for the
21989 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
21990 planes.
21991
21992 Default value for @option{luma_radius} is "2". If not specified,
21993 @option{chroma_radius} and @option{alpha_radius} default to the
21994 corresponding value set for @option{luma_radius}.
21995
21996 The expressions can contain the following constants:
21997 @table @option
21998 @item w
21999 @item h
22000 The input width and height in pixels.
22001
22002 @item cw
22003 @item ch
22004 The input chroma image width and height in pixels.
22005
22006 @item hsub
22007 @item vsub
22008 The horizontal and vertical chroma subsample values. For example, for the
22009 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
22010 @end table
22011
22012 @item luma_power, lp
22013 @item chroma_power, cp
22014 @item alpha_power, ap
22015 Specify how many times the boxblur filter is applied to the
22016 corresponding plane.
22017
22018 Default value for @option{luma_power} is 2. If not specified,
22019 @option{chroma_power} and @option{alpha_power} default to the
22020 corresponding value set for @option{luma_power}.
22021
22022 A value of 0 will disable the effect.
22023 @end table
22024
22025 @subsection Examples
22026
22027 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.
22028
22029 @itemize
22030 @item
22031 Apply a boxblur filter with the luma, chroma, and alpha radius
22032 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.
22033 @example
22034 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
22035 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
22036 @end example
22037
22038 @item
22039 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.
22040
22041 For the luma plane, a 2x2 box radius will be run once.
22042
22043 For the chroma plane, a 4x4 box radius will be run 5 times.
22044
22045 For the alpha plane, a 3x3 box radius will be run 7 times.
22046 @example
22047 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
22048 @end example
22049 @end itemize
22050
22051 @section colorkey_opencl
22052 RGB colorspace color keying.
22053
22054 The filter accepts the following options:
22055
22056 @table @option
22057 @item color
22058 The color which will be replaced with transparency.
22059
22060 @item similarity
22061 Similarity percentage with the key color.
22062
22063 0.01 matches only the exact key color, while 1.0 matches everything.
22064
22065 @item blend
22066 Blend percentage.
22067
22068 0.0 makes pixels either fully transparent, or not transparent at all.
22069
22070 Higher values result in semi-transparent pixels, with a higher transparency
22071 the more similar the pixels color is to the key color.
22072 @end table
22073
22074 @subsection Examples
22075
22076 @itemize
22077 @item
22078 Make every semi-green pixel in the input transparent with some slight blending:
22079 @example
22080 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
22081 @end example
22082 @end itemize
22083
22084 @section convolution_opencl
22085
22086 Apply convolution of 3x3, 5x5, 7x7 matrix.
22087
22088 The filter accepts the following options:
22089
22090 @table @option
22091 @item 0m
22092 @item 1m
22093 @item 2m
22094 @item 3m
22095 Set matrix for each plane.
22096 Matrix is sequence of 9, 25 or 49 signed numbers.
22097 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
22098
22099 @item 0rdiv
22100 @item 1rdiv
22101 @item 2rdiv
22102 @item 3rdiv
22103 Set multiplier for calculated value for each plane.
22104 If unset or 0, it will be sum of all matrix elements.
22105 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
22106
22107 @item 0bias
22108 @item 1bias
22109 @item 2bias
22110 @item 3bias
22111 Set bias for each plane. This value is added to the result of the multiplication.
22112 Useful for making the overall image brighter or darker.
22113 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
22114
22115 @end table
22116
22117 @subsection Examples
22118
22119 @itemize
22120 @item
22121 Apply sharpen:
22122 @example
22123 -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
22124 @end example
22125
22126 @item
22127 Apply blur:
22128 @example
22129 -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
22130 @end example
22131
22132 @item
22133 Apply edge enhance:
22134 @example
22135 -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
22136 @end example
22137
22138 @item
22139 Apply edge detect:
22140 @example
22141 -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
22142 @end example
22143
22144 @item
22145 Apply laplacian edge detector which includes diagonals:
22146 @example
22147 -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
22148 @end example
22149
22150 @item
22151 Apply emboss:
22152 @example
22153 -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
22154 @end example
22155 @end itemize
22156
22157 @section erosion_opencl
22158
22159 Apply erosion effect to the video.
22160
22161 This filter replaces the pixel by the local(3x3) minimum.
22162
22163 It accepts the following options:
22164
22165 @table @option
22166 @item threshold0
22167 @item threshold1
22168 @item threshold2
22169 @item threshold3
22170 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
22171 If @code{0}, plane will remain unchanged.
22172
22173 @item coordinates
22174 Flag which specifies the pixel to refer to.
22175 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
22176
22177 Flags to local 3x3 coordinates region centered on @code{x}:
22178
22179     1 2 3
22180
22181     4 x 5
22182
22183     6 7 8
22184 @end table
22185
22186 @subsection Example
22187
22188 @itemize
22189 @item
22190 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.
22191 @example
22192 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
22193 @end example
22194 @end itemize
22195
22196 @section deshake_opencl
22197 Feature-point based video stabilization filter.
22198
22199 The filter accepts the following options:
22200
22201 @table @option
22202 @item tripod
22203 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
22204
22205 @item debug
22206 Whether or not additional debug info should be displayed, both in the processed output and in the console.
22207
22208 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
22209
22210 Viewing point matches in the output video is only supported for RGB input.
22211
22212 Defaults to @code{0}.
22213
22214 @item adaptive_crop
22215 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
22216
22217 Defaults to @code{1}.
22218
22219 @item refine_features
22220 Whether or not feature points should be refined at a sub-pixel level.
22221
22222 This can be turned off for a slight performance gain at the cost of precision.
22223
22224 Defaults to @code{1}.
22225
22226 @item smooth_strength
22227 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
22228
22229 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
22230
22231 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
22232
22233 Defaults to @code{0.0}.
22234
22235 @item smooth_window_multiplier
22236 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
22237
22238 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
22239
22240 Acceptable values range from @code{0.1} to @code{10.0}.
22241
22242 Larger values increase the amount of motion data available for determining how to smooth the camera path,
22243 potentially improving smoothness, but also increase latency and memory usage.
22244
22245 Defaults to @code{2.0}.
22246
22247 @end table
22248
22249 @subsection Examples
22250
22251 @itemize
22252 @item
22253 Stabilize a video with a fixed, medium smoothing strength:
22254 @example
22255 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
22256 @end example
22257
22258 @item
22259 Stabilize a video with debugging (both in console and in rendered video):
22260 @example
22261 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
22262 @end example
22263 @end itemize
22264
22265 @section dilation_opencl
22266
22267 Apply dilation effect to the video.
22268
22269 This filter replaces the pixel by the local(3x3) maximum.
22270
22271 It accepts the following options:
22272
22273 @table @option
22274 @item threshold0
22275 @item threshold1
22276 @item threshold2
22277 @item threshold3
22278 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
22279 If @code{0}, plane will remain unchanged.
22280
22281 @item coordinates
22282 Flag which specifies the pixel to refer to.
22283 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
22284
22285 Flags to local 3x3 coordinates region centered on @code{x}:
22286
22287     1 2 3
22288
22289     4 x 5
22290
22291     6 7 8
22292 @end table
22293
22294 @subsection Example
22295
22296 @itemize
22297 @item
22298 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.
22299 @example
22300 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
22301 @end example
22302 @end itemize
22303
22304 @section nlmeans_opencl
22305
22306 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
22307
22308 @section overlay_opencl
22309
22310 Overlay one video on top of another.
22311
22312 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
22313 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
22314
22315 The filter accepts the following options:
22316
22317 @table @option
22318
22319 @item x
22320 Set the x coordinate of the overlaid video on the main video.
22321 Default value is @code{0}.
22322
22323 @item y
22324 Set the y coordinate of the overlaid video on the main video.
22325 Default value is @code{0}.
22326
22327 @end table
22328
22329 @subsection Examples
22330
22331 @itemize
22332 @item
22333 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
22334 @example
22335 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22336 @end example
22337 @item
22338 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
22339 @example
22340 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22341 @end example
22342
22343 @end itemize
22344
22345 @section pad_opencl
22346
22347 Add paddings to the input image, and place the original input at the
22348 provided @var{x}, @var{y} coordinates.
22349
22350 It accepts the following options:
22351
22352 @table @option
22353 @item width, w
22354 @item height, h
22355 Specify an expression for the size of the output image with the
22356 paddings added. If the value for @var{width} or @var{height} is 0, the
22357 corresponding input size is used for the output.
22358
22359 The @var{width} expression can reference the value set by the
22360 @var{height} expression, and vice versa.
22361
22362 The default value of @var{width} and @var{height} is 0.
22363
22364 @item x
22365 @item y
22366 Specify the offsets to place the input image at within the padded area,
22367 with respect to the top/left border of the output image.
22368
22369 The @var{x} expression can reference the value set by the @var{y}
22370 expression, and vice versa.
22371
22372 The default value of @var{x} and @var{y} is 0.
22373
22374 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
22375 so the input image is centered on the padded area.
22376
22377 @item color
22378 Specify the color of the padded area. For the syntax of this option,
22379 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
22380 manual,ffmpeg-utils}.
22381
22382 @item aspect
22383 Pad to an aspect instead to a resolution.
22384 @end table
22385
22386 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
22387 options are expressions containing the following constants:
22388
22389 @table @option
22390 @item in_w
22391 @item in_h
22392 The input video width and height.
22393
22394 @item iw
22395 @item ih
22396 These are the same as @var{in_w} and @var{in_h}.
22397
22398 @item out_w
22399 @item out_h
22400 The output width and height (the size of the padded area), as
22401 specified by the @var{width} and @var{height} expressions.
22402
22403 @item ow
22404 @item oh
22405 These are the same as @var{out_w} and @var{out_h}.
22406
22407 @item x
22408 @item y
22409 The x and y offsets as specified by the @var{x} and @var{y}
22410 expressions, or NAN if not yet specified.
22411
22412 @item a
22413 same as @var{iw} / @var{ih}
22414
22415 @item sar
22416 input sample aspect ratio
22417
22418 @item dar
22419 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
22420 @end table
22421
22422 @section prewitt_opencl
22423
22424 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
22425
22426 The filter accepts the following option:
22427
22428 @table @option
22429 @item planes
22430 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22431
22432 @item scale
22433 Set value which will be multiplied with filtered result.
22434 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22435
22436 @item delta
22437 Set value which will be added to filtered result.
22438 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22439 @end table
22440
22441 @subsection Example
22442
22443 @itemize
22444 @item
22445 Apply the Prewitt operator with scale set to 2 and delta set to 10.
22446 @example
22447 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
22448 @end example
22449 @end itemize
22450
22451 @anchor{program_opencl}
22452 @section program_opencl
22453
22454 Filter video using an OpenCL program.
22455
22456 @table @option
22457
22458 @item source
22459 OpenCL program source file.
22460
22461 @item kernel
22462 Kernel name in program.
22463
22464 @item inputs
22465 Number of inputs to the filter.  Defaults to 1.
22466
22467 @item size, s
22468 Size of output frames.  Defaults to the same as the first input.
22469
22470 @end table
22471
22472 The @code{program_opencl} filter also supports the @ref{framesync} options.
22473
22474 The program source file must contain a kernel function with the given name,
22475 which will be run once for each plane of the output.  Each run on a plane
22476 gets enqueued as a separate 2D global NDRange with one work-item for each
22477 pixel to be generated.  The global ID offset for each work-item is therefore
22478 the coordinates of a pixel in the destination image.
22479
22480 The kernel function needs to take the following arguments:
22481 @itemize
22482 @item
22483 Destination image, @var{__write_only image2d_t}.
22484
22485 This image will become the output; the kernel should write all of it.
22486 @item
22487 Frame index, @var{unsigned int}.
22488
22489 This is a counter starting from zero and increasing by one for each frame.
22490 @item
22491 Source images, @var{__read_only image2d_t}.
22492
22493 These are the most recent images on each input.  The kernel may read from
22494 them to generate the output, but they can't be written to.
22495 @end itemize
22496
22497 Example programs:
22498
22499 @itemize
22500 @item
22501 Copy the input to the output (output must be the same size as the input).
22502 @verbatim
22503 __kernel void copy(__write_only image2d_t destination,
22504                    unsigned int index,
22505                    __read_only  image2d_t source)
22506 {
22507     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
22508
22509     int2 location = (int2)(get_global_id(0), get_global_id(1));
22510
22511     float4 value = read_imagef(source, sampler, location);
22512
22513     write_imagef(destination, location, value);
22514 }
22515 @end verbatim
22516
22517 @item
22518 Apply a simple transformation, rotating the input by an amount increasing
22519 with the index counter.  Pixel values are linearly interpolated by the
22520 sampler, and the output need not have the same dimensions as the input.
22521 @verbatim
22522 __kernel void rotate_image(__write_only image2d_t dst,
22523                            unsigned int index,
22524                            __read_only  image2d_t src)
22525 {
22526     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22527                                CLK_FILTER_LINEAR);
22528
22529     float angle = (float)index / 100.0f;
22530
22531     float2 dst_dim = convert_float2(get_image_dim(dst));
22532     float2 src_dim = convert_float2(get_image_dim(src));
22533
22534     float2 dst_cen = dst_dim / 2.0f;
22535     float2 src_cen = src_dim / 2.0f;
22536
22537     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
22538
22539     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
22540     float2 src_pos = {
22541         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
22542         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
22543     };
22544     src_pos = src_pos * src_dim / dst_dim;
22545
22546     float2 src_loc = src_pos + src_cen;
22547
22548     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
22549         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
22550         write_imagef(dst, dst_loc, 0.5f);
22551     else
22552         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
22553 }
22554 @end verbatim
22555
22556 @item
22557 Blend two inputs together, with the amount of each input used varying
22558 with the index counter.
22559 @verbatim
22560 __kernel void blend_images(__write_only image2d_t dst,
22561                            unsigned int index,
22562                            __read_only  image2d_t src1,
22563                            __read_only  image2d_t src2)
22564 {
22565     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22566                                CLK_FILTER_LINEAR);
22567
22568     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
22569
22570     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
22571     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
22572     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
22573
22574     float4 val1 = read_imagef(src1, sampler, src1_loc);
22575     float4 val2 = read_imagef(src2, sampler, src2_loc);
22576
22577     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
22578 }
22579 @end verbatim
22580
22581 @end itemize
22582
22583 @section roberts_opencl
22584 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
22585
22586 The filter accepts the following option:
22587
22588 @table @option
22589 @item planes
22590 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22591
22592 @item scale
22593 Set value which will be multiplied with filtered result.
22594 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22595
22596 @item delta
22597 Set value which will be added to filtered result.
22598 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22599 @end table
22600
22601 @subsection Example
22602
22603 @itemize
22604 @item
22605 Apply the Roberts cross operator with scale set to 2 and delta set to 10
22606 @example
22607 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
22608 @end example
22609 @end itemize
22610
22611 @section sobel_opencl
22612
22613 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
22614
22615 The filter accepts the following option:
22616
22617 @table @option
22618 @item planes
22619 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22620
22621 @item scale
22622 Set value which will be multiplied with filtered result.
22623 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22624
22625 @item delta
22626 Set value which will be added to filtered result.
22627 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22628 @end table
22629
22630 @subsection Example
22631
22632 @itemize
22633 @item
22634 Apply sobel operator with scale set to 2 and delta set to 10
22635 @example
22636 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
22637 @end example
22638 @end itemize
22639
22640 @section tonemap_opencl
22641
22642 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
22643
22644 It accepts the following parameters:
22645
22646 @table @option
22647 @item tonemap
22648 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
22649
22650 @item param
22651 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
22652
22653 @item desat
22654 Apply desaturation for highlights that exceed this level of brightness. The
22655 higher the parameter, the more color information will be preserved. This
22656 setting helps prevent unnaturally blown-out colors for super-highlights, by
22657 (smoothly) turning into white instead. This makes images feel more natural,
22658 at the cost of reducing information about out-of-range colors.
22659
22660 The default value is 0.5, and the algorithm here is a little different from
22661 the cpu version tonemap currently. A setting of 0.0 disables this option.
22662
22663 @item threshold
22664 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
22665 is used to detect whether the scene has changed or not. If the distance between
22666 the current frame average brightness and the current running average exceeds
22667 a threshold value, we would re-calculate scene average and peak brightness.
22668 The default value is 0.2.
22669
22670 @item format
22671 Specify the output pixel format.
22672
22673 Currently supported formats are:
22674 @table @var
22675 @item p010
22676 @item nv12
22677 @end table
22678
22679 @item range, r
22680 Set the output color range.
22681
22682 Possible values are:
22683 @table @var
22684 @item tv/mpeg
22685 @item pc/jpeg
22686 @end table
22687
22688 Default is same as input.
22689
22690 @item primaries, p
22691 Set the output color primaries.
22692
22693 Possible values are:
22694 @table @var
22695 @item bt709
22696 @item bt2020
22697 @end table
22698
22699 Default is same as input.
22700
22701 @item transfer, t
22702 Set the output transfer characteristics.
22703
22704 Possible values are:
22705 @table @var
22706 @item bt709
22707 @item bt2020
22708 @end table
22709
22710 Default is bt709.
22711
22712 @item matrix, m
22713 Set the output colorspace matrix.
22714
22715 Possible value are:
22716 @table @var
22717 @item bt709
22718 @item bt2020
22719 @end table
22720
22721 Default is same as input.
22722
22723 @end table
22724
22725 @subsection Example
22726
22727 @itemize
22728 @item
22729 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
22730 @example
22731 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
22732 @end example
22733 @end itemize
22734
22735 @section unsharp_opencl
22736
22737 Sharpen or blur the input video.
22738
22739 It accepts the following parameters:
22740
22741 @table @option
22742 @item luma_msize_x, lx
22743 Set the luma matrix horizontal size.
22744 Range is @code{[1, 23]} and default value is @code{5}.
22745
22746 @item luma_msize_y, ly
22747 Set the luma matrix vertical size.
22748 Range is @code{[1, 23]} and default value is @code{5}.
22749
22750 @item luma_amount, la
22751 Set the luma effect strength.
22752 Range is @code{[-10, 10]} and default value is @code{1.0}.
22753
22754 Negative values will blur the input video, while positive values will
22755 sharpen it, a value of zero will disable the effect.
22756
22757 @item chroma_msize_x, cx
22758 Set the chroma matrix horizontal size.
22759 Range is @code{[1, 23]} and default value is @code{5}.
22760
22761 @item chroma_msize_y, cy
22762 Set the chroma matrix vertical size.
22763 Range is @code{[1, 23]} and default value is @code{5}.
22764
22765 @item chroma_amount, ca
22766 Set the chroma effect strength.
22767 Range is @code{[-10, 10]} and default value is @code{0.0}.
22768
22769 Negative values will blur the input video, while positive values will
22770 sharpen it, a value of zero will disable the effect.
22771
22772 @end table
22773
22774 All parameters are optional and default to the equivalent of the
22775 string '5:5:1.0:5:5:0.0'.
22776
22777 @subsection Examples
22778
22779 @itemize
22780 @item
22781 Apply strong luma sharpen effect:
22782 @example
22783 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
22784 @end example
22785
22786 @item
22787 Apply a strong blur of both luma and chroma parameters:
22788 @example
22789 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
22790 @end example
22791 @end itemize
22792
22793 @section xfade_opencl
22794
22795 Cross fade two videos with custom transition effect by using OpenCL.
22796
22797 It accepts the following options:
22798
22799 @table @option
22800 @item transition
22801 Set one of possible transition effects.
22802
22803 @table @option
22804 @item custom
22805 Select custom transition effect, the actual transition description
22806 will be picked from source and kernel options.
22807
22808 @item fade
22809 @item wipeleft
22810 @item wiperight
22811 @item wipeup
22812 @item wipedown
22813 @item slideleft
22814 @item slideright
22815 @item slideup
22816 @item slidedown
22817
22818 Default transition is fade.
22819 @end table
22820
22821 @item source
22822 OpenCL program source file for custom transition.
22823
22824 @item kernel
22825 Set name of kernel to use for custom transition from program source file.
22826
22827 @item duration
22828 Set duration of video transition.
22829
22830 @item offset
22831 Set time of start of transition relative to first video.
22832 @end table
22833
22834 The program source file must contain a kernel function with the given name,
22835 which will be run once for each plane of the output.  Each run on a plane
22836 gets enqueued as a separate 2D global NDRange with one work-item for each
22837 pixel to be generated.  The global ID offset for each work-item is therefore
22838 the coordinates of a pixel in the destination image.
22839
22840 The kernel function needs to take the following arguments:
22841 @itemize
22842 @item
22843 Destination image, @var{__write_only image2d_t}.
22844
22845 This image will become the output; the kernel should write all of it.
22846
22847 @item
22848 First Source image, @var{__read_only image2d_t}.
22849 Second Source image, @var{__read_only image2d_t}.
22850
22851 These are the most recent images on each input.  The kernel may read from
22852 them to generate the output, but they can't be written to.
22853
22854 @item
22855 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
22856 @end itemize
22857
22858 Example programs:
22859
22860 @itemize
22861 @item
22862 Apply dots curtain transition effect:
22863 @verbatim
22864 __kernel void blend_images(__write_only image2d_t dst,
22865                            __read_only  image2d_t src1,
22866                            __read_only  image2d_t src2,
22867                            float progress)
22868 {
22869     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22870                                CLK_FILTER_LINEAR);
22871     int2  p = (int2)(get_global_id(0), get_global_id(1));
22872     float2 rp = (float2)(get_global_id(0), get_global_id(1));
22873     float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
22874     rp = rp / dim;
22875
22876     float2 dots = (float2)(20.0, 20.0);
22877     float2 center = (float2)(0,0);
22878     float2 unused;
22879
22880     float4 val1 = read_imagef(src1, sampler, p);
22881     float4 val2 = read_imagef(src2, sampler, p);
22882     bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
22883
22884     write_imagef(dst, p, next ? val1 : val2);
22885 }
22886 @end verbatim
22887
22888 @end itemize
22889
22890 @c man end OPENCL VIDEO FILTERS
22891
22892 @chapter VAAPI Video Filters
22893 @c man begin VAAPI VIDEO FILTERS
22894
22895 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
22896
22897 To enable compilation of these filters you need to configure FFmpeg with
22898 @code{--enable-vaapi}.
22899
22900 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}
22901
22902 @section tonemap_vaapi
22903
22904 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
22905 It maps the dynamic range of HDR10 content to the SDR content.
22906 It currently only accepts HDR10 as input.
22907
22908 It accepts the following parameters:
22909
22910 @table @option
22911 @item format
22912 Specify the output pixel format.
22913
22914 Currently supported formats are:
22915 @table @var
22916 @item p010
22917 @item nv12
22918 @end table
22919
22920 Default is nv12.
22921
22922 @item primaries, p
22923 Set the output color primaries.
22924
22925 Default is same as input.
22926
22927 @item transfer, t
22928 Set the output transfer characteristics.
22929
22930 Default is bt709.
22931
22932 @item matrix, m
22933 Set the output colorspace matrix.
22934
22935 Default is same as input.
22936
22937 @end table
22938
22939 @subsection Example
22940
22941 @itemize
22942 @item
22943 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
22944 @example
22945 tonemap_vaapi=format=p010:t=bt2020-10
22946 @end example
22947 @end itemize
22948
22949 @c man end VAAPI VIDEO FILTERS
22950
22951 @chapter Video Sources
22952 @c man begin VIDEO SOURCES
22953
22954 Below is a description of the currently available video sources.
22955
22956 @section buffer
22957
22958 Buffer video frames, and make them available to the filter chain.
22959
22960 This source is mainly intended for a programmatic use, in particular
22961 through the interface defined in @file{libavfilter/buffersrc.h}.
22962
22963 It accepts the following parameters:
22964
22965 @table @option
22966
22967 @item video_size
22968 Specify the size (width and height) of the buffered video frames. For the
22969 syntax of this option, check the
22970 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22971
22972 @item width
22973 The input video width.
22974
22975 @item height
22976 The input video height.
22977
22978 @item pix_fmt
22979 A string representing the pixel format of the buffered video frames.
22980 It may be a number corresponding to a pixel format, or a pixel format
22981 name.
22982
22983 @item time_base
22984 Specify the timebase assumed by the timestamps of the buffered frames.
22985
22986 @item frame_rate
22987 Specify the frame rate expected for the video stream.
22988
22989 @item pixel_aspect, sar
22990 The sample (pixel) aspect ratio of the input video.
22991
22992 @item sws_param
22993 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
22994 to the filtergraph description to specify swscale flags for automatically
22995 inserted scalers. See @ref{Filtergraph syntax}.
22996
22997 @item hw_frames_ctx
22998 When using a hardware pixel format, this should be a reference to an
22999 AVHWFramesContext describing input frames.
23000 @end table
23001
23002 For example:
23003 @example
23004 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
23005 @end example
23006
23007 will instruct the source to accept video frames with size 320x240 and
23008 with format "yuv410p", assuming 1/24 as the timestamps timebase and
23009 square pixels (1:1 sample aspect ratio).
23010 Since the pixel format with name "yuv410p" corresponds to the number 6
23011 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
23012 this example corresponds to:
23013 @example
23014 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
23015 @end example
23016
23017 Alternatively, the options can be specified as a flat string, but this
23018 syntax is deprecated:
23019
23020 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
23021
23022 @section cellauto
23023
23024 Create a pattern generated by an elementary cellular automaton.
23025
23026 The initial state of the cellular automaton can be defined through the
23027 @option{filename} and @option{pattern} options. If such options are
23028 not specified an initial state is created randomly.
23029
23030 At each new frame a new row in the video is filled with the result of
23031 the cellular automaton next generation. The behavior when the whole
23032 frame is filled is defined by the @option{scroll} option.
23033
23034 This source accepts the following options:
23035
23036 @table @option
23037 @item filename, f
23038 Read the initial cellular automaton state, i.e. the starting row, from
23039 the specified file.
23040 In the file, each non-whitespace character is considered an alive
23041 cell, a newline will terminate the row, and further characters in the
23042 file will be ignored.
23043
23044 @item pattern, p
23045 Read the initial cellular automaton state, i.e. the starting row, from
23046 the specified string.
23047
23048 Each non-whitespace character in the string is considered an alive
23049 cell, a newline will terminate the row, and further characters in the
23050 string will be ignored.
23051
23052 @item rate, r
23053 Set the video rate, that is the number of frames generated per second.
23054 Default is 25.
23055
23056 @item random_fill_ratio, ratio
23057 Set the random fill ratio for the initial cellular automaton row. It
23058 is a floating point number value ranging from 0 to 1, defaults to
23059 1/PHI.
23060
23061 This option is ignored when a file or a pattern is specified.
23062
23063 @item random_seed, seed
23064 Set the seed for filling randomly the initial row, must be an integer
23065 included between 0 and UINT32_MAX. If not specified, or if explicitly
23066 set to -1, the filter will try to use a good random seed on a best
23067 effort basis.
23068
23069 @item rule
23070 Set the cellular automaton rule, it is a number ranging from 0 to 255.
23071 Default value is 110.
23072
23073 @item size, s
23074 Set the size of the output video. For the syntax of this option, check the
23075 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23076
23077 If @option{filename} or @option{pattern} is specified, the size is set
23078 by default to the width of the specified initial state row, and the
23079 height is set to @var{width} * PHI.
23080
23081 If @option{size} is set, it must contain the width of the specified
23082 pattern string, and the specified pattern will be centered in the
23083 larger row.
23084
23085 If a filename or a pattern string is not specified, the size value
23086 defaults to "320x518" (used for a randomly generated initial state).
23087
23088 @item scroll
23089 If set to 1, scroll the output upward when all the rows in the output
23090 have been already filled. If set to 0, the new generated row will be
23091 written over the top row just after the bottom row is filled.
23092 Defaults to 1.
23093
23094 @item start_full, full
23095 If set to 1, completely fill the output with generated rows before
23096 outputting the first frame.
23097 This is the default behavior, for disabling set the value to 0.
23098
23099 @item stitch
23100 If set to 1, stitch the left and right row edges together.
23101 This is the default behavior, for disabling set the value to 0.
23102 @end table
23103
23104 @subsection Examples
23105
23106 @itemize
23107 @item
23108 Read the initial state from @file{pattern}, and specify an output of
23109 size 200x400.
23110 @example
23111 cellauto=f=pattern:s=200x400
23112 @end example
23113
23114 @item
23115 Generate a random initial row with a width of 200 cells, with a fill
23116 ratio of 2/3:
23117 @example
23118 cellauto=ratio=2/3:s=200x200
23119 @end example
23120
23121 @item
23122 Create a pattern generated by rule 18 starting by a single alive cell
23123 centered on an initial row with width 100:
23124 @example
23125 cellauto=p=@@:s=100x400:full=0:rule=18
23126 @end example
23127
23128 @item
23129 Specify a more elaborated initial pattern:
23130 @example
23131 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
23132 @end example
23133
23134 @end itemize
23135
23136 @anchor{coreimagesrc}
23137 @section coreimagesrc
23138 Video source generated on GPU using Apple's CoreImage API on OSX.
23139
23140 This video source is a specialized version of the @ref{coreimage} video filter.
23141 Use a core image generator at the beginning of the applied filterchain to
23142 generate the content.
23143
23144 The coreimagesrc video source accepts the following options:
23145 @table @option
23146 @item list_generators
23147 List all available generators along with all their respective options as well as
23148 possible minimum and maximum values along with the default values.
23149 @example
23150 list_generators=true
23151 @end example
23152
23153 @item size, s
23154 Specify the size of the sourced video. For the syntax of this option, check the
23155 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23156 The default value is @code{320x240}.
23157
23158 @item rate, r
23159 Specify the frame rate of the sourced video, as the number of frames
23160 generated per second. It has to be a string in the format
23161 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23162 number or a valid video frame rate abbreviation. The default value is
23163 "25".
23164
23165 @item sar
23166 Set the sample aspect ratio of the sourced video.
23167
23168 @item duration, d
23169 Set the duration of the sourced video. See
23170 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23171 for the accepted syntax.
23172
23173 If not specified, or the expressed duration is negative, the video is
23174 supposed to be generated forever.
23175 @end table
23176
23177 Additionally, all options of the @ref{coreimage} video filter are accepted.
23178 A complete filterchain can be used for further processing of the
23179 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
23180 and examples for details.
23181
23182 @subsection Examples
23183
23184 @itemize
23185
23186 @item
23187 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
23188 given as complete and escaped command-line for Apple's standard bash shell:
23189 @example
23190 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
23191 @end example
23192 This example is equivalent to the QRCode example of @ref{coreimage} without the
23193 need for a nullsrc video source.
23194 @end itemize
23195
23196
23197 @section gradients
23198 Generate several gradients.
23199
23200 @table @option
23201 @item size, s
23202 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23203 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23204
23205 @item rate, r
23206 Set frame rate, expressed as number of frames per second. Default
23207 value is "25".
23208
23209 @item c0, c1, c2, c3, c4, c5, c6, c7
23210 Set 8 colors. Default values for colors is to pick random one.
23211
23212 @item x0, y0, y0, y1
23213 Set gradient line source and destination points. If negative or out of range, random ones
23214 are picked.
23215
23216 @item nb_colors, n
23217 Set number of colors to use at once. Allowed range is from 2 to 8. Default value is 2.
23218
23219 @item seed
23220 Set seed for picking gradient line points.
23221
23222 @item duration, d
23223 Set the duration of the sourced video. See
23224 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23225 for the accepted syntax.
23226
23227 If not specified, or the expressed duration is negative, the video is
23228 supposed to be generated forever.
23229
23230 @item speed
23231 Set speed of gradients rotation.
23232 @end table
23233
23234
23235 @section mandelbrot
23236
23237 Generate a Mandelbrot set fractal, and progressively zoom towards the
23238 point specified with @var{start_x} and @var{start_y}.
23239
23240 This source accepts the following options:
23241
23242 @table @option
23243
23244 @item end_pts
23245 Set the terminal pts value. Default value is 400.
23246
23247 @item end_scale
23248 Set the terminal scale value.
23249 Must be a floating point value. Default value is 0.3.
23250
23251 @item inner
23252 Set the inner coloring mode, that is the algorithm used to draw the
23253 Mandelbrot fractal internal region.
23254
23255 It shall assume one of the following values:
23256 @table @option
23257 @item black
23258 Set black mode.
23259 @item convergence
23260 Show time until convergence.
23261 @item mincol
23262 Set color based on point closest to the origin of the iterations.
23263 @item period
23264 Set period mode.
23265 @end table
23266
23267 Default value is @var{mincol}.
23268
23269 @item bailout
23270 Set the bailout value. Default value is 10.0.
23271
23272 @item maxiter
23273 Set the maximum of iterations performed by the rendering
23274 algorithm. Default value is 7189.
23275
23276 @item outer
23277 Set outer coloring mode.
23278 It shall assume one of following values:
23279 @table @option
23280 @item iteration_count
23281 Set iteration count mode.
23282 @item normalized_iteration_count
23283 set normalized iteration count mode.
23284 @end table
23285 Default value is @var{normalized_iteration_count}.
23286
23287 @item rate, r
23288 Set frame rate, expressed as number of frames per second. Default
23289 value is "25".
23290
23291 @item size, s
23292 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23293 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23294
23295 @item start_scale
23296 Set the initial scale value. Default value is 3.0.
23297
23298 @item start_x
23299 Set the initial x position. Must be a floating point value between
23300 -100 and 100. Default value is -0.743643887037158704752191506114774.
23301
23302 @item start_y
23303 Set the initial y position. Must be a floating point value between
23304 -100 and 100. Default value is -0.131825904205311970493132056385139.
23305 @end table
23306
23307 @section mptestsrc
23308
23309 Generate various test patterns, as generated by the MPlayer test filter.
23310
23311 The size of the generated video is fixed, and is 256x256.
23312 This source is useful in particular for testing encoding features.
23313
23314 This source accepts the following options:
23315
23316 @table @option
23317
23318 @item rate, r
23319 Specify the frame rate of the sourced video, as the number of frames
23320 generated per second. It has to be a string in the format
23321 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23322 number or a valid video frame rate abbreviation. The default value is
23323 "25".
23324
23325 @item duration, d
23326 Set the duration of the sourced video. See
23327 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23328 for the accepted syntax.
23329
23330 If not specified, or the expressed duration is negative, the video is
23331 supposed to be generated forever.
23332
23333 @item test, t
23334
23335 Set the number or the name of the test to perform. Supported tests are:
23336 @table @option
23337 @item dc_luma
23338 @item dc_chroma
23339 @item freq_luma
23340 @item freq_chroma
23341 @item amp_luma
23342 @item amp_chroma
23343 @item cbp
23344 @item mv
23345 @item ring1
23346 @item ring2
23347 @item all
23348
23349 @item max_frames, m
23350 Set the maximum number of frames generated for each test, default value is 30.
23351
23352 @end table
23353
23354 Default value is "all", which will cycle through the list of all tests.
23355 @end table
23356
23357 Some examples:
23358 @example
23359 mptestsrc=t=dc_luma
23360 @end example
23361
23362 will generate a "dc_luma" test pattern.
23363
23364 @section frei0r_src
23365
23366 Provide a frei0r source.
23367
23368 To enable compilation of this filter you need to install the frei0r
23369 header and configure FFmpeg with @code{--enable-frei0r}.
23370
23371 This source accepts the following parameters:
23372
23373 @table @option
23374
23375 @item size
23376 The size of the video to generate. For the syntax of this option, check the
23377 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23378
23379 @item framerate
23380 The framerate of the generated video. It may be a string of the form
23381 @var{num}/@var{den} or a frame rate abbreviation.
23382
23383 @item filter_name
23384 The name to the frei0r source to load. For more information regarding frei0r and
23385 how to set the parameters, read the @ref{frei0r} section in the video filters
23386 documentation.
23387
23388 @item filter_params
23389 A '|'-separated list of parameters to pass to the frei0r source.
23390
23391 @end table
23392
23393 For example, to generate a frei0r partik0l source with size 200x200
23394 and frame rate 10 which is overlaid on the overlay filter main input:
23395 @example
23396 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
23397 @end example
23398
23399 @section life
23400
23401 Generate a life pattern.
23402
23403 This source is based on a generalization of John Conway's life game.
23404
23405 The sourced input represents a life grid, each pixel represents a cell
23406 which can be in one of two possible states, alive or dead. Every cell
23407 interacts with its eight neighbours, which are the cells that are
23408 horizontally, vertically, or diagonally adjacent.
23409
23410 At each interaction the grid evolves according to the adopted rule,
23411 which specifies the number of neighbor alive cells which will make a
23412 cell stay alive or born. The @option{rule} option allows one to specify
23413 the rule to adopt.
23414
23415 This source accepts the following options:
23416
23417 @table @option
23418 @item filename, f
23419 Set the file from which to read the initial grid state. In the file,
23420 each non-whitespace character is considered an alive cell, and newline
23421 is used to delimit the end of each row.
23422
23423 If this option is not specified, the initial grid is generated
23424 randomly.
23425
23426 @item rate, r
23427 Set the video rate, that is the number of frames generated per second.
23428 Default is 25.
23429
23430 @item random_fill_ratio, ratio
23431 Set the random fill ratio for the initial random grid. It is a
23432 floating point number value ranging from 0 to 1, defaults to 1/PHI.
23433 It is ignored when a file is specified.
23434
23435 @item random_seed, seed
23436 Set the seed for filling the initial random grid, must be an integer
23437 included between 0 and UINT32_MAX. If not specified, or if explicitly
23438 set to -1, the filter will try to use a good random seed on a best
23439 effort basis.
23440
23441 @item rule
23442 Set the life rule.
23443
23444 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
23445 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
23446 @var{NS} specifies the number of alive neighbor cells which make a
23447 live cell stay alive, and @var{NB} the number of alive neighbor cells
23448 which make a dead cell to become alive (i.e. to "born").
23449 "s" and "b" can be used in place of "S" and "B", respectively.
23450
23451 Alternatively a rule can be specified by an 18-bits integer. The 9
23452 high order bits are used to encode the next cell state if it is alive
23453 for each number of neighbor alive cells, the low order bits specify
23454 the rule for "borning" new cells. Higher order bits encode for an
23455 higher number of neighbor cells.
23456 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
23457 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
23458
23459 Default value is "S23/B3", which is the original Conway's game of life
23460 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
23461 cells, and will born a new cell if there are three alive cells around
23462 a dead cell.
23463
23464 @item size, s
23465 Set the size of the output video. For the syntax of this option, check the
23466 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23467
23468 If @option{filename} is specified, the size is set by default to the
23469 same size of the input file. If @option{size} is set, it must contain
23470 the size specified in the input file, and the initial grid defined in
23471 that file is centered in the larger resulting area.
23472
23473 If a filename is not specified, the size value defaults to "320x240"
23474 (used for a randomly generated initial grid).
23475
23476 @item stitch
23477 If set to 1, stitch the left and right grid edges together, and the
23478 top and bottom edges also. Defaults to 1.
23479
23480 @item mold
23481 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
23482 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
23483 value from 0 to 255.
23484
23485 @item life_color
23486 Set the color of living (or new born) cells.
23487
23488 @item death_color
23489 Set the color of dead cells. If @option{mold} is set, this is the first color
23490 used to represent a dead cell.
23491
23492 @item mold_color
23493 Set mold color, for definitely dead and moldy cells.
23494
23495 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
23496 ffmpeg-utils manual,ffmpeg-utils}.
23497 @end table
23498
23499 @subsection Examples
23500
23501 @itemize
23502 @item
23503 Read a grid from @file{pattern}, and center it on a grid of size
23504 300x300 pixels:
23505 @example
23506 life=f=pattern:s=300x300
23507 @end example
23508
23509 @item
23510 Generate a random grid of size 200x200, with a fill ratio of 2/3:
23511 @example
23512 life=ratio=2/3:s=200x200
23513 @end example
23514
23515 @item
23516 Specify a custom rule for evolving a randomly generated grid:
23517 @example
23518 life=rule=S14/B34
23519 @end example
23520
23521 @item
23522 Full example with slow death effect (mold) using @command{ffplay}:
23523 @example
23524 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
23525 @end example
23526 @end itemize
23527
23528 @anchor{allrgb}
23529 @anchor{allyuv}
23530 @anchor{color}
23531 @anchor{haldclutsrc}
23532 @anchor{nullsrc}
23533 @anchor{pal75bars}
23534 @anchor{pal100bars}
23535 @anchor{rgbtestsrc}
23536 @anchor{smptebars}
23537 @anchor{smptehdbars}
23538 @anchor{testsrc}
23539 @anchor{testsrc2}
23540 @anchor{yuvtestsrc}
23541 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
23542
23543 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
23544
23545 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
23546
23547 The @code{color} source provides an uniformly colored input.
23548
23549 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
23550 @ref{haldclut} filter.
23551
23552 The @code{nullsrc} source returns unprocessed video frames. It is
23553 mainly useful to be employed in analysis / debugging tools, or as the
23554 source for filters which ignore the input data.
23555
23556 The @code{pal75bars} source generates a color bars pattern, based on
23557 EBU PAL recommendations with 75% color levels.
23558
23559 The @code{pal100bars} source generates a color bars pattern, based on
23560 EBU PAL recommendations with 100% color levels.
23561
23562 The @code{rgbtestsrc} source generates an RGB test pattern useful for
23563 detecting RGB vs BGR issues. You should see a red, green and blue
23564 stripe from top to bottom.
23565
23566 The @code{smptebars} source generates a color bars pattern, based on
23567 the SMPTE Engineering Guideline EG 1-1990.
23568
23569 The @code{smptehdbars} source generates a color bars pattern, based on
23570 the SMPTE RP 219-2002.
23571
23572 The @code{testsrc} source generates a test video pattern, showing a
23573 color pattern, a scrolling gradient and a timestamp. This is mainly
23574 intended for testing purposes.
23575
23576 The @code{testsrc2} source is similar to testsrc, but supports more
23577 pixel formats instead of just @code{rgb24}. This allows using it as an
23578 input for other tests without requiring a format conversion.
23579
23580 The @code{yuvtestsrc} source generates an YUV test pattern. You should
23581 see a y, cb and cr stripe from top to bottom.
23582
23583 The sources accept the following parameters:
23584
23585 @table @option
23586
23587 @item level
23588 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
23589 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
23590 pixels to be used as identity matrix for 3D lookup tables. Each component is
23591 coded on a @code{1/(N*N)} scale.
23592
23593 @item color, c
23594 Specify the color of the source, only available in the @code{color}
23595 source. For the syntax of this option, check the
23596 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
23597
23598 @item size, s
23599 Specify the size of the sourced video. For the syntax of this option, check the
23600 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23601 The default value is @code{320x240}.
23602
23603 This option is not available with the @code{allrgb}, @code{allyuv}, and
23604 @code{haldclutsrc} filters.
23605
23606 @item rate, r
23607 Specify the frame rate of the sourced video, as the number of frames
23608 generated per second. It has to be a string in the format
23609 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23610 number or a valid video frame rate abbreviation. The default value is
23611 "25".
23612
23613 @item duration, d
23614 Set the duration of the sourced video. See
23615 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23616 for the accepted syntax.
23617
23618 If not specified, or the expressed duration is negative, the video is
23619 supposed to be generated forever.
23620
23621 Since the frame rate is used as time base, all frames including the last one
23622 will have their full duration. If the specified duration is not a multiple
23623 of the frame duration, it will be rounded up.
23624
23625 @item sar
23626 Set the sample aspect ratio of the sourced video.
23627
23628 @item alpha
23629 Specify the alpha (opacity) of the background, only available in the
23630 @code{testsrc2} source. The value must be between 0 (fully transparent) and
23631 255 (fully opaque, the default).
23632
23633 @item decimals, n
23634 Set the number of decimals to show in the timestamp, only available in the
23635 @code{testsrc} source.
23636
23637 The displayed timestamp value will correspond to the original
23638 timestamp value multiplied by the power of 10 of the specified
23639 value. Default value is 0.
23640 @end table
23641
23642 @subsection Examples
23643
23644 @itemize
23645 @item
23646 Generate a video with a duration of 5.3 seconds, with size
23647 176x144 and a frame rate of 10 frames per second:
23648 @example
23649 testsrc=duration=5.3:size=qcif:rate=10
23650 @end example
23651
23652 @item
23653 The following graph description will generate a red source
23654 with an opacity of 0.2, with size "qcif" and a frame rate of 10
23655 frames per second:
23656 @example
23657 color=c=red@@0.2:s=qcif:r=10
23658 @end example
23659
23660 @item
23661 If the input content is to be ignored, @code{nullsrc} can be used. The
23662 following command generates noise in the luminance plane by employing
23663 the @code{geq} filter:
23664 @example
23665 nullsrc=s=256x256, geq=random(1)*255:128:128
23666 @end example
23667 @end itemize
23668
23669 @subsection Commands
23670
23671 The @code{color} source supports the following commands:
23672
23673 @table @option
23674 @item c, color
23675 Set the color of the created image. Accepts the same syntax of the
23676 corresponding @option{color} option.
23677 @end table
23678
23679 @section openclsrc
23680
23681 Generate video using an OpenCL program.
23682
23683 @table @option
23684
23685 @item source
23686 OpenCL program source file.
23687
23688 @item kernel
23689 Kernel name in program.
23690
23691 @item size, s
23692 Size of frames to generate.  This must be set.
23693
23694 @item format
23695 Pixel format to use for the generated frames.  This must be set.
23696
23697 @item rate, r
23698 Number of frames generated every second.  Default value is '25'.
23699
23700 @end table
23701
23702 For details of how the program loading works, see the @ref{program_opencl}
23703 filter.
23704
23705 Example programs:
23706
23707 @itemize
23708 @item
23709 Generate a colour ramp by setting pixel values from the position of the pixel
23710 in the output image.  (Note that this will work with all pixel formats, but
23711 the generated output will not be the same.)
23712 @verbatim
23713 __kernel void ramp(__write_only image2d_t dst,
23714                    unsigned int index)
23715 {
23716     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23717
23718     float4 val;
23719     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
23720
23721     write_imagef(dst, loc, val);
23722 }
23723 @end verbatim
23724
23725 @item
23726 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
23727 @verbatim
23728 __kernel void sierpinski_carpet(__write_only image2d_t dst,
23729                                 unsigned int index)
23730 {
23731     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23732
23733     float4 value = 0.0f;
23734     int x = loc.x + index;
23735     int y = loc.y + index;
23736     while (x > 0 || y > 0) {
23737         if (x % 3 == 1 && y % 3 == 1) {
23738             value = 1.0f;
23739             break;
23740         }
23741         x /= 3;
23742         y /= 3;
23743     }
23744
23745     write_imagef(dst, loc, value);
23746 }
23747 @end verbatim
23748
23749 @end itemize
23750
23751 @section sierpinski
23752
23753 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
23754
23755 This source accepts the following options:
23756
23757 @table @option
23758 @item size, s
23759 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23760 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23761
23762 @item rate, r
23763 Set frame rate, expressed as number of frames per second. Default
23764 value is "25".
23765
23766 @item seed
23767 Set seed which is used for random panning.
23768
23769 @item jump
23770 Set max jump for single pan destination. Allowed range is from 1 to 10000.
23771
23772 @item type
23773 Set fractal type, can be default @code{carpet} or @code{triangle}.
23774 @end table
23775
23776 @c man end VIDEO SOURCES
23777
23778 @chapter Video Sinks
23779 @c man begin VIDEO SINKS
23780
23781 Below is a description of the currently available video sinks.
23782
23783 @section buffersink
23784
23785 Buffer video frames, and make them available to the end of the filter
23786 graph.
23787
23788 This sink is mainly intended for programmatic use, in particular
23789 through the interface defined in @file{libavfilter/buffersink.h}
23790 or the options system.
23791
23792 It accepts a pointer to an AVBufferSinkContext structure, which
23793 defines the incoming buffers' formats, to be passed as the opaque
23794 parameter to @code{avfilter_init_filter} for initialization.
23795
23796 @section nullsink
23797
23798 Null video sink: do absolutely nothing with the input video. It is
23799 mainly useful as a template and for use in analysis / debugging
23800 tools.
23801
23802 @c man end VIDEO SINKS
23803
23804 @chapter Multimedia Filters
23805 @c man begin MULTIMEDIA FILTERS
23806
23807 Below is a description of the currently available multimedia filters.
23808
23809 @section abitscope
23810
23811 Convert input audio to a video output, displaying the audio bit scope.
23812
23813 The filter accepts the following options:
23814
23815 @table @option
23816 @item rate, r
23817 Set frame rate, expressed as number of frames per second. Default
23818 value is "25".
23819
23820 @item size, s
23821 Specify the video size for the output. For the syntax of this option, check the
23822 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23823 Default value is @code{1024x256}.
23824
23825 @item colors
23826 Specify list of colors separated by space or by '|' which will be used to
23827 draw channels. Unrecognized or missing colors will be replaced
23828 by white color.
23829 @end table
23830
23831 @section adrawgraph
23832 Draw a graph using input audio metadata.
23833
23834 See @ref{drawgraph}
23835
23836 @section agraphmonitor
23837
23838 See @ref{graphmonitor}.
23839
23840 @section ahistogram
23841
23842 Convert input audio to a video output, displaying the volume histogram.
23843
23844 The filter accepts the following options:
23845
23846 @table @option
23847 @item dmode
23848 Specify how histogram is calculated.
23849
23850 It accepts the following values:
23851 @table @samp
23852 @item single
23853 Use single histogram for all channels.
23854 @item separate
23855 Use separate histogram for each channel.
23856 @end table
23857 Default is @code{single}.
23858
23859 @item rate, r
23860 Set frame rate, expressed as number of frames per second. Default
23861 value is "25".
23862
23863 @item size, s
23864 Specify the video size for the output. For the syntax of this option, check the
23865 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23866 Default value is @code{hd720}.
23867
23868 @item scale
23869 Set display scale.
23870
23871 It accepts the following values:
23872 @table @samp
23873 @item log
23874 logarithmic
23875 @item sqrt
23876 square root
23877 @item cbrt
23878 cubic root
23879 @item lin
23880 linear
23881 @item rlog
23882 reverse logarithmic
23883 @end table
23884 Default is @code{log}.
23885
23886 @item ascale
23887 Set amplitude scale.
23888
23889 It accepts the following values:
23890 @table @samp
23891 @item log
23892 logarithmic
23893 @item lin
23894 linear
23895 @end table
23896 Default is @code{log}.
23897
23898 @item acount
23899 Set how much frames to accumulate in histogram.
23900 Default is 1. Setting this to -1 accumulates all frames.
23901
23902 @item rheight
23903 Set histogram ratio of window height.
23904
23905 @item slide
23906 Set sonogram sliding.
23907
23908 It accepts the following values:
23909 @table @samp
23910 @item replace
23911 replace old rows with new ones.
23912 @item scroll
23913 scroll from top to bottom.
23914 @end table
23915 Default is @code{replace}.
23916 @end table
23917
23918 @section aphasemeter
23919
23920 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
23921 representing mean phase of current audio frame. A video output can also be produced and is
23922 enabled by default. The audio is passed through as first output.
23923
23924 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
23925 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
23926 and @code{1} means channels are in phase.
23927
23928 The filter accepts the following options, all related to its video output:
23929
23930 @table @option
23931 @item rate, r
23932 Set the output frame rate. Default value is @code{25}.
23933
23934 @item size, s
23935 Set the video size for the output. For the syntax of this option, check the
23936 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23937 Default value is @code{800x400}.
23938
23939 @item rc
23940 @item gc
23941 @item bc
23942 Specify the red, green, blue contrast. Default values are @code{2},
23943 @code{7} and @code{1}.
23944 Allowed range is @code{[0, 255]}.
23945
23946 @item mpc
23947 Set color which will be used for drawing median phase. If color is
23948 @code{none} which is default, no median phase value will be drawn.
23949
23950 @item video
23951 Enable video output. Default is enabled.
23952 @end table
23953
23954 @subsection phasing detection
23955
23956 The filter also detects out of phase and mono sequences in stereo streams.
23957 It logs the sequence start, end and duration when it lasts longer or as long as the minimum set.
23958
23959 The filter accepts the following options for this detection:
23960
23961 @table @option
23962 @item phasing
23963 Enable mono and out of phase detection. Default is disabled.
23964
23965 @item tolerance, t
23966 Set phase tolerance for mono detection, in amplitude ratio. Default is @code{0}.
23967 Allowed range is @code{[0, 1]}.
23968
23969 @item angle, a
23970 Set angle threshold for out of phase detection, in degree. Default is @code{170}.
23971 Allowed range is @code{[90, 180]}.
23972
23973 @item duration, d
23974 Set mono or out of phase duration until notification, expressed in seconds. Default is @code{2}.
23975 @end table
23976
23977 @subsection Examples
23978
23979 @itemize
23980 @item
23981 Complete example with @command{ffmpeg} to detect 1 second of mono with 0.001 phase tolerance:
23982 @example
23983 ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
23984 @end example
23985 @end itemize
23986
23987 @section avectorscope
23988
23989 Convert input audio to a video output, representing the audio vector
23990 scope.
23991
23992 The filter is used to measure the difference between channels of stereo
23993 audio stream. A monaural signal, consisting of identical left and right
23994 signal, results in straight vertical line. Any stereo separation is visible
23995 as a deviation from this line, creating a Lissajous figure.
23996 If the straight (or deviation from it) but horizontal line appears this
23997 indicates that the left and right channels are out of phase.
23998
23999 The filter accepts the following options:
24000
24001 @table @option
24002 @item mode, m
24003 Set the vectorscope mode.
24004
24005 Available values are:
24006 @table @samp
24007 @item lissajous
24008 Lissajous rotated by 45 degrees.
24009
24010 @item lissajous_xy
24011 Same as above but not rotated.
24012
24013 @item polar
24014 Shape resembling half of circle.
24015 @end table
24016
24017 Default value is @samp{lissajous}.
24018
24019 @item size, s
24020 Set the video size for the output. For the syntax of this option, check the
24021 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24022 Default value is @code{400x400}.
24023
24024 @item rate, r
24025 Set the output frame rate. Default value is @code{25}.
24026
24027 @item rc
24028 @item gc
24029 @item bc
24030 @item ac
24031 Specify the red, green, blue and alpha contrast. Default values are @code{40},
24032 @code{160}, @code{80} and @code{255}.
24033 Allowed range is @code{[0, 255]}.
24034
24035 @item rf
24036 @item gf
24037 @item bf
24038 @item af
24039 Specify the red, green, blue and alpha fade. Default values are @code{15},
24040 @code{10}, @code{5} and @code{5}.
24041 Allowed range is @code{[0, 255]}.
24042
24043 @item zoom
24044 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
24045 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
24046
24047 @item draw
24048 Set the vectorscope drawing mode.
24049
24050 Available values are:
24051 @table @samp
24052 @item dot
24053 Draw dot for each sample.
24054
24055 @item line
24056 Draw line between previous and current sample.
24057 @end table
24058
24059 Default value is @samp{dot}.
24060
24061 @item scale
24062 Specify amplitude scale of audio samples.
24063
24064 Available values are:
24065 @table @samp
24066 @item lin
24067 Linear.
24068
24069 @item sqrt
24070 Square root.
24071
24072 @item cbrt
24073 Cubic root.
24074
24075 @item log
24076 Logarithmic.
24077 @end table
24078
24079 @item swap
24080 Swap left channel axis with right channel axis.
24081
24082 @item mirror
24083 Mirror axis.
24084
24085 @table @samp
24086 @item none
24087 No mirror.
24088
24089 @item x
24090 Mirror only x axis.
24091
24092 @item y
24093 Mirror only y axis.
24094
24095 @item xy
24096 Mirror both axis.
24097 @end table
24098
24099 @end table
24100
24101 @subsection Examples
24102
24103 @itemize
24104 @item
24105 Complete example using @command{ffplay}:
24106 @example
24107 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
24108              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
24109 @end example
24110 @end itemize
24111
24112 @section bench, abench
24113
24114 Benchmark part of a filtergraph.
24115
24116 The filter accepts the following options:
24117
24118 @table @option
24119 @item action
24120 Start or stop a timer.
24121
24122 Available values are:
24123 @table @samp
24124 @item start
24125 Get the current time, set it as frame metadata (using the key
24126 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
24127
24128 @item stop
24129 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
24130 the input frame metadata to get the time difference. Time difference, average,
24131 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
24132 @code{min}) are then printed. The timestamps are expressed in seconds.
24133 @end table
24134 @end table
24135
24136 @subsection Examples
24137
24138 @itemize
24139 @item
24140 Benchmark @ref{selectivecolor} filter:
24141 @example
24142 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
24143 @end example
24144 @end itemize
24145
24146 @section concat
24147
24148 Concatenate audio and video streams, joining them together one after the
24149 other.
24150
24151 The filter works on segments of synchronized video and audio streams. All
24152 segments must have the same number of streams of each type, and that will
24153 also be the number of streams at output.
24154
24155 The filter accepts the following options:
24156
24157 @table @option
24158
24159 @item n
24160 Set the number of segments. Default is 2.
24161
24162 @item v
24163 Set the number of output video streams, that is also the number of video
24164 streams in each segment. Default is 1.
24165
24166 @item a
24167 Set the number of output audio streams, that is also the number of audio
24168 streams in each segment. Default is 0.
24169
24170 @item unsafe
24171 Activate unsafe mode: do not fail if segments have a different format.
24172
24173 @end table
24174
24175 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
24176 @var{a} audio outputs.
24177
24178 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
24179 segment, in the same order as the outputs, then the inputs for the second
24180 segment, etc.
24181
24182 Related streams do not always have exactly the same duration, for various
24183 reasons including codec frame size or sloppy authoring. For that reason,
24184 related synchronized streams (e.g. a video and its audio track) should be
24185 concatenated at once. The concat filter will use the duration of the longest
24186 stream in each segment (except the last one), and if necessary pad shorter
24187 audio streams with silence.
24188
24189 For this filter to work correctly, all segments must start at timestamp 0.
24190
24191 All corresponding streams must have the same parameters in all segments; the
24192 filtering system will automatically select a common pixel format for video
24193 streams, and a common sample format, sample rate and channel layout for
24194 audio streams, but other settings, such as resolution, must be converted
24195 explicitly by the user.
24196
24197 Different frame rates are acceptable but will result in variable frame rate
24198 at output; be sure to configure the output file to handle it.
24199
24200 @subsection Examples
24201
24202 @itemize
24203 @item
24204 Concatenate an opening, an episode and an ending, all in bilingual version
24205 (video in stream 0, audio in streams 1 and 2):
24206 @example
24207 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
24208   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
24209    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
24210   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
24211 @end example
24212
24213 @item
24214 Concatenate two parts, handling audio and video separately, using the
24215 (a)movie sources, and adjusting the resolution:
24216 @example
24217 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
24218 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
24219 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
24220 @end example
24221 Note that a desync will happen at the stitch if the audio and video streams
24222 do not have exactly the same duration in the first file.
24223
24224 @end itemize
24225
24226 @subsection Commands
24227
24228 This filter supports the following commands:
24229 @table @option
24230 @item next
24231 Close the current segment and step to the next one
24232 @end table
24233
24234 @anchor{ebur128}
24235 @section ebur128
24236
24237 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
24238 level. By default, it logs a message at a frequency of 10Hz with the
24239 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
24240 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
24241
24242 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
24243 sample format is double-precision floating point. The input stream will be converted to
24244 this specification, if needed. Users may need to insert aformat and/or aresample filters
24245 after this filter to obtain the original parameters.
24246
24247 The filter also has a video output (see the @var{video} option) with a real
24248 time graph to observe the loudness evolution. The graphic contains the logged
24249 message mentioned above, so it is not printed anymore when this option is set,
24250 unless the verbose logging is set. The main graphing area contains the
24251 short-term loudness (3 seconds of analysis), and the gauge on the right is for
24252 the momentary loudness (400 milliseconds), but can optionally be configured
24253 to instead display short-term loudness (see @var{gauge}).
24254
24255 The green area marks a  +/- 1LU target range around the target loudness
24256 (-23LUFS by default, unless modified through @var{target}).
24257
24258 More information about the Loudness Recommendation EBU R128 on
24259 @url{http://tech.ebu.ch/loudness}.
24260
24261 The filter accepts the following options:
24262
24263 @table @option
24264
24265 @item video
24266 Activate the video output. The audio stream is passed unchanged whether this
24267 option is set or no. The video stream will be the first output stream if
24268 activated. Default is @code{0}.
24269
24270 @item size
24271 Set the video size. This option is for video only. For the syntax of this
24272 option, check the
24273 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24274 Default and minimum resolution is @code{640x480}.
24275
24276 @item meter
24277 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
24278 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
24279 other integer value between this range is allowed.
24280
24281 @item metadata
24282 Set metadata injection. If set to @code{1}, the audio input will be segmented
24283 into 100ms output frames, each of them containing various loudness information
24284 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
24285
24286 Default is @code{0}.
24287
24288 @item framelog
24289 Force the frame logging level.
24290
24291 Available values are:
24292 @table @samp
24293 @item info
24294 information logging level
24295 @item verbose
24296 verbose logging level
24297 @end table
24298
24299 By default, the logging level is set to @var{info}. If the @option{video} or
24300 the @option{metadata} options are set, it switches to @var{verbose}.
24301
24302 @item peak
24303 Set peak mode(s).
24304
24305 Available modes can be cumulated (the option is a @code{flag} type). Possible
24306 values are:
24307 @table @samp
24308 @item none
24309 Disable any peak mode (default).
24310 @item sample
24311 Enable sample-peak mode.
24312
24313 Simple peak mode looking for the higher sample value. It logs a message
24314 for sample-peak (identified by @code{SPK}).
24315 @item true
24316 Enable true-peak mode.
24317
24318 If enabled, the peak lookup is done on an over-sampled version of the input
24319 stream for better peak accuracy. It logs a message for true-peak.
24320 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
24321 This mode requires a build with @code{libswresample}.
24322 @end table
24323
24324 @item dualmono
24325 Treat mono input files as "dual mono". If a mono file is intended for playback
24326 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
24327 If set to @code{true}, this option will compensate for this effect.
24328 Multi-channel input files are not affected by this option.
24329
24330 @item panlaw
24331 Set a specific pan law to be used for the measurement of dual mono files.
24332 This parameter is optional, and has a default value of -3.01dB.
24333
24334 @item target
24335 Set a specific target level (in LUFS) used as relative zero in the visualization.
24336 This parameter is optional and has a default value of -23LUFS as specified
24337 by EBU R128. However, material published online may prefer a level of -16LUFS
24338 (e.g. for use with podcasts or video platforms).
24339
24340 @item gauge
24341 Set the value displayed by the gauge. Valid values are @code{momentary} and s
24342 @code{shortterm}. By default the momentary value will be used, but in certain
24343 scenarios it may be more useful to observe the short term value instead (e.g.
24344 live mixing).
24345
24346 @item scale
24347 Sets the display scale for the loudness. Valid parameters are @code{absolute}
24348 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
24349 video output, not the summary or continuous log output.
24350 @end table
24351
24352 @subsection Examples
24353
24354 @itemize
24355 @item
24356 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
24357 @example
24358 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
24359 @end example
24360
24361 @item
24362 Run an analysis with @command{ffmpeg}:
24363 @example
24364 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
24365 @end example
24366 @end itemize
24367
24368 @section interleave, ainterleave
24369
24370 Temporally interleave frames from several inputs.
24371
24372 @code{interleave} works with video inputs, @code{ainterleave} with audio.
24373
24374 These filters read frames from several inputs and send the oldest
24375 queued frame to the output.
24376
24377 Input streams must have well defined, monotonically increasing frame
24378 timestamp values.
24379
24380 In order to submit one frame to output, these filters need to enqueue
24381 at least one frame for each input, so they cannot work in case one
24382 input is not yet terminated and will not receive incoming frames.
24383
24384 For example consider the case when one input is a @code{select} filter
24385 which always drops input frames. The @code{interleave} filter will keep
24386 reading from that input, but it will never be able to send new frames
24387 to output until the input sends an end-of-stream signal.
24388
24389 Also, depending on inputs synchronization, the filters will drop
24390 frames in case one input receives more frames than the other ones, and
24391 the queue is already filled.
24392
24393 These filters accept the following options:
24394
24395 @table @option
24396 @item nb_inputs, n
24397 Set the number of different inputs, it is 2 by default.
24398
24399 @item duration
24400 How to determine the end-of-stream.
24401
24402 @table @option
24403 @item longest
24404 The duration of the longest input. (default)
24405
24406 @item shortest
24407 The duration of the shortest input.
24408
24409 @item first
24410 The duration of the first input.
24411 @end table
24412
24413 @end table
24414
24415 @subsection Examples
24416
24417 @itemize
24418 @item
24419 Interleave frames belonging to different streams using @command{ffmpeg}:
24420 @example
24421 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
24422 @end example
24423
24424 @item
24425 Add flickering blur effect:
24426 @example
24427 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
24428 @end example
24429 @end itemize
24430
24431 @section metadata, ametadata
24432
24433 Manipulate frame metadata.
24434
24435 This filter accepts the following options:
24436
24437 @table @option
24438 @item mode
24439 Set mode of operation of the filter.
24440
24441 Can be one of the following:
24442
24443 @table @samp
24444 @item select
24445 If both @code{value} and @code{key} is set, select frames
24446 which have such metadata. If only @code{key} is set, select
24447 every frame that has such key in metadata.
24448
24449 @item add
24450 Add new metadata @code{key} and @code{value}. If key is already available
24451 do nothing.
24452
24453 @item modify
24454 Modify value of already present key.
24455
24456 @item delete
24457 If @code{value} is set, delete only keys that have such value.
24458 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
24459 the frame.
24460
24461 @item print
24462 Print key and its value if metadata was found. If @code{key} is not set print all
24463 metadata values available in frame.
24464 @end table
24465
24466 @item key
24467 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
24468
24469 @item value
24470 Set metadata value which will be used. This option is mandatory for
24471 @code{modify} and @code{add} mode.
24472
24473 @item function
24474 Which function to use when comparing metadata value and @code{value}.
24475
24476 Can be one of following:
24477
24478 @table @samp
24479 @item same_str
24480 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
24481
24482 @item starts_with
24483 Values are interpreted as strings, returns true if metadata value starts with
24484 the @code{value} option string.
24485
24486 @item less
24487 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
24488
24489 @item equal
24490 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
24491
24492 @item greater
24493 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
24494
24495 @item expr
24496 Values are interpreted as floats, returns true if expression from option @code{expr}
24497 evaluates to true.
24498
24499 @item ends_with
24500 Values are interpreted as strings, returns true if metadata value ends with
24501 the @code{value} option string.
24502 @end table
24503
24504 @item expr
24505 Set expression which is used when @code{function} is set to @code{expr}.
24506 The expression is evaluated through the eval API and can contain the following
24507 constants:
24508
24509 @table @option
24510 @item VALUE1
24511 Float representation of @code{value} from metadata key.
24512
24513 @item VALUE2
24514 Float representation of @code{value} as supplied by user in @code{value} option.
24515 @end table
24516
24517 @item file
24518 If specified in @code{print} mode, output is written to the named file. Instead of
24519 plain filename any writable url can be specified. Filename ``-'' is a shorthand
24520 for standard output. If @code{file} option is not set, output is written to the log
24521 with AV_LOG_INFO loglevel.
24522
24523 @item direct
24524 Reduces buffering in print mode when output is written to a URL set using @var{file}.
24525
24526 @end table
24527
24528 @subsection Examples
24529
24530 @itemize
24531 @item
24532 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
24533 between 0 and 1.
24534 @example
24535 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
24536 @end example
24537 @item
24538 Print silencedetect output to file @file{metadata.txt}.
24539 @example
24540 silencedetect,ametadata=mode=print:file=metadata.txt
24541 @end example
24542 @item
24543 Direct all metadata to a pipe with file descriptor 4.
24544 @example
24545 metadata=mode=print:file='pipe\:4'
24546 @end example
24547 @end itemize
24548
24549 @section perms, aperms
24550
24551 Set read/write permissions for the output frames.
24552
24553 These filters are mainly aimed at developers to test direct path in the
24554 following filter in the filtergraph.
24555
24556 The filters accept the following options:
24557
24558 @table @option
24559 @item mode
24560 Select the permissions mode.
24561
24562 It accepts the following values:
24563 @table @samp
24564 @item none
24565 Do nothing. This is the default.
24566 @item ro
24567 Set all the output frames read-only.
24568 @item rw
24569 Set all the output frames directly writable.
24570 @item toggle
24571 Make the frame read-only if writable, and writable if read-only.
24572 @item random
24573 Set each output frame read-only or writable randomly.
24574 @end table
24575
24576 @item seed
24577 Set the seed for the @var{random} mode, must be an integer included between
24578 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
24579 @code{-1}, the filter will try to use a good random seed on a best effort
24580 basis.
24581 @end table
24582
24583 Note: in case of auto-inserted filter between the permission filter and the
24584 following one, the permission might not be received as expected in that
24585 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
24586 perms/aperms filter can avoid this problem.
24587
24588 @section realtime, arealtime
24589
24590 Slow down filtering to match real time approximately.
24591
24592 These filters will pause the filtering for a variable amount of time to
24593 match the output rate with the input timestamps.
24594 They are similar to the @option{re} option to @code{ffmpeg}.
24595
24596 They accept the following options:
24597
24598 @table @option
24599 @item limit
24600 Time limit for the pauses. Any pause longer than that will be considered
24601 a timestamp discontinuity and reset the timer. Default is 2 seconds.
24602 @item speed
24603 Speed factor for processing. The value must be a float larger than zero.
24604 Values larger than 1.0 will result in faster than realtime processing,
24605 smaller will slow processing down. The @var{limit} is automatically adapted
24606 accordingly. Default is 1.0.
24607
24608 A processing speed faster than what is possible without these filters cannot
24609 be achieved.
24610 @end table
24611
24612 @anchor{select}
24613 @section select, aselect
24614
24615 Select frames to pass in output.
24616
24617 This filter accepts the following options:
24618
24619 @table @option
24620
24621 @item expr, e
24622 Set expression, which is evaluated for each input frame.
24623
24624 If the expression is evaluated to zero, the frame is discarded.
24625
24626 If the evaluation result is negative or NaN, the frame is sent to the
24627 first output; otherwise it is sent to the output with index
24628 @code{ceil(val)-1}, assuming that the input index starts from 0.
24629
24630 For example a value of @code{1.2} corresponds to the output with index
24631 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
24632
24633 @item outputs, n
24634 Set the number of outputs. The output to which to send the selected
24635 frame is based on the result of the evaluation. Default value is 1.
24636 @end table
24637
24638 The expression can contain the following constants:
24639
24640 @table @option
24641 @item n
24642 The (sequential) number of the filtered frame, starting from 0.
24643
24644 @item selected_n
24645 The (sequential) number of the selected frame, starting from 0.
24646
24647 @item prev_selected_n
24648 The sequential number of the last selected frame. It's NAN if undefined.
24649
24650 @item TB
24651 The timebase of the input timestamps.
24652
24653 @item pts
24654 The PTS (Presentation TimeStamp) of the filtered video frame,
24655 expressed in @var{TB} units. It's NAN if undefined.
24656
24657 @item t
24658 The PTS of the filtered video frame,
24659 expressed in seconds. It's NAN if undefined.
24660
24661 @item prev_pts
24662 The PTS of the previously filtered video frame. It's NAN if undefined.
24663
24664 @item prev_selected_pts
24665 The PTS of the last previously filtered video frame. It's NAN if undefined.
24666
24667 @item prev_selected_t
24668 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
24669
24670 @item start_pts
24671 The PTS of the first video frame in the video. It's NAN if undefined.
24672
24673 @item start_t
24674 The time of the first video frame in the video. It's NAN if undefined.
24675
24676 @item pict_type @emph{(video only)}
24677 The type of the filtered frame. It can assume one of the following
24678 values:
24679 @table @option
24680 @item I
24681 @item P
24682 @item B
24683 @item S
24684 @item SI
24685 @item SP
24686 @item BI
24687 @end table
24688
24689 @item interlace_type @emph{(video only)}
24690 The frame interlace type. It can assume one of the following values:
24691 @table @option
24692 @item PROGRESSIVE
24693 The frame is progressive (not interlaced).
24694 @item TOPFIRST
24695 The frame is top-field-first.
24696 @item BOTTOMFIRST
24697 The frame is bottom-field-first.
24698 @end table
24699
24700 @item consumed_sample_n @emph{(audio only)}
24701 the number of selected samples before the current frame
24702
24703 @item samples_n @emph{(audio only)}
24704 the number of samples in the current frame
24705
24706 @item sample_rate @emph{(audio only)}
24707 the input sample rate
24708
24709 @item key
24710 This is 1 if the filtered frame is a key-frame, 0 otherwise.
24711
24712 @item pos
24713 the position in the file of the filtered frame, -1 if the information
24714 is not available (e.g. for synthetic video)
24715
24716 @item scene @emph{(video only)}
24717 value between 0 and 1 to indicate a new scene; a low value reflects a low
24718 probability for the current frame to introduce a new scene, while a higher
24719 value means the current frame is more likely to be one (see the example below)
24720
24721 @item concatdec_select
24722 The concat demuxer can select only part of a concat input file by setting an
24723 inpoint and an outpoint, but the output packets may not be entirely contained
24724 in the selected interval. By using this variable, it is possible to skip frames
24725 generated by the concat demuxer which are not exactly contained in the selected
24726 interval.
24727
24728 This works by comparing the frame pts against the @var{lavf.concat.start_time}
24729 and the @var{lavf.concat.duration} packet metadata values which are also
24730 present in the decoded frames.
24731
24732 The @var{concatdec_select} variable is -1 if the frame pts is at least
24733 start_time and either the duration metadata is missing or the frame pts is less
24734 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
24735 missing.
24736
24737 That basically means that an input frame is selected if its pts is within the
24738 interval set by the concat demuxer.
24739
24740 @end table
24741
24742 The default value of the select expression is "1".
24743
24744 @subsection Examples
24745
24746 @itemize
24747 @item
24748 Select all frames in input:
24749 @example
24750 select
24751 @end example
24752
24753 The example above is the same as:
24754 @example
24755 select=1
24756 @end example
24757
24758 @item
24759 Skip all frames:
24760 @example
24761 select=0
24762 @end example
24763
24764 @item
24765 Select only I-frames:
24766 @example
24767 select='eq(pict_type\,I)'
24768 @end example
24769
24770 @item
24771 Select one frame every 100:
24772 @example
24773 select='not(mod(n\,100))'
24774 @end example
24775
24776 @item
24777 Select only frames contained in the 10-20 time interval:
24778 @example
24779 select=between(t\,10\,20)
24780 @end example
24781
24782 @item
24783 Select only I-frames contained in the 10-20 time interval:
24784 @example
24785 select=between(t\,10\,20)*eq(pict_type\,I)
24786 @end example
24787
24788 @item
24789 Select frames with a minimum distance of 10 seconds:
24790 @example
24791 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
24792 @end example
24793
24794 @item
24795 Use aselect to select only audio frames with samples number > 100:
24796 @example
24797 aselect='gt(samples_n\,100)'
24798 @end example
24799
24800 @item
24801 Create a mosaic of the first scenes:
24802 @example
24803 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
24804 @end example
24805
24806 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
24807 choice.
24808
24809 @item
24810 Send even and odd frames to separate outputs, and compose them:
24811 @example
24812 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
24813 @end example
24814
24815 @item
24816 Select useful frames from an ffconcat file which is using inpoints and
24817 outpoints but where the source files are not intra frame only.
24818 @example
24819 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
24820 @end example
24821 @end itemize
24822
24823 @section sendcmd, asendcmd
24824
24825 Send commands to filters in the filtergraph.
24826
24827 These filters read commands to be sent to other filters in the
24828 filtergraph.
24829
24830 @code{sendcmd} must be inserted between two video filters,
24831 @code{asendcmd} must be inserted between two audio filters, but apart
24832 from that they act the same way.
24833
24834 The specification of commands can be provided in the filter arguments
24835 with the @var{commands} option, or in a file specified by the
24836 @var{filename} option.
24837
24838 These filters accept the following options:
24839 @table @option
24840 @item commands, c
24841 Set the commands to be read and sent to the other filters.
24842 @item filename, f
24843 Set the filename of the commands to be read and sent to the other
24844 filters.
24845 @end table
24846
24847 @subsection Commands syntax
24848
24849 A commands description consists of a sequence of interval
24850 specifications, comprising a list of commands to be executed when a
24851 particular event related to that interval occurs. The occurring event
24852 is typically the current frame time entering or leaving a given time
24853 interval.
24854
24855 An interval is specified by the following syntax:
24856 @example
24857 @var{START}[-@var{END}] @var{COMMANDS};
24858 @end example
24859
24860 The time interval is specified by the @var{START} and @var{END} times.
24861 @var{END} is optional and defaults to the maximum time.
24862
24863 The current frame time is considered within the specified interval if
24864 it is included in the interval [@var{START}, @var{END}), that is when
24865 the time is greater or equal to @var{START} and is lesser than
24866 @var{END}.
24867
24868 @var{COMMANDS} consists of a sequence of one or more command
24869 specifications, separated by ",", relating to that interval.  The
24870 syntax of a command specification is given by:
24871 @example
24872 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
24873 @end example
24874
24875 @var{FLAGS} is optional and specifies the type of events relating to
24876 the time interval which enable sending the specified command, and must
24877 be a non-null sequence of identifier flags separated by "+" or "|" and
24878 enclosed between "[" and "]".
24879
24880 The following flags are recognized:
24881 @table @option
24882 @item enter
24883 The command is sent when the current frame timestamp enters the
24884 specified interval. In other words, the command is sent when the
24885 previous frame timestamp was not in the given interval, and the
24886 current is.
24887
24888 @item leave
24889 The command is sent when the current frame timestamp leaves the
24890 specified interval. In other words, the command is sent when the
24891 previous frame timestamp was in the given interval, and the
24892 current is not.
24893
24894 @item expr
24895 The command @var{ARG} is interpreted as expression and result of
24896 expression is passed as @var{ARG}.
24897
24898 The expression is evaluated through the eval API and can contain the following
24899 constants:
24900
24901 @table @option
24902 @item POS
24903 Original position in the file of the frame, or undefined if undefined
24904 for the current frame.
24905
24906 @item PTS
24907 The presentation timestamp in input.
24908
24909 @item N
24910 The count of the input frame for video or audio, starting from 0.
24911
24912 @item T
24913 The time in seconds of the current frame.
24914
24915 @item TS
24916 The start time in seconds of the current command interval.
24917
24918 @item TE
24919 The end time in seconds of the current command interval.
24920
24921 @item TI
24922 The interpolated time of the current command interval, TI = (T - TS) / (TE - TS).
24923 @end table
24924
24925 @end table
24926
24927 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
24928 assumed.
24929
24930 @var{TARGET} specifies the target of the command, usually the name of
24931 the filter class or a specific filter instance name.
24932
24933 @var{COMMAND} specifies the name of the command for the target filter.
24934
24935 @var{ARG} is optional and specifies the optional list of argument for
24936 the given @var{COMMAND}.
24937
24938 Between one interval specification and another, whitespaces, or
24939 sequences of characters starting with @code{#} until the end of line,
24940 are ignored and can be used to annotate comments.
24941
24942 A simplified BNF description of the commands specification syntax
24943 follows:
24944 @example
24945 @var{COMMAND_FLAG}  ::= "enter" | "leave"
24946 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
24947 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
24948 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
24949 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
24950 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
24951 @end example
24952
24953 @subsection Examples
24954
24955 @itemize
24956 @item
24957 Specify audio tempo change at second 4:
24958 @example
24959 asendcmd=c='4.0 atempo tempo 1.5',atempo
24960 @end example
24961
24962 @item
24963 Target a specific filter instance:
24964 @example
24965 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
24966 @end example
24967
24968 @item
24969 Specify a list of drawtext and hue commands in a file.
24970 @example
24971 # show text in the interval 5-10
24972 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
24973          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
24974
24975 # desaturate the image in the interval 15-20
24976 15.0-20.0 [enter] hue s 0,
24977           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
24978           [leave] hue s 1,
24979           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
24980
24981 # apply an exponential saturation fade-out effect, starting from time 25
24982 25 [enter] hue s exp(25-t)
24983 @end example
24984
24985 A filtergraph allowing to read and process the above command list
24986 stored in a file @file{test.cmd}, can be specified with:
24987 @example
24988 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
24989 @end example
24990 @end itemize
24991
24992 @anchor{setpts}
24993 @section setpts, asetpts
24994
24995 Change the PTS (presentation timestamp) of the input frames.
24996
24997 @code{setpts} works on video frames, @code{asetpts} on audio frames.
24998
24999 This filter accepts the following options:
25000
25001 @table @option
25002
25003 @item expr
25004 The expression which is evaluated for each frame to construct its timestamp.
25005
25006 @end table
25007
25008 The expression is evaluated through the eval API and can contain the following
25009 constants:
25010
25011 @table @option
25012 @item FRAME_RATE, FR
25013 frame rate, only defined for constant frame-rate video
25014
25015 @item PTS
25016 The presentation timestamp in input
25017
25018 @item N
25019 The count of the input frame for video or the number of consumed samples,
25020 not including the current frame for audio, starting from 0.
25021
25022 @item NB_CONSUMED_SAMPLES
25023 The number of consumed samples, not including the current frame (only
25024 audio)
25025
25026 @item NB_SAMPLES, S
25027 The number of samples in the current frame (only audio)
25028
25029 @item SAMPLE_RATE, SR
25030 The audio sample rate.
25031
25032 @item STARTPTS
25033 The PTS of the first frame.
25034
25035 @item STARTT
25036 the time in seconds of the first frame
25037
25038 @item INTERLACED
25039 State whether the current frame is interlaced.
25040
25041 @item T
25042 the time in seconds of the current frame
25043
25044 @item POS
25045 original position in the file of the frame, or undefined if undefined
25046 for the current frame
25047
25048 @item PREV_INPTS
25049 The previous input PTS.
25050
25051 @item PREV_INT
25052 previous input time in seconds
25053
25054 @item PREV_OUTPTS
25055 The previous output PTS.
25056
25057 @item PREV_OUTT
25058 previous output time in seconds
25059
25060 @item RTCTIME
25061 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
25062 instead.
25063
25064 @item RTCSTART
25065 The wallclock (RTC) time at the start of the movie in microseconds.
25066
25067 @item TB
25068 The timebase of the input timestamps.
25069
25070 @end table
25071
25072 @subsection Examples
25073
25074 @itemize
25075 @item
25076 Start counting PTS from zero
25077 @example
25078 setpts=PTS-STARTPTS
25079 @end example
25080
25081 @item
25082 Apply fast motion effect:
25083 @example
25084 setpts=0.5*PTS
25085 @end example
25086
25087 @item
25088 Apply slow motion effect:
25089 @example
25090 setpts=2.0*PTS
25091 @end example
25092
25093 @item
25094 Set fixed rate of 25 frames per second:
25095 @example
25096 setpts=N/(25*TB)
25097 @end example
25098
25099 @item
25100 Set fixed rate 25 fps with some jitter:
25101 @example
25102 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
25103 @end example
25104
25105 @item
25106 Apply an offset of 10 seconds to the input PTS:
25107 @example
25108 setpts=PTS+10/TB
25109 @end example
25110
25111 @item
25112 Generate timestamps from a "live source" and rebase onto the current timebase:
25113 @example
25114 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
25115 @end example
25116
25117 @item
25118 Generate timestamps by counting samples:
25119 @example
25120 asetpts=N/SR/TB
25121 @end example
25122
25123 @end itemize
25124
25125 @section setrange
25126
25127 Force color range for the output video frame.
25128
25129 The @code{setrange} filter marks the color range property for the
25130 output frames. It does not change the input frame, but only sets the
25131 corresponding property, which affects how the frame is treated by
25132 following filters.
25133
25134 The filter accepts the following options:
25135
25136 @table @option
25137
25138 @item range
25139 Available values are:
25140
25141 @table @samp
25142 @item auto
25143 Keep the same color range property.
25144
25145 @item unspecified, unknown
25146 Set the color range as unspecified.
25147
25148 @item limited, tv, mpeg
25149 Set the color range as limited.
25150
25151 @item full, pc, jpeg
25152 Set the color range as full.
25153 @end table
25154 @end table
25155
25156 @section settb, asettb
25157
25158 Set the timebase to use for the output frames timestamps.
25159 It is mainly useful for testing timebase configuration.
25160
25161 It accepts the following parameters:
25162
25163 @table @option
25164
25165 @item expr, tb
25166 The expression which is evaluated into the output timebase.
25167
25168 @end table
25169
25170 The value for @option{tb} is an arithmetic expression representing a
25171 rational. The expression can contain the constants "AVTB" (the default
25172 timebase), "intb" (the input timebase) and "sr" (the sample rate,
25173 audio only). Default value is "intb".
25174
25175 @subsection Examples
25176
25177 @itemize
25178 @item
25179 Set the timebase to 1/25:
25180 @example
25181 settb=expr=1/25
25182 @end example
25183
25184 @item
25185 Set the timebase to 1/10:
25186 @example
25187 settb=expr=0.1
25188 @end example
25189
25190 @item
25191 Set the timebase to 1001/1000:
25192 @example
25193 settb=1+0.001
25194 @end example
25195
25196 @item
25197 Set the timebase to 2*intb:
25198 @example
25199 settb=2*intb
25200 @end example
25201
25202 @item
25203 Set the default timebase value:
25204 @example
25205 settb=AVTB
25206 @end example
25207 @end itemize
25208
25209 @section showcqt
25210 Convert input audio to a video output representing frequency spectrum
25211 logarithmically using Brown-Puckette constant Q transform algorithm with
25212 direct frequency domain coefficient calculation (but the transform itself
25213 is not really constant Q, instead the Q factor is actually variable/clamped),
25214 with musical tone scale, from E0 to D#10.
25215
25216 The filter accepts the following options:
25217
25218 @table @option
25219 @item size, s
25220 Specify the video size for the output. It must be even. For the syntax of this option,
25221 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25222 Default value is @code{1920x1080}.
25223
25224 @item fps, rate, r
25225 Set the output frame rate. Default value is @code{25}.
25226
25227 @item bar_h
25228 Set the bargraph height. It must be even. Default value is @code{-1} which
25229 computes the bargraph height automatically.
25230
25231 @item axis_h
25232 Set the axis height. It must be even. Default value is @code{-1} which computes
25233 the axis height automatically.
25234
25235 @item sono_h
25236 Set the sonogram height. It must be even. Default value is @code{-1} which
25237 computes the sonogram height automatically.
25238
25239 @item fullhd
25240 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
25241 instead. Default value is @code{1}.
25242
25243 @item sono_v, volume
25244 Specify the sonogram volume expression. It can contain variables:
25245 @table @option
25246 @item bar_v
25247 the @var{bar_v} evaluated expression
25248 @item frequency, freq, f
25249 the frequency where it is evaluated
25250 @item timeclamp, tc
25251 the value of @var{timeclamp} option
25252 @end table
25253 and functions:
25254 @table @option
25255 @item a_weighting(f)
25256 A-weighting of equal loudness
25257 @item b_weighting(f)
25258 B-weighting of equal loudness
25259 @item c_weighting(f)
25260 C-weighting of equal loudness.
25261 @end table
25262 Default value is @code{16}.
25263
25264 @item bar_v, volume2
25265 Specify the bargraph volume expression. It can contain variables:
25266 @table @option
25267 @item sono_v
25268 the @var{sono_v} evaluated expression
25269 @item frequency, freq, f
25270 the frequency where it is evaluated
25271 @item timeclamp, tc
25272 the value of @var{timeclamp} option
25273 @end table
25274 and functions:
25275 @table @option
25276 @item a_weighting(f)
25277 A-weighting of equal loudness
25278 @item b_weighting(f)
25279 B-weighting of equal loudness
25280 @item c_weighting(f)
25281 C-weighting of equal loudness.
25282 @end table
25283 Default value is @code{sono_v}.
25284
25285 @item sono_g, gamma
25286 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
25287 higher gamma makes the spectrum having more range. Default value is @code{3}.
25288 Acceptable range is @code{[1, 7]}.
25289
25290 @item bar_g, gamma2
25291 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
25292 @code{[1, 7]}.
25293
25294 @item bar_t
25295 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
25296 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
25297
25298 @item timeclamp, tc
25299 Specify the transform timeclamp. At low frequency, there is trade-off between
25300 accuracy in time domain and frequency domain. If timeclamp is lower,
25301 event in time domain is represented more accurately (such as fast bass drum),
25302 otherwise event in frequency domain is represented more accurately
25303 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
25304
25305 @item attack
25306 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
25307 limits future samples by applying asymmetric windowing in time domain, useful
25308 when low latency is required. Accepted range is @code{[0, 1]}.
25309
25310 @item basefreq
25311 Specify the transform base frequency. Default value is @code{20.01523126408007475},
25312 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
25313
25314 @item endfreq
25315 Specify the transform end frequency. Default value is @code{20495.59681441799654},
25316 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
25317
25318 @item coeffclamp
25319 This option is deprecated and ignored.
25320
25321 @item tlength
25322 Specify the transform length in time domain. Use this option to control accuracy
25323 trade-off between time domain and frequency domain at every frequency sample.
25324 It can contain variables:
25325 @table @option
25326 @item frequency, freq, f
25327 the frequency where it is evaluated
25328 @item timeclamp, tc
25329 the value of @var{timeclamp} option.
25330 @end table
25331 Default value is @code{384*tc/(384+tc*f)}.
25332
25333 @item count
25334 Specify the transform count for every video frame. Default value is @code{6}.
25335 Acceptable range is @code{[1, 30]}.
25336
25337 @item fcount
25338 Specify the transform count for every single pixel. Default value is @code{0},
25339 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
25340
25341 @item fontfile
25342 Specify font file for use with freetype to draw the axis. If not specified,
25343 use embedded font. Note that drawing with font file or embedded font is not
25344 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
25345 option instead.
25346
25347 @item font
25348 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
25349 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
25350 escaping.
25351
25352 @item fontcolor
25353 Specify font color expression. This is arithmetic expression that should return
25354 integer value 0xRRGGBB. It can contain variables:
25355 @table @option
25356 @item frequency, freq, f
25357 the frequency where it is evaluated
25358 @item timeclamp, tc
25359 the value of @var{timeclamp} option
25360 @end table
25361 and functions:
25362 @table @option
25363 @item midi(f)
25364 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
25365 @item r(x), g(x), b(x)
25366 red, green, and blue value of intensity x.
25367 @end table
25368 Default value is @code{st(0, (midi(f)-59.5)/12);
25369 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
25370 r(1-ld(1)) + b(ld(1))}.
25371
25372 @item axisfile
25373 Specify image file to draw the axis. This option override @var{fontfile} and
25374 @var{fontcolor} option.
25375
25376 @item axis, text
25377 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
25378 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
25379 Default value is @code{1}.
25380
25381 @item csp
25382 Set colorspace. The accepted values are:
25383 @table @samp
25384 @item unspecified
25385 Unspecified (default)
25386
25387 @item bt709
25388 BT.709
25389
25390 @item fcc
25391 FCC
25392
25393 @item bt470bg
25394 BT.470BG or BT.601-6 625
25395
25396 @item smpte170m
25397 SMPTE-170M or BT.601-6 525
25398
25399 @item smpte240m
25400 SMPTE-240M
25401
25402 @item bt2020ncl
25403 BT.2020 with non-constant luminance
25404
25405 @end table
25406
25407 @item cscheme
25408 Set spectrogram color scheme. This is list of floating point values with format
25409 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
25410 The default is @code{1|0.5|0|0|0.5|1}.
25411
25412 @end table
25413
25414 @subsection Examples
25415
25416 @itemize
25417 @item
25418 Playing audio while showing the spectrum:
25419 @example
25420 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
25421 @end example
25422
25423 @item
25424 Same as above, but with frame rate 30 fps:
25425 @example
25426 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
25427 @end example
25428
25429 @item
25430 Playing at 1280x720:
25431 @example
25432 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
25433 @end example
25434
25435 @item
25436 Disable sonogram display:
25437 @example
25438 sono_h=0
25439 @end example
25440
25441 @item
25442 A1 and its harmonics: A1, A2, (near)E3, A3:
25443 @example
25444 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),
25445                  asplit[a][out1]; [a] showcqt [out0]'
25446 @end example
25447
25448 @item
25449 Same as above, but with more accuracy in frequency domain:
25450 @example
25451 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),
25452                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
25453 @end example
25454
25455 @item
25456 Custom volume:
25457 @example
25458 bar_v=10:sono_v=bar_v*a_weighting(f)
25459 @end example
25460
25461 @item
25462 Custom gamma, now spectrum is linear to the amplitude.
25463 @example
25464 bar_g=2:sono_g=2
25465 @end example
25466
25467 @item
25468 Custom tlength equation:
25469 @example
25470 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)))'
25471 @end example
25472
25473 @item
25474 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
25475 @example
25476 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
25477 @end example
25478
25479 @item
25480 Custom font using fontconfig:
25481 @example
25482 font='Courier New,Monospace,mono|bold'
25483 @end example
25484
25485 @item
25486 Custom frequency range with custom axis using image file:
25487 @example
25488 axisfile=myaxis.png:basefreq=40:endfreq=10000
25489 @end example
25490 @end itemize
25491
25492 @section showfreqs
25493
25494 Convert input audio to video output representing the audio power spectrum.
25495 Audio amplitude is on Y-axis while frequency is on X-axis.
25496
25497 The filter accepts the following options:
25498
25499 @table @option
25500 @item size, s
25501 Specify size of video. For the syntax of this option, check the
25502 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25503 Default is @code{1024x512}.
25504
25505 @item mode
25506 Set display mode.
25507 This set how each frequency bin will be represented.
25508
25509 It accepts the following values:
25510 @table @samp
25511 @item line
25512 @item bar
25513 @item dot
25514 @end table
25515 Default is @code{bar}.
25516
25517 @item ascale
25518 Set amplitude scale.
25519
25520 It accepts the following values:
25521 @table @samp
25522 @item lin
25523 Linear scale.
25524
25525 @item sqrt
25526 Square root scale.
25527
25528 @item cbrt
25529 Cubic root scale.
25530
25531 @item log
25532 Logarithmic scale.
25533 @end table
25534 Default is @code{log}.
25535
25536 @item fscale
25537 Set frequency scale.
25538
25539 It accepts the following values:
25540 @table @samp
25541 @item lin
25542 Linear scale.
25543
25544 @item log
25545 Logarithmic scale.
25546
25547 @item rlog
25548 Reverse logarithmic scale.
25549 @end table
25550 Default is @code{lin}.
25551
25552 @item win_size
25553 Set window size. Allowed range is from 16 to 65536.
25554
25555 Default is @code{2048}
25556
25557 @item win_func
25558 Set windowing function.
25559
25560 It accepts the following values:
25561 @table @samp
25562 @item rect
25563 @item bartlett
25564 @item hanning
25565 @item hamming
25566 @item blackman
25567 @item welch
25568 @item flattop
25569 @item bharris
25570 @item bnuttall
25571 @item bhann
25572 @item sine
25573 @item nuttall
25574 @item lanczos
25575 @item gauss
25576 @item tukey
25577 @item dolph
25578 @item cauchy
25579 @item parzen
25580 @item poisson
25581 @item bohman
25582 @end table
25583 Default is @code{hanning}.
25584
25585 @item overlap
25586 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25587 which means optimal overlap for selected window function will be picked.
25588
25589 @item averaging
25590 Set time averaging. Setting this to 0 will display current maximal peaks.
25591 Default is @code{1}, which means time averaging is disabled.
25592
25593 @item colors
25594 Specify list of colors separated by space or by '|' which will be used to
25595 draw channel frequencies. Unrecognized or missing colors will be replaced
25596 by white color.
25597
25598 @item cmode
25599 Set channel display mode.
25600
25601 It accepts the following values:
25602 @table @samp
25603 @item combined
25604 @item separate
25605 @end table
25606 Default is @code{combined}.
25607
25608 @item minamp
25609 Set minimum amplitude used in @code{log} amplitude scaler.
25610
25611 @item data
25612 Set data display mode.
25613
25614 It accepts the following values:
25615 @table @samp
25616 @item magnitude
25617 @item phase
25618 @item delay
25619 @end table
25620 Default is @code{magnitude}.
25621 @end table
25622
25623 @section showspatial
25624
25625 Convert stereo input audio to a video output, representing the spatial relationship
25626 between two channels.
25627
25628 The filter accepts the following options:
25629
25630 @table @option
25631 @item size, s
25632 Specify the video size for the output. For the syntax of this option, check the
25633 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25634 Default value is @code{512x512}.
25635
25636 @item win_size
25637 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
25638
25639 @item win_func
25640 Set window function.
25641
25642 It accepts the following values:
25643 @table @samp
25644 @item rect
25645 @item bartlett
25646 @item hann
25647 @item hanning
25648 @item hamming
25649 @item blackman
25650 @item welch
25651 @item flattop
25652 @item bharris
25653 @item bnuttall
25654 @item bhann
25655 @item sine
25656 @item nuttall
25657 @item lanczos
25658 @item gauss
25659 @item tukey
25660 @item dolph
25661 @item cauchy
25662 @item parzen
25663 @item poisson
25664 @item bohman
25665 @end table
25666
25667 Default value is @code{hann}.
25668
25669 @item overlap
25670 Set ratio of overlap window. Default value is @code{0.5}.
25671 When value is @code{1} overlap is set to recommended size for specific
25672 window function currently used.
25673 @end table
25674
25675 @anchor{showspectrum}
25676 @section showspectrum
25677
25678 Convert input audio to a video output, representing the audio frequency
25679 spectrum.
25680
25681 The filter accepts the following options:
25682
25683 @table @option
25684 @item size, s
25685 Specify the video size for the output. For the syntax of this option, check the
25686 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25687 Default value is @code{640x512}.
25688
25689 @item slide
25690 Specify how the spectrum should slide along the window.
25691
25692 It accepts the following values:
25693 @table @samp
25694 @item replace
25695 the samples start again on the left when they reach the right
25696 @item scroll
25697 the samples scroll from right to left
25698 @item fullframe
25699 frames are only produced when the samples reach the right
25700 @item rscroll
25701 the samples scroll from left to right
25702 @end table
25703
25704 Default value is @code{replace}.
25705
25706 @item mode
25707 Specify display mode.
25708
25709 It accepts the following values:
25710 @table @samp
25711 @item combined
25712 all channels are displayed in the same row
25713 @item separate
25714 all channels are displayed in separate rows
25715 @end table
25716
25717 Default value is @samp{combined}.
25718
25719 @item color
25720 Specify display color mode.
25721
25722 It accepts the following values:
25723 @table @samp
25724 @item channel
25725 each channel is displayed in a separate color
25726 @item intensity
25727 each channel is displayed using the same color scheme
25728 @item rainbow
25729 each channel is displayed using the rainbow color scheme
25730 @item moreland
25731 each channel is displayed using the moreland color scheme
25732 @item nebulae
25733 each channel is displayed using the nebulae color scheme
25734 @item fire
25735 each channel is displayed using the fire color scheme
25736 @item fiery
25737 each channel is displayed using the fiery color scheme
25738 @item fruit
25739 each channel is displayed using the fruit color scheme
25740 @item cool
25741 each channel is displayed using the cool color scheme
25742 @item magma
25743 each channel is displayed using the magma color scheme
25744 @item green
25745 each channel is displayed using the green color scheme
25746 @item viridis
25747 each channel is displayed using the viridis color scheme
25748 @item plasma
25749 each channel is displayed using the plasma color scheme
25750 @item cividis
25751 each channel is displayed using the cividis color scheme
25752 @item terrain
25753 each channel is displayed using the terrain color scheme
25754 @end table
25755
25756 Default value is @samp{channel}.
25757
25758 @item scale
25759 Specify scale used for calculating intensity color values.
25760
25761 It accepts the following values:
25762 @table @samp
25763 @item lin
25764 linear
25765 @item sqrt
25766 square root, default
25767 @item cbrt
25768 cubic root
25769 @item log
25770 logarithmic
25771 @item 4thrt
25772 4th root
25773 @item 5thrt
25774 5th root
25775 @end table
25776
25777 Default value is @samp{sqrt}.
25778
25779 @item fscale
25780 Specify frequency scale.
25781
25782 It accepts the following values:
25783 @table @samp
25784 @item lin
25785 linear
25786 @item log
25787 logarithmic
25788 @end table
25789
25790 Default value is @samp{lin}.
25791
25792 @item saturation
25793 Set saturation modifier for displayed colors. Negative values provide
25794 alternative color scheme. @code{0} is no saturation at all.
25795 Saturation must be in [-10.0, 10.0] range.
25796 Default value is @code{1}.
25797
25798 @item win_func
25799 Set window function.
25800
25801 It accepts the following values:
25802 @table @samp
25803 @item rect
25804 @item bartlett
25805 @item hann
25806 @item hanning
25807 @item hamming
25808 @item blackman
25809 @item welch
25810 @item flattop
25811 @item bharris
25812 @item bnuttall
25813 @item bhann
25814 @item sine
25815 @item nuttall
25816 @item lanczos
25817 @item gauss
25818 @item tukey
25819 @item dolph
25820 @item cauchy
25821 @item parzen
25822 @item poisson
25823 @item bohman
25824 @end table
25825
25826 Default value is @code{hann}.
25827
25828 @item orientation
25829 Set orientation of time vs frequency axis. Can be @code{vertical} or
25830 @code{horizontal}. Default is @code{vertical}.
25831
25832 @item overlap
25833 Set ratio of overlap window. Default value is @code{0}.
25834 When value is @code{1} overlap is set to recommended size for specific
25835 window function currently used.
25836
25837 @item gain
25838 Set scale gain for calculating intensity color values.
25839 Default value is @code{1}.
25840
25841 @item data
25842 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
25843
25844 @item rotation
25845 Set color rotation, must be in [-1.0, 1.0] range.
25846 Default value is @code{0}.
25847
25848 @item start
25849 Set start frequency from which to display spectrogram. Default is @code{0}.
25850
25851 @item stop
25852 Set stop frequency to which to display spectrogram. Default is @code{0}.
25853
25854 @item fps
25855 Set upper frame rate limit. Default is @code{auto}, unlimited.
25856
25857 @item legend
25858 Draw time and frequency axes and legends. Default is disabled.
25859 @end table
25860
25861 The usage is very similar to the showwaves filter; see the examples in that
25862 section.
25863
25864 @subsection Examples
25865
25866 @itemize
25867 @item
25868 Large window with logarithmic color scaling:
25869 @example
25870 showspectrum=s=1280x480:scale=log
25871 @end example
25872
25873 @item
25874 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
25875 @example
25876 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
25877              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
25878 @end example
25879 @end itemize
25880
25881 @section showspectrumpic
25882
25883 Convert input audio to a single video frame, representing the audio frequency
25884 spectrum.
25885
25886 The filter accepts the following options:
25887
25888 @table @option
25889 @item size, s
25890 Specify the video size for the output. For the syntax of this option, check the
25891 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25892 Default value is @code{4096x2048}.
25893
25894 @item mode
25895 Specify display mode.
25896
25897 It accepts the following values:
25898 @table @samp
25899 @item combined
25900 all channels are displayed in the same row
25901 @item separate
25902 all channels are displayed in separate rows
25903 @end table
25904 Default value is @samp{combined}.
25905
25906 @item color
25907 Specify display color mode.
25908
25909 It accepts the following values:
25910 @table @samp
25911 @item channel
25912 each channel is displayed in a separate color
25913 @item intensity
25914 each channel is displayed using the same color scheme
25915 @item rainbow
25916 each channel is displayed using the rainbow color scheme
25917 @item moreland
25918 each channel is displayed using the moreland color scheme
25919 @item nebulae
25920 each channel is displayed using the nebulae color scheme
25921 @item fire
25922 each channel is displayed using the fire color scheme
25923 @item fiery
25924 each channel is displayed using the fiery color scheme
25925 @item fruit
25926 each channel is displayed using the fruit color scheme
25927 @item cool
25928 each channel is displayed using the cool color scheme
25929 @item magma
25930 each channel is displayed using the magma color scheme
25931 @item green
25932 each channel is displayed using the green color scheme
25933 @item viridis
25934 each channel is displayed using the viridis color scheme
25935 @item plasma
25936 each channel is displayed using the plasma color scheme
25937 @item cividis
25938 each channel is displayed using the cividis color scheme
25939 @item terrain
25940 each channel is displayed using the terrain color scheme
25941 @end table
25942 Default value is @samp{intensity}.
25943
25944 @item scale
25945 Specify scale used for calculating intensity color values.
25946
25947 It accepts the following values:
25948 @table @samp
25949 @item lin
25950 linear
25951 @item sqrt
25952 square root, default
25953 @item cbrt
25954 cubic root
25955 @item log
25956 logarithmic
25957 @item 4thrt
25958 4th root
25959 @item 5thrt
25960 5th root
25961 @end table
25962 Default value is @samp{log}.
25963
25964 @item fscale
25965 Specify frequency scale.
25966
25967 It accepts the following values:
25968 @table @samp
25969 @item lin
25970 linear
25971 @item log
25972 logarithmic
25973 @end table
25974
25975 Default value is @samp{lin}.
25976
25977 @item saturation
25978 Set saturation modifier for displayed colors. Negative values provide
25979 alternative color scheme. @code{0} is no saturation at all.
25980 Saturation must be in [-10.0, 10.0] range.
25981 Default value is @code{1}.
25982
25983 @item win_func
25984 Set window function.
25985
25986 It accepts the following values:
25987 @table @samp
25988 @item rect
25989 @item bartlett
25990 @item hann
25991 @item hanning
25992 @item hamming
25993 @item blackman
25994 @item welch
25995 @item flattop
25996 @item bharris
25997 @item bnuttall
25998 @item bhann
25999 @item sine
26000 @item nuttall
26001 @item lanczos
26002 @item gauss
26003 @item tukey
26004 @item dolph
26005 @item cauchy
26006 @item parzen
26007 @item poisson
26008 @item bohman
26009 @end table
26010 Default value is @code{hann}.
26011
26012 @item orientation
26013 Set orientation of time vs frequency axis. Can be @code{vertical} or
26014 @code{horizontal}. Default is @code{vertical}.
26015
26016 @item gain
26017 Set scale gain for calculating intensity color values.
26018 Default value is @code{1}.
26019
26020 @item legend
26021 Draw time and frequency axes and legends. Default is enabled.
26022
26023 @item rotation
26024 Set color rotation, must be in [-1.0, 1.0] range.
26025 Default value is @code{0}.
26026
26027 @item start
26028 Set start frequency from which to display spectrogram. Default is @code{0}.
26029
26030 @item stop
26031 Set stop frequency to which to display spectrogram. Default is @code{0}.
26032 @end table
26033
26034 @subsection Examples
26035
26036 @itemize
26037 @item
26038 Extract an audio spectrogram of a whole audio track
26039 in a 1024x1024 picture using @command{ffmpeg}:
26040 @example
26041 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
26042 @end example
26043 @end itemize
26044
26045 @section showvolume
26046
26047 Convert input audio volume to a video output.
26048
26049 The filter accepts the following options:
26050
26051 @table @option
26052 @item rate, r
26053 Set video rate.
26054
26055 @item b
26056 Set border width, allowed range is [0, 5]. Default is 1.
26057
26058 @item w
26059 Set channel width, allowed range is [80, 8192]. Default is 400.
26060
26061 @item h
26062 Set channel height, allowed range is [1, 900]. Default is 20.
26063
26064 @item f
26065 Set fade, allowed range is [0, 1]. Default is 0.95.
26066
26067 @item c
26068 Set volume color expression.
26069
26070 The expression can use the following variables:
26071
26072 @table @option
26073 @item VOLUME
26074 Current max volume of channel in dB.
26075
26076 @item PEAK
26077 Current peak.
26078
26079 @item CHANNEL
26080 Current channel number, starting from 0.
26081 @end table
26082
26083 @item t
26084 If set, displays channel names. Default is enabled.
26085
26086 @item v
26087 If set, displays volume values. Default is enabled.
26088
26089 @item o
26090 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
26091 default is @code{h}.
26092
26093 @item s
26094 Set step size, allowed range is [0, 5]. Default is 0, which means
26095 step is disabled.
26096
26097 @item p
26098 Set background opacity, allowed range is [0, 1]. Default is 0.
26099
26100 @item m
26101 Set metering mode, can be peak: @code{p} or rms: @code{r},
26102 default is @code{p}.
26103
26104 @item ds
26105 Set display scale, can be linear: @code{lin} or log: @code{log},
26106 default is @code{lin}.
26107
26108 @item dm
26109 In second.
26110 If set to > 0., display a line for the max level
26111 in the previous seconds.
26112 default is disabled: @code{0.}
26113
26114 @item dmc
26115 The color of the max line. Use when @code{dm} option is set to > 0.
26116 default is: @code{orange}
26117 @end table
26118
26119 @section showwaves
26120
26121 Convert input audio to a video output, representing the samples waves.
26122
26123 The filter accepts the following options:
26124
26125 @table @option
26126 @item size, s
26127 Specify the video size for the output. For the syntax of this option, check the
26128 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26129 Default value is @code{600x240}.
26130
26131 @item mode
26132 Set display mode.
26133
26134 Available values are:
26135 @table @samp
26136 @item point
26137 Draw a point for each sample.
26138
26139 @item line
26140 Draw a vertical line for each sample.
26141
26142 @item p2p
26143 Draw a point for each sample and a line between them.
26144
26145 @item cline
26146 Draw a centered vertical line for each sample.
26147 @end table
26148
26149 Default value is @code{point}.
26150
26151 @item n
26152 Set the number of samples which are printed on the same column. A
26153 larger value will decrease the frame rate. Must be a positive
26154 integer. This option can be set only if the value for @var{rate}
26155 is not explicitly specified.
26156
26157 @item rate, r
26158 Set the (approximate) output frame rate. This is done by setting the
26159 option @var{n}. Default value is "25".
26160
26161 @item split_channels
26162 Set if channels should be drawn separately or overlap. Default value is 0.
26163
26164 @item colors
26165 Set colors separated by '|' which are going to be used for drawing of each channel.
26166
26167 @item scale
26168 Set amplitude scale.
26169
26170 Available values are:
26171 @table @samp
26172 @item lin
26173 Linear.
26174
26175 @item log
26176 Logarithmic.
26177
26178 @item sqrt
26179 Square root.
26180
26181 @item cbrt
26182 Cubic root.
26183 @end table
26184
26185 Default is linear.
26186
26187 @item draw
26188 Set the draw mode. This is mostly useful to set for high @var{n}.
26189
26190 Available values are:
26191 @table @samp
26192 @item scale
26193 Scale pixel values for each drawn sample.
26194
26195 @item full
26196 Draw every sample directly.
26197 @end table
26198
26199 Default value is @code{scale}.
26200 @end table
26201
26202 @subsection Examples
26203
26204 @itemize
26205 @item
26206 Output the input file audio and the corresponding video representation
26207 at the same time:
26208 @example
26209 amovie=a.mp3,asplit[out0],showwaves[out1]
26210 @end example
26211
26212 @item
26213 Create a synthetic signal and show it with showwaves, forcing a
26214 frame rate of 30 frames per second:
26215 @example
26216 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
26217 @end example
26218 @end itemize
26219
26220 @section showwavespic
26221
26222 Convert input audio to a single video frame, representing the samples waves.
26223
26224 The filter accepts the following options:
26225
26226 @table @option
26227 @item size, s
26228 Specify the video size for the output. For the syntax of this option, check the
26229 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26230 Default value is @code{600x240}.
26231
26232 @item split_channels
26233 Set if channels should be drawn separately or overlap. Default value is 0.
26234
26235 @item colors
26236 Set colors separated by '|' which are going to be used for drawing of each channel.
26237
26238 @item scale
26239 Set amplitude scale.
26240
26241 Available values are:
26242 @table @samp
26243 @item lin
26244 Linear.
26245
26246 @item log
26247 Logarithmic.
26248
26249 @item sqrt
26250 Square root.
26251
26252 @item cbrt
26253 Cubic root.
26254 @end table
26255
26256 Default is linear.
26257
26258 @item draw
26259 Set the draw mode.
26260
26261 Available values are:
26262 @table @samp
26263 @item scale
26264 Scale pixel values for each drawn sample.
26265
26266 @item full
26267 Draw every sample directly.
26268 @end table
26269
26270 Default value is @code{scale}.
26271
26272 @item filter
26273 Set the filter mode.
26274
26275 Available values are:
26276 @table @samp
26277 @item average
26278 Use average samples values for each drawn sample.
26279
26280 @item peak
26281 Use peak samples values for each drawn sample.
26282 @end table
26283
26284 Default value is @code{average}.
26285 @end table
26286
26287 @subsection Examples
26288
26289 @itemize
26290 @item
26291 Extract a channel split representation of the wave form of a whole audio track
26292 in a 1024x800 picture using @command{ffmpeg}:
26293 @example
26294 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
26295 @end example
26296 @end itemize
26297
26298 @section sidedata, asidedata
26299
26300 Delete frame side data, or select frames based on it.
26301
26302 This filter accepts the following options:
26303
26304 @table @option
26305 @item mode
26306 Set mode of operation of the filter.
26307
26308 Can be one of the following:
26309
26310 @table @samp
26311 @item select
26312 Select every frame with side data of @code{type}.
26313
26314 @item delete
26315 Delete side data of @code{type}. If @code{type} is not set, delete all side
26316 data in the frame.
26317
26318 @end table
26319
26320 @item type
26321 Set side data type used with all modes. Must be set for @code{select} mode. For
26322 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
26323 in @file{libavutil/frame.h}. For example, to choose
26324 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
26325
26326 @end table
26327
26328 @section spectrumsynth
26329
26330 Synthesize audio from 2 input video spectrums, first input stream represents
26331 magnitude across time and second represents phase across time.
26332 The filter will transform from frequency domain as displayed in videos back
26333 to time domain as presented in audio output.
26334
26335 This filter is primarily created for reversing processed @ref{showspectrum}
26336 filter outputs, but can synthesize sound from other spectrograms too.
26337 But in such case results are going to be poor if the phase data is not
26338 available, because in such cases phase data need to be recreated, usually
26339 it's just recreated from random noise.
26340 For best results use gray only output (@code{channel} color mode in
26341 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
26342 @code{lin} scale for phase video. To produce phase, for 2nd video, use
26343 @code{data} option. Inputs videos should generally use @code{fullframe}
26344 slide mode as that saves resources needed for decoding video.
26345
26346 The filter accepts the following options:
26347
26348 @table @option
26349 @item sample_rate
26350 Specify sample rate of output audio, the sample rate of audio from which
26351 spectrum was generated may differ.
26352
26353 @item channels
26354 Set number of channels represented in input video spectrums.
26355
26356 @item scale
26357 Set scale which was used when generating magnitude input spectrum.
26358 Can be @code{lin} or @code{log}. Default is @code{log}.
26359
26360 @item slide
26361 Set slide which was used when generating inputs spectrums.
26362 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
26363 Default is @code{fullframe}.
26364
26365 @item win_func
26366 Set window function used for resynthesis.
26367
26368 @item overlap
26369 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
26370 which means optimal overlap for selected window function will be picked.
26371
26372 @item orientation
26373 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
26374 Default is @code{vertical}.
26375 @end table
26376
26377 @subsection Examples
26378
26379 @itemize
26380 @item
26381 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
26382 then resynthesize videos back to audio with spectrumsynth:
26383 @example
26384 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
26385 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
26386 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
26387 @end example
26388 @end itemize
26389
26390 @section split, asplit
26391
26392 Split input into several identical outputs.
26393
26394 @code{asplit} works with audio input, @code{split} with video.
26395
26396 The filter accepts a single parameter which specifies the number of outputs. If
26397 unspecified, it defaults to 2.
26398
26399 @subsection Examples
26400
26401 @itemize
26402 @item
26403 Create two separate outputs from the same input:
26404 @example
26405 [in] split [out0][out1]
26406 @end example
26407
26408 @item
26409 To create 3 or more outputs, you need to specify the number of
26410 outputs, like in:
26411 @example
26412 [in] asplit=3 [out0][out1][out2]
26413 @end example
26414
26415 @item
26416 Create two separate outputs from the same input, one cropped and
26417 one padded:
26418 @example
26419 [in] split [splitout1][splitout2];
26420 [splitout1] crop=100:100:0:0    [cropout];
26421 [splitout2] pad=200:200:100:100 [padout];
26422 @end example
26423
26424 @item
26425 Create 5 copies of the input audio with @command{ffmpeg}:
26426 @example
26427 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
26428 @end example
26429 @end itemize
26430
26431 @section zmq, azmq
26432
26433 Receive commands sent through a libzmq client, and forward them to
26434 filters in the filtergraph.
26435
26436 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
26437 must be inserted between two video filters, @code{azmq} between two
26438 audio filters. Both are capable to send messages to any filter type.
26439
26440 To enable these filters you need to install the libzmq library and
26441 headers and configure FFmpeg with @code{--enable-libzmq}.
26442
26443 For more information about libzmq see:
26444 @url{http://www.zeromq.org/}
26445
26446 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
26447 receives messages sent through a network interface defined by the
26448 @option{bind_address} (or the abbreviation "@option{b}") option.
26449 Default value of this option is @file{tcp://localhost:5555}. You may
26450 want to alter this value to your needs, but do not forget to escape any
26451 ':' signs (see @ref{filtergraph escaping}).
26452
26453 The received message must be in the form:
26454 @example
26455 @var{TARGET} @var{COMMAND} [@var{ARG}]
26456 @end example
26457
26458 @var{TARGET} specifies the target of the command, usually the name of
26459 the filter class or a specific filter instance name. The default
26460 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
26461 but you can override this by using the @samp{filter_name@@id} syntax
26462 (see @ref{Filtergraph syntax}).
26463
26464 @var{COMMAND} specifies the name of the command for the target filter.
26465
26466 @var{ARG} is optional and specifies the optional argument list for the
26467 given @var{COMMAND}.
26468
26469 Upon reception, the message is processed and the corresponding command
26470 is injected into the filtergraph. Depending on the result, the filter
26471 will send a reply to the client, adopting the format:
26472 @example
26473 @var{ERROR_CODE} @var{ERROR_REASON}
26474 @var{MESSAGE}
26475 @end example
26476
26477 @var{MESSAGE} is optional.
26478
26479 @subsection Examples
26480
26481 Look at @file{tools/zmqsend} for an example of a zmq client which can
26482 be used to send commands processed by these filters.
26483
26484 Consider the following filtergraph generated by @command{ffplay}.
26485 In this example the last overlay filter has an instance name. All other
26486 filters will have default instance names.
26487
26488 @example
26489 ffplay -dumpgraph 1 -f lavfi "
26490 color=s=100x100:c=red  [l];
26491 color=s=100x100:c=blue [r];
26492 nullsrc=s=200x100, zmq [bg];
26493 [bg][l]   overlay     [bg+l];
26494 [bg+l][r] overlay@@my=x=100 "
26495 @end example
26496
26497 To change the color of the left side of the video, the following
26498 command can be used:
26499 @example
26500 echo Parsed_color_0 c yellow | tools/zmqsend
26501 @end example
26502
26503 To change the right side:
26504 @example
26505 echo Parsed_color_1 c pink | tools/zmqsend
26506 @end example
26507
26508 To change the position of the right side:
26509 @example
26510 echo overlay@@my x 150 | tools/zmqsend
26511 @end example
26512
26513
26514 @c man end MULTIMEDIA FILTERS
26515
26516 @chapter Multimedia Sources
26517 @c man begin MULTIMEDIA SOURCES
26518
26519 Below is a description of the currently available multimedia sources.
26520
26521 @section amovie
26522
26523 This is the same as @ref{movie} source, except it selects an audio
26524 stream by default.
26525
26526 @anchor{movie}
26527 @section movie
26528
26529 Read audio and/or video stream(s) from a movie container.
26530
26531 It accepts the following parameters:
26532
26533 @table @option
26534 @item filename
26535 The name of the resource to read (not necessarily a file; it can also be a
26536 device or a stream accessed through some protocol).
26537
26538 @item format_name, f
26539 Specifies the format assumed for the movie to read, and can be either
26540 the name of a container or an input device. If not specified, the
26541 format is guessed from @var{movie_name} or by probing.
26542
26543 @item seek_point, sp
26544 Specifies the seek point in seconds. The frames will be output
26545 starting from this seek point. The parameter is evaluated with
26546 @code{av_strtod}, so the numerical value may be suffixed by an IS
26547 postfix. The default value is "0".
26548
26549 @item streams, s
26550 Specifies the streams to read. Several streams can be specified,
26551 separated by "+". The source will then have as many outputs, in the
26552 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
26553 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
26554 respectively the default (best suited) video and audio stream. Default
26555 is "dv", or "da" if the filter is called as "amovie".
26556
26557 @item stream_index, si
26558 Specifies the index of the video stream to read. If the value is -1,
26559 the most suitable video stream will be automatically selected. The default
26560 value is "-1". Deprecated. If the filter is called "amovie", it will select
26561 audio instead of video.
26562
26563 @item loop
26564 Specifies how many times to read the stream in sequence.
26565 If the value is 0, the stream will be looped infinitely.
26566 Default value is "1".
26567
26568 Note that when the movie is looped the source timestamps are not
26569 changed, so it will generate non monotonically increasing timestamps.
26570
26571 @item discontinuity
26572 Specifies the time difference between frames above which the point is
26573 considered a timestamp discontinuity which is removed by adjusting the later
26574 timestamps.
26575 @end table
26576
26577 It allows overlaying a second video on top of the main input of
26578 a filtergraph, as shown in this graph:
26579 @example
26580 input -----------> deltapts0 --> overlay --> output
26581                                     ^
26582                                     |
26583 movie --> scale--> deltapts1 -------+
26584 @end example
26585 @subsection Examples
26586
26587 @itemize
26588 @item
26589 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
26590 on top of the input labelled "in":
26591 @example
26592 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
26593 [in] setpts=PTS-STARTPTS [main];
26594 [main][over] overlay=16:16 [out]
26595 @end example
26596
26597 @item
26598 Read from a video4linux2 device, and overlay it on top of the input
26599 labelled "in":
26600 @example
26601 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
26602 [in] setpts=PTS-STARTPTS [main];
26603 [main][over] overlay=16:16 [out]
26604 @end example
26605
26606 @item
26607 Read the first video stream and the audio stream with id 0x81 from
26608 dvd.vob; the video is connected to the pad named "video" and the audio is
26609 connected to the pad named "audio":
26610 @example
26611 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
26612 @end example
26613 @end itemize
26614
26615 @subsection Commands
26616
26617 Both movie and amovie support the following commands:
26618 @table @option
26619 @item seek
26620 Perform seek using "av_seek_frame".
26621 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
26622 @itemize
26623 @item
26624 @var{stream_index}: If stream_index is -1, a default
26625 stream is selected, and @var{timestamp} is automatically converted
26626 from AV_TIME_BASE units to the stream specific time_base.
26627 @item
26628 @var{timestamp}: Timestamp in AVStream.time_base units
26629 or, if no stream is specified, in AV_TIME_BASE units.
26630 @item
26631 @var{flags}: Flags which select direction and seeking mode.
26632 @end itemize
26633
26634 @item get_duration
26635 Get movie duration in AV_TIME_BASE units.
26636
26637 @end table
26638
26639 @c man end MULTIMEDIA SOURCES