]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avfilter: add asubcut filter
[ffmpeg] / doc / filters.texi
1 @chapter Filtering Introduction
2 @c man begin FILTERING INTRODUCTION
3
4 Filtering in FFmpeg is enabled through the libavfilter library.
5
6 In libavfilter, a filter can have multiple inputs and multiple
7 outputs.
8 To illustrate the sorts of things that are possible, we consider the
9 following filtergraph.
10
11 @verbatim
12                 [main]
13 input --> split ---------------------> overlay --> output
14             |                             ^
15             |[tmp]                  [flip]|
16             +-----> crop --> vflip -------+
17 @end verbatim
18
19 This filtergraph splits the input stream in two streams, then sends one
20 stream through the crop filter and the vflip filter, before merging it
21 back with the other stream by overlaying it on top. You can use the
22 following command to achieve this:
23
24 @example
25 ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
26 @end example
27
28 The result will be that the top half of the video is mirrored
29 onto the bottom half of the output video.
30
31 Filters in the same linear chain are separated by commas, and distinct
32 linear chains of filters are separated by semicolons. In our example,
33 @var{crop,vflip} are in one linear chain, @var{split} and
34 @var{overlay} are separately in another. The points where the linear
35 chains join are labelled by names enclosed in square brackets. In the
36 example, the split filter generates two outputs that are associated to
37 the labels @var{[main]} and @var{[tmp]}.
38
39 The stream sent to the second output of @var{split}, labelled as
40 @var{[tmp]}, is processed through the @var{crop} filter, which crops
41 away the lower half part of the video, and then vertically flipped. The
42 @var{overlay} filter takes in input the first unchanged output of the
43 split filter (which was labelled as @var{[main]}), and overlay on its
44 lower half the output generated by the @var{crop,vflip} filterchain.
45
46 Some filters take in input a list of parameters: they are specified
47 after the filter name and an equal sign, and are separated from each other
48 by a colon.
49
50 There exist so-called @var{source filters} that do not have an
51 audio/video input, and @var{sink filters} that will not have audio/video
52 output.
53
54 @c man end FILTERING INTRODUCTION
55
56 @chapter graph2dot
57 @c man begin GRAPH2DOT
58
59 The @file{graph2dot} program included in the FFmpeg @file{tools}
60 directory can be used to parse a filtergraph description and issue a
61 corresponding textual representation in the dot language.
62
63 Invoke the command:
64 @example
65 graph2dot -h
66 @end example
67
68 to see how to use @file{graph2dot}.
69
70 You can then pass the dot description to the @file{dot} program (from
71 the graphviz suite of programs) and obtain a graphical representation
72 of the filtergraph.
73
74 For example the sequence of commands:
75 @example
76 echo @var{GRAPH_DESCRIPTION} | \
77 tools/graph2dot -o graph.tmp && \
78 dot -Tpng graph.tmp -o graph.png && \
79 display graph.png
80 @end example
81
82 can be used to create and display an image representing the graph
83 described by the @var{GRAPH_DESCRIPTION} string. Note that this string must be
84 a complete self-contained graph, with its inputs and outputs explicitly defined.
85 For example if your command line is of the form:
86 @example
87 ffmpeg -i infile -vf scale=640:360 outfile
88 @end example
89 your @var{GRAPH_DESCRIPTION} string will need to be of the form:
90 @example
91 nullsrc,scale=640:360,nullsink
92 @end example
93 you may also need to set the @var{nullsrc} parameters and add a @var{format}
94 filter in order to simulate a specific input file.
95
96 @c man end GRAPH2DOT
97
98 @chapter Filtergraph description
99 @c man begin FILTERGRAPH DESCRIPTION
100
101 A filtergraph is a directed graph of connected filters. It can contain
102 cycles, and there can be multiple links between a pair of
103 filters. Each link has one input pad on one side connecting it to one
104 filter from which it takes its input, and one output pad on the other
105 side connecting it to one filter accepting its output.
106
107 Each filter in a filtergraph is an instance of a filter class
108 registered in the application, which defines the features and the
109 number of input and output pads of the filter.
110
111 A filter with no input pads is called a "source", and a filter with no
112 output pads is called a "sink".
113
114 @anchor{Filtergraph syntax}
115 @section Filtergraph syntax
116
117 A filtergraph has a textual representation, which is recognized by the
118 @option{-filter}/@option{-vf}/@option{-af} and
119 @option{-filter_complex} options in @command{ffmpeg} and
120 @option{-vf}/@option{-af} in @command{ffplay}, and by the
121 @code{avfilter_graph_parse_ptr()} function defined in
122 @file{libavfilter/avfilter.h}.
123
124 A filterchain consists of a sequence of connected filters, each one
125 connected to the previous one in the sequence. A filterchain is
126 represented by a list of ","-separated filter descriptions.
127
128 A filtergraph consists of a sequence of filterchains. A sequence of
129 filterchains is represented by a list of ";"-separated filterchain
130 descriptions.
131
132 A filter is represented by a string of the form:
133 [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}@@@var{id}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
134
135 @var{filter_name} is the name of the filter class of which the
136 described filter is an instance of, and has to be the name of one of
137 the filter classes registered in the program optionally followed by "@@@var{id}".
138 The name of the filter class is optionally followed by a string
139 "=@var{arguments}".
140
141 @var{arguments} is a string which contains the parameters used to
142 initialize the filter instance. It may have one of two forms:
143 @itemize
144
145 @item
146 A ':'-separated list of @var{key=value} pairs.
147
148 @item
149 A ':'-separated list of @var{value}. In this case, the keys are assumed to be
150 the option names in the order they are declared. E.g. the @code{fade} filter
151 declares three options in this order -- @option{type}, @option{start_frame} and
152 @option{nb_frames}. Then the parameter list @var{in:0:30} means that the value
153 @var{in} is assigned to the option @option{type}, @var{0} to
154 @option{start_frame} and @var{30} to @option{nb_frames}.
155
156 @item
157 A ':'-separated list of mixed direct @var{value} and long @var{key=value}
158 pairs. The direct @var{value} must precede the @var{key=value} pairs, and
159 follow the same constraints order of the previous point. The following
160 @var{key=value} pairs can be set in any preferred order.
161
162 @end itemize
163
164 If the option value itself is a list of items (e.g. the @code{format} filter
165 takes a list of pixel formats), the items in the list are usually separated by
166 @samp{|}.
167
168 The list of arguments can be quoted using the character @samp{'} as initial
169 and ending mark, and the character @samp{\} for escaping the characters
170 within the quoted text; otherwise the argument string is considered
171 terminated when the next special character (belonging to the set
172 @samp{[]=;,}) is encountered.
173
174 The name and arguments of the filter are optionally preceded and
175 followed by a list of link labels.
176 A link label allows one to name a link and associate it to a filter output
177 or input pad. The preceding labels @var{in_link_1}
178 ... @var{in_link_N}, are associated to the filter input pads,
179 the following labels @var{out_link_1} ... @var{out_link_M}, are
180 associated to the output pads.
181
182 When two link labels with the same name are found in the
183 filtergraph, a link between the corresponding input and output pad is
184 created.
185
186 If an output pad is not labelled, it is linked by default to the first
187 unlabelled input pad of the next filter in the filterchain.
188 For example in the filterchain
189 @example
190 nullsrc, split[L1], [L2]overlay, nullsink
191 @end example
192 the split filter instance has two output pads, and the overlay filter
193 instance two input pads. The first output pad of split is labelled
194 "L1", the first input pad of overlay is labelled "L2", and the second
195 output pad of split is linked to the second input pad of overlay,
196 which are both unlabelled.
197
198 In a filter description, if the input label of the first filter is not
199 specified, "in" is assumed; if the output label of the last filter is not
200 specified, "out" is assumed.
201
202 In a complete filterchain all the unlabelled filter input and output
203 pads must be connected. A filtergraph is considered valid if all the
204 filter input and output pads of all the filterchains are connected.
205
206 Libavfilter will automatically insert @ref{scale} filters where format
207 conversion is required. It is possible to specify swscale flags
208 for those automatically inserted scalers by prepending
209 @code{sws_flags=@var{flags};}
210 to the filtergraph description.
211
212 Here is a BNF description of the filtergraph syntax:
213 @example
214 @var{NAME}             ::= sequence of alphanumeric characters and '_'
215 @var{FILTER_NAME}      ::= @var{NAME}["@@"@var{NAME}]
216 @var{LINKLABEL}        ::= "[" @var{NAME} "]"
217 @var{LINKLABELS}       ::= @var{LINKLABEL} [@var{LINKLABELS}]
218 @var{FILTER_ARGUMENTS} ::= sequence of chars (possibly quoted)
219 @var{FILTER}           ::= [@var{LINKLABELS}] @var{FILTER_NAME} ["=" @var{FILTER_ARGUMENTS}] [@var{LINKLABELS}]
220 @var{FILTERCHAIN}      ::= @var{FILTER} [,@var{FILTERCHAIN}]
221 @var{FILTERGRAPH}      ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
222 @end example
223
224 @anchor{filtergraph escaping}
225 @section Notes on filtergraph escaping
226
227 Filtergraph description composition entails several levels of
228 escaping. See @ref{quoting_and_escaping,,the "Quoting and escaping"
229 section in the ffmpeg-utils(1) manual,ffmpeg-utils} for more
230 information about the employed escaping procedure.
231
232 A first level escaping affects the content of each filter option
233 value, which may contain the special character @code{:} used to
234 separate values, or one of the escaping characters @code{\'}.
235
236 A second level escaping affects the whole filter description, which
237 may contain the escaping characters @code{\'} or the special
238 characters @code{[],;} used by the filtergraph description.
239
240 Finally, when you specify a filtergraph on a shell commandline, you
241 need to perform a third level escaping for the shell special
242 characters contained within it.
243
244 For example, consider the following string to be embedded in
245 the @ref{drawtext} filter description @option{text} value:
246 @example
247 this is a 'string': may contain one, or more, special characters
248 @end example
249
250 This string contains the @code{'} special escaping character, and the
251 @code{:} special character, so it needs to be escaped in this way:
252 @example
253 text=this is a \'string\'\: may contain one, or more, special characters
254 @end example
255
256 A second level of escaping is required when embedding the filter
257 description in a filtergraph description, in order to escape all the
258 filtergraph special characters. Thus the example above becomes:
259 @example
260 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
261 @end example
262 (note that in addition to the @code{\'} escaping special characters,
263 also @code{,} needs to be escaped).
264
265 Finally an additional level of escaping is needed when writing the
266 filtergraph description in a shell command, which depends on the
267 escaping rules of the adopted shell. For example, assuming that
268 @code{\} is special and needs to be escaped with another @code{\}, the
269 previous string will finally result in:
270 @example
271 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
272 @end example
273
274 @chapter Timeline editing
275
276 Some filters support a generic @option{enable} option. For the filters
277 supporting timeline editing, this option can be set to an expression which is
278 evaluated before sending a frame to the filter. If the evaluation is non-zero,
279 the filter will be enabled, otherwise the frame will be sent unchanged to the
280 next filter in the filtergraph.
281
282 The expression accepts the following values:
283 @table @samp
284 @item t
285 timestamp expressed in seconds, NAN if the input timestamp is unknown
286
287 @item n
288 sequential number of the input frame, starting from 0
289
290 @item pos
291 the position in the file of the input frame, NAN if unknown
292
293 @item w
294 @item h
295 width and height of the input frame if video
296 @end table
297
298 Additionally, these filters support an @option{enable} command that can be used
299 to re-define the expression.
300
301 Like any other filtering option, the @option{enable} option follows the same
302 rules.
303
304 For example, to enable a blur filter (@ref{smartblur}) from 10 seconds to 3
305 minutes, and a @ref{curves} filter starting at 3 seconds:
306 @example
307 smartblur = enable='between(t,10,3*60)',
308 curves    = enable='gte(t,3)' : preset=cross_process
309 @end example
310
311 See @code{ffmpeg -filters} to view which filters have timeline support.
312
313 @c man end FILTERGRAPH DESCRIPTION
314
315 @anchor{commands}
316 @chapter Changing options at runtime with a command
317
318 Some options can be changed during the operation of the filter using
319 a command. These options are marked 'T' on the output of
320 @command{ffmpeg} @option{-h filter=<name of filter>}.
321 The name of the command is the name of the option and the argument is
322 the new value.
323
324 @anchor{framesync}
325 @chapter Options for filters with several inputs (framesync)
326 @c man begin OPTIONS FOR FILTERS WITH SEVERAL INPUTS
327
328 Some filters with several inputs support a common set of options.
329 These options can only be set by name, not with the short notation.
330
331 @table @option
332 @item eof_action
333 The action to take when EOF is encountered on the secondary input; it accepts
334 one of the following values:
335
336 @table @option
337 @item repeat
338 Repeat the last frame (the default).
339 @item endall
340 End both streams.
341 @item pass
342 Pass the main input through.
343 @end table
344
345 @item shortest
346 If set to 1, force the output to terminate when the shortest input
347 terminates. Default value is 0.
348
349 @item repeatlast
350 If set to 1, force the filter to extend the last frame of secondary streams
351 until the end of the primary stream. A value of 0 disables this behavior.
352 Default value is 1.
353 @end table
354
355 @c man end OPTIONS FOR FILTERS WITH SEVERAL INPUTS
356
357 @chapter Audio Filters
358 @c man begin AUDIO FILTERS
359
360 When you configure your FFmpeg build, you can disable any of the
361 existing filters using @code{--disable-filters}.
362 The configure output will show the audio filters included in your
363 build.
364
365 Below is a description of the currently available audio filters.
366
367 @section acompressor
368
369 A compressor is mainly used to reduce the dynamic range of a signal.
370 Especially modern music is mostly compressed at a high ratio to
371 improve the overall loudness. It's done to get the highest attention
372 of a listener, "fatten" the sound and bring more "power" to the track.
373 If a signal is compressed too much it may sound dull or "dead"
374 afterwards or it may start to "pump" (which could be a powerful effect
375 but can also destroy a track completely).
376 The right compression is the key to reach a professional sound and is
377 the high art of mixing and mastering. Because of its complex settings
378 it may take a long time to get the right feeling for this kind of effect.
379
380 Compression is done by detecting the volume above a chosen level
381 @code{threshold} and dividing it by the factor set with @code{ratio}.
382 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
383 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
384 the signal would cause distortion of the waveform the reduction can be
385 levelled over the time. This is done by setting "Attack" and "Release".
386 @code{attack} determines how long the signal has to rise above the threshold
387 before any reduction will occur and @code{release} sets the time the signal
388 has to fall below the threshold to reduce the reduction again. Shorter signals
389 than the chosen attack time will be left untouched.
390 The overall reduction of the signal can be made up afterwards with the
391 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
392 raising the makeup to this level results in a signal twice as loud than the
393 source. To gain a softer entry in the compression the @code{knee} flattens the
394 hard edge at the threshold in the range of the chosen decibels.
395
396 The filter accepts the following options:
397
398 @table @option
399 @item level_in
400 Set input gain. Default is 1. Range is between 0.015625 and 64.
401
402 @item mode
403 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
404 Default is @code{downward}.
405
406 @item threshold
407 If a signal of stream rises above this level it will affect the gain
408 reduction.
409 By default it is 0.125. Range is between 0.00097563 and 1.
410
411 @item ratio
412 Set a ratio by which the signal is reduced. 1:2 means that if the level
413 rose 4dB above the threshold, it will be only 2dB above after the reduction.
414 Default is 2. Range is between 1 and 20.
415
416 @item attack
417 Amount of milliseconds the signal has to rise above the threshold before gain
418 reduction starts. Default is 20. Range is between 0.01 and 2000.
419
420 @item release
421 Amount of milliseconds the signal has to fall below the threshold before
422 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
423
424 @item makeup
425 Set the amount by how much signal will be amplified after processing.
426 Default is 1. Range is from 1 to 64.
427
428 @item knee
429 Curve the sharp knee around the threshold to enter gain reduction more softly.
430 Default is 2.82843. Range is between 1 and 8.
431
432 @item link
433 Choose if the @code{average} level between all channels of input stream
434 or the louder(@code{maximum}) channel of input stream affects the
435 reduction. Default is @code{average}.
436
437 @item detection
438 Should the exact signal be taken in case of @code{peak} or an RMS one in case
439 of @code{rms}. Default is @code{rms} which is mostly smoother.
440
441 @item mix
442 How much to use compressed signal in output. Default is 1.
443 Range is between 0 and 1.
444 @end table
445
446 @subsection Commands
447
448 This filter supports the all above options as @ref{commands}.
449
450 @section acontrast
451 Simple audio dynamic range compression/expansion filter.
452
453 The filter accepts the following options:
454
455 @table @option
456 @item contrast
457 Set contrast. Default is 33. Allowed range is between 0 and 100.
458 @end table
459
460 @section acopy
461
462 Copy the input audio source unchanged to the output. This is mainly useful for
463 testing purposes.
464
465 @section acrossfade
466
467 Apply cross fade from one input audio stream to another input audio stream.
468 The cross fade is applied for specified duration near the end of first stream.
469
470 The filter accepts the following options:
471
472 @table @option
473 @item nb_samples, ns
474 Specify the number of samples for which the cross fade effect has to last.
475 At the end of the cross fade effect the first input audio will be completely
476 silent. Default is 44100.
477
478 @item duration, d
479 Specify the duration of the cross fade effect. See
480 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
481 for the accepted syntax.
482 By default the duration is determined by @var{nb_samples}.
483 If set this option is used instead of @var{nb_samples}.
484
485 @item overlap, o
486 Should first stream end overlap with second stream start. Default is enabled.
487
488 @item curve1
489 Set curve for cross fade transition for first stream.
490
491 @item curve2
492 Set curve for cross fade transition for second stream.
493
494 For description of available curve types see @ref{afade} filter description.
495 @end table
496
497 @subsection Examples
498
499 @itemize
500 @item
501 Cross fade from one input to another:
502 @example
503 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
504 @end example
505
506 @item
507 Cross fade from one input to another but without overlapping:
508 @example
509 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
510 @end example
511 @end itemize
512
513 @section acrossover
514 Split audio stream into several bands.
515
516 This filter splits audio stream into two or more frequency ranges.
517 Summing all streams back will give flat output.
518
519 The filter accepts the following options:
520
521 @table @option
522 @item split
523 Set split frequencies. Those must be positive and increasing.
524
525 @item order
526 Set filter order for each band split. This controls filter roll-off or steepness
527 of filter transfer function.
528 Available values are:
529
530 @table @samp
531 @item 2nd
532 12 dB per octave.
533 @item 4th
534 24 dB per octave.
535 @item 6th
536 36 dB per octave.
537 @item 8th
538 48 dB per octave.
539 @item 10th
540 60 dB per octave.
541 @item 12th
542 72 dB per octave.
543 @item 14th
544 84 dB per octave.
545 @item 16th
546 96 dB per octave.
547 @item 18th
548 108 dB per octave.
549 @item 20th
550 120 dB per octave.
551 @end table
552
553 Default is @var{4th}.
554
555 @item level
556 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
557
558 @item gains
559 Set output gain for each band. Default value is 1 for all bands.
560 @end table
561
562 @subsection Examples
563
564 @itemize
565 @item
566 Split input audio stream into two bands (low and high) with split frequency of 1500 Hz,
567 each band will be in separate stream:
568 @example
569 ffmpeg -i in.flac -filter_complex 'acrossover=split=1500[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
570 @end example
571
572 @item
573 Same as above, but with higher filter order:
574 @example
575 ffmpeg -i in.flac -filter_complex 'acrossover=split=1500:order=8th[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
576 @end example
577
578 @item
579 Same as above, but also with additional middle band (frequencies between 1500 and 8000):
580 @example
581 ffmpeg -i in.flac -filter_complex 'acrossover=split=1500 8000:order=8th[LOW][MID][HIGH]' -map '[LOW]' low.wav -map '[MID]' mid.wav -map '[HIGH]' high.wav
582 @end example
583 @end itemize
584
585 @section acrusher
586
587 Reduce audio bit resolution.
588
589 This filter is bit crusher with enhanced functionality. A bit crusher
590 is used to audibly reduce number of bits an audio signal is sampled
591 with. This doesn't change the bit depth at all, it just produces the
592 effect. Material reduced in bit depth sounds more harsh and "digital".
593 This filter is able to even round to continuous values instead of discrete
594 bit depths.
595 Additionally it has a D/C offset which results in different crushing of
596 the lower and the upper half of the signal.
597 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
598
599 Another feature of this filter is the logarithmic mode.
600 This setting switches from linear distances between bits to logarithmic ones.
601 The result is a much more "natural" sounding crusher which doesn't gate low
602 signals for example. The human ear has a logarithmic perception,
603 so this kind of crushing is much more pleasant.
604 Logarithmic crushing is also able to get anti-aliased.
605
606 The filter accepts the following options:
607
608 @table @option
609 @item level_in
610 Set level in.
611
612 @item level_out
613 Set level out.
614
615 @item bits
616 Set bit reduction.
617
618 @item mix
619 Set mixing amount.
620
621 @item mode
622 Can be linear: @code{lin} or logarithmic: @code{log}.
623
624 @item dc
625 Set DC.
626
627 @item aa
628 Set anti-aliasing.
629
630 @item samples
631 Set sample reduction.
632
633 @item lfo
634 Enable LFO. By default disabled.
635
636 @item lforange
637 Set LFO range.
638
639 @item lforate
640 Set LFO rate.
641 @end table
642
643 @section acue
644
645 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
646 filter.
647
648 @section adeclick
649 Remove impulsive noise from input audio.
650
651 Samples detected as impulsive noise are replaced by interpolated samples using
652 autoregressive modelling.
653
654 @table @option
655 @item w
656 Set window size, in milliseconds. Allowed range is from @code{10} to
657 @code{100}. Default value is @code{55} milliseconds.
658 This sets size of window which will be processed at once.
659
660 @item o
661 Set window overlap, in percentage of window size. Allowed range is from
662 @code{50} to @code{95}. Default value is @code{75} percent.
663 Setting this to a very high value increases impulsive noise removal but makes
664 whole process much slower.
665
666 @item a
667 Set autoregression order, in percentage of window size. Allowed range is from
668 @code{0} to @code{25}. Default value is @code{2} percent. This option also
669 controls quality of interpolated samples using neighbour good samples.
670
671 @item t
672 Set threshold value. Allowed range is from @code{1} to @code{100}.
673 Default value is @code{2}.
674 This controls the strength of impulsive noise which is going to be removed.
675 The lower value, the more samples will be detected as impulsive noise.
676
677 @item b
678 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
679 @code{10}. Default value is @code{2}.
680 If any two samples detected as noise are spaced less than this value then any
681 sample between those two samples will be also detected as noise.
682
683 @item m
684 Set overlap method.
685
686 It accepts the following values:
687 @table @option
688 @item a
689 Select overlap-add method. Even not interpolated samples are slightly
690 changed with this method.
691
692 @item s
693 Select overlap-save method. Not interpolated samples remain unchanged.
694 @end table
695
696 Default value is @code{a}.
697 @end table
698
699 @section adeclip
700 Remove clipped samples from input audio.
701
702 Samples detected as clipped are replaced by interpolated samples using
703 autoregressive modelling.
704
705 @table @option
706 @item w
707 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
708 Default value is @code{55} milliseconds.
709 This sets size of window which will be processed at once.
710
711 @item o
712 Set window overlap, in percentage of window size. Allowed range is from @code{50}
713 to @code{95}. Default value is @code{75} percent.
714
715 @item a
716 Set autoregression order, in percentage of window size. Allowed range is from
717 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
718 quality of interpolated samples using neighbour good samples.
719
720 @item t
721 Set threshold value. Allowed range is from @code{1} to @code{100}.
722 Default value is @code{10}. Higher values make clip detection less aggressive.
723
724 @item n
725 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
726 Default value is @code{1000}. Higher values make clip detection less aggressive.
727
728 @item m
729 Set overlap method.
730
731 It accepts the following values:
732 @table @option
733 @item a
734 Select overlap-add method. Even not interpolated samples are slightly changed
735 with this method.
736
737 @item s
738 Select overlap-save method. Not interpolated samples remain unchanged.
739 @end table
740
741 Default value is @code{a}.
742 @end table
743
744 @section adelay
745
746 Delay one or more audio channels.
747
748 Samples in delayed channel are filled with silence.
749
750 The filter accepts the following option:
751
752 @table @option
753 @item delays
754 Set list of delays in milliseconds for each channel separated by '|'.
755 Unused delays will be silently ignored. If number of given delays is
756 smaller than number of channels all remaining channels will not be delayed.
757 If you want to delay exact number of samples, append 'S' to number.
758 If you want instead to delay in seconds, append 's' to number.
759
760 @item all
761 Use last set delay for all remaining channels. By default is disabled.
762 This option if enabled changes how option @code{delays} is interpreted.
763 @end table
764
765 @subsection Examples
766
767 @itemize
768 @item
769 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
770 the second channel (and any other channels that may be present) unchanged.
771 @example
772 adelay=1500|0|500
773 @end example
774
775 @item
776 Delay second channel by 500 samples, the third channel by 700 samples and leave
777 the first channel (and any other channels that may be present) unchanged.
778 @example
779 adelay=0|500S|700S
780 @end example
781
782 @item
783 Delay all channels by same number of samples:
784 @example
785 adelay=delays=64S:all=1
786 @end example
787 @end itemize
788
789 @section adenorm
790 Remedy denormals in audio by adding extremely low-level noise.
791
792 This filter shall be placed before any filter that can produce denormals.
793
794 A description of the accepted parameters follows.
795
796 @table @option
797 @item level
798 Set level of added noise in dB. Default is @code{-351}.
799 Allowed range is from -451 to -90.
800
801 @item type
802 Set type of added noise.
803
804 @table @option
805 @item dc
806 Add DC signal.
807 @item ac
808 Add AC signal.
809 @item square
810 Add square signal.
811 @item pulse
812 Add pulse signal.
813 @end table
814
815 Default is @code{dc}.
816 @end table
817
818 @subsection Commands
819
820 This filter supports the all above options as @ref{commands}.
821
822 @section aderivative, aintegral
823
824 Compute derivative/integral of audio stream.
825
826 Applying both filters one after another produces original audio.
827
828 @section aecho
829
830 Apply echoing to the input audio.
831
832 Echoes are reflected sound and can occur naturally amongst mountains
833 (and sometimes large buildings) when talking or shouting; digital echo
834 effects emulate this behaviour and are often used to help fill out the
835 sound of a single instrument or vocal. The time difference between the
836 original signal and the reflection is the @code{delay}, and the
837 loudness of the reflected signal is the @code{decay}.
838 Multiple echoes can have different delays and decays.
839
840 A description of the accepted parameters follows.
841
842 @table @option
843 @item in_gain
844 Set input gain of reflected signal. Default is @code{0.6}.
845
846 @item out_gain
847 Set output gain of reflected signal. Default is @code{0.3}.
848
849 @item delays
850 Set list of time intervals in milliseconds between original signal and reflections
851 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
852 Default is @code{1000}.
853
854 @item decays
855 Set list of loudness of reflected signals separated by '|'.
856 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
857 Default is @code{0.5}.
858 @end table
859
860 @subsection Examples
861
862 @itemize
863 @item
864 Make it sound as if there are twice as many instruments as are actually playing:
865 @example
866 aecho=0.8:0.88:60:0.4
867 @end example
868
869 @item
870 If delay is very short, then it sounds like a (metallic) robot playing music:
871 @example
872 aecho=0.8:0.88:6:0.4
873 @end example
874
875 @item
876 A longer delay will sound like an open air concert in the mountains:
877 @example
878 aecho=0.8:0.9:1000:0.3
879 @end example
880
881 @item
882 Same as above but with one more mountain:
883 @example
884 aecho=0.8:0.9:1000|1800:0.3|0.25
885 @end example
886 @end itemize
887
888 @section aemphasis
889 Audio emphasis filter creates or restores material directly taken from LPs or
890 emphased CDs with different filter curves. E.g. to store music on vinyl the
891 signal has to be altered by a filter first to even out the disadvantages of
892 this recording medium.
893 Once the material is played back the inverse filter has to be applied to
894 restore the distortion of the frequency response.
895
896 The filter accepts the following options:
897
898 @table @option
899 @item level_in
900 Set input gain.
901
902 @item level_out
903 Set output gain.
904
905 @item mode
906 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
907 use @code{production} mode. Default is @code{reproduction} mode.
908
909 @item type
910 Set filter type. Selects medium. Can be one of the following:
911
912 @table @option
913 @item col
914 select Columbia.
915 @item emi
916 select EMI.
917 @item bsi
918 select BSI (78RPM).
919 @item riaa
920 select RIAA.
921 @item cd
922 select Compact Disc (CD).
923 @item 50fm
924 select 50µs (FM).
925 @item 75fm
926 select 75µs (FM).
927 @item 50kf
928 select 50µs (FM-KF).
929 @item 75kf
930 select 75µs (FM-KF).
931 @end table
932 @end table
933
934 @subsection Commands
935
936 This filter supports the all above options as @ref{commands}.
937
938 @section aeval
939
940 Modify an audio signal according to the specified expressions.
941
942 This filter accepts one or more expressions (one for each channel),
943 which are evaluated and used to modify a corresponding audio signal.
944
945 It accepts the following parameters:
946
947 @table @option
948 @item exprs
949 Set the '|'-separated expressions list for each separate channel. If
950 the number of input channels is greater than the number of
951 expressions, the last specified expression is used for the remaining
952 output channels.
953
954 @item channel_layout, c
955 Set output channel layout. If not specified, the channel layout is
956 specified by the number of expressions. If set to @samp{same}, it will
957 use by default the same input channel layout.
958 @end table
959
960 Each expression in @var{exprs} can contain the following constants and functions:
961
962 @table @option
963 @item ch
964 channel number of the current expression
965
966 @item n
967 number of the evaluated sample, starting from 0
968
969 @item s
970 sample rate
971
972 @item t
973 time of the evaluated sample expressed in seconds
974
975 @item nb_in_channels
976 @item nb_out_channels
977 input and output number of channels
978
979 @item val(CH)
980 the value of input channel with number @var{CH}
981 @end table
982
983 Note: this filter is slow. For faster processing you should use a
984 dedicated filter.
985
986 @subsection Examples
987
988 @itemize
989 @item
990 Half volume:
991 @example
992 aeval=val(ch)/2:c=same
993 @end example
994
995 @item
996 Invert phase of the second channel:
997 @example
998 aeval=val(0)|-val(1)
999 @end example
1000 @end itemize
1001
1002 @anchor{afade}
1003 @section afade
1004
1005 Apply fade-in/out effect to input audio.
1006
1007 A description of the accepted parameters follows.
1008
1009 @table @option
1010 @item type, t
1011 Specify the effect type, can be either @code{in} for fade-in, or
1012 @code{out} for a fade-out effect. Default is @code{in}.
1013
1014 @item start_sample, ss
1015 Specify the number of the start sample for starting to apply the fade
1016 effect. Default is 0.
1017
1018 @item nb_samples, ns
1019 Specify the number of samples for which the fade effect has to last. At
1020 the end of the fade-in effect the output audio will have the same
1021 volume as the input audio, at the end of the fade-out transition
1022 the output audio will be silence. Default is 44100.
1023
1024 @item start_time, st
1025 Specify the start time of the fade effect. Default is 0.
1026 The value must be specified as a time duration; see
1027 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1028 for the accepted syntax.
1029 If set this option is used instead of @var{start_sample}.
1030
1031 @item duration, d
1032 Specify the duration of the fade effect. See
1033 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1034 for the accepted syntax.
1035 At the end of the fade-in effect the output audio will have the same
1036 volume as the input audio, at the end of the fade-out transition
1037 the output audio will be silence.
1038 By default the duration is determined by @var{nb_samples}.
1039 If set this option is used instead of @var{nb_samples}.
1040
1041 @item curve
1042 Set curve for fade transition.
1043
1044 It accepts the following values:
1045 @table @option
1046 @item tri
1047 select triangular, linear slope (default)
1048 @item qsin
1049 select quarter of sine wave
1050 @item hsin
1051 select half of sine wave
1052 @item esin
1053 select exponential sine wave
1054 @item log
1055 select logarithmic
1056 @item ipar
1057 select inverted parabola
1058 @item qua
1059 select quadratic
1060 @item cub
1061 select cubic
1062 @item squ
1063 select square root
1064 @item cbr
1065 select cubic root
1066 @item par
1067 select parabola
1068 @item exp
1069 select exponential
1070 @item iqsin
1071 select inverted quarter of sine wave
1072 @item ihsin
1073 select inverted half of sine wave
1074 @item dese
1075 select double-exponential seat
1076 @item desi
1077 select double-exponential sigmoid
1078 @item losi
1079 select logistic sigmoid
1080 @item sinc
1081 select sine cardinal function
1082 @item isinc
1083 select inverted sine cardinal function
1084 @item nofade
1085 no fade applied
1086 @end table
1087 @end table
1088
1089 @subsection Examples
1090
1091 @itemize
1092 @item
1093 Fade in first 15 seconds of audio:
1094 @example
1095 afade=t=in:ss=0:d=15
1096 @end example
1097
1098 @item
1099 Fade out last 25 seconds of a 900 seconds audio:
1100 @example
1101 afade=t=out:st=875:d=25
1102 @end example
1103 @end itemize
1104
1105 @section afftdn
1106 Denoise audio samples with FFT.
1107
1108 A description of the accepted parameters follows.
1109
1110 @table @option
1111 @item nr
1112 Set the noise reduction in dB, allowed range is 0.01 to 97.
1113 Default value is 12 dB.
1114
1115 @item nf
1116 Set the noise floor in dB, allowed range is -80 to -20.
1117 Default value is -50 dB.
1118
1119 @item nt
1120 Set the noise type.
1121
1122 It accepts the following values:
1123 @table @option
1124 @item w
1125 Select white noise.
1126
1127 @item v
1128 Select vinyl noise.
1129
1130 @item s
1131 Select shellac noise.
1132
1133 @item c
1134 Select custom noise, defined in @code{bn} option.
1135
1136 Default value is white noise.
1137 @end table
1138
1139 @item bn
1140 Set custom band noise for every one of 15 bands.
1141 Bands are separated by ' ' or '|'.
1142
1143 @item rf
1144 Set the residual floor in dB, allowed range is -80 to -20.
1145 Default value is -38 dB.
1146
1147 @item tn
1148 Enable noise tracking. By default is disabled.
1149 With this enabled, noise floor is automatically adjusted.
1150
1151 @item tr
1152 Enable residual tracking. By default is disabled.
1153
1154 @item om
1155 Set the output mode.
1156
1157 It accepts the following values:
1158 @table @option
1159 @item i
1160 Pass input unchanged.
1161
1162 @item o
1163 Pass noise filtered out.
1164
1165 @item n
1166 Pass only noise.
1167
1168 Default value is @var{o}.
1169 @end table
1170 @end table
1171
1172 @subsection Commands
1173
1174 This filter supports the following commands:
1175 @table @option
1176 @item sample_noise, sn
1177 Start or stop measuring noise profile.
1178 Syntax for the command is : "start" or "stop" string.
1179 After measuring noise profile is stopped it will be
1180 automatically applied in filtering.
1181
1182 @item noise_reduction, nr
1183 Change noise reduction. Argument is single float number.
1184 Syntax for the command is : "@var{noise_reduction}"
1185
1186 @item noise_floor, nf
1187 Change noise floor. Argument is single float number.
1188 Syntax for the command is : "@var{noise_floor}"
1189
1190 @item output_mode, om
1191 Change output mode operation.
1192 Syntax for the command is : "i", "o" or "n" string.
1193 @end table
1194
1195 @section afftfilt
1196 Apply arbitrary expressions to samples in frequency domain.
1197
1198 @table @option
1199 @item real
1200 Set frequency domain real expression for each separate channel separated
1201 by '|'. Default is "re".
1202 If the number of input channels is greater than the number of
1203 expressions, the last specified expression is used for the remaining
1204 output channels.
1205
1206 @item imag
1207 Set frequency domain imaginary expression for each separate channel
1208 separated by '|'. Default is "im".
1209
1210 Each expression in @var{real} and @var{imag} can contain the following
1211 constants and functions:
1212
1213 @table @option
1214 @item sr
1215 sample rate
1216
1217 @item b
1218 current frequency bin number
1219
1220 @item nb
1221 number of available bins
1222
1223 @item ch
1224 channel number of the current expression
1225
1226 @item chs
1227 number of channels
1228
1229 @item pts
1230 current frame pts
1231
1232 @item re
1233 current real part of frequency bin of current channel
1234
1235 @item im
1236 current imaginary part of frequency bin of current channel
1237
1238 @item real(b, ch)
1239 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1240
1241 @item imag(b, ch)
1242 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1243 @end table
1244
1245 @item win_size
1246 Set window size. Allowed range is from 16 to 131072.
1247 Default is @code{4096}
1248
1249 @item win_func
1250 Set window function. Default is @code{hann}.
1251
1252 @item overlap
1253 Set window overlap. If set to 1, the recommended overlap for selected
1254 window function will be picked. Default is @code{0.75}.
1255 @end table
1256
1257 @subsection Examples
1258
1259 @itemize
1260 @item
1261 Leave almost only low frequencies in audio:
1262 @example
1263 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1264 @end example
1265
1266 @item
1267 Apply robotize effect:
1268 @example
1269 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1270 @end example
1271
1272 @item
1273 Apply whisper effect:
1274 @example
1275 afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8"
1276 @end example
1277 @end itemize
1278
1279 @anchor{afir}
1280 @section afir
1281
1282 Apply an arbitrary Finite Impulse Response filter.
1283
1284 This filter is designed for applying long FIR filters,
1285 up to 60 seconds long.
1286
1287 It can be used as component for digital crossover filters,
1288 room equalization, cross talk cancellation, wavefield synthesis,
1289 auralization, ambiophonics, ambisonics and spatialization.
1290
1291 This filter uses the streams higher than first one as FIR coefficients.
1292 If the non-first stream holds a single channel, it will be used
1293 for all input channels in the first stream, otherwise
1294 the number of channels in the non-first stream must be same as
1295 the number of channels in the first stream.
1296
1297 It accepts the following parameters:
1298
1299 @table @option
1300 @item dry
1301 Set dry gain. This sets input gain.
1302
1303 @item wet
1304 Set wet gain. This sets final output gain.
1305
1306 @item length
1307 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1308
1309 @item gtype
1310 Enable applying gain measured from power of IR.
1311
1312 Set which approach to use for auto gain measurement.
1313
1314 @table @option
1315 @item none
1316 Do not apply any gain.
1317
1318 @item peak
1319 select peak gain, very conservative approach. This is default value.
1320
1321 @item dc
1322 select DC gain, limited application.
1323
1324 @item gn
1325 select gain to noise approach, this is most popular one.
1326 @end table
1327
1328 @item irgain
1329 Set gain to be applied to IR coefficients before filtering.
1330 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1331
1332 @item irfmt
1333 Set format of IR stream. Can be @code{mono} or @code{input}.
1334 Default is @code{input}.
1335
1336 @item maxir
1337 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1338 Allowed range is 0.1 to 60 seconds.
1339
1340 @item response
1341 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1342 By default it is disabled.
1343
1344 @item channel
1345 Set for which IR channel to display frequency response. By default is first channel
1346 displayed. This option is used only when @var{response} is enabled.
1347
1348 @item size
1349 Set video stream size. This option is used only when @var{response} is enabled.
1350
1351 @item rate
1352 Set video stream frame rate. This option is used only when @var{response} is enabled.
1353
1354 @item minp
1355 Set minimal partition size used for convolution. Default is @var{8192}.
1356 Allowed range is from @var{1} to @var{32768}.
1357 Lower values decreases latency at cost of higher CPU usage.
1358
1359 @item maxp
1360 Set maximal partition size used for convolution. Default is @var{8192}.
1361 Allowed range is from @var{8} to @var{32768}.
1362 Lower values may increase CPU usage.
1363
1364 @item nbirs
1365 Set number of input impulse responses streams which will be switchable at runtime.
1366 Allowed range is from @var{1} to @var{32}. Default is @var{1}.
1367
1368 @item ir
1369 Set IR stream which will be used for convolution, starting from @var{0}, should always be
1370 lower than supplied value by @code{nbirs} option. Default is @var{0}.
1371 This option can be changed at runtime via @ref{commands}.
1372 @end table
1373
1374 @subsection Examples
1375
1376 @itemize
1377 @item
1378 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1379 @example
1380 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1381 @end example
1382 @end itemize
1383
1384 @anchor{aformat}
1385 @section aformat
1386
1387 Set output format constraints for the input audio. The framework will
1388 negotiate the most appropriate format to minimize conversions.
1389
1390 It accepts the following parameters:
1391 @table @option
1392
1393 @item sample_fmts, f
1394 A '|'-separated list of requested sample formats.
1395
1396 @item sample_rates, r
1397 A '|'-separated list of requested sample rates.
1398
1399 @item channel_layouts, cl
1400 A '|'-separated list of requested channel layouts.
1401
1402 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1403 for the required syntax.
1404 @end table
1405
1406 If a parameter is omitted, all values are allowed.
1407
1408 Force the output to either unsigned 8-bit or signed 16-bit stereo
1409 @example
1410 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1411 @end example
1412
1413 @section afreqshift
1414 Apply frequency shift to input audio samples.
1415
1416 The filter accepts the following options:
1417
1418 @table @option
1419 @item shift
1420 Specify frequency shift. Allowed range is -INT_MAX to INT_MAX.
1421 Default value is 0.0.
1422 @end table
1423
1424 @subsection Commands
1425
1426 This filter supports the above option as @ref{commands}.
1427
1428 @section agate
1429
1430 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1431 processing reduces disturbing noise between useful signals.
1432
1433 Gating is done by detecting the volume below a chosen level @var{threshold}
1434 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1435 floor is set via @var{range}. Because an exact manipulation of the signal
1436 would cause distortion of the waveform the reduction can be levelled over
1437 time. This is done by setting @var{attack} and @var{release}.
1438
1439 @var{attack} determines how long the signal has to fall below the threshold
1440 before any reduction will occur and @var{release} sets the time the signal
1441 has to rise above the threshold to reduce the reduction again.
1442 Shorter signals than the chosen attack time will be left untouched.
1443
1444 @table @option
1445 @item level_in
1446 Set input level before filtering.
1447 Default is 1. Allowed range is from 0.015625 to 64.
1448
1449 @item mode
1450 Set the mode of operation. Can be @code{upward} or @code{downward}.
1451 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1452 will be amplified, expanding dynamic range in upward direction.
1453 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1454
1455 @item range
1456 Set the level of gain reduction when the signal is below the threshold.
1457 Default is 0.06125. Allowed range is from 0 to 1.
1458 Setting this to 0 disables reduction and then filter behaves like expander.
1459
1460 @item threshold
1461 If a signal rises above this level the gain reduction is released.
1462 Default is 0.125. Allowed range is from 0 to 1.
1463
1464 @item ratio
1465 Set a ratio by which the signal is reduced.
1466 Default is 2. Allowed range is from 1 to 9000.
1467
1468 @item attack
1469 Amount of milliseconds the signal has to rise above the threshold before gain
1470 reduction stops.
1471 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1472
1473 @item release
1474 Amount of milliseconds the signal has to fall below the threshold before the
1475 reduction is increased again. Default is 250 milliseconds.
1476 Allowed range is from 0.01 to 9000.
1477
1478 @item makeup
1479 Set amount of amplification of signal after processing.
1480 Default is 1. Allowed range is from 1 to 64.
1481
1482 @item knee
1483 Curve the sharp knee around the threshold to enter gain reduction more softly.
1484 Default is 2.828427125. Allowed range is from 1 to 8.
1485
1486 @item detection
1487 Choose if exact signal should be taken for detection or an RMS like one.
1488 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1489
1490 @item link
1491 Choose if the average level between all channels or the louder channel affects
1492 the reduction.
1493 Default is @code{average}. Can be @code{average} or @code{maximum}.
1494 @end table
1495
1496 @subsection Commands
1497
1498 This filter supports the all above options as @ref{commands}.
1499
1500 @section aiir
1501
1502 Apply an arbitrary Infinite Impulse Response filter.
1503
1504 It accepts the following parameters:
1505
1506 @table @option
1507 @item zeros, z
1508 Set B/numerator/zeros/reflection coefficients.
1509
1510 @item poles, p
1511 Set A/denominator/poles/ladder coefficients.
1512
1513 @item gains, k
1514 Set channels gains.
1515
1516 @item dry_gain
1517 Set input gain.
1518
1519 @item wet_gain
1520 Set output gain.
1521
1522 @item format, f
1523 Set coefficients format.
1524
1525 @table @samp
1526 @item ll
1527 lattice-ladder function
1528 @item sf
1529 analog transfer function
1530 @item tf
1531 digital transfer function
1532 @item zp
1533 Z-plane zeros/poles, cartesian (default)
1534 @item pr
1535 Z-plane zeros/poles, polar radians
1536 @item pd
1537 Z-plane zeros/poles, polar degrees
1538 @item sp
1539 S-plane zeros/poles
1540 @end table
1541
1542 @item process, r
1543 Set type of processing.
1544
1545 @table @samp
1546 @item d
1547 direct processing
1548 @item s
1549 serial processing
1550 @item p
1551 parallel processing
1552 @end table
1553
1554 @item precision, e
1555 Set filtering precision.
1556
1557 @table @samp
1558 @item dbl
1559 double-precision floating-point (default)
1560 @item flt
1561 single-precision floating-point
1562 @item i32
1563 32-bit integers
1564 @item i16
1565 16-bit integers
1566 @end table
1567
1568 @item normalize, n
1569 Normalize filter coefficients, by default is enabled.
1570 Enabling it will normalize magnitude response at DC to 0dB.
1571
1572 @item mix
1573 How much to use filtered signal in output. Default is 1.
1574 Range is between 0 and 1.
1575
1576 @item response
1577 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1578 By default it is disabled.
1579
1580 @item channel
1581 Set for which IR channel to display frequency response. By default is first channel
1582 displayed. This option is used only when @var{response} is enabled.
1583
1584 @item size
1585 Set video stream size. This option is used only when @var{response} is enabled.
1586 @end table
1587
1588 Coefficients in @code{tf} and @code{sf} format are separated by spaces and are in ascending
1589 order.
1590
1591 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1592 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1593 imaginary unit.
1594
1595 Different coefficients and gains can be provided for every channel, in such case
1596 use '|' to separate coefficients or gains. Last provided coefficients will be
1597 used for all remaining channels.
1598
1599 @subsection Examples
1600
1601 @itemize
1602 @item
1603 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1604 @example
1605 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
1606 @end example
1607
1608 @item
1609 Same as above but in @code{zp} format:
1610 @example
1611 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
1612 @end example
1613
1614 @item
1615 Apply 3-rd order analog normalized Butterworth low-pass filter, using analog transfer function format:
1616 @example
1617 aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
1618 @end example
1619 @end itemize
1620
1621 @section alimiter
1622
1623 The limiter prevents an input signal from rising over a desired threshold.
1624 This limiter uses lookahead technology to prevent your signal from distorting.
1625 It means that there is a small delay after the signal is processed. Keep in mind
1626 that the delay it produces is the attack time you set.
1627
1628 The filter accepts the following options:
1629
1630 @table @option
1631 @item level_in
1632 Set input gain. Default is 1.
1633
1634 @item level_out
1635 Set output gain. Default is 1.
1636
1637 @item limit
1638 Don't let signals above this level pass the limiter. Default is 1.
1639
1640 @item attack
1641 The limiter will reach its attenuation level in this amount of time in
1642 milliseconds. Default is 5 milliseconds.
1643
1644 @item release
1645 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1646 Default is 50 milliseconds.
1647
1648 @item asc
1649 When gain reduction is always needed ASC takes care of releasing to an
1650 average reduction level rather than reaching a reduction of 0 in the release
1651 time.
1652
1653 @item asc_level
1654 Select how much the release time is affected by ASC, 0 means nearly no changes
1655 in release time while 1 produces higher release times.
1656
1657 @item level
1658 Auto level output signal. Default is enabled.
1659 This normalizes audio back to 0dB if enabled.
1660 @end table
1661
1662 Depending on picked setting it is recommended to upsample input 2x or 4x times
1663 with @ref{aresample} before applying this filter.
1664
1665 @section allpass
1666
1667 Apply a two-pole all-pass filter with central frequency (in Hz)
1668 @var{frequency}, and filter-width @var{width}.
1669 An all-pass filter changes the audio's frequency to phase relationship
1670 without changing its frequency to amplitude relationship.
1671
1672 The filter accepts the following options:
1673
1674 @table @option
1675 @item frequency, f
1676 Set frequency in Hz.
1677
1678 @item width_type, t
1679 Set method to specify band-width of filter.
1680 @table @option
1681 @item h
1682 Hz
1683 @item q
1684 Q-Factor
1685 @item o
1686 octave
1687 @item s
1688 slope
1689 @item k
1690 kHz
1691 @end table
1692
1693 @item width, w
1694 Specify the band-width of a filter in width_type units.
1695
1696 @item mix, m
1697 How much to use filtered signal in output. Default is 1.
1698 Range is between 0 and 1.
1699
1700 @item channels, c
1701 Specify which channels to filter, by default all available are filtered.
1702
1703 @item normalize, n
1704 Normalize biquad coefficients, by default is disabled.
1705 Enabling it will normalize magnitude response at DC to 0dB.
1706
1707 @item order, o
1708 Set the filter order, can be 1 or 2. Default is 2.
1709
1710 @item transform, a
1711 Set transform type of IIR filter.
1712 @table @option
1713 @item di
1714 @item dii
1715 @item tdii
1716 @item latt
1717 @end table
1718 @end table
1719
1720 @subsection Commands
1721
1722 This filter supports the following commands:
1723 @table @option
1724 @item frequency, f
1725 Change allpass frequency.
1726 Syntax for the command is : "@var{frequency}"
1727
1728 @item width_type, t
1729 Change allpass width_type.
1730 Syntax for the command is : "@var{width_type}"
1731
1732 @item width, w
1733 Change allpass width.
1734 Syntax for the command is : "@var{width}"
1735
1736 @item mix, m
1737 Change allpass mix.
1738 Syntax for the command is : "@var{mix}"
1739 @end table
1740
1741 @section aloop
1742
1743 Loop audio samples.
1744
1745 The filter accepts the following options:
1746
1747 @table @option
1748 @item loop
1749 Set the number of loops. Setting this value to -1 will result in infinite loops.
1750 Default is 0.
1751
1752 @item size
1753 Set maximal number of samples. Default is 0.
1754
1755 @item start
1756 Set first sample of loop. Default is 0.
1757 @end table
1758
1759 @anchor{amerge}
1760 @section amerge
1761
1762 Merge two or more audio streams into a single multi-channel stream.
1763
1764 The filter accepts the following options:
1765
1766 @table @option
1767
1768 @item inputs
1769 Set the number of inputs. Default is 2.
1770
1771 @end table
1772
1773 If the channel layouts of the inputs are disjoint, and therefore compatible,
1774 the channel layout of the output will be set accordingly and the channels
1775 will be reordered as necessary. If the channel layouts of the inputs are not
1776 disjoint, the output will have all the channels of the first input then all
1777 the channels of the second input, in that order, and the channel layout of
1778 the output will be the default value corresponding to the total number of
1779 channels.
1780
1781 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1782 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1783 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1784 first input, b1 is the first channel of the second input).
1785
1786 On the other hand, if both input are in stereo, the output channels will be
1787 in the default order: a1, a2, b1, b2, and the channel layout will be
1788 arbitrarily set to 4.0, which may or may not be the expected value.
1789
1790 All inputs must have the same sample rate, and format.
1791
1792 If inputs do not have the same duration, the output will stop with the
1793 shortest.
1794
1795 @subsection Examples
1796
1797 @itemize
1798 @item
1799 Merge two mono files into a stereo stream:
1800 @example
1801 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1802 @end example
1803
1804 @item
1805 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1806 @example
1807 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
1808 @end example
1809 @end itemize
1810
1811 @section amix
1812
1813 Mixes multiple audio inputs into a single output.
1814
1815 Note that this filter only supports float samples (the @var{amerge}
1816 and @var{pan} audio filters support many formats). If the @var{amix}
1817 input has integer samples then @ref{aresample} will be automatically
1818 inserted to perform the conversion to float samples.
1819
1820 For example
1821 @example
1822 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1823 @end example
1824 will mix 3 input audio streams to a single output with the same duration as the
1825 first input and a dropout transition time of 3 seconds.
1826
1827 It accepts the following parameters:
1828 @table @option
1829
1830 @item inputs
1831 The number of inputs. If unspecified, it defaults to 2.
1832
1833 @item duration
1834 How to determine the end-of-stream.
1835 @table @option
1836
1837 @item longest
1838 The duration of the longest input. (default)
1839
1840 @item shortest
1841 The duration of the shortest input.
1842
1843 @item first
1844 The duration of the first input.
1845
1846 @end table
1847
1848 @item dropout_transition
1849 The transition time, in seconds, for volume renormalization when an input
1850 stream ends. The default value is 2 seconds.
1851
1852 @item weights
1853 Specify weight of each input audio stream as sequence.
1854 Each weight is separated by space. By default all inputs have same weight.
1855 @end table
1856
1857 @subsection Commands
1858
1859 This filter supports the following commands:
1860 @table @option
1861 @item weights
1862 Syntax is same as option with same name.
1863 @end table
1864
1865 @section amultiply
1866
1867 Multiply first audio stream with second audio stream and store result
1868 in output audio stream. Multiplication is done by multiplying each
1869 sample from first stream with sample at same position from second stream.
1870
1871 With this element-wise multiplication one can create amplitude fades and
1872 amplitude modulations.
1873
1874 @section anequalizer
1875
1876 High-order parametric multiband equalizer for each channel.
1877
1878 It accepts the following parameters:
1879 @table @option
1880 @item params
1881
1882 This option string is in format:
1883 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1884 Each equalizer band is separated by '|'.
1885
1886 @table @option
1887 @item chn
1888 Set channel number to which equalization will be applied.
1889 If input doesn't have that channel the entry is ignored.
1890
1891 @item f
1892 Set central frequency for band.
1893 If input doesn't have that frequency the entry is ignored.
1894
1895 @item w
1896 Set band width in Hertz.
1897
1898 @item g
1899 Set band gain in dB.
1900
1901 @item t
1902 Set filter type for band, optional, can be:
1903
1904 @table @samp
1905 @item 0
1906 Butterworth, this is default.
1907
1908 @item 1
1909 Chebyshev type 1.
1910
1911 @item 2
1912 Chebyshev type 2.
1913 @end table
1914 @end table
1915
1916 @item curves
1917 With this option activated frequency response of anequalizer is displayed
1918 in video stream.
1919
1920 @item size
1921 Set video stream size. Only useful if curves option is activated.
1922
1923 @item mgain
1924 Set max gain that will be displayed. Only useful if curves option is activated.
1925 Setting this to a reasonable value makes it possible to display gain which is derived from
1926 neighbour bands which are too close to each other and thus produce higher gain
1927 when both are activated.
1928
1929 @item fscale
1930 Set frequency scale used to draw frequency response in video output.
1931 Can be linear or logarithmic. Default is logarithmic.
1932
1933 @item colors
1934 Set color for each channel curve which is going to be displayed in video stream.
1935 This is list of color names separated by space or by '|'.
1936 Unrecognised or missing colors will be replaced by white color.
1937 @end table
1938
1939 @subsection Examples
1940
1941 @itemize
1942 @item
1943 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1944 for first 2 channels using Chebyshev type 1 filter:
1945 @example
1946 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1947 @end example
1948 @end itemize
1949
1950 @subsection Commands
1951
1952 This filter supports the following commands:
1953 @table @option
1954 @item change
1955 Alter existing filter parameters.
1956 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1957
1958 @var{fN} is existing filter number, starting from 0, if no such filter is available
1959 error is returned.
1960 @var{freq} set new frequency parameter.
1961 @var{width} set new width parameter in Hertz.
1962 @var{gain} set new gain parameter in dB.
1963
1964 Full filter invocation with asendcmd may look like this:
1965 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1966 @end table
1967
1968 @section anlmdn
1969
1970 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1971
1972 Each sample is adjusted by looking for other samples with similar contexts. This
1973 context similarity is defined by comparing their surrounding patches of size
1974 @option{p}. Patches are searched in an area of @option{r} around the sample.
1975
1976 The filter accepts the following options:
1977
1978 @table @option
1979 @item s
1980 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1981
1982 @item p
1983 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1984 Default value is 2 milliseconds.
1985
1986 @item r
1987 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1988 Default value is 6 milliseconds.
1989
1990 @item o
1991 Set the output mode.
1992
1993 It accepts the following values:
1994 @table @option
1995 @item i
1996 Pass input unchanged.
1997
1998 @item o
1999 Pass noise filtered out.
2000
2001 @item n
2002 Pass only noise.
2003
2004 Default value is @var{o}.
2005 @end table
2006
2007 @item m
2008 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
2009 @end table
2010
2011 @subsection Commands
2012
2013 This filter supports the all above options as @ref{commands}.
2014
2015 @section anlms
2016 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
2017
2018 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
2019 relate to producing the least mean square of the error signal (difference between the desired,
2020 2nd input audio stream and the actual signal, the 1st input audio stream).
2021
2022 A description of the accepted options follows.
2023
2024 @table @option
2025 @item order
2026 Set filter order.
2027
2028 @item mu
2029 Set filter mu.
2030
2031 @item eps
2032 Set the filter eps.
2033
2034 @item leakage
2035 Set the filter leakage.
2036
2037 @item out_mode
2038 It accepts the following values:
2039 @table @option
2040 @item i
2041 Pass the 1st input.
2042
2043 @item d
2044 Pass the 2nd input.
2045
2046 @item o
2047 Pass filtered samples.
2048
2049 @item n
2050 Pass difference between desired and filtered samples.
2051
2052 Default value is @var{o}.
2053 @end table
2054 @end table
2055
2056 @subsection Examples
2057
2058 @itemize
2059 @item
2060 One of many usages of this filter is noise reduction, input audio is filtered
2061 with same samples that are delayed by fixed amount, one such example for stereo audio is:
2062 @example
2063 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
2064 @end example
2065 @end itemize
2066
2067 @subsection Commands
2068
2069 This filter supports the same commands as options, excluding option @code{order}.
2070
2071 @section anull
2072
2073 Pass the audio source unchanged to the output.
2074
2075 @section apad
2076
2077 Pad the end of an audio stream with silence.
2078
2079 This can be used together with @command{ffmpeg} @option{-shortest} to
2080 extend audio streams to the same length as the video stream.
2081
2082 A description of the accepted options follows.
2083
2084 @table @option
2085 @item packet_size
2086 Set silence packet size. Default value is 4096.
2087
2088 @item pad_len
2089 Set the number of samples of silence to add to the end. After the
2090 value is reached, the stream is terminated. This option is mutually
2091 exclusive with @option{whole_len}.
2092
2093 @item whole_len
2094 Set the minimum total number of samples in the output audio stream. If
2095 the value is longer than the input audio length, silence is added to
2096 the end, until the value is reached. This option is mutually exclusive
2097 with @option{pad_len}.
2098
2099 @item pad_dur
2100 Specify the duration of samples of silence to add. See
2101 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2102 for the accepted syntax. Used only if set to non-zero value.
2103
2104 @item whole_dur
2105 Specify the minimum total duration in the output audio stream. See
2106 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2107 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
2108 the input audio length, silence is added to the end, until the value is reached.
2109 This option is mutually exclusive with @option{pad_dur}
2110 @end table
2111
2112 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
2113 nor @option{whole_dur} option is set, the filter will add silence to the end of
2114 the input stream indefinitely.
2115
2116 @subsection Examples
2117
2118 @itemize
2119 @item
2120 Add 1024 samples of silence to the end of the input:
2121 @example
2122 apad=pad_len=1024
2123 @end example
2124
2125 @item
2126 Make sure the audio output will contain at least 10000 samples, pad
2127 the input with silence if required:
2128 @example
2129 apad=whole_len=10000
2130 @end example
2131
2132 @item
2133 Use @command{ffmpeg} to pad the audio input with silence, so that the
2134 video stream will always result the shortest and will be converted
2135 until the end in the output file when using the @option{shortest}
2136 option:
2137 @example
2138 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
2139 @end example
2140 @end itemize
2141
2142 @section aphaser
2143 Add a phasing effect to the input audio.
2144
2145 A phaser filter creates series of peaks and troughs in the frequency spectrum.
2146 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
2147
2148 A description of the accepted parameters follows.
2149
2150 @table @option
2151 @item in_gain
2152 Set input gain. Default is 0.4.
2153
2154 @item out_gain
2155 Set output gain. Default is 0.74
2156
2157 @item delay
2158 Set delay in milliseconds. Default is 3.0.
2159
2160 @item decay
2161 Set decay. Default is 0.4.
2162
2163 @item speed
2164 Set modulation speed in Hz. Default is 0.5.
2165
2166 @item type
2167 Set modulation type. Default is triangular.
2168
2169 It accepts the following values:
2170 @table @samp
2171 @item triangular, t
2172 @item sinusoidal, s
2173 @end table
2174 @end table
2175
2176 @section aphaseshift
2177 Apply phase shift to input audio samples.
2178
2179 The filter accepts the following options:
2180
2181 @table @option
2182 @item shift
2183 Specify phase shift. Allowed range is from -1.0 to 1.0.
2184 Default value is 0.0.
2185 @end table
2186
2187 @subsection Commands
2188
2189 This filter supports the above option as @ref{commands}.
2190
2191 @section apulsator
2192
2193 Audio pulsator is something between an autopanner and a tremolo.
2194 But it can produce funny stereo effects as well. Pulsator changes the volume
2195 of the left and right channel based on a LFO (low frequency oscillator) with
2196 different waveforms and shifted phases.
2197 This filter have the ability to define an offset between left and right
2198 channel. An offset of 0 means that both LFO shapes match each other.
2199 The left and right channel are altered equally - a conventional tremolo.
2200 An offset of 50% means that the shape of the right channel is exactly shifted
2201 in phase (or moved backwards about half of the frequency) - pulsator acts as
2202 an autopanner. At 1 both curves match again. Every setting in between moves the
2203 phase shift gapless between all stages and produces some "bypassing" sounds with
2204 sine and triangle waveforms. The more you set the offset near 1 (starting from
2205 the 0.5) the faster the signal passes from the left to the right speaker.
2206
2207 The filter accepts the following options:
2208
2209 @table @option
2210 @item level_in
2211 Set input gain. By default it is 1. Range is [0.015625 - 64].
2212
2213 @item level_out
2214 Set output gain. By default it is 1. Range is [0.015625 - 64].
2215
2216 @item mode
2217 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2218 sawup or sawdown. Default is sine.
2219
2220 @item amount
2221 Set modulation. Define how much of original signal is affected by the LFO.
2222
2223 @item offset_l
2224 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2225
2226 @item offset_r
2227 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2228
2229 @item width
2230 Set pulse width. Default is 1. Allowed range is [0 - 2].
2231
2232 @item timing
2233 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2234
2235 @item bpm
2236 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2237 is set to bpm.
2238
2239 @item ms
2240 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2241 is set to ms.
2242
2243 @item hz
2244 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2245 if timing is set to hz.
2246 @end table
2247
2248 @anchor{aresample}
2249 @section aresample
2250
2251 Resample the input audio to the specified parameters, using the
2252 libswresample library. If none are specified then the filter will
2253 automatically convert between its input and output.
2254
2255 This filter is also able to stretch/squeeze the audio data to make it match
2256 the timestamps or to inject silence / cut out audio to make it match the
2257 timestamps, do a combination of both or do neither.
2258
2259 The filter accepts the syntax
2260 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2261 expresses a sample rate and @var{resampler_options} is a list of
2262 @var{key}=@var{value} pairs, separated by ":". See the
2263 @ref{Resampler Options,,"Resampler Options" section in the
2264 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2265 for the complete list of supported options.
2266
2267 @subsection Examples
2268
2269 @itemize
2270 @item
2271 Resample the input audio to 44100Hz:
2272 @example
2273 aresample=44100
2274 @end example
2275
2276 @item
2277 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2278 samples per second compensation:
2279 @example
2280 aresample=async=1000
2281 @end example
2282 @end itemize
2283
2284 @section areverse
2285
2286 Reverse an audio clip.
2287
2288 Warning: This filter requires memory to buffer the entire clip, so trimming
2289 is suggested.
2290
2291 @subsection Examples
2292
2293 @itemize
2294 @item
2295 Take the first 5 seconds of a clip, and reverse it.
2296 @example
2297 atrim=end=5,areverse
2298 @end example
2299 @end itemize
2300
2301 @section arnndn
2302
2303 Reduce noise from speech using Recurrent Neural Networks.
2304
2305 This filter accepts the following options:
2306
2307 @table @option
2308 @item model, m
2309 Set train model file to load. This option is always required.
2310
2311 @item mix
2312 Set how much to mix filtered samples into final output.
2313 Allowed range is from -1 to 1. Default value is 1.
2314 Negative values are special, they set how much to keep filtered noise
2315 in the final filter output. Set this option to -1 to hear actual
2316 noise removed from input signal.
2317 @end table
2318
2319 @section asetnsamples
2320
2321 Set the number of samples per each output audio frame.
2322
2323 The last output packet may contain a different number of samples, as
2324 the filter will flush all the remaining samples when the input audio
2325 signals its end.
2326
2327 The filter accepts the following options:
2328
2329 @table @option
2330
2331 @item nb_out_samples, n
2332 Set the number of frames per each output audio frame. The number is
2333 intended as the number of samples @emph{per each channel}.
2334 Default value is 1024.
2335
2336 @item pad, p
2337 If set to 1, the filter will pad the last audio frame with zeroes, so
2338 that the last frame will contain the same number of samples as the
2339 previous ones. Default value is 1.
2340 @end table
2341
2342 For example, to set the number of per-frame samples to 1234 and
2343 disable padding for the last frame, use:
2344 @example
2345 asetnsamples=n=1234:p=0
2346 @end example
2347
2348 @section asetrate
2349
2350 Set the sample rate without altering the PCM data.
2351 This will result in a change of speed and pitch.
2352
2353 The filter accepts the following options:
2354
2355 @table @option
2356 @item sample_rate, r
2357 Set the output sample rate. Default is 44100 Hz.
2358 @end table
2359
2360 @section ashowinfo
2361
2362 Show a line containing various information for each input audio frame.
2363 The input audio is not modified.
2364
2365 The shown line contains a sequence of key/value pairs of the form
2366 @var{key}:@var{value}.
2367
2368 The following values are shown in the output:
2369
2370 @table @option
2371 @item n
2372 The (sequential) number of the input frame, starting from 0.
2373
2374 @item pts
2375 The presentation timestamp of the input frame, in time base units; the time base
2376 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2377
2378 @item pts_time
2379 The presentation timestamp of the input frame in seconds.
2380
2381 @item pos
2382 position of the frame in the input stream, -1 if this information in
2383 unavailable and/or meaningless (for example in case of synthetic audio)
2384
2385 @item fmt
2386 The sample format.
2387
2388 @item chlayout
2389 The channel layout.
2390
2391 @item rate
2392 The sample rate for the audio frame.
2393
2394 @item nb_samples
2395 The number of samples (per channel) in the frame.
2396
2397 @item checksum
2398 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2399 audio, the data is treated as if all the planes were concatenated.
2400
2401 @item plane_checksums
2402 A list of Adler-32 checksums for each data plane.
2403 @end table
2404
2405 @section asoftclip
2406 Apply audio soft clipping.
2407
2408 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2409 along a smooth curve, rather than the abrupt shape of hard-clipping.
2410
2411 This filter accepts the following options:
2412
2413 @table @option
2414 @item type
2415 Set type of soft-clipping.
2416
2417 It accepts the following values:
2418 @table @option
2419 @item hard
2420 @item tanh
2421 @item atan
2422 @item cubic
2423 @item exp
2424 @item alg
2425 @item quintic
2426 @item sin
2427 @item erf
2428 @end table
2429
2430 @item param
2431 Set additional parameter which controls sigmoid function.
2432
2433 @item oversample
2434 Set oversampling factor.
2435 @end table
2436
2437 @subsection Commands
2438
2439 This filter supports the all above options as @ref{commands}.
2440
2441 @section asr
2442 Automatic Speech Recognition
2443
2444 This filter uses PocketSphinx for speech recognition. To enable
2445 compilation of this filter, you need to configure FFmpeg with
2446 @code{--enable-pocketsphinx}.
2447
2448 It accepts the following options:
2449
2450 @table @option
2451 @item rate
2452 Set sampling rate of input audio. Defaults is @code{16000}.
2453 This need to match speech models, otherwise one will get poor results.
2454
2455 @item hmm
2456 Set dictionary containing acoustic model files.
2457
2458 @item dict
2459 Set pronunciation dictionary.
2460
2461 @item lm
2462 Set language model file.
2463
2464 @item lmctl
2465 Set language model set.
2466
2467 @item lmname
2468 Set which language model to use.
2469
2470 @item logfn
2471 Set output for log messages.
2472 @end table
2473
2474 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2475
2476 @anchor{astats}
2477 @section astats
2478
2479 Display time domain statistical information about the audio channels.
2480 Statistics are calculated and displayed for each audio channel and,
2481 where applicable, an overall figure is also given.
2482
2483 It accepts the following option:
2484 @table @option
2485 @item length
2486 Short window length in seconds, used for peak and trough RMS measurement.
2487 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2488
2489 @item metadata
2490
2491 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2492 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2493 disabled.
2494
2495 Available keys for each channel are:
2496 DC_offset
2497 Min_level
2498 Max_level
2499 Min_difference
2500 Max_difference
2501 Mean_difference
2502 RMS_difference
2503 Peak_level
2504 RMS_peak
2505 RMS_trough
2506 Crest_factor
2507 Flat_factor
2508 Peak_count
2509 Noise_floor
2510 Noise_floor_count
2511 Bit_depth
2512 Dynamic_range
2513 Zero_crossings
2514 Zero_crossings_rate
2515 Number_of_NaNs
2516 Number_of_Infs
2517 Number_of_denormals
2518
2519 and for Overall:
2520 DC_offset
2521 Min_level
2522 Max_level
2523 Min_difference
2524 Max_difference
2525 Mean_difference
2526 RMS_difference
2527 Peak_level
2528 RMS_level
2529 RMS_peak
2530 RMS_trough
2531 Flat_factor
2532 Peak_count
2533 Noise_floor
2534 Noise_floor_count
2535 Bit_depth
2536 Number_of_samples
2537 Number_of_NaNs
2538 Number_of_Infs
2539 Number_of_denormals
2540
2541 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2542 this @code{lavfi.astats.Overall.Peak_count}.
2543
2544 For description what each key means read below.
2545
2546 @item reset
2547 Set number of frame after which stats are going to be recalculated.
2548 Default is disabled.
2549
2550 @item measure_perchannel
2551 Select the entries which need to be measured per channel. The metadata keys can
2552 be used as flags, default is @option{all} which measures everything.
2553 @option{none} disables all per channel measurement.
2554
2555 @item measure_overall
2556 Select the entries which need to be measured overall. The metadata keys can
2557 be used as flags, default is @option{all} which measures everything.
2558 @option{none} disables all overall measurement.
2559
2560 @end table
2561
2562 A description of each shown parameter follows:
2563
2564 @table @option
2565 @item DC offset
2566 Mean amplitude displacement from zero.
2567
2568 @item Min level
2569 Minimal sample level.
2570
2571 @item Max level
2572 Maximal sample level.
2573
2574 @item Min difference
2575 Minimal difference between two consecutive samples.
2576
2577 @item Max difference
2578 Maximal difference between two consecutive samples.
2579
2580 @item Mean difference
2581 Mean difference between two consecutive samples.
2582 The average of each difference between two consecutive samples.
2583
2584 @item RMS difference
2585 Root Mean Square difference between two consecutive samples.
2586
2587 @item Peak level dB
2588 @item RMS level dB
2589 Standard peak and RMS level measured in dBFS.
2590
2591 @item RMS peak dB
2592 @item RMS trough dB
2593 Peak and trough values for RMS level measured over a short window.
2594
2595 @item Crest factor
2596 Standard ratio of peak to RMS level (note: not in dB).
2597
2598 @item Flat factor
2599 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2600 (i.e. either @var{Min level} or @var{Max level}).
2601
2602 @item Peak count
2603 Number of occasions (not the number of samples) that the signal attained either
2604 @var{Min level} or @var{Max level}.
2605
2606 @item Noise floor dB
2607 Minimum local peak measured in dBFS over a short window.
2608
2609 @item Noise floor count
2610 Number of occasions (not the number of samples) that the signal attained
2611 @var{Noise floor}.
2612
2613 @item Bit depth
2614 Overall bit depth of audio. Number of bits used for each sample.
2615
2616 @item Dynamic range
2617 Measured dynamic range of audio in dB.
2618
2619 @item Zero crossings
2620 Number of points where the waveform crosses the zero level axis.
2621
2622 @item Zero crossings rate
2623 Rate of Zero crossings and number of audio samples.
2624 @end table
2625
2626 @section asubboost
2627 Boost subwoofer frequencies.
2628
2629 The filter accepts the following options:
2630
2631 @table @option
2632 @item dry
2633 Set dry gain, how much of original signal is kept. Allowed range is from 0 to 1.
2634 Default value is 0.7.
2635
2636 @item wet
2637 Set wet gain, how much of filtered signal is kept. Allowed range is from 0 to 1.
2638 Default value is 0.7.
2639
2640 @item decay
2641 Set delay line decay gain value. Allowed range is from 0 to 1.
2642 Default value is 0.7.
2643
2644 @item feedback
2645 Set delay line feedback gain value. Allowed range is from 0 to 1.
2646 Default value is 0.9.
2647
2648 @item cutoff
2649 Set cutoff frequency in Hertz. Allowed range is 50 to 900.
2650 Default value is 100.
2651
2652 @item slope
2653 Set slope amount for cutoff frequency. Allowed range is 0.0001 to 1.
2654 Default value is 0.5.
2655
2656 @item delay
2657 Set delay. Allowed range is from 1 to 100.
2658 Default value is 20.
2659 @end table
2660
2661 @subsection Commands
2662
2663 This filter supports the all above options as @ref{commands}.
2664
2665 @section asubcut
2666 Cut subwoofer frequencies.
2667
2668 This filter allows to set custom, steeper
2669 roll off than highpass filter, and thus is able to more attenuate
2670 frequency content in stop-band.
2671
2672 The filter accepts the following options:
2673
2674 @table @option
2675 @item cutoff
2676 Set cutoff frequency in Hertz. Allowed range is 2 to 200.
2677 Default value is 20.
2678
2679 @item order
2680 Set filter order. Available values are from 3 to 20.
2681 Default value is 10.
2682
2683 @item level
2684 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
2685 @end table
2686
2687 @subsection Commands
2688
2689 This filter supports the all above options as @ref{commands}.
2690
2691 @section asupercut
2692 Cut super frequencies.
2693
2694 The filter accepts the following options:
2695
2696 @table @option
2697 @item cutoff
2698 Set cutoff frequency in Hertz. Allowed range is 20000 to 192000.
2699 Default value is 20000.
2700
2701 @item order
2702 Set filter order. Available values are from 3 to 20.
2703 Default value is 10.
2704
2705 @item level
2706 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
2707 @end table
2708
2709 @subsection Commands
2710
2711 This filter supports the all above options as @ref{commands}.
2712
2713 @section atempo
2714
2715 Adjust audio tempo.
2716
2717 The filter accepts exactly one parameter, the audio tempo. If not
2718 specified then the filter will assume nominal 1.0 tempo. Tempo must
2719 be in the [0.5, 100.0] range.
2720
2721 Note that tempo greater than 2 will skip some samples rather than
2722 blend them in.  If for any reason this is a concern it is always
2723 possible to daisy-chain several instances of atempo to achieve the
2724 desired product tempo.
2725
2726 @subsection Examples
2727
2728 @itemize
2729 @item
2730 Slow down audio to 80% tempo:
2731 @example
2732 atempo=0.8
2733 @end example
2734
2735 @item
2736 To speed up audio to 300% tempo:
2737 @example
2738 atempo=3
2739 @end example
2740
2741 @item
2742 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2743 @example
2744 atempo=sqrt(3),atempo=sqrt(3)
2745 @end example
2746 @end itemize
2747
2748 @subsection Commands
2749
2750 This filter supports the following commands:
2751 @table @option
2752 @item tempo
2753 Change filter tempo scale factor.
2754 Syntax for the command is : "@var{tempo}"
2755 @end table
2756
2757 @section atrim
2758
2759 Trim the input so that the output contains one continuous subpart of the input.
2760
2761 It accepts the following parameters:
2762 @table @option
2763 @item start
2764 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2765 sample with the timestamp @var{start} will be the first sample in the output.
2766
2767 @item end
2768 Specify time of the first audio sample that will be dropped, i.e. the
2769 audio sample immediately preceding the one with the timestamp @var{end} will be
2770 the last sample in the output.
2771
2772 @item start_pts
2773 Same as @var{start}, except this option sets the start timestamp in samples
2774 instead of seconds.
2775
2776 @item end_pts
2777 Same as @var{end}, except this option sets the end timestamp in samples instead
2778 of seconds.
2779
2780 @item duration
2781 The maximum duration of the output in seconds.
2782
2783 @item start_sample
2784 The number of the first sample that should be output.
2785
2786 @item end_sample
2787 The number of the first sample that should be dropped.
2788 @end table
2789
2790 @option{start}, @option{end}, and @option{duration} are expressed as time
2791 duration specifications; see
2792 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2793
2794 Note that the first two sets of the start/end options and the @option{duration}
2795 option look at the frame timestamp, while the _sample options simply count the
2796 samples that pass through the filter. So start/end_pts and start/end_sample will
2797 give different results when the timestamps are wrong, inexact or do not start at
2798 zero. Also note that this filter does not modify the timestamps. If you wish
2799 to have the output timestamps start at zero, insert the asetpts filter after the
2800 atrim filter.
2801
2802 If multiple start or end options are set, this filter tries to be greedy and
2803 keep all samples that match at least one of the specified constraints. To keep
2804 only the part that matches all the constraints at once, chain multiple atrim
2805 filters.
2806
2807 The defaults are such that all the input is kept. So it is possible to set e.g.
2808 just the end values to keep everything before the specified time.
2809
2810 Examples:
2811 @itemize
2812 @item
2813 Drop everything except the second minute of input:
2814 @example
2815 ffmpeg -i INPUT -af atrim=60:120
2816 @end example
2817
2818 @item
2819 Keep only the first 1000 samples:
2820 @example
2821 ffmpeg -i INPUT -af atrim=end_sample=1000
2822 @end example
2823
2824 @end itemize
2825
2826 @section axcorrelate
2827 Calculate normalized cross-correlation between two input audio streams.
2828
2829 Resulted samples are always between -1 and 1 inclusive.
2830 If result is 1 it means two input samples are highly correlated in that selected segment.
2831 Result 0 means they are not correlated at all.
2832 If result is -1 it means two input samples are out of phase, which means they cancel each
2833 other.
2834
2835 The filter accepts the following options:
2836
2837 @table @option
2838 @item size
2839 Set size of segment over which cross-correlation is calculated.
2840 Default is 256. Allowed range is from 2 to 131072.
2841
2842 @item algo
2843 Set algorithm for cross-correlation. Can be @code{slow} or @code{fast}.
2844 Default is @code{slow}. Fast algorithm assumes mean values over any given segment
2845 are always zero and thus need much less calculations to make.
2846 This is generally not true, but is valid for typical audio streams.
2847 @end table
2848
2849 @subsection Examples
2850
2851 @itemize
2852 @item
2853 Calculate correlation between channels in stereo audio stream:
2854 @example
2855 ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
2856 @end example
2857 @end itemize
2858
2859 @section bandpass
2860
2861 Apply a two-pole Butterworth band-pass filter with central
2862 frequency @var{frequency}, and (3dB-point) band-width width.
2863 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2864 instead of the default: constant 0dB peak gain.
2865 The filter roll off at 6dB per octave (20dB per decade).
2866
2867 The filter accepts the following options:
2868
2869 @table @option
2870 @item frequency, f
2871 Set the filter's central frequency. Default is @code{3000}.
2872
2873 @item csg
2874 Constant skirt gain if set to 1. Defaults to 0.
2875
2876 @item width_type, t
2877 Set method to specify band-width of filter.
2878 @table @option
2879 @item h
2880 Hz
2881 @item q
2882 Q-Factor
2883 @item o
2884 octave
2885 @item s
2886 slope
2887 @item k
2888 kHz
2889 @end table
2890
2891 @item width, w
2892 Specify the band-width of a filter in width_type units.
2893
2894 @item mix, m
2895 How much to use filtered signal in output. Default is 1.
2896 Range is between 0 and 1.
2897
2898 @item channels, c
2899 Specify which channels to filter, by default all available are filtered.
2900
2901 @item normalize, n
2902 Normalize biquad coefficients, by default is disabled.
2903 Enabling it will normalize magnitude response at DC to 0dB.
2904
2905 @item transform, a
2906 Set transform type of IIR filter.
2907 @table @option
2908 @item di
2909 @item dii
2910 @item tdii
2911 @item latt
2912 @end table
2913 @end table
2914
2915 @subsection Commands
2916
2917 This filter supports the following commands:
2918 @table @option
2919 @item frequency, f
2920 Change bandpass frequency.
2921 Syntax for the command is : "@var{frequency}"
2922
2923 @item width_type, t
2924 Change bandpass width_type.
2925 Syntax for the command is : "@var{width_type}"
2926
2927 @item width, w
2928 Change bandpass width.
2929 Syntax for the command is : "@var{width}"
2930
2931 @item mix, m
2932 Change bandpass mix.
2933 Syntax for the command is : "@var{mix}"
2934 @end table
2935
2936 @section bandreject
2937
2938 Apply a two-pole Butterworth band-reject filter with central
2939 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2940 The filter roll off at 6dB per octave (20dB per decade).
2941
2942 The filter accepts the following options:
2943
2944 @table @option
2945 @item frequency, f
2946 Set the filter's central frequency. Default is @code{3000}.
2947
2948 @item width_type, t
2949 Set method to specify band-width of filter.
2950 @table @option
2951 @item h
2952 Hz
2953 @item q
2954 Q-Factor
2955 @item o
2956 octave
2957 @item s
2958 slope
2959 @item k
2960 kHz
2961 @end table
2962
2963 @item width, w
2964 Specify the band-width of a filter in width_type units.
2965
2966 @item mix, m
2967 How much to use filtered signal in output. Default is 1.
2968 Range is between 0 and 1.
2969
2970 @item channels, c
2971 Specify which channels to filter, by default all available are filtered.
2972
2973 @item normalize, n
2974 Normalize biquad coefficients, by default is disabled.
2975 Enabling it will normalize magnitude response at DC to 0dB.
2976
2977 @item transform, a
2978 Set transform type of IIR filter.
2979 @table @option
2980 @item di
2981 @item dii
2982 @item tdii
2983 @item latt
2984 @end table
2985 @end table
2986
2987 @subsection Commands
2988
2989 This filter supports the following commands:
2990 @table @option
2991 @item frequency, f
2992 Change bandreject frequency.
2993 Syntax for the command is : "@var{frequency}"
2994
2995 @item width_type, t
2996 Change bandreject width_type.
2997 Syntax for the command is : "@var{width_type}"
2998
2999 @item width, w
3000 Change bandreject width.
3001 Syntax for the command is : "@var{width}"
3002
3003 @item mix, m
3004 Change bandreject mix.
3005 Syntax for the command is : "@var{mix}"
3006 @end table
3007
3008 @section bass, lowshelf
3009
3010 Boost or cut the bass (lower) frequencies of the audio using a two-pole
3011 shelving filter with a response similar to that of a standard
3012 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
3013
3014 The filter accepts the following options:
3015
3016 @table @option
3017 @item gain, g
3018 Give the gain at 0 Hz. Its useful range is about -20
3019 (for a large cut) to +20 (for a large boost).
3020 Beware of clipping when using a positive gain.
3021
3022 @item frequency, f
3023 Set the filter's central frequency and so can be used
3024 to extend or reduce the frequency range to be boosted or cut.
3025 The default value is @code{100} Hz.
3026
3027 @item width_type, t
3028 Set method to specify band-width of filter.
3029 @table @option
3030 @item h
3031 Hz
3032 @item q
3033 Q-Factor
3034 @item o
3035 octave
3036 @item s
3037 slope
3038 @item k
3039 kHz
3040 @end table
3041
3042 @item width, w
3043 Determine how steep is the filter's shelf transition.
3044
3045 @item mix, m
3046 How much to use filtered signal in output. Default is 1.
3047 Range is between 0 and 1.
3048
3049 @item channels, c
3050 Specify which channels to filter, by default all available are filtered.
3051
3052 @item normalize, n
3053 Normalize biquad coefficients, by default is disabled.
3054 Enabling it will normalize magnitude response at DC to 0dB.
3055
3056 @item transform, a
3057 Set transform type of IIR filter.
3058 @table @option
3059 @item di
3060 @item dii
3061 @item tdii
3062 @item latt
3063 @end table
3064 @end table
3065
3066 @subsection Commands
3067
3068 This filter supports the following commands:
3069 @table @option
3070 @item frequency, f
3071 Change bass frequency.
3072 Syntax for the command is : "@var{frequency}"
3073
3074 @item width_type, t
3075 Change bass width_type.
3076 Syntax for the command is : "@var{width_type}"
3077
3078 @item width, w
3079 Change bass width.
3080 Syntax for the command is : "@var{width}"
3081
3082 @item gain, g
3083 Change bass gain.
3084 Syntax for the command is : "@var{gain}"
3085
3086 @item mix, m
3087 Change bass mix.
3088 Syntax for the command is : "@var{mix}"
3089 @end table
3090
3091 @section biquad
3092
3093 Apply a biquad IIR filter with the given coefficients.
3094 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
3095 are the numerator and denominator coefficients respectively.
3096 and @var{channels}, @var{c} specify which channels to filter, by default all
3097 available are filtered.
3098
3099 @subsection Commands
3100
3101 This filter supports the following commands:
3102 @table @option
3103 @item a0
3104 @item a1
3105 @item a2
3106 @item b0
3107 @item b1
3108 @item b2
3109 Change biquad parameter.
3110 Syntax for the command is : "@var{value}"
3111
3112 @item mix, m
3113 How much to use filtered signal in output. Default is 1.
3114 Range is between 0 and 1.
3115
3116 @item channels, c
3117 Specify which channels to filter, by default all available are filtered.
3118
3119 @item normalize, n
3120 Normalize biquad coefficients, by default is disabled.
3121 Enabling it will normalize magnitude response at DC to 0dB.
3122
3123 @item transform, a
3124 Set transform type of IIR filter.
3125 @table @option
3126 @item di
3127 @item dii
3128 @item tdii
3129 @item latt
3130 @end table
3131 @end table
3132
3133 @section bs2b
3134 Bauer stereo to binaural transformation, which improves headphone listening of
3135 stereo audio records.
3136
3137 To enable compilation of this filter you need to configure FFmpeg with
3138 @code{--enable-libbs2b}.
3139
3140 It accepts the following parameters:
3141 @table @option
3142
3143 @item profile
3144 Pre-defined crossfeed level.
3145 @table @option
3146
3147 @item default
3148 Default level (fcut=700, feed=50).
3149
3150 @item cmoy
3151 Chu Moy circuit (fcut=700, feed=60).
3152
3153 @item jmeier
3154 Jan Meier circuit (fcut=650, feed=95).
3155
3156 @end table
3157
3158 @item fcut
3159 Cut frequency (in Hz).
3160
3161 @item feed
3162 Feed level (in Hz).
3163
3164 @end table
3165
3166 @section channelmap
3167
3168 Remap input channels to new locations.
3169
3170 It accepts the following parameters:
3171 @table @option
3172 @item map
3173 Map channels from input to output. The argument is a '|'-separated list of
3174 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
3175 @var{in_channel} form. @var{in_channel} can be either the name of the input
3176 channel (e.g. FL for front left) or its index in the input channel layout.
3177 @var{out_channel} is the name of the output channel or its index in the output
3178 channel layout. If @var{out_channel} is not given then it is implicitly an
3179 index, starting with zero and increasing by one for each mapping.
3180
3181 @item channel_layout
3182 The channel layout of the output stream.
3183 @end table
3184
3185 If no mapping is present, the filter will implicitly map input channels to
3186 output channels, preserving indices.
3187
3188 @subsection Examples
3189
3190 @itemize
3191 @item
3192 For example, assuming a 5.1+downmix input MOV file,
3193 @example
3194 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
3195 @end example
3196 will create an output WAV file tagged as stereo from the downmix channels of
3197 the input.
3198
3199 @item
3200 To fix a 5.1 WAV improperly encoded in AAC's native channel order
3201 @example
3202 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
3203 @end example
3204 @end itemize
3205
3206 @section channelsplit
3207
3208 Split each channel from an input audio stream into a separate output stream.
3209
3210 It accepts the following parameters:
3211 @table @option
3212 @item channel_layout
3213 The channel layout of the input stream. The default is "stereo".
3214 @item channels
3215 A channel layout describing the channels to be extracted as separate output streams
3216 or "all" to extract each input channel as a separate stream. The default is "all".
3217
3218 Choosing channels not present in channel layout in the input will result in an error.
3219 @end table
3220
3221 @subsection Examples
3222
3223 @itemize
3224 @item
3225 For example, assuming a stereo input MP3 file,
3226 @example
3227 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
3228 @end example
3229 will create an output Matroska file with two audio streams, one containing only
3230 the left channel and the other the right channel.
3231
3232 @item
3233 Split a 5.1 WAV file into per-channel files:
3234 @example
3235 ffmpeg -i in.wav -filter_complex
3236 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
3237 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
3238 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
3239 side_right.wav
3240 @end example
3241
3242 @item
3243 Extract only LFE from a 5.1 WAV file:
3244 @example
3245 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
3246 -map '[LFE]' lfe.wav
3247 @end example
3248 @end itemize
3249
3250 @section chorus
3251 Add a chorus effect to the audio.
3252
3253 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
3254
3255 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
3256 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
3257 The modulation depth defines the range the modulated delay is played before or after
3258 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
3259 sound tuned around the original one, like in a chorus where some vocals are slightly
3260 off key.
3261
3262 It accepts the following parameters:
3263 @table @option
3264 @item in_gain
3265 Set input gain. Default is 0.4.
3266
3267 @item out_gain
3268 Set output gain. Default is 0.4.
3269
3270 @item delays
3271 Set delays. A typical delay is around 40ms to 60ms.
3272
3273 @item decays
3274 Set decays.
3275
3276 @item speeds
3277 Set speeds.
3278
3279 @item depths
3280 Set depths.
3281 @end table
3282
3283 @subsection Examples
3284
3285 @itemize
3286 @item
3287 A single delay:
3288 @example
3289 chorus=0.7:0.9:55:0.4:0.25:2
3290 @end example
3291
3292 @item
3293 Two delays:
3294 @example
3295 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
3296 @end example
3297
3298 @item
3299 Fuller sounding chorus with three delays:
3300 @example
3301 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
3302 @end example
3303 @end itemize
3304
3305 @section compand
3306 Compress or expand the audio's dynamic range.
3307
3308 It accepts the following parameters:
3309
3310 @table @option
3311
3312 @item attacks
3313 @item decays
3314 A list of times in seconds for each channel over which the instantaneous level
3315 of the input signal is averaged to determine its volume. @var{attacks} refers to
3316 increase of volume and @var{decays} refers to decrease of volume. For most
3317 situations, the attack time (response to the audio getting louder) should be
3318 shorter than the decay time, because the human ear is more sensitive to sudden
3319 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
3320 a typical value for decay is 0.8 seconds.
3321 If specified number of attacks & decays is lower than number of channels, the last
3322 set attack/decay will be used for all remaining channels.
3323
3324 @item points
3325 A list of points for the transfer function, specified in dB relative to the
3326 maximum possible signal amplitude. Each key points list must be defined using
3327 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
3328 @code{x0/y0 x1/y1 x2/y2 ....}
3329
3330 The input values must be in strictly increasing order but the transfer function
3331 does not have to be monotonically rising. The point @code{0/0} is assumed but
3332 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
3333 function are @code{-70/-70|-60/-20|1/0}.
3334
3335 @item soft-knee
3336 Set the curve radius in dB for all joints. It defaults to 0.01.
3337
3338 @item gain
3339 Set the additional gain in dB to be applied at all points on the transfer
3340 function. This allows for easy adjustment of the overall gain.
3341 It defaults to 0.
3342
3343 @item volume
3344 Set an initial volume, in dB, to be assumed for each channel when filtering
3345 starts. This permits the user to supply a nominal level initially, so that, for
3346 example, a very large gain is not applied to initial signal levels before the
3347 companding has begun to operate. A typical value for audio which is initially
3348 quiet is -90 dB. It defaults to 0.
3349
3350 @item delay
3351 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
3352 delayed before being fed to the volume adjuster. Specifying a delay
3353 approximately equal to the attack/decay times allows the filter to effectively
3354 operate in predictive rather than reactive mode. It defaults to 0.
3355
3356 @end table
3357
3358 @subsection Examples
3359
3360 @itemize
3361 @item
3362 Make music with both quiet and loud passages suitable for listening to in a
3363 noisy environment:
3364 @example
3365 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
3366 @end example
3367
3368 Another example for audio with whisper and explosion parts:
3369 @example
3370 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
3371 @end example
3372
3373 @item
3374 A noise gate for when the noise is at a lower level than the signal:
3375 @example
3376 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
3377 @end example
3378
3379 @item
3380 Here is another noise gate, this time for when the noise is at a higher level
3381 than the signal (making it, in some ways, similar to squelch):
3382 @example
3383 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3384 @end example
3385
3386 @item
3387 2:1 compression starting at -6dB:
3388 @example
3389 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3390 @end example
3391
3392 @item
3393 2:1 compression starting at -9dB:
3394 @example
3395 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3396 @end example
3397
3398 @item
3399 2:1 compression starting at -12dB:
3400 @example
3401 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3402 @end example
3403
3404 @item
3405 2:1 compression starting at -18dB:
3406 @example
3407 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3408 @end example
3409
3410 @item
3411 3:1 compression starting at -15dB:
3412 @example
3413 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3414 @end example
3415
3416 @item
3417 Compressor/Gate:
3418 @example
3419 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3420 @end example
3421
3422 @item
3423 Expander:
3424 @example
3425 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
3426 @end example
3427
3428 @item
3429 Hard limiter at -6dB:
3430 @example
3431 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3432 @end example
3433
3434 @item
3435 Hard limiter at -12dB:
3436 @example
3437 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3438 @end example
3439
3440 @item
3441 Hard noise gate at -35 dB:
3442 @example
3443 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3444 @end example
3445
3446 @item
3447 Soft limiter:
3448 @example
3449 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3450 @end example
3451 @end itemize
3452
3453 @section compensationdelay
3454
3455 Compensation Delay Line is a metric based delay to compensate differing
3456 positions of microphones or speakers.
3457
3458 For example, you have recorded guitar with two microphones placed in
3459 different locations. Because the front of sound wave has fixed speed in
3460 normal conditions, the phasing of microphones can vary and depends on
3461 their location and interposition. The best sound mix can be achieved when
3462 these microphones are in phase (synchronized). Note that a distance of
3463 ~30 cm between microphones makes one microphone capture the signal in
3464 antiphase to the other microphone. That makes the final mix sound moody.
3465 This filter helps to solve phasing problems by adding different delays
3466 to each microphone track and make them synchronized.
3467
3468 The best result can be reached when you take one track as base and
3469 synchronize other tracks one by one with it.
3470 Remember that synchronization/delay tolerance depends on sample rate, too.
3471 Higher sample rates will give more tolerance.
3472
3473 The filter accepts the following parameters:
3474
3475 @table @option
3476 @item mm
3477 Set millimeters distance. This is compensation distance for fine tuning.
3478 Default is 0.
3479
3480 @item cm
3481 Set cm distance. This is compensation distance for tightening distance setup.
3482 Default is 0.
3483
3484 @item m
3485 Set meters distance. This is compensation distance for hard distance setup.
3486 Default is 0.
3487
3488 @item dry
3489 Set dry amount. Amount of unprocessed (dry) signal.
3490 Default is 0.
3491
3492 @item wet
3493 Set wet amount. Amount of processed (wet) signal.
3494 Default is 1.
3495
3496 @item temp
3497 Set temperature in degrees Celsius. This is the temperature of the environment.
3498 Default is 20.
3499 @end table
3500
3501 @section crossfeed
3502 Apply headphone crossfeed filter.
3503
3504 Crossfeed is the process of blending the left and right channels of stereo
3505 audio recording.
3506 It is mainly used to reduce extreme stereo separation of low frequencies.
3507
3508 The intent is to produce more speaker like sound to the listener.
3509
3510 The filter accepts the following options:
3511
3512 @table @option
3513 @item strength
3514 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3515 This sets gain of low shelf filter for side part of stereo image.
3516 Default is -6dB. Max allowed is -30db when strength is set to 1.
3517
3518 @item range
3519 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3520 This sets cut off frequency of low shelf filter. Default is cut off near
3521 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3522
3523 @item slope
3524 Set curve slope of low shelf filter. Default is 0.5.
3525 Allowed range is from 0.01 to 1.
3526
3527 @item level_in
3528 Set input gain. Default is 0.9.
3529
3530 @item level_out
3531 Set output gain. Default is 1.
3532 @end table
3533
3534 @subsection Commands
3535
3536 This filter supports the all above options as @ref{commands}.
3537
3538 @section crystalizer
3539 Simple algorithm to expand audio dynamic range.
3540
3541 The filter accepts the following options:
3542
3543 @table @option
3544 @item i
3545 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3546 (unchanged sound) to 10.0 (maximum effect).
3547
3548 @item c
3549 Enable clipping. By default is enabled.
3550 @end table
3551
3552 @subsection Commands
3553
3554 This filter supports the all above options as @ref{commands}.
3555
3556 @section dcshift
3557 Apply a DC shift to the audio.
3558
3559 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3560 in the recording chain) from the audio. The effect of a DC offset is reduced
3561 headroom and hence volume. The @ref{astats} filter can be used to determine if
3562 a signal has a DC offset.
3563
3564 @table @option
3565 @item shift
3566 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3567 the audio.
3568
3569 @item limitergain
3570 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3571 used to prevent clipping.
3572 @end table
3573
3574 @section deesser
3575
3576 Apply de-essing to the audio samples.
3577
3578 @table @option
3579 @item i
3580 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3581 Default is 0.
3582
3583 @item m
3584 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3585 Default is 0.5.
3586
3587 @item f
3588 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3589 Default is 0.5.
3590
3591 @item s
3592 Set the output mode.
3593
3594 It accepts the following values:
3595 @table @option
3596 @item i
3597 Pass input unchanged.
3598
3599 @item o
3600 Pass ess filtered out.
3601
3602 @item e
3603 Pass only ess.
3604
3605 Default value is @var{o}.
3606 @end table
3607
3608 @end table
3609
3610 @section drmeter
3611 Measure audio dynamic range.
3612
3613 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3614 is found in transition material. And anything less that 8 have very poor dynamics
3615 and is very compressed.
3616
3617 The filter accepts the following options:
3618
3619 @table @option
3620 @item length
3621 Set window length in seconds used to split audio into segments of equal length.
3622 Default is 3 seconds.
3623 @end table
3624
3625 @section dynaudnorm
3626 Dynamic Audio Normalizer.
3627
3628 This filter applies a certain amount of gain to the input audio in order
3629 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3630 contrast to more "simple" normalization algorithms, the Dynamic Audio
3631 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3632 This allows for applying extra gain to the "quiet" sections of the audio
3633 while avoiding distortions or clipping the "loud" sections. In other words:
3634 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3635 sections, in the sense that the volume of each section is brought to the
3636 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3637 this goal *without* applying "dynamic range compressing". It will retain 100%
3638 of the dynamic range *within* each section of the audio file.
3639
3640 @table @option
3641 @item framelen, f
3642 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3643 Default is 500 milliseconds.
3644 The Dynamic Audio Normalizer processes the input audio in small chunks,
3645 referred to as frames. This is required, because a peak magnitude has no
3646 meaning for just a single sample value. Instead, we need to determine the
3647 peak magnitude for a contiguous sequence of sample values. While a "standard"
3648 normalizer would simply use the peak magnitude of the complete file, the
3649 Dynamic Audio Normalizer determines the peak magnitude individually for each
3650 frame. The length of a frame is specified in milliseconds. By default, the
3651 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3652 been found to give good results with most files.
3653 Note that the exact frame length, in number of samples, will be determined
3654 automatically, based on the sampling rate of the individual input audio file.
3655
3656 @item gausssize, g
3657 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3658 number. Default is 31.
3659 Probably the most important parameter of the Dynamic Audio Normalizer is the
3660 @code{window size} of the Gaussian smoothing filter. The filter's window size
3661 is specified in frames, centered around the current frame. For the sake of
3662 simplicity, this must be an odd number. Consequently, the default value of 31
3663 takes into account the current frame, as well as the 15 preceding frames and
3664 the 15 subsequent frames. Using a larger window results in a stronger
3665 smoothing effect and thus in less gain variation, i.e. slower gain
3666 adaptation. Conversely, using a smaller window results in a weaker smoothing
3667 effect and thus in more gain variation, i.e. faster gain adaptation.
3668 In other words, the more you increase this value, the more the Dynamic Audio
3669 Normalizer will behave like a "traditional" normalization filter. On the
3670 contrary, the more you decrease this value, the more the Dynamic Audio
3671 Normalizer will behave like a dynamic range compressor.
3672
3673 @item peak, p
3674 Set the target peak value. This specifies the highest permissible magnitude
3675 level for the normalized audio input. This filter will try to approach the
3676 target peak magnitude as closely as possible, but at the same time it also
3677 makes sure that the normalized signal will never exceed the peak magnitude.
3678 A frame's maximum local gain factor is imposed directly by the target peak
3679 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3680 It is not recommended to go above this value.
3681
3682 @item maxgain, m
3683 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3684 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3685 factor for each input frame, i.e. the maximum gain factor that does not
3686 result in clipping or distortion. The maximum gain factor is determined by
3687 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3688 additionally bounds the frame's maximum gain factor by a predetermined
3689 (global) maximum gain factor. This is done in order to avoid excessive gain
3690 factors in "silent" or almost silent frames. By default, the maximum gain
3691 factor is 10.0, For most inputs the default value should be sufficient and
3692 it usually is not recommended to increase this value. Though, for input
3693 with an extremely low overall volume level, it may be necessary to allow even
3694 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3695 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3696 Instead, a "sigmoid" threshold function will be applied. This way, the
3697 gain factors will smoothly approach the threshold value, but never exceed that
3698 value.
3699
3700 @item targetrms, r
3701 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3702 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3703 This means that the maximum local gain factor for each frame is defined
3704 (only) by the frame's highest magnitude sample. This way, the samples can
3705 be amplified as much as possible without exceeding the maximum signal
3706 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3707 Normalizer can also take into account the frame's root mean square,
3708 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3709 determine the power of a time-varying signal. It is therefore considered
3710 that the RMS is a better approximation of the "perceived loudness" than
3711 just looking at the signal's peak magnitude. Consequently, by adjusting all
3712 frames to a constant RMS value, a uniform "perceived loudness" can be
3713 established. If a target RMS value has been specified, a frame's local gain
3714 factor is defined as the factor that would result in exactly that RMS value.
3715 Note, however, that the maximum local gain factor is still restricted by the
3716 frame's highest magnitude sample, in order to prevent clipping.
3717
3718 @item coupling, n
3719 Enable channels coupling. By default is enabled.
3720 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3721 amount. This means the same gain factor will be applied to all channels, i.e.
3722 the maximum possible gain factor is determined by the "loudest" channel.
3723 However, in some recordings, it may happen that the volume of the different
3724 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3725 In this case, this option can be used to disable the channel coupling. This way,
3726 the gain factor will be determined independently for each channel, depending
3727 only on the individual channel's highest magnitude sample. This allows for
3728 harmonizing the volume of the different channels.
3729
3730 @item correctdc, c
3731 Enable DC bias correction. By default is disabled.
3732 An audio signal (in the time domain) is a sequence of sample values.
3733 In the Dynamic Audio Normalizer these sample values are represented in the
3734 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3735 audio signal, or "waveform", should be centered around the zero point.
3736 That means if we calculate the mean value of all samples in a file, or in a
3737 single frame, then the result should be 0.0 or at least very close to that
3738 value. If, however, there is a significant deviation of the mean value from
3739 0.0, in either positive or negative direction, this is referred to as a
3740 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3741 Audio Normalizer provides optional DC bias correction.
3742 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3743 the mean value, or "DC correction" offset, of each input frame and subtract
3744 that value from all of the frame's sample values which ensures those samples
3745 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3746 boundaries, the DC correction offset values will be interpolated smoothly
3747 between neighbouring frames.
3748
3749 @item altboundary, b
3750 Enable alternative boundary mode. By default is disabled.
3751 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3752 around each frame. This includes the preceding frames as well as the
3753 subsequent frames. However, for the "boundary" frames, located at the very
3754 beginning and at the very end of the audio file, not all neighbouring
3755 frames are available. In particular, for the first few frames in the audio
3756 file, the preceding frames are not known. And, similarly, for the last few
3757 frames in the audio file, the subsequent frames are not known. Thus, the
3758 question arises which gain factors should be assumed for the missing frames
3759 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3760 to deal with this situation. The default boundary mode assumes a gain factor
3761 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3762 "fade out" at the beginning and at the end of the input, respectively.
3763
3764 @item compress, s
3765 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3766 By default, the Dynamic Audio Normalizer does not apply "traditional"
3767 compression. This means that signal peaks will not be pruned and thus the
3768 full dynamic range will be retained within each local neighbourhood. However,
3769 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3770 normalization algorithm with a more "traditional" compression.
3771 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3772 (thresholding) function. If (and only if) the compression feature is enabled,
3773 all input frames will be processed by a soft knee thresholding function prior
3774 to the actual normalization process. Put simply, the thresholding function is
3775 going to prune all samples whose magnitude exceeds a certain threshold value.
3776 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3777 value. Instead, the threshold value will be adjusted for each individual
3778 frame.
3779 In general, smaller parameters result in stronger compression, and vice versa.
3780 Values below 3.0 are not recommended, because audible distortion may appear.
3781
3782 @item threshold, t
3783 Set the target threshold value. This specifies the lowest permissible
3784 magnitude level for the audio input which will be normalized.
3785 If input frame volume is above this value frame will be normalized.
3786 Otherwise frame may not be normalized at all. The default value is set
3787 to 0, which means all input frames will be normalized.
3788 This option is mostly useful if digital noise is not wanted to be amplified.
3789 @end table
3790
3791 @subsection Commands
3792
3793 This filter supports the all above options as @ref{commands}.
3794
3795 @section earwax
3796
3797 Make audio easier to listen to on headphones.
3798
3799 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3800 so that when listened to on headphones the stereo image is moved from
3801 inside your head (standard for headphones) to outside and in front of
3802 the listener (standard for speakers).
3803
3804 Ported from SoX.
3805
3806 @section equalizer
3807
3808 Apply a two-pole peaking equalisation (EQ) filter. With this
3809 filter, the signal-level at and around a selected frequency can
3810 be increased or decreased, whilst (unlike bandpass and bandreject
3811 filters) that at all other frequencies is unchanged.
3812
3813 In order to produce complex equalisation curves, this filter can
3814 be given several times, each with a different central frequency.
3815
3816 The filter accepts the following options:
3817
3818 @table @option
3819 @item frequency, f
3820 Set the filter's central frequency in Hz.
3821
3822 @item width_type, t
3823 Set method to specify band-width of filter.
3824 @table @option
3825 @item h
3826 Hz
3827 @item q
3828 Q-Factor
3829 @item o
3830 octave
3831 @item s
3832 slope
3833 @item k
3834 kHz
3835 @end table
3836
3837 @item width, w
3838 Specify the band-width of a filter in width_type units.
3839
3840 @item gain, g
3841 Set the required gain or attenuation in dB.
3842 Beware of clipping when using a positive gain.
3843
3844 @item mix, m
3845 How much to use filtered signal in output. Default is 1.
3846 Range is between 0 and 1.
3847
3848 @item channels, c
3849 Specify which channels to filter, by default all available are filtered.
3850
3851 @item normalize, n
3852 Normalize biquad coefficients, by default is disabled.
3853 Enabling it will normalize magnitude response at DC to 0dB.
3854
3855 @item transform, a
3856 Set transform type of IIR filter.
3857 @table @option
3858 @item di
3859 @item dii
3860 @item tdii
3861 @item latt
3862 @end table
3863 @end table
3864
3865 @subsection Examples
3866 @itemize
3867 @item
3868 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3869 @example
3870 equalizer=f=1000:t=h:width=200:g=-10
3871 @end example
3872
3873 @item
3874 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3875 @example
3876 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3877 @end example
3878 @end itemize
3879
3880 @subsection Commands
3881
3882 This filter supports the following commands:
3883 @table @option
3884 @item frequency, f
3885 Change equalizer frequency.
3886 Syntax for the command is : "@var{frequency}"
3887
3888 @item width_type, t
3889 Change equalizer width_type.
3890 Syntax for the command is : "@var{width_type}"
3891
3892 @item width, w
3893 Change equalizer width.
3894 Syntax for the command is : "@var{width}"
3895
3896 @item gain, g
3897 Change equalizer gain.
3898 Syntax for the command is : "@var{gain}"
3899
3900 @item mix, m
3901 Change equalizer mix.
3902 Syntax for the command is : "@var{mix}"
3903 @end table
3904
3905 @section extrastereo
3906
3907 Linearly increases the difference between left and right channels which
3908 adds some sort of "live" effect to playback.
3909
3910 The filter accepts the following options:
3911
3912 @table @option
3913 @item m
3914 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3915 (average of both channels), with 1.0 sound will be unchanged, with
3916 -1.0 left and right channels will be swapped.
3917
3918 @item c
3919 Enable clipping. By default is enabled.
3920 @end table
3921
3922 @subsection Commands
3923
3924 This filter supports the all above options as @ref{commands}.
3925
3926 @section firequalizer
3927 Apply FIR Equalization using arbitrary frequency response.
3928
3929 The filter accepts the following option:
3930
3931 @table @option
3932 @item gain
3933 Set gain curve equation (in dB). The expression can contain variables:
3934 @table @option
3935 @item f
3936 the evaluated frequency
3937 @item sr
3938 sample rate
3939 @item ch
3940 channel number, set to 0 when multichannels evaluation is disabled
3941 @item chid
3942 channel id, see libavutil/channel_layout.h, set to the first channel id when
3943 multichannels evaluation is disabled
3944 @item chs
3945 number of channels
3946 @item chlayout
3947 channel_layout, see libavutil/channel_layout.h
3948
3949 @end table
3950 and functions:
3951 @table @option
3952 @item gain_interpolate(f)
3953 interpolate gain on frequency f based on gain_entry
3954 @item cubic_interpolate(f)
3955 same as gain_interpolate, but smoother
3956 @end table
3957 This option is also available as command. Default is @code{gain_interpolate(f)}.
3958
3959 @item gain_entry
3960 Set gain entry for gain_interpolate function. The expression can
3961 contain functions:
3962 @table @option
3963 @item entry(f, g)
3964 store gain entry at frequency f with value g
3965 @end table
3966 This option is also available as command.
3967
3968 @item delay
3969 Set filter delay in seconds. Higher value means more accurate.
3970 Default is @code{0.01}.
3971
3972 @item accuracy
3973 Set filter accuracy in Hz. Lower value means more accurate.
3974 Default is @code{5}.
3975
3976 @item wfunc
3977 Set window function. Acceptable values are:
3978 @table @option
3979 @item rectangular
3980 rectangular window, useful when gain curve is already smooth
3981 @item hann
3982 hann window (default)
3983 @item hamming
3984 hamming window
3985 @item blackman
3986 blackman window
3987 @item nuttall3
3988 3-terms continuous 1st derivative nuttall window
3989 @item mnuttall3
3990 minimum 3-terms discontinuous nuttall window
3991 @item nuttall
3992 4-terms continuous 1st derivative nuttall window
3993 @item bnuttall
3994 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3995 @item bharris
3996 blackman-harris window
3997 @item tukey
3998 tukey window
3999 @end table
4000
4001 @item fixed
4002 If enabled, use fixed number of audio samples. This improves speed when
4003 filtering with large delay. Default is disabled.
4004
4005 @item multi
4006 Enable multichannels evaluation on gain. Default is disabled.
4007
4008 @item zero_phase
4009 Enable zero phase mode by subtracting timestamp to compensate delay.
4010 Default is disabled.
4011
4012 @item scale
4013 Set scale used by gain. Acceptable values are:
4014 @table @option
4015 @item linlin
4016 linear frequency, linear gain
4017 @item linlog
4018 linear frequency, logarithmic (in dB) gain (default)
4019 @item loglin
4020 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
4021 @item loglog
4022 logarithmic frequency, logarithmic gain
4023 @end table
4024
4025 @item dumpfile
4026 Set file for dumping, suitable for gnuplot.
4027
4028 @item dumpscale
4029 Set scale for dumpfile. Acceptable values are same with scale option.
4030 Default is linlog.
4031
4032 @item fft2
4033 Enable 2-channel convolution using complex FFT. This improves speed significantly.
4034 Default is disabled.
4035
4036 @item min_phase
4037 Enable minimum phase impulse response. Default is disabled.
4038 @end table
4039
4040 @subsection Examples
4041 @itemize
4042 @item
4043 lowpass at 1000 Hz:
4044 @example
4045 firequalizer=gain='if(lt(f,1000), 0, -INF)'
4046 @end example
4047 @item
4048 lowpass at 1000 Hz with gain_entry:
4049 @example
4050 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
4051 @end example
4052 @item
4053 custom equalization:
4054 @example
4055 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
4056 @end example
4057 @item
4058 higher delay with zero phase to compensate delay:
4059 @example
4060 firequalizer=delay=0.1:fixed=on:zero_phase=on
4061 @end example
4062 @item
4063 lowpass on left channel, highpass on right channel:
4064 @example
4065 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
4066 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
4067 @end example
4068 @end itemize
4069
4070 @section flanger
4071 Apply a flanging effect to the audio.
4072
4073 The filter accepts the following options:
4074
4075 @table @option
4076 @item delay
4077 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
4078
4079 @item depth
4080 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
4081
4082 @item regen
4083 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
4084 Default value is 0.
4085
4086 @item width
4087 Set percentage of delayed signal mixed with original. Range from 0 to 100.
4088 Default value is 71.
4089
4090 @item speed
4091 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
4092
4093 @item shape
4094 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
4095 Default value is @var{sinusoidal}.
4096
4097 @item phase
4098 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
4099 Default value is 25.
4100
4101 @item interp
4102 Set delay-line interpolation, @var{linear} or @var{quadratic}.
4103 Default is @var{linear}.
4104 @end table
4105
4106 @section haas
4107 Apply Haas effect to audio.
4108
4109 Note that this makes most sense to apply on mono signals.
4110 With this filter applied to mono signals it give some directionality and
4111 stretches its stereo image.
4112
4113 The filter accepts the following options:
4114
4115 @table @option
4116 @item level_in
4117 Set input level. By default is @var{1}, or 0dB
4118
4119 @item level_out
4120 Set output level. By default is @var{1}, or 0dB.
4121
4122 @item side_gain
4123 Set gain applied to side part of signal. By default is @var{1}.
4124
4125 @item middle_source
4126 Set kind of middle source. Can be one of the following:
4127
4128 @table @samp
4129 @item left
4130 Pick left channel.
4131
4132 @item right
4133 Pick right channel.
4134
4135 @item mid
4136 Pick middle part signal of stereo image.
4137
4138 @item side
4139 Pick side part signal of stereo image.
4140 @end table
4141
4142 @item middle_phase
4143 Change middle phase. By default is disabled.
4144
4145 @item left_delay
4146 Set left channel delay. By default is @var{2.05} milliseconds.
4147
4148 @item left_balance
4149 Set left channel balance. By default is @var{-1}.
4150
4151 @item left_gain
4152 Set left channel gain. By default is @var{1}.
4153
4154 @item left_phase
4155 Change left phase. By default is disabled.
4156
4157 @item right_delay
4158 Set right channel delay. By defaults is @var{2.12} milliseconds.
4159
4160 @item right_balance
4161 Set right channel balance. By default is @var{1}.
4162
4163 @item right_gain
4164 Set right channel gain. By default is @var{1}.
4165
4166 @item right_phase
4167 Change right phase. By default is enabled.
4168 @end table
4169
4170 @section hdcd
4171
4172 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
4173 embedded HDCD codes is expanded into a 20-bit PCM stream.
4174
4175 The filter supports the Peak Extend and Low-level Gain Adjustment features
4176 of HDCD, and detects the Transient Filter flag.
4177
4178 @example
4179 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
4180 @end example
4181
4182 When using the filter with wav, note the default encoding for wav is 16-bit,
4183 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
4184 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
4185 @example
4186 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
4187 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
4188 @end example
4189
4190 The filter accepts the following options:
4191
4192 @table @option
4193 @item disable_autoconvert
4194 Disable any automatic format conversion or resampling in the filter graph.
4195
4196 @item process_stereo
4197 Process the stereo channels together. If target_gain does not match between
4198 channels, consider it invalid and use the last valid target_gain.
4199
4200 @item cdt_ms
4201 Set the code detect timer period in ms.
4202
4203 @item force_pe
4204 Always extend peaks above -3dBFS even if PE isn't signaled.
4205
4206 @item analyze_mode
4207 Replace audio with a solid tone and adjust the amplitude to signal some
4208 specific aspect of the decoding process. The output file can be loaded in
4209 an audio editor alongside the original to aid analysis.
4210
4211 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
4212
4213 Modes are:
4214 @table @samp
4215 @item 0, off
4216 Disabled
4217 @item 1, lle
4218 Gain adjustment level at each sample
4219 @item 2, pe
4220 Samples where peak extend occurs
4221 @item 3, cdt
4222 Samples where the code detect timer is active
4223 @item 4, tgm
4224 Samples where the target gain does not match between channels
4225 @end table
4226 @end table
4227
4228 @section headphone
4229
4230 Apply head-related transfer functions (HRTFs) to create virtual
4231 loudspeakers around the user for binaural listening via headphones.
4232 The HRIRs are provided via additional streams, for each channel
4233 one stereo input stream is needed.
4234
4235 The filter accepts the following options:
4236
4237 @table @option
4238 @item map
4239 Set mapping of input streams for convolution.
4240 The argument is a '|'-separated list of channel names in order as they
4241 are given as additional stream inputs for filter.
4242 This also specify number of input streams. Number of input streams
4243 must be not less than number of channels in first stream plus one.
4244
4245 @item gain
4246 Set gain applied to audio. Value is in dB. Default is 0.
4247
4248 @item type
4249 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4250 processing audio in time domain which is slow.
4251 @var{freq} is processing audio in frequency domain which is fast.
4252 Default is @var{freq}.
4253
4254 @item lfe
4255 Set custom gain for LFE channels. Value is in dB. Default is 0.
4256
4257 @item size
4258 Set size of frame in number of samples which will be processed at once.
4259 Default value is @var{1024}. Allowed range is from 1024 to 96000.
4260
4261 @item hrir
4262 Set format of hrir stream.
4263 Default value is @var{stereo}. Alternative value is @var{multich}.
4264 If value is set to @var{stereo}, number of additional streams should
4265 be greater or equal to number of input channels in first input stream.
4266 Also each additional stream should have stereo number of channels.
4267 If value is set to @var{multich}, number of additional streams should
4268 be exactly one. Also number of input channels of additional stream
4269 should be equal or greater than twice number of channels of first input
4270 stream.
4271 @end table
4272
4273 @subsection Examples
4274
4275 @itemize
4276 @item
4277 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4278 each amovie filter use stereo file with IR coefficients as input.
4279 The files give coefficients for each position of virtual loudspeaker:
4280 @example
4281 ffmpeg -i input.wav
4282 -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"
4283 output.wav
4284 @end example
4285
4286 @item
4287 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4288 but now in @var{multich} @var{hrir} format.
4289 @example
4290 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"
4291 output.wav
4292 @end example
4293 @end itemize
4294
4295 @section highpass
4296
4297 Apply a high-pass filter with 3dB point frequency.
4298 The filter can be either single-pole, or double-pole (the default).
4299 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4300
4301 The filter accepts the following options:
4302
4303 @table @option
4304 @item frequency, f
4305 Set frequency in Hz. Default is 3000.
4306
4307 @item poles, p
4308 Set number of poles. Default is 2.
4309
4310 @item width_type, t
4311 Set method to specify band-width of filter.
4312 @table @option
4313 @item h
4314 Hz
4315 @item q
4316 Q-Factor
4317 @item o
4318 octave
4319 @item s
4320 slope
4321 @item k
4322 kHz
4323 @end table
4324
4325 @item width, w
4326 Specify the band-width of a filter in width_type units.
4327 Applies only to double-pole filter.
4328 The default is 0.707q and gives a Butterworth response.
4329
4330 @item mix, m
4331 How much to use filtered signal in output. Default is 1.
4332 Range is between 0 and 1.
4333
4334 @item channels, c
4335 Specify which channels to filter, by default all available are filtered.
4336
4337 @item normalize, n
4338 Normalize biquad coefficients, by default is disabled.
4339 Enabling it will normalize magnitude response at DC to 0dB.
4340
4341 @item transform, a
4342 Set transform type of IIR filter.
4343 @table @option
4344 @item di
4345 @item dii
4346 @item tdii
4347 @item latt
4348 @end table
4349 @end table
4350
4351 @subsection Commands
4352
4353 This filter supports the following commands:
4354 @table @option
4355 @item frequency, f
4356 Change highpass frequency.
4357 Syntax for the command is : "@var{frequency}"
4358
4359 @item width_type, t
4360 Change highpass width_type.
4361 Syntax for the command is : "@var{width_type}"
4362
4363 @item width, w
4364 Change highpass width.
4365 Syntax for the command is : "@var{width}"
4366
4367 @item mix, m
4368 Change highpass mix.
4369 Syntax for the command is : "@var{mix}"
4370 @end table
4371
4372 @section join
4373
4374 Join multiple input streams into one multi-channel stream.
4375
4376 It accepts the following parameters:
4377 @table @option
4378
4379 @item inputs
4380 The number of input streams. It defaults to 2.
4381
4382 @item channel_layout
4383 The desired output channel layout. It defaults to stereo.
4384
4385 @item map
4386 Map channels from inputs to output. The argument is a '|'-separated list of
4387 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
4388 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
4389 can be either the name of the input channel (e.g. FL for front left) or its
4390 index in the specified input stream. @var{out_channel} is the name of the output
4391 channel.
4392 @end table
4393
4394 The filter will attempt to guess the mappings when they are not specified
4395 explicitly. It does so by first trying to find an unused matching input channel
4396 and if that fails it picks the first unused input channel.
4397
4398 Join 3 inputs (with properly set channel layouts):
4399 @example
4400 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
4401 @end example
4402
4403 Build a 5.1 output from 6 single-channel streams:
4404 @example
4405 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
4406 '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'
4407 out
4408 @end example
4409
4410 @section ladspa
4411
4412 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
4413
4414 To enable compilation of this filter you need to configure FFmpeg with
4415 @code{--enable-ladspa}.
4416
4417 @table @option
4418 @item file, f
4419 Specifies the name of LADSPA plugin library to load. If the environment
4420 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
4421 each one of the directories specified by the colon separated list in
4422 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
4423 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
4424 @file{/usr/lib/ladspa/}.
4425
4426 @item plugin, p
4427 Specifies the plugin within the library. Some libraries contain only
4428 one plugin, but others contain many of them. If this is not set filter
4429 will list all available plugins within the specified library.
4430
4431 @item controls, c
4432 Set the '|' separated list of controls which are zero or more floating point
4433 values that determine the behavior of the loaded plugin (for example delay,
4434 threshold or gain).
4435 Controls need to be defined using the following syntax:
4436 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
4437 @var{valuei} is the value set on the @var{i}-th control.
4438 Alternatively they can be also defined using the following syntax:
4439 @var{value0}|@var{value1}|@var{value2}|..., where
4440 @var{valuei} is the value set on the @var{i}-th control.
4441 If @option{controls} is set to @code{help}, all available controls and
4442 their valid ranges are printed.
4443
4444 @item sample_rate, s
4445 Specify the sample rate, default to 44100. Only used if plugin have
4446 zero inputs.
4447
4448 @item nb_samples, n
4449 Set the number of samples per channel per each output frame, default
4450 is 1024. Only used if plugin have zero inputs.
4451
4452 @item duration, d
4453 Set the minimum duration of the sourced audio. See
4454 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4455 for the accepted syntax.
4456 Note that the resulting duration may be greater than the specified duration,
4457 as the generated audio is always cut at the end of a complete frame.
4458 If not specified, or the expressed duration is negative, the audio is
4459 supposed to be generated forever.
4460 Only used if plugin have zero inputs.
4461
4462 @item latency, l
4463 Enable latency compensation, by default is disabled.
4464 Only used if plugin have inputs.
4465 @end table
4466
4467 @subsection Examples
4468
4469 @itemize
4470 @item
4471 List all available plugins within amp (LADSPA example plugin) library:
4472 @example
4473 ladspa=file=amp
4474 @end example
4475
4476 @item
4477 List all available controls and their valid ranges for @code{vcf_notch}
4478 plugin from @code{VCF} library:
4479 @example
4480 ladspa=f=vcf:p=vcf_notch:c=help
4481 @end example
4482
4483 @item
4484 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4485 plugin library:
4486 @example
4487 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4488 @end example
4489
4490 @item
4491 Add reverberation to the audio using TAP-plugins
4492 (Tom's Audio Processing plugins):
4493 @example
4494 ladspa=file=tap_reverb:tap_reverb
4495 @end example
4496
4497 @item
4498 Generate white noise, with 0.2 amplitude:
4499 @example
4500 ladspa=file=cmt:noise_source_white:c=c0=.2
4501 @end example
4502
4503 @item
4504 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4505 @code{C* Audio Plugin Suite} (CAPS) library:
4506 @example
4507 ladspa=file=caps:Click:c=c1=20'
4508 @end example
4509
4510 @item
4511 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4512 @example
4513 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4514 @end example
4515
4516 @item
4517 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4518 @code{SWH Plugins} collection:
4519 @example
4520 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4521 @end example
4522
4523 @item
4524 Attenuate low frequencies using Multiband EQ from Steve Harris
4525 @code{SWH Plugins} collection:
4526 @example
4527 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4528 @end example
4529
4530 @item
4531 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4532 (CAPS) library:
4533 @example
4534 ladspa=caps:Narrower
4535 @end example
4536
4537 @item
4538 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4539 @example
4540 ladspa=caps:White:.2
4541 @end example
4542
4543 @item
4544 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4545 @example
4546 ladspa=caps:Fractal:c=c1=1
4547 @end example
4548
4549 @item
4550 Dynamic volume normalization using @code{VLevel} plugin:
4551 @example
4552 ladspa=vlevel-ladspa:vlevel_mono
4553 @end example
4554 @end itemize
4555
4556 @subsection Commands
4557
4558 This filter supports the following commands:
4559 @table @option
4560 @item cN
4561 Modify the @var{N}-th control value.
4562
4563 If the specified value is not valid, it is ignored and prior one is kept.
4564 @end table
4565
4566 @section loudnorm
4567
4568 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4569 Support for both single pass (livestreams, files) and double pass (files) modes.
4570 This algorithm can target IL, LRA, and maximum true peak. In dynamic mode, to accurately
4571 detect true peaks, the audio stream will be upsampled to 192 kHz.
4572 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4573
4574 The filter accepts the following options:
4575
4576 @table @option
4577 @item I, i
4578 Set integrated loudness target.
4579 Range is -70.0 - -5.0. Default value is -24.0.
4580
4581 @item LRA, lra
4582 Set loudness range target.
4583 Range is 1.0 - 20.0. Default value is 7.0.
4584
4585 @item TP, tp
4586 Set maximum true peak.
4587 Range is -9.0 - +0.0. Default value is -2.0.
4588
4589 @item measured_I, measured_i
4590 Measured IL of input file.
4591 Range is -99.0 - +0.0.
4592
4593 @item measured_LRA, measured_lra
4594 Measured LRA of input file.
4595 Range is  0.0 - 99.0.
4596
4597 @item measured_TP, measured_tp
4598 Measured true peak of input file.
4599 Range is  -99.0 - +99.0.
4600
4601 @item measured_thresh
4602 Measured threshold of input file.
4603 Range is -99.0 - +0.0.
4604
4605 @item offset
4606 Set offset gain. Gain is applied before the true-peak limiter.
4607 Range is  -99.0 - +99.0. Default is +0.0.
4608
4609 @item linear
4610 Normalize by linearly scaling the source audio.
4611 @code{measured_I}, @code{measured_LRA}, @code{measured_TP},
4612 and @code{measured_thresh} must all be specified. Target LRA shouldn't
4613 be lower than source LRA and the change in integrated loudness shouldn't
4614 result in a true peak which exceeds the target TP. If any of these
4615 conditions aren't met, normalization mode will revert to @var{dynamic}.
4616 Options are @code{true} or @code{false}. Default is @code{true}.
4617
4618 @item dual_mono
4619 Treat mono input files as "dual-mono". If a mono file is intended for playback
4620 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4621 If set to @code{true}, this option will compensate for this effect.
4622 Multi-channel input files are not affected by this option.
4623 Options are true or false. Default is false.
4624
4625 @item print_format
4626 Set print format for stats. Options are summary, json, or none.
4627 Default value is none.
4628 @end table
4629
4630 @section lowpass
4631
4632 Apply a low-pass filter with 3dB point frequency.
4633 The filter can be either single-pole or double-pole (the default).
4634 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4635
4636 The filter accepts the following options:
4637
4638 @table @option
4639 @item frequency, f
4640 Set frequency in Hz. Default is 500.
4641
4642 @item poles, p
4643 Set number of poles. Default is 2.
4644
4645 @item width_type, t
4646 Set method to specify band-width of filter.
4647 @table @option
4648 @item h
4649 Hz
4650 @item q
4651 Q-Factor
4652 @item o
4653 octave
4654 @item s
4655 slope
4656 @item k
4657 kHz
4658 @end table
4659
4660 @item width, w
4661 Specify the band-width of a filter in width_type units.
4662 Applies only to double-pole filter.
4663 The default is 0.707q and gives a Butterworth response.
4664
4665 @item mix, m
4666 How much to use filtered signal in output. Default is 1.
4667 Range is between 0 and 1.
4668
4669 @item channels, c
4670 Specify which channels to filter, by default all available are filtered.
4671
4672 @item normalize, n
4673 Normalize biquad coefficients, by default is disabled.
4674 Enabling it will normalize magnitude response at DC to 0dB.
4675
4676 @item transform, a
4677 Set transform type of IIR filter.
4678 @table @option
4679 @item di
4680 @item dii
4681 @item tdii
4682 @item latt
4683 @end table
4684 @end table
4685
4686 @subsection Examples
4687 @itemize
4688 @item
4689 Lowpass only LFE channel, it LFE is not present it does nothing:
4690 @example
4691 lowpass=c=LFE
4692 @end example
4693 @end itemize
4694
4695 @subsection Commands
4696
4697 This filter supports the following commands:
4698 @table @option
4699 @item frequency, f
4700 Change lowpass frequency.
4701 Syntax for the command is : "@var{frequency}"
4702
4703 @item width_type, t
4704 Change lowpass width_type.
4705 Syntax for the command is : "@var{width_type}"
4706
4707 @item width, w
4708 Change lowpass width.
4709 Syntax for the command is : "@var{width}"
4710
4711 @item mix, m
4712 Change lowpass mix.
4713 Syntax for the command is : "@var{mix}"
4714 @end table
4715
4716 @section lv2
4717
4718 Load a LV2 (LADSPA Version 2) plugin.
4719
4720 To enable compilation of this filter you need to configure FFmpeg with
4721 @code{--enable-lv2}.
4722
4723 @table @option
4724 @item plugin, p
4725 Specifies the plugin URI. You may need to escape ':'.
4726
4727 @item controls, c
4728 Set the '|' separated list of controls which are zero or more floating point
4729 values that determine the behavior of the loaded plugin (for example delay,
4730 threshold or gain).
4731 If @option{controls} is set to @code{help}, all available controls and
4732 their valid ranges are printed.
4733
4734 @item sample_rate, s
4735 Specify the sample rate, default to 44100. Only used if plugin have
4736 zero inputs.
4737
4738 @item nb_samples, n
4739 Set the number of samples per channel per each output frame, default
4740 is 1024. Only used if plugin have zero inputs.
4741
4742 @item duration, d
4743 Set the minimum duration of the sourced audio. See
4744 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4745 for the accepted syntax.
4746 Note that the resulting duration may be greater than the specified duration,
4747 as the generated audio is always cut at the end of a complete frame.
4748 If not specified, or the expressed duration is negative, the audio is
4749 supposed to be generated forever.
4750 Only used if plugin have zero inputs.
4751 @end table
4752
4753 @subsection Examples
4754
4755 @itemize
4756 @item
4757 Apply bass enhancer plugin from Calf:
4758 @example
4759 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4760 @end example
4761
4762 @item
4763 Apply vinyl plugin from Calf:
4764 @example
4765 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4766 @end example
4767
4768 @item
4769 Apply bit crusher plugin from ArtyFX:
4770 @example
4771 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4772 @end example
4773 @end itemize
4774
4775 @section mcompand
4776 Multiband Compress or expand the audio's dynamic range.
4777
4778 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4779 This is akin to the crossover of a loudspeaker, and results in flat frequency
4780 response when absent compander action.
4781
4782 It accepts the following parameters:
4783
4784 @table @option
4785 @item args
4786 This option syntax is:
4787 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4788 For explanation of each item refer to compand filter documentation.
4789 @end table
4790
4791 @anchor{pan}
4792 @section pan
4793
4794 Mix channels with specific gain levels. The filter accepts the output
4795 channel layout followed by a set of channels definitions.
4796
4797 This filter is also designed to efficiently remap the channels of an audio
4798 stream.
4799
4800 The filter accepts parameters of the form:
4801 "@var{l}|@var{outdef}|@var{outdef}|..."
4802
4803 @table @option
4804 @item l
4805 output channel layout or number of channels
4806
4807 @item outdef
4808 output channel specification, of the form:
4809 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4810
4811 @item out_name
4812 output channel to define, either a channel name (FL, FR, etc.) or a channel
4813 number (c0, c1, etc.)
4814
4815 @item gain
4816 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4817
4818 @item in_name
4819 input channel to use, see out_name for details; it is not possible to mix
4820 named and numbered input channels
4821 @end table
4822
4823 If the `=' in a channel specification is replaced by `<', then the gains for
4824 that specification will be renormalized so that the total is 1, thus
4825 avoiding clipping noise.
4826
4827 @subsection Mixing examples
4828
4829 For example, if you want to down-mix from stereo to mono, but with a bigger
4830 factor for the left channel:
4831 @example
4832 pan=1c|c0=0.9*c0+0.1*c1
4833 @end example
4834
4835 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4836 7-channels surround:
4837 @example
4838 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4839 @end example
4840
4841 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4842 that should be preferred (see "-ac" option) unless you have very specific
4843 needs.
4844
4845 @subsection Remapping examples
4846
4847 The channel remapping will be effective if, and only if:
4848
4849 @itemize
4850 @item gain coefficients are zeroes or ones,
4851 @item only one input per channel output,
4852 @end itemize
4853
4854 If all these conditions are satisfied, the filter will notify the user ("Pure
4855 channel mapping detected"), and use an optimized and lossless method to do the
4856 remapping.
4857
4858 For example, if you have a 5.1 source and want a stereo audio stream by
4859 dropping the extra channels:
4860 @example
4861 pan="stereo| c0=FL | c1=FR"
4862 @end example
4863
4864 Given the same source, you can also switch front left and front right channels
4865 and keep the input channel layout:
4866 @example
4867 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4868 @end example
4869
4870 If the input is a stereo audio stream, you can mute the front left channel (and
4871 still keep the stereo channel layout) with:
4872 @example
4873 pan="stereo|c1=c1"
4874 @end example
4875
4876 Still with a stereo audio stream input, you can copy the right channel in both
4877 front left and right:
4878 @example
4879 pan="stereo| c0=FR | c1=FR"
4880 @end example
4881
4882 @section replaygain
4883
4884 ReplayGain scanner filter. This filter takes an audio stream as an input and
4885 outputs it unchanged.
4886 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4887
4888 @section resample
4889
4890 Convert the audio sample format, sample rate and channel layout. It is
4891 not meant to be used directly.
4892
4893 @section rubberband
4894 Apply time-stretching and pitch-shifting with librubberband.
4895
4896 To enable compilation of this filter, you need to configure FFmpeg with
4897 @code{--enable-librubberband}.
4898
4899 The filter accepts the following options:
4900
4901 @table @option
4902 @item tempo
4903 Set tempo scale factor.
4904
4905 @item pitch
4906 Set pitch scale factor.
4907
4908 @item transients
4909 Set transients detector.
4910 Possible values are:
4911 @table @var
4912 @item crisp
4913 @item mixed
4914 @item smooth
4915 @end table
4916
4917 @item detector
4918 Set detector.
4919 Possible values are:
4920 @table @var
4921 @item compound
4922 @item percussive
4923 @item soft
4924 @end table
4925
4926 @item phase
4927 Set phase.
4928 Possible values are:
4929 @table @var
4930 @item laminar
4931 @item independent
4932 @end table
4933
4934 @item window
4935 Set processing window size.
4936 Possible values are:
4937 @table @var
4938 @item standard
4939 @item short
4940 @item long
4941 @end table
4942
4943 @item smoothing
4944 Set smoothing.
4945 Possible values are:
4946 @table @var
4947 @item off
4948 @item on
4949 @end table
4950
4951 @item formant
4952 Enable formant preservation when shift pitching.
4953 Possible values are:
4954 @table @var
4955 @item shifted
4956 @item preserved
4957 @end table
4958
4959 @item pitchq
4960 Set pitch quality.
4961 Possible values are:
4962 @table @var
4963 @item quality
4964 @item speed
4965 @item consistency
4966 @end table
4967
4968 @item channels
4969 Set channels.
4970 Possible values are:
4971 @table @var
4972 @item apart
4973 @item together
4974 @end table
4975 @end table
4976
4977 @subsection Commands
4978
4979 This filter supports the following commands:
4980 @table @option
4981 @item tempo
4982 Change filter tempo scale factor.
4983 Syntax for the command is : "@var{tempo}"
4984
4985 @item pitch
4986 Change filter pitch scale factor.
4987 Syntax for the command is : "@var{pitch}"
4988 @end table
4989
4990 @section sidechaincompress
4991
4992 This filter acts like normal compressor but has the ability to compress
4993 detected signal using second input signal.
4994 It needs two input streams and returns one output stream.
4995 First input stream will be processed depending on second stream signal.
4996 The filtered signal then can be filtered with other filters in later stages of
4997 processing. See @ref{pan} and @ref{amerge} filter.
4998
4999 The filter accepts the following options:
5000
5001 @table @option
5002 @item level_in
5003 Set input gain. Default is 1. Range is between 0.015625 and 64.
5004
5005 @item mode
5006 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
5007 Default is @code{downward}.
5008
5009 @item threshold
5010 If a signal of second stream raises above this level it will affect the gain
5011 reduction of first stream.
5012 By default is 0.125. Range is between 0.00097563 and 1.
5013
5014 @item ratio
5015 Set a ratio about which the signal is reduced. 1:2 means that if the level
5016 raised 4dB above the threshold, it will be only 2dB above after the reduction.
5017 Default is 2. Range is between 1 and 20.
5018
5019 @item attack
5020 Amount of milliseconds the signal has to rise above the threshold before gain
5021 reduction starts. Default is 20. Range is between 0.01 and 2000.
5022
5023 @item release
5024 Amount of milliseconds the signal has to fall below the threshold before
5025 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
5026
5027 @item makeup
5028 Set the amount by how much signal will be amplified after processing.
5029 Default is 1. Range is from 1 to 64.
5030
5031 @item knee
5032 Curve the sharp knee around the threshold to enter gain reduction more softly.
5033 Default is 2.82843. Range is between 1 and 8.
5034
5035 @item link
5036 Choose if the @code{average} level between all channels of side-chain stream
5037 or the louder(@code{maximum}) channel of side-chain stream affects the
5038 reduction. Default is @code{average}.
5039
5040 @item detection
5041 Should the exact signal be taken in case of @code{peak} or an RMS one in case
5042 of @code{rms}. Default is @code{rms} which is mainly smoother.
5043
5044 @item level_sc
5045 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
5046
5047 @item mix
5048 How much to use compressed signal in output. Default is 1.
5049 Range is between 0 and 1.
5050 @end table
5051
5052 @subsection Commands
5053
5054 This filter supports the all above options as @ref{commands}.
5055
5056 @subsection Examples
5057
5058 @itemize
5059 @item
5060 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
5061 depending on the signal of 2nd input and later compressed signal to be
5062 merged with 2nd input:
5063 @example
5064 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
5065 @end example
5066 @end itemize
5067
5068 @section sidechaingate
5069
5070 A sidechain gate acts like a normal (wideband) gate but has the ability to
5071 filter the detected signal before sending it to the gain reduction stage.
5072 Normally a gate uses the full range signal to detect a level above the
5073 threshold.
5074 For example: If you cut all lower frequencies from your sidechain signal
5075 the gate will decrease the volume of your track only if not enough highs
5076 appear. With this technique you are able to reduce the resonation of a
5077 natural drum or remove "rumbling" of muted strokes from a heavily distorted
5078 guitar.
5079 It needs two input streams and returns one output stream.
5080 First input stream will be processed depending on second stream signal.
5081
5082 The filter accepts the following options:
5083
5084 @table @option
5085 @item level_in
5086 Set input level before filtering.
5087 Default is 1. Allowed range is from 0.015625 to 64.
5088
5089 @item mode
5090 Set the mode of operation. Can be @code{upward} or @code{downward}.
5091 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
5092 will be amplified, expanding dynamic range in upward direction.
5093 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
5094
5095 @item range
5096 Set the level of gain reduction when the signal is below the threshold.
5097 Default is 0.06125. Allowed range is from 0 to 1.
5098 Setting this to 0 disables reduction and then filter behaves like expander.
5099
5100 @item threshold
5101 If a signal rises above this level the gain reduction is released.
5102 Default is 0.125. Allowed range is from 0 to 1.
5103
5104 @item ratio
5105 Set a ratio about which the signal is reduced.
5106 Default is 2. Allowed range is from 1 to 9000.
5107
5108 @item attack
5109 Amount of milliseconds the signal has to rise above the threshold before gain
5110 reduction stops.
5111 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
5112
5113 @item release
5114 Amount of milliseconds the signal has to fall below the threshold before the
5115 reduction is increased again. Default is 250 milliseconds.
5116 Allowed range is from 0.01 to 9000.
5117
5118 @item makeup
5119 Set amount of amplification of signal after processing.
5120 Default is 1. Allowed range is from 1 to 64.
5121
5122 @item knee
5123 Curve the sharp knee around the threshold to enter gain reduction more softly.
5124 Default is 2.828427125. Allowed range is from 1 to 8.
5125
5126 @item detection
5127 Choose if exact signal should be taken for detection or an RMS like one.
5128 Default is rms. Can be peak or rms.
5129
5130 @item link
5131 Choose if the average level between all channels or the louder channel affects
5132 the reduction.
5133 Default is average. Can be average or maximum.
5134
5135 @item level_sc
5136 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
5137 @end table
5138
5139 @subsection Commands
5140
5141 This filter supports the all above options as @ref{commands}.
5142
5143 @section silencedetect
5144
5145 Detect silence in an audio stream.
5146
5147 This filter logs a message when it detects that the input audio volume is less
5148 or equal to a noise tolerance value for a duration greater or equal to the
5149 minimum detected noise duration.
5150
5151 The printed times and duration are expressed in seconds. The
5152 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
5153 is set on the first frame whose timestamp equals or exceeds the detection
5154 duration and it contains the timestamp of the first frame of the silence.
5155
5156 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
5157 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
5158 keys are set on the first frame after the silence. If @option{mono} is
5159 enabled, and each channel is evaluated separately, the @code{.X}
5160 suffixed keys are used, and @code{X} corresponds to the channel number.
5161
5162 The filter accepts the following options:
5163
5164 @table @option
5165 @item noise, n
5166 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
5167 specified value) or amplitude ratio. Default is -60dB, or 0.001.
5168
5169 @item duration, d
5170 Set silence duration until notification (default is 2 seconds). See
5171 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5172 for the accepted syntax.
5173
5174 @item mono, m
5175 Process each channel separately, instead of combined. By default is disabled.
5176 @end table
5177
5178 @subsection Examples
5179
5180 @itemize
5181 @item
5182 Detect 5 seconds of silence with -50dB noise tolerance:
5183 @example
5184 silencedetect=n=-50dB:d=5
5185 @end example
5186
5187 @item
5188 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
5189 tolerance in @file{silence.mp3}:
5190 @example
5191 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
5192 @end example
5193 @end itemize
5194
5195 @section silenceremove
5196
5197 Remove silence from the beginning, middle or end of the audio.
5198
5199 The filter accepts the following options:
5200
5201 @table @option
5202 @item start_periods
5203 This value is used to indicate if audio should be trimmed at beginning of
5204 the audio. A value of zero indicates no silence should be trimmed from the
5205 beginning. When specifying a non-zero value, it trims audio up until it
5206 finds non-silence. Normally, when trimming silence from beginning of audio
5207 the @var{start_periods} will be @code{1} but it can be increased to higher
5208 values to trim all audio up to specific count of non-silence periods.
5209 Default value is @code{0}.
5210
5211 @item start_duration
5212 Specify the amount of time that non-silence must be detected before it stops
5213 trimming audio. By increasing the duration, bursts of noises can be treated
5214 as silence and trimmed off. Default value is @code{0}.
5215
5216 @item start_threshold
5217 This indicates what sample value should be treated as silence. For digital
5218 audio, a value of @code{0} may be fine but for audio recorded from analog,
5219 you may wish to increase the value to account for background noise.
5220 Can be specified in dB (in case "dB" is appended to the specified value)
5221 or amplitude ratio. Default value is @code{0}.
5222
5223 @item start_silence
5224 Specify max duration of silence at beginning that will be kept after
5225 trimming. Default is 0, which is equal to trimming all samples detected
5226 as silence.
5227
5228 @item start_mode
5229 Specify mode of detection of silence end in start of multi-channel audio.
5230 Can be @var{any} or @var{all}. Default is @var{any}.
5231 With @var{any}, any sample that is detected as non-silence will cause
5232 stopped trimming of silence.
5233 With @var{all}, only if all channels are detected as non-silence will cause
5234 stopped trimming of silence.
5235
5236 @item stop_periods
5237 Set the count for trimming silence from the end of audio.
5238 To remove silence from the middle of a file, specify a @var{stop_periods}
5239 that is negative. This value is then treated as a positive value and is
5240 used to indicate the effect should restart processing as specified by
5241 @var{start_periods}, making it suitable for removing periods of silence
5242 in the middle of the audio.
5243 Default value is @code{0}.
5244
5245 @item stop_duration
5246 Specify a duration of silence that must exist before audio is not copied any
5247 more. By specifying a higher duration, silence that is wanted can be left in
5248 the audio.
5249 Default value is @code{0}.
5250
5251 @item stop_threshold
5252 This is the same as @option{start_threshold} but for trimming silence from
5253 the end of audio.
5254 Can be specified in dB (in case "dB" is appended to the specified value)
5255 or amplitude ratio. Default value is @code{0}.
5256
5257 @item stop_silence
5258 Specify max duration of silence at end that will be kept after
5259 trimming. Default is 0, which is equal to trimming all samples detected
5260 as silence.
5261
5262 @item stop_mode
5263 Specify mode of detection of silence start in end of multi-channel audio.
5264 Can be @var{any} or @var{all}. Default is @var{any}.
5265 With @var{any}, any sample that is detected as non-silence will cause
5266 stopped trimming of silence.
5267 With @var{all}, only if all channels are detected as non-silence will cause
5268 stopped trimming of silence.
5269
5270 @item detection
5271 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
5272 and works better with digital silence which is exactly 0.
5273 Default value is @code{rms}.
5274
5275 @item window
5276 Set duration in number of seconds used to calculate size of window in number
5277 of samples for detecting silence.
5278 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
5279 @end table
5280
5281 @subsection Examples
5282
5283 @itemize
5284 @item
5285 The following example shows how this filter can be used to start a recording
5286 that does not contain the delay at the start which usually occurs between
5287 pressing the record button and the start of the performance:
5288 @example
5289 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
5290 @end example
5291
5292 @item
5293 Trim all silence encountered from beginning to end where there is more than 1
5294 second of silence in audio:
5295 @example
5296 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
5297 @end example
5298
5299 @item
5300 Trim all digital silence samples, using peak detection, from beginning to end
5301 where there is more than 0 samples of digital silence in audio and digital
5302 silence is detected in all channels at same positions in stream:
5303 @example
5304 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
5305 @end example
5306 @end itemize
5307
5308 @section sofalizer
5309
5310 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
5311 loudspeakers around the user for binaural listening via headphones (audio
5312 formats up to 9 channels supported).
5313 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
5314 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
5315 Austrian Academy of Sciences.
5316
5317 To enable compilation of this filter you need to configure FFmpeg with
5318 @code{--enable-libmysofa}.
5319
5320 The filter accepts the following options:
5321
5322 @table @option
5323 @item sofa
5324 Set the SOFA file used for rendering.
5325
5326 @item gain
5327 Set gain applied to audio. Value is in dB. Default is 0.
5328
5329 @item rotation
5330 Set rotation of virtual loudspeakers in deg. Default is 0.
5331
5332 @item elevation
5333 Set elevation of virtual speakers in deg. Default is 0.
5334
5335 @item radius
5336 Set distance in meters between loudspeakers and the listener with near-field
5337 HRTFs. Default is 1.
5338
5339 @item type
5340 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
5341 processing audio in time domain which is slow.
5342 @var{freq} is processing audio in frequency domain which is fast.
5343 Default is @var{freq}.
5344
5345 @item speakers
5346 Set custom positions of virtual loudspeakers. Syntax for this option is:
5347 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
5348 Each virtual loudspeaker is described with short channel name following with
5349 azimuth and elevation in degrees.
5350 Each virtual loudspeaker description is separated by '|'.
5351 For example to override front left and front right channel positions use:
5352 'speakers=FL 45 15|FR 345 15'.
5353 Descriptions with unrecognised channel names are ignored.
5354
5355 @item lfegain
5356 Set custom gain for LFE channels. Value is in dB. Default is 0.
5357
5358 @item framesize
5359 Set custom frame size in number of samples. Default is 1024.
5360 Allowed range is from 1024 to 96000. Only used if option @samp{type}
5361 is set to @var{freq}.
5362
5363 @item normalize
5364 Should all IRs be normalized upon importing SOFA file.
5365 By default is enabled.
5366
5367 @item interpolate
5368 Should nearest IRs be interpolated with neighbor IRs if exact position
5369 does not match. By default is disabled.
5370
5371 @item minphase
5372 Minphase all IRs upon loading of SOFA file. By default is disabled.
5373
5374 @item anglestep
5375 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
5376
5377 @item radstep
5378 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
5379 @end table
5380
5381 @subsection Examples
5382
5383 @itemize
5384 @item
5385 Using ClubFritz6 sofa file:
5386 @example
5387 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
5388 @end example
5389
5390 @item
5391 Using ClubFritz12 sofa file and bigger radius with small rotation:
5392 @example
5393 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
5394 @end example
5395
5396 @item
5397 Similar as above but with custom speaker positions for front left, front right, back left and back right
5398 and also with custom gain:
5399 @example
5400 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
5401 @end example
5402 @end itemize
5403
5404 @section speechnorm
5405 Speech Normalizer.
5406
5407 This filter expands or compresses each half-cycle of audio samples
5408 (local set of samples all above or all below zero and between two nearest zero crossings) depending
5409 on threshold value, so audio reaches target peak value under conditions controlled by below options.
5410
5411 The filter accepts the following options:
5412
5413 @table @option
5414 @item peak, p
5415 Set the expansion target peak value. This specifies the highest allowed absolute amplitude
5416 level for the normalized audio input. Default value is 0.95. Allowed range is from 0.0 to 1.0.
5417
5418 @item expansion, e
5419 Set the maximum expansion factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5420 This option controls maximum local half-cycle of samples expansion. The maximum expansion
5421 would be such that local peak value reaches target peak value but never to surpass it and that
5422 ratio between new and previous peak value does not surpass this option value.
5423
5424 @item compression, c
5425 Set the maximum compression factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5426 This option controls maximum local half-cycle of samples compression. This option is used
5427 only if @option{threshold} option is set to value greater than 0.0, then in such cases
5428 when local peak is lower or same as value set by @option{threshold} all samples belonging to
5429 that peak's half-cycle will be compressed by current compression factor.
5430
5431 @item threshold, t
5432 Set the threshold value. Default value is 0.0. Allowed range is from 0.0 to 1.0.
5433 This option specifies which half-cycles of samples will be compressed and which will be expanded.
5434 Any half-cycle samples with their local peak value below or same as this option value will be
5435 compressed by current compression factor, otherwise, if greater than threshold value they will be
5436 expanded with expansion factor so that it could reach peak target value but never surpass it.
5437
5438 @item raise, r
5439 Set the expansion raising amount per each half-cycle of samples. Default value is 0.001.
5440 Allowed range is from 0.0 to 1.0. This controls how fast expansion factor is raised per
5441 each new half-cycle until it reaches @option{expansion} value.
5442 Setting this options too high may lead to distortions.
5443
5444 @item fall, f
5445 Set the compression raising amount per each half-cycle of samples. Default value is 0.001.
5446 Allowed range is from 0.0 to 1.0. This controls how fast compression factor is raised per
5447 each new half-cycle until it reaches @option{compression} value.
5448
5449 @item channels, h
5450 Specify which channels to filter, by default all available channels are filtered.
5451
5452 @item invert, i
5453 Enable inverted filtering, by default is disabled. This inverts interpretation of @option{threshold}
5454 option. When enabled any half-cycle of samples with their local peak value below or same as
5455 @option{threshold} option will be expanded otherwise it will be compressed.
5456
5457 @item link, l
5458 Link channels when calculating gain applied to each filtered channel sample, by default is disabled.
5459 When disabled each filtered channel gain calculation is independent, otherwise when this option
5460 is enabled the minimum of all possible gains for each filtered channel is used.
5461 @end table
5462
5463 @subsection Commands
5464
5465 This filter supports the all above options as @ref{commands}.
5466
5467 @section stereotools
5468
5469 This filter has some handy utilities to manage stereo signals, for converting
5470 M/S stereo recordings to L/R signal while having control over the parameters
5471 or spreading the stereo image of master track.
5472
5473 The filter accepts the following options:
5474
5475 @table @option
5476 @item level_in
5477 Set input level before filtering for both channels. Defaults is 1.
5478 Allowed range is from 0.015625 to 64.
5479
5480 @item level_out
5481 Set output level after filtering for both channels. Defaults is 1.
5482 Allowed range is from 0.015625 to 64.
5483
5484 @item balance_in
5485 Set input balance between both channels. Default is 0.
5486 Allowed range is from -1 to 1.
5487
5488 @item balance_out
5489 Set output balance between both channels. Default is 0.
5490 Allowed range is from -1 to 1.
5491
5492 @item softclip
5493 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
5494 clipping. Disabled by default.
5495
5496 @item mutel
5497 Mute the left channel. Disabled by default.
5498
5499 @item muter
5500 Mute the right channel. Disabled by default.
5501
5502 @item phasel
5503 Change the phase of the left channel. Disabled by default.
5504
5505 @item phaser
5506 Change the phase of the right channel. Disabled by default.
5507
5508 @item mode
5509 Set stereo mode. Available values are:
5510
5511 @table @samp
5512 @item lr>lr
5513 Left/Right to Left/Right, this is default.
5514
5515 @item lr>ms
5516 Left/Right to Mid/Side.
5517
5518 @item ms>lr
5519 Mid/Side to Left/Right.
5520
5521 @item lr>ll
5522 Left/Right to Left/Left.
5523
5524 @item lr>rr
5525 Left/Right to Right/Right.
5526
5527 @item lr>l+r
5528 Left/Right to Left + Right.
5529
5530 @item lr>rl
5531 Left/Right to Right/Left.
5532
5533 @item ms>ll
5534 Mid/Side to Left/Left.
5535
5536 @item ms>rr
5537 Mid/Side to Right/Right.
5538
5539 @item ms>rl
5540 Mid/Side to Right/Left.
5541
5542 @item lr>l-r
5543 Left/Right to Left - Right.
5544 @end table
5545
5546 @item slev
5547 Set level of side signal. Default is 1.
5548 Allowed range is from 0.015625 to 64.
5549
5550 @item sbal
5551 Set balance of side signal. Default is 0.
5552 Allowed range is from -1 to 1.
5553
5554 @item mlev
5555 Set level of the middle signal. Default is 1.
5556 Allowed range is from 0.015625 to 64.
5557
5558 @item mpan
5559 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5560
5561 @item base
5562 Set stereo base between mono and inversed channels. Default is 0.
5563 Allowed range is from -1 to 1.
5564
5565 @item delay
5566 Set delay in milliseconds how much to delay left from right channel and
5567 vice versa. Default is 0. Allowed range is from -20 to 20.
5568
5569 @item sclevel
5570 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5571
5572 @item phase
5573 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5574
5575 @item bmode_in, bmode_out
5576 Set balance mode for balance_in/balance_out option.
5577
5578 Can be one of the following:
5579
5580 @table @samp
5581 @item balance
5582 Classic balance mode. Attenuate one channel at time.
5583 Gain is raised up to 1.
5584
5585 @item amplitude
5586 Similar as classic mode above but gain is raised up to 2.
5587
5588 @item power
5589 Equal power distribution, from -6dB to +6dB range.
5590 @end table
5591 @end table
5592
5593 @subsection Commands
5594
5595 This filter supports the all above options as @ref{commands}.
5596
5597 @subsection Examples
5598
5599 @itemize
5600 @item
5601 Apply karaoke like effect:
5602 @example
5603 stereotools=mlev=0.015625
5604 @end example
5605
5606 @item
5607 Convert M/S signal to L/R:
5608 @example
5609 "stereotools=mode=ms>lr"
5610 @end example
5611 @end itemize
5612
5613 @section stereowiden
5614
5615 This filter enhance the stereo effect by suppressing signal common to both
5616 channels and by delaying the signal of left into right and vice versa,
5617 thereby widening the stereo effect.
5618
5619 The filter accepts the following options:
5620
5621 @table @option
5622 @item delay
5623 Time in milliseconds of the delay of left signal into right and vice versa.
5624 Default is 20 milliseconds.
5625
5626 @item feedback
5627 Amount of gain in delayed signal into right and vice versa. Gives a delay
5628 effect of left signal in right output and vice versa which gives widening
5629 effect. Default is 0.3.
5630
5631 @item crossfeed
5632 Cross feed of left into right with inverted phase. This helps in suppressing
5633 the mono. If the value is 1 it will cancel all the signal common to both
5634 channels. Default is 0.3.
5635
5636 @item drymix
5637 Set level of input signal of original channel. Default is 0.8.
5638 @end table
5639
5640 @subsection Commands
5641
5642 This filter supports the all above options except @code{delay} as @ref{commands}.
5643
5644 @section superequalizer
5645 Apply 18 band equalizer.
5646
5647 The filter accepts the following options:
5648 @table @option
5649 @item 1b
5650 Set 65Hz band gain.
5651 @item 2b
5652 Set 92Hz band gain.
5653 @item 3b
5654 Set 131Hz band gain.
5655 @item 4b
5656 Set 185Hz band gain.
5657 @item 5b
5658 Set 262Hz band gain.
5659 @item 6b
5660 Set 370Hz band gain.
5661 @item 7b
5662 Set 523Hz band gain.
5663 @item 8b
5664 Set 740Hz band gain.
5665 @item 9b
5666 Set 1047Hz band gain.
5667 @item 10b
5668 Set 1480Hz band gain.
5669 @item 11b
5670 Set 2093Hz band gain.
5671 @item 12b
5672 Set 2960Hz band gain.
5673 @item 13b
5674 Set 4186Hz band gain.
5675 @item 14b
5676 Set 5920Hz band gain.
5677 @item 15b
5678 Set 8372Hz band gain.
5679 @item 16b
5680 Set 11840Hz band gain.
5681 @item 17b
5682 Set 16744Hz band gain.
5683 @item 18b
5684 Set 20000Hz band gain.
5685 @end table
5686
5687 @section surround
5688 Apply audio surround upmix filter.
5689
5690 This filter allows to produce multichannel output from audio stream.
5691
5692 The filter accepts the following options:
5693
5694 @table @option
5695 @item chl_out
5696 Set output channel layout. By default, this is @var{5.1}.
5697
5698 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5699 for the required syntax.
5700
5701 @item chl_in
5702 Set input channel layout. By default, this is @var{stereo}.
5703
5704 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5705 for the required syntax.
5706
5707 @item level_in
5708 Set input volume level. By default, this is @var{1}.
5709
5710 @item level_out
5711 Set output volume level. By default, this is @var{1}.
5712
5713 @item lfe
5714 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5715
5716 @item lfe_low
5717 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5718
5719 @item lfe_high
5720 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5721
5722 @item lfe_mode
5723 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5724 In @var{add} mode, LFE channel is created from input audio and added to output.
5725 In @var{sub} mode, LFE channel is created from input audio and added to output but
5726 also all non-LFE output channels are subtracted with output LFE channel.
5727
5728 @item angle
5729 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5730 Default is @var{90}.
5731
5732 @item fc_in
5733 Set front center input volume. By default, this is @var{1}.
5734
5735 @item fc_out
5736 Set front center output volume. By default, this is @var{1}.
5737
5738 @item fl_in
5739 Set front left input volume. By default, this is @var{1}.
5740
5741 @item fl_out
5742 Set front left output volume. By default, this is @var{1}.
5743
5744 @item fr_in
5745 Set front right input volume. By default, this is @var{1}.
5746
5747 @item fr_out
5748 Set front right output volume. By default, this is @var{1}.
5749
5750 @item sl_in
5751 Set side left input volume. By default, this is @var{1}.
5752
5753 @item sl_out
5754 Set side left output volume. By default, this is @var{1}.
5755
5756 @item sr_in
5757 Set side right input volume. By default, this is @var{1}.
5758
5759 @item sr_out
5760 Set side right output volume. By default, this is @var{1}.
5761
5762 @item bl_in
5763 Set back left input volume. By default, this is @var{1}.
5764
5765 @item bl_out
5766 Set back left output volume. By default, this is @var{1}.
5767
5768 @item br_in
5769 Set back right input volume. By default, this is @var{1}.
5770
5771 @item br_out
5772 Set back right output volume. By default, this is @var{1}.
5773
5774 @item bc_in
5775 Set back center input volume. By default, this is @var{1}.
5776
5777 @item bc_out
5778 Set back center output volume. By default, this is @var{1}.
5779
5780 @item lfe_in
5781 Set LFE input volume. By default, this is @var{1}.
5782
5783 @item lfe_out
5784 Set LFE output volume. By default, this is @var{1}.
5785
5786 @item allx
5787 Set spread usage of stereo image across X axis for all channels.
5788
5789 @item ally
5790 Set spread usage of stereo image across Y axis for all channels.
5791
5792 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5793 Set spread usage of stereo image across X axis for each channel.
5794
5795 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5796 Set spread usage of stereo image across Y axis for each channel.
5797
5798 @item win_size
5799 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5800
5801 @item win_func
5802 Set window function.
5803
5804 It accepts the following values:
5805 @table @samp
5806 @item rect
5807 @item bartlett
5808 @item hann, hanning
5809 @item hamming
5810 @item blackman
5811 @item welch
5812 @item flattop
5813 @item bharris
5814 @item bnuttall
5815 @item bhann
5816 @item sine
5817 @item nuttall
5818 @item lanczos
5819 @item gauss
5820 @item tukey
5821 @item dolph
5822 @item cauchy
5823 @item parzen
5824 @item poisson
5825 @item bohman
5826 @end table
5827 Default is @code{hann}.
5828
5829 @item overlap
5830 Set window overlap. If set to 1, the recommended overlap for selected
5831 window function will be picked. Default is @code{0.5}.
5832 @end table
5833
5834 @section treble, highshelf
5835
5836 Boost or cut treble (upper) frequencies of the audio using a two-pole
5837 shelving filter with a response similar to that of a standard
5838 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
5839
5840 The filter accepts the following options:
5841
5842 @table @option
5843 @item gain, g
5844 Give the gain at whichever is the lower of ~22 kHz and the
5845 Nyquist frequency. Its useful range is about -20 (for a large cut)
5846 to +20 (for a large boost). Beware of clipping when using a positive gain.
5847
5848 @item frequency, f
5849 Set the filter's central frequency and so can be used
5850 to extend or reduce the frequency range to be boosted or cut.
5851 The default value is @code{3000} Hz.
5852
5853 @item width_type, t
5854 Set method to specify band-width of filter.
5855 @table @option
5856 @item h
5857 Hz
5858 @item q
5859 Q-Factor
5860 @item o
5861 octave
5862 @item s
5863 slope
5864 @item k
5865 kHz
5866 @end table
5867
5868 @item width, w
5869 Determine how steep is the filter's shelf transition.
5870
5871 @item mix, m
5872 How much to use filtered signal in output. Default is 1.
5873 Range is between 0 and 1.
5874
5875 @item channels, c
5876 Specify which channels to filter, by default all available are filtered.
5877
5878 @item normalize, n
5879 Normalize biquad coefficients, by default is disabled.
5880 Enabling it will normalize magnitude response at DC to 0dB.
5881
5882 @item transform, a
5883 Set transform type of IIR filter.
5884 @table @option
5885 @item di
5886 @item dii
5887 @item tdii
5888 @item latt
5889 @end table
5890 @end table
5891
5892 @subsection Commands
5893
5894 This filter supports the following commands:
5895 @table @option
5896 @item frequency, f
5897 Change treble frequency.
5898 Syntax for the command is : "@var{frequency}"
5899
5900 @item width_type, t
5901 Change treble width_type.
5902 Syntax for the command is : "@var{width_type}"
5903
5904 @item width, w
5905 Change treble width.
5906 Syntax for the command is : "@var{width}"
5907
5908 @item gain, g
5909 Change treble gain.
5910 Syntax for the command is : "@var{gain}"
5911
5912 @item mix, m
5913 Change treble mix.
5914 Syntax for the command is : "@var{mix}"
5915 @end table
5916
5917 @section tremolo
5918
5919 Sinusoidal amplitude modulation.
5920
5921 The filter accepts the following options:
5922
5923 @table @option
5924 @item f
5925 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
5926 (20 Hz or lower) will result in a tremolo effect.
5927 This filter may also be used as a ring modulator by specifying
5928 a modulation frequency higher than 20 Hz.
5929 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5930
5931 @item d
5932 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5933 Default value is 0.5.
5934 @end table
5935
5936 @section vibrato
5937
5938 Sinusoidal phase modulation.
5939
5940 The filter accepts the following options:
5941
5942 @table @option
5943 @item f
5944 Modulation frequency in Hertz.
5945 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5946
5947 @item d
5948 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5949 Default value is 0.5.
5950 @end table
5951
5952 @section volume
5953
5954 Adjust the input audio volume.
5955
5956 It accepts the following parameters:
5957 @table @option
5958
5959 @item volume
5960 Set audio volume expression.
5961
5962 Output values are clipped to the maximum value.
5963
5964 The output audio volume is given by the relation:
5965 @example
5966 @var{output_volume} = @var{volume} * @var{input_volume}
5967 @end example
5968
5969 The default value for @var{volume} is "1.0".
5970
5971 @item precision
5972 This parameter represents the mathematical precision.
5973
5974 It determines which input sample formats will be allowed, which affects the
5975 precision of the volume scaling.
5976
5977 @table @option
5978 @item fixed
5979 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
5980 @item float
5981 32-bit floating-point; this limits input sample format to FLT. (default)
5982 @item double
5983 64-bit floating-point; this limits input sample format to DBL.
5984 @end table
5985
5986 @item replaygain
5987 Choose the behaviour on encountering ReplayGain side data in input frames.
5988
5989 @table @option
5990 @item drop
5991 Remove ReplayGain side data, ignoring its contents (the default).
5992
5993 @item ignore
5994 Ignore ReplayGain side data, but leave it in the frame.
5995
5996 @item track
5997 Prefer the track gain, if present.
5998
5999 @item album
6000 Prefer the album gain, if present.
6001 @end table
6002
6003 @item replaygain_preamp
6004 Pre-amplification gain in dB to apply to the selected replaygain gain.
6005
6006 Default value for @var{replaygain_preamp} is 0.0.
6007
6008 @item replaygain_noclip
6009 Prevent clipping by limiting the gain applied.
6010
6011 Default value for @var{replaygain_noclip} is 1.
6012
6013 @item eval
6014 Set when the volume expression is evaluated.
6015
6016 It accepts the following values:
6017 @table @samp
6018 @item once
6019 only evaluate expression once during the filter initialization, or
6020 when the @samp{volume} command is sent
6021
6022 @item frame
6023 evaluate expression for each incoming frame
6024 @end table
6025
6026 Default value is @samp{once}.
6027 @end table
6028
6029 The volume expression can contain the following parameters.
6030
6031 @table @option
6032 @item n
6033 frame number (starting at zero)
6034 @item nb_channels
6035 number of channels
6036 @item nb_consumed_samples
6037 number of samples consumed by the filter
6038 @item nb_samples
6039 number of samples in the current frame
6040 @item pos
6041 original frame position in the file
6042 @item pts
6043 frame PTS
6044 @item sample_rate
6045 sample rate
6046 @item startpts
6047 PTS at start of stream
6048 @item startt
6049 time at start of stream
6050 @item t
6051 frame time
6052 @item tb
6053 timestamp timebase
6054 @item volume
6055 last set volume value
6056 @end table
6057
6058 Note that when @option{eval} is set to @samp{once} only the
6059 @var{sample_rate} and @var{tb} variables are available, all other
6060 variables will evaluate to NAN.
6061
6062 @subsection Commands
6063
6064 This filter supports the following commands:
6065 @table @option
6066 @item volume
6067 Modify the volume expression.
6068 The command accepts the same syntax of the corresponding option.
6069
6070 If the specified expression is not valid, it is kept at its current
6071 value.
6072 @end table
6073
6074 @subsection Examples
6075
6076 @itemize
6077 @item
6078 Halve the input audio volume:
6079 @example
6080 volume=volume=0.5
6081 volume=volume=1/2
6082 volume=volume=-6.0206dB
6083 @end example
6084
6085 In all the above example the named key for @option{volume} can be
6086 omitted, for example like in:
6087 @example
6088 volume=0.5
6089 @end example
6090
6091 @item
6092 Increase input audio power by 6 decibels using fixed-point precision:
6093 @example
6094 volume=volume=6dB:precision=fixed
6095 @end example
6096
6097 @item
6098 Fade volume after time 10 with an annihilation period of 5 seconds:
6099 @example
6100 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
6101 @end example
6102 @end itemize
6103
6104 @section volumedetect
6105
6106 Detect the volume of the input video.
6107
6108 The filter has no parameters. The input is not modified. Statistics about
6109 the volume will be printed in the log when the input stream end is reached.
6110
6111 In particular it will show the mean volume (root mean square), maximum
6112 volume (on a per-sample basis), and the beginning of a histogram of the
6113 registered volume values (from the maximum value to a cumulated 1/1000 of
6114 the samples).
6115
6116 All volumes are in decibels relative to the maximum PCM value.
6117
6118 @subsection Examples
6119
6120 Here is an excerpt of the output:
6121 @example
6122 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
6123 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
6124 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
6125 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
6126 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
6127 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
6128 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
6129 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
6130 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
6131 @end example
6132
6133 It means that:
6134 @itemize
6135 @item
6136 The mean square energy is approximately -27 dB, or 10^-2.7.
6137 @item
6138 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
6139 @item
6140 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
6141 @end itemize
6142
6143 In other words, raising the volume by +4 dB does not cause any clipping,
6144 raising it by +5 dB causes clipping for 6 samples, etc.
6145
6146 @c man end AUDIO FILTERS
6147
6148 @chapter Audio Sources
6149 @c man begin AUDIO SOURCES
6150
6151 Below is a description of the currently available audio sources.
6152
6153 @section abuffer
6154
6155 Buffer audio frames, and make them available to the filter chain.
6156
6157 This source is mainly intended for a programmatic use, in particular
6158 through the interface defined in @file{libavfilter/buffersrc.h}.
6159
6160 It accepts the following parameters:
6161 @table @option
6162
6163 @item time_base
6164 The timebase which will be used for timestamps of submitted frames. It must be
6165 either a floating-point number or in @var{numerator}/@var{denominator} form.
6166
6167 @item sample_rate
6168 The sample rate of the incoming audio buffers.
6169
6170 @item sample_fmt
6171 The sample format of the incoming audio buffers.
6172 Either a sample format name or its corresponding integer representation from
6173 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
6174
6175 @item channel_layout
6176 The channel layout of the incoming audio buffers.
6177 Either a channel layout name from channel_layout_map in
6178 @file{libavutil/channel_layout.c} or its corresponding integer representation
6179 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
6180
6181 @item channels
6182 The number of channels of the incoming audio buffers.
6183 If both @var{channels} and @var{channel_layout} are specified, then they
6184 must be consistent.
6185
6186 @end table
6187
6188 @subsection Examples
6189
6190 @example
6191 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
6192 @end example
6193
6194 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
6195 Since the sample format with name "s16p" corresponds to the number
6196 6 and the "stereo" channel layout corresponds to the value 0x3, this is
6197 equivalent to:
6198 @example
6199 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
6200 @end example
6201
6202 @section aevalsrc
6203
6204 Generate an audio signal specified by an expression.
6205
6206 This source accepts in input one or more expressions (one for each
6207 channel), which are evaluated and used to generate a corresponding
6208 audio signal.
6209
6210 This source accepts the following options:
6211
6212 @table @option
6213 @item exprs
6214 Set the '|'-separated expressions list for each separate channel. In case the
6215 @option{channel_layout} option is not specified, the selected channel layout
6216 depends on the number of provided expressions. Otherwise the last
6217 specified expression is applied to the remaining output channels.
6218
6219 @item channel_layout, c
6220 Set the channel layout. The number of channels in the specified layout
6221 must be equal to the number of specified expressions.
6222
6223 @item duration, d
6224 Set the minimum duration of the sourced audio. See
6225 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6226 for the accepted syntax.
6227 Note that the resulting duration may be greater than the specified
6228 duration, as the generated audio is always cut at the end of a
6229 complete frame.
6230
6231 If not specified, or the expressed duration is negative, the audio is
6232 supposed to be generated forever.
6233
6234 @item nb_samples, n
6235 Set the number of samples per channel per each output frame,
6236 default to 1024.
6237
6238 @item sample_rate, s
6239 Specify the sample rate, default to 44100.
6240 @end table
6241
6242 Each expression in @var{exprs} can contain the following constants:
6243
6244 @table @option
6245 @item n
6246 number of the evaluated sample, starting from 0
6247
6248 @item t
6249 time of the evaluated sample expressed in seconds, starting from 0
6250
6251 @item s
6252 sample rate
6253
6254 @end table
6255
6256 @subsection Examples
6257
6258 @itemize
6259 @item
6260 Generate silence:
6261 @example
6262 aevalsrc=0
6263 @end example
6264
6265 @item
6266 Generate a sin signal with frequency of 440 Hz, set sample rate to
6267 8000 Hz:
6268 @example
6269 aevalsrc="sin(440*2*PI*t):s=8000"
6270 @end example
6271
6272 @item
6273 Generate a two channels signal, specify the channel layout (Front
6274 Center + Back Center) explicitly:
6275 @example
6276 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
6277 @end example
6278
6279 @item
6280 Generate white noise:
6281 @example
6282 aevalsrc="-2+random(0)"
6283 @end example
6284
6285 @item
6286 Generate an amplitude modulated signal:
6287 @example
6288 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
6289 @end example
6290
6291 @item
6292 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
6293 @example
6294 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
6295 @end example
6296
6297 @end itemize
6298
6299 @section afirsrc
6300
6301 Generate a FIR coefficients using frequency sampling method.
6302
6303 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6304
6305 The filter accepts the following options:
6306
6307 @table @option
6308 @item taps, t
6309 Set number of filter coefficents in output audio stream.
6310 Default value is 1025.
6311
6312 @item frequency, f
6313 Set frequency points from where magnitude and phase are set.
6314 This must be in non decreasing order, and first element must be 0, while last element
6315 must be 1. Elements are separated by white spaces.
6316
6317 @item magnitude, m
6318 Set magnitude value for every frequency point set by @option{frequency}.
6319 Number of values must be same as number of frequency points.
6320 Values are separated by white spaces.
6321
6322 @item phase, p
6323 Set phase value for every frequency point set by @option{frequency}.
6324 Number of values must be same as number of frequency points.
6325 Values are separated by white spaces.
6326
6327 @item sample_rate, r
6328 Set sample rate, default is 44100.
6329
6330 @item nb_samples, n
6331 Set number of samples per each frame. Default is 1024.
6332
6333 @item win_func, w
6334 Set window function. Default is blackman.
6335 @end table
6336
6337 @section anullsrc
6338
6339 The null audio source, return unprocessed audio frames. It is mainly useful
6340 as a template and to be employed in analysis / debugging tools, or as
6341 the source for filters which ignore the input data (for example the sox
6342 synth filter).
6343
6344 This source accepts the following options:
6345
6346 @table @option
6347
6348 @item channel_layout, cl
6349
6350 Specifies the channel layout, and can be either an integer or a string
6351 representing a channel layout. The default value of @var{channel_layout}
6352 is "stereo".
6353
6354 Check the channel_layout_map definition in
6355 @file{libavutil/channel_layout.c} for the mapping between strings and
6356 channel layout values.
6357
6358 @item sample_rate, r
6359 Specifies the sample rate, and defaults to 44100.
6360
6361 @item nb_samples, n
6362 Set the number of samples per requested frames.
6363
6364 @item duration, d
6365 Set the duration of the sourced audio. See
6366 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6367 for the accepted syntax.
6368
6369 If not specified, or the expressed duration is negative, the audio is
6370 supposed to be generated forever.
6371 @end table
6372
6373 @subsection Examples
6374
6375 @itemize
6376 @item
6377 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
6378 @example
6379 anullsrc=r=48000:cl=4
6380 @end example
6381
6382 @item
6383 Do the same operation with a more obvious syntax:
6384 @example
6385 anullsrc=r=48000:cl=mono
6386 @end example
6387 @end itemize
6388
6389 All the parameters need to be explicitly defined.
6390
6391 @section flite
6392
6393 Synthesize a voice utterance using the libflite library.
6394
6395 To enable compilation of this filter you need to configure FFmpeg with
6396 @code{--enable-libflite}.
6397
6398 Note that versions of the flite library prior to 2.0 are not thread-safe.
6399
6400 The filter accepts the following options:
6401
6402 @table @option
6403
6404 @item list_voices
6405 If set to 1, list the names of the available voices and exit
6406 immediately. Default value is 0.
6407
6408 @item nb_samples, n
6409 Set the maximum number of samples per frame. Default value is 512.
6410
6411 @item textfile
6412 Set the filename containing the text to speak.
6413
6414 @item text
6415 Set the text to speak.
6416
6417 @item voice, v
6418 Set the voice to use for the speech synthesis. Default value is
6419 @code{kal}. See also the @var{list_voices} option.
6420 @end table
6421
6422 @subsection Examples
6423
6424 @itemize
6425 @item
6426 Read from file @file{speech.txt}, and synthesize the text using the
6427 standard flite voice:
6428 @example
6429 flite=textfile=speech.txt
6430 @end example
6431
6432 @item
6433 Read the specified text selecting the @code{slt} voice:
6434 @example
6435 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6436 @end example
6437
6438 @item
6439 Input text to ffmpeg:
6440 @example
6441 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6442 @end example
6443
6444 @item
6445 Make @file{ffplay} speak the specified text, using @code{flite} and
6446 the @code{lavfi} device:
6447 @example
6448 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
6449 @end example
6450 @end itemize
6451
6452 For more information about libflite, check:
6453 @url{http://www.festvox.org/flite/}
6454
6455 @section anoisesrc
6456
6457 Generate a noise audio signal.
6458
6459 The filter accepts the following options:
6460
6461 @table @option
6462 @item sample_rate, r
6463 Specify the sample rate. Default value is 48000 Hz.
6464
6465 @item amplitude, a
6466 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
6467 is 1.0.
6468
6469 @item duration, d
6470 Specify the duration of the generated audio stream. Not specifying this option
6471 results in noise with an infinite length.
6472
6473 @item color, colour, c
6474 Specify the color of noise. Available noise colors are white, pink, brown,
6475 blue, violet and velvet. Default color is white.
6476
6477 @item seed, s
6478 Specify a value used to seed the PRNG.
6479
6480 @item nb_samples, n
6481 Set the number of samples per each output frame, default is 1024.
6482 @end table
6483
6484 @subsection Examples
6485
6486 @itemize
6487
6488 @item
6489 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
6490 @example
6491 anoisesrc=d=60:c=pink:r=44100:a=0.5
6492 @end example
6493 @end itemize
6494
6495 @section hilbert
6496
6497 Generate odd-tap Hilbert transform FIR coefficients.
6498
6499 The resulting stream can be used with @ref{afir} filter for phase-shifting
6500 the signal by 90 degrees.
6501
6502 This is used in many matrix coding schemes and for analytic signal generation.
6503 The process is often written as a multiplication by i (or j), the imaginary unit.
6504
6505 The filter accepts the following options:
6506
6507 @table @option
6508
6509 @item sample_rate, s
6510 Set sample rate, default is 44100.
6511
6512 @item taps, t
6513 Set length of FIR filter, default is 22051.
6514
6515 @item nb_samples, n
6516 Set number of samples per each frame.
6517
6518 @item win_func, w
6519 Set window function to be used when generating FIR coefficients.
6520 @end table
6521
6522 @section sinc
6523
6524 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
6525
6526 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6527
6528 The filter accepts the following options:
6529
6530 @table @option
6531 @item sample_rate, r
6532 Set sample rate, default is 44100.
6533
6534 @item nb_samples, n
6535 Set number of samples per each frame. Default is 1024.
6536
6537 @item hp
6538 Set high-pass frequency. Default is 0.
6539
6540 @item lp
6541 Set low-pass frequency. Default is 0.
6542 If high-pass frequency is lower than low-pass frequency and low-pass frequency
6543 is higher than 0 then filter will create band-pass filter coefficients,
6544 otherwise band-reject filter coefficients.
6545
6546 @item phase
6547 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
6548
6549 @item beta
6550 Set Kaiser window beta.
6551
6552 @item att
6553 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
6554
6555 @item round
6556 Enable rounding, by default is disabled.
6557
6558 @item hptaps
6559 Set number of taps for high-pass filter.
6560
6561 @item lptaps
6562 Set number of taps for low-pass filter.
6563 @end table
6564
6565 @section sine
6566
6567 Generate an audio signal made of a sine wave with amplitude 1/8.
6568
6569 The audio signal is bit-exact.
6570
6571 The filter accepts the following options:
6572
6573 @table @option
6574
6575 @item frequency, f
6576 Set the carrier frequency. Default is 440 Hz.
6577
6578 @item beep_factor, b
6579 Enable a periodic beep every second with frequency @var{beep_factor} times
6580 the carrier frequency. Default is 0, meaning the beep is disabled.
6581
6582 @item sample_rate, r
6583 Specify the sample rate, default is 44100.
6584
6585 @item duration, d
6586 Specify the duration of the generated audio stream.
6587
6588 @item samples_per_frame
6589 Set the number of samples per output frame.
6590
6591 The expression can contain the following constants:
6592
6593 @table @option
6594 @item n
6595 The (sequential) number of the output audio frame, starting from 0.
6596
6597 @item pts
6598 The PTS (Presentation TimeStamp) of the output audio frame,
6599 expressed in @var{TB} units.
6600
6601 @item t
6602 The PTS of the output audio frame, expressed in seconds.
6603
6604 @item TB
6605 The timebase of the output audio frames.
6606 @end table
6607
6608 Default is @code{1024}.
6609 @end table
6610
6611 @subsection Examples
6612
6613 @itemize
6614
6615 @item
6616 Generate a simple 440 Hz sine wave:
6617 @example
6618 sine
6619 @end example
6620
6621 @item
6622 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6623 @example
6624 sine=220:4:d=5
6625 sine=f=220:b=4:d=5
6626 sine=frequency=220:beep_factor=4:duration=5
6627 @end example
6628
6629 @item
6630 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6631 pattern:
6632 @example
6633 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6634 @end example
6635 @end itemize
6636
6637 @c man end AUDIO SOURCES
6638
6639 @chapter Audio Sinks
6640 @c man begin AUDIO SINKS
6641
6642 Below is a description of the currently available audio sinks.
6643
6644 @section abuffersink
6645
6646 Buffer audio frames, and make them available to the end of filter chain.
6647
6648 This sink is mainly intended for programmatic use, in particular
6649 through the interface defined in @file{libavfilter/buffersink.h}
6650 or the options system.
6651
6652 It accepts a pointer to an AVABufferSinkContext structure, which
6653 defines the incoming buffers' formats, to be passed as the opaque
6654 parameter to @code{avfilter_init_filter} for initialization.
6655 @section anullsink
6656
6657 Null audio sink; do absolutely nothing with the input audio. It is
6658 mainly useful as a template and for use in analysis / debugging
6659 tools.
6660
6661 @c man end AUDIO SINKS
6662
6663 @chapter Video Filters
6664 @c man begin VIDEO FILTERS
6665
6666 When you configure your FFmpeg build, you can disable any of the
6667 existing filters using @code{--disable-filters}.
6668 The configure output will show the video filters included in your
6669 build.
6670
6671 Below is a description of the currently available video filters.
6672
6673 @section addroi
6674
6675 Mark a region of interest in a video frame.
6676
6677 The frame data is passed through unchanged, but metadata is attached
6678 to the frame indicating regions of interest which can affect the
6679 behaviour of later encoding.  Multiple regions can be marked by
6680 applying the filter multiple times.
6681
6682 @table @option
6683 @item x
6684 Region distance in pixels from the left edge of the frame.
6685 @item y
6686 Region distance in pixels from the top edge of the frame.
6687 @item w
6688 Region width in pixels.
6689 @item h
6690 Region height in pixels.
6691
6692 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6693 and may contain the following variables:
6694 @table @option
6695 @item iw
6696 Width of the input frame.
6697 @item ih
6698 Height of the input frame.
6699 @end table
6700
6701 @item qoffset
6702 Quantisation offset to apply within the region.
6703
6704 This must be a real value in the range -1 to +1.  A value of zero
6705 indicates no quality change.  A negative value asks for better quality
6706 (less quantisation), while a positive value asks for worse quality
6707 (greater quantisation).
6708
6709 The range is calibrated so that the extreme values indicate the
6710 largest possible offset - if the rest of the frame is encoded with the
6711 worst possible quality, an offset of -1 indicates that this region
6712 should be encoded with the best possible quality anyway.  Intermediate
6713 values are then interpolated in some codec-dependent way.
6714
6715 For example, in 10-bit H.264 the quantisation parameter varies between
6716 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6717 this region should be encoded with a QP around one-tenth of the full
6718 range better than the rest of the frame.  So, if most of the frame
6719 were to be encoded with a QP of around 30, this region would get a QP
6720 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6721 An extreme value of -1 would indicate that this region should be
6722 encoded with the best possible quality regardless of the treatment of
6723 the rest of the frame - that is, should be encoded at a QP of -12.
6724 @item clear
6725 If set to true, remove any existing regions of interest marked on the
6726 frame before adding the new one.
6727 @end table
6728
6729 @subsection Examples
6730
6731 @itemize
6732 @item
6733 Mark the centre quarter of the frame as interesting.
6734 @example
6735 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6736 @end example
6737 @item
6738 Mark the 100-pixel-wide region on the left edge of the frame as very
6739 uninteresting (to be encoded at much lower quality than the rest of
6740 the frame).
6741 @example
6742 addroi=0:0:100:ih:+1/5
6743 @end example
6744 @end itemize
6745
6746 @section alphaextract
6747
6748 Extract the alpha component from the input as a grayscale video. This
6749 is especially useful with the @var{alphamerge} filter.
6750
6751 @section alphamerge
6752
6753 Add or replace the alpha component of the primary input with the
6754 grayscale value of a second input. This is intended for use with
6755 @var{alphaextract} to allow the transmission or storage of frame
6756 sequences that have alpha in a format that doesn't support an alpha
6757 channel.
6758
6759 For example, to reconstruct full frames from a normal YUV-encoded video
6760 and a separate video created with @var{alphaextract}, you might use:
6761 @example
6762 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6763 @end example
6764
6765 @section amplify
6766
6767 Amplify differences between current pixel and pixels of adjacent frames in
6768 same pixel location.
6769
6770 This filter accepts the following options:
6771
6772 @table @option
6773 @item radius
6774 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6775 For example radius of 3 will instruct filter to calculate average of 7 frames.
6776
6777 @item factor
6778 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6779
6780 @item threshold
6781 Set threshold for difference amplification. Any difference greater or equal to
6782 this value will not alter source pixel. Default is 10.
6783 Allowed range is from 0 to 65535.
6784
6785 @item tolerance
6786 Set tolerance for difference amplification. Any difference lower to
6787 this value will not alter source pixel. Default is 0.
6788 Allowed range is from 0 to 65535.
6789
6790 @item low
6791 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6792 This option controls maximum possible value that will decrease source pixel value.
6793
6794 @item high
6795 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6796 This option controls maximum possible value that will increase source pixel value.
6797
6798 @item planes
6799 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
6800 @end table
6801
6802 @subsection Commands
6803
6804 This filter supports the following @ref{commands} that corresponds to option of same name:
6805 @table @option
6806 @item factor
6807 @item threshold
6808 @item tolerance
6809 @item low
6810 @item high
6811 @item planes
6812 @end table
6813
6814 @section ass
6815
6816 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
6817 and libavformat to work. On the other hand, it is limited to ASS (Advanced
6818 Substation Alpha) subtitles files.
6819
6820 This filter accepts the following option in addition to the common options from
6821 the @ref{subtitles} filter:
6822
6823 @table @option
6824 @item shaping
6825 Set the shaping engine
6826
6827 Available values are:
6828 @table @samp
6829 @item auto
6830 The default libass shaping engine, which is the best available.
6831 @item simple
6832 Fast, font-agnostic shaper that can do only substitutions
6833 @item complex
6834 Slower shaper using OpenType for substitutions and positioning
6835 @end table
6836
6837 The default is @code{auto}.
6838 @end table
6839
6840 @section atadenoise
6841 Apply an Adaptive Temporal Averaging Denoiser to the video input.
6842
6843 The filter accepts the following options:
6844
6845 @table @option
6846 @item 0a
6847 Set threshold A for 1st plane. Default is 0.02.
6848 Valid range is 0 to 0.3.
6849
6850 @item 0b
6851 Set threshold B for 1st plane. Default is 0.04.
6852 Valid range is 0 to 5.
6853
6854 @item 1a
6855 Set threshold A for 2nd plane. Default is 0.02.
6856 Valid range is 0 to 0.3.
6857
6858 @item 1b
6859 Set threshold B for 2nd plane. Default is 0.04.
6860 Valid range is 0 to 5.
6861
6862 @item 2a
6863 Set threshold A for 3rd plane. Default is 0.02.
6864 Valid range is 0 to 0.3.
6865
6866 @item 2b
6867 Set threshold B for 3rd plane. Default is 0.04.
6868 Valid range is 0 to 5.
6869
6870 Threshold A is designed to react on abrupt changes in the input signal and
6871 threshold B is designed to react on continuous changes in the input signal.
6872
6873 @item s
6874 Set number of frames filter will use for averaging. Default is 9. Must be odd
6875 number in range [5, 129].
6876
6877 @item p
6878 Set what planes of frame filter will use for averaging. Default is all.
6879
6880 @item a
6881 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
6882 Alternatively can be set to @code{s} serial.
6883
6884 Parallel can be faster then serial, while other way around is never true.
6885 Parallel will abort early on first change being greater then thresholds, while serial
6886 will continue processing other side of frames if they are equal or below thresholds.
6887 @end table
6888
6889 @subsection Commands
6890 This filter supports same @ref{commands} as options except option @code{s}.
6891 The command accepts the same syntax of the corresponding option.
6892
6893 @section avgblur
6894
6895 Apply average blur filter.
6896
6897 The filter accepts the following options:
6898
6899 @table @option
6900 @item sizeX
6901 Set horizontal radius size.
6902
6903 @item planes
6904 Set which planes to filter. By default all planes are filtered.
6905
6906 @item sizeY
6907 Set vertical radius size, if zero it will be same as @code{sizeX}.
6908 Default is @code{0}.
6909 @end table
6910
6911 @subsection Commands
6912 This filter supports same commands as options.
6913 The command accepts the same syntax of the corresponding option.
6914
6915 If the specified expression is not valid, it is kept at its current
6916 value.
6917
6918 @section bbox
6919
6920 Compute the bounding box for the non-black pixels in the input frame
6921 luminance plane.
6922
6923 This filter computes the bounding box containing all the pixels with a
6924 luminance value greater than the minimum allowed value.
6925 The parameters describing the bounding box are printed on the filter
6926 log.
6927
6928 The filter accepts the following option:
6929
6930 @table @option
6931 @item min_val
6932 Set the minimal luminance value. Default is @code{16}.
6933 @end table
6934
6935 @section bilateral
6936 Apply bilateral filter, spatial smoothing while preserving edges.
6937
6938 The filter accepts the following options:
6939 @table @option
6940 @item sigmaS
6941 Set sigma of gaussian function to calculate spatial weight.
6942 Allowed range is 0 to 512. Default is 0.1.
6943
6944 @item sigmaR
6945 Set sigma of gaussian function to calculate range weight.
6946 Allowed range is 0 to 1. Default is 0.1.
6947
6948 @item planes
6949 Set planes to filter. Default is first only.
6950 @end table
6951
6952 @section bitplanenoise
6953
6954 Show and measure bit plane noise.
6955
6956 The filter accepts the following options:
6957
6958 @table @option
6959 @item bitplane
6960 Set which plane to analyze. Default is @code{1}.
6961
6962 @item filter
6963 Filter out noisy pixels from @code{bitplane} set above.
6964 Default is disabled.
6965 @end table
6966
6967 @section blackdetect
6968
6969 Detect video intervals that are (almost) completely black. Can be
6970 useful to detect chapter transitions, commercials, or invalid
6971 recordings.
6972
6973 The filter outputs its detection analysis to both the log as well as
6974 frame metadata. If a black segment of at least the specified minimum
6975 duration is found, a line with the start and end timestamps as well
6976 as duration is printed to the log with level @code{info}. In addition,
6977 a log line with level @code{debug} is printed per frame showing the
6978 black amount detected for that frame.
6979
6980 The filter also attaches metadata to the first frame of a black
6981 segment with key @code{lavfi.black_start} and to the first frame
6982 after the black segment ends with key @code{lavfi.black_end}. The
6983 value is the frame's timestamp. This metadata is added regardless
6984 of the minimum duration specified.
6985
6986 The filter accepts the following options:
6987
6988 @table @option
6989 @item black_min_duration, d
6990 Set the minimum detected black duration expressed in seconds. It must
6991 be a non-negative floating point number.
6992
6993 Default value is 2.0.
6994
6995 @item picture_black_ratio_th, pic_th
6996 Set the threshold for considering a picture "black".
6997 Express the minimum value for the ratio:
6998 @example
6999 @var{nb_black_pixels} / @var{nb_pixels}
7000 @end example
7001
7002 for which a picture is considered black.
7003 Default value is 0.98.
7004
7005 @item pixel_black_th, pix_th
7006 Set the threshold for considering a pixel "black".
7007
7008 The threshold expresses the maximum pixel luminance value for which a
7009 pixel is considered "black". The provided value is scaled according to
7010 the following equation:
7011 @example
7012 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
7013 @end example
7014
7015 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
7016 the input video format, the range is [0-255] for YUV full-range
7017 formats and [16-235] for YUV non full-range formats.
7018
7019 Default value is 0.10.
7020 @end table
7021
7022 The following example sets the maximum pixel threshold to the minimum
7023 value, and detects only black intervals of 2 or more seconds:
7024 @example
7025 blackdetect=d=2:pix_th=0.00
7026 @end example
7027
7028 @section blackframe
7029
7030 Detect frames that are (almost) completely black. Can be useful to
7031 detect chapter transitions or commercials. Output lines consist of
7032 the frame number of the detected frame, the percentage of blackness,
7033 the position in the file if known or -1 and the timestamp in seconds.
7034
7035 In order to display the output lines, you need to set the loglevel at
7036 least to the AV_LOG_INFO value.
7037
7038 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
7039 The value represents the percentage of pixels in the picture that
7040 are below the threshold value.
7041
7042 It accepts the following parameters:
7043
7044 @table @option
7045
7046 @item amount
7047 The percentage of the pixels that have to be below the threshold; it defaults to
7048 @code{98}.
7049
7050 @item threshold, thresh
7051 The threshold below which a pixel value is considered black; it defaults to
7052 @code{32}.
7053
7054 @end table
7055
7056 @anchor{blend}
7057 @section blend
7058
7059 Blend two video frames into each other.
7060
7061 The @code{blend} filter takes two input streams and outputs one
7062 stream, the first input is the "top" layer and second input is
7063 "bottom" layer.  By default, the output terminates when the longest input terminates.
7064
7065 The @code{tblend} (time blend) filter takes two consecutive frames
7066 from one single stream, and outputs the result obtained by blending
7067 the new frame on top of the old frame.
7068
7069 A description of the accepted options follows.
7070
7071 @table @option
7072 @item c0_mode
7073 @item c1_mode
7074 @item c2_mode
7075 @item c3_mode
7076 @item all_mode
7077 Set blend mode for specific pixel component or all pixel components in case
7078 of @var{all_mode}. Default value is @code{normal}.
7079
7080 Available values for component modes are:
7081 @table @samp
7082 @item addition
7083 @item grainmerge
7084 @item and
7085 @item average
7086 @item burn
7087 @item darken
7088 @item difference
7089 @item grainextract
7090 @item divide
7091 @item dodge
7092 @item freeze
7093 @item exclusion
7094 @item extremity
7095 @item glow
7096 @item hardlight
7097 @item hardmix
7098 @item heat
7099 @item lighten
7100 @item linearlight
7101 @item multiply
7102 @item multiply128
7103 @item negation
7104 @item normal
7105 @item or
7106 @item overlay
7107 @item phoenix
7108 @item pinlight
7109 @item reflect
7110 @item screen
7111 @item softlight
7112 @item subtract
7113 @item vividlight
7114 @item xor
7115 @end table
7116
7117 @item c0_opacity
7118 @item c1_opacity
7119 @item c2_opacity
7120 @item c3_opacity
7121 @item all_opacity
7122 Set blend opacity for specific pixel component or all pixel components in case
7123 of @var{all_opacity}. Only used in combination with pixel component blend modes.
7124
7125 @item c0_expr
7126 @item c1_expr
7127 @item c2_expr
7128 @item c3_expr
7129 @item all_expr
7130 Set blend expression for specific pixel component or all pixel components in case
7131 of @var{all_expr}. Note that related mode options will be ignored if those are set.
7132
7133 The expressions can use the following variables:
7134
7135 @table @option
7136 @item N
7137 The sequential number of the filtered frame, starting from @code{0}.
7138
7139 @item X
7140 @item Y
7141 the coordinates of the current sample
7142
7143 @item W
7144 @item H
7145 the width and height of currently filtered plane
7146
7147 @item SW
7148 @item SH
7149 Width and height scale for the plane being filtered. It is the
7150 ratio between the dimensions of the current plane to the luma plane,
7151 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
7152 the luma plane and @code{0.5,0.5} for the chroma planes.
7153
7154 @item T
7155 Time of the current frame, expressed in seconds.
7156
7157 @item TOP, A
7158 Value of pixel component at current location for first video frame (top layer).
7159
7160 @item BOTTOM, B
7161 Value of pixel component at current location for second video frame (bottom layer).
7162 @end table
7163 @end table
7164
7165 The @code{blend} filter also supports the @ref{framesync} options.
7166
7167 @subsection Examples
7168
7169 @itemize
7170 @item
7171 Apply transition from bottom layer to top layer in first 10 seconds:
7172 @example
7173 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
7174 @end example
7175
7176 @item
7177 Apply linear horizontal transition from top layer to bottom layer:
7178 @example
7179 blend=all_expr='A*(X/W)+B*(1-X/W)'
7180 @end example
7181
7182 @item
7183 Apply 1x1 checkerboard effect:
7184 @example
7185 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
7186 @end example
7187
7188 @item
7189 Apply uncover left effect:
7190 @example
7191 blend=all_expr='if(gte(N*SW+X,W),A,B)'
7192 @end example
7193
7194 @item
7195 Apply uncover down effect:
7196 @example
7197 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
7198 @end example
7199
7200 @item
7201 Apply uncover up-left effect:
7202 @example
7203 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
7204 @end example
7205
7206 @item
7207 Split diagonally video and shows top and bottom layer on each side:
7208 @example
7209 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
7210 @end example
7211
7212 @item
7213 Display differences between the current and the previous frame:
7214 @example
7215 tblend=all_mode=grainextract
7216 @end example
7217 @end itemize
7218
7219 @section bm3d
7220
7221 Denoise frames using Block-Matching 3D algorithm.
7222
7223 The filter accepts the following options.
7224
7225 @table @option
7226 @item sigma
7227 Set denoising strength. Default value is 1.
7228 Allowed range is from 0 to 999.9.
7229 The denoising algorithm is very sensitive to sigma, so adjust it
7230 according to the source.
7231
7232 @item block
7233 Set local patch size. This sets dimensions in 2D.
7234
7235 @item bstep
7236 Set sliding step for processing blocks. Default value is 4.
7237 Allowed range is from 1 to 64.
7238 Smaller values allows processing more reference blocks and is slower.
7239
7240 @item group
7241 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
7242 When set to 1, no block matching is done. Larger values allows more blocks
7243 in single group.
7244 Allowed range is from 1 to 256.
7245
7246 @item range
7247 Set radius for search block matching. Default is 9.
7248 Allowed range is from 1 to INT32_MAX.
7249
7250 @item mstep
7251 Set step between two search locations for block matching. Default is 1.
7252 Allowed range is from 1 to 64. Smaller is slower.
7253
7254 @item thmse
7255 Set threshold of mean square error for block matching. Valid range is 0 to
7256 INT32_MAX.
7257
7258 @item hdthr
7259 Set thresholding parameter for hard thresholding in 3D transformed domain.
7260 Larger values results in stronger hard-thresholding filtering in frequency
7261 domain.
7262
7263 @item estim
7264 Set filtering estimation mode. Can be @code{basic} or @code{final}.
7265 Default is @code{basic}.
7266
7267 @item ref
7268 If enabled, filter will use 2nd stream for block matching.
7269 Default is disabled for @code{basic} value of @var{estim} option,
7270 and always enabled if value of @var{estim} is @code{final}.
7271
7272 @item planes
7273 Set planes to filter. Default is all available except alpha.
7274 @end table
7275
7276 @subsection Examples
7277
7278 @itemize
7279 @item
7280 Basic filtering with bm3d:
7281 @example
7282 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
7283 @end example
7284
7285 @item
7286 Same as above, but filtering only luma:
7287 @example
7288 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
7289 @end example
7290
7291 @item
7292 Same as above, but with both estimation modes:
7293 @example
7294 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
7295 @end example
7296
7297 @item
7298 Same as above, but prefilter with @ref{nlmeans} filter instead:
7299 @example
7300 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
7301 @end example
7302 @end itemize
7303
7304 @section boxblur
7305
7306 Apply a boxblur algorithm to the input video.
7307
7308 It accepts the following parameters:
7309
7310 @table @option
7311
7312 @item luma_radius, lr
7313 @item luma_power, lp
7314 @item chroma_radius, cr
7315 @item chroma_power, cp
7316 @item alpha_radius, ar
7317 @item alpha_power, ap
7318
7319 @end table
7320
7321 A description of the accepted options follows.
7322
7323 @table @option
7324 @item luma_radius, lr
7325 @item chroma_radius, cr
7326 @item alpha_radius, ar
7327 Set an expression for the box radius in pixels used for blurring the
7328 corresponding input plane.
7329
7330 The radius value must be a non-negative number, and must not be
7331 greater than the value of the expression @code{min(w,h)/2} for the
7332 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
7333 planes.
7334
7335 Default value for @option{luma_radius} is "2". If not specified,
7336 @option{chroma_radius} and @option{alpha_radius} default to the
7337 corresponding value set for @option{luma_radius}.
7338
7339 The expressions can contain the following constants:
7340 @table @option
7341 @item w
7342 @item h
7343 The input width and height in pixels.
7344
7345 @item cw
7346 @item ch
7347 The input chroma image width and height in pixels.
7348
7349 @item hsub
7350 @item vsub
7351 The horizontal and vertical chroma subsample values. For example, for the
7352 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
7353 @end table
7354
7355 @item luma_power, lp
7356 @item chroma_power, cp
7357 @item alpha_power, ap
7358 Specify how many times the boxblur filter is applied to the
7359 corresponding plane.
7360
7361 Default value for @option{luma_power} is 2. If not specified,
7362 @option{chroma_power} and @option{alpha_power} default to the
7363 corresponding value set for @option{luma_power}.
7364
7365 A value of 0 will disable the effect.
7366 @end table
7367
7368 @subsection Examples
7369
7370 @itemize
7371 @item
7372 Apply a boxblur filter with the luma, chroma, and alpha radii
7373 set to 2:
7374 @example
7375 boxblur=luma_radius=2:luma_power=1
7376 boxblur=2:1
7377 @end example
7378
7379 @item
7380 Set the luma radius to 2, and alpha and chroma radius to 0:
7381 @example
7382 boxblur=2:1:cr=0:ar=0
7383 @end example
7384
7385 @item
7386 Set the luma and chroma radii to a fraction of the video dimension:
7387 @example
7388 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
7389 @end example
7390 @end itemize
7391
7392 @section bwdif
7393
7394 Deinterlace the input video ("bwdif" stands for "Bob Weaver
7395 Deinterlacing Filter").
7396
7397 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
7398 interpolation algorithms.
7399 It accepts the following parameters:
7400
7401 @table @option
7402 @item mode
7403 The interlacing mode to adopt. It accepts one of the following values:
7404
7405 @table @option
7406 @item 0, send_frame
7407 Output one frame for each frame.
7408 @item 1, send_field
7409 Output one frame for each field.
7410 @end table
7411
7412 The default value is @code{send_field}.
7413
7414 @item parity
7415 The picture field parity assumed for the input interlaced video. It accepts one
7416 of the following values:
7417
7418 @table @option
7419 @item 0, tff
7420 Assume the top field is first.
7421 @item 1, bff
7422 Assume the bottom field is first.
7423 @item -1, auto
7424 Enable automatic detection of field parity.
7425 @end table
7426
7427 The default value is @code{auto}.
7428 If the interlacing is unknown or the decoder does not export this information,
7429 top field first will be assumed.
7430
7431 @item deint
7432 Specify which frames to deinterlace. Accepts one of the following
7433 values:
7434
7435 @table @option
7436 @item 0, all
7437 Deinterlace all frames.
7438 @item 1, interlaced
7439 Only deinterlace frames marked as interlaced.
7440 @end table
7441
7442 The default value is @code{all}.
7443 @end table
7444
7445 @section cas
7446
7447 Apply Contrast Adaptive Sharpen filter to video stream.
7448
7449 The filter accepts the following options:
7450
7451 @table @option
7452 @item strength
7453 Set the sharpening strength. Default value is 0.
7454
7455 @item planes
7456 Set planes to filter. Default value is to filter all
7457 planes except alpha plane.
7458 @end table
7459
7460 @section chromahold
7461 Remove all color information for all colors except for certain one.
7462
7463 The filter accepts the following options:
7464
7465 @table @option
7466 @item color
7467 The color which will not be replaced with neutral chroma.
7468
7469 @item similarity
7470 Similarity percentage with the above color.
7471 0.01 matches only the exact key color, while 1.0 matches everything.
7472
7473 @item blend
7474 Blend percentage.
7475 0.0 makes pixels either fully gray, or not gray at all.
7476 Higher values result in more preserved color.
7477
7478 @item yuv
7479 Signals that the color passed is already in YUV instead of RGB.
7480
7481 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7482 This can be used to pass exact YUV values as hexadecimal numbers.
7483 @end table
7484
7485 @subsection Commands
7486 This filter supports same @ref{commands} as options.
7487 The command accepts the same syntax of the corresponding option.
7488
7489 If the specified expression is not valid, it is kept at its current
7490 value.
7491
7492 @section chromakey
7493 YUV colorspace color/chroma keying.
7494
7495 The filter accepts the following options:
7496
7497 @table @option
7498 @item color
7499 The color which will be replaced with transparency.
7500
7501 @item similarity
7502 Similarity percentage with the key color.
7503
7504 0.01 matches only the exact key color, while 1.0 matches everything.
7505
7506 @item blend
7507 Blend percentage.
7508
7509 0.0 makes pixels either fully transparent, or not transparent at all.
7510
7511 Higher values result in semi-transparent pixels, with a higher transparency
7512 the more similar the pixels color is to the key color.
7513
7514 @item yuv
7515 Signals that the color passed is already in YUV instead of RGB.
7516
7517 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7518 This can be used to pass exact YUV values as hexadecimal numbers.
7519 @end table
7520
7521 @subsection Commands
7522 This filter supports same @ref{commands} as options.
7523 The command accepts the same syntax of the corresponding option.
7524
7525 If the specified expression is not valid, it is kept at its current
7526 value.
7527
7528 @subsection Examples
7529
7530 @itemize
7531 @item
7532 Make every green pixel in the input image transparent:
7533 @example
7534 ffmpeg -i input.png -vf chromakey=green out.png
7535 @end example
7536
7537 @item
7538 Overlay a greenscreen-video on top of a static black background.
7539 @example
7540 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
7541 @end example
7542 @end itemize
7543
7544 @section chromanr
7545 Reduce chrominance noise.
7546
7547 The filter accepts the following options:
7548
7549 @table @option
7550 @item thres
7551 Set threshold for averaging chrominance values.
7552 Sum of absolute difference of U and V pixel components or current
7553 pixel and neighbour pixels lower than this threshold will be used in
7554 averaging. Luma component is left unchanged and is copied to output.
7555 Default value is 30. Allowed range is from 1 to 200.
7556
7557 @item sizew
7558 Set horizontal radius of rectangle used for averaging.
7559 Allowed range is from 1 to 100. Default value is 5.
7560
7561 @item sizeh
7562 Set vertical radius of rectangle used for averaging.
7563 Allowed range is from 1 to 100. Default value is 5.
7564
7565 @item stepw
7566 Set horizontal step when averaging. Default value is 1.
7567 Allowed range is from 1 to 50.
7568 Mostly useful to speed-up filtering.
7569
7570 @item steph
7571 Set vertical step when averaging. Default value is 1.
7572 Allowed range is from 1 to 50.
7573 Mostly useful to speed-up filtering.
7574 @end table
7575
7576 @subsection Commands
7577 This filter supports same @ref{commands} as options.
7578 The command accepts the same syntax of the corresponding option.
7579
7580 @section chromashift
7581 Shift chroma pixels horizontally and/or vertically.
7582
7583 The filter accepts the following options:
7584 @table @option
7585 @item cbh
7586 Set amount to shift chroma-blue horizontally.
7587 @item cbv
7588 Set amount to shift chroma-blue vertically.
7589 @item crh
7590 Set amount to shift chroma-red horizontally.
7591 @item crv
7592 Set amount to shift chroma-red vertically.
7593 @item edge
7594 Set edge mode, can be @var{smear}, default, or @var{warp}.
7595 @end table
7596
7597 @subsection Commands
7598
7599 This filter supports the all above options as @ref{commands}.
7600
7601 @section ciescope
7602
7603 Display CIE color diagram with pixels overlaid onto it.
7604
7605 The filter accepts the following options:
7606
7607 @table @option
7608 @item system
7609 Set color system.
7610
7611 @table @samp
7612 @item ntsc, 470m
7613 @item ebu, 470bg
7614 @item smpte
7615 @item 240m
7616 @item apple
7617 @item widergb
7618 @item cie1931
7619 @item rec709, hdtv
7620 @item uhdtv, rec2020
7621 @item dcip3
7622 @end table
7623
7624 @item cie
7625 Set CIE system.
7626
7627 @table @samp
7628 @item xyy
7629 @item ucs
7630 @item luv
7631 @end table
7632
7633 @item gamuts
7634 Set what gamuts to draw.
7635
7636 See @code{system} option for available values.
7637
7638 @item size, s
7639 Set ciescope size, by default set to 512.
7640
7641 @item intensity, i
7642 Set intensity used to map input pixel values to CIE diagram.
7643
7644 @item contrast
7645 Set contrast used to draw tongue colors that are out of active color system gamut.
7646
7647 @item corrgamma
7648 Correct gamma displayed on scope, by default enabled.
7649
7650 @item showwhite
7651 Show white point on CIE diagram, by default disabled.
7652
7653 @item gamma
7654 Set input gamma. Used only with XYZ input color space.
7655 @end table
7656
7657 @section codecview
7658
7659 Visualize information exported by some codecs.
7660
7661 Some codecs can export information through frames using side-data or other
7662 means. For example, some MPEG based codecs export motion vectors through the
7663 @var{export_mvs} flag in the codec @option{flags2} option.
7664
7665 The filter accepts the following option:
7666
7667 @table @option
7668 @item mv
7669 Set motion vectors to visualize.
7670
7671 Available flags for @var{mv} are:
7672
7673 @table @samp
7674 @item pf
7675 forward predicted MVs of P-frames
7676 @item bf
7677 forward predicted MVs of B-frames
7678 @item bb
7679 backward predicted MVs of B-frames
7680 @end table
7681
7682 @item qp
7683 Display quantization parameters using the chroma planes.
7684
7685 @item mv_type, mvt
7686 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7687
7688 Available flags for @var{mv_type} are:
7689
7690 @table @samp
7691 @item fp
7692 forward predicted MVs
7693 @item bp
7694 backward predicted MVs
7695 @end table
7696
7697 @item frame_type, ft
7698 Set frame type to visualize motion vectors of.
7699
7700 Available flags for @var{frame_type} are:
7701
7702 @table @samp
7703 @item if
7704 intra-coded frames (I-frames)
7705 @item pf
7706 predicted frames (P-frames)
7707 @item bf
7708 bi-directionally predicted frames (B-frames)
7709 @end table
7710 @end table
7711
7712 @subsection Examples
7713
7714 @itemize
7715 @item
7716 Visualize forward predicted MVs of all frames using @command{ffplay}:
7717 @example
7718 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7719 @end example
7720
7721 @item
7722 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7723 @example
7724 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7725 @end example
7726 @end itemize
7727
7728 @section colorbalance
7729 Modify intensity of primary colors (red, green and blue) of input frames.
7730
7731 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7732 regions for the red-cyan, green-magenta or blue-yellow balance.
7733
7734 A positive adjustment value shifts the balance towards the primary color, a negative
7735 value towards the complementary color.
7736
7737 The filter accepts the following options:
7738
7739 @table @option
7740 @item rs
7741 @item gs
7742 @item bs
7743 Adjust red, green and blue shadows (darkest pixels).
7744
7745 @item rm
7746 @item gm
7747 @item bm
7748 Adjust red, green and blue midtones (medium pixels).
7749
7750 @item rh
7751 @item gh
7752 @item bh
7753 Adjust red, green and blue highlights (brightest pixels).
7754
7755 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7756
7757 @item pl
7758 Preserve lightness when changing color balance. Default is disabled.
7759 @end table
7760
7761 @subsection Examples
7762
7763 @itemize
7764 @item
7765 Add red color cast to shadows:
7766 @example
7767 colorbalance=rs=.3
7768 @end example
7769 @end itemize
7770
7771 @subsection Commands
7772
7773 This filter supports the all above options as @ref{commands}.
7774
7775 @section colorchannelmixer
7776
7777 Adjust video input frames by re-mixing color channels.
7778
7779 This filter modifies a color channel by adding the values associated to
7780 the other channels of the same pixels. For example if the value to
7781 modify is red, the output value will be:
7782 @example
7783 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7784 @end example
7785
7786 The filter accepts the following options:
7787
7788 @table @option
7789 @item rr
7790 @item rg
7791 @item rb
7792 @item ra
7793 Adjust contribution of input red, green, blue and alpha channels for output red channel.
7794 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
7795
7796 @item gr
7797 @item gg
7798 @item gb
7799 @item ga
7800 Adjust contribution of input red, green, blue and alpha channels for output green channel.
7801 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
7802
7803 @item br
7804 @item bg
7805 @item bb
7806 @item ba
7807 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
7808 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
7809
7810 @item ar
7811 @item ag
7812 @item ab
7813 @item aa
7814 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
7815 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
7816
7817 Allowed ranges for options are @code{[-2.0, 2.0]}.
7818 @end table
7819
7820 @subsection Examples
7821
7822 @itemize
7823 @item
7824 Convert source to grayscale:
7825 @example
7826 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
7827 @end example
7828 @item
7829 Simulate sepia tones:
7830 @example
7831 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
7832 @end example
7833 @end itemize
7834
7835 @subsection Commands
7836
7837 This filter supports the all above options as @ref{commands}.
7838
7839 @section colorkey
7840 RGB colorspace color keying.
7841
7842 The filter accepts the following options:
7843
7844 @table @option
7845 @item color
7846 The color which will be replaced with transparency.
7847
7848 @item similarity
7849 Similarity percentage with the key color.
7850
7851 0.01 matches only the exact key color, while 1.0 matches everything.
7852
7853 @item blend
7854 Blend percentage.
7855
7856 0.0 makes pixels either fully transparent, or not transparent at all.
7857
7858 Higher values result in semi-transparent pixels, with a higher transparency
7859 the more similar the pixels color is to the key color.
7860 @end table
7861
7862 @subsection Examples
7863
7864 @itemize
7865 @item
7866 Make every green pixel in the input image transparent:
7867 @example
7868 ffmpeg -i input.png -vf colorkey=green out.png
7869 @end example
7870
7871 @item
7872 Overlay a greenscreen-video on top of a static background image.
7873 @example
7874 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
7875 @end example
7876 @end itemize
7877
7878 @subsection Commands
7879 This filter supports same @ref{commands} as options.
7880 The command accepts the same syntax of the corresponding option.
7881
7882 If the specified expression is not valid, it is kept at its current
7883 value.
7884
7885 @section colorhold
7886 Remove all color information for all RGB colors except for certain one.
7887
7888 The filter accepts the following options:
7889
7890 @table @option
7891 @item color
7892 The color which will not be replaced with neutral gray.
7893
7894 @item similarity
7895 Similarity percentage with the above color.
7896 0.01 matches only the exact key color, while 1.0 matches everything.
7897
7898 @item blend
7899 Blend percentage. 0.0 makes pixels fully gray.
7900 Higher values result in more preserved color.
7901 @end table
7902
7903 @subsection Commands
7904 This filter supports same @ref{commands} as options.
7905 The command accepts the same syntax of the corresponding option.
7906
7907 If the specified expression is not valid, it is kept at its current
7908 value.
7909
7910 @section colorlevels
7911
7912 Adjust video input frames using levels.
7913
7914 The filter accepts the following options:
7915
7916 @table @option
7917 @item rimin
7918 @item gimin
7919 @item bimin
7920 @item aimin
7921 Adjust red, green, blue and alpha input black point.
7922 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7923
7924 @item rimax
7925 @item gimax
7926 @item bimax
7927 @item aimax
7928 Adjust red, green, blue and alpha input white point.
7929 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
7930
7931 Input levels are used to lighten highlights (bright tones), darken shadows
7932 (dark tones), change the balance of bright and dark tones.
7933
7934 @item romin
7935 @item gomin
7936 @item bomin
7937 @item aomin
7938 Adjust red, green, blue and alpha output black point.
7939 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
7940
7941 @item romax
7942 @item gomax
7943 @item bomax
7944 @item aomax
7945 Adjust red, green, blue and alpha output white point.
7946 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
7947
7948 Output levels allows manual selection of a constrained output level range.
7949 @end table
7950
7951 @subsection Examples
7952
7953 @itemize
7954 @item
7955 Make video output darker:
7956 @example
7957 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
7958 @end example
7959
7960 @item
7961 Increase contrast:
7962 @example
7963 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
7964 @end example
7965
7966 @item
7967 Make video output lighter:
7968 @example
7969 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
7970 @end example
7971
7972 @item
7973 Increase brightness:
7974 @example
7975 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
7976 @end example
7977 @end itemize
7978
7979 @subsection Commands
7980
7981 This filter supports the all above options as @ref{commands}.
7982
7983 @section colormatrix
7984
7985 Convert color matrix.
7986
7987 The filter accepts the following options:
7988
7989 @table @option
7990 @item src
7991 @item dst
7992 Specify the source and destination color matrix. Both values must be
7993 specified.
7994
7995 The accepted values are:
7996 @table @samp
7997 @item bt709
7998 BT.709
7999
8000 @item fcc
8001 FCC
8002
8003 @item bt601
8004 BT.601
8005
8006 @item bt470
8007 BT.470
8008
8009 @item bt470bg
8010 BT.470BG
8011
8012 @item smpte170m
8013 SMPTE-170M
8014
8015 @item smpte240m
8016 SMPTE-240M
8017
8018 @item bt2020
8019 BT.2020
8020 @end table
8021 @end table
8022
8023 For example to convert from BT.601 to SMPTE-240M, use the command:
8024 @example
8025 colormatrix=bt601:smpte240m
8026 @end example
8027
8028 @section colorspace
8029
8030 Convert colorspace, transfer characteristics or color primaries.
8031 Input video needs to have an even size.
8032
8033 The filter accepts the following options:
8034
8035 @table @option
8036 @anchor{all}
8037 @item all
8038 Specify all color properties at once.
8039
8040 The accepted values are:
8041 @table @samp
8042 @item bt470m
8043 BT.470M
8044
8045 @item bt470bg
8046 BT.470BG
8047
8048 @item bt601-6-525
8049 BT.601-6 525
8050
8051 @item bt601-6-625
8052 BT.601-6 625
8053
8054 @item bt709
8055 BT.709
8056
8057 @item smpte170m
8058 SMPTE-170M
8059
8060 @item smpte240m
8061 SMPTE-240M
8062
8063 @item bt2020
8064 BT.2020
8065
8066 @end table
8067
8068 @anchor{space}
8069 @item space
8070 Specify output colorspace.
8071
8072 The accepted values are:
8073 @table @samp
8074 @item bt709
8075 BT.709
8076
8077 @item fcc
8078 FCC
8079
8080 @item bt470bg
8081 BT.470BG or BT.601-6 625
8082
8083 @item smpte170m
8084 SMPTE-170M or BT.601-6 525
8085
8086 @item smpte240m
8087 SMPTE-240M
8088
8089 @item ycgco
8090 YCgCo
8091
8092 @item bt2020ncl
8093 BT.2020 with non-constant luminance
8094
8095 @end table
8096
8097 @anchor{trc}
8098 @item trc
8099 Specify output transfer characteristics.
8100
8101 The accepted values are:
8102 @table @samp
8103 @item bt709
8104 BT.709
8105
8106 @item bt470m
8107 BT.470M
8108
8109 @item bt470bg
8110 BT.470BG
8111
8112 @item gamma22
8113 Constant gamma of 2.2
8114
8115 @item gamma28
8116 Constant gamma of 2.8
8117
8118 @item smpte170m
8119 SMPTE-170M, BT.601-6 625 or BT.601-6 525
8120
8121 @item smpte240m
8122 SMPTE-240M
8123
8124 @item srgb
8125 SRGB
8126
8127 @item iec61966-2-1
8128 iec61966-2-1
8129
8130 @item iec61966-2-4
8131 iec61966-2-4
8132
8133 @item xvycc
8134 xvycc
8135
8136 @item bt2020-10
8137 BT.2020 for 10-bits content
8138
8139 @item bt2020-12
8140 BT.2020 for 12-bits content
8141
8142 @end table
8143
8144 @anchor{primaries}
8145 @item primaries
8146 Specify output color primaries.
8147
8148 The accepted values are:
8149 @table @samp
8150 @item bt709
8151 BT.709
8152
8153 @item bt470m
8154 BT.470M
8155
8156 @item bt470bg
8157 BT.470BG or BT.601-6 625
8158
8159 @item smpte170m
8160 SMPTE-170M or BT.601-6 525
8161
8162 @item smpte240m
8163 SMPTE-240M
8164
8165 @item film
8166 film
8167
8168 @item smpte431
8169 SMPTE-431
8170
8171 @item smpte432
8172 SMPTE-432
8173
8174 @item bt2020
8175 BT.2020
8176
8177 @item jedec-p22
8178 JEDEC P22 phosphors
8179
8180 @end table
8181
8182 @anchor{range}
8183 @item range
8184 Specify output color range.
8185
8186 The accepted values are:
8187 @table @samp
8188 @item tv
8189 TV (restricted) range
8190
8191 @item mpeg
8192 MPEG (restricted) range
8193
8194 @item pc
8195 PC (full) range
8196
8197 @item jpeg
8198 JPEG (full) range
8199
8200 @end table
8201
8202 @item format
8203 Specify output color format.
8204
8205 The accepted values are:
8206 @table @samp
8207 @item yuv420p
8208 YUV 4:2:0 planar 8-bits
8209
8210 @item yuv420p10
8211 YUV 4:2:0 planar 10-bits
8212
8213 @item yuv420p12
8214 YUV 4:2:0 planar 12-bits
8215
8216 @item yuv422p
8217 YUV 4:2:2 planar 8-bits
8218
8219 @item yuv422p10
8220 YUV 4:2:2 planar 10-bits
8221
8222 @item yuv422p12
8223 YUV 4:2:2 planar 12-bits
8224
8225 @item yuv444p
8226 YUV 4:4:4 planar 8-bits
8227
8228 @item yuv444p10
8229 YUV 4:4:4 planar 10-bits
8230
8231 @item yuv444p12
8232 YUV 4:4:4 planar 12-bits
8233
8234 @end table
8235
8236 @item fast
8237 Do a fast conversion, which skips gamma/primary correction. This will take
8238 significantly less CPU, but will be mathematically incorrect. To get output
8239 compatible with that produced by the colormatrix filter, use fast=1.
8240
8241 @item dither
8242 Specify dithering mode.
8243
8244 The accepted values are:
8245 @table @samp
8246 @item none
8247 No dithering
8248
8249 @item fsb
8250 Floyd-Steinberg dithering
8251 @end table
8252
8253 @item wpadapt
8254 Whitepoint adaptation mode.
8255
8256 The accepted values are:
8257 @table @samp
8258 @item bradford
8259 Bradford whitepoint adaptation
8260
8261 @item vonkries
8262 von Kries whitepoint adaptation
8263
8264 @item identity
8265 identity whitepoint adaptation (i.e. no whitepoint adaptation)
8266 @end table
8267
8268 @item iall
8269 Override all input properties at once. Same accepted values as @ref{all}.
8270
8271 @item ispace
8272 Override input colorspace. Same accepted values as @ref{space}.
8273
8274 @item iprimaries
8275 Override input color primaries. Same accepted values as @ref{primaries}.
8276
8277 @item itrc
8278 Override input transfer characteristics. Same accepted values as @ref{trc}.
8279
8280 @item irange
8281 Override input color range. Same accepted values as @ref{range}.
8282
8283 @end table
8284
8285 The filter converts the transfer characteristics, color space and color
8286 primaries to the specified user values. The output value, if not specified,
8287 is set to a default value based on the "all" property. If that property is
8288 also not specified, the filter will log an error. The output color range and
8289 format default to the same value as the input color range and format. The
8290 input transfer characteristics, color space, color primaries and color range
8291 should be set on the input data. If any of these are missing, the filter will
8292 log an error and no conversion will take place.
8293
8294 For example to convert the input to SMPTE-240M, use the command:
8295 @example
8296 colorspace=smpte240m
8297 @end example
8298
8299 @section convolution
8300
8301 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
8302
8303 The filter accepts the following options:
8304
8305 @table @option
8306 @item 0m
8307 @item 1m
8308 @item 2m
8309 @item 3m
8310 Set matrix for each plane.
8311 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
8312 and from 1 to 49 odd number of signed integers in @var{row} mode.
8313
8314 @item 0rdiv
8315 @item 1rdiv
8316 @item 2rdiv
8317 @item 3rdiv
8318 Set multiplier for calculated value for each plane.
8319 If unset or 0, it will be sum of all matrix elements.
8320
8321 @item 0bias
8322 @item 1bias
8323 @item 2bias
8324 @item 3bias
8325 Set bias for each plane. This value is added to the result of the multiplication.
8326 Useful for making the overall image brighter or darker. Default is 0.0.
8327
8328 @item 0mode
8329 @item 1mode
8330 @item 2mode
8331 @item 3mode
8332 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
8333 Default is @var{square}.
8334 @end table
8335
8336 @subsection Examples
8337
8338 @itemize
8339 @item
8340 Apply sharpen:
8341 @example
8342 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"
8343 @end example
8344
8345 @item
8346 Apply blur:
8347 @example
8348 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"
8349 @end example
8350
8351 @item
8352 Apply edge enhance:
8353 @example
8354 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"
8355 @end example
8356
8357 @item
8358 Apply edge detect:
8359 @example
8360 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"
8361 @end example
8362
8363 @item
8364 Apply laplacian edge detector which includes diagonals:
8365 @example
8366 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"
8367 @end example
8368
8369 @item
8370 Apply emboss:
8371 @example
8372 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"
8373 @end example
8374 @end itemize
8375
8376 @section convolve
8377
8378 Apply 2D convolution of video stream in frequency domain using second stream
8379 as impulse.
8380
8381 The filter accepts the following options:
8382
8383 @table @option
8384 @item planes
8385 Set which planes to process.
8386
8387 @item impulse
8388 Set which impulse video frames will be processed, can be @var{first}
8389 or @var{all}. Default is @var{all}.
8390 @end table
8391
8392 The @code{convolve} filter also supports the @ref{framesync} options.
8393
8394 @section copy
8395
8396 Copy the input video source unchanged to the output. This is mainly useful for
8397 testing purposes.
8398
8399 @anchor{coreimage}
8400 @section coreimage
8401 Video filtering on GPU using Apple's CoreImage API on OSX.
8402
8403 Hardware acceleration is based on an OpenGL context. Usually, this means it is
8404 processed by video hardware. However, software-based OpenGL implementations
8405 exist which means there is no guarantee for hardware processing. It depends on
8406 the respective OSX.
8407
8408 There are many filters and image generators provided by Apple that come with a
8409 large variety of options. The filter has to be referenced by its name along
8410 with its options.
8411
8412 The coreimage filter accepts the following options:
8413 @table @option
8414 @item list_filters
8415 List all available filters and generators along with all their respective
8416 options as well as possible minimum and maximum values along with the default
8417 values.
8418 @example
8419 list_filters=true
8420 @end example
8421
8422 @item filter
8423 Specify all filters by their respective name and options.
8424 Use @var{list_filters} to determine all valid filter names and options.
8425 Numerical options are specified by a float value and are automatically clamped
8426 to their respective value range.  Vector and color options have to be specified
8427 by a list of space separated float values. Character escaping has to be done.
8428 A special option name @code{default} is available to use default options for a
8429 filter.
8430
8431 It is required to specify either @code{default} or at least one of the filter options.
8432 All omitted options are used with their default values.
8433 The syntax of the filter string is as follows:
8434 @example
8435 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
8436 @end example
8437
8438 @item output_rect
8439 Specify a rectangle where the output of the filter chain is copied into the
8440 input image. It is given by a list of space separated float values:
8441 @example
8442 output_rect=x\ y\ width\ height
8443 @end example
8444 If not given, the output rectangle equals the dimensions of the input image.
8445 The output rectangle is automatically cropped at the borders of the input
8446 image. Negative values are valid for each component.
8447 @example
8448 output_rect=25\ 25\ 100\ 100
8449 @end example
8450 @end table
8451
8452 Several filters can be chained for successive processing without GPU-HOST
8453 transfers allowing for fast processing of complex filter chains.
8454 Currently, only filters with zero (generators) or exactly one (filters) input
8455 image and one output image are supported. Also, transition filters are not yet
8456 usable as intended.
8457
8458 Some filters generate output images with additional padding depending on the
8459 respective filter kernel. The padding is automatically removed to ensure the
8460 filter output has the same size as the input image.
8461
8462 For image generators, the size of the output image is determined by the
8463 previous output image of the filter chain or the input image of the whole
8464 filterchain, respectively. The generators do not use the pixel information of
8465 this image to generate their output. However, the generated output is
8466 blended onto this image, resulting in partial or complete coverage of the
8467 output image.
8468
8469 The @ref{coreimagesrc} video source can be used for generating input images
8470 which are directly fed into the filter chain. By using it, providing input
8471 images by another video source or an input video is not required.
8472
8473 @subsection Examples
8474
8475 @itemize
8476
8477 @item
8478 List all filters available:
8479 @example
8480 coreimage=list_filters=true
8481 @end example
8482
8483 @item
8484 Use the CIBoxBlur filter with default options to blur an image:
8485 @example
8486 coreimage=filter=CIBoxBlur@@default
8487 @end example
8488
8489 @item
8490 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
8491 its center at 100x100 and a radius of 50 pixels:
8492 @example
8493 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
8494 @end example
8495
8496 @item
8497 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
8498 given as complete and escaped command-line for Apple's standard bash shell:
8499 @example
8500 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
8501 @end example
8502 @end itemize
8503
8504 @section cover_rect
8505
8506 Cover a rectangular object
8507
8508 It accepts the following options:
8509
8510 @table @option
8511 @item cover
8512 Filepath of the optional cover image, needs to be in yuv420.
8513
8514 @item mode
8515 Set covering mode.
8516
8517 It accepts the following values:
8518 @table @samp
8519 @item cover
8520 cover it by the supplied image
8521 @item blur
8522 cover it by interpolating the surrounding pixels
8523 @end table
8524
8525 Default value is @var{blur}.
8526 @end table
8527
8528 @subsection Examples
8529
8530 @itemize
8531 @item
8532 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
8533 @example
8534 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8535 @end example
8536 @end itemize
8537
8538 @section crop
8539
8540 Crop the input video to given dimensions.
8541
8542 It accepts the following parameters:
8543
8544 @table @option
8545 @item w, out_w
8546 The width of the output video. It defaults to @code{iw}.
8547 This expression is evaluated only once during the filter
8548 configuration, or when the @samp{w} or @samp{out_w} command is sent.
8549
8550 @item h, out_h
8551 The height of the output video. It defaults to @code{ih}.
8552 This expression is evaluated only once during the filter
8553 configuration, or when the @samp{h} or @samp{out_h} command is sent.
8554
8555 @item x
8556 The horizontal position, in the input video, of the left edge of the output
8557 video. It defaults to @code{(in_w-out_w)/2}.
8558 This expression is evaluated per-frame.
8559
8560 @item y
8561 The vertical position, in the input video, of the top edge of the output video.
8562 It defaults to @code{(in_h-out_h)/2}.
8563 This expression is evaluated per-frame.
8564
8565 @item keep_aspect
8566 If set to 1 will force the output display aspect ratio
8567 to be the same of the input, by changing the output sample aspect
8568 ratio. It defaults to 0.
8569
8570 @item exact
8571 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
8572 width/height/x/y as specified and will not be rounded to nearest smaller value.
8573 It defaults to 0.
8574 @end table
8575
8576 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
8577 expressions containing the following constants:
8578
8579 @table @option
8580 @item x
8581 @item y
8582 The computed values for @var{x} and @var{y}. They are evaluated for
8583 each new frame.
8584
8585 @item in_w
8586 @item in_h
8587 The input width and height.
8588
8589 @item iw
8590 @item ih
8591 These are the same as @var{in_w} and @var{in_h}.
8592
8593 @item out_w
8594 @item out_h
8595 The output (cropped) width and height.
8596
8597 @item ow
8598 @item oh
8599 These are the same as @var{out_w} and @var{out_h}.
8600
8601 @item a
8602 same as @var{iw} / @var{ih}
8603
8604 @item sar
8605 input sample aspect ratio
8606
8607 @item dar
8608 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8609
8610 @item hsub
8611 @item vsub
8612 horizontal and vertical chroma subsample values. For example for the
8613 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8614
8615 @item n
8616 The number of the input frame, starting from 0.
8617
8618 @item pos
8619 the position in the file of the input frame, NAN if unknown
8620
8621 @item t
8622 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
8623
8624 @end table
8625
8626 The expression for @var{out_w} may depend on the value of @var{out_h},
8627 and the expression for @var{out_h} may depend on @var{out_w}, but they
8628 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
8629 evaluated after @var{out_w} and @var{out_h}.
8630
8631 The @var{x} and @var{y} parameters specify the expressions for the
8632 position of the top-left corner of the output (non-cropped) area. They
8633 are evaluated for each frame. If the evaluated value is not valid, it
8634 is approximated to the nearest valid value.
8635
8636 The expression for @var{x} may depend on @var{y}, and the expression
8637 for @var{y} may depend on @var{x}.
8638
8639 @subsection Examples
8640
8641 @itemize
8642 @item
8643 Crop area with size 100x100 at position (12,34).
8644 @example
8645 crop=100:100:12:34
8646 @end example
8647
8648 Using named options, the example above becomes:
8649 @example
8650 crop=w=100:h=100:x=12:y=34
8651 @end example
8652
8653 @item
8654 Crop the central input area with size 100x100:
8655 @example
8656 crop=100:100
8657 @end example
8658
8659 @item
8660 Crop the central input area with size 2/3 of the input video:
8661 @example
8662 crop=2/3*in_w:2/3*in_h
8663 @end example
8664
8665 @item
8666 Crop the input video central square:
8667 @example
8668 crop=out_w=in_h
8669 crop=in_h
8670 @end example
8671
8672 @item
8673 Delimit the rectangle with the top-left corner placed at position
8674 100:100 and the right-bottom corner corresponding to the right-bottom
8675 corner of the input image.
8676 @example
8677 crop=in_w-100:in_h-100:100:100
8678 @end example
8679
8680 @item
8681 Crop 10 pixels from the left and right borders, and 20 pixels from
8682 the top and bottom borders
8683 @example
8684 crop=in_w-2*10:in_h-2*20
8685 @end example
8686
8687 @item
8688 Keep only the bottom right quarter of the input image:
8689 @example
8690 crop=in_w/2:in_h/2:in_w/2:in_h/2
8691 @end example
8692
8693 @item
8694 Crop height for getting Greek harmony:
8695 @example
8696 crop=in_w:1/PHI*in_w
8697 @end example
8698
8699 @item
8700 Apply trembling effect:
8701 @example
8702 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)
8703 @end example
8704
8705 @item
8706 Apply erratic camera effect depending on timestamp:
8707 @example
8708 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)"
8709 @end example
8710
8711 @item
8712 Set x depending on the value of y:
8713 @example
8714 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
8715 @end example
8716 @end itemize
8717
8718 @subsection Commands
8719
8720 This filter supports the following commands:
8721 @table @option
8722 @item w, out_w
8723 @item h, out_h
8724 @item x
8725 @item y
8726 Set width/height of the output video and the horizontal/vertical position
8727 in the input video.
8728 The command accepts the same syntax of the corresponding option.
8729
8730 If the specified expression is not valid, it is kept at its current
8731 value.
8732 @end table
8733
8734 @section cropdetect
8735
8736 Auto-detect the crop size.
8737
8738 It calculates the necessary cropping parameters and prints the
8739 recommended parameters via the logging system. The detected dimensions
8740 correspond to the non-black area of the input video.
8741
8742 It accepts the following parameters:
8743
8744 @table @option
8745
8746 @item limit
8747 Set higher black value threshold, which can be optionally specified
8748 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8749 value greater to the set value is considered non-black. It defaults to 24.
8750 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8751 on the bitdepth of the pixel format.
8752
8753 @item round
8754 The value which the width/height should be divisible by. It defaults to
8755 16. The offset is automatically adjusted to center the video. Use 2 to
8756 get only even dimensions (needed for 4:2:2 video). 16 is best when
8757 encoding to most video codecs.
8758
8759 @item reset_count, reset
8760 Set the counter that determines after how many frames cropdetect will
8761 reset the previously detected largest video area and start over to
8762 detect the current optimal crop area. Default value is 0.
8763
8764 This can be useful when channel logos distort the video area. 0
8765 indicates 'never reset', and returns the largest area encountered during
8766 playback.
8767 @end table
8768
8769 @anchor{cue}
8770 @section cue
8771
8772 Delay video filtering until a given wallclock timestamp. The filter first
8773 passes on @option{preroll} amount of frames, then it buffers at most
8774 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8775 it forwards the buffered frames and also any subsequent frames coming in its
8776 input.
8777
8778 The filter can be used synchronize the output of multiple ffmpeg processes for
8779 realtime output devices like decklink. By putting the delay in the filtering
8780 chain and pre-buffering frames the process can pass on data to output almost
8781 immediately after the target wallclock timestamp is reached.
8782
8783 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
8784 some use cases.
8785
8786 @table @option
8787
8788 @item cue
8789 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
8790
8791 @item preroll
8792 The duration of content to pass on as preroll expressed in seconds. Default is 0.
8793
8794 @item buffer
8795 The maximum duration of content to buffer before waiting for the cue expressed
8796 in seconds. Default is 0.
8797
8798 @end table
8799
8800 @anchor{curves}
8801 @section curves
8802
8803 Apply color adjustments using curves.
8804
8805 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
8806 component (red, green and blue) has its values defined by @var{N} key points
8807 tied from each other using a smooth curve. The x-axis represents the pixel
8808 values from the input frame, and the y-axis the new pixel values to be set for
8809 the output frame.
8810
8811 By default, a component curve is defined by the two points @var{(0;0)} and
8812 @var{(1;1)}. This creates a straight line where each original pixel value is
8813 "adjusted" to its own value, which means no change to the image.
8814
8815 The filter allows you to redefine these two points and add some more. A new
8816 curve (using a natural cubic spline interpolation) will be define to pass
8817 smoothly through all these new coordinates. The new defined points needs to be
8818 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
8819 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
8820 the vector spaces, the values will be clipped accordingly.
8821
8822 The filter accepts the following options:
8823
8824 @table @option
8825 @item preset
8826 Select one of the available color presets. This option can be used in addition
8827 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
8828 options takes priority on the preset values.
8829 Available presets are:
8830 @table @samp
8831 @item none
8832 @item color_negative
8833 @item cross_process
8834 @item darker
8835 @item increase_contrast
8836 @item lighter
8837 @item linear_contrast
8838 @item medium_contrast
8839 @item negative
8840 @item strong_contrast
8841 @item vintage
8842 @end table
8843 Default is @code{none}.
8844 @item master, m
8845 Set the master key points. These points will define a second pass mapping. It
8846 is sometimes called a "luminance" or "value" mapping. It can be used with
8847 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
8848 post-processing LUT.
8849 @item red, r
8850 Set the key points for the red component.
8851 @item green, g
8852 Set the key points for the green component.
8853 @item blue, b
8854 Set the key points for the blue component.
8855 @item all
8856 Set the key points for all components (not including master).
8857 Can be used in addition to the other key points component
8858 options. In this case, the unset component(s) will fallback on this
8859 @option{all} setting.
8860 @item psfile
8861 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
8862 @item plot
8863 Save Gnuplot script of the curves in specified file.
8864 @end table
8865
8866 To avoid some filtergraph syntax conflicts, each key points list need to be
8867 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
8868
8869 @subsection Examples
8870
8871 @itemize
8872 @item
8873 Increase slightly the middle level of blue:
8874 @example
8875 curves=blue='0/0 0.5/0.58 1/1'
8876 @end example
8877
8878 @item
8879 Vintage effect:
8880 @example
8881 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'
8882 @end example
8883 Here we obtain the following coordinates for each components:
8884 @table @var
8885 @item red
8886 @code{(0;0.11) (0.42;0.51) (1;0.95)}
8887 @item green
8888 @code{(0;0) (0.50;0.48) (1;1)}
8889 @item blue
8890 @code{(0;0.22) (0.49;0.44) (1;0.80)}
8891 @end table
8892
8893 @item
8894 The previous example can also be achieved with the associated built-in preset:
8895 @example
8896 curves=preset=vintage
8897 @end example
8898
8899 @item
8900 Or simply:
8901 @example
8902 curves=vintage
8903 @end example
8904
8905 @item
8906 Use a Photoshop preset and redefine the points of the green component:
8907 @example
8908 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
8909 @end example
8910
8911 @item
8912 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
8913 and @command{gnuplot}:
8914 @example
8915 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
8916 gnuplot -p /tmp/curves.plt
8917 @end example
8918 @end itemize
8919
8920 @section datascope
8921
8922 Video data analysis filter.
8923
8924 This filter shows hexadecimal pixel values of part of video.
8925
8926 The filter accepts the following options:
8927
8928 @table @option
8929 @item size, s
8930 Set output video size.
8931
8932 @item x
8933 Set x offset from where to pick pixels.
8934
8935 @item y
8936 Set y offset from where to pick pixels.
8937
8938 @item mode
8939 Set scope mode, can be one of the following:
8940 @table @samp
8941 @item mono
8942 Draw hexadecimal pixel values with white color on black background.
8943
8944 @item color
8945 Draw hexadecimal pixel values with input video pixel color on black
8946 background.
8947
8948 @item color2
8949 Draw hexadecimal pixel values on color background picked from input video,
8950 the text color is picked in such way so its always visible.
8951 @end table
8952
8953 @item axis
8954 Draw rows and columns numbers on left and top of video.
8955
8956 @item opacity
8957 Set background opacity.
8958
8959 @item format
8960 Set display number format. Can be @code{hex}, or @code{dec}. Default is @code{hex}.
8961 @end table
8962
8963 @section dblur
8964 Apply Directional blur filter.
8965
8966 The filter accepts the following options:
8967
8968 @table @option
8969 @item angle
8970 Set angle of directional blur. Default is @code{45}.
8971
8972 @item radius
8973 Set radius of directional blur. Default is @code{5}.
8974
8975 @item planes
8976 Set which planes to filter. By default all planes are filtered.
8977 @end table
8978
8979 @subsection Commands
8980 This filter supports same @ref{commands} as options.
8981 The command accepts the same syntax of the corresponding option.
8982
8983 If the specified expression is not valid, it is kept at its current
8984 value.
8985
8986 @section dctdnoiz
8987
8988 Denoise frames using 2D DCT (frequency domain filtering).
8989
8990 This filter is not designed for real time.
8991
8992 The filter accepts the following options:
8993
8994 @table @option
8995 @item sigma, s
8996 Set the noise sigma constant.
8997
8998 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
8999 coefficient (absolute value) below this threshold with be dropped.
9000
9001 If you need a more advanced filtering, see @option{expr}.
9002
9003 Default is @code{0}.
9004
9005 @item overlap
9006 Set number overlapping pixels for each block. Since the filter can be slow, you
9007 may want to reduce this value, at the cost of a less effective filter and the
9008 risk of various artefacts.
9009
9010 If the overlapping value doesn't permit processing the whole input width or
9011 height, a warning will be displayed and according borders won't be denoised.
9012
9013 Default value is @var{blocksize}-1, which is the best possible setting.
9014
9015 @item expr, e
9016 Set the coefficient factor expression.
9017
9018 For each coefficient of a DCT block, this expression will be evaluated as a
9019 multiplier value for the coefficient.
9020
9021 If this is option is set, the @option{sigma} option will be ignored.
9022
9023 The absolute value of the coefficient can be accessed through the @var{c}
9024 variable.
9025
9026 @item n
9027 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
9028 @var{blocksize}, which is the width and height of the processed blocks.
9029
9030 The default value is @var{3} (8x8) and can be raised to @var{4} for a
9031 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
9032 on the speed processing. Also, a larger block size does not necessarily means a
9033 better de-noising.
9034 @end table
9035
9036 @subsection Examples
9037
9038 Apply a denoise with a @option{sigma} of @code{4.5}:
9039 @example
9040 dctdnoiz=4.5
9041 @end example
9042
9043 The same operation can be achieved using the expression system:
9044 @example
9045 dctdnoiz=e='gte(c, 4.5*3)'
9046 @end example
9047
9048 Violent denoise using a block size of @code{16x16}:
9049 @example
9050 dctdnoiz=15:n=4
9051 @end example
9052
9053 @section deband
9054
9055 Remove banding artifacts from input video.
9056 It works by replacing banded pixels with average value of referenced pixels.
9057
9058 The filter accepts the following options:
9059
9060 @table @option
9061 @item 1thr
9062 @item 2thr
9063 @item 3thr
9064 @item 4thr
9065 Set banding detection threshold for each plane. Default is 0.02.
9066 Valid range is 0.00003 to 0.5.
9067 If difference between current pixel and reference pixel is less than threshold,
9068 it will be considered as banded.
9069
9070 @item range, r
9071 Banding detection range in pixels. Default is 16. If positive, random number
9072 in range 0 to set value will be used. If negative, exact absolute value
9073 will be used.
9074 The range defines square of four pixels around current pixel.
9075
9076 @item direction, d
9077 Set direction in radians from which four pixel will be compared. If positive,
9078 random direction from 0 to set direction will be picked. If negative, exact of
9079 absolute value will be picked. For example direction 0, -PI or -2*PI radians
9080 will pick only pixels on same row and -PI/2 will pick only pixels on same
9081 column.
9082
9083 @item blur, b
9084 If enabled, current pixel is compared with average value of all four
9085 surrounding pixels. The default is enabled. If disabled current pixel is
9086 compared with all four surrounding pixels. The pixel is considered banded
9087 if only all four differences with surrounding pixels are less than threshold.
9088
9089 @item coupling, c
9090 If enabled, current pixel is changed if and only if all pixel components are banded,
9091 e.g. banding detection threshold is triggered for all color components.
9092 The default is disabled.
9093 @end table
9094
9095 @section deblock
9096
9097 Remove blocking artifacts from input video.
9098
9099 The filter accepts the following options:
9100
9101 @table @option
9102 @item filter
9103 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
9104 This controls what kind of deblocking is applied.
9105
9106 @item block
9107 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
9108
9109 @item alpha
9110 @item beta
9111 @item gamma
9112 @item delta
9113 Set blocking detection thresholds. Allowed range is 0 to 1.
9114 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
9115 Using higher threshold gives more deblocking strength.
9116 Setting @var{alpha} controls threshold detection at exact edge of block.
9117 Remaining options controls threshold detection near the edge. Each one for
9118 below/above or left/right. Setting any of those to @var{0} disables
9119 deblocking.
9120
9121 @item planes
9122 Set planes to filter. Default is to filter all available planes.
9123 @end table
9124
9125 @subsection Examples
9126
9127 @itemize
9128 @item
9129 Deblock using weak filter and block size of 4 pixels.
9130 @example
9131 deblock=filter=weak:block=4
9132 @end example
9133
9134 @item
9135 Deblock using strong filter, block size of 4 pixels and custom thresholds for
9136 deblocking more edges.
9137 @example
9138 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
9139 @end example
9140
9141 @item
9142 Similar as above, but filter only first plane.
9143 @example
9144 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
9145 @end example
9146
9147 @item
9148 Similar as above, but filter only second and third plane.
9149 @example
9150 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
9151 @end example
9152 @end itemize
9153
9154 @anchor{decimate}
9155 @section decimate
9156
9157 Drop duplicated frames at regular intervals.
9158
9159 The filter accepts the following options:
9160
9161 @table @option
9162 @item cycle
9163 Set the number of frames from which one will be dropped. Setting this to
9164 @var{N} means one frame in every batch of @var{N} frames will be dropped.
9165 Default is @code{5}.
9166
9167 @item dupthresh
9168 Set the threshold for duplicate detection. If the difference metric for a frame
9169 is less than or equal to this value, then it is declared as duplicate. Default
9170 is @code{1.1}
9171
9172 @item scthresh
9173 Set scene change threshold. Default is @code{15}.
9174
9175 @item blockx
9176 @item blocky
9177 Set the size of the x and y-axis blocks used during metric calculations.
9178 Larger blocks give better noise suppression, but also give worse detection of
9179 small movements. Must be a power of two. Default is @code{32}.
9180
9181 @item ppsrc
9182 Mark main input as a pre-processed input and activate clean source input
9183 stream. This allows the input to be pre-processed with various filters to help
9184 the metrics calculation while keeping the frame selection lossless. When set to
9185 @code{1}, the first stream is for the pre-processed input, and the second
9186 stream is the clean source from where the kept frames are chosen. Default is
9187 @code{0}.
9188
9189 @item chroma
9190 Set whether or not chroma is considered in the metric calculations. Default is
9191 @code{1}.
9192 @end table
9193
9194 @section deconvolve
9195
9196 Apply 2D deconvolution of video stream in frequency domain using second stream
9197 as impulse.
9198
9199 The filter accepts the following options:
9200
9201 @table @option
9202 @item planes
9203 Set which planes to process.
9204
9205 @item impulse
9206 Set which impulse video frames will be processed, can be @var{first}
9207 or @var{all}. Default is @var{all}.
9208
9209 @item noise
9210 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
9211 and height are not same and not power of 2 or if stream prior to convolving
9212 had noise.
9213 @end table
9214
9215 The @code{deconvolve} filter also supports the @ref{framesync} options.
9216
9217 @section dedot
9218
9219 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
9220
9221 It accepts the following options:
9222
9223 @table @option
9224 @item m
9225 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
9226 @var{rainbows} for cross-color reduction.
9227
9228 @item lt
9229 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
9230
9231 @item tl
9232 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
9233
9234 @item tc
9235 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
9236
9237 @item ct
9238 Set temporal chroma threshold. Lower values increases reduction of cross-color.
9239 @end table
9240
9241 @section deflate
9242
9243 Apply deflate effect to the video.
9244
9245 This filter replaces the pixel by the local(3x3) average by taking into account
9246 only values lower than the pixel.
9247
9248 It accepts the following options:
9249
9250 @table @option
9251 @item threshold0
9252 @item threshold1
9253 @item threshold2
9254 @item threshold3
9255 Limit the maximum change for each plane, default is 65535.
9256 If 0, plane will remain unchanged.
9257 @end table
9258
9259 @subsection Commands
9260
9261 This filter supports the all above options as @ref{commands}.
9262
9263 @section deflicker
9264
9265 Remove temporal frame luminance variations.
9266
9267 It accepts the following options:
9268
9269 @table @option
9270 @item size, s
9271 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
9272
9273 @item mode, m
9274 Set averaging mode to smooth temporal luminance variations.
9275
9276 Available values are:
9277 @table @samp
9278 @item am
9279 Arithmetic mean
9280
9281 @item gm
9282 Geometric mean
9283
9284 @item hm
9285 Harmonic mean
9286
9287 @item qm
9288 Quadratic mean
9289
9290 @item cm
9291 Cubic mean
9292
9293 @item pm
9294 Power mean
9295
9296 @item median
9297 Median
9298 @end table
9299
9300 @item bypass
9301 Do not actually modify frame. Useful when one only wants metadata.
9302 @end table
9303
9304 @section dejudder
9305
9306 Remove judder produced by partially interlaced telecined content.
9307
9308 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
9309 source was partially telecined content then the output of @code{pullup,dejudder}
9310 will have a variable frame rate. May change the recorded frame rate of the
9311 container. Aside from that change, this filter will not affect constant frame
9312 rate video.
9313
9314 The option available in this filter is:
9315 @table @option
9316
9317 @item cycle
9318 Specify the length of the window over which the judder repeats.
9319
9320 Accepts any integer greater than 1. Useful values are:
9321 @table @samp
9322
9323 @item 4
9324 If the original was telecined from 24 to 30 fps (Film to NTSC).
9325
9326 @item 5
9327 If the original was telecined from 25 to 30 fps (PAL to NTSC).
9328
9329 @item 20
9330 If a mixture of the two.
9331 @end table
9332
9333 The default is @samp{4}.
9334 @end table
9335
9336 @section delogo
9337
9338 Suppress a TV station logo by a simple interpolation of the surrounding
9339 pixels. Just set a rectangle covering the logo and watch it disappear
9340 (and sometimes something even uglier appear - your mileage may vary).
9341
9342 It accepts the following parameters:
9343 @table @option
9344
9345 @item x
9346 @item y
9347 Specify the top left corner coordinates of the logo. They must be
9348 specified.
9349
9350 @item w
9351 @item h
9352 Specify the width and height of the logo to clear. They must be
9353 specified.
9354
9355 @item band, t
9356 Specify the thickness of the fuzzy edge of the rectangle (added to
9357 @var{w} and @var{h}). The default value is 1. This option is
9358 deprecated, setting higher values should no longer be necessary and
9359 is not recommended.
9360
9361 @item show
9362 When set to 1, a green rectangle is drawn on the screen to simplify
9363 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
9364 The default value is 0.
9365
9366 The rectangle is drawn on the outermost pixels which will be (partly)
9367 replaced with interpolated values. The values of the next pixels
9368 immediately outside this rectangle in each direction will be used to
9369 compute the interpolated pixel values inside the rectangle.
9370
9371 @end table
9372
9373 @subsection Examples
9374
9375 @itemize
9376 @item
9377 Set a rectangle covering the area with top left corner coordinates 0,0
9378 and size 100x77, and a band of size 10:
9379 @example
9380 delogo=x=0:y=0:w=100:h=77:band=10
9381 @end example
9382
9383 @end itemize
9384
9385 @anchor{derain}
9386 @section derain
9387
9388 Remove the rain in the input image/video by applying the derain methods based on
9389 convolutional neural networks. Supported models:
9390
9391 @itemize
9392 @item
9393 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
9394 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
9395 @end itemize
9396
9397 Training as well as model generation scripts are provided in
9398 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
9399
9400 Native model files (.model) can be generated from TensorFlow model
9401 files (.pb) by using tools/python/convert.py
9402
9403 The filter accepts the following options:
9404
9405 @table @option
9406 @item filter_type
9407 Specify which filter to use. This option accepts the following values:
9408
9409 @table @samp
9410 @item derain
9411 Derain filter. To conduct derain filter, you need to use a derain model.
9412
9413 @item dehaze
9414 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
9415 @end table
9416 Default value is @samp{derain}.
9417
9418 @item dnn_backend
9419 Specify which DNN backend to use for model loading and execution. This option accepts
9420 the following values:
9421
9422 @table @samp
9423 @item native
9424 Native implementation of DNN loading and execution.
9425
9426 @item tensorflow
9427 TensorFlow backend. To enable this backend you
9428 need to install the TensorFlow for C library (see
9429 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9430 @code{--enable-libtensorflow}
9431 @end table
9432 Default value is @samp{native}.
9433
9434 @item model
9435 Set path to model file specifying network architecture and its parameters.
9436 Note that different backends use different file formats. TensorFlow and native
9437 backend can load files for only its format.
9438 @end table
9439
9440 It can also be finished with @ref{dnn_processing} filter.
9441
9442 @section deshake
9443
9444 Attempt to fix small changes in horizontal and/or vertical shift. This
9445 filter helps remove camera shake from hand-holding a camera, bumping a
9446 tripod, moving on a vehicle, etc.
9447
9448 The filter accepts the following options:
9449
9450 @table @option
9451
9452 @item x
9453 @item y
9454 @item w
9455 @item h
9456 Specify a rectangular area where to limit the search for motion
9457 vectors.
9458 If desired the search for motion vectors can be limited to a
9459 rectangular area of the frame defined by its top left corner, width
9460 and height. These parameters have the same meaning as the drawbox
9461 filter which can be used to visualise the position of the bounding
9462 box.
9463
9464 This is useful when simultaneous movement of subjects within the frame
9465 might be confused for camera motion by the motion vector search.
9466
9467 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
9468 then the full frame is used. This allows later options to be set
9469 without specifying the bounding box for the motion vector search.
9470
9471 Default - search the whole frame.
9472
9473 @item rx
9474 @item ry
9475 Specify the maximum extent of movement in x and y directions in the
9476 range 0-64 pixels. Default 16.
9477
9478 @item edge
9479 Specify how to generate pixels to fill blanks at the edge of the
9480 frame. Available values are:
9481 @table @samp
9482 @item blank, 0
9483 Fill zeroes at blank locations
9484 @item original, 1
9485 Original image at blank locations
9486 @item clamp, 2
9487 Extruded edge value at blank locations
9488 @item mirror, 3
9489 Mirrored edge at blank locations
9490 @end table
9491 Default value is @samp{mirror}.
9492
9493 @item blocksize
9494 Specify the blocksize to use for motion search. Range 4-128 pixels,
9495 default 8.
9496
9497 @item contrast
9498 Specify the contrast threshold for blocks. Only blocks with more than
9499 the specified contrast (difference between darkest and lightest
9500 pixels) will be considered. Range 1-255, default 125.
9501
9502 @item search
9503 Specify the search strategy. Available values are:
9504 @table @samp
9505 @item exhaustive, 0
9506 Set exhaustive search
9507 @item less, 1
9508 Set less exhaustive search.
9509 @end table
9510 Default value is @samp{exhaustive}.
9511
9512 @item filename
9513 If set then a detailed log of the motion search is written to the
9514 specified file.
9515
9516 @end table
9517
9518 @section despill
9519
9520 Remove unwanted contamination of foreground colors, caused by reflected color of
9521 greenscreen or bluescreen.
9522
9523 This filter accepts the following options:
9524
9525 @table @option
9526 @item type
9527 Set what type of despill to use.
9528
9529 @item mix
9530 Set how spillmap will be generated.
9531
9532 @item expand
9533 Set how much to get rid of still remaining spill.
9534
9535 @item red
9536 Controls amount of red in spill area.
9537
9538 @item green
9539 Controls amount of green in spill area.
9540 Should be -1 for greenscreen.
9541
9542 @item blue
9543 Controls amount of blue in spill area.
9544 Should be -1 for bluescreen.
9545
9546 @item brightness
9547 Controls brightness of spill area, preserving colors.
9548
9549 @item alpha
9550 Modify alpha from generated spillmap.
9551 @end table
9552
9553 @subsection Commands
9554
9555 This filter supports the all above options as @ref{commands}.
9556
9557 @section detelecine
9558
9559 Apply an exact inverse of the telecine operation. It requires a predefined
9560 pattern specified using the pattern option which must be the same as that passed
9561 to the telecine filter.
9562
9563 This filter accepts the following options:
9564
9565 @table @option
9566 @item first_field
9567 @table @samp
9568 @item top, t
9569 top field first
9570 @item bottom, b
9571 bottom field first
9572 The default value is @code{top}.
9573 @end table
9574
9575 @item pattern
9576 A string of numbers representing the pulldown pattern you wish to apply.
9577 The default value is @code{23}.
9578
9579 @item start_frame
9580 A number representing position of the first frame with respect to the telecine
9581 pattern. This is to be used if the stream is cut. The default value is @code{0}.
9582 @end table
9583
9584 @section dilation
9585
9586 Apply dilation effect to the video.
9587
9588 This filter replaces the pixel by the local(3x3) maximum.
9589
9590 It accepts the following options:
9591
9592 @table @option
9593 @item threshold0
9594 @item threshold1
9595 @item threshold2
9596 @item threshold3
9597 Limit the maximum change for each plane, default is 65535.
9598 If 0, plane will remain unchanged.
9599
9600 @item coordinates
9601 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9602 pixels are used.
9603
9604 Flags to local 3x3 coordinates maps like this:
9605
9606     1 2 3
9607     4   5
9608     6 7 8
9609 @end table
9610
9611 @subsection Commands
9612
9613 This filter supports the all above options as @ref{commands}.
9614
9615 @section displace
9616
9617 Displace pixels as indicated by second and third input stream.
9618
9619 It takes three input streams and outputs one stream, the first input is the
9620 source, and second and third input are displacement maps.
9621
9622 The second input specifies how much to displace pixels along the
9623 x-axis, while the third input specifies how much to displace pixels
9624 along the y-axis.
9625 If one of displacement map streams terminates, last frame from that
9626 displacement map will be used.
9627
9628 Note that once generated, displacements maps can be reused over and over again.
9629
9630 A description of the accepted options follows.
9631
9632 @table @option
9633 @item edge
9634 Set displace behavior for pixels that are out of range.
9635
9636 Available values are:
9637 @table @samp
9638 @item blank
9639 Missing pixels are replaced by black pixels.
9640
9641 @item smear
9642 Adjacent pixels will spread out to replace missing pixels.
9643
9644 @item wrap
9645 Out of range pixels are wrapped so they point to pixels of other side.
9646
9647 @item mirror
9648 Out of range pixels will be replaced with mirrored pixels.
9649 @end table
9650 Default is @samp{smear}.
9651
9652 @end table
9653
9654 @subsection Examples
9655
9656 @itemize
9657 @item
9658 Add ripple effect to rgb input of video size hd720:
9659 @example
9660 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
9661 @end example
9662
9663 @item
9664 Add wave effect to rgb input of video size hd720:
9665 @example
9666 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
9667 @end example
9668 @end itemize
9669
9670 @anchor{dnn_processing}
9671 @section dnn_processing
9672
9673 Do image processing with deep neural networks. It works together with another filter
9674 which converts the pixel format of the Frame to what the dnn network requires.
9675
9676 The filter accepts the following options:
9677
9678 @table @option
9679 @item dnn_backend
9680 Specify which DNN backend to use for model loading and execution. This option accepts
9681 the following values:
9682
9683 @table @samp
9684 @item native
9685 Native implementation of DNN loading and execution.
9686
9687 @item tensorflow
9688 TensorFlow backend. To enable this backend you
9689 need to install the TensorFlow for C library (see
9690 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9691 @code{--enable-libtensorflow}
9692
9693 @item openvino
9694 OpenVINO backend. To enable this backend you
9695 need to build and install the OpenVINO for C library (see
9696 @url{https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md}) and configure FFmpeg with
9697 @code{--enable-libopenvino} (--extra-cflags=-I... --extra-ldflags=-L... might
9698 be needed if the header files and libraries are not installed into system path)
9699
9700 @end table
9701
9702 Default value is @samp{native}.
9703
9704 @item model
9705 Set path to model file specifying network architecture and its parameters.
9706 Note that different backends use different file formats. TensorFlow, OpenVINO and native
9707 backend can load files for only its format.
9708
9709 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
9710
9711 @item input
9712 Set the input name of the dnn network.
9713
9714 @item output
9715 Set the output name of the dnn network.
9716
9717 @end table
9718
9719 @subsection Examples
9720
9721 @itemize
9722 @item
9723 Remove rain in rgb24 frame with can.pb (see @ref{derain} filter):
9724 @example
9725 ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
9726 @end example
9727
9728 @item
9729 Halve the pixel value of the frame with format gray32f:
9730 @example
9731 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
9732 @end example
9733
9734 @item
9735 Handle the Y channel with srcnn.pb (see @ref{sr} filter) for frame with yuv420p (planar YUV formats supported):
9736 @example
9737 ./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
9738 @end example
9739
9740 @item
9741 Handle the Y channel with espcn.pb (see @ref{sr} filter), which changes frame size, for format yuv420p (planar YUV formats supported):
9742 @example
9743 ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y -y tmp.espcn.jpg
9744 @end example
9745
9746 @end itemize
9747
9748 @section drawbox
9749
9750 Draw a colored box on the input image.
9751
9752 It accepts the following parameters:
9753
9754 @table @option
9755 @item x
9756 @item y
9757 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
9758
9759 @item width, w
9760 @item height, h
9761 The expressions which specify the width and height of the box; if 0 they are interpreted as
9762 the input width and height. It defaults to 0.
9763
9764 @item color, c
9765 Specify the color of the box to write. For the general syntax of this option,
9766 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9767 value @code{invert} is used, the box edge color is the same as the
9768 video with inverted luma.
9769
9770 @item thickness, t
9771 The expression which sets the thickness of the box edge.
9772 A value of @code{fill} will create a filled box. Default value is @code{3}.
9773
9774 See below for the list of accepted constants.
9775
9776 @item replace
9777 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
9778 will overwrite the video's color and alpha pixels.
9779 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
9780 @end table
9781
9782 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9783 following constants:
9784
9785 @table @option
9786 @item dar
9787 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9788
9789 @item hsub
9790 @item vsub
9791 horizontal and vertical chroma subsample values. For example for the
9792 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9793
9794 @item in_h, ih
9795 @item in_w, iw
9796 The input width and height.
9797
9798 @item sar
9799 The input sample aspect ratio.
9800
9801 @item x
9802 @item y
9803 The x and y offset coordinates where the box is drawn.
9804
9805 @item w
9806 @item h
9807 The width and height of the drawn box.
9808
9809 @item t
9810 The thickness of the drawn box.
9811
9812 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9813 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9814
9815 @end table
9816
9817 @subsection Examples
9818
9819 @itemize
9820 @item
9821 Draw a black box around the edge of the input image:
9822 @example
9823 drawbox
9824 @end example
9825
9826 @item
9827 Draw a box with color red and an opacity of 50%:
9828 @example
9829 drawbox=10:20:200:60:red@@0.5
9830 @end example
9831
9832 The previous example can be specified as:
9833 @example
9834 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
9835 @end example
9836
9837 @item
9838 Fill the box with pink color:
9839 @example
9840 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
9841 @end example
9842
9843 @item
9844 Draw a 2-pixel red 2.40:1 mask:
9845 @example
9846 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
9847 @end example
9848 @end itemize
9849
9850 @subsection Commands
9851 This filter supports same commands as options.
9852 The command accepts the same syntax of the corresponding option.
9853
9854 If the specified expression is not valid, it is kept at its current
9855 value.
9856
9857 @anchor{drawgraph}
9858 @section drawgraph
9859 Draw a graph using input video metadata.
9860
9861 It accepts the following parameters:
9862
9863 @table @option
9864 @item m1
9865 Set 1st frame metadata key from which metadata values will be used to draw a graph.
9866
9867 @item fg1
9868 Set 1st foreground color expression.
9869
9870 @item m2
9871 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
9872
9873 @item fg2
9874 Set 2nd foreground color expression.
9875
9876 @item m3
9877 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
9878
9879 @item fg3
9880 Set 3rd foreground color expression.
9881
9882 @item m4
9883 Set 4th frame metadata key from which metadata values will be used to draw a graph.
9884
9885 @item fg4
9886 Set 4th foreground color expression.
9887
9888 @item min
9889 Set minimal value of metadata value.
9890
9891 @item max
9892 Set maximal value of metadata value.
9893
9894 @item bg
9895 Set graph background color. Default is white.
9896
9897 @item mode
9898 Set graph mode.
9899
9900 Available values for mode is:
9901 @table @samp
9902 @item bar
9903 @item dot
9904 @item line
9905 @end table
9906
9907 Default is @code{line}.
9908
9909 @item slide
9910 Set slide mode.
9911
9912 Available values for slide is:
9913 @table @samp
9914 @item frame
9915 Draw new frame when right border is reached.
9916
9917 @item replace
9918 Replace old columns with new ones.
9919
9920 @item scroll
9921 Scroll from right to left.
9922
9923 @item rscroll
9924 Scroll from left to right.
9925
9926 @item picture
9927 Draw single picture.
9928 @end table
9929
9930 Default is @code{frame}.
9931
9932 @item size
9933 Set size of graph video. For the syntax of this option, check the
9934 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
9935 The default value is @code{900x256}.
9936
9937 @item rate, r
9938 Set the output frame rate. Default value is @code{25}.
9939
9940 The foreground color expressions can use the following variables:
9941 @table @option
9942 @item MIN
9943 Minimal value of metadata value.
9944
9945 @item MAX
9946 Maximal value of metadata value.
9947
9948 @item VAL
9949 Current metadata key value.
9950 @end table
9951
9952 The color is defined as 0xAABBGGRR.
9953 @end table
9954
9955 Example using metadata from @ref{signalstats} filter:
9956 @example
9957 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
9958 @end example
9959
9960 Example using metadata from @ref{ebur128} filter:
9961 @example
9962 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
9963 @end example
9964
9965 @section drawgrid
9966
9967 Draw a grid on the input image.
9968
9969 It accepts the following parameters:
9970
9971 @table @option
9972 @item x
9973 @item y
9974 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
9975
9976 @item width, w
9977 @item height, h
9978 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
9979 input width and height, respectively, minus @code{thickness}, so image gets
9980 framed. Default to 0.
9981
9982 @item color, c
9983 Specify the color of the grid. For the general syntax of this option,
9984 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9985 value @code{invert} is used, the grid color is the same as the
9986 video with inverted luma.
9987
9988 @item thickness, t
9989 The expression which sets the thickness of the grid line. Default value is @code{1}.
9990
9991 See below for the list of accepted constants.
9992
9993 @item replace
9994 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
9995 will overwrite the video's color and alpha pixels.
9996 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
9997 @end table
9998
9999 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
10000 following constants:
10001
10002 @table @option
10003 @item dar
10004 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
10005
10006 @item hsub
10007 @item vsub
10008 horizontal and vertical chroma subsample values. For example for the
10009 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10010
10011 @item in_h, ih
10012 @item in_w, iw
10013 The input grid cell width and height.
10014
10015 @item sar
10016 The input sample aspect ratio.
10017
10018 @item x
10019 @item y
10020 The x and y coordinates of some point of grid intersection (meant to configure offset).
10021
10022 @item w
10023 @item h
10024 The width and height of the drawn cell.
10025
10026 @item t
10027 The thickness of the drawn cell.
10028
10029 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
10030 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
10031
10032 @end table
10033
10034 @subsection Examples
10035
10036 @itemize
10037 @item
10038 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
10039 @example
10040 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
10041 @end example
10042
10043 @item
10044 Draw a white 3x3 grid with an opacity of 50%:
10045 @example
10046 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
10047 @end example
10048 @end itemize
10049
10050 @subsection Commands
10051 This filter supports same commands as options.
10052 The command accepts the same syntax of the corresponding option.
10053
10054 If the specified expression is not valid, it is kept at its current
10055 value.
10056
10057 @anchor{drawtext}
10058 @section drawtext
10059
10060 Draw a text string or text from a specified file on top of a video, using the
10061 libfreetype library.
10062
10063 To enable compilation of this filter, you need to configure FFmpeg with
10064 @code{--enable-libfreetype}.
10065 To enable default font fallback and the @var{font} option you need to
10066 configure FFmpeg with @code{--enable-libfontconfig}.
10067 To enable the @var{text_shaping} option, you need to configure FFmpeg with
10068 @code{--enable-libfribidi}.
10069
10070 @subsection Syntax
10071
10072 It accepts the following parameters:
10073
10074 @table @option
10075
10076 @item box
10077 Used to draw a box around text using the background color.
10078 The value must be either 1 (enable) or 0 (disable).
10079 The default value of @var{box} is 0.
10080
10081 @item boxborderw
10082 Set the width of the border to be drawn around the box using @var{boxcolor}.
10083 The default value of @var{boxborderw} is 0.
10084
10085 @item boxcolor
10086 The color to be used for drawing box around text. For the syntax of this
10087 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10088
10089 The default value of @var{boxcolor} is "white".
10090
10091 @item line_spacing
10092 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
10093 The default value of @var{line_spacing} is 0.
10094
10095 @item borderw
10096 Set the width of the border to be drawn around the text using @var{bordercolor}.
10097 The default value of @var{borderw} is 0.
10098
10099 @item bordercolor
10100 Set the color to be used for drawing border around text. For the syntax of this
10101 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10102
10103 The default value of @var{bordercolor} is "black".
10104
10105 @item expansion
10106 Select how the @var{text} is expanded. Can be either @code{none},
10107 @code{strftime} (deprecated) or
10108 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
10109 below for details.
10110
10111 @item basetime
10112 Set a start time for the count. Value is in microseconds. Only applied
10113 in the deprecated strftime expansion mode. To emulate in normal expansion
10114 mode use the @code{pts} function, supplying the start time (in seconds)
10115 as the second argument.
10116
10117 @item fix_bounds
10118 If true, check and fix text coords to avoid clipping.
10119
10120 @item fontcolor
10121 The color to be used for drawing fonts. For the syntax of this option, check
10122 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10123
10124 The default value of @var{fontcolor} is "black".
10125
10126 @item fontcolor_expr
10127 String which is expanded the same way as @var{text} to obtain dynamic
10128 @var{fontcolor} value. By default this option has empty value and is not
10129 processed. When this option is set, it overrides @var{fontcolor} option.
10130
10131 @item font
10132 The font family to be used for drawing text. By default Sans.
10133
10134 @item fontfile
10135 The font file to be used for drawing text. The path must be included.
10136 This parameter is mandatory if the fontconfig support is disabled.
10137
10138 @item alpha
10139 Draw the text applying alpha blending. The value can
10140 be a number between 0.0 and 1.0.
10141 The expression accepts the same variables @var{x, y} as well.
10142 The default value is 1.
10143 Please see @var{fontcolor_expr}.
10144
10145 @item fontsize
10146 The font size to be used for drawing text.
10147 The default value of @var{fontsize} is 16.
10148
10149 @item text_shaping
10150 If set to 1, attempt to shape the text (for example, reverse the order of
10151 right-to-left text and join Arabic characters) before drawing it.
10152 Otherwise, just draw the text exactly as given.
10153 By default 1 (if supported).
10154
10155 @item ft_load_flags
10156 The flags to be used for loading the fonts.
10157
10158 The flags map the corresponding flags supported by libfreetype, and are
10159 a combination of the following values:
10160 @table @var
10161 @item default
10162 @item no_scale
10163 @item no_hinting
10164 @item render
10165 @item no_bitmap
10166 @item vertical_layout
10167 @item force_autohint
10168 @item crop_bitmap
10169 @item pedantic
10170 @item ignore_global_advance_width
10171 @item no_recurse
10172 @item ignore_transform
10173 @item monochrome
10174 @item linear_design
10175 @item no_autohint
10176 @end table
10177
10178 Default value is "default".
10179
10180 For more information consult the documentation for the FT_LOAD_*
10181 libfreetype flags.
10182
10183 @item shadowcolor
10184 The color to be used for drawing a shadow behind the drawn text. For the
10185 syntax of this option, check the @ref{color syntax,,"Color" section in the
10186 ffmpeg-utils manual,ffmpeg-utils}.
10187
10188 The default value of @var{shadowcolor} is "black".
10189
10190 @item shadowx
10191 @item shadowy
10192 The x and y offsets for the text shadow position with respect to the
10193 position of the text. They can be either positive or negative
10194 values. The default value for both is "0".
10195
10196 @item start_number
10197 The starting frame number for the n/frame_num variable. The default value
10198 is "0".
10199
10200 @item tabsize
10201 The size in number of spaces to use for rendering the tab.
10202 Default value is 4.
10203
10204 @item timecode
10205 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
10206 format. It can be used with or without text parameter. @var{timecode_rate}
10207 option must be specified.
10208
10209 @item timecode_rate, rate, r
10210 Set the timecode frame rate (timecode only). Value will be rounded to nearest
10211 integer. Minimum value is "1".
10212 Drop-frame timecode is supported for frame rates 30 & 60.
10213
10214 @item tc24hmax
10215 If set to 1, the output of the timecode option will wrap around at 24 hours.
10216 Default is 0 (disabled).
10217
10218 @item text
10219 The text string to be drawn. The text must be a sequence of UTF-8
10220 encoded characters.
10221 This parameter is mandatory if no file is specified with the parameter
10222 @var{textfile}.
10223
10224 @item textfile
10225 A text file containing text to be drawn. The text must be a sequence
10226 of UTF-8 encoded characters.
10227
10228 This parameter is mandatory if no text string is specified with the
10229 parameter @var{text}.
10230
10231 If both @var{text} and @var{textfile} are specified, an error is thrown.
10232
10233 @item reload
10234 If set to 1, the @var{textfile} will be reloaded before each frame.
10235 Be sure to update it atomically, or it may be read partially, or even fail.
10236
10237 @item x
10238 @item y
10239 The expressions which specify the offsets where text will be drawn
10240 within the video frame. They are relative to the top/left border of the
10241 output image.
10242
10243 The default value of @var{x} and @var{y} is "0".
10244
10245 See below for the list of accepted constants and functions.
10246 @end table
10247
10248 The parameters for @var{x} and @var{y} are expressions containing the
10249 following constants and functions:
10250
10251 @table @option
10252 @item dar
10253 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
10254
10255 @item hsub
10256 @item vsub
10257 horizontal and vertical chroma subsample values. For example for the
10258 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10259
10260 @item line_h, lh
10261 the height of each text line
10262
10263 @item main_h, h, H
10264 the input height
10265
10266 @item main_w, w, W
10267 the input width
10268
10269 @item max_glyph_a, ascent
10270 the maximum distance from the baseline to the highest/upper grid
10271 coordinate used to place a glyph outline point, for all the rendered
10272 glyphs.
10273 It is a positive value, due to the grid's orientation with the Y axis
10274 upwards.
10275
10276 @item max_glyph_d, descent
10277 the maximum distance from the baseline to the lowest grid coordinate
10278 used to place a glyph outline point, for all the rendered glyphs.
10279 This is a negative value, due to the grid's orientation, with the Y axis
10280 upwards.
10281
10282 @item max_glyph_h
10283 maximum glyph height, that is the maximum height for all the glyphs
10284 contained in the rendered text, it is equivalent to @var{ascent} -
10285 @var{descent}.
10286
10287 @item max_glyph_w
10288 maximum glyph width, that is the maximum width for all the glyphs
10289 contained in the rendered text
10290
10291 @item n
10292 the number of input frame, starting from 0
10293
10294 @item rand(min, max)
10295 return a random number included between @var{min} and @var{max}
10296
10297 @item sar
10298 The input sample aspect ratio.
10299
10300 @item t
10301 timestamp expressed in seconds, NAN if the input timestamp is unknown
10302
10303 @item text_h, th
10304 the height of the rendered text
10305
10306 @item text_w, tw
10307 the width of the rendered text
10308
10309 @item x
10310 @item y
10311 the x and y offset coordinates where the text is drawn.
10312
10313 These parameters allow the @var{x} and @var{y} expressions to refer
10314 to each other, so you can for example specify @code{y=x/dar}.
10315
10316 @item pict_type
10317 A one character description of the current frame's picture type.
10318
10319 @item pkt_pos
10320 The current packet's position in the input file or stream
10321 (in bytes, from the start of the input). A value of -1 indicates
10322 this info is not available.
10323
10324 @item pkt_duration
10325 The current packet's duration, in seconds.
10326
10327 @item pkt_size
10328 The current packet's size (in bytes).
10329 @end table
10330
10331 @anchor{drawtext_expansion}
10332 @subsection Text expansion
10333
10334 If @option{expansion} is set to @code{strftime},
10335 the filter recognizes strftime() sequences in the provided text and
10336 expands them accordingly. Check the documentation of strftime(). This
10337 feature is deprecated.
10338
10339 If @option{expansion} is set to @code{none}, the text is printed verbatim.
10340
10341 If @option{expansion} is set to @code{normal} (which is the default),
10342 the following expansion mechanism is used.
10343
10344 The backslash character @samp{\}, followed by any character, always expands to
10345 the second character.
10346
10347 Sequences of the form @code{%@{...@}} are expanded. The text between the
10348 braces is a function name, possibly followed by arguments separated by ':'.
10349 If the arguments contain special characters or delimiters (':' or '@}'),
10350 they should be escaped.
10351
10352 Note that they probably must also be escaped as the value for the
10353 @option{text} option in the filter argument string and as the filter
10354 argument in the filtergraph description, and possibly also for the shell,
10355 that makes up to four levels of escaping; using a text file avoids these
10356 problems.
10357
10358 The following functions are available:
10359
10360 @table @command
10361
10362 @item expr, e
10363 The expression evaluation result.
10364
10365 It must take one argument specifying the expression to be evaluated,
10366 which accepts the same constants and functions as the @var{x} and
10367 @var{y} values. Note that not all constants should be used, for
10368 example the text size is not known when evaluating the expression, so
10369 the constants @var{text_w} and @var{text_h} will have an undefined
10370 value.
10371
10372 @item expr_int_format, eif
10373 Evaluate the expression's value and output as formatted integer.
10374
10375 The first argument is the expression to be evaluated, just as for the @var{expr} function.
10376 The second argument specifies the output format. Allowed values are @samp{x},
10377 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
10378 @code{printf} function.
10379 The third parameter is optional and sets the number of positions taken by the output.
10380 It can be used to add padding with zeros from the left.
10381
10382 @item gmtime
10383 The time at which the filter is running, expressed in UTC.
10384 It can accept an argument: a strftime() format string.
10385
10386 @item localtime
10387 The time at which the filter is running, expressed in the local time zone.
10388 It can accept an argument: a strftime() format string.
10389
10390 @item metadata
10391 Frame metadata. Takes one or two arguments.
10392
10393 The first argument is mandatory and specifies the metadata key.
10394
10395 The second argument is optional and specifies a default value, used when the
10396 metadata key is not found or empty.
10397
10398 Available metadata can be identified by inspecting entries
10399 starting with TAG included within each frame section
10400 printed by running @code{ffprobe -show_frames}.
10401
10402 String metadata generated in filters leading to
10403 the drawtext filter are also available.
10404
10405 @item n, frame_num
10406 The frame number, starting from 0.
10407
10408 @item pict_type
10409 A one character description of the current picture type.
10410
10411 @item pts
10412 The timestamp of the current frame.
10413 It can take up to three arguments.
10414
10415 The first argument is the format of the timestamp; it defaults to @code{flt}
10416 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
10417 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
10418 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
10419 @code{localtime} stands for the timestamp of the frame formatted as
10420 local time zone time.
10421
10422 The second argument is an offset added to the timestamp.
10423
10424 If the format is set to @code{hms}, a third argument @code{24HH} may be
10425 supplied to present the hour part of the formatted timestamp in 24h format
10426 (00-23).
10427
10428 If the format is set to @code{localtime} or @code{gmtime},
10429 a third argument may be supplied: a strftime() format string.
10430 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
10431 @end table
10432
10433 @subsection Commands
10434
10435 This filter supports altering parameters via commands:
10436 @table @option
10437 @item reinit
10438 Alter existing filter parameters.
10439
10440 Syntax for the argument is the same as for filter invocation, e.g.
10441
10442 @example
10443 fontsize=56:fontcolor=green:text='Hello World'
10444 @end example
10445
10446 Full filter invocation with sendcmd would look like this:
10447
10448 @example
10449 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
10450 @end example
10451 @end table
10452
10453 If the entire argument can't be parsed or applied as valid values then the filter will
10454 continue with its existing parameters.
10455
10456 @subsection Examples
10457
10458 @itemize
10459 @item
10460 Draw "Test Text" with font FreeSerif, using the default values for the
10461 optional parameters.
10462
10463 @example
10464 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
10465 @end example
10466
10467 @item
10468 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
10469 and y=50 (counting from the top-left corner of the screen), text is
10470 yellow with a red box around it. Both the text and the box have an
10471 opacity of 20%.
10472
10473 @example
10474 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
10475           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
10476 @end example
10477
10478 Note that the double quotes are not necessary if spaces are not used
10479 within the parameter list.
10480
10481 @item
10482 Show the text at the center of the video frame:
10483 @example
10484 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
10485 @end example
10486
10487 @item
10488 Show the text at a random position, switching to a new position every 30 seconds:
10489 @example
10490 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)"
10491 @end example
10492
10493 @item
10494 Show a text line sliding from right to left in the last row of the video
10495 frame. The file @file{LONG_LINE} is assumed to contain a single line
10496 with no newlines.
10497 @example
10498 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
10499 @end example
10500
10501 @item
10502 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
10503 @example
10504 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
10505 @end example
10506
10507 @item
10508 Draw a single green letter "g", at the center of the input video.
10509 The glyph baseline is placed at half screen height.
10510 @example
10511 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
10512 @end example
10513
10514 @item
10515 Show text for 1 second every 3 seconds:
10516 @example
10517 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
10518 @end example
10519
10520 @item
10521 Use fontconfig to set the font. Note that the colons need to be escaped.
10522 @example
10523 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
10524 @end example
10525
10526 @item
10527 Draw "Test Text" with font size dependent on height of the video.
10528 @example
10529 drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
10530 @end example
10531
10532 @item
10533 Print the date of a real-time encoding (see strftime(3)):
10534 @example
10535 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
10536 @end example
10537
10538 @item
10539 Show text fading in and out (appearing/disappearing):
10540 @example
10541 #!/bin/sh
10542 DS=1.0 # display start
10543 DE=10.0 # display end
10544 FID=1.5 # fade in duration
10545 FOD=5 # fade out duration
10546 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 @}"
10547 @end example
10548
10549 @item
10550 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
10551 and the @option{fontsize} value are included in the @option{y} offset.
10552 @example
10553 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
10554 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
10555 @end example
10556
10557 @item
10558 Plot special @var{lavf.image2dec.source_basename} metadata onto each frame if
10559 such metadata exists. Otherwise, plot the string "NA". Note that image2 demuxer
10560 must have option @option{-export_path_metadata 1} for the special metadata fields
10561 to be available for filters.
10562 @example
10563 drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%@{metadata\:lavf.image2dec.source_basename\:NA@}':x=10:y=10"
10564 @end example
10565
10566 @end itemize
10567
10568 For more information about libfreetype, check:
10569 @url{http://www.freetype.org/}.
10570
10571 For more information about fontconfig, check:
10572 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
10573
10574 For more information about libfribidi, check:
10575 @url{http://fribidi.org/}.
10576
10577 @section edgedetect
10578
10579 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
10580
10581 The filter accepts the following options:
10582
10583 @table @option
10584 @item low
10585 @item high
10586 Set low and high threshold values used by the Canny thresholding
10587 algorithm.
10588
10589 The high threshold selects the "strong" edge pixels, which are then
10590 connected through 8-connectivity with the "weak" edge pixels selected
10591 by the low threshold.
10592
10593 @var{low} and @var{high} threshold values must be chosen in the range
10594 [0,1], and @var{low} should be lesser or equal to @var{high}.
10595
10596 Default value for @var{low} is @code{20/255}, and default value for @var{high}
10597 is @code{50/255}.
10598
10599 @item mode
10600 Define the drawing mode.
10601
10602 @table @samp
10603 @item wires
10604 Draw white/gray wires on black background.
10605
10606 @item colormix
10607 Mix the colors to create a paint/cartoon effect.
10608
10609 @item canny
10610 Apply Canny edge detector on all selected planes.
10611 @end table
10612 Default value is @var{wires}.
10613
10614 @item planes
10615 Select planes for filtering. By default all available planes are filtered.
10616 @end table
10617
10618 @subsection Examples
10619
10620 @itemize
10621 @item
10622 Standard edge detection with custom values for the hysteresis thresholding:
10623 @example
10624 edgedetect=low=0.1:high=0.4
10625 @end example
10626
10627 @item
10628 Painting effect without thresholding:
10629 @example
10630 edgedetect=mode=colormix:high=0
10631 @end example
10632 @end itemize
10633
10634 @section elbg
10635
10636 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
10637
10638 For each input image, the filter will compute the optimal mapping from
10639 the input to the output given the codebook length, that is the number
10640 of distinct output colors.
10641
10642 This filter accepts the following options.
10643
10644 @table @option
10645 @item codebook_length, l
10646 Set codebook length. The value must be a positive integer, and
10647 represents the number of distinct output colors. Default value is 256.
10648
10649 @item nb_steps, n
10650 Set the maximum number of iterations to apply for computing the optimal
10651 mapping. The higher the value the better the result and the higher the
10652 computation time. Default value is 1.
10653
10654 @item seed, s
10655 Set a random seed, must be an integer included between 0 and
10656 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
10657 will try to use a good random seed on a best effort basis.
10658
10659 @item pal8
10660 Set pal8 output pixel format. This option does not work with codebook
10661 length greater than 256.
10662 @end table
10663
10664 @section entropy
10665
10666 Measure graylevel entropy in histogram of color channels of video frames.
10667
10668 It accepts the following parameters:
10669
10670 @table @option
10671 @item mode
10672 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
10673
10674 @var{diff} mode measures entropy of histogram delta values, absolute differences
10675 between neighbour histogram values.
10676 @end table
10677
10678 @section eq
10679 Set brightness, contrast, saturation and approximate gamma adjustment.
10680
10681 The filter accepts the following options:
10682
10683 @table @option
10684 @item contrast
10685 Set the contrast expression. The value must be a float value in range
10686 @code{-1000.0} to @code{1000.0}. The default value is "1".
10687
10688 @item brightness
10689 Set the brightness expression. The value must be a float value in
10690 range @code{-1.0} to @code{1.0}. The default value is "0".
10691
10692 @item saturation
10693 Set the saturation expression. The value must be a float in
10694 range @code{0.0} to @code{3.0}. The default value is "1".
10695
10696 @item gamma
10697 Set the gamma expression. The value must be a float in range
10698 @code{0.1} to @code{10.0}.  The default value is "1".
10699
10700 @item gamma_r
10701 Set the gamma expression for red. The value must be a float in
10702 range @code{0.1} to @code{10.0}. The default value is "1".
10703
10704 @item gamma_g
10705 Set the gamma expression for green. The value must be a float in range
10706 @code{0.1} to @code{10.0}. The default value is "1".
10707
10708 @item gamma_b
10709 Set the gamma expression for blue. The value must be a float in range
10710 @code{0.1} to @code{10.0}. The default value is "1".
10711
10712 @item gamma_weight
10713 Set the gamma weight expression. It can be used to reduce the effect
10714 of a high gamma value on bright image areas, e.g. keep them from
10715 getting overamplified and just plain white. The value must be a float
10716 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
10717 gamma correction all the way down while @code{1.0} leaves it at its
10718 full strength. Default is "1".
10719
10720 @item eval
10721 Set when the expressions for brightness, contrast, saturation and
10722 gamma expressions are evaluated.
10723
10724 It accepts the following values:
10725 @table @samp
10726 @item init
10727 only evaluate expressions once during the filter initialization or
10728 when a command is processed
10729
10730 @item frame
10731 evaluate expressions for each incoming frame
10732 @end table
10733
10734 Default value is @samp{init}.
10735 @end table
10736
10737 The expressions accept the following parameters:
10738 @table @option
10739 @item n
10740 frame count of the input frame starting from 0
10741
10742 @item pos
10743 byte position of the corresponding packet in the input file, NAN if
10744 unspecified
10745
10746 @item r
10747 frame rate of the input video, NAN if the input frame rate is unknown
10748
10749 @item t
10750 timestamp expressed in seconds, NAN if the input timestamp is unknown
10751 @end table
10752
10753 @subsection Commands
10754 The filter supports the following commands:
10755
10756 @table @option
10757 @item contrast
10758 Set the contrast expression.
10759
10760 @item brightness
10761 Set the brightness expression.
10762
10763 @item saturation
10764 Set the saturation expression.
10765
10766 @item gamma
10767 Set the gamma expression.
10768
10769 @item gamma_r
10770 Set the gamma_r expression.
10771
10772 @item gamma_g
10773 Set gamma_g expression.
10774
10775 @item gamma_b
10776 Set gamma_b expression.
10777
10778 @item gamma_weight
10779 Set gamma_weight expression.
10780
10781 The command accepts the same syntax of the corresponding option.
10782
10783 If the specified expression is not valid, it is kept at its current
10784 value.
10785
10786 @end table
10787
10788 @section erosion
10789
10790 Apply erosion effect to the video.
10791
10792 This filter replaces the pixel by the local(3x3) minimum.
10793
10794 It accepts the following options:
10795
10796 @table @option
10797 @item threshold0
10798 @item threshold1
10799 @item threshold2
10800 @item threshold3
10801 Limit the maximum change for each plane, default is 65535.
10802 If 0, plane will remain unchanged.
10803
10804 @item coordinates
10805 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
10806 pixels are used.
10807
10808 Flags to local 3x3 coordinates maps like this:
10809
10810     1 2 3
10811     4   5
10812     6 7 8
10813 @end table
10814
10815 @subsection Commands
10816
10817 This filter supports the all above options as @ref{commands}.
10818
10819 @section extractplanes
10820
10821 Extract color channel components from input video stream into
10822 separate grayscale video streams.
10823
10824 The filter accepts the following option:
10825
10826 @table @option
10827 @item planes
10828 Set plane(s) to extract.
10829
10830 Available values for planes are:
10831 @table @samp
10832 @item y
10833 @item u
10834 @item v
10835 @item a
10836 @item r
10837 @item g
10838 @item b
10839 @end table
10840
10841 Choosing planes not available in the input will result in an error.
10842 That means you cannot select @code{r}, @code{g}, @code{b} planes
10843 with @code{y}, @code{u}, @code{v} planes at same time.
10844 @end table
10845
10846 @subsection Examples
10847
10848 @itemize
10849 @item
10850 Extract luma, u and v color channel component from input video frame
10851 into 3 grayscale outputs:
10852 @example
10853 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
10854 @end example
10855 @end itemize
10856
10857 @section fade
10858
10859 Apply a fade-in/out effect to the input video.
10860
10861 It accepts the following parameters:
10862
10863 @table @option
10864 @item type, t
10865 The effect type can be either "in" for a fade-in, or "out" for a fade-out
10866 effect.
10867 Default is @code{in}.
10868
10869 @item start_frame, s
10870 Specify the number of the frame to start applying the fade
10871 effect at. Default is 0.
10872
10873 @item nb_frames, n
10874 The number of frames that the fade effect lasts. At the end of the
10875 fade-in effect, the output video will have the same intensity as the input video.
10876 At the end of the fade-out transition, the output video will be filled with the
10877 selected @option{color}.
10878 Default is 25.
10879
10880 @item alpha
10881 If set to 1, fade only alpha channel, if one exists on the input.
10882 Default value is 0.
10883
10884 @item start_time, st
10885 Specify the timestamp (in seconds) of the frame to start to apply the fade
10886 effect. If both start_frame and start_time are specified, the fade will start at
10887 whichever comes last.  Default is 0.
10888
10889 @item duration, d
10890 The number of seconds for which the fade effect has to last. At the end of the
10891 fade-in effect the output video will have the same intensity as the input video,
10892 at the end of the fade-out transition the output video will be filled with the
10893 selected @option{color}.
10894 If both duration and nb_frames are specified, duration is used. Default is 0
10895 (nb_frames is used by default).
10896
10897 @item color, c
10898 Specify the color of the fade. Default is "black".
10899 @end table
10900
10901 @subsection Examples
10902
10903 @itemize
10904 @item
10905 Fade in the first 30 frames of video:
10906 @example
10907 fade=in:0:30
10908 @end example
10909
10910 The command above is equivalent to:
10911 @example
10912 fade=t=in:s=0:n=30
10913 @end example
10914
10915 @item
10916 Fade out the last 45 frames of a 200-frame video:
10917 @example
10918 fade=out:155:45
10919 fade=type=out:start_frame=155:nb_frames=45
10920 @end example
10921
10922 @item
10923 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
10924 @example
10925 fade=in:0:25, fade=out:975:25
10926 @end example
10927
10928 @item
10929 Make the first 5 frames yellow, then fade in from frame 5-24:
10930 @example
10931 fade=in:5:20:color=yellow
10932 @end example
10933
10934 @item
10935 Fade in alpha over first 25 frames of video:
10936 @example
10937 fade=in:0:25:alpha=1
10938 @end example
10939
10940 @item
10941 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
10942 @example
10943 fade=t=in:st=5.5:d=0.5
10944 @end example
10945
10946 @end itemize
10947
10948 @section fftdnoiz
10949 Denoise frames using 3D FFT (frequency domain filtering).
10950
10951 The filter accepts the following options:
10952
10953 @table @option
10954 @item sigma
10955 Set the noise sigma constant. This sets denoising strength.
10956 Default value is 1. Allowed range is from 0 to 30.
10957 Using very high sigma with low overlap may give blocking artifacts.
10958
10959 @item amount
10960 Set amount of denoising. By default all detected noise is reduced.
10961 Default value is 1. Allowed range is from 0 to 1.
10962
10963 @item block
10964 Set size of block, Default is 4, can be 3, 4, 5 or 6.
10965 Actual size of block in pixels is 2 to power of @var{block}, so by default
10966 block size in pixels is 2^4 which is 16.
10967
10968 @item overlap
10969 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
10970
10971 @item prev
10972 Set number of previous frames to use for denoising. By default is set to 0.
10973
10974 @item next
10975 Set number of next frames to to use for denoising. By default is set to 0.
10976
10977 @item planes
10978 Set planes which will be filtered, by default are all available filtered
10979 except alpha.
10980 @end table
10981
10982 @section fftfilt
10983 Apply arbitrary expressions to samples in frequency domain
10984
10985 @table @option
10986 @item dc_Y
10987 Adjust the dc value (gain) of the luma plane of the image. The filter
10988 accepts an integer value in range @code{0} to @code{1000}. The default
10989 value is set to @code{0}.
10990
10991 @item dc_U
10992 Adjust the dc value (gain) of the 1st chroma plane of the image. The
10993 filter accepts an integer value in range @code{0} to @code{1000}. The
10994 default value is set to @code{0}.
10995
10996 @item dc_V
10997 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
10998 filter accepts an integer value in range @code{0} to @code{1000}. The
10999 default value is set to @code{0}.
11000
11001 @item weight_Y
11002 Set the frequency domain weight expression for the luma plane.
11003
11004 @item weight_U
11005 Set the frequency domain weight expression for the 1st chroma plane.
11006
11007 @item weight_V
11008 Set the frequency domain weight expression for the 2nd chroma plane.
11009
11010 @item eval
11011 Set when the expressions are evaluated.
11012
11013 It accepts the following values:
11014 @table @samp
11015 @item init
11016 Only evaluate expressions once during the filter initialization.
11017
11018 @item frame
11019 Evaluate expressions for each incoming frame.
11020 @end table
11021
11022 Default value is @samp{init}.
11023
11024 The filter accepts the following variables:
11025 @item X
11026 @item Y
11027 The coordinates of the current sample.
11028
11029 @item W
11030 @item H
11031 The width and height of the image.
11032
11033 @item N
11034 The number of input frame, starting from 0.
11035 @end table
11036
11037 @subsection Examples
11038
11039 @itemize
11040 @item
11041 High-pass:
11042 @example
11043 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
11044 @end example
11045
11046 @item
11047 Low-pass:
11048 @example
11049 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
11050 @end example
11051
11052 @item
11053 Sharpen:
11054 @example
11055 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
11056 @end example
11057
11058 @item
11059 Blur:
11060 @example
11061 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
11062 @end example
11063
11064 @end itemize
11065
11066 @section field
11067
11068 Extract a single field from an interlaced image using stride
11069 arithmetic to avoid wasting CPU time. The output frames are marked as
11070 non-interlaced.
11071
11072 The filter accepts the following options:
11073
11074 @table @option
11075 @item type
11076 Specify whether to extract the top (if the value is @code{0} or
11077 @code{top}) or the bottom field (if the value is @code{1} or
11078 @code{bottom}).
11079 @end table
11080
11081 @section fieldhint
11082
11083 Create new frames by copying the top and bottom fields from surrounding frames
11084 supplied as numbers by the hint file.
11085
11086 @table @option
11087 @item hint
11088 Set file containing hints: absolute/relative frame numbers.
11089
11090 There must be one line for each frame in a clip. Each line must contain two
11091 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
11092 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
11093 is current frame number for @code{absolute} mode or out of [-1, 1] range
11094 for @code{relative} mode. First number tells from which frame to pick up top
11095 field and second number tells from which frame to pick up bottom field.
11096
11097 If optionally followed by @code{+} output frame will be marked as interlaced,
11098 else if followed by @code{-} output frame will be marked as progressive, else
11099 it will be marked same as input frame.
11100 If optionally followed by @code{t} output frame will use only top field, or in
11101 case of @code{b} it will use only bottom field.
11102 If line starts with @code{#} or @code{;} that line is skipped.
11103
11104 @item mode
11105 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
11106 @end table
11107
11108 Example of first several lines of @code{hint} file for @code{relative} mode:
11109 @example
11110 0,0 - # first frame
11111 1,0 - # second frame, use third's frame top field and second's frame bottom field
11112 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
11113 1,0 -
11114 0,0 -
11115 0,0 -
11116 1,0 -
11117 1,0 -
11118 1,0 -
11119 0,0 -
11120 0,0 -
11121 1,0 -
11122 1,0 -
11123 1,0 -
11124 0,0 -
11125 @end example
11126
11127 @section fieldmatch
11128
11129 Field matching filter for inverse telecine. It is meant to reconstruct the
11130 progressive frames from a telecined stream. The filter does not drop duplicated
11131 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
11132 followed by a decimation filter such as @ref{decimate} in the filtergraph.
11133
11134 The separation of the field matching and the decimation is notably motivated by
11135 the possibility of inserting a de-interlacing filter fallback between the two.
11136 If the source has mixed telecined and real interlaced content,
11137 @code{fieldmatch} will not be able to match fields for the interlaced parts.
11138 But these remaining combed frames will be marked as interlaced, and thus can be
11139 de-interlaced by a later filter such as @ref{yadif} before decimation.
11140
11141 In addition to the various configuration options, @code{fieldmatch} can take an
11142 optional second stream, activated through the @option{ppsrc} option. If
11143 enabled, the frames reconstruction will be based on the fields and frames from
11144 this second stream. This allows the first input to be pre-processed in order to
11145 help the various algorithms of the filter, while keeping the output lossless
11146 (assuming the fields are matched properly). Typically, a field-aware denoiser,
11147 or brightness/contrast adjustments can help.
11148
11149 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
11150 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
11151 which @code{fieldmatch} is based on. While the semantic and usage are very
11152 close, some behaviour and options names can differ.
11153
11154 The @ref{decimate} filter currently only works for constant frame rate input.
11155 If your input has mixed telecined (30fps) and progressive content with a lower
11156 framerate like 24fps use the following filterchain to produce the necessary cfr
11157 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
11158
11159 The filter accepts the following options:
11160
11161 @table @option
11162 @item order
11163 Specify the assumed field order of the input stream. Available values are:
11164
11165 @table @samp
11166 @item auto
11167 Auto detect parity (use FFmpeg's internal parity value).
11168 @item bff
11169 Assume bottom field first.
11170 @item tff
11171 Assume top field first.
11172 @end table
11173
11174 Note that it is sometimes recommended not to trust the parity announced by the
11175 stream.
11176
11177 Default value is @var{auto}.
11178
11179 @item mode
11180 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
11181 sense that it won't risk creating jerkiness due to duplicate frames when
11182 possible, but if there are bad edits or blended fields it will end up
11183 outputting combed frames when a good match might actually exist. On the other
11184 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
11185 but will almost always find a good frame if there is one. The other values are
11186 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
11187 jerkiness and creating duplicate frames versus finding good matches in sections
11188 with bad edits, orphaned fields, blended fields, etc.
11189
11190 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
11191
11192 Available values are:
11193
11194 @table @samp
11195 @item pc
11196 2-way matching (p/c)
11197 @item pc_n
11198 2-way matching, and trying 3rd match if still combed (p/c + n)
11199 @item pc_u
11200 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
11201 @item pc_n_ub
11202 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
11203 still combed (p/c + n + u/b)
11204 @item pcn
11205 3-way matching (p/c/n)
11206 @item pcn_ub
11207 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
11208 detected as combed (p/c/n + u/b)
11209 @end table
11210
11211 The parenthesis at the end indicate the matches that would be used for that
11212 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
11213 @var{top}).
11214
11215 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
11216 the slowest.
11217
11218 Default value is @var{pc_n}.
11219
11220 @item ppsrc
11221 Mark the main input stream as a pre-processed input, and enable the secondary
11222 input stream as the clean source to pick the fields from. See the filter
11223 introduction for more details. It is similar to the @option{clip2} feature from
11224 VFM/TFM.
11225
11226 Default value is @code{0} (disabled).
11227
11228 @item field
11229 Set the field to match from. It is recommended to set this to the same value as
11230 @option{order} unless you experience matching failures with that setting. In
11231 certain circumstances changing the field that is used to match from can have a
11232 large impact on matching performance. Available values are:
11233
11234 @table @samp
11235 @item auto
11236 Automatic (same value as @option{order}).
11237 @item bottom
11238 Match from the bottom field.
11239 @item top
11240 Match from the top field.
11241 @end table
11242
11243 Default value is @var{auto}.
11244
11245 @item mchroma
11246 Set whether or not chroma is included during the match comparisons. In most
11247 cases it is recommended to leave this enabled. You should set this to @code{0}
11248 only if your clip has bad chroma problems such as heavy rainbowing or other
11249 artifacts. Setting this to @code{0} could also be used to speed things up at
11250 the cost of some accuracy.
11251
11252 Default value is @code{1}.
11253
11254 @item y0
11255 @item y1
11256 These define an exclusion band which excludes the lines between @option{y0} and
11257 @option{y1} from being included in the field matching decision. An exclusion
11258 band can be used to ignore subtitles, a logo, or other things that may
11259 interfere with the matching. @option{y0} sets the starting scan line and
11260 @option{y1} sets the ending line; all lines in between @option{y0} and
11261 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
11262 @option{y0} and @option{y1} to the same value will disable the feature.
11263 @option{y0} and @option{y1} defaults to @code{0}.
11264
11265 @item scthresh
11266 Set the scene change detection threshold as a percentage of maximum change on
11267 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
11268 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
11269 @option{scthresh} is @code{[0.0, 100.0]}.
11270
11271 Default value is @code{12.0}.
11272
11273 @item combmatch
11274 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
11275 account the combed scores of matches when deciding what match to use as the
11276 final match. Available values are:
11277
11278 @table @samp
11279 @item none
11280 No final matching based on combed scores.
11281 @item sc
11282 Combed scores are only used when a scene change is detected.
11283 @item full
11284 Use combed scores all the time.
11285 @end table
11286
11287 Default is @var{sc}.
11288
11289 @item combdbg
11290 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
11291 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
11292 Available values are:
11293
11294 @table @samp
11295 @item none
11296 No forced calculation.
11297 @item pcn
11298 Force p/c/n calculations.
11299 @item pcnub
11300 Force p/c/n/u/b calculations.
11301 @end table
11302
11303 Default value is @var{none}.
11304
11305 @item cthresh
11306 This is the area combing threshold used for combed frame detection. This
11307 essentially controls how "strong" or "visible" combing must be to be detected.
11308 Larger values mean combing must be more visible and smaller values mean combing
11309 can be less visible or strong and still be detected. Valid settings are from
11310 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
11311 be detected as combed). This is basically a pixel difference value. A good
11312 range is @code{[8, 12]}.
11313
11314 Default value is @code{9}.
11315
11316 @item chroma
11317 Sets whether or not chroma is considered in the combed frame decision.  Only
11318 disable this if your source has chroma problems (rainbowing, etc.) that are
11319 causing problems for the combed frame detection with chroma enabled. Actually,
11320 using @option{chroma}=@var{0} is usually more reliable, except for the case
11321 where there is chroma only combing in the source.
11322
11323 Default value is @code{0}.
11324
11325 @item blockx
11326 @item blocky
11327 Respectively set the x-axis and y-axis size of the window used during combed
11328 frame detection. This has to do with the size of the area in which
11329 @option{combpel} pixels are required to be detected as combed for a frame to be
11330 declared combed. See the @option{combpel} parameter description for more info.
11331 Possible values are any number that is a power of 2 starting at 4 and going up
11332 to 512.
11333
11334 Default value is @code{16}.
11335
11336 @item combpel
11337 The number of combed pixels inside any of the @option{blocky} by
11338 @option{blockx} size blocks on the frame for the frame to be detected as
11339 combed. While @option{cthresh} controls how "visible" the combing must be, this
11340 setting controls "how much" combing there must be in any localized area (a
11341 window defined by the @option{blockx} and @option{blocky} settings) on the
11342 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
11343 which point no frames will ever be detected as combed). This setting is known
11344 as @option{MI} in TFM/VFM vocabulary.
11345
11346 Default value is @code{80}.
11347 @end table
11348
11349 @anchor{p/c/n/u/b meaning}
11350 @subsection p/c/n/u/b meaning
11351
11352 @subsubsection p/c/n
11353
11354 We assume the following telecined stream:
11355
11356 @example
11357 Top fields:     1 2 2 3 4
11358 Bottom fields:  1 2 3 4 4
11359 @end example
11360
11361 The numbers correspond to the progressive frame the fields relate to. Here, the
11362 first two frames are progressive, the 3rd and 4th are combed, and so on.
11363
11364 When @code{fieldmatch} is configured to run a matching from bottom
11365 (@option{field}=@var{bottom}) this is how this input stream get transformed:
11366
11367 @example
11368 Input stream:
11369                 T     1 2 2 3 4
11370                 B     1 2 3 4 4   <-- matching reference
11371
11372 Matches:              c c n n c
11373
11374 Output stream:
11375                 T     1 2 3 4 4
11376                 B     1 2 3 4 4
11377 @end example
11378
11379 As a result of the field matching, we can see that some frames get duplicated.
11380 To perform a complete inverse telecine, you need to rely on a decimation filter
11381 after this operation. See for instance the @ref{decimate} filter.
11382
11383 The same operation now matching from top fields (@option{field}=@var{top})
11384 looks like this:
11385
11386 @example
11387 Input stream:
11388                 T     1 2 2 3 4   <-- matching reference
11389                 B     1 2 3 4 4
11390
11391 Matches:              c c p p c
11392
11393 Output stream:
11394                 T     1 2 2 3 4
11395                 B     1 2 2 3 4
11396 @end example
11397
11398 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
11399 basically, they refer to the frame and field of the opposite parity:
11400
11401 @itemize
11402 @item @var{p} matches the field of the opposite parity in the previous frame
11403 @item @var{c} matches the field of the opposite parity in the current frame
11404 @item @var{n} matches the field of the opposite parity in the next frame
11405 @end itemize
11406
11407 @subsubsection u/b
11408
11409 The @var{u} and @var{b} matching are a bit special in the sense that they match
11410 from the opposite parity flag. In the following examples, we assume that we are
11411 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
11412 'x' is placed above and below each matched fields.
11413
11414 With bottom matching (@option{field}=@var{bottom}):
11415 @example
11416 Match:           c         p           n          b          u
11417
11418                  x       x               x        x          x
11419   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11420   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11421                  x         x           x        x              x
11422
11423 Output frames:
11424                  2          1          2          2          2
11425                  2          2          2          1          3
11426 @end example
11427
11428 With top matching (@option{field}=@var{top}):
11429 @example
11430 Match:           c         p           n          b          u
11431
11432                  x         x           x        x              x
11433   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11434   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11435                  x       x               x        x          x
11436
11437 Output frames:
11438                  2          2          2          1          2
11439                  2          1          3          2          2
11440 @end example
11441
11442 @subsection Examples
11443
11444 Simple IVTC of a top field first telecined stream:
11445 @example
11446 fieldmatch=order=tff:combmatch=none, decimate
11447 @end example
11448
11449 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
11450 @example
11451 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11452 @end example
11453
11454 @section fieldorder
11455
11456 Transform the field order of the input video.
11457
11458 It accepts the following parameters:
11459
11460 @table @option
11461
11462 @item order
11463 The output field order. Valid values are @var{tff} for top field first or @var{bff}
11464 for bottom field first.
11465 @end table
11466
11467 The default value is @samp{tff}.
11468
11469 The transformation is done by shifting the picture content up or down
11470 by one line, and filling the remaining line with appropriate picture content.
11471 This method is consistent with most broadcast field order converters.
11472
11473 If the input video is not flagged as being interlaced, or it is already
11474 flagged as being of the required output field order, then this filter does
11475 not alter the incoming video.
11476
11477 It is very useful when converting to or from PAL DV material,
11478 which is bottom field first.
11479
11480 For example:
11481 @example
11482 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11483 @end example
11484
11485 @section fifo, afifo
11486
11487 Buffer input images and send them when they are requested.
11488
11489 It is mainly useful when auto-inserted by the libavfilter
11490 framework.
11491
11492 It does not take parameters.
11493
11494 @section fillborders
11495
11496 Fill borders of the input video, without changing video stream dimensions.
11497 Sometimes video can have garbage at the four edges and you may not want to
11498 crop video input to keep size multiple of some number.
11499
11500 This filter accepts the following options:
11501
11502 @table @option
11503 @item left
11504 Number of pixels to fill from left border.
11505
11506 @item right
11507 Number of pixels to fill from right border.
11508
11509 @item top
11510 Number of pixels to fill from top border.
11511
11512 @item bottom
11513 Number of pixels to fill from bottom border.
11514
11515 @item mode
11516 Set fill mode.
11517
11518 It accepts the following values:
11519 @table @samp
11520 @item smear
11521 fill pixels using outermost pixels
11522
11523 @item mirror
11524 fill pixels using mirroring
11525
11526 @item fixed
11527 fill pixels with constant value
11528 @end table
11529
11530 Default is @var{smear}.
11531
11532 @item color
11533 Set color for pixels in fixed mode. Default is @var{black}.
11534 @end table
11535
11536 @subsection Commands
11537 This filter supports same @ref{commands} as options.
11538 The command accepts the same syntax of the corresponding option.
11539
11540 If the specified expression is not valid, it is kept at its current
11541 value.
11542
11543 @section find_rect
11544
11545 Find a rectangular object
11546
11547 It accepts the following options:
11548
11549 @table @option
11550 @item object
11551 Filepath of the object image, needs to be in gray8.
11552
11553 @item threshold
11554 Detection threshold, default is 0.5.
11555
11556 @item mipmaps
11557 Number of mipmaps, default is 3.
11558
11559 @item xmin, ymin, xmax, ymax
11560 Specifies the rectangle in which to search.
11561 @end table
11562
11563 @subsection Examples
11564
11565 @itemize
11566 @item
11567 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
11568 @example
11569 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
11570 @end example
11571 @end itemize
11572
11573 @section floodfill
11574
11575 Flood area with values of same pixel components with another values.
11576
11577 It accepts the following options:
11578 @table @option
11579 @item x
11580 Set pixel x coordinate.
11581
11582 @item y
11583 Set pixel y coordinate.
11584
11585 @item s0
11586 Set source #0 component value.
11587
11588 @item s1
11589 Set source #1 component value.
11590
11591 @item s2
11592 Set source #2 component value.
11593
11594 @item s3
11595 Set source #3 component value.
11596
11597 @item d0
11598 Set destination #0 component value.
11599
11600 @item d1
11601 Set destination #1 component value.
11602
11603 @item d2
11604 Set destination #2 component value.
11605
11606 @item d3
11607 Set destination #3 component value.
11608 @end table
11609
11610 @anchor{format}
11611 @section format
11612
11613 Convert the input video to one of the specified pixel formats.
11614 Libavfilter will try to pick one that is suitable as input to
11615 the next filter.
11616
11617 It accepts the following parameters:
11618 @table @option
11619
11620 @item pix_fmts
11621 A '|'-separated list of pixel format names, such as
11622 "pix_fmts=yuv420p|monow|rgb24".
11623
11624 @end table
11625
11626 @subsection Examples
11627
11628 @itemize
11629 @item
11630 Convert the input video to the @var{yuv420p} format
11631 @example
11632 format=pix_fmts=yuv420p
11633 @end example
11634
11635 Convert the input video to any of the formats in the list
11636 @example
11637 format=pix_fmts=yuv420p|yuv444p|yuv410p
11638 @end example
11639 @end itemize
11640
11641 @anchor{fps}
11642 @section fps
11643
11644 Convert the video to specified constant frame rate by duplicating or dropping
11645 frames as necessary.
11646
11647 It accepts the following parameters:
11648 @table @option
11649
11650 @item fps
11651 The desired output frame rate. The default is @code{25}.
11652
11653 @item start_time
11654 Assume the first PTS should be the given value, in seconds. This allows for
11655 padding/trimming at the start of stream. By default, no assumption is made
11656 about the first frame's expected PTS, so no padding or trimming is done.
11657 For example, this could be set to 0 to pad the beginning with duplicates of
11658 the first frame if a video stream starts after the audio stream or to trim any
11659 frames with a negative PTS.
11660
11661 @item round
11662 Timestamp (PTS) rounding method.
11663
11664 Possible values are:
11665 @table @option
11666 @item zero
11667 round towards 0
11668 @item inf
11669 round away from 0
11670 @item down
11671 round towards -infinity
11672 @item up
11673 round towards +infinity
11674 @item near
11675 round to nearest
11676 @end table
11677 The default is @code{near}.
11678
11679 @item eof_action
11680 Action performed when reading the last frame.
11681
11682 Possible values are:
11683 @table @option
11684 @item round
11685 Use same timestamp rounding method as used for other frames.
11686 @item pass
11687 Pass through last frame if input duration has not been reached yet.
11688 @end table
11689 The default is @code{round}.
11690
11691 @end table
11692
11693 Alternatively, the options can be specified as a flat string:
11694 @var{fps}[:@var{start_time}[:@var{round}]].
11695
11696 See also the @ref{setpts} filter.
11697
11698 @subsection Examples
11699
11700 @itemize
11701 @item
11702 A typical usage in order to set the fps to 25:
11703 @example
11704 fps=fps=25
11705 @end example
11706
11707 @item
11708 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
11709 @example
11710 fps=fps=film:round=near
11711 @end example
11712 @end itemize
11713
11714 @section framepack
11715
11716 Pack two different video streams into a stereoscopic video, setting proper
11717 metadata on supported codecs. The two views should have the same size and
11718 framerate and processing will stop when the shorter video ends. Please note
11719 that you may conveniently adjust view properties with the @ref{scale} and
11720 @ref{fps} filters.
11721
11722 It accepts the following parameters:
11723 @table @option
11724
11725 @item format
11726 The desired packing format. Supported values are:
11727
11728 @table @option
11729
11730 @item sbs
11731 The views are next to each other (default).
11732
11733 @item tab
11734 The views are on top of each other.
11735
11736 @item lines
11737 The views are packed by line.
11738
11739 @item columns
11740 The views are packed by column.
11741
11742 @item frameseq
11743 The views are temporally interleaved.
11744
11745 @end table
11746
11747 @end table
11748
11749 Some examples:
11750
11751 @example
11752 # Convert left and right views into a frame-sequential video
11753 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
11754
11755 # Convert views into a side-by-side video with the same output resolution as the input
11756 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
11757 @end example
11758
11759 @section framerate
11760
11761 Change the frame rate by interpolating new video output frames from the source
11762 frames.
11763
11764 This filter is not designed to function correctly with interlaced media. If
11765 you wish to change the frame rate of interlaced media then you are required
11766 to deinterlace before this filter and re-interlace after this filter.
11767
11768 A description of the accepted options follows.
11769
11770 @table @option
11771 @item fps
11772 Specify the output frames per second. This option can also be specified
11773 as a value alone. The default is @code{50}.
11774
11775 @item interp_start
11776 Specify the start of a range where the output frame will be created as a
11777 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11778 the default is @code{15}.
11779
11780 @item interp_end
11781 Specify the end of a range where the output frame will be created as a
11782 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11783 the default is @code{240}.
11784
11785 @item scene
11786 Specify the level at which a scene change is detected as a value between
11787 0 and 100 to indicate a new scene; a low value reflects a low
11788 probability for the current frame to introduce a new scene, while a higher
11789 value means the current frame is more likely to be one.
11790 The default is @code{8.2}.
11791
11792 @item flags
11793 Specify flags influencing the filter process.
11794
11795 Available value for @var{flags} is:
11796
11797 @table @option
11798 @item scene_change_detect, scd
11799 Enable scene change detection using the value of the option @var{scene}.
11800 This flag is enabled by default.
11801 @end table
11802 @end table
11803
11804 @section framestep
11805
11806 Select one frame every N-th frame.
11807
11808 This filter accepts the following option:
11809 @table @option
11810 @item step
11811 Select frame after every @code{step} frames.
11812 Allowed values are positive integers higher than 0. Default value is @code{1}.
11813 @end table
11814
11815 @section freezedetect
11816
11817 Detect frozen video.
11818
11819 This filter logs a message and sets frame metadata when it detects that the
11820 input video has no significant change in content during a specified duration.
11821 Video freeze detection calculates the mean average absolute difference of all
11822 the components of video frames and compares it to a noise floor.
11823
11824 The printed times and duration are expressed in seconds. The
11825 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
11826 whose timestamp equals or exceeds the detection duration and it contains the
11827 timestamp of the first frame of the freeze. The
11828 @code{lavfi.freezedetect.freeze_duration} and
11829 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
11830 after the freeze.
11831
11832 The filter accepts the following options:
11833
11834 @table @option
11835 @item noise, n
11836 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
11837 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
11838 0.001.
11839
11840 @item duration, d
11841 Set freeze duration until notification (default is 2 seconds).
11842 @end table
11843
11844 @section freezeframes
11845
11846 Freeze video frames.
11847
11848 This filter freezes video frames using frame from 2nd input.
11849
11850 The filter accepts the following options:
11851
11852 @table @option
11853 @item first
11854 Set number of first frame from which to start freeze.
11855
11856 @item last
11857 Set number of last frame from which to end freeze.
11858
11859 @item replace
11860 Set number of frame from 2nd input which will be used instead of replaced frames.
11861 @end table
11862
11863 @anchor{frei0r}
11864 @section frei0r
11865
11866 Apply a frei0r effect to the input video.
11867
11868 To enable the compilation of this filter, you need to install the frei0r
11869 header and configure FFmpeg with @code{--enable-frei0r}.
11870
11871 It accepts the following parameters:
11872
11873 @table @option
11874
11875 @item filter_name
11876 The name of the frei0r effect to load. If the environment variable
11877 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
11878 directories specified by the colon-separated list in @env{FREI0R_PATH}.
11879 Otherwise, the standard frei0r paths are searched, in this order:
11880 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
11881 @file{/usr/lib/frei0r-1/}.
11882
11883 @item filter_params
11884 A '|'-separated list of parameters to pass to the frei0r effect.
11885
11886 @end table
11887
11888 A frei0r effect parameter can be a boolean (its value is either
11889 "y" or "n"), a double, a color (specified as
11890 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
11891 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
11892 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
11893 a position (specified as @var{X}/@var{Y}, where
11894 @var{X} and @var{Y} are floating point numbers) and/or a string.
11895
11896 The number and types of parameters depend on the loaded effect. If an
11897 effect parameter is not specified, the default value is set.
11898
11899 @subsection Examples
11900
11901 @itemize
11902 @item
11903 Apply the distort0r effect, setting the first two double parameters:
11904 @example
11905 frei0r=filter_name=distort0r:filter_params=0.5|0.01
11906 @end example
11907
11908 @item
11909 Apply the colordistance effect, taking a color as the first parameter:
11910 @example
11911 frei0r=colordistance:0.2/0.3/0.4
11912 frei0r=colordistance:violet
11913 frei0r=colordistance:0x112233
11914 @end example
11915
11916 @item
11917 Apply the perspective effect, specifying the top left and top right image
11918 positions:
11919 @example
11920 frei0r=perspective:0.2/0.2|0.8/0.2
11921 @end example
11922 @end itemize
11923
11924 For more information, see
11925 @url{http://frei0r.dyne.org}
11926
11927 @subsection Commands
11928
11929 This filter supports the @option{filter_params} option as @ref{commands}.
11930
11931 @section fspp
11932
11933 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
11934
11935 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
11936 processing filter, one of them is performed once per block, not per pixel.
11937 This allows for much higher speed.
11938
11939 The filter accepts the following options:
11940
11941 @table @option
11942 @item quality
11943 Set quality. This option defines the number of levels for averaging. It accepts
11944 an integer in the range 4-5. Default value is @code{4}.
11945
11946 @item qp
11947 Force a constant quantization parameter. It accepts an integer in range 0-63.
11948 If not set, the filter will use the QP from the video stream (if available).
11949
11950 @item strength
11951 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
11952 more details but also more artifacts, while higher values make the image smoother
11953 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
11954
11955 @item use_bframe_qp
11956 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
11957 option may cause flicker since the B-Frames have often larger QP. Default is
11958 @code{0} (not enabled).
11959
11960 @end table
11961
11962 @section gblur
11963
11964 Apply Gaussian blur filter.
11965
11966 The filter accepts the following options:
11967
11968 @table @option
11969 @item sigma
11970 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
11971
11972 @item steps
11973 Set number of steps for Gaussian approximation. Default is @code{1}.
11974
11975 @item planes
11976 Set which planes to filter. By default all planes are filtered.
11977
11978 @item sigmaV
11979 Set vertical sigma, if negative it will be same as @code{sigma}.
11980 Default is @code{-1}.
11981 @end table
11982
11983 @subsection Commands
11984 This filter supports same commands as options.
11985 The command accepts the same syntax of the corresponding option.
11986
11987 If the specified expression is not valid, it is kept at its current
11988 value.
11989
11990 @section geq
11991
11992 Apply generic equation to each pixel.
11993
11994 The filter accepts the following options:
11995
11996 @table @option
11997 @item lum_expr, lum
11998 Set the luminance expression.
11999 @item cb_expr, cb
12000 Set the chrominance blue expression.
12001 @item cr_expr, cr
12002 Set the chrominance red expression.
12003 @item alpha_expr, a
12004 Set the alpha expression.
12005 @item red_expr, r
12006 Set the red expression.
12007 @item green_expr, g
12008 Set the green expression.
12009 @item blue_expr, b
12010 Set the blue expression.
12011 @end table
12012
12013 The colorspace is selected according to the specified options. If one
12014 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
12015 options is specified, the filter will automatically select a YCbCr
12016 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
12017 @option{blue_expr} options is specified, it will select an RGB
12018 colorspace.
12019
12020 If one of the chrominance expression is not defined, it falls back on the other
12021 one. If no alpha expression is specified it will evaluate to opaque value.
12022 If none of chrominance expressions are specified, they will evaluate
12023 to the luminance expression.
12024
12025 The expressions can use the following variables and functions:
12026
12027 @table @option
12028 @item N
12029 The sequential number of the filtered frame, starting from @code{0}.
12030
12031 @item X
12032 @item Y
12033 The coordinates of the current sample.
12034
12035 @item W
12036 @item H
12037 The width and height of the image.
12038
12039 @item SW
12040 @item SH
12041 Width and height scale depending on the currently filtered plane. It is the
12042 ratio between the corresponding luma plane number of pixels and the current
12043 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
12044 @code{0.5,0.5} for chroma planes.
12045
12046 @item T
12047 Time of the current frame, expressed in seconds.
12048
12049 @item p(x, y)
12050 Return the value of the pixel at location (@var{x},@var{y}) of the current
12051 plane.
12052
12053 @item lum(x, y)
12054 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
12055 plane.
12056
12057 @item cb(x, y)
12058 Return the value of the pixel at location (@var{x},@var{y}) of the
12059 blue-difference chroma plane. Return 0 if there is no such plane.
12060
12061 @item cr(x, y)
12062 Return the value of the pixel at location (@var{x},@var{y}) of the
12063 red-difference chroma plane. Return 0 if there is no such plane.
12064
12065 @item r(x, y)
12066 @item g(x, y)
12067 @item b(x, y)
12068 Return the value of the pixel at location (@var{x},@var{y}) of the
12069 red/green/blue component. Return 0 if there is no such component.
12070
12071 @item alpha(x, y)
12072 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
12073 plane. Return 0 if there is no such plane.
12074
12075 @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)
12076 Sum of sample values in the rectangle from (0,0) to (x,y), this allows obtaining
12077 sums of samples within a rectangle. See the functions without the sum postfix.
12078
12079 @item interpolation
12080 Set one of interpolation methods:
12081 @table @option
12082 @item nearest, n
12083 @item bilinear, b
12084 @end table
12085 Default is bilinear.
12086 @end table
12087
12088 For functions, if @var{x} and @var{y} are outside the area, the value will be
12089 automatically clipped to the closer edge.
12090
12091 Please note that this filter can use multiple threads in which case each slice
12092 will have its own expression state. If you want to use only a single expression
12093 state because your expressions depend on previous state then you should limit
12094 the number of filter threads to 1.
12095
12096 @subsection Examples
12097
12098 @itemize
12099 @item
12100 Flip the image horizontally:
12101 @example
12102 geq=p(W-X\,Y)
12103 @end example
12104
12105 @item
12106 Generate a bidimensional sine wave, with angle @code{PI/3} and a
12107 wavelength of 100 pixels:
12108 @example
12109 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
12110 @end example
12111
12112 @item
12113 Generate a fancy enigmatic moving light:
12114 @example
12115 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
12116 @end example
12117
12118 @item
12119 Generate a quick emboss effect:
12120 @example
12121 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
12122 @end example
12123
12124 @item
12125 Modify RGB components depending on pixel position:
12126 @example
12127 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
12128 @end example
12129
12130 @item
12131 Create a radial gradient that is the same size as the input (also see
12132 the @ref{vignette} filter):
12133 @example
12134 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
12135 @end example
12136 @end itemize
12137
12138 @section gradfun
12139
12140 Fix the banding artifacts that are sometimes introduced into nearly flat
12141 regions by truncation to 8-bit color depth.
12142 Interpolate the gradients that should go where the bands are, and
12143 dither them.
12144
12145 It is designed for playback only.  Do not use it prior to
12146 lossy compression, because compression tends to lose the dither and
12147 bring back the bands.
12148
12149 It accepts the following parameters:
12150
12151 @table @option
12152
12153 @item strength
12154 The maximum amount by which the filter will change any one pixel. This is also
12155 the threshold for detecting nearly flat regions. Acceptable values range from
12156 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
12157 valid range.
12158
12159 @item radius
12160 The neighborhood to fit the gradient to. A larger radius makes for smoother
12161 gradients, but also prevents the filter from modifying the pixels near detailed
12162 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
12163 values will be clipped to the valid range.
12164
12165 @end table
12166
12167 Alternatively, the options can be specified as a flat string:
12168 @var{strength}[:@var{radius}]
12169
12170 @subsection Examples
12171
12172 @itemize
12173 @item
12174 Apply the filter with a @code{3.5} strength and radius of @code{8}:
12175 @example
12176 gradfun=3.5:8
12177 @end example
12178
12179 @item
12180 Specify radius, omitting the strength (which will fall-back to the default
12181 value):
12182 @example
12183 gradfun=radius=8
12184 @end example
12185
12186 @end itemize
12187
12188 @anchor{graphmonitor}
12189 @section graphmonitor
12190 Show various filtergraph stats.
12191
12192 With this filter one can debug complete filtergraph.
12193 Especially issues with links filling with queued frames.
12194
12195 The filter accepts the following options:
12196
12197 @table @option
12198 @item size, s
12199 Set video output size. Default is @var{hd720}.
12200
12201 @item opacity, o
12202 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
12203
12204 @item mode, m
12205 Set output mode, can be @var{fulll} or @var{compact}.
12206 In @var{compact} mode only filters with some queued frames have displayed stats.
12207
12208 @item flags, f
12209 Set flags which enable which stats are shown in video.
12210
12211 Available values for flags are:
12212 @table @samp
12213 @item queue
12214 Display number of queued frames in each link.
12215
12216 @item frame_count_in
12217 Display number of frames taken from filter.
12218
12219 @item frame_count_out
12220 Display number of frames given out from filter.
12221
12222 @item pts
12223 Display current filtered frame pts.
12224
12225 @item time
12226 Display current filtered frame time.
12227
12228 @item timebase
12229 Display time base for filter link.
12230
12231 @item format
12232 Display used format for filter link.
12233
12234 @item size
12235 Display video size or number of audio channels in case of audio used by filter link.
12236
12237 @item rate
12238 Display video frame rate or sample rate in case of audio used by filter link.
12239
12240 @item eof
12241 Display link output status.
12242 @end table
12243
12244 @item rate, r
12245 Set upper limit for video rate of output stream, Default value is @var{25}.
12246 This guarantee that output video frame rate will not be higher than this value.
12247 @end table
12248
12249 @section greyedge
12250 A color constancy variation filter which estimates scene illumination via grey edge algorithm
12251 and corrects the scene colors accordingly.
12252
12253 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
12254
12255 The filter accepts the following options:
12256
12257 @table @option
12258 @item difford
12259 The order of differentiation to be applied on the scene. Must be chosen in the range
12260 [0,2] and default value is 1.
12261
12262 @item minknorm
12263 The Minkowski parameter to be used for calculating the Minkowski distance. Must
12264 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
12265 max value instead of calculating Minkowski distance.
12266
12267 @item sigma
12268 The standard deviation of Gaussian blur to be applied on the scene. Must be
12269 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
12270 can't be equal to 0 if @var{difford} is greater than 0.
12271 @end table
12272
12273 @subsection Examples
12274 @itemize
12275
12276 @item
12277 Grey Edge:
12278 @example
12279 greyedge=difford=1:minknorm=5:sigma=2
12280 @end example
12281
12282 @item
12283 Max Edge:
12284 @example
12285 greyedge=difford=1:minknorm=0:sigma=2
12286 @end example
12287
12288 @end itemize
12289
12290 @anchor{haldclut}
12291 @section haldclut
12292
12293 Apply a Hald CLUT to a video stream.
12294
12295 First input is the video stream to process, and second one is the Hald CLUT.
12296 The Hald CLUT input can be a simple picture or a complete video stream.
12297
12298 The filter accepts the following options:
12299
12300 @table @option
12301 @item shortest
12302 Force termination when the shortest input terminates. Default is @code{0}.
12303 @item repeatlast
12304 Continue applying the last CLUT after the end of the stream. A value of
12305 @code{0} disable the filter after the last frame of the CLUT is reached.
12306 Default is @code{1}.
12307 @end table
12308
12309 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
12310 filters share the same internals).
12311
12312 This filter also supports the @ref{framesync} options.
12313
12314 More information about the Hald CLUT can be found on Eskil Steenberg's website
12315 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
12316
12317 @subsection Workflow examples
12318
12319 @subsubsection Hald CLUT video stream
12320
12321 Generate an identity Hald CLUT stream altered with various effects:
12322 @example
12323 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
12324 @end example
12325
12326 Note: make sure you use a lossless codec.
12327
12328 Then use it with @code{haldclut} to apply it on some random stream:
12329 @example
12330 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
12331 @end example
12332
12333 The Hald CLUT will be applied to the 10 first seconds (duration of
12334 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
12335 to the remaining frames of the @code{mandelbrot} stream.
12336
12337 @subsubsection Hald CLUT with preview
12338
12339 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
12340 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
12341 biggest possible square starting at the top left of the picture. The remaining
12342 padding pixels (bottom or right) will be ignored. This area can be used to add
12343 a preview of the Hald CLUT.
12344
12345 Typically, the following generated Hald CLUT will be supported by the
12346 @code{haldclut} filter:
12347
12348 @example
12349 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
12350    pad=iw+320 [padded_clut];
12351    smptebars=s=320x256, split [a][b];
12352    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
12353    [main][b] overlay=W-320" -frames:v 1 clut.png
12354 @end example
12355
12356 It contains the original and a preview of the effect of the CLUT: SMPTE color
12357 bars are displayed on the right-top, and below the same color bars processed by
12358 the color changes.
12359
12360 Then, the effect of this Hald CLUT can be visualized with:
12361 @example
12362 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
12363 @end example
12364
12365 @section hflip
12366
12367 Flip the input video horizontally.
12368
12369 For example, to horizontally flip the input video with @command{ffmpeg}:
12370 @example
12371 ffmpeg -i in.avi -vf "hflip" out.avi
12372 @end example
12373
12374 @section histeq
12375 This filter applies a global color histogram equalization on a
12376 per-frame basis.
12377
12378 It can be used to correct video that has a compressed range of pixel
12379 intensities.  The filter redistributes the pixel intensities to
12380 equalize their distribution across the intensity range. It may be
12381 viewed as an "automatically adjusting contrast filter". This filter is
12382 useful only for correcting degraded or poorly captured source
12383 video.
12384
12385 The filter accepts the following options:
12386
12387 @table @option
12388 @item strength
12389 Determine the amount of equalization to be applied.  As the strength
12390 is reduced, the distribution of pixel intensities more-and-more
12391 approaches that of the input frame. The value must be a float number
12392 in the range [0,1] and defaults to 0.200.
12393
12394 @item intensity
12395 Set the maximum intensity that can generated and scale the output
12396 values appropriately.  The strength should be set as desired and then
12397 the intensity can be limited if needed to avoid washing-out. The value
12398 must be a float number in the range [0,1] and defaults to 0.210.
12399
12400 @item antibanding
12401 Set the antibanding level. If enabled the filter will randomly vary
12402 the luminance of output pixels by a small amount to avoid banding of
12403 the histogram. Possible values are @code{none}, @code{weak} or
12404 @code{strong}. It defaults to @code{none}.
12405 @end table
12406
12407 @anchor{histogram}
12408 @section histogram
12409
12410 Compute and draw a color distribution histogram for the input video.
12411
12412 The computed histogram is a representation of the color component
12413 distribution in an image.
12414
12415 Standard histogram displays the color components distribution in an image.
12416 Displays color graph for each color component. Shows distribution of
12417 the Y, U, V, A or R, G, B components, depending on input format, in the
12418 current frame. Below each graph a color component scale meter is shown.
12419
12420 The filter accepts the following options:
12421
12422 @table @option
12423 @item level_height
12424 Set height of level. Default value is @code{200}.
12425 Allowed range is [50, 2048].
12426
12427 @item scale_height
12428 Set height of color scale. Default value is @code{12}.
12429 Allowed range is [0, 40].
12430
12431 @item display_mode
12432 Set display mode.
12433 It accepts the following values:
12434 @table @samp
12435 @item stack
12436 Per color component graphs are placed below each other.
12437
12438 @item parade
12439 Per color component graphs are placed side by side.
12440
12441 @item overlay
12442 Presents information identical to that in the @code{parade}, except
12443 that the graphs representing color components are superimposed directly
12444 over one another.
12445 @end table
12446 Default is @code{stack}.
12447
12448 @item levels_mode
12449 Set mode. Can be either @code{linear}, or @code{logarithmic}.
12450 Default is @code{linear}.
12451
12452 @item components
12453 Set what color components to display.
12454 Default is @code{7}.
12455
12456 @item fgopacity
12457 Set foreground opacity. Default is @code{0.7}.
12458
12459 @item bgopacity
12460 Set background opacity. Default is @code{0.5}.
12461 @end table
12462
12463 @subsection Examples
12464
12465 @itemize
12466
12467 @item
12468 Calculate and draw histogram:
12469 @example
12470 ffplay -i input -vf histogram
12471 @end example
12472
12473 @end itemize
12474
12475 @anchor{hqdn3d}
12476 @section hqdn3d
12477
12478 This is a high precision/quality 3d denoise filter. It aims to reduce
12479 image noise, producing smooth images and making still images really
12480 still. It should enhance compressibility.
12481
12482 It accepts the following optional parameters:
12483
12484 @table @option
12485 @item luma_spatial
12486 A non-negative floating point number which specifies spatial luma strength.
12487 It defaults to 4.0.
12488
12489 @item chroma_spatial
12490 A non-negative floating point number which specifies spatial chroma strength.
12491 It defaults to 3.0*@var{luma_spatial}/4.0.
12492
12493 @item luma_tmp
12494 A floating point number which specifies luma temporal strength. It defaults to
12495 6.0*@var{luma_spatial}/4.0.
12496
12497 @item chroma_tmp
12498 A floating point number which specifies chroma temporal strength. It defaults to
12499 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
12500 @end table
12501
12502 @subsection Commands
12503 This filter supports same @ref{commands} as options.
12504 The command accepts the same syntax of the corresponding option.
12505
12506 If the specified expression is not valid, it is kept at its current
12507 value.
12508
12509 @anchor{hwdownload}
12510 @section hwdownload
12511
12512 Download hardware frames to system memory.
12513
12514 The input must be in hardware frames, and the output a non-hardware format.
12515 Not all formats will be supported on the output - it may be necessary to insert
12516 an additional @option{format} filter immediately following in the graph to get
12517 the output in a supported format.
12518
12519 @section hwmap
12520
12521 Map hardware frames to system memory or to another device.
12522
12523 This filter has several different modes of operation; which one is used depends
12524 on the input and output formats:
12525 @itemize
12526 @item
12527 Hardware frame input, normal frame output
12528
12529 Map the input frames to system memory and pass them to the output.  If the
12530 original hardware frame is later required (for example, after overlaying
12531 something else on part of it), the @option{hwmap} filter can be used again
12532 in the next mode to retrieve it.
12533 @item
12534 Normal frame input, hardware frame output
12535
12536 If the input is actually a software-mapped hardware frame, then unmap it -
12537 that is, return the original hardware frame.
12538
12539 Otherwise, a device must be provided.  Create new hardware surfaces on that
12540 device for the output, then map them back to the software format at the input
12541 and give those frames to the preceding filter.  This will then act like the
12542 @option{hwupload} filter, but may be able to avoid an additional copy when
12543 the input is already in a compatible format.
12544 @item
12545 Hardware frame input and output
12546
12547 A device must be supplied for the output, either directly or with the
12548 @option{derive_device} option.  The input and output devices must be of
12549 different types and compatible - the exact meaning of this is
12550 system-dependent, but typically it means that they must refer to the same
12551 underlying hardware context (for example, refer to the same graphics card).
12552
12553 If the input frames were originally created on the output device, then unmap
12554 to retrieve the original frames.
12555
12556 Otherwise, map the frames to the output device - create new hardware frames
12557 on the output corresponding to the frames on the input.
12558 @end itemize
12559
12560 The following additional parameters are accepted:
12561
12562 @table @option
12563 @item mode
12564 Set the frame mapping mode.  Some combination of:
12565 @table @var
12566 @item read
12567 The mapped frame should be readable.
12568 @item write
12569 The mapped frame should be writeable.
12570 @item overwrite
12571 The mapping will always overwrite the entire frame.
12572
12573 This may improve performance in some cases, as the original contents of the
12574 frame need not be loaded.
12575 @item direct
12576 The mapping must not involve any copying.
12577
12578 Indirect mappings to copies of frames are created in some cases where either
12579 direct mapping is not possible or it would have unexpected properties.
12580 Setting this flag ensures that the mapping is direct and will fail if that is
12581 not possible.
12582 @end table
12583 Defaults to @var{read+write} if not specified.
12584
12585 @item derive_device @var{type}
12586 Rather than using the device supplied at initialisation, instead derive a new
12587 device of type @var{type} from the device the input frames exist on.
12588
12589 @item reverse
12590 In a hardware to hardware mapping, map in reverse - create frames in the sink
12591 and map them back to the source.  This may be necessary in some cases where
12592 a mapping in one direction is required but only the opposite direction is
12593 supported by the devices being used.
12594
12595 This option is dangerous - it may break the preceding filter in undefined
12596 ways if there are any additional constraints on that filter's output.
12597 Do not use it without fully understanding the implications of its use.
12598 @end table
12599
12600 @anchor{hwupload}
12601 @section hwupload
12602
12603 Upload system memory frames to hardware surfaces.
12604
12605 The device to upload to must be supplied when the filter is initialised.  If
12606 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
12607 option or with the @option{derive_device} option.  The input and output devices
12608 must be of different types and compatible - the exact meaning of this is
12609 system-dependent, but typically it means that they must refer to the same
12610 underlying hardware context (for example, refer to the same graphics card).
12611
12612 The following additional parameters are accepted:
12613
12614 @table @option
12615 @item derive_device @var{type}
12616 Rather than using the device supplied at initialisation, instead derive a new
12617 device of type @var{type} from the device the input frames exist on.
12618 @end table
12619
12620 @anchor{hwupload_cuda}
12621 @section hwupload_cuda
12622
12623 Upload system memory frames to a CUDA device.
12624
12625 It accepts the following optional parameters:
12626
12627 @table @option
12628 @item device
12629 The number of the CUDA device to use
12630 @end table
12631
12632 @section hqx
12633
12634 Apply a high-quality magnification filter designed for pixel art. This filter
12635 was originally created by Maxim Stepin.
12636
12637 It accepts the following option:
12638
12639 @table @option
12640 @item n
12641 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
12642 @code{hq3x} and @code{4} for @code{hq4x}.
12643 Default is @code{3}.
12644 @end table
12645
12646 @section hstack
12647 Stack input videos horizontally.
12648
12649 All streams must be of same pixel format and of same height.
12650
12651 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
12652 to create same output.
12653
12654 The filter accepts the following option:
12655
12656 @table @option
12657 @item inputs
12658 Set number of input streams. Default is 2.
12659
12660 @item shortest
12661 If set to 1, force the output to terminate when the shortest input
12662 terminates. Default value is 0.
12663 @end table
12664
12665 @section hue
12666
12667 Modify the hue and/or the saturation of the input.
12668
12669 It accepts the following parameters:
12670
12671 @table @option
12672 @item h
12673 Specify the hue angle as a number of degrees. It accepts an expression,
12674 and defaults to "0".
12675
12676 @item s
12677 Specify the saturation in the [-10,10] range. It accepts an expression and
12678 defaults to "1".
12679
12680 @item H
12681 Specify the hue angle as a number of radians. It accepts an
12682 expression, and defaults to "0".
12683
12684 @item b
12685 Specify the brightness in the [-10,10] range. It accepts an expression and
12686 defaults to "0".
12687 @end table
12688
12689 @option{h} and @option{H} are mutually exclusive, and can't be
12690 specified at the same time.
12691
12692 The @option{b}, @option{h}, @option{H} and @option{s} option values are
12693 expressions containing the following constants:
12694
12695 @table @option
12696 @item n
12697 frame count of the input frame starting from 0
12698
12699 @item pts
12700 presentation timestamp of the input frame expressed in time base units
12701
12702 @item r
12703 frame rate of the input video, NAN if the input frame rate is unknown
12704
12705 @item t
12706 timestamp expressed in seconds, NAN if the input timestamp is unknown
12707
12708 @item tb
12709 time base of the input video
12710 @end table
12711
12712 @subsection Examples
12713
12714 @itemize
12715 @item
12716 Set the hue to 90 degrees and the saturation to 1.0:
12717 @example
12718 hue=h=90:s=1
12719 @end example
12720
12721 @item
12722 Same command but expressing the hue in radians:
12723 @example
12724 hue=H=PI/2:s=1
12725 @end example
12726
12727 @item
12728 Rotate hue and make the saturation swing between 0
12729 and 2 over a period of 1 second:
12730 @example
12731 hue="H=2*PI*t: s=sin(2*PI*t)+1"
12732 @end example
12733
12734 @item
12735 Apply a 3 seconds saturation fade-in effect starting at 0:
12736 @example
12737 hue="s=min(t/3\,1)"
12738 @end example
12739
12740 The general fade-in expression can be written as:
12741 @example
12742 hue="s=min(0\, max((t-START)/DURATION\, 1))"
12743 @end example
12744
12745 @item
12746 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
12747 @example
12748 hue="s=max(0\, min(1\, (8-t)/3))"
12749 @end example
12750
12751 The general fade-out expression can be written as:
12752 @example
12753 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
12754 @end example
12755
12756 @end itemize
12757
12758 @subsection Commands
12759
12760 This filter supports the following commands:
12761 @table @option
12762 @item b
12763 @item s
12764 @item h
12765 @item H
12766 Modify the hue and/or the saturation and/or brightness of the input video.
12767 The command accepts the same syntax of the corresponding option.
12768
12769 If the specified expression is not valid, it is kept at its current
12770 value.
12771 @end table
12772
12773 @section hysteresis
12774
12775 Grow first stream into second stream by connecting components.
12776 This makes it possible to build more robust edge masks.
12777
12778 This filter accepts the following options:
12779
12780 @table @option
12781 @item planes
12782 Set which planes will be processed as bitmap, unprocessed planes will be
12783 copied from first stream.
12784 By default value 0xf, all planes will be processed.
12785
12786 @item threshold
12787 Set threshold which is used in filtering. If pixel component value is higher than
12788 this value filter algorithm for connecting components is activated.
12789 By default value is 0.
12790 @end table
12791
12792 The @code{hysteresis} filter also supports the @ref{framesync} options.
12793
12794 @section idet
12795
12796 Detect video interlacing type.
12797
12798 This filter tries to detect if the input frames are interlaced, progressive,
12799 top or bottom field first. It will also try to detect fields that are
12800 repeated between adjacent frames (a sign of telecine).
12801
12802 Single frame detection considers only immediately adjacent frames when classifying each frame.
12803 Multiple frame detection incorporates the classification history of previous frames.
12804
12805 The filter will log these metadata values:
12806
12807 @table @option
12808 @item single.current_frame
12809 Detected type of current frame using single-frame detection. One of:
12810 ``tff'' (top field first), ``bff'' (bottom field first),
12811 ``progressive'', or ``undetermined''
12812
12813 @item single.tff
12814 Cumulative number of frames detected as top field first using single-frame detection.
12815
12816 @item multiple.tff
12817 Cumulative number of frames detected as top field first using multiple-frame detection.
12818
12819 @item single.bff
12820 Cumulative number of frames detected as bottom field first using single-frame detection.
12821
12822 @item multiple.current_frame
12823 Detected type of current frame using multiple-frame detection. One of:
12824 ``tff'' (top field first), ``bff'' (bottom field first),
12825 ``progressive'', or ``undetermined''
12826
12827 @item multiple.bff
12828 Cumulative number of frames detected as bottom field first using multiple-frame detection.
12829
12830 @item single.progressive
12831 Cumulative number of frames detected as progressive using single-frame detection.
12832
12833 @item multiple.progressive
12834 Cumulative number of frames detected as progressive using multiple-frame detection.
12835
12836 @item single.undetermined
12837 Cumulative number of frames that could not be classified using single-frame detection.
12838
12839 @item multiple.undetermined
12840 Cumulative number of frames that could not be classified using multiple-frame detection.
12841
12842 @item repeated.current_frame
12843 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
12844
12845 @item repeated.neither
12846 Cumulative number of frames with no repeated field.
12847
12848 @item repeated.top
12849 Cumulative number of frames with the top field repeated from the previous frame's top field.
12850
12851 @item repeated.bottom
12852 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
12853 @end table
12854
12855 The filter accepts the following options:
12856
12857 @table @option
12858 @item intl_thres
12859 Set interlacing threshold.
12860 @item prog_thres
12861 Set progressive threshold.
12862 @item rep_thres
12863 Threshold for repeated field detection.
12864 @item half_life
12865 Number of frames after which a given frame's contribution to the
12866 statistics is halved (i.e., it contributes only 0.5 to its
12867 classification). The default of 0 means that all frames seen are given
12868 full weight of 1.0 forever.
12869 @item analyze_interlaced_flag
12870 When this is not 0 then idet will use the specified number of frames to determine
12871 if the interlaced flag is accurate, it will not count undetermined frames.
12872 If the flag is found to be accurate it will be used without any further
12873 computations, if it is found to be inaccurate it will be cleared without any
12874 further computations. This allows inserting the idet filter as a low computational
12875 method to clean up the interlaced flag
12876 @end table
12877
12878 @section il
12879
12880 Deinterleave or interleave fields.
12881
12882 This filter allows one to process interlaced images fields without
12883 deinterlacing them. Deinterleaving splits the input frame into 2
12884 fields (so called half pictures). Odd lines are moved to the top
12885 half of the output image, even lines to the bottom half.
12886 You can process (filter) them independently and then re-interleave them.
12887
12888 The filter accepts the following options:
12889
12890 @table @option
12891 @item luma_mode, l
12892 @item chroma_mode, c
12893 @item alpha_mode, a
12894 Available values for @var{luma_mode}, @var{chroma_mode} and
12895 @var{alpha_mode} are:
12896
12897 @table @samp
12898 @item none
12899 Do nothing.
12900
12901 @item deinterleave, d
12902 Deinterleave fields, placing one above the other.
12903
12904 @item interleave, i
12905 Interleave fields. Reverse the effect of deinterleaving.
12906 @end table
12907 Default value is @code{none}.
12908
12909 @item luma_swap, ls
12910 @item chroma_swap, cs
12911 @item alpha_swap, as
12912 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
12913 @end table
12914
12915 @subsection Commands
12916
12917 This filter supports the all above options as @ref{commands}.
12918
12919 @section inflate
12920
12921 Apply inflate effect to the video.
12922
12923 This filter replaces the pixel by the local(3x3) average by taking into account
12924 only values higher than the pixel.
12925
12926 It accepts the following options:
12927
12928 @table @option
12929 @item threshold0
12930 @item threshold1
12931 @item threshold2
12932 @item threshold3
12933 Limit the maximum change for each plane, default is 65535.
12934 If 0, plane will remain unchanged.
12935 @end table
12936
12937 @subsection Commands
12938
12939 This filter supports the all above options as @ref{commands}.
12940
12941 @section interlace
12942
12943 Simple interlacing filter from progressive contents. This interleaves upper (or
12944 lower) lines from odd frames with lower (or upper) lines from even frames,
12945 halving the frame rate and preserving image height.
12946
12947 @example
12948    Original        Original             New Frame
12949    Frame 'j'      Frame 'j+1'             (tff)
12950   ==========      ===========       ==================
12951     Line 0  -------------------->    Frame 'j' Line 0
12952     Line 1          Line 1  ---->   Frame 'j+1' Line 1
12953     Line 2 --------------------->    Frame 'j' Line 2
12954     Line 3          Line 3  ---->   Frame 'j+1' Line 3
12955      ...             ...                   ...
12956 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
12957 @end example
12958
12959 It accepts the following optional parameters:
12960
12961 @table @option
12962 @item scan
12963 This determines whether the interlaced frame is taken from the even
12964 (tff - default) or odd (bff) lines of the progressive frame.
12965
12966 @item lowpass
12967 Vertical lowpass filter to avoid twitter interlacing and
12968 reduce moire patterns.
12969
12970 @table @samp
12971 @item 0, off
12972 Disable vertical lowpass filter
12973
12974 @item 1, linear
12975 Enable linear filter (default)
12976
12977 @item 2, complex
12978 Enable complex filter. This will slightly less reduce twitter and moire
12979 but better retain detail and subjective sharpness impression.
12980
12981 @end table
12982 @end table
12983
12984 @section kerndeint
12985
12986 Deinterlace input video by applying Donald Graft's adaptive kernel
12987 deinterling. Work on interlaced parts of a video to produce
12988 progressive frames.
12989
12990 The description of the accepted parameters follows.
12991
12992 @table @option
12993 @item thresh
12994 Set the threshold which affects the filter's tolerance when
12995 determining if a pixel line must be processed. It must be an integer
12996 in the range [0,255] and defaults to 10. A value of 0 will result in
12997 applying the process on every pixels.
12998
12999 @item map
13000 Paint pixels exceeding the threshold value to white if set to 1.
13001 Default is 0.
13002
13003 @item order
13004 Set the fields order. Swap fields if set to 1, leave fields alone if
13005 0. Default is 0.
13006
13007 @item sharp
13008 Enable additional sharpening if set to 1. Default is 0.
13009
13010 @item twoway
13011 Enable twoway sharpening if set to 1. Default is 0.
13012 @end table
13013
13014 @subsection Examples
13015
13016 @itemize
13017 @item
13018 Apply default values:
13019 @example
13020 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
13021 @end example
13022
13023 @item
13024 Enable additional sharpening:
13025 @example
13026 kerndeint=sharp=1
13027 @end example
13028
13029 @item
13030 Paint processed pixels in white:
13031 @example
13032 kerndeint=map=1
13033 @end example
13034 @end itemize
13035
13036 @section lagfun
13037
13038 Slowly update darker pixels.
13039
13040 This filter makes short flashes of light appear longer.
13041 This filter accepts the following options:
13042
13043 @table @option
13044 @item decay
13045 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
13046
13047 @item planes
13048 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
13049 @end table
13050
13051 @section lenscorrection
13052
13053 Correct radial lens distortion
13054
13055 This filter can be used to correct for radial distortion as can result from the use
13056 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
13057 one can use tools available for example as part of opencv or simply trial-and-error.
13058 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
13059 and extract the k1 and k2 coefficients from the resulting matrix.
13060
13061 Note that effectively the same filter is available in the open-source tools Krita and
13062 Digikam from the KDE project.
13063
13064 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
13065 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
13066 brightness distribution, so you may want to use both filters together in certain
13067 cases, though you will have to take care of ordering, i.e. whether vignetting should
13068 be applied before or after lens correction.
13069
13070 @subsection Options
13071
13072 The filter accepts the following options:
13073
13074 @table @option
13075 @item cx
13076 Relative x-coordinate of the focal point of the image, and thereby the center of the
13077 distortion. This value has a range [0,1] and is expressed as fractions of the image
13078 width. Default is 0.5.
13079 @item cy
13080 Relative y-coordinate of the focal point of the image, and thereby the center of the
13081 distortion. This value has a range [0,1] and is expressed as fractions of the image
13082 height. Default is 0.5.
13083 @item k1
13084 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
13085 no correction. Default is 0.
13086 @item k2
13087 Coefficient of the double quadratic correction term. This value has a range [-1,1].
13088 0 means no correction. Default is 0.
13089 @end table
13090
13091 The formula that generates the correction is:
13092
13093 @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)
13094
13095 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
13096 distances from the focal point in the source and target images, respectively.
13097
13098 @section lensfun
13099
13100 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
13101
13102 The @code{lensfun} filter requires the camera make, camera model, and lens model
13103 to apply the lens correction. The filter will load the lensfun database and
13104 query it to find the corresponding camera and lens entries in the database. As
13105 long as these entries can be found with the given options, the filter can
13106 perform corrections on frames. Note that incomplete strings will result in the
13107 filter choosing the best match with the given options, and the filter will
13108 output the chosen camera and lens models (logged with level "info"). You must
13109 provide the make, camera model, and lens model as they are required.
13110
13111 The filter accepts the following options:
13112
13113 @table @option
13114 @item make
13115 The make of the camera (for example, "Canon"). This option is required.
13116
13117 @item model
13118 The model of the camera (for example, "Canon EOS 100D"). This option is
13119 required.
13120
13121 @item lens_model
13122 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
13123 option is required.
13124
13125 @item mode
13126 The type of correction to apply. The following values are valid options:
13127
13128 @table @samp
13129 @item vignetting
13130 Enables fixing lens vignetting.
13131
13132 @item geometry
13133 Enables fixing lens geometry. This is the default.
13134
13135 @item subpixel
13136 Enables fixing chromatic aberrations.
13137
13138 @item vig_geo
13139 Enables fixing lens vignetting and lens geometry.
13140
13141 @item vig_subpixel
13142 Enables fixing lens vignetting and chromatic aberrations.
13143
13144 @item distortion
13145 Enables fixing both lens geometry and chromatic aberrations.
13146
13147 @item all
13148 Enables all possible corrections.
13149
13150 @end table
13151 @item focal_length
13152 The focal length of the image/video (zoom; expected constant for video). For
13153 example, a 18--55mm lens has focal length range of [18--55], so a value in that
13154 range should be chosen when using that lens. Default 18.
13155
13156 @item aperture
13157 The aperture of the image/video (expected constant for video). Note that
13158 aperture is only used for vignetting correction. Default 3.5.
13159
13160 @item focus_distance
13161 The focus distance of the image/video (expected constant for video). Note that
13162 focus distance is only used for vignetting and only slightly affects the
13163 vignetting correction process. If unknown, leave it at the default value (which
13164 is 1000).
13165
13166 @item scale
13167 The scale factor which is applied after transformation. After correction the
13168 video is no longer necessarily rectangular. This parameter controls how much of
13169 the resulting image is visible. The value 0 means that a value will be chosen
13170 automatically such that there is little or no unmapped area in the output
13171 image. 1.0 means that no additional scaling is done. Lower values may result
13172 in more of the corrected image being visible, while higher values may avoid
13173 unmapped areas in the output.
13174
13175 @item target_geometry
13176 The target geometry of the output image/video. The following values are valid
13177 options:
13178
13179 @table @samp
13180 @item rectilinear (default)
13181 @item fisheye
13182 @item panoramic
13183 @item equirectangular
13184 @item fisheye_orthographic
13185 @item fisheye_stereographic
13186 @item fisheye_equisolid
13187 @item fisheye_thoby
13188 @end table
13189 @item reverse
13190 Apply the reverse of image correction (instead of correcting distortion, apply
13191 it).
13192
13193 @item interpolation
13194 The type of interpolation used when correcting distortion. The following values
13195 are valid options:
13196
13197 @table @samp
13198 @item nearest
13199 @item linear (default)
13200 @item lanczos
13201 @end table
13202 @end table
13203
13204 @subsection Examples
13205
13206 @itemize
13207 @item
13208 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
13209 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
13210 aperture of "8.0".
13211
13212 @example
13213 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
13214 @end example
13215
13216 @item
13217 Apply the same as before, but only for the first 5 seconds of video.
13218
13219 @example
13220 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
13221 @end example
13222
13223 @end itemize
13224
13225 @section libvmaf
13226
13227 Obtain the VMAF (Video Multi-Method Assessment Fusion)
13228 score between two input videos.
13229
13230 The obtained VMAF score is printed through the logging system.
13231
13232 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
13233 After installing the library it can be enabled using:
13234 @code{./configure --enable-libvmaf}.
13235 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
13236
13237 The filter has following options:
13238
13239 @table @option
13240 @item model_path
13241 Set the model path which is to be used for SVM.
13242 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
13243
13244 @item log_path
13245 Set the file path to be used to store logs.
13246
13247 @item log_fmt
13248 Set the format of the log file (csv, json or xml).
13249
13250 @item enable_transform
13251 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
13252 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
13253 Default value: @code{false}
13254
13255 @item phone_model
13256 Invokes the phone model which will generate VMAF scores higher than in the
13257 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
13258 Default value: @code{false}
13259
13260 @item psnr
13261 Enables computing psnr along with vmaf.
13262 Default value: @code{false}
13263
13264 @item ssim
13265 Enables computing ssim along with vmaf.
13266 Default value: @code{false}
13267
13268 @item ms_ssim
13269 Enables computing ms_ssim along with vmaf.
13270 Default value: @code{false}
13271
13272 @item pool
13273 Set the pool method to be used for computing vmaf.
13274 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
13275
13276 @item n_threads
13277 Set number of threads to be used when computing vmaf.
13278 Default value: @code{0}, which makes use of all available logical processors.
13279
13280 @item n_subsample
13281 Set interval for frame subsampling used when computing vmaf.
13282 Default value: @code{1}
13283
13284 @item enable_conf_interval
13285 Enables confidence interval.
13286 Default value: @code{false}
13287 @end table
13288
13289 This filter also supports the @ref{framesync} options.
13290
13291 @subsection Examples
13292 @itemize
13293 @item
13294 On the below examples the input file @file{main.mpg} being processed is
13295 compared with the reference file @file{ref.mpg}.
13296
13297 @example
13298 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
13299 @end example
13300
13301 @item
13302 Example with options:
13303 @example
13304 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
13305 @end example
13306
13307 @item
13308 Example with options and different containers:
13309 @example
13310 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 -
13311 @end example
13312 @end itemize
13313
13314 @section limiter
13315
13316 Limits the pixel components values to the specified range [min, max].
13317
13318 The filter accepts the following options:
13319
13320 @table @option
13321 @item min
13322 Lower bound. Defaults to the lowest allowed value for the input.
13323
13324 @item max
13325 Upper bound. Defaults to the highest allowed value for the input.
13326
13327 @item planes
13328 Specify which planes will be processed. Defaults to all available.
13329 @end table
13330
13331 @section loop
13332
13333 Loop video frames.
13334
13335 The filter accepts the following options:
13336
13337 @table @option
13338 @item loop
13339 Set the number of loops. Setting this value to -1 will result in infinite loops.
13340 Default is 0.
13341
13342 @item size
13343 Set maximal size in number of frames. Default is 0.
13344
13345 @item start
13346 Set first frame of loop. Default is 0.
13347 @end table
13348
13349 @subsection Examples
13350
13351 @itemize
13352 @item
13353 Loop single first frame infinitely:
13354 @example
13355 loop=loop=-1:size=1:start=0
13356 @end example
13357
13358 @item
13359 Loop single first frame 10 times:
13360 @example
13361 loop=loop=10:size=1:start=0
13362 @end example
13363
13364 @item
13365 Loop 10 first frames 5 times:
13366 @example
13367 loop=loop=5:size=10:start=0
13368 @end example
13369 @end itemize
13370
13371 @section lut1d
13372
13373 Apply a 1D LUT to an input video.
13374
13375 The filter accepts the following options:
13376
13377 @table @option
13378 @item file
13379 Set the 1D LUT file name.
13380
13381 Currently supported formats:
13382 @table @samp
13383 @item cube
13384 Iridas
13385 @item csp
13386 cineSpace
13387 @end table
13388
13389 @item interp
13390 Select interpolation mode.
13391
13392 Available values are:
13393
13394 @table @samp
13395 @item nearest
13396 Use values from the nearest defined point.
13397 @item linear
13398 Interpolate values using the linear interpolation.
13399 @item cosine
13400 Interpolate values using the cosine interpolation.
13401 @item cubic
13402 Interpolate values using the cubic interpolation.
13403 @item spline
13404 Interpolate values using the spline interpolation.
13405 @end table
13406 @end table
13407
13408 @anchor{lut3d}
13409 @section lut3d
13410
13411 Apply a 3D LUT to an input video.
13412
13413 The filter accepts the following options:
13414
13415 @table @option
13416 @item file
13417 Set the 3D LUT file name.
13418
13419 Currently supported formats:
13420 @table @samp
13421 @item 3dl
13422 AfterEffects
13423 @item cube
13424 Iridas
13425 @item dat
13426 DaVinci
13427 @item m3d
13428 Pandora
13429 @item csp
13430 cineSpace
13431 @end table
13432 @item interp
13433 Select interpolation mode.
13434
13435 Available values are:
13436
13437 @table @samp
13438 @item nearest
13439 Use values from the nearest defined point.
13440 @item trilinear
13441 Interpolate values using the 8 points defining a cube.
13442 @item tetrahedral
13443 Interpolate values using a tetrahedron.
13444 @end table
13445 @end table
13446
13447 @section lumakey
13448
13449 Turn certain luma values into transparency.
13450
13451 The filter accepts the following options:
13452
13453 @table @option
13454 @item threshold
13455 Set the luma which will be used as base for transparency.
13456 Default value is @code{0}.
13457
13458 @item tolerance
13459 Set the range of luma values to be keyed out.
13460 Default value is @code{0.01}.
13461
13462 @item softness
13463 Set the range of softness. Default value is @code{0}.
13464 Use this to control gradual transition from zero to full transparency.
13465 @end table
13466
13467 @subsection Commands
13468 This filter supports same @ref{commands} as options.
13469 The command accepts the same syntax of the corresponding option.
13470
13471 If the specified expression is not valid, it is kept at its current
13472 value.
13473
13474 @section lut, lutrgb, lutyuv
13475
13476 Compute a look-up table for binding each pixel component input value
13477 to an output value, and apply it to the input video.
13478
13479 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
13480 to an RGB input video.
13481
13482 These filters accept the following parameters:
13483 @table @option
13484 @item c0
13485 set first pixel component expression
13486 @item c1
13487 set second pixel component expression
13488 @item c2
13489 set third pixel component expression
13490 @item c3
13491 set fourth pixel component expression, corresponds to the alpha component
13492
13493 @item r
13494 set red component expression
13495 @item g
13496 set green component expression
13497 @item b
13498 set blue component expression
13499 @item a
13500 alpha component expression
13501
13502 @item y
13503 set Y/luminance component expression
13504 @item u
13505 set U/Cb component expression
13506 @item v
13507 set V/Cr component expression
13508 @end table
13509
13510 Each of them specifies the expression to use for computing the lookup table for
13511 the corresponding pixel component values.
13512
13513 The exact component associated to each of the @var{c*} options depends on the
13514 format in input.
13515
13516 The @var{lut} filter requires either YUV or RGB pixel formats in input,
13517 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
13518
13519 The expressions can contain the following constants and functions:
13520
13521 @table @option
13522 @item w
13523 @item h
13524 The input width and height.
13525
13526 @item val
13527 The input value for the pixel component.
13528
13529 @item clipval
13530 The input value, clipped to the @var{minval}-@var{maxval} range.
13531
13532 @item maxval
13533 The maximum value for the pixel component.
13534
13535 @item minval
13536 The minimum value for the pixel component.
13537
13538 @item negval
13539 The negated value for the pixel component value, clipped to the
13540 @var{minval}-@var{maxval} range; it corresponds to the expression
13541 "maxval-clipval+minval".
13542
13543 @item clip(val)
13544 The computed value in @var{val}, clipped to the
13545 @var{minval}-@var{maxval} range.
13546
13547 @item gammaval(gamma)
13548 The computed gamma correction value of the pixel component value,
13549 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
13550 expression
13551 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
13552
13553 @end table
13554
13555 All expressions default to "val".
13556
13557 @subsection Examples
13558
13559 @itemize
13560 @item
13561 Negate input video:
13562 @example
13563 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
13564 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
13565 @end example
13566
13567 The above is the same as:
13568 @example
13569 lutrgb="r=negval:g=negval:b=negval"
13570 lutyuv="y=negval:u=negval:v=negval"
13571 @end example
13572
13573 @item
13574 Negate luminance:
13575 @example
13576 lutyuv=y=negval
13577 @end example
13578
13579 @item
13580 Remove chroma components, turning the video into a graytone image:
13581 @example
13582 lutyuv="u=128:v=128"
13583 @end example
13584
13585 @item
13586 Apply a luma burning effect:
13587 @example
13588 lutyuv="y=2*val"
13589 @end example
13590
13591 @item
13592 Remove green and blue components:
13593 @example
13594 lutrgb="g=0:b=0"
13595 @end example
13596
13597 @item
13598 Set a constant alpha channel value on input:
13599 @example
13600 format=rgba,lutrgb=a="maxval-minval/2"
13601 @end example
13602
13603 @item
13604 Correct luminance gamma by a factor of 0.5:
13605 @example
13606 lutyuv=y=gammaval(0.5)
13607 @end example
13608
13609 @item
13610 Discard least significant bits of luma:
13611 @example
13612 lutyuv=y='bitand(val, 128+64+32)'
13613 @end example
13614
13615 @item
13616 Technicolor like effect:
13617 @example
13618 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
13619 @end example
13620 @end itemize
13621
13622 @section lut2, tlut2
13623
13624 The @code{lut2} filter takes two input streams and outputs one
13625 stream.
13626
13627 The @code{tlut2} (time lut2) filter takes two consecutive frames
13628 from one single stream.
13629
13630 This filter accepts the following parameters:
13631 @table @option
13632 @item c0
13633 set first pixel component expression
13634 @item c1
13635 set second pixel component expression
13636 @item c2
13637 set third pixel component expression
13638 @item c3
13639 set fourth pixel component expression, corresponds to the alpha component
13640
13641 @item d
13642 set output bit depth, only available for @code{lut2} filter. By default is 0,
13643 which means bit depth is automatically picked from first input format.
13644 @end table
13645
13646 The @code{lut2} filter also supports the @ref{framesync} options.
13647
13648 Each of them specifies the expression to use for computing the lookup table for
13649 the corresponding pixel component values.
13650
13651 The exact component associated to each of the @var{c*} options depends on the
13652 format in inputs.
13653
13654 The expressions can contain the following constants:
13655
13656 @table @option
13657 @item w
13658 @item h
13659 The input width and height.
13660
13661 @item x
13662 The first input value for the pixel component.
13663
13664 @item y
13665 The second input value for the pixel component.
13666
13667 @item bdx
13668 The first input video bit depth.
13669
13670 @item bdy
13671 The second input video bit depth.
13672 @end table
13673
13674 All expressions default to "x".
13675
13676 @subsection Examples
13677
13678 @itemize
13679 @item
13680 Highlight differences between two RGB video streams:
13681 @example
13682 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)'
13683 @end example
13684
13685 @item
13686 Highlight differences between two YUV video streams:
13687 @example
13688 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)'
13689 @end example
13690
13691 @item
13692 Show max difference between two video streams:
13693 @example
13694 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)))'
13695 @end example
13696 @end itemize
13697
13698 @section maskedclamp
13699
13700 Clamp the first input stream with the second input and third input stream.
13701
13702 Returns the value of first stream to be between second input
13703 stream - @code{undershoot} and third input stream + @code{overshoot}.
13704
13705 This filter accepts the following options:
13706 @table @option
13707 @item undershoot
13708 Default value is @code{0}.
13709
13710 @item overshoot
13711 Default value is @code{0}.
13712
13713 @item planes
13714 Set which planes will be processed as bitmap, unprocessed planes will be
13715 copied from first stream.
13716 By default value 0xf, all planes will be processed.
13717 @end table
13718
13719 @section maskedmax
13720
13721 Merge the second and third input stream into output stream using absolute differences
13722 between second input stream and first input stream and absolute difference between
13723 third input stream and first input stream. The picked value will be from second input
13724 stream if second absolute difference is greater than first one or from third input stream
13725 otherwise.
13726
13727 This filter accepts the following options:
13728 @table @option
13729 @item planes
13730 Set which planes will be processed as bitmap, unprocessed planes will be
13731 copied from first stream.
13732 By default value 0xf, all planes will be processed.
13733 @end table
13734
13735 @section maskedmerge
13736
13737 Merge the first input stream with the second input stream using per pixel
13738 weights in the third input stream.
13739
13740 A value of 0 in the third stream pixel component means that pixel component
13741 from first stream is returned unchanged, while maximum value (eg. 255 for
13742 8-bit videos) means that pixel component from second stream is returned
13743 unchanged. Intermediate values define the amount of merging between both
13744 input stream's pixel components.
13745
13746 This filter accepts the following options:
13747 @table @option
13748 @item planes
13749 Set which planes will be processed as bitmap, unprocessed planes will be
13750 copied from first stream.
13751 By default value 0xf, all planes will be processed.
13752 @end table
13753
13754 @section maskedmin
13755
13756 Merge the second and third input stream into output stream using absolute differences
13757 between second input stream and first input stream and absolute difference between
13758 third input stream and first input stream. The picked value will be from second input
13759 stream if second absolute difference is less than first one or from third input stream
13760 otherwise.
13761
13762 This filter accepts the following options:
13763 @table @option
13764 @item planes
13765 Set which planes will be processed as bitmap, unprocessed planes will be
13766 copied from first stream.
13767 By default value 0xf, all planes will be processed.
13768 @end table
13769
13770 @section maskedthreshold
13771 Pick pixels comparing absolute difference of two video streams with fixed
13772 threshold.
13773
13774 If absolute difference between pixel component of first and second video
13775 stream is equal or lower than user supplied threshold than pixel component
13776 from first video stream is picked, otherwise pixel component from second
13777 video stream is picked.
13778
13779 This filter accepts the following options:
13780 @table @option
13781 @item threshold
13782 Set threshold used when picking pixels from absolute difference from two input
13783 video streams.
13784
13785 @item planes
13786 Set which planes will be processed as bitmap, unprocessed planes will be
13787 copied from second stream.
13788 By default value 0xf, all planes will be processed.
13789 @end table
13790
13791 @section maskfun
13792 Create mask from input video.
13793
13794 For example it is useful to create motion masks after @code{tblend} filter.
13795
13796 This filter accepts the following options:
13797
13798 @table @option
13799 @item low
13800 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
13801
13802 @item high
13803 Set high threshold. Any pixel component higher than this value will be set to max value
13804 allowed for current pixel format.
13805
13806 @item planes
13807 Set planes to filter, by default all available planes are filtered.
13808
13809 @item fill
13810 Fill all frame pixels with this value.
13811
13812 @item sum
13813 Set max average pixel value for frame. If sum of all pixel components is higher that this
13814 average, output frame will be completely filled with value set by @var{fill} option.
13815 Typically useful for scene changes when used in combination with @code{tblend} filter.
13816 @end table
13817
13818 @section mcdeint
13819
13820 Apply motion-compensation deinterlacing.
13821
13822 It needs one field per frame as input and must thus be used together
13823 with yadif=1/3 or equivalent.
13824
13825 This filter accepts the following options:
13826 @table @option
13827 @item mode
13828 Set the deinterlacing mode.
13829
13830 It accepts one of the following values:
13831 @table @samp
13832 @item fast
13833 @item medium
13834 @item slow
13835 use iterative motion estimation
13836 @item extra_slow
13837 like @samp{slow}, but use multiple reference frames.
13838 @end table
13839 Default value is @samp{fast}.
13840
13841 @item parity
13842 Set the picture field parity assumed for the input video. It must be
13843 one of the following values:
13844
13845 @table @samp
13846 @item 0, tff
13847 assume top field first
13848 @item 1, bff
13849 assume bottom field first
13850 @end table
13851
13852 Default value is @samp{bff}.
13853
13854 @item qp
13855 Set per-block quantization parameter (QP) used by the internal
13856 encoder.
13857
13858 Higher values should result in a smoother motion vector field but less
13859 optimal individual vectors. Default value is 1.
13860 @end table
13861
13862 @section median
13863
13864 Pick median pixel from certain rectangle defined by radius.
13865
13866 This filter accepts the following options:
13867
13868 @table @option
13869 @item radius
13870 Set horizontal radius size. Default value is @code{1}.
13871 Allowed range is integer from 1 to 127.
13872
13873 @item planes
13874 Set which planes to process. Default is @code{15}, which is all available planes.
13875
13876 @item radiusV
13877 Set vertical radius size. Default value is @code{0}.
13878 Allowed range is integer from 0 to 127.
13879 If it is 0, value will be picked from horizontal @code{radius} option.
13880
13881 @item percentile
13882 Set median percentile. Default value is @code{0.5}.
13883 Default value of @code{0.5} will pick always median values, while @code{0} will pick
13884 minimum values, and @code{1} maximum values.
13885 @end table
13886
13887 @subsection Commands
13888 This filter supports same @ref{commands} as options.
13889 The command accepts the same syntax of the corresponding option.
13890
13891 If the specified expression is not valid, it is kept at its current
13892 value.
13893
13894 @section mergeplanes
13895
13896 Merge color channel components from several video streams.
13897
13898 The filter accepts up to 4 input streams, and merge selected input
13899 planes to the output video.
13900
13901 This filter accepts the following options:
13902 @table @option
13903 @item mapping
13904 Set input to output plane mapping. Default is @code{0}.
13905
13906 The mappings is specified as a bitmap. It should be specified as a
13907 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
13908 mapping for the first plane of the output stream. 'A' sets the number of
13909 the input stream to use (from 0 to 3), and 'a' the plane number of the
13910 corresponding input to use (from 0 to 3). The rest of the mappings is
13911 similar, 'Bb' describes the mapping for the output stream second
13912 plane, 'Cc' describes the mapping for the output stream third plane and
13913 'Dd' describes the mapping for the output stream fourth plane.
13914
13915 @item format
13916 Set output pixel format. Default is @code{yuva444p}.
13917 @end table
13918
13919 @subsection Examples
13920
13921 @itemize
13922 @item
13923 Merge three gray video streams of same width and height into single video stream:
13924 @example
13925 [a0][a1][a2]mergeplanes=0x001020:yuv444p
13926 @end example
13927
13928 @item
13929 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
13930 @example
13931 [a0][a1]mergeplanes=0x00010210:yuva444p
13932 @end example
13933
13934 @item
13935 Swap Y and A plane in yuva444p stream:
13936 @example
13937 format=yuva444p,mergeplanes=0x03010200:yuva444p
13938 @end example
13939
13940 @item
13941 Swap U and V plane in yuv420p stream:
13942 @example
13943 format=yuv420p,mergeplanes=0x000201:yuv420p
13944 @end example
13945
13946 @item
13947 Cast a rgb24 clip to yuv444p:
13948 @example
13949 format=rgb24,mergeplanes=0x000102:yuv444p
13950 @end example
13951 @end itemize
13952
13953 @section mestimate
13954
13955 Estimate and export motion vectors using block matching algorithms.
13956 Motion vectors are stored in frame side data to be used by other filters.
13957
13958 This filter accepts the following options:
13959 @table @option
13960 @item method
13961 Specify the motion estimation method. Accepts one of the following values:
13962
13963 @table @samp
13964 @item esa
13965 Exhaustive search algorithm.
13966 @item tss
13967 Three step search algorithm.
13968 @item tdls
13969 Two dimensional logarithmic search algorithm.
13970 @item ntss
13971 New three step search algorithm.
13972 @item fss
13973 Four step search algorithm.
13974 @item ds
13975 Diamond search algorithm.
13976 @item hexbs
13977 Hexagon-based search algorithm.
13978 @item epzs
13979 Enhanced predictive zonal search algorithm.
13980 @item umh
13981 Uneven multi-hexagon search algorithm.
13982 @end table
13983 Default value is @samp{esa}.
13984
13985 @item mb_size
13986 Macroblock size. Default @code{16}.
13987
13988 @item search_param
13989 Search parameter. Default @code{7}.
13990 @end table
13991
13992 @section midequalizer
13993
13994 Apply Midway Image Equalization effect using two video streams.
13995
13996 Midway Image Equalization adjusts a pair of images to have the same
13997 histogram, while maintaining their dynamics as much as possible. It's
13998 useful for e.g. matching exposures from a pair of stereo cameras.
13999
14000 This filter has two inputs and one output, which must be of same pixel format, but
14001 may be of different sizes. The output of filter is first input adjusted with
14002 midway histogram of both inputs.
14003
14004 This filter accepts the following option:
14005
14006 @table @option
14007 @item planes
14008 Set which planes to process. Default is @code{15}, which is all available planes.
14009 @end table
14010
14011 @section minterpolate
14012
14013 Convert the video to specified frame rate using motion interpolation.
14014
14015 This filter accepts the following options:
14016 @table @option
14017 @item fps
14018 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}.
14019
14020 @item mi_mode
14021 Motion interpolation mode. Following values are accepted:
14022 @table @samp
14023 @item dup
14024 Duplicate previous or next frame for interpolating new ones.
14025 @item blend
14026 Blend source frames. Interpolated frame is mean of previous and next frames.
14027 @item mci
14028 Motion compensated interpolation. Following options are effective when this mode is selected:
14029
14030 @table @samp
14031 @item mc_mode
14032 Motion compensation mode. Following values are accepted:
14033 @table @samp
14034 @item obmc
14035 Overlapped block motion compensation.
14036 @item aobmc
14037 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
14038 @end table
14039 Default mode is @samp{obmc}.
14040
14041 @item me_mode
14042 Motion estimation mode. Following values are accepted:
14043 @table @samp
14044 @item bidir
14045 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
14046 @item bilat
14047 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
14048 @end table
14049 Default mode is @samp{bilat}.
14050
14051 @item me
14052 The algorithm to be used for motion estimation. Following values are accepted:
14053 @table @samp
14054 @item esa
14055 Exhaustive search algorithm.
14056 @item tss
14057 Three step search algorithm.
14058 @item tdls
14059 Two dimensional logarithmic search algorithm.
14060 @item ntss
14061 New three step search algorithm.
14062 @item fss
14063 Four step search algorithm.
14064 @item ds
14065 Diamond search algorithm.
14066 @item hexbs
14067 Hexagon-based search algorithm.
14068 @item epzs
14069 Enhanced predictive zonal search algorithm.
14070 @item umh
14071 Uneven multi-hexagon search algorithm.
14072 @end table
14073 Default algorithm is @samp{epzs}.
14074
14075 @item mb_size
14076 Macroblock size. Default @code{16}.
14077
14078 @item search_param
14079 Motion estimation search parameter. Default @code{32}.
14080
14081 @item vsbmc
14082 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).
14083 @end table
14084 @end table
14085
14086 @item scd
14087 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:
14088 @table @samp
14089 @item none
14090 Disable scene change detection.
14091 @item fdiff
14092 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
14093 @end table
14094 Default method is @samp{fdiff}.
14095
14096 @item scd_threshold
14097 Scene change detection threshold. Default is @code{10.}.
14098 @end table
14099
14100 @section mix
14101
14102 Mix several video input streams into one video stream.
14103
14104 A description of the accepted options follows.
14105
14106 @table @option
14107 @item nb_inputs
14108 The number of inputs. If unspecified, it defaults to 2.
14109
14110 @item weights
14111 Specify weight of each input video stream as sequence.
14112 Each weight is separated by space. If number of weights
14113 is smaller than number of @var{frames} last specified
14114 weight will be used for all remaining unset weights.
14115
14116 @item scale
14117 Specify scale, if it is set it will be multiplied with sum
14118 of each weight multiplied with pixel values to give final destination
14119 pixel value. By default @var{scale} is auto scaled to sum of weights.
14120
14121 @item duration
14122 Specify how end of stream is determined.
14123 @table @samp
14124 @item longest
14125 The duration of the longest input. (default)
14126
14127 @item shortest
14128 The duration of the shortest input.
14129
14130 @item first
14131 The duration of the first input.
14132 @end table
14133 @end table
14134
14135 @section mpdecimate
14136
14137 Drop frames that do not differ greatly from the previous frame in
14138 order to reduce frame rate.
14139
14140 The main use of this filter is for very-low-bitrate encoding
14141 (e.g. streaming over dialup modem), but it could in theory be used for
14142 fixing movies that were inverse-telecined incorrectly.
14143
14144 A description of the accepted options follows.
14145
14146 @table @option
14147 @item max
14148 Set the maximum number of consecutive frames which can be dropped (if
14149 positive), or the minimum interval between dropped frames (if
14150 negative). If the value is 0, the frame is dropped disregarding the
14151 number of previous sequentially dropped frames.
14152
14153 Default value is 0.
14154
14155 @item hi
14156 @item lo
14157 @item frac
14158 Set the dropping threshold values.
14159
14160 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
14161 represent actual pixel value differences, so a threshold of 64
14162 corresponds to 1 unit of difference for each pixel, or the same spread
14163 out differently over the block.
14164
14165 A frame is a candidate for dropping if no 8x8 blocks differ by more
14166 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
14167 meaning the whole image) differ by more than a threshold of @option{lo}.
14168
14169 Default value for @option{hi} is 64*12, default value for @option{lo} is
14170 64*5, and default value for @option{frac} is 0.33.
14171 @end table
14172
14173
14174 @section negate
14175
14176 Negate (invert) the input video.
14177
14178 It accepts the following option:
14179
14180 @table @option
14181
14182 @item negate_alpha
14183 With value 1, it negates the alpha component, if present. Default value is 0.
14184 @end table
14185
14186 @anchor{nlmeans}
14187 @section nlmeans
14188
14189 Denoise frames using Non-Local Means algorithm.
14190
14191 Each pixel is adjusted by looking for other pixels with similar contexts. This
14192 context similarity is defined by comparing their surrounding patches of size
14193 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
14194 around the pixel.
14195
14196 Note that the research area defines centers for patches, which means some
14197 patches will be made of pixels outside that research area.
14198
14199 The filter accepts the following options.
14200
14201 @table @option
14202 @item s
14203 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
14204
14205 @item p
14206 Set patch size. Default is 7. Must be odd number in range [0, 99].
14207
14208 @item pc
14209 Same as @option{p} but for chroma planes.
14210
14211 The default value is @var{0} and means automatic.
14212
14213 @item r
14214 Set research size. Default is 15. Must be odd number in range [0, 99].
14215
14216 @item rc
14217 Same as @option{r} but for chroma planes.
14218
14219 The default value is @var{0} and means automatic.
14220 @end table
14221
14222 @section nnedi
14223
14224 Deinterlace video using neural network edge directed interpolation.
14225
14226 This filter accepts the following options:
14227
14228 @table @option
14229 @item weights
14230 Mandatory option, without binary file filter can not work.
14231 Currently file can be found here:
14232 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
14233
14234 @item deint
14235 Set which frames to deinterlace, by default it is @code{all}.
14236 Can be @code{all} or @code{interlaced}.
14237
14238 @item field
14239 Set mode of operation.
14240
14241 Can be one of the following:
14242
14243 @table @samp
14244 @item af
14245 Use frame flags, both fields.
14246 @item a
14247 Use frame flags, single field.
14248 @item t
14249 Use top field only.
14250 @item b
14251 Use bottom field only.
14252 @item tf
14253 Use both fields, top first.
14254 @item bf
14255 Use both fields, bottom first.
14256 @end table
14257
14258 @item planes
14259 Set which planes to process, by default filter process all frames.
14260
14261 @item nsize
14262 Set size of local neighborhood around each pixel, used by the predictor neural
14263 network.
14264
14265 Can be one of the following:
14266
14267 @table @samp
14268 @item s8x6
14269 @item s16x6
14270 @item s32x6
14271 @item s48x6
14272 @item s8x4
14273 @item s16x4
14274 @item s32x4
14275 @end table
14276
14277 @item nns
14278 Set the number of neurons in predictor neural network.
14279 Can be one of the following:
14280
14281 @table @samp
14282 @item n16
14283 @item n32
14284 @item n64
14285 @item n128
14286 @item n256
14287 @end table
14288
14289 @item qual
14290 Controls the number of different neural network predictions that are blended
14291 together to compute the final output value. Can be @code{fast}, default or
14292 @code{slow}.
14293
14294 @item etype
14295 Set which set of weights to use in the predictor.
14296 Can be one of the following:
14297
14298 @table @samp
14299 @item a
14300 weights trained to minimize absolute error
14301 @item s
14302 weights trained to minimize squared error
14303 @end table
14304
14305 @item pscrn
14306 Controls whether or not the prescreener neural network is used to decide
14307 which pixels should be processed by the predictor neural network and which
14308 can be handled by simple cubic interpolation.
14309 The prescreener is trained to know whether cubic interpolation will be
14310 sufficient for a pixel or whether it should be predicted by the predictor nn.
14311 The computational complexity of the prescreener nn is much less than that of
14312 the predictor nn. Since most pixels can be handled by cubic interpolation,
14313 using the prescreener generally results in much faster processing.
14314 The prescreener is pretty accurate, so the difference between using it and not
14315 using it is almost always unnoticeable.
14316
14317 Can be one of the following:
14318
14319 @table @samp
14320 @item none
14321 @item original
14322 @item new
14323 @end table
14324
14325 Default is @code{new}.
14326
14327 @item fapprox
14328 Set various debugging flags.
14329 @end table
14330
14331 @section noformat
14332
14333 Force libavfilter not to use any of the specified pixel formats for the
14334 input to the next filter.
14335
14336 It accepts the following parameters:
14337 @table @option
14338
14339 @item pix_fmts
14340 A '|'-separated list of pixel format names, such as
14341 pix_fmts=yuv420p|monow|rgb24".
14342
14343 @end table
14344
14345 @subsection Examples
14346
14347 @itemize
14348 @item
14349 Force libavfilter to use a format different from @var{yuv420p} for the
14350 input to the vflip filter:
14351 @example
14352 noformat=pix_fmts=yuv420p,vflip
14353 @end example
14354
14355 @item
14356 Convert the input video to any of the formats not contained in the list:
14357 @example
14358 noformat=yuv420p|yuv444p|yuv410p
14359 @end example
14360 @end itemize
14361
14362 @section noise
14363
14364 Add noise on video input frame.
14365
14366 The filter accepts the following options:
14367
14368 @table @option
14369 @item all_seed
14370 @item c0_seed
14371 @item c1_seed
14372 @item c2_seed
14373 @item c3_seed
14374 Set noise seed for specific pixel component or all pixel components in case
14375 of @var{all_seed}. Default value is @code{123457}.
14376
14377 @item all_strength, alls
14378 @item c0_strength, c0s
14379 @item c1_strength, c1s
14380 @item c2_strength, c2s
14381 @item c3_strength, c3s
14382 Set noise strength for specific pixel component or all pixel components in case
14383 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
14384
14385 @item all_flags, allf
14386 @item c0_flags, c0f
14387 @item c1_flags, c1f
14388 @item c2_flags, c2f
14389 @item c3_flags, c3f
14390 Set pixel component flags or set flags for all components if @var{all_flags}.
14391 Available values for component flags are:
14392 @table @samp
14393 @item a
14394 averaged temporal noise (smoother)
14395 @item p
14396 mix random noise with a (semi)regular pattern
14397 @item t
14398 temporal noise (noise pattern changes between frames)
14399 @item u
14400 uniform noise (gaussian otherwise)
14401 @end table
14402 @end table
14403
14404 @subsection Examples
14405
14406 Add temporal and uniform noise to input video:
14407 @example
14408 noise=alls=20:allf=t+u
14409 @end example
14410
14411 @section normalize
14412
14413 Normalize RGB video (aka histogram stretching, contrast stretching).
14414 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
14415
14416 For each channel of each frame, the filter computes the input range and maps
14417 it linearly to the user-specified output range. The output range defaults
14418 to the full dynamic range from pure black to pure white.
14419
14420 Temporal smoothing can be used on the input range to reduce flickering (rapid
14421 changes in brightness) caused when small dark or bright objects enter or leave
14422 the scene. This is similar to the auto-exposure (automatic gain control) on a
14423 video camera, and, like a video camera, it may cause a period of over- or
14424 under-exposure of the video.
14425
14426 The R,G,B channels can be normalized independently, which may cause some
14427 color shifting, or linked together as a single channel, which prevents
14428 color shifting. Linked normalization preserves hue. Independent normalization
14429 does not, so it can be used to remove some color casts. Independent and linked
14430 normalization can be combined in any ratio.
14431
14432 The normalize filter accepts the following options:
14433
14434 @table @option
14435 @item blackpt
14436 @item whitept
14437 Colors which define the output range. The minimum input value is mapped to
14438 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
14439 The defaults are black and white respectively. Specifying white for
14440 @var{blackpt} and black for @var{whitept} will give color-inverted,
14441 normalized video. Shades of grey can be used to reduce the dynamic range
14442 (contrast). Specifying saturated colors here can create some interesting
14443 effects.
14444
14445 @item smoothing
14446 The number of previous frames to use for temporal smoothing. The input range
14447 of each channel is smoothed using a rolling average over the current frame
14448 and the @var{smoothing} previous frames. The default is 0 (no temporal
14449 smoothing).
14450
14451 @item independence
14452 Controls the ratio of independent (color shifting) channel normalization to
14453 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
14454 independent. Defaults to 1.0 (fully independent).
14455
14456 @item strength
14457 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
14458 expensive no-op. Defaults to 1.0 (full strength).
14459
14460 @end table
14461
14462 @subsection Commands
14463 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
14464 The command accepts the same syntax of the corresponding option.
14465
14466 If the specified expression is not valid, it is kept at its current
14467 value.
14468
14469 @subsection Examples
14470
14471 Stretch video contrast to use the full dynamic range, with no temporal
14472 smoothing; may flicker depending on the source content:
14473 @example
14474 normalize=blackpt=black:whitept=white:smoothing=0
14475 @end example
14476
14477 As above, but with 50 frames of temporal smoothing; flicker should be
14478 reduced, depending on the source content:
14479 @example
14480 normalize=blackpt=black:whitept=white:smoothing=50
14481 @end example
14482
14483 As above, but with hue-preserving linked channel normalization:
14484 @example
14485 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
14486 @end example
14487
14488 As above, but with half strength:
14489 @example
14490 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
14491 @end example
14492
14493 Map the darkest input color to red, the brightest input color to cyan:
14494 @example
14495 normalize=blackpt=red:whitept=cyan
14496 @end example
14497
14498 @section null
14499
14500 Pass the video source unchanged to the output.
14501
14502 @section ocr
14503 Optical Character Recognition
14504
14505 This filter uses Tesseract for optical character recognition. To enable
14506 compilation of this filter, you need to configure FFmpeg with
14507 @code{--enable-libtesseract}.
14508
14509 It accepts the following options:
14510
14511 @table @option
14512 @item datapath
14513 Set datapath to tesseract data. Default is to use whatever was
14514 set at installation.
14515
14516 @item language
14517 Set language, default is "eng".
14518
14519 @item whitelist
14520 Set character whitelist.
14521
14522 @item blacklist
14523 Set character blacklist.
14524 @end table
14525
14526 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
14527 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
14528
14529 @section ocv
14530
14531 Apply a video transform using libopencv.
14532
14533 To enable this filter, install the libopencv library and headers and
14534 configure FFmpeg with @code{--enable-libopencv}.
14535
14536 It accepts the following parameters:
14537
14538 @table @option
14539
14540 @item filter_name
14541 The name of the libopencv filter to apply.
14542
14543 @item filter_params
14544 The parameters to pass to the libopencv filter. If not specified, the default
14545 values are assumed.
14546
14547 @end table
14548
14549 Refer to the official libopencv documentation for more precise
14550 information:
14551 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
14552
14553 Several libopencv filters are supported; see the following subsections.
14554
14555 @anchor{dilate}
14556 @subsection dilate
14557
14558 Dilate an image by using a specific structuring element.
14559 It corresponds to the libopencv function @code{cvDilate}.
14560
14561 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
14562
14563 @var{struct_el} represents a structuring element, and has the syntax:
14564 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
14565
14566 @var{cols} and @var{rows} represent the number of columns and rows of
14567 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
14568 point, and @var{shape} the shape for the structuring element. @var{shape}
14569 must be "rect", "cross", "ellipse", or "custom".
14570
14571 If the value for @var{shape} is "custom", it must be followed by a
14572 string of the form "=@var{filename}". The file with name
14573 @var{filename} is assumed to represent a binary image, with each
14574 printable character corresponding to a bright pixel. When a custom
14575 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
14576 or columns and rows of the read file are assumed instead.
14577
14578 The default value for @var{struct_el} is "3x3+0x0/rect".
14579
14580 @var{nb_iterations} specifies the number of times the transform is
14581 applied to the image, and defaults to 1.
14582
14583 Some examples:
14584 @example
14585 # Use the default values
14586 ocv=dilate
14587
14588 # Dilate using a structuring element with a 5x5 cross, iterating two times
14589 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
14590
14591 # Read the shape from the file diamond.shape, iterating two times.
14592 # The file diamond.shape may contain a pattern of characters like this
14593 #   *
14594 #  ***
14595 # *****
14596 #  ***
14597 #   *
14598 # The specified columns and rows are ignored
14599 # but the anchor point coordinates are not
14600 ocv=dilate:0x0+2x2/custom=diamond.shape|2
14601 @end example
14602
14603 @subsection erode
14604
14605 Erode an image by using a specific structuring element.
14606 It corresponds to the libopencv function @code{cvErode}.
14607
14608 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
14609 with the same syntax and semantics as the @ref{dilate} filter.
14610
14611 @subsection smooth
14612
14613 Smooth the input video.
14614
14615 The filter takes the following parameters:
14616 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
14617
14618 @var{type} is the type of smooth filter to apply, and must be one of
14619 the following values: "blur", "blur_no_scale", "median", "gaussian",
14620 or "bilateral". The default value is "gaussian".
14621
14622 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
14623 depends on the smooth type. @var{param1} and
14624 @var{param2} accept integer positive values or 0. @var{param3} and
14625 @var{param4} accept floating point values.
14626
14627 The default value for @var{param1} is 3. The default value for the
14628 other parameters is 0.
14629
14630 These parameters correspond to the parameters assigned to the
14631 libopencv function @code{cvSmooth}.
14632
14633 @section oscilloscope
14634
14635 2D Video Oscilloscope.
14636
14637 Useful to measure spatial impulse, step responses, chroma delays, etc.
14638
14639 It accepts the following parameters:
14640
14641 @table @option
14642 @item x
14643 Set scope center x position.
14644
14645 @item y
14646 Set scope center y position.
14647
14648 @item s
14649 Set scope size, relative to frame diagonal.
14650
14651 @item t
14652 Set scope tilt/rotation.
14653
14654 @item o
14655 Set trace opacity.
14656
14657 @item tx
14658 Set trace center x position.
14659
14660 @item ty
14661 Set trace center y position.
14662
14663 @item tw
14664 Set trace width, relative to width of frame.
14665
14666 @item th
14667 Set trace height, relative to height of frame.
14668
14669 @item c
14670 Set which components to trace. By default it traces first three components.
14671
14672 @item g
14673 Draw trace grid. By default is enabled.
14674
14675 @item st
14676 Draw some statistics. By default is enabled.
14677
14678 @item sc
14679 Draw scope. By default is enabled.
14680 @end table
14681
14682 @subsection Commands
14683 This filter supports same @ref{commands} as options.
14684 The command accepts the same syntax of the corresponding option.
14685
14686 If the specified expression is not valid, it is kept at its current
14687 value.
14688
14689 @subsection Examples
14690
14691 @itemize
14692 @item
14693 Inspect full first row of video frame.
14694 @example
14695 oscilloscope=x=0.5:y=0:s=1
14696 @end example
14697
14698 @item
14699 Inspect full last row of video frame.
14700 @example
14701 oscilloscope=x=0.5:y=1:s=1
14702 @end example
14703
14704 @item
14705 Inspect full 5th line of video frame of height 1080.
14706 @example
14707 oscilloscope=x=0.5:y=5/1080:s=1
14708 @end example
14709
14710 @item
14711 Inspect full last column of video frame.
14712 @example
14713 oscilloscope=x=1:y=0.5:s=1:t=1
14714 @end example
14715
14716 @end itemize
14717
14718 @anchor{overlay}
14719 @section overlay
14720
14721 Overlay one video on top of another.
14722
14723 It takes two inputs and has one output. The first input is the "main"
14724 video on which the second input is overlaid.
14725
14726 It accepts the following parameters:
14727
14728 A description of the accepted options follows.
14729
14730 @table @option
14731 @item x
14732 @item y
14733 Set the expression for the x and y coordinates of the overlaid video
14734 on the main video. Default value is "0" for both expressions. In case
14735 the expression is invalid, it is set to a huge value (meaning that the
14736 overlay will not be displayed within the output visible area).
14737
14738 @item eof_action
14739 See @ref{framesync}.
14740
14741 @item eval
14742 Set when the expressions for @option{x}, and @option{y} are evaluated.
14743
14744 It accepts the following values:
14745 @table @samp
14746 @item init
14747 only evaluate expressions once during the filter initialization or
14748 when a command is processed
14749
14750 @item frame
14751 evaluate expressions for each incoming frame
14752 @end table
14753
14754 Default value is @samp{frame}.
14755
14756 @item shortest
14757 See @ref{framesync}.
14758
14759 @item format
14760 Set the format for the output video.
14761
14762 It accepts the following values:
14763 @table @samp
14764 @item yuv420
14765 force YUV420 output
14766
14767 @item yuv420p10
14768 force YUV420p10 output
14769
14770 @item yuv422
14771 force YUV422 output
14772
14773 @item yuv422p10
14774 force YUV422p10 output
14775
14776 @item yuv444
14777 force YUV444 output
14778
14779 @item rgb
14780 force packed RGB output
14781
14782 @item gbrp
14783 force planar RGB output
14784
14785 @item auto
14786 automatically pick format
14787 @end table
14788
14789 Default value is @samp{yuv420}.
14790
14791 @item repeatlast
14792 See @ref{framesync}.
14793
14794 @item alpha
14795 Set format of alpha of the overlaid video, it can be @var{straight} or
14796 @var{premultiplied}. Default is @var{straight}.
14797 @end table
14798
14799 The @option{x}, and @option{y} expressions can contain the following
14800 parameters.
14801
14802 @table @option
14803 @item main_w, W
14804 @item main_h, H
14805 The main input width and height.
14806
14807 @item overlay_w, w
14808 @item overlay_h, h
14809 The overlay input width and height.
14810
14811 @item x
14812 @item y
14813 The computed values for @var{x} and @var{y}. They are evaluated for
14814 each new frame.
14815
14816 @item hsub
14817 @item vsub
14818 horizontal and vertical chroma subsample values of the output
14819 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
14820 @var{vsub} is 1.
14821
14822 @item n
14823 the number of input frame, starting from 0
14824
14825 @item pos
14826 the position in the file of the input frame, NAN if unknown
14827
14828 @item t
14829 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
14830
14831 @end table
14832
14833 This filter also supports the @ref{framesync} options.
14834
14835 Note that the @var{n}, @var{pos}, @var{t} variables are available only
14836 when evaluation is done @emph{per frame}, and will evaluate to NAN
14837 when @option{eval} is set to @samp{init}.
14838
14839 Be aware that frames are taken from each input video in timestamp
14840 order, hence, if their initial timestamps differ, it is a good idea
14841 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
14842 have them begin in the same zero timestamp, as the example for
14843 the @var{movie} filter does.
14844
14845 You can chain together more overlays but you should test the
14846 efficiency of such approach.
14847
14848 @subsection Commands
14849
14850 This filter supports the following commands:
14851 @table @option
14852 @item x
14853 @item y
14854 Modify the x and y of the overlay input.
14855 The command accepts the same syntax of the corresponding option.
14856
14857 If the specified expression is not valid, it is kept at its current
14858 value.
14859 @end table
14860
14861 @subsection Examples
14862
14863 @itemize
14864 @item
14865 Draw the overlay at 10 pixels from the bottom right corner of the main
14866 video:
14867 @example
14868 overlay=main_w-overlay_w-10:main_h-overlay_h-10
14869 @end example
14870
14871 Using named options the example above becomes:
14872 @example
14873 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
14874 @end example
14875
14876 @item
14877 Insert a transparent PNG logo in the bottom left corner of the input,
14878 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
14879 @example
14880 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
14881 @end example
14882
14883 @item
14884 Insert 2 different transparent PNG logos (second logo on bottom
14885 right corner) using the @command{ffmpeg} tool:
14886 @example
14887 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
14888 @end example
14889
14890 @item
14891 Add a transparent color layer on top of the main video; @code{WxH}
14892 must specify the size of the main input to the overlay filter:
14893 @example
14894 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
14895 @end example
14896
14897 @item
14898 Play an original video and a filtered version (here with the deshake
14899 filter) side by side using the @command{ffplay} tool:
14900 @example
14901 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
14902 @end example
14903
14904 The above command is the same as:
14905 @example
14906 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
14907 @end example
14908
14909 @item
14910 Make a sliding overlay appearing from the left to the right top part of the
14911 screen starting since time 2:
14912 @example
14913 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
14914 @end example
14915
14916 @item
14917 Compose output by putting two input videos side to side:
14918 @example
14919 ffmpeg -i left.avi -i right.avi -filter_complex "
14920 nullsrc=size=200x100 [background];
14921 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
14922 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
14923 [background][left]       overlay=shortest=1       [background+left];
14924 [background+left][right] overlay=shortest=1:x=100 [left+right]
14925 "
14926 @end example
14927
14928 @item
14929 Mask 10-20 seconds of a video by applying the delogo filter to a section
14930 @example
14931 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
14932 -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]'
14933 masked.avi
14934 @end example
14935
14936 @item
14937 Chain several overlays in cascade:
14938 @example
14939 nullsrc=s=200x200 [bg];
14940 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
14941 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
14942 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
14943 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
14944 [in3] null,       [mid2] overlay=100:100 [out0]
14945 @end example
14946
14947 @end itemize
14948
14949 @anchor{overlay_cuda}
14950 @section overlay_cuda
14951
14952 Overlay one video on top of another.
14953
14954 This is the CUDA variant of the @ref{overlay} filter.
14955 It only accepts CUDA frames. The underlying input pixel formats have to match.
14956
14957 It takes two inputs and has one output. The first input is the "main"
14958 video on which the second input is overlaid.
14959
14960 It accepts the following parameters:
14961
14962 @table @option
14963 @item x
14964 @item y
14965 Set the x and y coordinates of the overlaid video on the main video.
14966 Default value is "0" for both expressions.
14967
14968 @item eof_action
14969 See @ref{framesync}.
14970
14971 @item shortest
14972 See @ref{framesync}.
14973
14974 @item repeatlast
14975 See @ref{framesync}.
14976
14977 @end table
14978
14979 This filter also supports the @ref{framesync} options.
14980
14981 @section owdenoise
14982
14983 Apply Overcomplete Wavelet denoiser.
14984
14985 The filter accepts the following options:
14986
14987 @table @option
14988 @item depth
14989 Set depth.
14990
14991 Larger depth values will denoise lower frequency components more, but
14992 slow down filtering.
14993
14994 Must be an int in the range 8-16, default is @code{8}.
14995
14996 @item luma_strength, ls
14997 Set luma strength.
14998
14999 Must be a double value in the range 0-1000, default is @code{1.0}.
15000
15001 @item chroma_strength, cs
15002 Set chroma strength.
15003
15004 Must be a double value in the range 0-1000, default is @code{1.0}.
15005 @end table
15006
15007 @anchor{pad}
15008 @section pad
15009
15010 Add paddings to the input image, and place the original input at the
15011 provided @var{x}, @var{y} coordinates.
15012
15013 It accepts the following parameters:
15014
15015 @table @option
15016 @item width, w
15017 @item height, h
15018 Specify an expression for the size of the output image with the
15019 paddings added. If the value for @var{width} or @var{height} is 0, the
15020 corresponding input size is used for the output.
15021
15022 The @var{width} expression can reference the value set by the
15023 @var{height} expression, and vice versa.
15024
15025 The default value of @var{width} and @var{height} is 0.
15026
15027 @item x
15028 @item y
15029 Specify the offsets to place the input image at within the padded area,
15030 with respect to the top/left border of the output image.
15031
15032 The @var{x} expression can reference the value set by the @var{y}
15033 expression, and vice versa.
15034
15035 The default value of @var{x} and @var{y} is 0.
15036
15037 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
15038 so the input image is centered on the padded area.
15039
15040 @item color
15041 Specify the color of the padded area. For the syntax of this option,
15042 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
15043 manual,ffmpeg-utils}.
15044
15045 The default value of @var{color} is "black".
15046
15047 @item eval
15048 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
15049
15050 It accepts the following values:
15051
15052 @table @samp
15053 @item init
15054 Only evaluate expressions once during the filter initialization or when
15055 a command is processed.
15056
15057 @item frame
15058 Evaluate expressions for each incoming frame.
15059
15060 @end table
15061
15062 Default value is @samp{init}.
15063
15064 @item aspect
15065 Pad to aspect instead to a resolution.
15066
15067 @end table
15068
15069 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
15070 options are expressions containing the following constants:
15071
15072 @table @option
15073 @item in_w
15074 @item in_h
15075 The input video width and height.
15076
15077 @item iw
15078 @item ih
15079 These are the same as @var{in_w} and @var{in_h}.
15080
15081 @item out_w
15082 @item out_h
15083 The output width and height (the size of the padded area), as
15084 specified by the @var{width} and @var{height} expressions.
15085
15086 @item ow
15087 @item oh
15088 These are the same as @var{out_w} and @var{out_h}.
15089
15090 @item x
15091 @item y
15092 The x and y offsets as specified by the @var{x} and @var{y}
15093 expressions, or NAN if not yet specified.
15094
15095 @item a
15096 same as @var{iw} / @var{ih}
15097
15098 @item sar
15099 input sample aspect ratio
15100
15101 @item dar
15102 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
15103
15104 @item hsub
15105 @item vsub
15106 The horizontal and vertical chroma subsample values. For example for the
15107 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15108 @end table
15109
15110 @subsection Examples
15111
15112 @itemize
15113 @item
15114 Add paddings with the color "violet" to the input video. The output video
15115 size is 640x480, and the top-left corner of the input video is placed at
15116 column 0, row 40
15117 @example
15118 pad=640:480:0:40:violet
15119 @end example
15120
15121 The example above is equivalent to the following command:
15122 @example
15123 pad=width=640:height=480:x=0:y=40:color=violet
15124 @end example
15125
15126 @item
15127 Pad the input to get an output with dimensions increased by 3/2,
15128 and put the input video at the center of the padded area:
15129 @example
15130 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
15131 @end example
15132
15133 @item
15134 Pad the input to get a squared output with size equal to the maximum
15135 value between the input width and height, and put the input video at
15136 the center of the padded area:
15137 @example
15138 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
15139 @end example
15140
15141 @item
15142 Pad the input to get a final w/h ratio of 16:9:
15143 @example
15144 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
15145 @end example
15146
15147 @item
15148 In case of anamorphic video, in order to set the output display aspect
15149 correctly, it is necessary to use @var{sar} in the expression,
15150 according to the relation:
15151 @example
15152 (ih * X / ih) * sar = output_dar
15153 X = output_dar / sar
15154 @end example
15155
15156 Thus the previous example needs to be modified to:
15157 @example
15158 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
15159 @end example
15160
15161 @item
15162 Double the output size and put the input video in the bottom-right
15163 corner of the output padded area:
15164 @example
15165 pad="2*iw:2*ih:ow-iw:oh-ih"
15166 @end example
15167 @end itemize
15168
15169 @anchor{palettegen}
15170 @section palettegen
15171
15172 Generate one palette for a whole video stream.
15173
15174 It accepts the following options:
15175
15176 @table @option
15177 @item max_colors
15178 Set the maximum number of colors to quantize in the palette.
15179 Note: the palette will still contain 256 colors; the unused palette entries
15180 will be black.
15181
15182 @item reserve_transparent
15183 Create a palette of 255 colors maximum and reserve the last one for
15184 transparency. Reserving the transparency color is useful for GIF optimization.
15185 If not set, the maximum of colors in the palette will be 256. You probably want
15186 to disable this option for a standalone image.
15187 Set by default.
15188
15189 @item transparency_color
15190 Set the color that will be used as background for transparency.
15191
15192 @item stats_mode
15193 Set statistics mode.
15194
15195 It accepts the following values:
15196 @table @samp
15197 @item full
15198 Compute full frame histograms.
15199 @item diff
15200 Compute histograms only for the part that differs from previous frame. This
15201 might be relevant to give more importance to the moving part of your input if
15202 the background is static.
15203 @item single
15204 Compute new histogram for each frame.
15205 @end table
15206
15207 Default value is @var{full}.
15208 @end table
15209
15210 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
15211 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
15212 color quantization of the palette. This information is also visible at
15213 @var{info} logging level.
15214
15215 @subsection Examples
15216
15217 @itemize
15218 @item
15219 Generate a representative palette of a given video using @command{ffmpeg}:
15220 @example
15221 ffmpeg -i input.mkv -vf palettegen palette.png
15222 @end example
15223 @end itemize
15224
15225 @section paletteuse
15226
15227 Use a palette to downsample an input video stream.
15228
15229 The filter takes two inputs: one video stream and a palette. The palette must
15230 be a 256 pixels image.
15231
15232 It accepts the following options:
15233
15234 @table @option
15235 @item dither
15236 Select dithering mode. Available algorithms are:
15237 @table @samp
15238 @item bayer
15239 Ordered 8x8 bayer dithering (deterministic)
15240 @item heckbert
15241 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
15242 Note: this dithering is sometimes considered "wrong" and is included as a
15243 reference.
15244 @item floyd_steinberg
15245 Floyd and Steingberg dithering (error diffusion)
15246 @item sierra2
15247 Frankie Sierra dithering v2 (error diffusion)
15248 @item sierra2_4a
15249 Frankie Sierra dithering v2 "Lite" (error diffusion)
15250 @end table
15251
15252 Default is @var{sierra2_4a}.
15253
15254 @item bayer_scale
15255 When @var{bayer} dithering is selected, this option defines the scale of the
15256 pattern (how much the crosshatch pattern is visible). A low value means more
15257 visible pattern for less banding, and higher value means less visible pattern
15258 at the cost of more banding.
15259
15260 The option must be an integer value in the range [0,5]. Default is @var{2}.
15261
15262 @item diff_mode
15263 If set, define the zone to process
15264
15265 @table @samp
15266 @item rectangle
15267 Only the changing rectangle will be reprocessed. This is similar to GIF
15268 cropping/offsetting compression mechanism. This option can be useful for speed
15269 if only a part of the image is changing, and has use cases such as limiting the
15270 scope of the error diffusal @option{dither} to the rectangle that bounds the
15271 moving scene (it leads to more deterministic output if the scene doesn't change
15272 much, and as a result less moving noise and better GIF compression).
15273 @end table
15274
15275 Default is @var{none}.
15276
15277 @item new
15278 Take new palette for each output frame.
15279
15280 @item alpha_threshold
15281 Sets the alpha threshold for transparency. Alpha values above this threshold
15282 will be treated as completely opaque, and values below this threshold will be
15283 treated as completely transparent.
15284
15285 The option must be an integer value in the range [0,255]. Default is @var{128}.
15286 @end table
15287
15288 @subsection Examples
15289
15290 @itemize
15291 @item
15292 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
15293 using @command{ffmpeg}:
15294 @example
15295 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
15296 @end example
15297 @end itemize
15298
15299 @section perspective
15300
15301 Correct perspective of video not recorded perpendicular to the screen.
15302
15303 A description of the accepted parameters follows.
15304
15305 @table @option
15306 @item x0
15307 @item y0
15308 @item x1
15309 @item y1
15310 @item x2
15311 @item y2
15312 @item x3
15313 @item y3
15314 Set coordinates expression for top left, top right, bottom left and bottom right corners.
15315 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
15316 If the @code{sense} option is set to @code{source}, then the specified points will be sent
15317 to the corners of the destination. If the @code{sense} option is set to @code{destination},
15318 then the corners of the source will be sent to the specified coordinates.
15319
15320 The expressions can use the following variables:
15321
15322 @table @option
15323 @item W
15324 @item H
15325 the width and height of video frame.
15326 @item in
15327 Input frame count.
15328 @item on
15329 Output frame count.
15330 @end table
15331
15332 @item interpolation
15333 Set interpolation for perspective correction.
15334
15335 It accepts the following values:
15336 @table @samp
15337 @item linear
15338 @item cubic
15339 @end table
15340
15341 Default value is @samp{linear}.
15342
15343 @item sense
15344 Set interpretation of coordinate options.
15345
15346 It accepts the following values:
15347 @table @samp
15348 @item 0, source
15349
15350 Send point in the source specified by the given coordinates to
15351 the corners of the destination.
15352
15353 @item 1, destination
15354
15355 Send the corners of the source to the point in the destination specified
15356 by the given coordinates.
15357
15358 Default value is @samp{source}.
15359 @end table
15360
15361 @item eval
15362 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
15363
15364 It accepts the following values:
15365 @table @samp
15366 @item init
15367 only evaluate expressions once during the filter initialization or
15368 when a command is processed
15369
15370 @item frame
15371 evaluate expressions for each incoming frame
15372 @end table
15373
15374 Default value is @samp{init}.
15375 @end table
15376
15377 @section phase
15378
15379 Delay interlaced video by one field time so that the field order changes.
15380
15381 The intended use is to fix PAL movies that have been captured with the
15382 opposite field order to the film-to-video transfer.
15383
15384 A description of the accepted parameters follows.
15385
15386 @table @option
15387 @item mode
15388 Set phase mode.
15389
15390 It accepts the following values:
15391 @table @samp
15392 @item t
15393 Capture field order top-first, transfer bottom-first.
15394 Filter will delay the bottom field.
15395
15396 @item b
15397 Capture field order bottom-first, transfer top-first.
15398 Filter will delay the top field.
15399
15400 @item p
15401 Capture and transfer with the same field order. This mode only exists
15402 for the documentation of the other options to refer to, but if you
15403 actually select it, the filter will faithfully do nothing.
15404
15405 @item a
15406 Capture field order determined automatically by field flags, transfer
15407 opposite.
15408 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
15409 basis using field flags. If no field information is available,
15410 then this works just like @samp{u}.
15411
15412 @item u
15413 Capture unknown or varying, transfer opposite.
15414 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
15415 analyzing the images and selecting the alternative that produces best
15416 match between the fields.
15417
15418 @item T
15419 Capture top-first, transfer unknown or varying.
15420 Filter selects among @samp{t} and @samp{p} using image analysis.
15421
15422 @item B
15423 Capture bottom-first, transfer unknown or varying.
15424 Filter selects among @samp{b} and @samp{p} using image analysis.
15425
15426 @item A
15427 Capture determined by field flags, transfer unknown or varying.
15428 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
15429 image analysis. If no field information is available, then this works just
15430 like @samp{U}. This is the default mode.
15431
15432 @item U
15433 Both capture and transfer unknown or varying.
15434 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
15435 @end table
15436 @end table
15437
15438 @section photosensitivity
15439 Reduce various flashes in video, so to help users with epilepsy.
15440
15441 It accepts the following options:
15442 @table @option
15443 @item frames, f
15444 Set how many frames to use when filtering. Default is 30.
15445
15446 @item threshold, t
15447 Set detection threshold factor. Default is 1.
15448 Lower is stricter.
15449
15450 @item skip
15451 Set how many pixels to skip when sampling frames. Default is 1.
15452 Allowed range is from 1 to 1024.
15453
15454 @item bypass
15455 Leave frames unchanged. Default is disabled.
15456 @end table
15457
15458 @section pixdesctest
15459
15460 Pixel format descriptor test filter, mainly useful for internal
15461 testing. The output video should be equal to the input video.
15462
15463 For example:
15464 @example
15465 format=monow, pixdesctest
15466 @end example
15467
15468 can be used to test the monowhite pixel format descriptor definition.
15469
15470 @section pixscope
15471
15472 Display sample values of color channels. Mainly useful for checking color
15473 and levels. Minimum supported resolution is 640x480.
15474
15475 The filters accept the following options:
15476
15477 @table @option
15478 @item x
15479 Set scope X position, relative offset on X axis.
15480
15481 @item y
15482 Set scope Y position, relative offset on Y axis.
15483
15484 @item w
15485 Set scope width.
15486
15487 @item h
15488 Set scope height.
15489
15490 @item o
15491 Set window opacity. This window also holds statistics about pixel area.
15492
15493 @item wx
15494 Set window X position, relative offset on X axis.
15495
15496 @item wy
15497 Set window Y position, relative offset on Y axis.
15498 @end table
15499
15500 @section pp
15501
15502 Enable the specified chain of postprocessing subfilters using libpostproc. This
15503 library should be automatically selected with a GPL build (@code{--enable-gpl}).
15504 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
15505 Each subfilter and some options have a short and a long name that can be used
15506 interchangeably, i.e. dr/dering are the same.
15507
15508 The filters accept the following options:
15509
15510 @table @option
15511 @item subfilters
15512 Set postprocessing subfilters string.
15513 @end table
15514
15515 All subfilters share common options to determine their scope:
15516
15517 @table @option
15518 @item a/autoq
15519 Honor the quality commands for this subfilter.
15520
15521 @item c/chrom
15522 Do chrominance filtering, too (default).
15523
15524 @item y/nochrom
15525 Do luminance filtering only (no chrominance).
15526
15527 @item n/noluma
15528 Do chrominance filtering only (no luminance).
15529 @end table
15530
15531 These options can be appended after the subfilter name, separated by a '|'.
15532
15533 Available subfilters are:
15534
15535 @table @option
15536 @item hb/hdeblock[|difference[|flatness]]
15537 Horizontal deblocking filter
15538 @table @option
15539 @item difference
15540 Difference factor where higher values mean more deblocking (default: @code{32}).
15541 @item flatness
15542 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15543 @end table
15544
15545 @item vb/vdeblock[|difference[|flatness]]
15546 Vertical deblocking filter
15547 @table @option
15548 @item difference
15549 Difference factor where higher values mean more deblocking (default: @code{32}).
15550 @item flatness
15551 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15552 @end table
15553
15554 @item ha/hadeblock[|difference[|flatness]]
15555 Accurate horizontal deblocking filter
15556 @table @option
15557 @item difference
15558 Difference factor where higher values mean more deblocking (default: @code{32}).
15559 @item flatness
15560 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15561 @end table
15562
15563 @item va/vadeblock[|difference[|flatness]]
15564 Accurate vertical deblocking filter
15565 @table @option
15566 @item difference
15567 Difference factor where higher values mean more deblocking (default: @code{32}).
15568 @item flatness
15569 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15570 @end table
15571 @end table
15572
15573 The horizontal and vertical deblocking filters share the difference and
15574 flatness values so you cannot set different horizontal and vertical
15575 thresholds.
15576
15577 @table @option
15578 @item h1/x1hdeblock
15579 Experimental horizontal deblocking filter
15580
15581 @item v1/x1vdeblock
15582 Experimental vertical deblocking filter
15583
15584 @item dr/dering
15585 Deringing filter
15586
15587 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
15588 @table @option
15589 @item threshold1
15590 larger -> stronger filtering
15591 @item threshold2
15592 larger -> stronger filtering
15593 @item threshold3
15594 larger -> stronger filtering
15595 @end table
15596
15597 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
15598 @table @option
15599 @item f/fullyrange
15600 Stretch luminance to @code{0-255}.
15601 @end table
15602
15603 @item lb/linblenddeint
15604 Linear blend deinterlacing filter that deinterlaces the given block by
15605 filtering all lines with a @code{(1 2 1)} filter.
15606
15607 @item li/linipoldeint
15608 Linear interpolating deinterlacing filter that deinterlaces the given block by
15609 linearly interpolating every second line.
15610
15611 @item ci/cubicipoldeint
15612 Cubic interpolating deinterlacing filter deinterlaces the given block by
15613 cubically interpolating every second line.
15614
15615 @item md/mediandeint
15616 Median deinterlacing filter that deinterlaces the given block by applying a
15617 median filter to every second line.
15618
15619 @item fd/ffmpegdeint
15620 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
15621 second line with a @code{(-1 4 2 4 -1)} filter.
15622
15623 @item l5/lowpass5
15624 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
15625 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
15626
15627 @item fq/forceQuant[|quantizer]
15628 Overrides the quantizer table from the input with the constant quantizer you
15629 specify.
15630 @table @option
15631 @item quantizer
15632 Quantizer to use
15633 @end table
15634
15635 @item de/default
15636 Default pp filter combination (@code{hb|a,vb|a,dr|a})
15637
15638 @item fa/fast
15639 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
15640
15641 @item ac
15642 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
15643 @end table
15644
15645 @subsection Examples
15646
15647 @itemize
15648 @item
15649 Apply horizontal and vertical deblocking, deringing and automatic
15650 brightness/contrast:
15651 @example
15652 pp=hb/vb/dr/al
15653 @end example
15654
15655 @item
15656 Apply default filters without brightness/contrast correction:
15657 @example
15658 pp=de/-al
15659 @end example
15660
15661 @item
15662 Apply default filters and temporal denoiser:
15663 @example
15664 pp=default/tmpnoise|1|2|3
15665 @end example
15666
15667 @item
15668 Apply deblocking on luminance only, and switch vertical deblocking on or off
15669 automatically depending on available CPU time:
15670 @example
15671 pp=hb|y/vb|a
15672 @end example
15673 @end itemize
15674
15675 @section pp7
15676 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
15677 similar to spp = 6 with 7 point DCT, where only the center sample is
15678 used after IDCT.
15679
15680 The filter accepts the following options:
15681
15682 @table @option
15683 @item qp
15684 Force a constant quantization parameter. It accepts an integer in range
15685 0 to 63. If not set, the filter will use the QP from the video stream
15686 (if available).
15687
15688 @item mode
15689 Set thresholding mode. Available modes are:
15690
15691 @table @samp
15692 @item hard
15693 Set hard thresholding.
15694 @item soft
15695 Set soft thresholding (better de-ringing effect, but likely blurrier).
15696 @item medium
15697 Set medium thresholding (good results, default).
15698 @end table
15699 @end table
15700
15701 @section premultiply
15702 Apply alpha premultiply effect to input video stream using first plane
15703 of second stream as alpha.
15704
15705 Both streams must have same dimensions and same pixel format.
15706
15707 The filter accepts the following option:
15708
15709 @table @option
15710 @item planes
15711 Set which planes will be processed, unprocessed planes will be copied.
15712 By default value 0xf, all planes will be processed.
15713
15714 @item inplace
15715 Do not require 2nd input for processing, instead use alpha plane from input stream.
15716 @end table
15717
15718 @section prewitt
15719 Apply prewitt operator to input video stream.
15720
15721 The filter accepts the following option:
15722
15723 @table @option
15724 @item planes
15725 Set which planes will be processed, unprocessed planes will be copied.
15726 By default value 0xf, all planes will be processed.
15727
15728 @item scale
15729 Set value which will be multiplied with filtered result.
15730
15731 @item delta
15732 Set value which will be added to filtered result.
15733 @end table
15734
15735 @section pseudocolor
15736
15737 Alter frame colors in video with pseudocolors.
15738
15739 This filter accepts the following options:
15740
15741 @table @option
15742 @item c0
15743 set pixel first component expression
15744
15745 @item c1
15746 set pixel second component expression
15747
15748 @item c2
15749 set pixel third component expression
15750
15751 @item c3
15752 set pixel fourth component expression, corresponds to the alpha component
15753
15754 @item i
15755 set component to use as base for altering colors
15756 @end table
15757
15758 Each of them specifies the expression to use for computing the lookup table for
15759 the corresponding pixel component values.
15760
15761 The expressions can contain the following constants and functions:
15762
15763 @table @option
15764 @item w
15765 @item h
15766 The input width and height.
15767
15768 @item val
15769 The input value for the pixel component.
15770
15771 @item ymin, umin, vmin, amin
15772 The minimum allowed component value.
15773
15774 @item ymax, umax, vmax, amax
15775 The maximum allowed component value.
15776 @end table
15777
15778 All expressions default to "val".
15779
15780 @subsection Examples
15781
15782 @itemize
15783 @item
15784 Change too high luma values to gradient:
15785 @example
15786 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'"
15787 @end example
15788 @end itemize
15789
15790 @section psnr
15791
15792 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
15793 Ratio) between two input videos.
15794
15795 This filter takes in input two input videos, the first input is
15796 considered the "main" source and is passed unchanged to the
15797 output. The second input is used as a "reference" video for computing
15798 the PSNR.
15799
15800 Both video inputs must have the same resolution and pixel format for
15801 this filter to work correctly. Also it assumes that both inputs
15802 have the same number of frames, which are compared one by one.
15803
15804 The obtained average PSNR is printed through the logging system.
15805
15806 The filter stores the accumulated MSE (mean squared error) of each
15807 frame, and at the end of the processing it is averaged across all frames
15808 equally, and the following formula is applied to obtain the PSNR:
15809
15810 @example
15811 PSNR = 10*log10(MAX^2/MSE)
15812 @end example
15813
15814 Where MAX is the average of the maximum values of each component of the
15815 image.
15816
15817 The description of the accepted parameters follows.
15818
15819 @table @option
15820 @item stats_file, f
15821 If specified the filter will use the named file to save the PSNR of
15822 each individual frame. When filename equals "-" the data is sent to
15823 standard output.
15824
15825 @item stats_version
15826 Specifies which version of the stats file format to use. Details of
15827 each format are written below.
15828 Default value is 1.
15829
15830 @item stats_add_max
15831 Determines whether the max value is output to the stats log.
15832 Default value is 0.
15833 Requires stats_version >= 2. If this is set and stats_version < 2,
15834 the filter will return an error.
15835 @end table
15836
15837 This filter also supports the @ref{framesync} options.
15838
15839 The file printed if @var{stats_file} is selected, contains a sequence of
15840 key/value pairs of the form @var{key}:@var{value} for each compared
15841 couple of frames.
15842
15843 If a @var{stats_version} greater than 1 is specified, a header line precedes
15844 the list of per-frame-pair stats, with key value pairs following the frame
15845 format with the following parameters:
15846
15847 @table @option
15848 @item psnr_log_version
15849 The version of the log file format. Will match @var{stats_version}.
15850
15851 @item fields
15852 A comma separated list of the per-frame-pair parameters included in
15853 the log.
15854 @end table
15855
15856 A description of each shown per-frame-pair parameter follows:
15857
15858 @table @option
15859 @item n
15860 sequential number of the input frame, starting from 1
15861
15862 @item mse_avg
15863 Mean Square Error pixel-by-pixel average difference of the compared
15864 frames, averaged over all the image components.
15865
15866 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
15867 Mean Square Error pixel-by-pixel average difference of the compared
15868 frames for the component specified by the suffix.
15869
15870 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
15871 Peak Signal to Noise ratio of the compared frames for the component
15872 specified by the suffix.
15873
15874 @item max_avg, max_y, max_u, max_v
15875 Maximum allowed value for each channel, and average over all
15876 channels.
15877 @end table
15878
15879 @subsection Examples
15880 @itemize
15881 @item
15882 For example:
15883 @example
15884 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15885 [main][ref] psnr="stats_file=stats.log" [out]
15886 @end example
15887
15888 On this example the input file being processed is compared with the
15889 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
15890 is stored in @file{stats.log}.
15891
15892 @item
15893 Another example with different containers:
15894 @example
15895 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 -
15896 @end example
15897 @end itemize
15898
15899 @anchor{pullup}
15900 @section pullup
15901
15902 Pulldown reversal (inverse telecine) filter, capable of handling mixed
15903 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
15904 content.
15905
15906 The pullup filter is designed to take advantage of future context in making
15907 its decisions. This filter is stateless in the sense that it does not lock
15908 onto a pattern to follow, but it instead looks forward to the following
15909 fields in order to identify matches and rebuild progressive frames.
15910
15911 To produce content with an even framerate, insert the fps filter after
15912 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
15913 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
15914
15915 The filter accepts the following options:
15916
15917 @table @option
15918 @item jl
15919 @item jr
15920 @item jt
15921 @item jb
15922 These options set the amount of "junk" to ignore at the left, right, top, and
15923 bottom of the image, respectively. Left and right are in units of 8 pixels,
15924 while top and bottom are in units of 2 lines.
15925 The default is 8 pixels on each side.
15926
15927 @item sb
15928 Set the strict breaks. Setting this option to 1 will reduce the chances of
15929 filter generating an occasional mismatched frame, but it may also cause an
15930 excessive number of frames to be dropped during high motion sequences.
15931 Conversely, setting it to -1 will make filter match fields more easily.
15932 This may help processing of video where there is slight blurring between
15933 the fields, but may also cause there to be interlaced frames in the output.
15934 Default value is @code{0}.
15935
15936 @item mp
15937 Set the metric plane to use. It accepts the following values:
15938 @table @samp
15939 @item l
15940 Use luma plane.
15941
15942 @item u
15943 Use chroma blue plane.
15944
15945 @item v
15946 Use chroma red plane.
15947 @end table
15948
15949 This option may be set to use chroma plane instead of the default luma plane
15950 for doing filter's computations. This may improve accuracy on very clean
15951 source material, but more likely will decrease accuracy, especially if there
15952 is chroma noise (rainbow effect) or any grayscale video.
15953 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
15954 load and make pullup usable in realtime on slow machines.
15955 @end table
15956
15957 For best results (without duplicated frames in the output file) it is
15958 necessary to change the output frame rate. For example, to inverse
15959 telecine NTSC input:
15960 @example
15961 ffmpeg -i input -vf pullup -r 24000/1001 ...
15962 @end example
15963
15964 @section qp
15965
15966 Change video quantization parameters (QP).
15967
15968 The filter accepts the following option:
15969
15970 @table @option
15971 @item qp
15972 Set expression for quantization parameter.
15973 @end table
15974
15975 The expression is evaluated through the eval API and can contain, among others,
15976 the following constants:
15977
15978 @table @var
15979 @item known
15980 1 if index is not 129, 0 otherwise.
15981
15982 @item qp
15983 Sequential index starting from -129 to 128.
15984 @end table
15985
15986 @subsection Examples
15987
15988 @itemize
15989 @item
15990 Some equation like:
15991 @example
15992 qp=2+2*sin(PI*qp)
15993 @end example
15994 @end itemize
15995
15996 @section random
15997
15998 Flush video frames from internal cache of frames into a random order.
15999 No frame is discarded.
16000 Inspired by @ref{frei0r} nervous filter.
16001
16002 @table @option
16003 @item frames
16004 Set size in number of frames of internal cache, in range from @code{2} to
16005 @code{512}. Default is @code{30}.
16006
16007 @item seed
16008 Set seed for random number generator, must be an integer included between
16009 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
16010 less than @code{0}, the filter will try to use a good random seed on a
16011 best effort basis.
16012 @end table
16013
16014 @section readeia608
16015
16016 Read closed captioning (EIA-608) information from the top lines of a video frame.
16017
16018 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
16019 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
16020 with EIA-608 data (starting from 0). A description of each metadata value follows:
16021
16022 @table @option
16023 @item lavfi.readeia608.X.cc
16024 The two bytes stored as EIA-608 data (printed in hexadecimal).
16025
16026 @item lavfi.readeia608.X.line
16027 The number of the line on which the EIA-608 data was identified and read.
16028 @end table
16029
16030 This filter accepts the following options:
16031
16032 @table @option
16033 @item scan_min
16034 Set the line to start scanning for EIA-608 data. Default is @code{0}.
16035
16036 @item scan_max
16037 Set the line to end scanning for EIA-608 data. Default is @code{29}.
16038
16039 @item spw
16040 Set the ratio of width reserved for sync code detection.
16041 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
16042
16043 @item chp
16044 Enable checking the parity bit. In the event of a parity error, the filter will output
16045 @code{0x00} for that character. Default is false.
16046
16047 @item lp
16048 Lowpass lines prior to further processing. Default is enabled.
16049 @end table
16050
16051 @subsection Commands
16052
16053 This filter supports the all above options as @ref{commands}.
16054
16055 @subsection Examples
16056
16057 @itemize
16058 @item
16059 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
16060 @example
16061 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
16062 @end example
16063 @end itemize
16064
16065 @section readvitc
16066
16067 Read vertical interval timecode (VITC) information from the top lines of a
16068 video frame.
16069
16070 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
16071 timecode value, if a valid timecode has been detected. Further metadata key
16072 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
16073 timecode data has been found or not.
16074
16075 This filter accepts the following options:
16076
16077 @table @option
16078 @item scan_max
16079 Set the maximum number of lines to scan for VITC data. If the value is set to
16080 @code{-1} the full video frame is scanned. Default is @code{45}.
16081
16082 @item thr_b
16083 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
16084 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
16085
16086 @item thr_w
16087 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
16088 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
16089 @end table
16090
16091 @subsection Examples
16092
16093 @itemize
16094 @item
16095 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
16096 draw @code{--:--:--:--} as a placeholder:
16097 @example
16098 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
16099 @end example
16100 @end itemize
16101
16102 @section remap
16103
16104 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
16105
16106 Destination pixel at position (X, Y) will be picked from source (x, y) position
16107 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
16108 value for pixel will be used for destination pixel.
16109
16110 Xmap and Ymap input video streams must be of same dimensions. Output video stream
16111 will have Xmap/Ymap video stream dimensions.
16112 Xmap and Ymap input video streams are 16bit depth, single channel.
16113
16114 @table @option
16115 @item format
16116 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
16117 Default is @code{color}.
16118
16119 @item fill
16120 Specify the color of the unmapped pixels. For the syntax of this option,
16121 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
16122 manual,ffmpeg-utils}. Default color is @code{black}.
16123 @end table
16124
16125 @section removegrain
16126
16127 The removegrain filter is a spatial denoiser for progressive video.
16128
16129 @table @option
16130 @item m0
16131 Set mode for the first plane.
16132
16133 @item m1
16134 Set mode for the second plane.
16135
16136 @item m2
16137 Set mode for the third plane.
16138
16139 @item m3
16140 Set mode for the fourth plane.
16141 @end table
16142
16143 Range of mode is from 0 to 24. Description of each mode follows:
16144
16145 @table @var
16146 @item 0
16147 Leave input plane unchanged. Default.
16148
16149 @item 1
16150 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
16151
16152 @item 2
16153 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
16154
16155 @item 3
16156 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
16157
16158 @item 4
16159 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
16160 This is equivalent to a median filter.
16161
16162 @item 5
16163 Line-sensitive clipping giving the minimal change.
16164
16165 @item 6
16166 Line-sensitive clipping, intermediate.
16167
16168 @item 7
16169 Line-sensitive clipping, intermediate.
16170
16171 @item 8
16172 Line-sensitive clipping, intermediate.
16173
16174 @item 9
16175 Line-sensitive clipping on a line where the neighbours pixels are the closest.
16176
16177 @item 10
16178 Replaces the target pixel with the closest neighbour.
16179
16180 @item 11
16181 [1 2 1] horizontal and vertical kernel blur.
16182
16183 @item 12
16184 Same as mode 11.
16185
16186 @item 13
16187 Bob mode, interpolates top field from the line where the neighbours
16188 pixels are the closest.
16189
16190 @item 14
16191 Bob mode, interpolates bottom field from the line where the neighbours
16192 pixels are the closest.
16193
16194 @item 15
16195 Bob mode, interpolates top field. Same as 13 but with a more complicated
16196 interpolation formula.
16197
16198 @item 16
16199 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
16200 interpolation formula.
16201
16202 @item 17
16203 Clips the pixel with the minimum and maximum of respectively the maximum and
16204 minimum of each pair of opposite neighbour pixels.
16205
16206 @item 18
16207 Line-sensitive clipping using opposite neighbours whose greatest distance from
16208 the current pixel is minimal.
16209
16210 @item 19
16211 Replaces the pixel with the average of its 8 neighbours.
16212
16213 @item 20
16214 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
16215
16216 @item 21
16217 Clips pixels using the averages of opposite neighbour.
16218
16219 @item 22
16220 Same as mode 21 but simpler and faster.
16221
16222 @item 23
16223 Small edge and halo removal, but reputed useless.
16224
16225 @item 24
16226 Similar as 23.
16227 @end table
16228
16229 @section removelogo
16230
16231 Suppress a TV station logo, using an image file to determine which
16232 pixels comprise the logo. It works by filling in the pixels that
16233 comprise the logo with neighboring pixels.
16234
16235 The filter accepts the following options:
16236
16237 @table @option
16238 @item filename, f
16239 Set the filter bitmap file, which can be any image format supported by
16240 libavformat. The width and height of the image file must match those of the
16241 video stream being processed.
16242 @end table
16243
16244 Pixels in the provided bitmap image with a value of zero are not
16245 considered part of the logo, non-zero pixels are considered part of
16246 the logo. If you use white (255) for the logo and black (0) for the
16247 rest, you will be safe. For making the filter bitmap, it is
16248 recommended to take a screen capture of a black frame with the logo
16249 visible, and then using a threshold filter followed by the erode
16250 filter once or twice.
16251
16252 If needed, little splotches can be fixed manually. Remember that if
16253 logo pixels are not covered, the filter quality will be much
16254 reduced. Marking too many pixels as part of the logo does not hurt as
16255 much, but it will increase the amount of blurring needed to cover over
16256 the image and will destroy more information than necessary, and extra
16257 pixels will slow things down on a large logo.
16258
16259 @section repeatfields
16260
16261 This filter uses the repeat_field flag from the Video ES headers and hard repeats
16262 fields based on its value.
16263
16264 @section reverse
16265
16266 Reverse a video clip.
16267
16268 Warning: This filter requires memory to buffer the entire clip, so trimming
16269 is suggested.
16270
16271 @subsection Examples
16272
16273 @itemize
16274 @item
16275 Take the first 5 seconds of a clip, and reverse it.
16276 @example
16277 trim=end=5,reverse
16278 @end example
16279 @end itemize
16280
16281 @section rgbashift
16282 Shift R/G/B/A pixels horizontally and/or vertically.
16283
16284 The filter accepts the following options:
16285 @table @option
16286 @item rh
16287 Set amount to shift red horizontally.
16288 @item rv
16289 Set amount to shift red vertically.
16290 @item gh
16291 Set amount to shift green horizontally.
16292 @item gv
16293 Set amount to shift green vertically.
16294 @item bh
16295 Set amount to shift blue horizontally.
16296 @item bv
16297 Set amount to shift blue vertically.
16298 @item ah
16299 Set amount to shift alpha horizontally.
16300 @item av
16301 Set amount to shift alpha vertically.
16302 @item edge
16303 Set edge mode, can be @var{smear}, default, or @var{warp}.
16304 @end table
16305
16306 @subsection Commands
16307
16308 This filter supports the all above options as @ref{commands}.
16309
16310 @section roberts
16311 Apply roberts cross operator to input video stream.
16312
16313 The filter accepts the following option:
16314
16315 @table @option
16316 @item planes
16317 Set which planes will be processed, unprocessed planes will be copied.
16318 By default value 0xf, all planes will be processed.
16319
16320 @item scale
16321 Set value which will be multiplied with filtered result.
16322
16323 @item delta
16324 Set value which will be added to filtered result.
16325 @end table
16326
16327 @section rotate
16328
16329 Rotate video by an arbitrary angle expressed in radians.
16330
16331 The filter accepts the following options:
16332
16333 A description of the optional parameters follows.
16334 @table @option
16335 @item angle, a
16336 Set an expression for the angle by which to rotate the input video
16337 clockwise, expressed as a number of radians. A negative value will
16338 result in a counter-clockwise rotation. By default it is set to "0".
16339
16340 This expression is evaluated for each frame.
16341
16342 @item out_w, ow
16343 Set the output width expression, default value is "iw".
16344 This expression is evaluated just once during configuration.
16345
16346 @item out_h, oh
16347 Set the output height expression, default value is "ih".
16348 This expression is evaluated just once during configuration.
16349
16350 @item bilinear
16351 Enable bilinear interpolation if set to 1, a value of 0 disables
16352 it. Default value is 1.
16353
16354 @item fillcolor, c
16355 Set the color used to fill the output area not covered by the rotated
16356 image. For the general syntax of this option, check the
16357 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16358 If the special value "none" is selected then no
16359 background is printed (useful for example if the background is never shown).
16360
16361 Default value is "black".
16362 @end table
16363
16364 The expressions for the angle and the output size can contain the
16365 following constants and functions:
16366
16367 @table @option
16368 @item n
16369 sequential number of the input frame, starting from 0. It is always NAN
16370 before the first frame is filtered.
16371
16372 @item t
16373 time in seconds of the input frame, it is set to 0 when the filter is
16374 configured. It is always NAN before the first frame is filtered.
16375
16376 @item hsub
16377 @item vsub
16378 horizontal and vertical chroma subsample values. For example for the
16379 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16380
16381 @item in_w, iw
16382 @item in_h, ih
16383 the input video width and height
16384
16385 @item out_w, ow
16386 @item out_h, oh
16387 the output width and height, that is the size of the padded area as
16388 specified by the @var{width} and @var{height} expressions
16389
16390 @item rotw(a)
16391 @item roth(a)
16392 the minimal width/height required for completely containing the input
16393 video rotated by @var{a} radians.
16394
16395 These are only available when computing the @option{out_w} and
16396 @option{out_h} expressions.
16397 @end table
16398
16399 @subsection Examples
16400
16401 @itemize
16402 @item
16403 Rotate the input by PI/6 radians clockwise:
16404 @example
16405 rotate=PI/6
16406 @end example
16407
16408 @item
16409 Rotate the input by PI/6 radians counter-clockwise:
16410 @example
16411 rotate=-PI/6
16412 @end example
16413
16414 @item
16415 Rotate the input by 45 degrees clockwise:
16416 @example
16417 rotate=45*PI/180
16418 @end example
16419
16420 @item
16421 Apply a constant rotation with period T, starting from an angle of PI/3:
16422 @example
16423 rotate=PI/3+2*PI*t/T
16424 @end example
16425
16426 @item
16427 Make the input video rotation oscillating with a period of T
16428 seconds and an amplitude of A radians:
16429 @example
16430 rotate=A*sin(2*PI/T*t)
16431 @end example
16432
16433 @item
16434 Rotate the video, output size is chosen so that the whole rotating
16435 input video is always completely contained in the output:
16436 @example
16437 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
16438 @end example
16439
16440 @item
16441 Rotate the video, reduce the output size so that no background is ever
16442 shown:
16443 @example
16444 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
16445 @end example
16446 @end itemize
16447
16448 @subsection Commands
16449
16450 The filter supports the following commands:
16451
16452 @table @option
16453 @item a, angle
16454 Set the angle expression.
16455 The command accepts the same syntax of the corresponding option.
16456
16457 If the specified expression is not valid, it is kept at its current
16458 value.
16459 @end table
16460
16461 @section sab
16462
16463 Apply Shape Adaptive Blur.
16464
16465 The filter accepts the following options:
16466
16467 @table @option
16468 @item luma_radius, lr
16469 Set luma blur filter strength, must be a value in range 0.1-4.0, default
16470 value is 1.0. A greater value will result in a more blurred image, and
16471 in slower processing.
16472
16473 @item luma_pre_filter_radius, lpfr
16474 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
16475 value is 1.0.
16476
16477 @item luma_strength, ls
16478 Set luma maximum difference between pixels to still be considered, must
16479 be a value in the 0.1-100.0 range, default value is 1.0.
16480
16481 @item chroma_radius, cr
16482 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
16483 greater value will result in a more blurred image, and in slower
16484 processing.
16485
16486 @item chroma_pre_filter_radius, cpfr
16487 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
16488
16489 @item chroma_strength, cs
16490 Set chroma maximum difference between pixels to still be considered,
16491 must be a value in the -0.9-100.0 range.
16492 @end table
16493
16494 Each chroma option value, if not explicitly specified, is set to the
16495 corresponding luma option value.
16496
16497 @anchor{scale}
16498 @section scale
16499
16500 Scale (resize) the input video, using the libswscale library.
16501
16502 The scale filter forces the output display aspect ratio to be the same
16503 of the input, by changing the output sample aspect ratio.
16504
16505 If the input image format is different from the format requested by
16506 the next filter, the scale filter will convert the input to the
16507 requested format.
16508
16509 @subsection Options
16510 The filter accepts the following options, or any of the options
16511 supported by the libswscale scaler.
16512
16513 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
16514 the complete list of scaler options.
16515
16516 @table @option
16517 @item width, w
16518 @item height, h
16519 Set the output video dimension expression. Default value is the input
16520 dimension.
16521
16522 If the @var{width} or @var{w} value is 0, the input width is used for
16523 the output. If the @var{height} or @var{h} value is 0, the input height
16524 is used for the output.
16525
16526 If one and only one of the values is -n with n >= 1, the scale filter
16527 will use a value that maintains the aspect ratio of the input image,
16528 calculated from the other specified dimension. After that it will,
16529 however, make sure that the calculated dimension is divisible by n and
16530 adjust the value if necessary.
16531
16532 If both values are -n with n >= 1, the behavior will be identical to
16533 both values being set to 0 as previously detailed.
16534
16535 See below for the list of accepted constants for use in the dimension
16536 expression.
16537
16538 @item eval
16539 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
16540
16541 @table @samp
16542 @item init
16543 Only evaluate expressions once during the filter initialization or when a command is processed.
16544
16545 @item frame
16546 Evaluate expressions for each incoming frame.
16547
16548 @end table
16549
16550 Default value is @samp{init}.
16551
16552
16553 @item interl
16554 Set the interlacing mode. It accepts the following values:
16555
16556 @table @samp
16557 @item 1
16558 Force interlaced aware scaling.
16559
16560 @item 0
16561 Do not apply interlaced scaling.
16562
16563 @item -1
16564 Select interlaced aware scaling depending on whether the source frames
16565 are flagged as interlaced or not.
16566 @end table
16567
16568 Default value is @samp{0}.
16569
16570 @item flags
16571 Set libswscale scaling flags. See
16572 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16573 complete list of values. If not explicitly specified the filter applies
16574 the default flags.
16575
16576
16577 @item param0, param1
16578 Set libswscale input parameters for scaling algorithms that need them. See
16579 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16580 complete documentation. If not explicitly specified the filter applies
16581 empty parameters.
16582
16583
16584
16585 @item size, s
16586 Set the video size. For the syntax of this option, check the
16587 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16588
16589 @item in_color_matrix
16590 @item out_color_matrix
16591 Set in/output YCbCr color space type.
16592
16593 This allows the autodetected value to be overridden as well as allows forcing
16594 a specific value used for the output and encoder.
16595
16596 If not specified, the color space type depends on the pixel format.
16597
16598 Possible values:
16599
16600 @table @samp
16601 @item auto
16602 Choose automatically.
16603
16604 @item bt709
16605 Format conforming to International Telecommunication Union (ITU)
16606 Recommendation BT.709.
16607
16608 @item fcc
16609 Set color space conforming to the United States Federal Communications
16610 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
16611
16612 @item bt601
16613 @item bt470
16614 @item smpte170m
16615 Set color space conforming to:
16616
16617 @itemize
16618 @item
16619 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
16620
16621 @item
16622 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
16623
16624 @item
16625 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
16626
16627 @end itemize
16628
16629 @item smpte240m
16630 Set color space conforming to SMPTE ST 240:1999.
16631
16632 @item bt2020
16633 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
16634 @end table
16635
16636 @item in_range
16637 @item out_range
16638 Set in/output YCbCr sample range.
16639
16640 This allows the autodetected value to be overridden as well as allows forcing
16641 a specific value used for the output and encoder. If not specified, the
16642 range depends on the pixel format. Possible values:
16643
16644 @table @samp
16645 @item auto/unknown
16646 Choose automatically.
16647
16648 @item jpeg/full/pc
16649 Set full range (0-255 in case of 8-bit luma).
16650
16651 @item mpeg/limited/tv
16652 Set "MPEG" range (16-235 in case of 8-bit luma).
16653 @end table
16654
16655 @item force_original_aspect_ratio
16656 Enable decreasing or increasing output video width or height if necessary to
16657 keep the original aspect ratio. Possible values:
16658
16659 @table @samp
16660 @item disable
16661 Scale the video as specified and disable this feature.
16662
16663 @item decrease
16664 The output video dimensions will automatically be decreased if needed.
16665
16666 @item increase
16667 The output video dimensions will automatically be increased if needed.
16668
16669 @end table
16670
16671 One useful instance of this option is that when you know a specific device's
16672 maximum allowed resolution, you can use this to limit the output video to
16673 that, while retaining the aspect ratio. For example, device A allows
16674 1280x720 playback, and your video is 1920x800. Using this option (set it to
16675 decrease) and specifying 1280x720 to the command line makes the output
16676 1280x533.
16677
16678 Please note that this is a different thing than specifying -1 for @option{w}
16679 or @option{h}, you still need to specify the output resolution for this option
16680 to work.
16681
16682 @item force_divisible_by
16683 Ensures that both the output dimensions, width and height, are divisible by the
16684 given integer when used together with @option{force_original_aspect_ratio}. This
16685 works similar to using @code{-n} in the @option{w} and @option{h} options.
16686
16687 This option respects the value set for @option{force_original_aspect_ratio},
16688 increasing or decreasing the resolution accordingly. The video's aspect ratio
16689 may be slightly modified.
16690
16691 This option can be handy if you need to have a video fit within or exceed
16692 a defined resolution using @option{force_original_aspect_ratio} but also have
16693 encoder restrictions on width or height divisibility.
16694
16695 @end table
16696
16697 The values of the @option{w} and @option{h} options are expressions
16698 containing the following constants:
16699
16700 @table @var
16701 @item in_w
16702 @item in_h
16703 The input width and height
16704
16705 @item iw
16706 @item ih
16707 These are the same as @var{in_w} and @var{in_h}.
16708
16709 @item out_w
16710 @item out_h
16711 The output (scaled) width and height
16712
16713 @item ow
16714 @item oh
16715 These are the same as @var{out_w} and @var{out_h}
16716
16717 @item a
16718 The same as @var{iw} / @var{ih}
16719
16720 @item sar
16721 input sample aspect ratio
16722
16723 @item dar
16724 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
16725
16726 @item hsub
16727 @item vsub
16728 horizontal and vertical input chroma subsample values. For example for the
16729 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16730
16731 @item ohsub
16732 @item ovsub
16733 horizontal and vertical output chroma subsample values. For example for the
16734 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16735
16736 @item n
16737 The (sequential) number of the input frame, starting from 0.
16738 Only available with @code{eval=frame}.
16739
16740 @item t
16741 The presentation timestamp of the input frame, expressed as a number of
16742 seconds. Only available with @code{eval=frame}.
16743
16744 @item pos
16745 The position (byte offset) of the frame in the input stream, or NaN if
16746 this information is unavailable and/or meaningless (for example in case of synthetic video).
16747 Only available with @code{eval=frame}.
16748 @end table
16749
16750 @subsection Examples
16751
16752 @itemize
16753 @item
16754 Scale the input video to a size of 200x100
16755 @example
16756 scale=w=200:h=100
16757 @end example
16758
16759 This is equivalent to:
16760 @example
16761 scale=200:100
16762 @end example
16763
16764 or:
16765 @example
16766 scale=200x100
16767 @end example
16768
16769 @item
16770 Specify a size abbreviation for the output size:
16771 @example
16772 scale=qcif
16773 @end example
16774
16775 which can also be written as:
16776 @example
16777 scale=size=qcif
16778 @end example
16779
16780 @item
16781 Scale the input to 2x:
16782 @example
16783 scale=w=2*iw:h=2*ih
16784 @end example
16785
16786 @item
16787 The above is the same as:
16788 @example
16789 scale=2*in_w:2*in_h
16790 @end example
16791
16792 @item
16793 Scale the input to 2x with forced interlaced scaling:
16794 @example
16795 scale=2*iw:2*ih:interl=1
16796 @end example
16797
16798 @item
16799 Scale the input to half size:
16800 @example
16801 scale=w=iw/2:h=ih/2
16802 @end example
16803
16804 @item
16805 Increase the width, and set the height to the same size:
16806 @example
16807 scale=3/2*iw:ow
16808 @end example
16809
16810 @item
16811 Seek Greek harmony:
16812 @example
16813 scale=iw:1/PHI*iw
16814 scale=ih*PHI:ih
16815 @end example
16816
16817 @item
16818 Increase the height, and set the width to 3/2 of the height:
16819 @example
16820 scale=w=3/2*oh:h=3/5*ih
16821 @end example
16822
16823 @item
16824 Increase the size, making the size a multiple of the chroma
16825 subsample values:
16826 @example
16827 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
16828 @end example
16829
16830 @item
16831 Increase the width to a maximum of 500 pixels,
16832 keeping the same aspect ratio as the input:
16833 @example
16834 scale=w='min(500\, iw*3/2):h=-1'
16835 @end example
16836
16837 @item
16838 Make pixels square by combining scale and setsar:
16839 @example
16840 scale='trunc(ih*dar):ih',setsar=1/1
16841 @end example
16842
16843 @item
16844 Make pixels square by combining scale and setsar,
16845 making sure the resulting resolution is even (required by some codecs):
16846 @example
16847 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
16848 @end example
16849 @end itemize
16850
16851 @subsection Commands
16852
16853 This filter supports the following commands:
16854 @table @option
16855 @item width, w
16856 @item height, h
16857 Set the output video dimension expression.
16858 The command accepts the same syntax of the corresponding option.
16859
16860 If the specified expression is not valid, it is kept at its current
16861 value.
16862 @end table
16863
16864 @section scale_npp
16865
16866 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
16867 format conversion on CUDA video frames. Setting the output width and height
16868 works in the same way as for the @var{scale} filter.
16869
16870 The following additional options are accepted:
16871 @table @option
16872 @item format
16873 The pixel format of the output CUDA frames. If set to the string "same" (the
16874 default), the input format will be kept. Note that automatic format negotiation
16875 and conversion is not yet supported for hardware frames
16876
16877 @item interp_algo
16878 The interpolation algorithm used for resizing. One of the following:
16879 @table @option
16880 @item nn
16881 Nearest neighbour.
16882
16883 @item linear
16884 @item cubic
16885 @item cubic2p_bspline
16886 2-parameter cubic (B=1, C=0)
16887
16888 @item cubic2p_catmullrom
16889 2-parameter cubic (B=0, C=1/2)
16890
16891 @item cubic2p_b05c03
16892 2-parameter cubic (B=1/2, C=3/10)
16893
16894 @item super
16895 Supersampling
16896
16897 @item lanczos
16898 @end table
16899
16900 @item force_original_aspect_ratio
16901 Enable decreasing or increasing output video width or height if necessary to
16902 keep the original aspect ratio. Possible values:
16903
16904 @table @samp
16905 @item disable
16906 Scale the video as specified and disable this feature.
16907
16908 @item decrease
16909 The output video dimensions will automatically be decreased if needed.
16910
16911 @item increase
16912 The output video dimensions will automatically be increased if needed.
16913
16914 @end table
16915
16916 One useful instance of this option is that when you know a specific device's
16917 maximum allowed resolution, you can use this to limit the output video to
16918 that, while retaining the aspect ratio. For example, device A allows
16919 1280x720 playback, and your video is 1920x800. Using this option (set it to
16920 decrease) and specifying 1280x720 to the command line makes the output
16921 1280x533.
16922
16923 Please note that this is a different thing than specifying -1 for @option{w}
16924 or @option{h}, you still need to specify the output resolution for this option
16925 to work.
16926
16927 @item force_divisible_by
16928 Ensures that both the output dimensions, width and height, are divisible by the
16929 given integer when used together with @option{force_original_aspect_ratio}. This
16930 works similar to using @code{-n} in the @option{w} and @option{h} options.
16931
16932 This option respects the value set for @option{force_original_aspect_ratio},
16933 increasing or decreasing the resolution accordingly. The video's aspect ratio
16934 may be slightly modified.
16935
16936 This option can be handy if you need to have a video fit within or exceed
16937 a defined resolution using @option{force_original_aspect_ratio} but also have
16938 encoder restrictions on width or height divisibility.
16939
16940 @end table
16941
16942 @section scale2ref
16943
16944 Scale (resize) the input video, based on a reference video.
16945
16946 See the scale filter for available options, scale2ref supports the same but
16947 uses the reference video instead of the main input as basis. scale2ref also
16948 supports the following additional constants for the @option{w} and
16949 @option{h} options:
16950
16951 @table @var
16952 @item main_w
16953 @item main_h
16954 The main input video's width and height
16955
16956 @item main_a
16957 The same as @var{main_w} / @var{main_h}
16958
16959 @item main_sar
16960 The main input video's sample aspect ratio
16961
16962 @item main_dar, mdar
16963 The main input video's display aspect ratio. Calculated from
16964 @code{(main_w / main_h) * main_sar}.
16965
16966 @item main_hsub
16967 @item main_vsub
16968 The main input video's horizontal and vertical chroma subsample values.
16969 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
16970 is 1.
16971
16972 @item main_n
16973 The (sequential) number of the main input frame, starting from 0.
16974 Only available with @code{eval=frame}.
16975
16976 @item main_t
16977 The presentation timestamp of the main input frame, expressed as a number of
16978 seconds. Only available with @code{eval=frame}.
16979
16980 @item main_pos
16981 The position (byte offset) of the frame in the main input stream, or NaN if
16982 this information is unavailable and/or meaningless (for example in case of synthetic video).
16983 Only available with @code{eval=frame}.
16984 @end table
16985
16986 @subsection Examples
16987
16988 @itemize
16989 @item
16990 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
16991 @example
16992 'scale2ref[b][a];[a][b]overlay'
16993 @end example
16994
16995 @item
16996 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
16997 @example
16998 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
16999 @end example
17000 @end itemize
17001
17002 @subsection Commands
17003
17004 This filter supports the following commands:
17005 @table @option
17006 @item width, w
17007 @item height, h
17008 Set the output video dimension expression.
17009 The command accepts the same syntax of the corresponding option.
17010
17011 If the specified expression is not valid, it is kept at its current
17012 value.
17013 @end table
17014
17015 @section scroll
17016 Scroll input video horizontally and/or vertically by constant speed.
17017
17018 The filter accepts the following options:
17019 @table @option
17020 @item horizontal, h
17021 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
17022 Negative values changes scrolling direction.
17023
17024 @item vertical, v
17025 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
17026 Negative values changes scrolling direction.
17027
17028 @item hpos
17029 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
17030
17031 @item vpos
17032 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
17033 @end table
17034
17035 @subsection Commands
17036
17037 This filter supports the following @ref{commands}:
17038 @table @option
17039 @item horizontal, h
17040 Set the horizontal scrolling speed.
17041 @item vertical, v
17042 Set the vertical scrolling speed.
17043 @end table
17044
17045 @anchor{scdet}
17046 @section scdet
17047
17048 Detect video scene change.
17049
17050 This filter sets frame metadata with mafd between frame, the scene score, and
17051 forward the frame to the next filter, so they can use these metadata to detect
17052 scene change or others.
17053
17054 In addition, this filter logs a message and sets frame metadata when it detects
17055 a scene change by @option{threshold}.
17056
17057 @code{lavfi.scd.mafd} metadata keys are set with mafd for every frame.
17058
17059 @code{lavfi.scd.score} metadata keys are set with scene change score for every frame
17060 to detect scene change.
17061
17062 @code{lavfi.scd.time} metadata keys are set with current filtered frame time which
17063 detect scene change with @option{threshold}.
17064
17065 The filter accepts the following options:
17066
17067 @table @option
17068 @item threshold, t
17069 Set the scene change detection threshold as a percentage of maximum change. Good
17070 values are in the @code{[8.0, 14.0]} range. The range for @option{threshold} is
17071 @code{[0., 100.]}.
17072
17073 Default value is @code{10.}.
17074
17075 @item sc_pass, s
17076 Set the flag to pass scene change frames to the next filter. Default value is @code{0}
17077 You can enable it if you want to get snapshot of scene change frames only.
17078 @end table
17079
17080 @anchor{selectivecolor}
17081 @section selectivecolor
17082
17083 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
17084 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
17085 by the "purity" of the color (that is, how saturated it already is).
17086
17087 This filter is similar to the Adobe Photoshop Selective Color tool.
17088
17089 The filter accepts the following options:
17090
17091 @table @option
17092 @item correction_method
17093 Select color correction method.
17094
17095 Available values are:
17096 @table @samp
17097 @item absolute
17098 Specified adjustments are applied "as-is" (added/subtracted to original pixel
17099 component value).
17100 @item relative
17101 Specified adjustments are relative to the original component value.
17102 @end table
17103 Default is @code{absolute}.
17104 @item reds
17105 Adjustments for red pixels (pixels where the red component is the maximum)
17106 @item yellows
17107 Adjustments for yellow pixels (pixels where the blue component is the minimum)
17108 @item greens
17109 Adjustments for green pixels (pixels where the green component is the maximum)
17110 @item cyans
17111 Adjustments for cyan pixels (pixels where the red component is the minimum)
17112 @item blues
17113 Adjustments for blue pixels (pixels where the blue component is the maximum)
17114 @item magentas
17115 Adjustments for magenta pixels (pixels where the green component is the minimum)
17116 @item whites
17117 Adjustments for white pixels (pixels where all components are greater than 128)
17118 @item neutrals
17119 Adjustments for all pixels except pure black and pure white
17120 @item blacks
17121 Adjustments for black pixels (pixels where all components are lesser than 128)
17122 @item psfile
17123 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
17124 @end table
17125
17126 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
17127 4 space separated floating point adjustment values in the [-1,1] range,
17128 respectively to adjust the amount of cyan, magenta, yellow and black for the
17129 pixels of its range.
17130
17131 @subsection Examples
17132
17133 @itemize
17134 @item
17135 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
17136 increase magenta by 27% in blue areas:
17137 @example
17138 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
17139 @end example
17140
17141 @item
17142 Use a Photoshop selective color preset:
17143 @example
17144 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
17145 @end example
17146 @end itemize
17147
17148 @anchor{separatefields}
17149 @section separatefields
17150
17151 The @code{separatefields} takes a frame-based video input and splits
17152 each frame into its components fields, producing a new half height clip
17153 with twice the frame rate and twice the frame count.
17154
17155 This filter use field-dominance information in frame to decide which
17156 of each pair of fields to place first in the output.
17157 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
17158
17159 @section setdar, setsar
17160
17161 The @code{setdar} filter sets the Display Aspect Ratio for the filter
17162 output video.
17163
17164 This is done by changing the specified Sample (aka Pixel) Aspect
17165 Ratio, according to the following equation:
17166 @example
17167 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
17168 @end example
17169
17170 Keep in mind that the @code{setdar} filter does not modify the pixel
17171 dimensions of the video frame. Also, the display aspect ratio set by
17172 this filter may be changed by later filters in the filterchain,
17173 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
17174 applied.
17175
17176 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
17177 the filter output video.
17178
17179 Note that as a consequence of the application of this filter, the
17180 output display aspect ratio will change according to the equation
17181 above.
17182
17183 Keep in mind that the sample aspect ratio set by the @code{setsar}
17184 filter may be changed by later filters in the filterchain, e.g. if
17185 another "setsar" or a "setdar" filter is applied.
17186
17187 It accepts the following parameters:
17188
17189 @table @option
17190 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
17191 Set the aspect ratio used by the filter.
17192
17193 The parameter can be a floating point number string, an expression, or
17194 a string of the form @var{num}:@var{den}, where @var{num} and
17195 @var{den} are the numerator and denominator of the aspect ratio. If
17196 the parameter is not specified, it is assumed the value "0".
17197 In case the form "@var{num}:@var{den}" is used, the @code{:} character
17198 should be escaped.
17199
17200 @item max
17201 Set the maximum integer value to use for expressing numerator and
17202 denominator when reducing the expressed aspect ratio to a rational.
17203 Default value is @code{100}.
17204
17205 @end table
17206
17207 The parameter @var{sar} is an expression containing
17208 the following constants:
17209
17210 @table @option
17211 @item E, PI, PHI
17212 These are approximated values for the mathematical constants e
17213 (Euler's number), pi (Greek pi), and phi (the golden ratio).
17214
17215 @item w, h
17216 The input width and height.
17217
17218 @item a
17219 These are the same as @var{w} / @var{h}.
17220
17221 @item sar
17222 The input sample aspect ratio.
17223
17224 @item dar
17225 The input display aspect ratio. It is the same as
17226 (@var{w} / @var{h}) * @var{sar}.
17227
17228 @item hsub, vsub
17229 Horizontal and vertical chroma subsample values. For example, for the
17230 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17231 @end table
17232
17233 @subsection Examples
17234
17235 @itemize
17236
17237 @item
17238 To change the display aspect ratio to 16:9, specify one of the following:
17239 @example
17240 setdar=dar=1.77777
17241 setdar=dar=16/9
17242 @end example
17243
17244 @item
17245 To change the sample aspect ratio to 10:11, specify:
17246 @example
17247 setsar=sar=10/11
17248 @end example
17249
17250 @item
17251 To set a display aspect ratio of 16:9, and specify a maximum integer value of
17252 1000 in the aspect ratio reduction, use the command:
17253 @example
17254 setdar=ratio=16/9:max=1000
17255 @end example
17256
17257 @end itemize
17258
17259 @anchor{setfield}
17260 @section setfield
17261
17262 Force field for the output video frame.
17263
17264 The @code{setfield} filter marks the interlace type field for the
17265 output frames. It does not change the input frame, but only sets the
17266 corresponding property, which affects how the frame is treated by
17267 following filters (e.g. @code{fieldorder} or @code{yadif}).
17268
17269 The filter accepts the following options:
17270
17271 @table @option
17272
17273 @item mode
17274 Available values are:
17275
17276 @table @samp
17277 @item auto
17278 Keep the same field property.
17279
17280 @item bff
17281 Mark the frame as bottom-field-first.
17282
17283 @item tff
17284 Mark the frame as top-field-first.
17285
17286 @item prog
17287 Mark the frame as progressive.
17288 @end table
17289 @end table
17290
17291 @anchor{setparams}
17292 @section setparams
17293
17294 Force frame parameter for the output video frame.
17295
17296 The @code{setparams} filter marks interlace and color range for the
17297 output frames. It does not change the input frame, but only sets the
17298 corresponding property, which affects how the frame is treated by
17299 filters/encoders.
17300
17301 @table @option
17302 @item field_mode
17303 Available values are:
17304
17305 @table @samp
17306 @item auto
17307 Keep the same field property (default).
17308
17309 @item bff
17310 Mark the frame as bottom-field-first.
17311
17312 @item tff
17313 Mark the frame as top-field-first.
17314
17315 @item prog
17316 Mark the frame as progressive.
17317 @end table
17318
17319 @item range
17320 Available values are:
17321
17322 @table @samp
17323 @item auto
17324 Keep the same color range property (default).
17325
17326 @item unspecified, unknown
17327 Mark the frame as unspecified color range.
17328
17329 @item limited, tv, mpeg
17330 Mark the frame as limited range.
17331
17332 @item full, pc, jpeg
17333 Mark the frame as full range.
17334 @end table
17335
17336 @item color_primaries
17337 Set the color primaries.
17338 Available values are:
17339
17340 @table @samp
17341 @item auto
17342 Keep the same color primaries property (default).
17343
17344 @item bt709
17345 @item unknown
17346 @item bt470m
17347 @item bt470bg
17348 @item smpte170m
17349 @item smpte240m
17350 @item film
17351 @item bt2020
17352 @item smpte428
17353 @item smpte431
17354 @item smpte432
17355 @item jedec-p22
17356 @end table
17357
17358 @item color_trc
17359 Set the color transfer.
17360 Available values are:
17361
17362 @table @samp
17363 @item auto
17364 Keep the same color trc property (default).
17365
17366 @item bt709
17367 @item unknown
17368 @item bt470m
17369 @item bt470bg
17370 @item smpte170m
17371 @item smpte240m
17372 @item linear
17373 @item log100
17374 @item log316
17375 @item iec61966-2-4
17376 @item bt1361e
17377 @item iec61966-2-1
17378 @item bt2020-10
17379 @item bt2020-12
17380 @item smpte2084
17381 @item smpte428
17382 @item arib-std-b67
17383 @end table
17384
17385 @item colorspace
17386 Set the colorspace.
17387 Available values are:
17388
17389 @table @samp
17390 @item auto
17391 Keep the same colorspace property (default).
17392
17393 @item gbr
17394 @item bt709
17395 @item unknown
17396 @item fcc
17397 @item bt470bg
17398 @item smpte170m
17399 @item smpte240m
17400 @item ycgco
17401 @item bt2020nc
17402 @item bt2020c
17403 @item smpte2085
17404 @item chroma-derived-nc
17405 @item chroma-derived-c
17406 @item ictcp
17407 @end table
17408 @end table
17409
17410 @section showinfo
17411
17412 Show a line containing various information for each input video frame.
17413 The input video is not modified.
17414
17415 This filter supports the following options:
17416
17417 @table @option
17418 @item checksum
17419 Calculate checksums of each plane. By default enabled.
17420 @end table
17421
17422 The shown line contains a sequence of key/value pairs of the form
17423 @var{key}:@var{value}.
17424
17425 The following values are shown in the output:
17426
17427 @table @option
17428 @item n
17429 The (sequential) number of the input frame, starting from 0.
17430
17431 @item pts
17432 The Presentation TimeStamp of the input frame, expressed as a number of
17433 time base units. The time base unit depends on the filter input pad.
17434
17435 @item pts_time
17436 The Presentation TimeStamp of the input frame, expressed as a number of
17437 seconds.
17438
17439 @item pos
17440 The position of the frame in the input stream, or -1 if this information is
17441 unavailable and/or meaningless (for example in case of synthetic video).
17442
17443 @item fmt
17444 The pixel format name.
17445
17446 @item sar
17447 The sample aspect ratio of the input frame, expressed in the form
17448 @var{num}/@var{den}.
17449
17450 @item s
17451 The size of the input frame. For the syntax of this option, check the
17452 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17453
17454 @item i
17455 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
17456 for bottom field first).
17457
17458 @item iskey
17459 This is 1 if the frame is a key frame, 0 otherwise.
17460
17461 @item type
17462 The picture type of the input frame ("I" for an I-frame, "P" for a
17463 P-frame, "B" for a B-frame, or "?" for an unknown type).
17464 Also refer to the documentation of the @code{AVPictureType} enum and of
17465 the @code{av_get_picture_type_char} function defined in
17466 @file{libavutil/avutil.h}.
17467
17468 @item checksum
17469 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
17470
17471 @item plane_checksum
17472 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
17473 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
17474
17475 @item mean
17476 The mean value of pixels in each plane of the input frame, expressed in the form
17477 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
17478
17479 @item stdev
17480 The standard deviation of pixel values in each plane of the input frame, expressed
17481 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
17482
17483 @end table
17484
17485 @section showpalette
17486
17487 Displays the 256 colors palette of each frame. This filter is only relevant for
17488 @var{pal8} pixel format frames.
17489
17490 It accepts the following option:
17491
17492 @table @option
17493 @item s
17494 Set the size of the box used to represent one palette color entry. Default is
17495 @code{30} (for a @code{30x30} pixel box).
17496 @end table
17497
17498 @section shuffleframes
17499
17500 Reorder and/or duplicate and/or drop video frames.
17501
17502 It accepts the following parameters:
17503
17504 @table @option
17505 @item mapping
17506 Set the destination indexes of input frames.
17507 This is space or '|' separated list of indexes that maps input frames to output
17508 frames. Number of indexes also sets maximal value that each index may have.
17509 '-1' index have special meaning and that is to drop frame.
17510 @end table
17511
17512 The first frame has the index 0. The default is to keep the input unchanged.
17513
17514 @subsection Examples
17515
17516 @itemize
17517 @item
17518 Swap second and third frame of every three frames of the input:
17519 @example
17520 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
17521 @end example
17522
17523 @item
17524 Swap 10th and 1st frame of every ten frames of the input:
17525 @example
17526 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
17527 @end example
17528 @end itemize
17529
17530 @section shuffleplanes
17531
17532 Reorder and/or duplicate video planes.
17533
17534 It accepts the following parameters:
17535
17536 @table @option
17537
17538 @item map0
17539 The index of the input plane to be used as the first output plane.
17540
17541 @item map1
17542 The index of the input plane to be used as the second output plane.
17543
17544 @item map2
17545 The index of the input plane to be used as the third output plane.
17546
17547 @item map3
17548 The index of the input plane to be used as the fourth output plane.
17549
17550 @end table
17551
17552 The first plane has the index 0. The default is to keep the input unchanged.
17553
17554 @subsection Examples
17555
17556 @itemize
17557 @item
17558 Swap the second and third planes of the input:
17559 @example
17560 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
17561 @end example
17562 @end itemize
17563
17564 @anchor{signalstats}
17565 @section signalstats
17566 Evaluate various visual metrics that assist in determining issues associated
17567 with the digitization of analog video media.
17568
17569 By default the filter will log these metadata values:
17570
17571 @table @option
17572 @item YMIN
17573 Display the minimal Y value contained within the input frame. Expressed in
17574 range of [0-255].
17575
17576 @item YLOW
17577 Display the Y value at the 10% percentile within the input frame. Expressed in
17578 range of [0-255].
17579
17580 @item YAVG
17581 Display the average Y value within the input frame. Expressed in range of
17582 [0-255].
17583
17584 @item YHIGH
17585 Display the Y value at the 90% percentile within the input frame. Expressed in
17586 range of [0-255].
17587
17588 @item YMAX
17589 Display the maximum Y value contained within the input frame. Expressed in
17590 range of [0-255].
17591
17592 @item UMIN
17593 Display the minimal U value contained within the input frame. Expressed in
17594 range of [0-255].
17595
17596 @item ULOW
17597 Display the U value at the 10% percentile within the input frame. Expressed in
17598 range of [0-255].
17599
17600 @item UAVG
17601 Display the average U value within the input frame. Expressed in range of
17602 [0-255].
17603
17604 @item UHIGH
17605 Display the U value at the 90% percentile within the input frame. Expressed in
17606 range of [0-255].
17607
17608 @item UMAX
17609 Display the maximum U value contained within the input frame. Expressed in
17610 range of [0-255].
17611
17612 @item VMIN
17613 Display the minimal V value contained within the input frame. Expressed in
17614 range of [0-255].
17615
17616 @item VLOW
17617 Display the V value at the 10% percentile within the input frame. Expressed in
17618 range of [0-255].
17619
17620 @item VAVG
17621 Display the average V value within the input frame. Expressed in range of
17622 [0-255].
17623
17624 @item VHIGH
17625 Display the V value at the 90% percentile within the input frame. Expressed in
17626 range of [0-255].
17627
17628 @item VMAX
17629 Display the maximum V value contained within the input frame. Expressed in
17630 range of [0-255].
17631
17632 @item SATMIN
17633 Display the minimal saturation value contained within the input frame.
17634 Expressed in range of [0-~181.02].
17635
17636 @item SATLOW
17637 Display the saturation value at the 10% percentile within the input frame.
17638 Expressed in range of [0-~181.02].
17639
17640 @item SATAVG
17641 Display the average saturation value within the input frame. Expressed in range
17642 of [0-~181.02].
17643
17644 @item SATHIGH
17645 Display the saturation value at the 90% percentile within the input frame.
17646 Expressed in range of [0-~181.02].
17647
17648 @item SATMAX
17649 Display the maximum saturation value contained within the input frame.
17650 Expressed in range of [0-~181.02].
17651
17652 @item HUEMED
17653 Display the median value for hue within the input frame. Expressed in range of
17654 [0-360].
17655
17656 @item HUEAVG
17657 Display the average value for hue within the input frame. Expressed in range of
17658 [0-360].
17659
17660 @item YDIF
17661 Display the average of sample value difference between all values of the Y
17662 plane in the current frame and corresponding values of the previous input frame.
17663 Expressed in range of [0-255].
17664
17665 @item UDIF
17666 Display the average of sample value difference between all values of the U
17667 plane in the current frame and corresponding values of the previous input frame.
17668 Expressed in range of [0-255].
17669
17670 @item VDIF
17671 Display the average of sample value difference between all values of the V
17672 plane in the current frame and corresponding values of the previous input frame.
17673 Expressed in range of [0-255].
17674
17675 @item YBITDEPTH
17676 Display bit depth of Y plane in current frame.
17677 Expressed in range of [0-16].
17678
17679 @item UBITDEPTH
17680 Display bit depth of U plane in current frame.
17681 Expressed in range of [0-16].
17682
17683 @item VBITDEPTH
17684 Display bit depth of V plane in current frame.
17685 Expressed in range of [0-16].
17686 @end table
17687
17688 The filter accepts the following options:
17689
17690 @table @option
17691 @item stat
17692 @item out
17693
17694 @option{stat} specify an additional form of image analysis.
17695 @option{out} output video with the specified type of pixel highlighted.
17696
17697 Both options accept the following values:
17698
17699 @table @samp
17700 @item tout
17701 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
17702 unlike the neighboring pixels of the same field. Examples of temporal outliers
17703 include the results of video dropouts, head clogs, or tape tracking issues.
17704
17705 @item vrep
17706 Identify @var{vertical line repetition}. Vertical line repetition includes
17707 similar rows of pixels within a frame. In born-digital video vertical line
17708 repetition is common, but this pattern is uncommon in video digitized from an
17709 analog source. When it occurs in video that results from the digitization of an
17710 analog source it can indicate concealment from a dropout compensator.
17711
17712 @item brng
17713 Identify pixels that fall outside of legal broadcast range.
17714 @end table
17715
17716 @item color, c
17717 Set the highlight color for the @option{out} option. The default color is
17718 yellow.
17719 @end table
17720
17721 @subsection Examples
17722
17723 @itemize
17724 @item
17725 Output data of various video metrics:
17726 @example
17727 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
17728 @end example
17729
17730 @item
17731 Output specific data about the minimum and maximum values of the Y plane per frame:
17732 @example
17733 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
17734 @end example
17735
17736 @item
17737 Playback video while highlighting pixels that are outside of broadcast range in red.
17738 @example
17739 ffplay example.mov -vf signalstats="out=brng:color=red"
17740 @end example
17741
17742 @item
17743 Playback video with signalstats metadata drawn over the frame.
17744 @example
17745 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
17746 @end example
17747
17748 The contents of signalstat_drawtext.txt used in the command are:
17749 @example
17750 time %@{pts:hms@}
17751 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
17752 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
17753 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
17754 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
17755
17756 @end example
17757 @end itemize
17758
17759 @anchor{signature}
17760 @section signature
17761
17762 Calculates the MPEG-7 Video Signature. The filter can handle more than one
17763 input. In this case the matching between the inputs can be calculated additionally.
17764 The filter always passes through the first input. The signature of each stream can
17765 be written into a file.
17766
17767 It accepts the following options:
17768
17769 @table @option
17770 @item detectmode
17771 Enable or disable the matching process.
17772
17773 Available values are:
17774
17775 @table @samp
17776 @item off
17777 Disable the calculation of a matching (default).
17778 @item full
17779 Calculate the matching for the whole video and output whether the whole video
17780 matches or only parts.
17781 @item fast
17782 Calculate only until a matching is found or the video ends. Should be faster in
17783 some cases.
17784 @end table
17785
17786 @item nb_inputs
17787 Set the number of inputs. The option value must be a non negative integer.
17788 Default value is 1.
17789
17790 @item filename
17791 Set the path to which the output is written. If there is more than one input,
17792 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
17793 integer), that will be replaced with the input number. If no filename is
17794 specified, no output will be written. This is the default.
17795
17796 @item format
17797 Choose the output format.
17798
17799 Available values are:
17800
17801 @table @samp
17802 @item binary
17803 Use the specified binary representation (default).
17804 @item xml
17805 Use the specified xml representation.
17806 @end table
17807
17808 @item th_d
17809 Set threshold to detect one word as similar. The option value must be an integer
17810 greater than zero. The default value is 9000.
17811
17812 @item th_dc
17813 Set threshold to detect all words as similar. The option value must be an integer
17814 greater than zero. The default value is 60000.
17815
17816 @item th_xh
17817 Set threshold to detect frames as similar. The option value must be an integer
17818 greater than zero. The default value is 116.
17819
17820 @item th_di
17821 Set the minimum length of a sequence in frames to recognize it as matching
17822 sequence. The option value must be a non negative integer value.
17823 The default value is 0.
17824
17825 @item th_it
17826 Set the minimum relation, that matching frames to all frames must have.
17827 The option value must be a double value between 0 and 1. The default value is 0.5.
17828 @end table
17829
17830 @subsection Examples
17831
17832 @itemize
17833 @item
17834 To calculate the signature of an input video and store it in signature.bin:
17835 @example
17836 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
17837 @end example
17838
17839 @item
17840 To detect whether two videos match and store the signatures in XML format in
17841 signature0.xml and signature1.xml:
17842 @example
17843 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 -
17844 @end example
17845
17846 @end itemize
17847
17848 @anchor{smartblur}
17849 @section smartblur
17850
17851 Blur the input video without impacting the outlines.
17852
17853 It accepts the following options:
17854
17855 @table @option
17856 @item luma_radius, lr
17857 Set the luma radius. The option value must be a float number in
17858 the range [0.1,5.0] that specifies the variance of the gaussian filter
17859 used to blur the image (slower if larger). Default value is 1.0.
17860
17861 @item luma_strength, ls
17862 Set the luma strength. The option value must be a float number
17863 in the range [-1.0,1.0] that configures the blurring. A value included
17864 in [0.0,1.0] will blur the image whereas a value included in
17865 [-1.0,0.0] will sharpen the image. Default value is 1.0.
17866
17867 @item luma_threshold, lt
17868 Set the luma threshold used as a coefficient to determine
17869 whether a pixel should be blurred or not. The option value must be an
17870 integer in the range [-30,30]. A value of 0 will filter all the image,
17871 a value included in [0,30] will filter flat areas and a value included
17872 in [-30,0] will filter edges. Default value is 0.
17873
17874 @item chroma_radius, cr
17875 Set the chroma radius. The option value must be a float number in
17876 the range [0.1,5.0] that specifies the variance of the gaussian filter
17877 used to blur the image (slower if larger). Default value is @option{luma_radius}.
17878
17879 @item chroma_strength, cs
17880 Set the chroma strength. The option value must be a float number
17881 in the range [-1.0,1.0] that configures the blurring. A value included
17882 in [0.0,1.0] will blur the image whereas a value included in
17883 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
17884
17885 @item chroma_threshold, ct
17886 Set the chroma threshold used as a coefficient to determine
17887 whether a pixel should be blurred or not. The option value must be an
17888 integer in the range [-30,30]. A value of 0 will filter all the image,
17889 a value included in [0,30] will filter flat areas and a value included
17890 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
17891 @end table
17892
17893 If a chroma option is not explicitly set, the corresponding luma value
17894 is set.
17895
17896 @section sobel
17897 Apply sobel operator to input video stream.
17898
17899 The filter accepts the following option:
17900
17901 @table @option
17902 @item planes
17903 Set which planes will be processed, unprocessed planes will be copied.
17904 By default value 0xf, all planes will be processed.
17905
17906 @item scale
17907 Set value which will be multiplied with filtered result.
17908
17909 @item delta
17910 Set value which will be added to filtered result.
17911 @end table
17912
17913 @anchor{spp}
17914 @section spp
17915
17916 Apply a simple postprocessing filter that compresses and decompresses the image
17917 at several (or - in the case of @option{quality} level @code{6} - all) shifts
17918 and average the results.
17919
17920 The filter accepts the following options:
17921
17922 @table @option
17923 @item quality
17924 Set quality. This option defines the number of levels for averaging. It accepts
17925 an integer in the range 0-6. If set to @code{0}, the filter will have no
17926 effect. A value of @code{6} means the higher quality. For each increment of
17927 that value the speed drops by a factor of approximately 2.  Default value is
17928 @code{3}.
17929
17930 @item qp
17931 Force a constant quantization parameter. If not set, the filter will use the QP
17932 from the video stream (if available).
17933
17934 @item mode
17935 Set thresholding mode. Available modes are:
17936
17937 @table @samp
17938 @item hard
17939 Set hard thresholding (default).
17940 @item soft
17941 Set soft thresholding (better de-ringing effect, but likely blurrier).
17942 @end table
17943
17944 @item use_bframe_qp
17945 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
17946 option may cause flicker since the B-Frames have often larger QP. Default is
17947 @code{0} (not enabled).
17948 @end table
17949
17950 @subsection Commands
17951
17952 This filter supports the following commands:
17953 @table @option
17954 @item quality, level
17955 Set quality level. The value @code{max} can be used to set the maximum level,
17956 currently @code{6}.
17957 @end table
17958
17959 @anchor{sr}
17960 @section sr
17961
17962 Scale the input by applying one of the super-resolution methods based on
17963 convolutional neural networks. Supported models:
17964
17965 @itemize
17966 @item
17967 Super-Resolution Convolutional Neural Network model (SRCNN).
17968 See @url{https://arxiv.org/abs/1501.00092}.
17969
17970 @item
17971 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
17972 See @url{https://arxiv.org/abs/1609.05158}.
17973 @end itemize
17974
17975 Training scripts as well as scripts for model file (.pb) saving can be found at
17976 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
17977 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
17978
17979 Native model files (.model) can be generated from TensorFlow model
17980 files (.pb) by using tools/python/convert.py
17981
17982 The filter accepts the following options:
17983
17984 @table @option
17985 @item dnn_backend
17986 Specify which DNN backend to use for model loading and execution. This option accepts
17987 the following values:
17988
17989 @table @samp
17990 @item native
17991 Native implementation of DNN loading and execution.
17992
17993 @item tensorflow
17994 TensorFlow backend. To enable this backend you
17995 need to install the TensorFlow for C library (see
17996 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
17997 @code{--enable-libtensorflow}
17998 @end table
17999
18000 Default value is @samp{native}.
18001
18002 @item model
18003 Set path to model file specifying network architecture and its parameters.
18004 Note that different backends use different file formats. TensorFlow backend
18005 can load files for both formats, while native backend can load files for only
18006 its format.
18007
18008 @item scale_factor
18009 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
18010 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
18011 input upscaled using bicubic upscaling with proper scale factor.
18012 @end table
18013
18014 This feature can also be finished with @ref{dnn_processing} filter.
18015
18016 @section ssim
18017
18018 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
18019
18020 This filter takes in input two input videos, the first input is
18021 considered the "main" source and is passed unchanged to the
18022 output. The second input is used as a "reference" video for computing
18023 the SSIM.
18024
18025 Both video inputs must have the same resolution and pixel format for
18026 this filter to work correctly. Also it assumes that both inputs
18027 have the same number of frames, which are compared one by one.
18028
18029 The filter stores the calculated SSIM of each frame.
18030
18031 The description of the accepted parameters follows.
18032
18033 @table @option
18034 @item stats_file, f
18035 If specified the filter will use the named file to save the SSIM of
18036 each individual frame. When filename equals "-" the data is sent to
18037 standard output.
18038 @end table
18039
18040 The file printed if @var{stats_file} is selected, contains a sequence of
18041 key/value pairs of the form @var{key}:@var{value} for each compared
18042 couple of frames.
18043
18044 A description of each shown parameter follows:
18045
18046 @table @option
18047 @item n
18048 sequential number of the input frame, starting from 1
18049
18050 @item Y, U, V, R, G, B
18051 SSIM of the compared frames for the component specified by the suffix.
18052
18053 @item All
18054 SSIM of the compared frames for the whole frame.
18055
18056 @item dB
18057 Same as above but in dB representation.
18058 @end table
18059
18060 This filter also supports the @ref{framesync} options.
18061
18062 @subsection Examples
18063 @itemize
18064 @item
18065 For example:
18066 @example
18067 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
18068 [main][ref] ssim="stats_file=stats.log" [out]
18069 @end example
18070
18071 On this example the input file being processed is compared with the
18072 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
18073 is stored in @file{stats.log}.
18074
18075 @item
18076 Another example with both psnr and ssim at same time:
18077 @example
18078 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
18079 @end example
18080
18081 @item
18082 Another example with different containers:
18083 @example
18084 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 -
18085 @end example
18086 @end itemize
18087
18088 @section stereo3d
18089
18090 Convert between different stereoscopic image formats.
18091
18092 The filters accept the following options:
18093
18094 @table @option
18095 @item in
18096 Set stereoscopic image format of input.
18097
18098 Available values for input image formats are:
18099 @table @samp
18100 @item sbsl
18101 side by side parallel (left eye left, right eye right)
18102
18103 @item sbsr
18104 side by side crosseye (right eye left, left eye right)
18105
18106 @item sbs2l
18107 side by side parallel with half width resolution
18108 (left eye left, right eye right)
18109
18110 @item sbs2r
18111 side by side crosseye with half width resolution
18112 (right eye left, left eye right)
18113
18114 @item abl
18115 @item tbl
18116 above-below (left eye above, right eye below)
18117
18118 @item abr
18119 @item tbr
18120 above-below (right eye above, left eye below)
18121
18122 @item ab2l
18123 @item tb2l
18124 above-below with half height resolution
18125 (left eye above, right eye below)
18126
18127 @item ab2r
18128 @item tb2r
18129 above-below with half height resolution
18130 (right eye above, left eye below)
18131
18132 @item al
18133 alternating frames (left eye first, right eye second)
18134
18135 @item ar
18136 alternating frames (right eye first, left eye second)
18137
18138 @item irl
18139 interleaved rows (left eye has top row, right eye starts on next row)
18140
18141 @item irr
18142 interleaved rows (right eye has top row, left eye starts on next row)
18143
18144 @item icl
18145 interleaved columns, left eye first
18146
18147 @item icr
18148 interleaved columns, right eye first
18149
18150 Default value is @samp{sbsl}.
18151 @end table
18152
18153 @item out
18154 Set stereoscopic image format of output.
18155
18156 @table @samp
18157 @item sbsl
18158 side by side parallel (left eye left, right eye right)
18159
18160 @item sbsr
18161 side by side crosseye (right eye left, left eye right)
18162
18163 @item sbs2l
18164 side by side parallel with half width resolution
18165 (left eye left, right eye right)
18166
18167 @item sbs2r
18168 side by side crosseye with half width resolution
18169 (right eye left, left eye right)
18170
18171 @item abl
18172 @item tbl
18173 above-below (left eye above, right eye below)
18174
18175 @item abr
18176 @item tbr
18177 above-below (right eye above, left eye below)
18178
18179 @item ab2l
18180 @item tb2l
18181 above-below with half height resolution
18182 (left eye above, right eye below)
18183
18184 @item ab2r
18185 @item tb2r
18186 above-below with half height resolution
18187 (right eye above, left eye below)
18188
18189 @item al
18190 alternating frames (left eye first, right eye second)
18191
18192 @item ar
18193 alternating frames (right eye first, left eye second)
18194
18195 @item irl
18196 interleaved rows (left eye has top row, right eye starts on next row)
18197
18198 @item irr
18199 interleaved rows (right eye has top row, left eye starts on next row)
18200
18201 @item arbg
18202 anaglyph red/blue gray
18203 (red filter on left eye, blue filter on right eye)
18204
18205 @item argg
18206 anaglyph red/green gray
18207 (red filter on left eye, green filter on right eye)
18208
18209 @item arcg
18210 anaglyph red/cyan gray
18211 (red filter on left eye, cyan filter on right eye)
18212
18213 @item arch
18214 anaglyph red/cyan half colored
18215 (red filter on left eye, cyan filter on right eye)
18216
18217 @item arcc
18218 anaglyph red/cyan color
18219 (red filter on left eye, cyan filter on right eye)
18220
18221 @item arcd
18222 anaglyph red/cyan color optimized with the least squares projection of dubois
18223 (red filter on left eye, cyan filter on right eye)
18224
18225 @item agmg
18226 anaglyph green/magenta gray
18227 (green filter on left eye, magenta filter on right eye)
18228
18229 @item agmh
18230 anaglyph green/magenta half colored
18231 (green filter on left eye, magenta filter on right eye)
18232
18233 @item agmc
18234 anaglyph green/magenta colored
18235 (green filter on left eye, magenta filter on right eye)
18236
18237 @item agmd
18238 anaglyph green/magenta color optimized with the least squares projection of dubois
18239 (green filter on left eye, magenta filter on right eye)
18240
18241 @item aybg
18242 anaglyph yellow/blue gray
18243 (yellow filter on left eye, blue filter on right eye)
18244
18245 @item aybh
18246 anaglyph yellow/blue half colored
18247 (yellow filter on left eye, blue filter on right eye)
18248
18249 @item aybc
18250 anaglyph yellow/blue colored
18251 (yellow filter on left eye, blue filter on right eye)
18252
18253 @item aybd
18254 anaglyph yellow/blue color optimized with the least squares projection of dubois
18255 (yellow filter on left eye, blue filter on right eye)
18256
18257 @item ml
18258 mono output (left eye only)
18259
18260 @item mr
18261 mono output (right eye only)
18262
18263 @item chl
18264 checkerboard, left eye first
18265
18266 @item chr
18267 checkerboard, right eye first
18268
18269 @item icl
18270 interleaved columns, left eye first
18271
18272 @item icr
18273 interleaved columns, right eye first
18274
18275 @item hdmi
18276 HDMI frame pack
18277 @end table
18278
18279 Default value is @samp{arcd}.
18280 @end table
18281
18282 @subsection Examples
18283
18284 @itemize
18285 @item
18286 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
18287 @example
18288 stereo3d=sbsl:aybd
18289 @end example
18290
18291 @item
18292 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
18293 @example
18294 stereo3d=abl:sbsr
18295 @end example
18296 @end itemize
18297
18298 @section streamselect, astreamselect
18299 Select video or audio streams.
18300
18301 The filter accepts the following options:
18302
18303 @table @option
18304 @item inputs
18305 Set number of inputs. Default is 2.
18306
18307 @item map
18308 Set input indexes to remap to outputs.
18309 @end table
18310
18311 @subsection Commands
18312
18313 The @code{streamselect} and @code{astreamselect} filter supports the following
18314 commands:
18315
18316 @table @option
18317 @item map
18318 Set input indexes to remap to outputs.
18319 @end table
18320
18321 @subsection Examples
18322
18323 @itemize
18324 @item
18325 Select first 5 seconds 1st stream and rest of time 2nd stream:
18326 @example
18327 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
18328 @end example
18329
18330 @item
18331 Same as above, but for audio:
18332 @example
18333 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
18334 @end example
18335 @end itemize
18336
18337 @anchor{subtitles}
18338 @section subtitles
18339
18340 Draw subtitles on top of input video using the libass library.
18341
18342 To enable compilation of this filter you need to configure FFmpeg with
18343 @code{--enable-libass}. This filter also requires a build with libavcodec and
18344 libavformat to convert the passed subtitles file to ASS (Advanced Substation
18345 Alpha) subtitles format.
18346
18347 The filter accepts the following options:
18348
18349 @table @option
18350 @item filename, f
18351 Set the filename of the subtitle file to read. It must be specified.
18352
18353 @item original_size
18354 Specify the size of the original video, the video for which the ASS file
18355 was composed. For the syntax of this option, check the
18356 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18357 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
18358 correctly scale the fonts if the aspect ratio has been changed.
18359
18360 @item fontsdir
18361 Set a directory path containing fonts that can be used by the filter.
18362 These fonts will be used in addition to whatever the font provider uses.
18363
18364 @item alpha
18365 Process alpha channel, by default alpha channel is untouched.
18366
18367 @item charenc
18368 Set subtitles input character encoding. @code{subtitles} filter only. Only
18369 useful if not UTF-8.
18370
18371 @item stream_index, si
18372 Set subtitles stream index. @code{subtitles} filter only.
18373
18374 @item force_style
18375 Override default style or script info parameters of the subtitles. It accepts a
18376 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
18377 @end table
18378
18379 If the first key is not specified, it is assumed that the first value
18380 specifies the @option{filename}.
18381
18382 For example, to render the file @file{sub.srt} on top of the input
18383 video, use the command:
18384 @example
18385 subtitles=sub.srt
18386 @end example
18387
18388 which is equivalent to:
18389 @example
18390 subtitles=filename=sub.srt
18391 @end example
18392
18393 To render the default subtitles stream from file @file{video.mkv}, use:
18394 @example
18395 subtitles=video.mkv
18396 @end example
18397
18398 To render the second subtitles stream from that file, use:
18399 @example
18400 subtitles=video.mkv:si=1
18401 @end example
18402
18403 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
18404 @code{DejaVu Serif}, use:
18405 @example
18406 subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
18407 @end example
18408
18409 @section super2xsai
18410
18411 Scale the input by 2x and smooth using the Super2xSaI (Scale and
18412 Interpolate) pixel art scaling algorithm.
18413
18414 Useful for enlarging pixel art images without reducing sharpness.
18415
18416 @section swaprect
18417
18418 Swap two rectangular objects in video.
18419
18420 This filter accepts the following options:
18421
18422 @table @option
18423 @item w
18424 Set object width.
18425
18426 @item h
18427 Set object height.
18428
18429 @item x1
18430 Set 1st rect x coordinate.
18431
18432 @item y1
18433 Set 1st rect y coordinate.
18434
18435 @item x2
18436 Set 2nd rect x coordinate.
18437
18438 @item y2
18439 Set 2nd rect y coordinate.
18440
18441 All expressions are evaluated once for each frame.
18442 @end table
18443
18444 The all options are expressions containing the following constants:
18445
18446 @table @option
18447 @item w
18448 @item h
18449 The input width and height.
18450
18451 @item a
18452 same as @var{w} / @var{h}
18453
18454 @item sar
18455 input sample aspect ratio
18456
18457 @item dar
18458 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
18459
18460 @item n
18461 The number of the input frame, starting from 0.
18462
18463 @item t
18464 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
18465
18466 @item pos
18467 the position in the file of the input frame, NAN if unknown
18468 @end table
18469
18470 @section swapuv
18471 Swap U & V plane.
18472
18473 @section tblend
18474 Blend successive video frames.
18475
18476 See @ref{blend}
18477
18478 @section telecine
18479
18480 Apply telecine process to the video.
18481
18482 This filter accepts the following options:
18483
18484 @table @option
18485 @item first_field
18486 @table @samp
18487 @item top, t
18488 top field first
18489 @item bottom, b
18490 bottom field first
18491 The default value is @code{top}.
18492 @end table
18493
18494 @item pattern
18495 A string of numbers representing the pulldown pattern you wish to apply.
18496 The default value is @code{23}.
18497 @end table
18498
18499 @example
18500 Some typical patterns:
18501
18502 NTSC output (30i):
18503 27.5p: 32222
18504 24p: 23 (classic)
18505 24p: 2332 (preferred)
18506 20p: 33
18507 18p: 334
18508 16p: 3444
18509
18510 PAL output (25i):
18511 27.5p: 12222
18512 24p: 222222222223 ("Euro pulldown")
18513 16.67p: 33
18514 16p: 33333334
18515 @end example
18516
18517 @section thistogram
18518
18519 Compute and draw a color distribution histogram for the input video across time.
18520
18521 Unlike @ref{histogram} video filter which only shows histogram of single input frame
18522 at certain time, this filter shows also past histograms of number of frames defined
18523 by @code{width} option.
18524
18525 The computed histogram is a representation of the color component
18526 distribution in an image.
18527
18528 The filter accepts the following options:
18529
18530 @table @option
18531 @item width, w
18532 Set width of single color component output. Default value is @code{0}.
18533 Value of @code{0} means width will be picked from input video.
18534 This also set number of passed histograms to keep.
18535 Allowed range is [0, 8192].
18536
18537 @item display_mode, d
18538 Set display mode.
18539 It accepts the following values:
18540 @table @samp
18541 @item stack
18542 Per color component graphs are placed below each other.
18543
18544 @item parade
18545 Per color component graphs are placed side by side.
18546
18547 @item overlay
18548 Presents information identical to that in the @code{parade}, except
18549 that the graphs representing color components are superimposed directly
18550 over one another.
18551 @end table
18552 Default is @code{stack}.
18553
18554 @item levels_mode, m
18555 Set mode. Can be either @code{linear}, or @code{logarithmic}.
18556 Default is @code{linear}.
18557
18558 @item components, c
18559 Set what color components to display.
18560 Default is @code{7}.
18561
18562 @item bgopacity, b
18563 Set background opacity. Default is @code{0.9}.
18564
18565 @item envelope, e
18566 Show envelope. Default is disabled.
18567
18568 @item ecolor, ec
18569 Set envelope color. Default is @code{gold}.
18570
18571 @item slide
18572 Set slide mode.
18573
18574 Available values for slide is:
18575 @table @samp
18576 @item frame
18577 Draw new frame when right border is reached.
18578
18579 @item replace
18580 Replace old columns with new ones.
18581
18582 @item scroll
18583 Scroll from right to left.
18584
18585 @item rscroll
18586 Scroll from left to right.
18587
18588 @item picture
18589 Draw single picture.
18590 @end table
18591
18592 Default is @code{replace}.
18593 @end table
18594
18595 @section threshold
18596
18597 Apply threshold effect to video stream.
18598
18599 This filter needs four video streams to perform thresholding.
18600 First stream is stream we are filtering.
18601 Second stream is holding threshold values, third stream is holding min values,
18602 and last, fourth stream is holding max values.
18603
18604 The filter accepts the following option:
18605
18606 @table @option
18607 @item planes
18608 Set which planes will be processed, unprocessed planes will be copied.
18609 By default value 0xf, all planes will be processed.
18610 @end table
18611
18612 For example if first stream pixel's component value is less then threshold value
18613 of pixel component from 2nd threshold stream, third stream value will picked,
18614 otherwise fourth stream pixel component value will be picked.
18615
18616 Using color source filter one can perform various types of thresholding:
18617
18618 @subsection Examples
18619
18620 @itemize
18621 @item
18622 Binary threshold, using gray color as threshold:
18623 @example
18624 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
18625 @end example
18626
18627 @item
18628 Inverted binary threshold, using gray color as threshold:
18629 @example
18630 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
18631 @end example
18632
18633 @item
18634 Truncate binary threshold, using gray color as threshold:
18635 @example
18636 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
18637 @end example
18638
18639 @item
18640 Threshold to zero, using gray color as threshold:
18641 @example
18642 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
18643 @end example
18644
18645 @item
18646 Inverted threshold to zero, using gray color as threshold:
18647 @example
18648 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
18649 @end example
18650 @end itemize
18651
18652 @section thumbnail
18653 Select the most representative frame in a given sequence of consecutive frames.
18654
18655 The filter accepts the following options:
18656
18657 @table @option
18658 @item n
18659 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
18660 will pick one of them, and then handle the next batch of @var{n} frames until
18661 the end. Default is @code{100}.
18662 @end table
18663
18664 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
18665 value will result in a higher memory usage, so a high value is not recommended.
18666
18667 @subsection Examples
18668
18669 @itemize
18670 @item
18671 Extract one picture each 50 frames:
18672 @example
18673 thumbnail=50
18674 @end example
18675
18676 @item
18677 Complete example of a thumbnail creation with @command{ffmpeg}:
18678 @example
18679 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
18680 @end example
18681 @end itemize
18682
18683 @anchor{tile}
18684 @section tile
18685
18686 Tile several successive frames together.
18687
18688 The @ref{untile} filter can do the reverse.
18689
18690 The filter accepts the following options:
18691
18692 @table @option
18693
18694 @item layout
18695 Set the grid size (i.e. the number of lines and columns). For the syntax of
18696 this option, check the
18697 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18698
18699 @item nb_frames
18700 Set the maximum number of frames to render in the given area. It must be less
18701 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
18702 the area will be used.
18703
18704 @item margin
18705 Set the outer border margin in pixels.
18706
18707 @item padding
18708 Set the inner border thickness (i.e. the number of pixels between frames). For
18709 more advanced padding options (such as having different values for the edges),
18710 refer to the pad video filter.
18711
18712 @item color
18713 Specify the color of the unused area. For the syntax of this option, check the
18714 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18715 The default value of @var{color} is "black".
18716
18717 @item overlap
18718 Set the number of frames to overlap when tiling several successive frames together.
18719 The value must be between @code{0} and @var{nb_frames - 1}.
18720
18721 @item init_padding
18722 Set the number of frames to initially be empty before displaying first output frame.
18723 This controls how soon will one get first output frame.
18724 The value must be between @code{0} and @var{nb_frames - 1}.
18725 @end table
18726
18727 @subsection Examples
18728
18729 @itemize
18730 @item
18731 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
18732 @example
18733 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
18734 @end example
18735 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
18736 duplicating each output frame to accommodate the originally detected frame
18737 rate.
18738
18739 @item
18740 Display @code{5} pictures in an area of @code{3x2} frames,
18741 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
18742 mixed flat and named options:
18743 @example
18744 tile=3x2:nb_frames=5:padding=7:margin=2
18745 @end example
18746 @end itemize
18747
18748 @section tinterlace
18749
18750 Perform various types of temporal field interlacing.
18751
18752 Frames are counted starting from 1, so the first input frame is
18753 considered odd.
18754
18755 The filter accepts the following options:
18756
18757 @table @option
18758
18759 @item mode
18760 Specify the mode of the interlacing. This option can also be specified
18761 as a value alone. See below for a list of values for this option.
18762
18763 Available values are:
18764
18765 @table @samp
18766 @item merge, 0
18767 Move odd frames into the upper field, even into the lower field,
18768 generating a double height frame at half frame rate.
18769 @example
18770  ------> time
18771 Input:
18772 Frame 1         Frame 2         Frame 3         Frame 4
18773
18774 11111           22222           33333           44444
18775 11111           22222           33333           44444
18776 11111           22222           33333           44444
18777 11111           22222           33333           44444
18778
18779 Output:
18780 11111                           33333
18781 22222                           44444
18782 11111                           33333
18783 22222                           44444
18784 11111                           33333
18785 22222                           44444
18786 11111                           33333
18787 22222                           44444
18788 @end example
18789
18790 @item drop_even, 1
18791 Only output odd frames, even frames are dropped, generating a frame with
18792 unchanged height at half frame rate.
18793
18794 @example
18795  ------> time
18796 Input:
18797 Frame 1         Frame 2         Frame 3         Frame 4
18798
18799 11111           22222           33333           44444
18800 11111           22222           33333           44444
18801 11111           22222           33333           44444
18802 11111           22222           33333           44444
18803
18804 Output:
18805 11111                           33333
18806 11111                           33333
18807 11111                           33333
18808 11111                           33333
18809 @end example
18810
18811 @item drop_odd, 2
18812 Only output even frames, odd frames are dropped, generating a frame with
18813 unchanged height at half frame rate.
18814
18815 @example
18816  ------> time
18817 Input:
18818 Frame 1         Frame 2         Frame 3         Frame 4
18819
18820 11111           22222           33333           44444
18821 11111           22222           33333           44444
18822 11111           22222           33333           44444
18823 11111           22222           33333           44444
18824
18825 Output:
18826                 22222                           44444
18827                 22222                           44444
18828                 22222                           44444
18829                 22222                           44444
18830 @end example
18831
18832 @item pad, 3
18833 Expand each frame to full height, but pad alternate lines with black,
18834 generating a frame with double height at the same input frame rate.
18835
18836 @example
18837  ------> time
18838 Input:
18839 Frame 1         Frame 2         Frame 3         Frame 4
18840
18841 11111           22222           33333           44444
18842 11111           22222           33333           44444
18843 11111           22222           33333           44444
18844 11111           22222           33333           44444
18845
18846 Output:
18847 11111           .....           33333           .....
18848 .....           22222           .....           44444
18849 11111           .....           33333           .....
18850 .....           22222           .....           44444
18851 11111           .....           33333           .....
18852 .....           22222           .....           44444
18853 11111           .....           33333           .....
18854 .....           22222           .....           44444
18855 @end example
18856
18857
18858 @item interleave_top, 4
18859 Interleave the upper field from odd frames with the lower field from
18860 even frames, generating a frame with unchanged height at half frame rate.
18861
18862 @example
18863  ------> time
18864 Input:
18865 Frame 1         Frame 2         Frame 3         Frame 4
18866
18867 11111<-         22222           33333<-         44444
18868 11111           22222<-         33333           44444<-
18869 11111<-         22222           33333<-         44444
18870 11111           22222<-         33333           44444<-
18871
18872 Output:
18873 11111                           33333
18874 22222                           44444
18875 11111                           33333
18876 22222                           44444
18877 @end example
18878
18879
18880 @item interleave_bottom, 5
18881 Interleave the lower field from odd frames with the upper field from
18882 even frames, generating a frame with unchanged height at half frame rate.
18883
18884 @example
18885  ------> time
18886 Input:
18887 Frame 1         Frame 2         Frame 3         Frame 4
18888
18889 11111           22222<-         33333           44444<-
18890 11111<-         22222           33333<-         44444
18891 11111           22222<-         33333           44444<-
18892 11111<-         22222           33333<-         44444
18893
18894 Output:
18895 22222                           44444
18896 11111                           33333
18897 22222                           44444
18898 11111                           33333
18899 @end example
18900
18901
18902 @item interlacex2, 6
18903 Double frame rate with unchanged height. Frames are inserted each
18904 containing the second temporal field from the previous input frame and
18905 the first temporal field from the next input frame. This mode relies on
18906 the top_field_first flag. Useful for interlaced video displays with no
18907 field synchronisation.
18908
18909 @example
18910  ------> time
18911 Input:
18912 Frame 1         Frame 2         Frame 3         Frame 4
18913
18914 11111           22222           33333           44444
18915  11111           22222           33333           44444
18916 11111           22222           33333           44444
18917  11111           22222           33333           44444
18918
18919 Output:
18920 11111   22222   22222   33333   33333   44444   44444
18921  11111   11111   22222   22222   33333   33333   44444
18922 11111   22222   22222   33333   33333   44444   44444
18923  11111   11111   22222   22222   33333   33333   44444
18924 @end example
18925
18926
18927 @item mergex2, 7
18928 Move odd frames into the upper field, even into the lower field,
18929 generating a double height frame at same frame rate.
18930
18931 @example
18932  ------> time
18933 Input:
18934 Frame 1         Frame 2         Frame 3         Frame 4
18935
18936 11111           22222           33333           44444
18937 11111           22222           33333           44444
18938 11111           22222           33333           44444
18939 11111           22222           33333           44444
18940
18941 Output:
18942 11111           33333           33333           55555
18943 22222           22222           44444           44444
18944 11111           33333           33333           55555
18945 22222           22222           44444           44444
18946 11111           33333           33333           55555
18947 22222           22222           44444           44444
18948 11111           33333           33333           55555
18949 22222           22222           44444           44444
18950 @end example
18951
18952 @end table
18953
18954 Numeric values are deprecated but are accepted for backward
18955 compatibility reasons.
18956
18957 Default mode is @code{merge}.
18958
18959 @item flags
18960 Specify flags influencing the filter process.
18961
18962 Available value for @var{flags} is:
18963
18964 @table @option
18965 @item low_pass_filter, vlpf
18966 Enable linear vertical low-pass filtering in the filter.
18967 Vertical low-pass filtering is required when creating an interlaced
18968 destination from a progressive source which contains high-frequency
18969 vertical detail. Filtering will reduce interlace 'twitter' and Moire
18970 patterning.
18971
18972 @item complex_filter, cvlpf
18973 Enable complex vertical low-pass filtering.
18974 This will slightly less reduce interlace 'twitter' and Moire
18975 patterning but better retain detail and subjective sharpness impression.
18976
18977 @item bypass_il
18978 Bypass already interlaced frames, only adjust the frame rate.
18979 @end table
18980
18981 Vertical low-pass filtering and bypassing already interlaced frames can only be
18982 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
18983
18984 @end table
18985
18986 @section tmedian
18987 Pick median pixels from several successive input video frames.
18988
18989 The filter accepts the following options:
18990
18991 @table @option
18992 @item radius
18993 Set radius of median filter.
18994 Default is 1. Allowed range is from 1 to 127.
18995
18996 @item planes
18997 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
18998
18999 @item percentile
19000 Set median percentile. Default value is @code{0.5}.
19001 Default value of @code{0.5} will pick always median values, while @code{0} will pick
19002 minimum values, and @code{1} maximum values.
19003 @end table
19004
19005 @section tmix
19006
19007 Mix successive video frames.
19008
19009 A description of the accepted options follows.
19010
19011 @table @option
19012 @item frames
19013 The number of successive frames to mix. If unspecified, it defaults to 3.
19014
19015 @item weights
19016 Specify weight of each input video frame.
19017 Each weight is separated by space. If number of weights is smaller than
19018 number of @var{frames} last specified weight will be used for all remaining
19019 unset weights.
19020
19021 @item scale
19022 Specify scale, if it is set it will be multiplied with sum
19023 of each weight multiplied with pixel values to give final destination
19024 pixel value. By default @var{scale} is auto scaled to sum of weights.
19025 @end table
19026
19027 @subsection Examples
19028
19029 @itemize
19030 @item
19031 Average 7 successive frames:
19032 @example
19033 tmix=frames=7:weights="1 1 1 1 1 1 1"
19034 @end example
19035
19036 @item
19037 Apply simple temporal convolution:
19038 @example
19039 tmix=frames=3:weights="-1 3 -1"
19040 @end example
19041
19042 @item
19043 Similar as above but only showing temporal differences:
19044 @example
19045 tmix=frames=3:weights="-1 2 -1":scale=1
19046 @end example
19047 @end itemize
19048
19049 @anchor{tonemap}
19050 @section tonemap
19051 Tone map colors from different dynamic ranges.
19052
19053 This filter expects data in single precision floating point, as it needs to
19054 operate on (and can output) out-of-range values. Another filter, such as
19055 @ref{zscale}, is needed to convert the resulting frame to a usable format.
19056
19057 The tonemapping algorithms implemented only work on linear light, so input
19058 data should be linearized beforehand (and possibly correctly tagged).
19059
19060 @example
19061 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
19062 @end example
19063
19064 @subsection Options
19065 The filter accepts the following options.
19066
19067 @table @option
19068 @item tonemap
19069 Set the tone map algorithm to use.
19070
19071 Possible values are:
19072 @table @var
19073 @item none
19074 Do not apply any tone map, only desaturate overbright pixels.
19075
19076 @item clip
19077 Hard-clip any out-of-range values. Use it for perfect color accuracy for
19078 in-range values, while distorting out-of-range values.
19079
19080 @item linear
19081 Stretch the entire reference gamut to a linear multiple of the display.
19082
19083 @item gamma
19084 Fit a logarithmic transfer between the tone curves.
19085
19086 @item reinhard
19087 Preserve overall image brightness with a simple curve, using nonlinear
19088 contrast, which results in flattening details and degrading color accuracy.
19089
19090 @item hable
19091 Preserve both dark and bright details better than @var{reinhard}, at the cost
19092 of slightly darkening everything. Use it when detail preservation is more
19093 important than color and brightness accuracy.
19094
19095 @item mobius
19096 Smoothly map out-of-range values, while retaining contrast and colors for
19097 in-range material as much as possible. Use it when color accuracy is more
19098 important than detail preservation.
19099 @end table
19100
19101 Default is none.
19102
19103 @item param
19104 Tune the tone mapping algorithm.
19105
19106 This affects the following algorithms:
19107 @table @var
19108 @item none
19109 Ignored.
19110
19111 @item linear
19112 Specifies the scale factor to use while stretching.
19113 Default to 1.0.
19114
19115 @item gamma
19116 Specifies the exponent of the function.
19117 Default to 1.8.
19118
19119 @item clip
19120 Specify an extra linear coefficient to multiply into the signal before clipping.
19121 Default to 1.0.
19122
19123 @item reinhard
19124 Specify the local contrast coefficient at the display peak.
19125 Default to 0.5, which means that in-gamut values will be about half as bright
19126 as when clipping.
19127
19128 @item hable
19129 Ignored.
19130
19131 @item mobius
19132 Specify the transition point from linear to mobius transform. Every value
19133 below this point is guaranteed to be mapped 1:1. The higher the value, the
19134 more accurate the result will be, at the cost of losing bright details.
19135 Default to 0.3, which due to the steep initial slope still preserves in-range
19136 colors fairly accurately.
19137 @end table
19138
19139 @item desat
19140 Apply desaturation for highlights that exceed this level of brightness. The
19141 higher the parameter, the more color information will be preserved. This
19142 setting helps prevent unnaturally blown-out colors for super-highlights, by
19143 (smoothly) turning into white instead. This makes images feel more natural,
19144 at the cost of reducing information about out-of-range colors.
19145
19146 The default of 2.0 is somewhat conservative and will mostly just apply to
19147 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
19148
19149 This option works only if the input frame has a supported color tag.
19150
19151 @item peak
19152 Override signal/nominal/reference peak with this value. Useful when the
19153 embedded peak information in display metadata is not reliable or when tone
19154 mapping from a lower range to a higher range.
19155 @end table
19156
19157 @section tpad
19158
19159 Temporarily pad video frames.
19160
19161 The filter accepts the following options:
19162
19163 @table @option
19164 @item start
19165 Specify number of delay frames before input video stream. Default is 0.
19166
19167 @item stop
19168 Specify number of padding frames after input video stream.
19169 Set to -1 to pad indefinitely. Default is 0.
19170
19171 @item start_mode
19172 Set kind of frames added to beginning of stream.
19173 Can be either @var{add} or @var{clone}.
19174 With @var{add} frames of solid-color are added.
19175 With @var{clone} frames are clones of first frame.
19176 Default is @var{add}.
19177
19178 @item stop_mode
19179 Set kind of frames added to end of stream.
19180 Can be either @var{add} or @var{clone}.
19181 With @var{add} frames of solid-color are added.
19182 With @var{clone} frames are clones of last frame.
19183 Default is @var{add}.
19184
19185 @item start_duration, stop_duration
19186 Specify the duration of the start/stop delay. See
19187 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19188 for the accepted syntax.
19189 These options override @var{start} and @var{stop}. Default is 0.
19190
19191 @item color
19192 Specify the color of the padded area. For the syntax of this option,
19193 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
19194 manual,ffmpeg-utils}.
19195
19196 The default value of @var{color} is "black".
19197 @end table
19198
19199 @anchor{transpose}
19200 @section transpose
19201
19202 Transpose rows with columns in the input video and optionally flip it.
19203
19204 It accepts the following parameters:
19205
19206 @table @option
19207
19208 @item dir
19209 Specify the transposition direction.
19210
19211 Can assume the following values:
19212 @table @samp
19213 @item 0, 4, cclock_flip
19214 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
19215 @example
19216 L.R     L.l
19217 . . ->  . .
19218 l.r     R.r
19219 @end example
19220
19221 @item 1, 5, clock
19222 Rotate by 90 degrees clockwise, that is:
19223 @example
19224 L.R     l.L
19225 . . ->  . .
19226 l.r     r.R
19227 @end example
19228
19229 @item 2, 6, cclock
19230 Rotate by 90 degrees counterclockwise, that is:
19231 @example
19232 L.R     R.r
19233 . . ->  . .
19234 l.r     L.l
19235 @end example
19236
19237 @item 3, 7, clock_flip
19238 Rotate by 90 degrees clockwise and vertically flip, that is:
19239 @example
19240 L.R     r.R
19241 . . ->  . .
19242 l.r     l.L
19243 @end example
19244 @end table
19245
19246 For values between 4-7, the transposition is only done if the input
19247 video geometry is portrait and not landscape. These values are
19248 deprecated, the @code{passthrough} option should be used instead.
19249
19250 Numerical values are deprecated, and should be dropped in favor of
19251 symbolic constants.
19252
19253 @item passthrough
19254 Do not apply the transposition if the input geometry matches the one
19255 specified by the specified value. It accepts the following values:
19256 @table @samp
19257 @item none
19258 Always apply transposition.
19259 @item portrait
19260 Preserve portrait geometry (when @var{height} >= @var{width}).
19261 @item landscape
19262 Preserve landscape geometry (when @var{width} >= @var{height}).
19263 @end table
19264
19265 Default value is @code{none}.
19266 @end table
19267
19268 For example to rotate by 90 degrees clockwise and preserve portrait
19269 layout:
19270 @example
19271 transpose=dir=1:passthrough=portrait
19272 @end example
19273
19274 The command above can also be specified as:
19275 @example
19276 transpose=1:portrait
19277 @end example
19278
19279 @section transpose_npp
19280
19281 Transpose rows with columns in the input video and optionally flip it.
19282 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
19283
19284 It accepts the following parameters:
19285
19286 @table @option
19287
19288 @item dir
19289 Specify the transposition direction.
19290
19291 Can assume the following values:
19292 @table @samp
19293 @item cclock_flip
19294 Rotate by 90 degrees counterclockwise and vertically flip. (default)
19295
19296 @item clock
19297 Rotate by 90 degrees clockwise.
19298
19299 @item cclock
19300 Rotate by 90 degrees counterclockwise.
19301
19302 @item clock_flip
19303 Rotate by 90 degrees clockwise and vertically flip.
19304 @end table
19305
19306 @item passthrough
19307 Do not apply the transposition if the input geometry matches the one
19308 specified by the specified value. It accepts the following values:
19309 @table @samp
19310 @item none
19311 Always apply transposition. (default)
19312 @item portrait
19313 Preserve portrait geometry (when @var{height} >= @var{width}).
19314 @item landscape
19315 Preserve landscape geometry (when @var{width} >= @var{height}).
19316 @end table
19317
19318 @end table
19319
19320 @section trim
19321 Trim the input so that the output contains one continuous subpart of the input.
19322
19323 It accepts the following parameters:
19324 @table @option
19325 @item start
19326 Specify the time of the start of the kept section, i.e. the frame with the
19327 timestamp @var{start} will be the first frame in the output.
19328
19329 @item end
19330 Specify the time of the first frame that will be dropped, i.e. the frame
19331 immediately preceding the one with the timestamp @var{end} will be the last
19332 frame in the output.
19333
19334 @item start_pts
19335 This is the same as @var{start}, except this option sets the start timestamp
19336 in timebase units instead of seconds.
19337
19338 @item end_pts
19339 This is the same as @var{end}, except this option sets the end timestamp
19340 in timebase units instead of seconds.
19341
19342 @item duration
19343 The maximum duration of the output in seconds.
19344
19345 @item start_frame
19346 The number of the first frame that should be passed to the output.
19347
19348 @item end_frame
19349 The number of the first frame that should be dropped.
19350 @end table
19351
19352 @option{start}, @option{end}, and @option{duration} are expressed as time
19353 duration specifications; see
19354 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19355 for the accepted syntax.
19356
19357 Note that the first two sets of the start/end options and the @option{duration}
19358 option look at the frame timestamp, while the _frame variants simply count the
19359 frames that pass through the filter. Also note that this filter does not modify
19360 the timestamps. If you wish for the output timestamps to start at zero, insert a
19361 setpts filter after the trim filter.
19362
19363 If multiple start or end options are set, this filter tries to be greedy and
19364 keep all the frames that match at least one of the specified constraints. To keep
19365 only the part that matches all the constraints at once, chain multiple trim
19366 filters.
19367
19368 The defaults are such that all the input is kept. So it is possible to set e.g.
19369 just the end values to keep everything before the specified time.
19370
19371 Examples:
19372 @itemize
19373 @item
19374 Drop everything except the second minute of input:
19375 @example
19376 ffmpeg -i INPUT -vf trim=60:120
19377 @end example
19378
19379 @item
19380 Keep only the first second:
19381 @example
19382 ffmpeg -i INPUT -vf trim=duration=1
19383 @end example
19384
19385 @end itemize
19386
19387 @section unpremultiply
19388 Apply alpha unpremultiply effect to input video stream using first plane
19389 of second stream as alpha.
19390
19391 Both streams must have same dimensions and same pixel format.
19392
19393 The filter accepts the following option:
19394
19395 @table @option
19396 @item planes
19397 Set which planes will be processed, unprocessed planes will be copied.
19398 By default value 0xf, all planes will be processed.
19399
19400 If the format has 1 or 2 components, then luma is bit 0.
19401 If the format has 3 or 4 components:
19402 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
19403 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
19404 If present, the alpha channel is always the last bit.
19405
19406 @item inplace
19407 Do not require 2nd input for processing, instead use alpha plane from input stream.
19408 @end table
19409
19410 @anchor{unsharp}
19411 @section unsharp
19412
19413 Sharpen or blur the input video.
19414
19415 It accepts the following parameters:
19416
19417 @table @option
19418 @item luma_msize_x, lx
19419 Set the luma matrix horizontal size. It must be an odd integer between
19420 3 and 23. The default value is 5.
19421
19422 @item luma_msize_y, ly
19423 Set the luma matrix vertical size. It must be an odd integer between 3
19424 and 23. The default value is 5.
19425
19426 @item luma_amount, la
19427 Set the luma effect strength. It must be a floating point number, reasonable
19428 values lay between -1.5 and 1.5.
19429
19430 Negative values will blur the input video, while positive values will
19431 sharpen it, a value of zero will disable the effect.
19432
19433 Default value is 1.0.
19434
19435 @item chroma_msize_x, cx
19436 Set the chroma matrix horizontal size. It must be an odd integer
19437 between 3 and 23. The default value is 5.
19438
19439 @item chroma_msize_y, cy
19440 Set the chroma matrix vertical size. It must be an odd integer
19441 between 3 and 23. The default value is 5.
19442
19443 @item chroma_amount, ca
19444 Set the chroma effect strength. It must be a floating point number, reasonable
19445 values lay between -1.5 and 1.5.
19446
19447 Negative values will blur the input video, while positive values will
19448 sharpen it, a value of zero will disable the effect.
19449
19450 Default value is 0.0.
19451
19452 @end table
19453
19454 All parameters are optional and default to the equivalent of the
19455 string '5:5:1.0:5:5:0.0'.
19456
19457 @subsection Examples
19458
19459 @itemize
19460 @item
19461 Apply strong luma sharpen effect:
19462 @example
19463 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
19464 @end example
19465
19466 @item
19467 Apply a strong blur of both luma and chroma parameters:
19468 @example
19469 unsharp=7:7:-2:7:7:-2
19470 @end example
19471 @end itemize
19472
19473 @anchor{untile}
19474 @section untile
19475
19476 Decompose a video made of tiled images into the individual images.
19477
19478 The frame rate of the output video is the frame rate of the input video
19479 multiplied by the number of tiles.
19480
19481 This filter does the reverse of @ref{tile}.
19482
19483 The filter accepts the following options:
19484
19485 @table @option
19486
19487 @item layout
19488 Set the grid size (i.e. the number of lines and columns). For the syntax of
19489 this option, check the
19490 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19491 @end table
19492
19493 @subsection Examples
19494
19495 @itemize
19496 @item
19497 Produce a 1-second video from a still image file made of 25 frames stacked
19498 vertically, like an analogic film reel:
19499 @example
19500 ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
19501 @end example
19502 @end itemize
19503
19504 @section uspp
19505
19506 Apply ultra slow/simple postprocessing filter that compresses and decompresses
19507 the image at several (or - in the case of @option{quality} level @code{8} - all)
19508 shifts and average the results.
19509
19510 The way this differs from the behavior of spp is that uspp actually encodes &
19511 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
19512 DCT similar to MJPEG.
19513
19514 The filter accepts the following options:
19515
19516 @table @option
19517 @item quality
19518 Set quality. This option defines the number of levels for averaging. It accepts
19519 an integer in the range 0-8. If set to @code{0}, the filter will have no
19520 effect. A value of @code{8} means the higher quality. For each increment of
19521 that value the speed drops by a factor of approximately 2.  Default value is
19522 @code{3}.
19523
19524 @item qp
19525 Force a constant quantization parameter. If not set, the filter will use the QP
19526 from the video stream (if available).
19527 @end table
19528
19529 @section v360
19530
19531 Convert 360 videos between various formats.
19532
19533 The filter accepts the following options:
19534
19535 @table @option
19536
19537 @item input
19538 @item output
19539 Set format of the input/output video.
19540
19541 Available formats:
19542
19543 @table @samp
19544
19545 @item e
19546 @item equirect
19547 Equirectangular projection.
19548
19549 @item c3x2
19550 @item c6x1
19551 @item c1x6
19552 Cubemap with 3x2/6x1/1x6 layout.
19553
19554 Format specific options:
19555
19556 @table @option
19557 @item in_pad
19558 @item out_pad
19559 Set padding proportion for the input/output cubemap. Values in decimals.
19560
19561 Example values:
19562 @table @samp
19563 @item 0
19564 No padding.
19565 @item 0.01
19566 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)
19567 @end table
19568
19569 Default value is @b{@samp{0}}.
19570 Maximum value is @b{@samp{0.1}}.
19571
19572 @item fin_pad
19573 @item fout_pad
19574 Set fixed padding for the input/output cubemap. Values in pixels.
19575
19576 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
19577
19578 @item in_forder
19579 @item out_forder
19580 Set order of faces for the input/output cubemap. Choose one direction for each position.
19581
19582 Designation of directions:
19583 @table @samp
19584 @item r
19585 right
19586 @item l
19587 left
19588 @item u
19589 up
19590 @item d
19591 down
19592 @item f
19593 forward
19594 @item b
19595 back
19596 @end table
19597
19598 Default value is @b{@samp{rludfb}}.
19599
19600 @item in_frot
19601 @item out_frot
19602 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
19603
19604 Designation of angles:
19605 @table @samp
19606 @item 0
19607 0 degrees clockwise
19608 @item 1
19609 90 degrees clockwise
19610 @item 2
19611 180 degrees clockwise
19612 @item 3
19613 270 degrees clockwise
19614 @end table
19615
19616 Default value is @b{@samp{000000}}.
19617 @end table
19618
19619 @item eac
19620 Equi-Angular Cubemap.
19621
19622 @item flat
19623 @item gnomonic
19624 @item rectilinear
19625 Regular video.
19626
19627 Format specific options:
19628 @table @option
19629 @item h_fov
19630 @item v_fov
19631 @item d_fov
19632 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19633
19634 If diagonal field of view is set it overrides horizontal and vertical field of view.
19635
19636 @item ih_fov
19637 @item iv_fov
19638 @item id_fov
19639 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19640
19641 If diagonal field of view is set it overrides horizontal and vertical field of view.
19642 @end table
19643
19644 @item dfisheye
19645 Dual fisheye.
19646
19647 Format specific options:
19648 @table @option
19649 @item h_fov
19650 @item v_fov
19651 @item d_fov
19652 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19653
19654 If diagonal field of view is set it overrides horizontal and vertical field of view.
19655
19656 @item ih_fov
19657 @item iv_fov
19658 @item id_fov
19659 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19660
19661 If diagonal field of view is set it overrides horizontal and vertical field of view.
19662 @end table
19663
19664 @item barrel
19665 @item fb
19666 @item barrelsplit
19667 Facebook's 360 formats.
19668
19669 @item sg
19670 Stereographic format.
19671
19672 Format specific options:
19673 @table @option
19674 @item h_fov
19675 @item v_fov
19676 @item d_fov
19677 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19678
19679 If diagonal field of view is set it overrides horizontal and vertical field of view.
19680
19681 @item ih_fov
19682 @item iv_fov
19683 @item id_fov
19684 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19685
19686 If diagonal field of view is set it overrides horizontal and vertical field of view.
19687 @end table
19688
19689 @item mercator
19690 Mercator format.
19691
19692 @item ball
19693 Ball format, gives significant distortion toward the back.
19694
19695 @item hammer
19696 Hammer-Aitoff map projection format.
19697
19698 @item sinusoidal
19699 Sinusoidal map projection format.
19700
19701 @item fisheye
19702 Fisheye projection.
19703
19704 Format specific options:
19705 @table @option
19706 @item h_fov
19707 @item v_fov
19708 @item d_fov
19709 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19710
19711 If diagonal field of view is set it overrides horizontal and vertical field of view.
19712
19713 @item ih_fov
19714 @item iv_fov
19715 @item id_fov
19716 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19717
19718 If diagonal field of view is set it overrides horizontal and vertical field of view.
19719 @end table
19720
19721 @item pannini
19722 Pannini projection.
19723
19724 Format specific options:
19725 @table @option
19726 @item h_fov
19727 Set output pannini parameter.
19728
19729 @item ih_fov
19730 Set input pannini parameter.
19731 @end table
19732
19733 @item cylindrical
19734 Cylindrical projection.
19735
19736 Format specific options:
19737 @table @option
19738 @item h_fov
19739 @item v_fov
19740 @item d_fov
19741 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19742
19743 If diagonal field of view is set it overrides horizontal and vertical field of view.
19744
19745 @item ih_fov
19746 @item iv_fov
19747 @item id_fov
19748 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19749
19750 If diagonal field of view is set it overrides horizontal and vertical field of view.
19751 @end table
19752
19753 @item perspective
19754 Perspective projection. @i{(output only)}
19755
19756 Format specific options:
19757 @table @option
19758 @item v_fov
19759 Set perspective parameter.
19760 @end table
19761
19762 @item tetrahedron
19763 Tetrahedron projection.
19764
19765 @item tsp
19766 Truncated square pyramid projection.
19767
19768 @item he
19769 @item hequirect
19770 Half equirectangular projection.
19771
19772 @item equisolid
19773 Equisolid format.
19774
19775 Format specific options:
19776 @table @option
19777 @item h_fov
19778 @item v_fov
19779 @item d_fov
19780 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19781
19782 If diagonal field of view is set it overrides horizontal and vertical field of view.
19783
19784 @item ih_fov
19785 @item iv_fov
19786 @item id_fov
19787 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19788
19789 If diagonal field of view is set it overrides horizontal and vertical field of view.
19790 @end table
19791
19792 @item og
19793 Orthographic format.
19794
19795 Format specific options:
19796 @table @option
19797 @item h_fov
19798 @item v_fov
19799 @item d_fov
19800 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19801
19802 If diagonal field of view is set it overrides horizontal and vertical field of view.
19803
19804 @item ih_fov
19805 @item iv_fov
19806 @item id_fov
19807 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19808
19809 If diagonal field of view is set it overrides horizontal and vertical field of view.
19810 @end table
19811
19812 @item octahedron
19813 Octahedron projection.
19814 @end table
19815
19816 @item interp
19817 Set interpolation method.@*
19818 @i{Note: more complex interpolation methods require much more memory to run.}
19819
19820 Available methods:
19821
19822 @table @samp
19823 @item near
19824 @item nearest
19825 Nearest neighbour.
19826 @item line
19827 @item linear
19828 Bilinear interpolation.
19829 @item lagrange9
19830 Lagrange9 interpolation.
19831 @item cube
19832 @item cubic
19833 Bicubic interpolation.
19834 @item lanc
19835 @item lanczos
19836 Lanczos interpolation.
19837 @item sp16
19838 @item spline16
19839 Spline16 interpolation.
19840 @item gauss
19841 @item gaussian
19842 Gaussian interpolation.
19843 @item mitchell
19844 Mitchell interpolation.
19845 @end table
19846
19847 Default value is @b{@samp{line}}.
19848
19849 @item w
19850 @item h
19851 Set the output video resolution.
19852
19853 Default resolution depends on formats.
19854
19855 @item in_stereo
19856 @item out_stereo
19857 Set the input/output stereo format.
19858
19859 @table @samp
19860 @item 2d
19861 2D mono
19862 @item sbs
19863 Side by side
19864 @item tb
19865 Top bottom
19866 @end table
19867
19868 Default value is @b{@samp{2d}} for input and output format.
19869
19870 @item yaw
19871 @item pitch
19872 @item roll
19873 Set rotation for the output video. Values in degrees.
19874
19875 @item rorder
19876 Set rotation order for the output video. Choose one item for each position.
19877
19878 @table @samp
19879 @item y, Y
19880 yaw
19881 @item p, P
19882 pitch
19883 @item r, R
19884 roll
19885 @end table
19886
19887 Default value is @b{@samp{ypr}}.
19888
19889 @item h_flip
19890 @item v_flip
19891 @item d_flip
19892 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
19893
19894 @item ih_flip
19895 @item iv_flip
19896 Set if input video is flipped horizontally/vertically. Boolean values.
19897
19898 @item in_trans
19899 Set if input video is transposed. Boolean value, by default disabled.
19900
19901 @item out_trans
19902 Set if output video needs to be transposed. Boolean value, by default disabled.
19903
19904 @item alpha_mask
19905 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
19906 @end table
19907
19908 @subsection Examples
19909
19910 @itemize
19911 @item
19912 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
19913 @example
19914 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
19915 @end example
19916 @item
19917 Extract back view of Equi-Angular Cubemap:
19918 @example
19919 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
19920 @end example
19921 @item
19922 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
19923 @example
19924 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
19925 @end example
19926 @end itemize
19927
19928 @subsection Commands
19929
19930 This filter supports subset of above options as @ref{commands}.
19931
19932 @section vaguedenoiser
19933
19934 Apply a wavelet based denoiser.
19935
19936 It transforms each frame from the video input into the wavelet domain,
19937 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
19938 the obtained coefficients. It does an inverse wavelet transform after.
19939 Due to wavelet properties, it should give a nice smoothed result, and
19940 reduced noise, without blurring picture features.
19941
19942 This filter accepts the following options:
19943
19944 @table @option
19945 @item threshold
19946 The filtering strength. The higher, the more filtered the video will be.
19947 Hard thresholding can use a higher threshold than soft thresholding
19948 before the video looks overfiltered. Default value is 2.
19949
19950 @item method
19951 The filtering method the filter will use.
19952
19953 It accepts the following values:
19954 @table @samp
19955 @item hard
19956 All values under the threshold will be zeroed.
19957
19958 @item soft
19959 All values under the threshold will be zeroed. All values above will be
19960 reduced by the threshold.
19961
19962 @item garrote
19963 Scales or nullifies coefficients - intermediary between (more) soft and
19964 (less) hard thresholding.
19965 @end table
19966
19967 Default is garrote.
19968
19969 @item nsteps
19970 Number of times, the wavelet will decompose the picture. Picture can't
19971 be decomposed beyond a particular point (typically, 8 for a 640x480
19972 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
19973
19974 @item percent
19975 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
19976
19977 @item planes
19978 A list of the planes to process. By default all planes are processed.
19979
19980 @item type
19981 The threshold type the filter will use.
19982
19983 It accepts the following values:
19984 @table @samp
19985 @item universal
19986 Threshold used is same for all decompositions.
19987
19988 @item bayes
19989 Threshold used depends also on each decomposition coefficients.
19990 @end table
19991
19992 Default is universal.
19993 @end table
19994
19995 @section vectorscope
19996
19997 Display 2 color component values in the two dimensional graph (which is called
19998 a vectorscope).
19999
20000 This filter accepts the following options:
20001
20002 @table @option
20003 @item mode, m
20004 Set vectorscope mode.
20005
20006 It accepts the following values:
20007 @table @samp
20008 @item gray
20009 @item tint
20010 Gray values are displayed on graph, higher brightness means more pixels have
20011 same component color value on location in graph. This is the default mode.
20012
20013 @item color
20014 Gray values are displayed on graph. Surrounding pixels values which are not
20015 present in video frame are drawn in gradient of 2 color components which are
20016 set by option @code{x} and @code{y}. The 3rd color component is static.
20017
20018 @item color2
20019 Actual color components values present in video frame are displayed on graph.
20020
20021 @item color3
20022 Similar as color2 but higher frequency of same values @code{x} and @code{y}
20023 on graph increases value of another color component, which is luminance by
20024 default values of @code{x} and @code{y}.
20025
20026 @item color4
20027 Actual colors present in video frame are displayed on graph. If two different
20028 colors map to same position on graph then color with higher value of component
20029 not present in graph is picked.
20030
20031 @item color5
20032 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
20033 component picked from radial gradient.
20034 @end table
20035
20036 @item x
20037 Set which color component will be represented on X-axis. Default is @code{1}.
20038
20039 @item y
20040 Set which color component will be represented on Y-axis. Default is @code{2}.
20041
20042 @item intensity, i
20043 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
20044 of color component which represents frequency of (X, Y) location in graph.
20045
20046 @item envelope, e
20047 @table @samp
20048 @item none
20049 No envelope, this is default.
20050
20051 @item instant
20052 Instant envelope, even darkest single pixel will be clearly highlighted.
20053
20054 @item peak
20055 Hold maximum and minimum values presented in graph over time. This way you
20056 can still spot out of range values without constantly looking at vectorscope.
20057
20058 @item peak+instant
20059 Peak and instant envelope combined together.
20060 @end table
20061
20062 @item graticule, g
20063 Set what kind of graticule to draw.
20064 @table @samp
20065 @item none
20066 @item green
20067 @item color
20068 @item invert
20069 @end table
20070
20071 @item opacity, o
20072 Set graticule opacity.
20073
20074 @item flags, f
20075 Set graticule flags.
20076
20077 @table @samp
20078 @item white
20079 Draw graticule for white point.
20080
20081 @item black
20082 Draw graticule for black point.
20083
20084 @item name
20085 Draw color points short names.
20086 @end table
20087
20088 @item bgopacity, b
20089 Set background opacity.
20090
20091 @item lthreshold, l
20092 Set low threshold for color component not represented on X or Y axis.
20093 Values lower than this value will be ignored. Default is 0.
20094 Note this value is multiplied with actual max possible value one pixel component
20095 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
20096 is 0.1 * 255 = 25.
20097
20098 @item hthreshold, h
20099 Set high threshold for color component not represented on X or Y axis.
20100 Values higher than this value will be ignored. Default is 1.
20101 Note this value is multiplied with actual max possible value one pixel component
20102 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
20103 is 0.9 * 255 = 230.
20104
20105 @item colorspace, c
20106 Set what kind of colorspace to use when drawing graticule.
20107 @table @samp
20108 @item auto
20109 @item 601
20110 @item 709
20111 @end table
20112 Default is auto.
20113
20114 @item tint0, t0
20115 @item tint1, t1
20116 Set color tint for gray/tint vectorscope mode. By default both options are zero.
20117 This means no tint, and output will remain gray.
20118 @end table
20119
20120 @anchor{vidstabdetect}
20121 @section vidstabdetect
20122
20123 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
20124 @ref{vidstabtransform} for pass 2.
20125
20126 This filter generates a file with relative translation and rotation
20127 transform information about subsequent frames, which is then used by
20128 the @ref{vidstabtransform} filter.
20129
20130 To enable compilation of this filter you need to configure FFmpeg with
20131 @code{--enable-libvidstab}.
20132
20133 This filter accepts the following options:
20134
20135 @table @option
20136 @item result
20137 Set the path to the file used to write the transforms information.
20138 Default value is @file{transforms.trf}.
20139
20140 @item shakiness
20141 Set how shaky the video is and how quick the camera is. It accepts an
20142 integer in the range 1-10, a value of 1 means little shakiness, a
20143 value of 10 means strong shakiness. Default value is 5.
20144
20145 @item accuracy
20146 Set the accuracy of the detection process. It must be a value in the
20147 range 1-15. A value of 1 means low accuracy, a value of 15 means high
20148 accuracy. Default value is 15.
20149
20150 @item stepsize
20151 Set stepsize of the search process. The region around minimum is
20152 scanned with 1 pixel resolution. Default value is 6.
20153
20154 @item mincontrast
20155 Set minimum contrast. Below this value a local measurement field is
20156 discarded. Must be a floating point value in the range 0-1. Default
20157 value is 0.3.
20158
20159 @item tripod
20160 Set reference frame number for tripod mode.
20161
20162 If enabled, the motion of the frames is compared to a reference frame
20163 in the filtered stream, identified by the specified number. The idea
20164 is to compensate all movements in a more-or-less static scene and keep
20165 the camera view absolutely still.
20166
20167 If set to 0, it is disabled. The frames are counted starting from 1.
20168
20169 @item show
20170 Show fields and transforms in the resulting frames. It accepts an
20171 integer in the range 0-2. Default value is 0, which disables any
20172 visualization.
20173 @end table
20174
20175 @subsection Examples
20176
20177 @itemize
20178 @item
20179 Use default values:
20180 @example
20181 vidstabdetect
20182 @end example
20183
20184 @item
20185 Analyze strongly shaky movie and put the results in file
20186 @file{mytransforms.trf}:
20187 @example
20188 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
20189 @end example
20190
20191 @item
20192 Visualize the result of internal transformations in the resulting
20193 video:
20194 @example
20195 vidstabdetect=show=1
20196 @end example
20197
20198 @item
20199 Analyze a video with medium shakiness using @command{ffmpeg}:
20200 @example
20201 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
20202 @end example
20203 @end itemize
20204
20205 @anchor{vidstabtransform}
20206 @section vidstabtransform
20207
20208 Video stabilization/deshaking: pass 2 of 2,
20209 see @ref{vidstabdetect} for pass 1.
20210
20211 Read a file with transform information for each frame and
20212 apply/compensate them. Together with the @ref{vidstabdetect}
20213 filter this can be used to deshake videos. See also
20214 @url{http://public.hronopik.de/vid.stab}. It is important to also use
20215 the @ref{unsharp} filter, see below.
20216
20217 To enable compilation of this filter you need to configure FFmpeg with
20218 @code{--enable-libvidstab}.
20219
20220 @subsection Options
20221
20222 @table @option
20223 @item input
20224 Set path to the file used to read the transforms. Default value is
20225 @file{transforms.trf}.
20226
20227 @item smoothing
20228 Set the number of frames (value*2 + 1) used for lowpass filtering the
20229 camera movements. Default value is 10.
20230
20231 For example a number of 10 means that 21 frames are used (10 in the
20232 past and 10 in the future) to smoothen the motion in the video. A
20233 larger value leads to a smoother video, but limits the acceleration of
20234 the camera (pan/tilt movements). 0 is a special case where a static
20235 camera is simulated.
20236
20237 @item optalgo
20238 Set the camera path optimization algorithm.
20239
20240 Accepted values are:
20241 @table @samp
20242 @item gauss
20243 gaussian kernel low-pass filter on camera motion (default)
20244 @item avg
20245 averaging on transformations
20246 @end table
20247
20248 @item maxshift
20249 Set maximal number of pixels to translate frames. Default value is -1,
20250 meaning no limit.
20251
20252 @item maxangle
20253 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
20254 value is -1, meaning no limit.
20255
20256 @item crop
20257 Specify how to deal with borders that may be visible due to movement
20258 compensation.
20259
20260 Available values are:
20261 @table @samp
20262 @item keep
20263 keep image information from previous frame (default)
20264 @item black
20265 fill the border black
20266 @end table
20267
20268 @item invert
20269 Invert transforms if set to 1. Default value is 0.
20270
20271 @item relative
20272 Consider transforms as relative to previous frame if set to 1,
20273 absolute if set to 0. Default value is 0.
20274
20275 @item zoom
20276 Set percentage to zoom. A positive value will result in a zoom-in
20277 effect, a negative value in a zoom-out effect. Default value is 0 (no
20278 zoom).
20279
20280 @item optzoom
20281 Set optimal zooming to avoid borders.
20282
20283 Accepted values are:
20284 @table @samp
20285 @item 0
20286 disabled
20287 @item 1
20288 optimal static zoom value is determined (only very strong movements
20289 will lead to visible borders) (default)
20290 @item 2
20291 optimal adaptive zoom value is determined (no borders will be
20292 visible), see @option{zoomspeed}
20293 @end table
20294
20295 Note that the value given at zoom is added to the one calculated here.
20296
20297 @item zoomspeed
20298 Set percent to zoom maximally each frame (enabled when
20299 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
20300 0.25.
20301
20302 @item interpol
20303 Specify type of interpolation.
20304
20305 Available values are:
20306 @table @samp
20307 @item no
20308 no interpolation
20309 @item linear
20310 linear only horizontal
20311 @item bilinear
20312 linear in both directions (default)
20313 @item bicubic
20314 cubic in both directions (slow)
20315 @end table
20316
20317 @item tripod
20318 Enable virtual tripod mode if set to 1, which is equivalent to
20319 @code{relative=0:smoothing=0}. Default value is 0.
20320
20321 Use also @code{tripod} option of @ref{vidstabdetect}.
20322
20323 @item debug
20324 Increase log verbosity if set to 1. Also the detected global motions
20325 are written to the temporary file @file{global_motions.trf}. Default
20326 value is 0.
20327 @end table
20328
20329 @subsection Examples
20330
20331 @itemize
20332 @item
20333 Use @command{ffmpeg} for a typical stabilization with default values:
20334 @example
20335 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
20336 @end example
20337
20338 Note the use of the @ref{unsharp} filter which is always recommended.
20339
20340 @item
20341 Zoom in a bit more and load transform data from a given file:
20342 @example
20343 vidstabtransform=zoom=5:input="mytransforms.trf"
20344 @end example
20345
20346 @item
20347 Smoothen the video even more:
20348 @example
20349 vidstabtransform=smoothing=30
20350 @end example
20351 @end itemize
20352
20353 @section vflip
20354
20355 Flip the input video vertically.
20356
20357 For example, to vertically flip a video with @command{ffmpeg}:
20358 @example
20359 ffmpeg -i in.avi -vf "vflip" out.avi
20360 @end example
20361
20362 @section vfrdet
20363
20364 Detect variable frame rate video.
20365
20366 This filter tries to detect if the input is variable or constant frame rate.
20367
20368 At end it will output number of frames detected as having variable delta pts,
20369 and ones with constant delta pts.
20370 If there was frames with variable delta, than it will also show min, max and
20371 average delta encountered.
20372
20373 @section vibrance
20374
20375 Boost or alter saturation.
20376
20377 The filter accepts the following options:
20378 @table @option
20379 @item intensity
20380 Set strength of boost if positive value or strength of alter if negative value.
20381 Default is 0. Allowed range is from -2 to 2.
20382
20383 @item rbal
20384 Set the red balance. Default is 1. Allowed range is from -10 to 10.
20385
20386 @item gbal
20387 Set the green balance. Default is 1. Allowed range is from -10 to 10.
20388
20389 @item bbal
20390 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
20391
20392 @item rlum
20393 Set the red luma coefficient.
20394
20395 @item glum
20396 Set the green luma coefficient.
20397
20398 @item blum
20399 Set the blue luma coefficient.
20400
20401 @item alternate
20402 If @code{intensity} is negative and this is set to 1, colors will change,
20403 otherwise colors will be less saturated, more towards gray.
20404 @end table
20405
20406 @subsection Commands
20407
20408 This filter supports the all above options as @ref{commands}.
20409
20410 @anchor{vignette}
20411 @section vignette
20412
20413 Make or reverse a natural vignetting effect.
20414
20415 The filter accepts the following options:
20416
20417 @table @option
20418 @item angle, a
20419 Set lens angle expression as a number of radians.
20420
20421 The value is clipped in the @code{[0,PI/2]} range.
20422
20423 Default value: @code{"PI/5"}
20424
20425 @item x0
20426 @item y0
20427 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
20428 by default.
20429
20430 @item mode
20431 Set forward/backward mode.
20432
20433 Available modes are:
20434 @table @samp
20435 @item forward
20436 The larger the distance from the central point, the darker the image becomes.
20437
20438 @item backward
20439 The larger the distance from the central point, the brighter the image becomes.
20440 This can be used to reverse a vignette effect, though there is no automatic
20441 detection to extract the lens @option{angle} and other settings (yet). It can
20442 also be used to create a burning effect.
20443 @end table
20444
20445 Default value is @samp{forward}.
20446
20447 @item eval
20448 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
20449
20450 It accepts the following values:
20451 @table @samp
20452 @item init
20453 Evaluate expressions only once during the filter initialization.
20454
20455 @item frame
20456 Evaluate expressions for each incoming frame. This is way slower than the
20457 @samp{init} mode since it requires all the scalers to be re-computed, but it
20458 allows advanced dynamic expressions.
20459 @end table
20460
20461 Default value is @samp{init}.
20462
20463 @item dither
20464 Set dithering to reduce the circular banding effects. Default is @code{1}
20465 (enabled).
20466
20467 @item aspect
20468 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
20469 Setting this value to the SAR of the input will make a rectangular vignetting
20470 following the dimensions of the video.
20471
20472 Default is @code{1/1}.
20473 @end table
20474
20475 @subsection Expressions
20476
20477 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
20478 following parameters.
20479
20480 @table @option
20481 @item w
20482 @item h
20483 input width and height
20484
20485 @item n
20486 the number of input frame, starting from 0
20487
20488 @item pts
20489 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
20490 @var{TB} units, NAN if undefined
20491
20492 @item r
20493 frame rate of the input video, NAN if the input frame rate is unknown
20494
20495 @item t
20496 the PTS (Presentation TimeStamp) of the filtered video frame,
20497 expressed in seconds, NAN if undefined
20498
20499 @item tb
20500 time base of the input video
20501 @end table
20502
20503
20504 @subsection Examples
20505
20506 @itemize
20507 @item
20508 Apply simple strong vignetting effect:
20509 @example
20510 vignette=PI/4
20511 @end example
20512
20513 @item
20514 Make a flickering vignetting:
20515 @example
20516 vignette='PI/4+random(1)*PI/50':eval=frame
20517 @end example
20518
20519 @end itemize
20520
20521 @section vmafmotion
20522
20523 Obtain the average VMAF motion score of a video.
20524 It is one of the component metrics of VMAF.
20525
20526 The obtained average motion score is printed through the logging system.
20527
20528 The filter accepts the following options:
20529
20530 @table @option
20531 @item stats_file
20532 If specified, the filter will use the named file to save the motion score of
20533 each frame with respect to the previous frame.
20534 When filename equals "-" the data is sent to standard output.
20535 @end table
20536
20537 Example:
20538 @example
20539 ffmpeg -i ref.mpg -vf vmafmotion -f null -
20540 @end example
20541
20542 @section vstack
20543 Stack input videos vertically.
20544
20545 All streams must be of same pixel format and of same width.
20546
20547 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
20548 to create same output.
20549
20550 The filter accepts the following options:
20551
20552 @table @option
20553 @item inputs
20554 Set number of input streams. Default is 2.
20555
20556 @item shortest
20557 If set to 1, force the output to terminate when the shortest input
20558 terminates. Default value is 0.
20559 @end table
20560
20561 @section w3fdif
20562
20563 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
20564 Deinterlacing Filter").
20565
20566 Based on the process described by Martin Weston for BBC R&D, and
20567 implemented based on the de-interlace algorithm written by Jim
20568 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
20569 uses filter coefficients calculated by BBC R&D.
20570
20571 This filter uses field-dominance information in frame to decide which
20572 of each pair of fields to place first in the output.
20573 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
20574
20575 There are two sets of filter coefficients, so called "simple"
20576 and "complex". Which set of filter coefficients is used can
20577 be set by passing an optional parameter:
20578
20579 @table @option
20580 @item filter
20581 Set the interlacing filter coefficients. Accepts one of the following values:
20582
20583 @table @samp
20584 @item simple
20585 Simple filter coefficient set.
20586 @item complex
20587 More-complex filter coefficient set.
20588 @end table
20589 Default value is @samp{complex}.
20590
20591 @item deint
20592 Specify which frames to deinterlace. Accepts one of the following values:
20593
20594 @table @samp
20595 @item all
20596 Deinterlace all frames,
20597 @item interlaced
20598 Only deinterlace frames marked as interlaced.
20599 @end table
20600
20601 Default value is @samp{all}.
20602 @end table
20603
20604 @section waveform
20605 Video waveform monitor.
20606
20607 The waveform monitor plots color component intensity. By default luminance
20608 only. Each column of the waveform corresponds to a column of pixels in the
20609 source video.
20610
20611 It accepts the following options:
20612
20613 @table @option
20614 @item mode, m
20615 Can be either @code{row}, or @code{column}. Default is @code{column}.
20616 In row mode, the graph on the left side represents color component value 0 and
20617 the right side represents value = 255. In column mode, the top side represents
20618 color component value = 0 and bottom side represents value = 255.
20619
20620 @item intensity, i
20621 Set intensity. Smaller values are useful to find out how many values of the same
20622 luminance are distributed across input rows/columns.
20623 Default value is @code{0.04}. Allowed range is [0, 1].
20624
20625 @item mirror, r
20626 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
20627 In mirrored mode, higher values will be represented on the left
20628 side for @code{row} mode and at the top for @code{column} mode. Default is
20629 @code{1} (mirrored).
20630
20631 @item display, d
20632 Set display mode.
20633 It accepts the following values:
20634 @table @samp
20635 @item overlay
20636 Presents information identical to that in the @code{parade}, except
20637 that the graphs representing color components are superimposed directly
20638 over one another.
20639
20640 This display mode makes it easier to spot relative differences or similarities
20641 in overlapping areas of the color components that are supposed to be identical,
20642 such as neutral whites, grays, or blacks.
20643
20644 @item stack
20645 Display separate graph for the color components side by side in
20646 @code{row} mode or one below the other in @code{column} mode.
20647
20648 @item parade
20649 Display separate graph for the color components side by side in
20650 @code{column} mode or one below the other in @code{row} mode.
20651
20652 Using this display mode makes it easy to spot color casts in the highlights
20653 and shadows of an image, by comparing the contours of the top and the bottom
20654 graphs of each waveform. Since whites, grays, and blacks are characterized
20655 by exactly equal amounts of red, green, and blue, neutral areas of the picture
20656 should display three waveforms of roughly equal width/height. If not, the
20657 correction is easy to perform by making level adjustments the three waveforms.
20658 @end table
20659 Default is @code{stack}.
20660
20661 @item components, c
20662 Set which color components to display. Default is 1, which means only luminance
20663 or red color component if input is in RGB colorspace. If is set for example to
20664 7 it will display all 3 (if) available color components.
20665
20666 @item envelope, e
20667 @table @samp
20668 @item none
20669 No envelope, this is default.
20670
20671 @item instant
20672 Instant envelope, minimum and maximum values presented in graph will be easily
20673 visible even with small @code{step} value.
20674
20675 @item peak
20676 Hold minimum and maximum values presented in graph across time. This way you
20677 can still spot out of range values without constantly looking at waveforms.
20678
20679 @item peak+instant
20680 Peak and instant envelope combined together.
20681 @end table
20682
20683 @item filter, f
20684 @table @samp
20685 @item lowpass
20686 No filtering, this is default.
20687
20688 @item flat
20689 Luma and chroma combined together.
20690
20691 @item aflat
20692 Similar as above, but shows difference between blue and red chroma.
20693
20694 @item xflat
20695 Similar as above, but use different colors.
20696
20697 @item yflat
20698 Similar as above, but again with different colors.
20699
20700 @item chroma
20701 Displays only chroma.
20702
20703 @item color
20704 Displays actual color value on waveform.
20705
20706 @item acolor
20707 Similar as above, but with luma showing frequency of chroma values.
20708 @end table
20709
20710 @item graticule, g
20711 Set which graticule to display.
20712
20713 @table @samp
20714 @item none
20715 Do not display graticule.
20716
20717 @item green
20718 Display green graticule showing legal broadcast ranges.
20719
20720 @item orange
20721 Display orange graticule showing legal broadcast ranges.
20722
20723 @item invert
20724 Display invert graticule showing legal broadcast ranges.
20725 @end table
20726
20727 @item opacity, o
20728 Set graticule opacity.
20729
20730 @item flags, fl
20731 Set graticule flags.
20732
20733 @table @samp
20734 @item numbers
20735 Draw numbers above lines. By default enabled.
20736
20737 @item dots
20738 Draw dots instead of lines.
20739 @end table
20740
20741 @item scale, s
20742 Set scale used for displaying graticule.
20743
20744 @table @samp
20745 @item digital
20746 @item millivolts
20747 @item ire
20748 @end table
20749 Default is digital.
20750
20751 @item bgopacity, b
20752 Set background opacity.
20753
20754 @item tint0, t0
20755 @item tint1, t1
20756 Set tint for output.
20757 Only used with lowpass filter and when display is not overlay and input
20758 pixel formats are not RGB.
20759 @end table
20760
20761 @section weave, doubleweave
20762
20763 The @code{weave} takes a field-based video input and join
20764 each two sequential fields into single frame, producing a new double
20765 height clip with half the frame rate and half the frame count.
20766
20767 The @code{doubleweave} works same as @code{weave} but without
20768 halving frame rate and frame count.
20769
20770 It accepts the following option:
20771
20772 @table @option
20773 @item first_field
20774 Set first field. Available values are:
20775
20776 @table @samp
20777 @item top, t
20778 Set the frame as top-field-first.
20779
20780 @item bottom, b
20781 Set the frame as bottom-field-first.
20782 @end table
20783 @end table
20784
20785 @subsection Examples
20786
20787 @itemize
20788 @item
20789 Interlace video using @ref{select} and @ref{separatefields} filter:
20790 @example
20791 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
20792 @end example
20793 @end itemize
20794
20795 @section xbr
20796 Apply the xBR high-quality magnification filter which is designed for pixel
20797 art. It follows a set of edge-detection rules, see
20798 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
20799
20800 It accepts the following option:
20801
20802 @table @option
20803 @item n
20804 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
20805 @code{3xBR} and @code{4} for @code{4xBR}.
20806 Default is @code{3}.
20807 @end table
20808
20809 @section xfade
20810
20811 Apply cross fade from one input video stream to another input video stream.
20812 The cross fade is applied for specified duration.
20813
20814 The filter accepts the following options:
20815
20816 @table @option
20817 @item transition
20818 Set one of available transition effects:
20819
20820 @table @samp
20821 @item custom
20822 @item fade
20823 @item wipeleft
20824 @item wiperight
20825 @item wipeup
20826 @item wipedown
20827 @item slideleft
20828 @item slideright
20829 @item slideup
20830 @item slidedown
20831 @item circlecrop
20832 @item rectcrop
20833 @item distance
20834 @item fadeblack
20835 @item fadewhite
20836 @item radial
20837 @item smoothleft
20838 @item smoothright
20839 @item smoothup
20840 @item smoothdown
20841 @item circleopen
20842 @item circleclose
20843 @item vertopen
20844 @item vertclose
20845 @item horzopen
20846 @item horzclose
20847 @item dissolve
20848 @item pixelize
20849 @item diagtl
20850 @item diagtr
20851 @item diagbl
20852 @item diagbr
20853 @item hlslice
20854 @item hrslice
20855 @item vuslice
20856 @item vdslice
20857 @item hblur
20858 @item fadegrays
20859 @item wipetl
20860 @item wipetr
20861 @item wipebl
20862 @item wipebr
20863 @item squeezeh
20864 @item squeezev
20865 @end table
20866 Default transition effect is fade.
20867
20868 @item duration
20869 Set cross fade duration in seconds.
20870 Default duration is 1 second.
20871
20872 @item offset
20873 Set cross fade start relative to first input stream in seconds.
20874 Default offset is 0.
20875
20876 @item expr
20877 Set expression for custom transition effect.
20878
20879 The expressions can use the following variables and functions:
20880
20881 @table @option
20882 @item X
20883 @item Y
20884 The coordinates of the current sample.
20885
20886 @item W
20887 @item H
20888 The width and height of the image.
20889
20890 @item P
20891 Progress of transition effect.
20892
20893 @item PLANE
20894 Currently processed plane.
20895
20896 @item A
20897 Return value of first input at current location and plane.
20898
20899 @item B
20900 Return value of second input at current location and plane.
20901
20902 @item a0(x, y)
20903 @item a1(x, y)
20904 @item a2(x, y)
20905 @item a3(x, y)
20906 Return the value of the pixel at location (@var{x},@var{y}) of the
20907 first/second/third/fourth component of first input.
20908
20909 @item b0(x, y)
20910 @item b1(x, y)
20911 @item b2(x, y)
20912 @item b3(x, y)
20913 Return the value of the pixel at location (@var{x},@var{y}) of the
20914 first/second/third/fourth component of second input.
20915 @end table
20916 @end table
20917
20918 @subsection Examples
20919
20920 @itemize
20921 @item
20922 Cross fade from one input video to another input video, with fade transition and duration of transition
20923 of 2 seconds starting at offset of 5 seconds:
20924 @example
20925 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
20926 @end example
20927 @end itemize
20928
20929 @section xmedian
20930 Pick median pixels from several input videos.
20931
20932 The filter accepts the following options:
20933
20934 @table @option
20935 @item inputs
20936 Set number of inputs.
20937 Default is 3. Allowed range is from 3 to 255.
20938 If number of inputs is even number, than result will be mean value between two median values.
20939
20940 @item planes
20941 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
20942
20943 @item percentile
20944 Set median percentile. Default value is @code{0.5}.
20945 Default value of @code{0.5} will pick always median values, while @code{0} will pick
20946 minimum values, and @code{1} maximum values.
20947 @end table
20948
20949 @section xstack
20950 Stack video inputs into custom layout.
20951
20952 All streams must be of same pixel format.
20953
20954 The filter accepts the following options:
20955
20956 @table @option
20957 @item inputs
20958 Set number of input streams. Default is 2.
20959
20960 @item layout
20961 Specify layout of inputs.
20962 This option requires the desired layout configuration to be explicitly set by the user.
20963 This sets position of each video input in output. Each input
20964 is separated by '|'.
20965 The first number represents the column, and the second number represents the row.
20966 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
20967 where X is video input from which to take width or height.
20968 Multiple values can be used when separated by '+'. In such
20969 case values are summed together.
20970
20971 Note that if inputs are of different sizes gaps may appear, as not all of
20972 the output video frame will be filled. Similarly, videos can overlap each
20973 other if their position doesn't leave enough space for the full frame of
20974 adjoining videos.
20975
20976 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
20977 a layout must be set by the user.
20978
20979 @item shortest
20980 If set to 1, force the output to terminate when the shortest input
20981 terminates. Default value is 0.
20982
20983 @item fill
20984 If set to valid color, all unused pixels will be filled with that color.
20985 By default fill is set to none, so it is disabled.
20986 @end table
20987
20988 @subsection Examples
20989
20990 @itemize
20991 @item
20992 Display 4 inputs into 2x2 grid.
20993
20994 Layout:
20995 @example
20996 input1(0, 0)  | input3(w0, 0)
20997 input2(0, h0) | input4(w0, h0)
20998 @end example
20999
21000 @example
21001 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
21002 @end example
21003
21004 Note that if inputs are of different sizes, gaps or overlaps may occur.
21005
21006 @item
21007 Display 4 inputs into 1x4 grid.
21008
21009 Layout:
21010 @example
21011 input1(0, 0)
21012 input2(0, h0)
21013 input3(0, h0+h1)
21014 input4(0, h0+h1+h2)
21015 @end example
21016
21017 @example
21018 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
21019 @end example
21020
21021 Note that if inputs are of different widths, unused space will appear.
21022
21023 @item
21024 Display 9 inputs into 3x3 grid.
21025
21026 Layout:
21027 @example
21028 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
21029 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
21030 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
21031 @end example
21032
21033 @example
21034 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
21035 @end example
21036
21037 Note that if inputs are of different sizes, gaps or overlaps may occur.
21038
21039 @item
21040 Display 16 inputs into 4x4 grid.
21041
21042 Layout:
21043 @example
21044 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
21045 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
21046 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
21047 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
21048 @end example
21049
21050 @example
21051 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|
21052 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
21053 @end example
21054
21055 Note that if inputs are of different sizes, gaps or overlaps may occur.
21056
21057 @end itemize
21058
21059 @anchor{yadif}
21060 @section yadif
21061
21062 Deinterlace the input video ("yadif" means "yet another deinterlacing
21063 filter").
21064
21065 It accepts the following parameters:
21066
21067
21068 @table @option
21069
21070 @item mode
21071 The interlacing mode to adopt. It accepts one of the following values:
21072
21073 @table @option
21074 @item 0, send_frame
21075 Output one frame for each frame.
21076 @item 1, send_field
21077 Output one frame for each field.
21078 @item 2, send_frame_nospatial
21079 Like @code{send_frame}, but it skips the spatial interlacing check.
21080 @item 3, send_field_nospatial
21081 Like @code{send_field}, but it skips the spatial interlacing check.
21082 @end table
21083
21084 The default value is @code{send_frame}.
21085
21086 @item parity
21087 The picture field parity assumed for the input interlaced video. It accepts one
21088 of the following values:
21089
21090 @table @option
21091 @item 0, tff
21092 Assume the top field is first.
21093 @item 1, bff
21094 Assume the bottom field is first.
21095 @item -1, auto
21096 Enable automatic detection of field parity.
21097 @end table
21098
21099 The default value is @code{auto}.
21100 If the interlacing is unknown or the decoder does not export this information,
21101 top field first will be assumed.
21102
21103 @item deint
21104 Specify which frames to deinterlace. Accepts one of the following
21105 values:
21106
21107 @table @option
21108 @item 0, all
21109 Deinterlace all frames.
21110 @item 1, interlaced
21111 Only deinterlace frames marked as interlaced.
21112 @end table
21113
21114 The default value is @code{all}.
21115 @end table
21116
21117 @section yadif_cuda
21118
21119 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
21120 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
21121 and/or nvenc.
21122
21123 It accepts the following parameters:
21124
21125
21126 @table @option
21127
21128 @item mode
21129 The interlacing mode to adopt. It accepts one of the following values:
21130
21131 @table @option
21132 @item 0, send_frame
21133 Output one frame for each frame.
21134 @item 1, send_field
21135 Output one frame for each field.
21136 @item 2, send_frame_nospatial
21137 Like @code{send_frame}, but it skips the spatial interlacing check.
21138 @item 3, send_field_nospatial
21139 Like @code{send_field}, but it skips the spatial interlacing check.
21140 @end table
21141
21142 The default value is @code{send_frame}.
21143
21144 @item parity
21145 The picture field parity assumed for the input interlaced video. It accepts one
21146 of the following values:
21147
21148 @table @option
21149 @item 0, tff
21150 Assume the top field is first.
21151 @item 1, bff
21152 Assume the bottom field is first.
21153 @item -1, auto
21154 Enable automatic detection of field parity.
21155 @end table
21156
21157 The default value is @code{auto}.
21158 If the interlacing is unknown or the decoder does not export this information,
21159 top field first will be assumed.
21160
21161 @item deint
21162 Specify which frames to deinterlace. Accepts one of the following
21163 values:
21164
21165 @table @option
21166 @item 0, all
21167 Deinterlace all frames.
21168 @item 1, interlaced
21169 Only deinterlace frames marked as interlaced.
21170 @end table
21171
21172 The default value is @code{all}.
21173 @end table
21174
21175 @section yaepblur
21176
21177 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
21178 The algorithm is described in
21179 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
21180
21181 It accepts the following parameters:
21182
21183 @table @option
21184 @item radius, r
21185 Set the window radius. Default value is 3.
21186
21187 @item planes, p
21188 Set which planes to filter. Default is only the first plane.
21189
21190 @item sigma, s
21191 Set blur strength. Default value is 128.
21192 @end table
21193
21194 @subsection Commands
21195 This filter supports same @ref{commands} as options.
21196
21197 @section zoompan
21198
21199 Apply Zoom & Pan effect.
21200
21201 This filter accepts the following options:
21202
21203 @table @option
21204 @item zoom, z
21205 Set the zoom expression. Range is 1-10. Default is 1.
21206
21207 @item x
21208 @item y
21209 Set the x and y expression. Default is 0.
21210
21211 @item d
21212 Set the duration expression in number of frames.
21213 This sets for how many number of frames effect will last for
21214 single input image.
21215
21216 @item s
21217 Set the output image size, default is 'hd720'.
21218
21219 @item fps
21220 Set the output frame rate, default is '25'.
21221 @end table
21222
21223 Each expression can contain the following constants:
21224
21225 @table @option
21226 @item in_w, iw
21227 Input width.
21228
21229 @item in_h, ih
21230 Input height.
21231
21232 @item out_w, ow
21233 Output width.
21234
21235 @item out_h, oh
21236 Output height.
21237
21238 @item in
21239 Input frame count.
21240
21241 @item on
21242 Output frame count.
21243
21244 @item in_time, it
21245 The input timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
21246
21247 @item out_time, time, ot
21248 The output timestamp expressed in seconds.
21249
21250 @item x
21251 @item y
21252 Last calculated 'x' and 'y' position from 'x' and 'y' expression
21253 for current input frame.
21254
21255 @item px
21256 @item py
21257 'x' and 'y' of last output frame of previous input frame or 0 when there was
21258 not yet such frame (first input frame).
21259
21260 @item zoom
21261 Last calculated zoom from 'z' expression for current input frame.
21262
21263 @item pzoom
21264 Last calculated zoom of last output frame of previous input frame.
21265
21266 @item duration
21267 Number of output frames for current input frame. Calculated from 'd' expression
21268 for each input frame.
21269
21270 @item pduration
21271 number of output frames created for previous input frame
21272
21273 @item a
21274 Rational number: input width / input height
21275
21276 @item sar
21277 sample aspect ratio
21278
21279 @item dar
21280 display aspect ratio
21281
21282 @end table
21283
21284 @subsection Examples
21285
21286 @itemize
21287 @item
21288 Zoom in up to 1.5x and pan at same time to some spot near center of picture:
21289 @example
21290 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
21291 @end example
21292
21293 @item
21294 Zoom in up to 1.5x and pan always at center of picture:
21295 @example
21296 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21297 @end example
21298
21299 @item
21300 Same as above but without pausing:
21301 @example
21302 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21303 @end example
21304
21305 @item
21306 Zoom in 2x into center of picture only for the first second of the input video:
21307 @example
21308 zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21309 @end example
21310
21311 @end itemize
21312
21313 @anchor{zscale}
21314 @section zscale
21315 Scale (resize) the input video, using the z.lib library:
21316 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
21317 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
21318
21319 The zscale filter forces the output display aspect ratio to be the same
21320 as the input, by changing the output sample aspect ratio.
21321
21322 If the input image format is different from the format requested by
21323 the next filter, the zscale filter will convert the input to the
21324 requested format.
21325
21326 @subsection Options
21327 The filter accepts the following options.
21328
21329 @table @option
21330 @item width, w
21331 @item height, h
21332 Set the output video dimension expression. Default value is the input
21333 dimension.
21334
21335 If the @var{width} or @var{w} value is 0, the input width is used for
21336 the output. If the @var{height} or @var{h} value is 0, the input height
21337 is used for the output.
21338
21339 If one and only one of the values is -n with n >= 1, the zscale filter
21340 will use a value that maintains the aspect ratio of the input image,
21341 calculated from the other specified dimension. After that it will,
21342 however, make sure that the calculated dimension is divisible by n and
21343 adjust the value if necessary.
21344
21345 If both values are -n with n >= 1, the behavior will be identical to
21346 both values being set to 0 as previously detailed.
21347
21348 See below for the list of accepted constants for use in the dimension
21349 expression.
21350
21351 @item size, s
21352 Set the video size. For the syntax of this option, check the
21353 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21354
21355 @item dither, d
21356 Set the dither type.
21357
21358 Possible values are:
21359 @table @var
21360 @item none
21361 @item ordered
21362 @item random
21363 @item error_diffusion
21364 @end table
21365
21366 Default is none.
21367
21368 @item filter, f
21369 Set the resize filter type.
21370
21371 Possible values are:
21372 @table @var
21373 @item point
21374 @item bilinear
21375 @item bicubic
21376 @item spline16
21377 @item spline36
21378 @item lanczos
21379 @end table
21380
21381 Default is bilinear.
21382
21383 @item range, r
21384 Set the color range.
21385
21386 Possible values are:
21387 @table @var
21388 @item input
21389 @item limited
21390 @item full
21391 @end table
21392
21393 Default is same as input.
21394
21395 @item primaries, p
21396 Set the color primaries.
21397
21398 Possible values are:
21399 @table @var
21400 @item input
21401 @item 709
21402 @item unspecified
21403 @item 170m
21404 @item 240m
21405 @item 2020
21406 @end table
21407
21408 Default is same as input.
21409
21410 @item transfer, t
21411 Set the transfer characteristics.
21412
21413 Possible values are:
21414 @table @var
21415 @item input
21416 @item 709
21417 @item unspecified
21418 @item 601
21419 @item linear
21420 @item 2020_10
21421 @item 2020_12
21422 @item smpte2084
21423 @item iec61966-2-1
21424 @item arib-std-b67
21425 @end table
21426
21427 Default is same as input.
21428
21429 @item matrix, m
21430 Set the colorspace matrix.
21431
21432 Possible value are:
21433 @table @var
21434 @item input
21435 @item 709
21436 @item unspecified
21437 @item 470bg
21438 @item 170m
21439 @item 2020_ncl
21440 @item 2020_cl
21441 @end table
21442
21443 Default is same as input.
21444
21445 @item rangein, rin
21446 Set the input color range.
21447
21448 Possible values are:
21449 @table @var
21450 @item input
21451 @item limited
21452 @item full
21453 @end table
21454
21455 Default is same as input.
21456
21457 @item primariesin, pin
21458 Set the input color primaries.
21459
21460 Possible values are:
21461 @table @var
21462 @item input
21463 @item 709
21464 @item unspecified
21465 @item 170m
21466 @item 240m
21467 @item 2020
21468 @end table
21469
21470 Default is same as input.
21471
21472 @item transferin, tin
21473 Set the input transfer characteristics.
21474
21475 Possible values are:
21476 @table @var
21477 @item input
21478 @item 709
21479 @item unspecified
21480 @item 601
21481 @item linear
21482 @item 2020_10
21483 @item 2020_12
21484 @end table
21485
21486 Default is same as input.
21487
21488 @item matrixin, min
21489 Set the input colorspace matrix.
21490
21491 Possible value are:
21492 @table @var
21493 @item input
21494 @item 709
21495 @item unspecified
21496 @item 470bg
21497 @item 170m
21498 @item 2020_ncl
21499 @item 2020_cl
21500 @end table
21501
21502 @item chromal, c
21503 Set the output chroma location.
21504
21505 Possible values are:
21506 @table @var
21507 @item input
21508 @item left
21509 @item center
21510 @item topleft
21511 @item top
21512 @item bottomleft
21513 @item bottom
21514 @end table
21515
21516 @item chromalin, cin
21517 Set the input chroma location.
21518
21519 Possible values are:
21520 @table @var
21521 @item input
21522 @item left
21523 @item center
21524 @item topleft
21525 @item top
21526 @item bottomleft
21527 @item bottom
21528 @end table
21529
21530 @item npl
21531 Set the nominal peak luminance.
21532 @end table
21533
21534 The values of the @option{w} and @option{h} options are expressions
21535 containing the following constants:
21536
21537 @table @var
21538 @item in_w
21539 @item in_h
21540 The input width and height
21541
21542 @item iw
21543 @item ih
21544 These are the same as @var{in_w} and @var{in_h}.
21545
21546 @item out_w
21547 @item out_h
21548 The output (scaled) width and height
21549
21550 @item ow
21551 @item oh
21552 These are the same as @var{out_w} and @var{out_h}
21553
21554 @item a
21555 The same as @var{iw} / @var{ih}
21556
21557 @item sar
21558 input sample aspect ratio
21559
21560 @item dar
21561 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
21562
21563 @item hsub
21564 @item vsub
21565 horizontal and vertical input chroma subsample values. For example for the
21566 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21567
21568 @item ohsub
21569 @item ovsub
21570 horizontal and vertical output chroma subsample values. For example for the
21571 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21572 @end table
21573
21574 @subsection Commands
21575
21576 This filter supports the following commands:
21577 @table @option
21578 @item width, w
21579 @item height, h
21580 Set the output video dimension expression.
21581 The command accepts the same syntax of the corresponding option.
21582
21583 If the specified expression is not valid, it is kept at its current
21584 value.
21585 @end table
21586
21587 @c man end VIDEO FILTERS
21588
21589 @chapter OpenCL Video Filters
21590 @c man begin OPENCL VIDEO FILTERS
21591
21592 Below is a description of the currently available OpenCL video filters.
21593
21594 To enable compilation of these filters you need to configure FFmpeg with
21595 @code{--enable-opencl}.
21596
21597 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
21598 @table @option
21599
21600 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
21601 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
21602 given device parameters.
21603
21604 @item -filter_hw_device @var{name}
21605 Pass the hardware device called @var{name} to all filters in any filter graph.
21606
21607 @end table
21608
21609 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
21610
21611 @itemize
21612 @item
21613 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
21614 @example
21615 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
21616 @end example
21617 @end itemize
21618
21619 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.
21620
21621 @section avgblur_opencl
21622
21623 Apply average blur filter.
21624
21625 The filter accepts the following options:
21626
21627 @table @option
21628 @item sizeX
21629 Set horizontal radius size.
21630 Range is @code{[1, 1024]} and default value is @code{1}.
21631
21632 @item planes
21633 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21634
21635 @item sizeY
21636 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
21637 @end table
21638
21639 @subsection Example
21640
21641 @itemize
21642 @item
21643 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.
21644 @example
21645 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
21646 @end example
21647 @end itemize
21648
21649 @section boxblur_opencl
21650
21651 Apply a boxblur algorithm to the input video.
21652
21653 It accepts the following parameters:
21654
21655 @table @option
21656
21657 @item luma_radius, lr
21658 @item luma_power, lp
21659 @item chroma_radius, cr
21660 @item chroma_power, cp
21661 @item alpha_radius, ar
21662 @item alpha_power, ap
21663
21664 @end table
21665
21666 A description of the accepted options follows.
21667
21668 @table @option
21669 @item luma_radius, lr
21670 @item chroma_radius, cr
21671 @item alpha_radius, ar
21672 Set an expression for the box radius in pixels used for blurring the
21673 corresponding input plane.
21674
21675 The radius value must be a non-negative number, and must not be
21676 greater than the value of the expression @code{min(w,h)/2} for the
21677 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
21678 planes.
21679
21680 Default value for @option{luma_radius} is "2". If not specified,
21681 @option{chroma_radius} and @option{alpha_radius} default to the
21682 corresponding value set for @option{luma_radius}.
21683
21684 The expressions can contain the following constants:
21685 @table @option
21686 @item w
21687 @item h
21688 The input width and height in pixels.
21689
21690 @item cw
21691 @item ch
21692 The input chroma image width and height in pixels.
21693
21694 @item hsub
21695 @item vsub
21696 The horizontal and vertical chroma subsample values. For example, for the
21697 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
21698 @end table
21699
21700 @item luma_power, lp
21701 @item chroma_power, cp
21702 @item alpha_power, ap
21703 Specify how many times the boxblur filter is applied to the
21704 corresponding plane.
21705
21706 Default value for @option{luma_power} is 2. If not specified,
21707 @option{chroma_power} and @option{alpha_power} default to the
21708 corresponding value set for @option{luma_power}.
21709
21710 A value of 0 will disable the effect.
21711 @end table
21712
21713 @subsection Examples
21714
21715 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.
21716
21717 @itemize
21718 @item
21719 Apply a boxblur filter with the luma, chroma, and alpha radius
21720 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.
21721 @example
21722 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
21723 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
21724 @end example
21725
21726 @item
21727 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.
21728
21729 For the luma plane, a 2x2 box radius will be run once.
21730
21731 For the chroma plane, a 4x4 box radius will be run 5 times.
21732
21733 For the alpha plane, a 3x3 box radius will be run 7 times.
21734 @example
21735 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
21736 @end example
21737 @end itemize
21738
21739 @section colorkey_opencl
21740 RGB colorspace color keying.
21741
21742 The filter accepts the following options:
21743
21744 @table @option
21745 @item color
21746 The color which will be replaced with transparency.
21747
21748 @item similarity
21749 Similarity percentage with the key color.
21750
21751 0.01 matches only the exact key color, while 1.0 matches everything.
21752
21753 @item blend
21754 Blend percentage.
21755
21756 0.0 makes pixels either fully transparent, or not transparent at all.
21757
21758 Higher values result in semi-transparent pixels, with a higher transparency
21759 the more similar the pixels color is to the key color.
21760 @end table
21761
21762 @subsection Examples
21763
21764 @itemize
21765 @item
21766 Make every semi-green pixel in the input transparent with some slight blending:
21767 @example
21768 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
21769 @end example
21770 @end itemize
21771
21772 @section convolution_opencl
21773
21774 Apply convolution of 3x3, 5x5, 7x7 matrix.
21775
21776 The filter accepts the following options:
21777
21778 @table @option
21779 @item 0m
21780 @item 1m
21781 @item 2m
21782 @item 3m
21783 Set matrix for each plane.
21784 Matrix is sequence of 9, 25 or 49 signed numbers.
21785 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
21786
21787 @item 0rdiv
21788 @item 1rdiv
21789 @item 2rdiv
21790 @item 3rdiv
21791 Set multiplier for calculated value for each plane.
21792 If unset or 0, it will be sum of all matrix elements.
21793 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
21794
21795 @item 0bias
21796 @item 1bias
21797 @item 2bias
21798 @item 3bias
21799 Set bias for each plane. This value is added to the result of the multiplication.
21800 Useful for making the overall image brighter or darker.
21801 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
21802
21803 @end table
21804
21805 @subsection Examples
21806
21807 @itemize
21808 @item
21809 Apply sharpen:
21810 @example
21811 -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
21812 @end example
21813
21814 @item
21815 Apply blur:
21816 @example
21817 -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
21818 @end example
21819
21820 @item
21821 Apply edge enhance:
21822 @example
21823 -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
21824 @end example
21825
21826 @item
21827 Apply edge detect:
21828 @example
21829 -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
21830 @end example
21831
21832 @item
21833 Apply laplacian edge detector which includes diagonals:
21834 @example
21835 -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
21836 @end example
21837
21838 @item
21839 Apply emboss:
21840 @example
21841 -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
21842 @end example
21843 @end itemize
21844
21845 @section erosion_opencl
21846
21847 Apply erosion effect to the video.
21848
21849 This filter replaces the pixel by the local(3x3) minimum.
21850
21851 It accepts the following options:
21852
21853 @table @option
21854 @item threshold0
21855 @item threshold1
21856 @item threshold2
21857 @item threshold3
21858 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21859 If @code{0}, plane will remain unchanged.
21860
21861 @item coordinates
21862 Flag which specifies the pixel to refer to.
21863 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21864
21865 Flags to local 3x3 coordinates region centered on @code{x}:
21866
21867     1 2 3
21868
21869     4 x 5
21870
21871     6 7 8
21872 @end table
21873
21874 @subsection Example
21875
21876 @itemize
21877 @item
21878 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.
21879 @example
21880 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21881 @end example
21882 @end itemize
21883
21884 @section deshake_opencl
21885 Feature-point based video stabilization filter.
21886
21887 The filter accepts the following options:
21888
21889 @table @option
21890 @item tripod
21891 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
21892
21893 @item debug
21894 Whether or not additional debug info should be displayed, both in the processed output and in the console.
21895
21896 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
21897
21898 Viewing point matches in the output video is only supported for RGB input.
21899
21900 Defaults to @code{0}.
21901
21902 @item adaptive_crop
21903 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
21904
21905 Defaults to @code{1}.
21906
21907 @item refine_features
21908 Whether or not feature points should be refined at a sub-pixel level.
21909
21910 This can be turned off for a slight performance gain at the cost of precision.
21911
21912 Defaults to @code{1}.
21913
21914 @item smooth_strength
21915 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
21916
21917 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
21918
21919 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
21920
21921 Defaults to @code{0.0}.
21922
21923 @item smooth_window_multiplier
21924 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
21925
21926 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
21927
21928 Acceptable values range from @code{0.1} to @code{10.0}.
21929
21930 Larger values increase the amount of motion data available for determining how to smooth the camera path,
21931 potentially improving smoothness, but also increase latency and memory usage.
21932
21933 Defaults to @code{2.0}.
21934
21935 @end table
21936
21937 @subsection Examples
21938
21939 @itemize
21940 @item
21941 Stabilize a video with a fixed, medium smoothing strength:
21942 @example
21943 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
21944 @end example
21945
21946 @item
21947 Stabilize a video with debugging (both in console and in rendered video):
21948 @example
21949 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
21950 @end example
21951 @end itemize
21952
21953 @section dilation_opencl
21954
21955 Apply dilation effect to the video.
21956
21957 This filter replaces the pixel by the local(3x3) maximum.
21958
21959 It accepts the following options:
21960
21961 @table @option
21962 @item threshold0
21963 @item threshold1
21964 @item threshold2
21965 @item threshold3
21966 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21967 If @code{0}, plane will remain unchanged.
21968
21969 @item coordinates
21970 Flag which specifies the pixel to refer to.
21971 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21972
21973 Flags to local 3x3 coordinates region centered on @code{x}:
21974
21975     1 2 3
21976
21977     4 x 5
21978
21979     6 7 8
21980 @end table
21981
21982 @subsection Example
21983
21984 @itemize
21985 @item
21986 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.
21987 @example
21988 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21989 @end example
21990 @end itemize
21991
21992 @section nlmeans_opencl
21993
21994 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
21995
21996 @section overlay_opencl
21997
21998 Overlay one video on top of another.
21999
22000 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
22001 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
22002
22003 The filter accepts the following options:
22004
22005 @table @option
22006
22007 @item x
22008 Set the x coordinate of the overlaid video on the main video.
22009 Default value is @code{0}.
22010
22011 @item y
22012 Set the y coordinate of the overlaid video on the main video.
22013 Default value is @code{0}.
22014
22015 @end table
22016
22017 @subsection Examples
22018
22019 @itemize
22020 @item
22021 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
22022 @example
22023 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22024 @end example
22025 @item
22026 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
22027 @example
22028 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22029 @end example
22030
22031 @end itemize
22032
22033 @section pad_opencl
22034
22035 Add paddings to the input image, and place the original input at the
22036 provided @var{x}, @var{y} coordinates.
22037
22038 It accepts the following options:
22039
22040 @table @option
22041 @item width, w
22042 @item height, h
22043 Specify an expression for the size of the output image with the
22044 paddings added. If the value for @var{width} or @var{height} is 0, the
22045 corresponding input size is used for the output.
22046
22047 The @var{width} expression can reference the value set by the
22048 @var{height} expression, and vice versa.
22049
22050 The default value of @var{width} and @var{height} is 0.
22051
22052 @item x
22053 @item y
22054 Specify the offsets to place the input image at within the padded area,
22055 with respect to the top/left border of the output image.
22056
22057 The @var{x} expression can reference the value set by the @var{y}
22058 expression, and vice versa.
22059
22060 The default value of @var{x} and @var{y} is 0.
22061
22062 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
22063 so the input image is centered on the padded area.
22064
22065 @item color
22066 Specify the color of the padded area. For the syntax of this option,
22067 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
22068 manual,ffmpeg-utils}.
22069
22070 @item aspect
22071 Pad to an aspect instead to a resolution.
22072 @end table
22073
22074 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
22075 options are expressions containing the following constants:
22076
22077 @table @option
22078 @item in_w
22079 @item in_h
22080 The input video width and height.
22081
22082 @item iw
22083 @item ih
22084 These are the same as @var{in_w} and @var{in_h}.
22085
22086 @item out_w
22087 @item out_h
22088 The output width and height (the size of the padded area), as
22089 specified by the @var{width} and @var{height} expressions.
22090
22091 @item ow
22092 @item oh
22093 These are the same as @var{out_w} and @var{out_h}.
22094
22095 @item x
22096 @item y
22097 The x and y offsets as specified by the @var{x} and @var{y}
22098 expressions, or NAN if not yet specified.
22099
22100 @item a
22101 same as @var{iw} / @var{ih}
22102
22103 @item sar
22104 input sample aspect ratio
22105
22106 @item dar
22107 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
22108 @end table
22109
22110 @section prewitt_opencl
22111
22112 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
22113
22114 The filter accepts the following option:
22115
22116 @table @option
22117 @item planes
22118 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22119
22120 @item scale
22121 Set value which will be multiplied with filtered result.
22122 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22123
22124 @item delta
22125 Set value which will be added to filtered result.
22126 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22127 @end table
22128
22129 @subsection Example
22130
22131 @itemize
22132 @item
22133 Apply the Prewitt operator with scale set to 2 and delta set to 10.
22134 @example
22135 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
22136 @end example
22137 @end itemize
22138
22139 @anchor{program_opencl}
22140 @section program_opencl
22141
22142 Filter video using an OpenCL program.
22143
22144 @table @option
22145
22146 @item source
22147 OpenCL program source file.
22148
22149 @item kernel
22150 Kernel name in program.
22151
22152 @item inputs
22153 Number of inputs to the filter.  Defaults to 1.
22154
22155 @item size, s
22156 Size of output frames.  Defaults to the same as the first input.
22157
22158 @end table
22159
22160 The @code{program_opencl} filter also supports the @ref{framesync} options.
22161
22162 The program source file must contain a kernel function with the given name,
22163 which will be run once for each plane of the output.  Each run on a plane
22164 gets enqueued as a separate 2D global NDRange with one work-item for each
22165 pixel to be generated.  The global ID offset for each work-item is therefore
22166 the coordinates of a pixel in the destination image.
22167
22168 The kernel function needs to take the following arguments:
22169 @itemize
22170 @item
22171 Destination image, @var{__write_only image2d_t}.
22172
22173 This image will become the output; the kernel should write all of it.
22174 @item
22175 Frame index, @var{unsigned int}.
22176
22177 This is a counter starting from zero and increasing by one for each frame.
22178 @item
22179 Source images, @var{__read_only image2d_t}.
22180
22181 These are the most recent images on each input.  The kernel may read from
22182 them to generate the output, but they can't be written to.
22183 @end itemize
22184
22185 Example programs:
22186
22187 @itemize
22188 @item
22189 Copy the input to the output (output must be the same size as the input).
22190 @verbatim
22191 __kernel void copy(__write_only image2d_t destination,
22192                    unsigned int index,
22193                    __read_only  image2d_t source)
22194 {
22195     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
22196
22197     int2 location = (int2)(get_global_id(0), get_global_id(1));
22198
22199     float4 value = read_imagef(source, sampler, location);
22200
22201     write_imagef(destination, location, value);
22202 }
22203 @end verbatim
22204
22205 @item
22206 Apply a simple transformation, rotating the input by an amount increasing
22207 with the index counter.  Pixel values are linearly interpolated by the
22208 sampler, and the output need not have the same dimensions as the input.
22209 @verbatim
22210 __kernel void rotate_image(__write_only image2d_t dst,
22211                            unsigned int index,
22212                            __read_only  image2d_t src)
22213 {
22214     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22215                                CLK_FILTER_LINEAR);
22216
22217     float angle = (float)index / 100.0f;
22218
22219     float2 dst_dim = convert_float2(get_image_dim(dst));
22220     float2 src_dim = convert_float2(get_image_dim(src));
22221
22222     float2 dst_cen = dst_dim / 2.0f;
22223     float2 src_cen = src_dim / 2.0f;
22224
22225     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
22226
22227     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
22228     float2 src_pos = {
22229         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
22230         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
22231     };
22232     src_pos = src_pos * src_dim / dst_dim;
22233
22234     float2 src_loc = src_pos + src_cen;
22235
22236     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
22237         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
22238         write_imagef(dst, dst_loc, 0.5f);
22239     else
22240         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
22241 }
22242 @end verbatim
22243
22244 @item
22245 Blend two inputs together, with the amount of each input used varying
22246 with the index counter.
22247 @verbatim
22248 __kernel void blend_images(__write_only image2d_t dst,
22249                            unsigned int index,
22250                            __read_only  image2d_t src1,
22251                            __read_only  image2d_t src2)
22252 {
22253     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22254                                CLK_FILTER_LINEAR);
22255
22256     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
22257
22258     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
22259     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
22260     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
22261
22262     float4 val1 = read_imagef(src1, sampler, src1_loc);
22263     float4 val2 = read_imagef(src2, sampler, src2_loc);
22264
22265     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
22266 }
22267 @end verbatim
22268
22269 @end itemize
22270
22271 @section roberts_opencl
22272 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
22273
22274 The filter accepts the following option:
22275
22276 @table @option
22277 @item planes
22278 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22279
22280 @item scale
22281 Set value which will be multiplied with filtered result.
22282 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22283
22284 @item delta
22285 Set value which will be added to filtered result.
22286 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22287 @end table
22288
22289 @subsection Example
22290
22291 @itemize
22292 @item
22293 Apply the Roberts cross operator with scale set to 2 and delta set to 10
22294 @example
22295 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
22296 @end example
22297 @end itemize
22298
22299 @section sobel_opencl
22300
22301 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
22302
22303 The filter accepts the following option:
22304
22305 @table @option
22306 @item planes
22307 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22308
22309 @item scale
22310 Set value which will be multiplied with filtered result.
22311 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22312
22313 @item delta
22314 Set value which will be added to filtered result.
22315 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22316 @end table
22317
22318 @subsection Example
22319
22320 @itemize
22321 @item
22322 Apply sobel operator with scale set to 2 and delta set to 10
22323 @example
22324 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
22325 @end example
22326 @end itemize
22327
22328 @section tonemap_opencl
22329
22330 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
22331
22332 It accepts the following parameters:
22333
22334 @table @option
22335 @item tonemap
22336 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
22337
22338 @item param
22339 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
22340
22341 @item desat
22342 Apply desaturation for highlights that exceed this level of brightness. The
22343 higher the parameter, the more color information will be preserved. This
22344 setting helps prevent unnaturally blown-out colors for super-highlights, by
22345 (smoothly) turning into white instead. This makes images feel more natural,
22346 at the cost of reducing information about out-of-range colors.
22347
22348 The default value is 0.5, and the algorithm here is a little different from
22349 the cpu version tonemap currently. A setting of 0.0 disables this option.
22350
22351 @item threshold
22352 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
22353 is used to detect whether the scene has changed or not. If the distance between
22354 the current frame average brightness and the current running average exceeds
22355 a threshold value, we would re-calculate scene average and peak brightness.
22356 The default value is 0.2.
22357
22358 @item format
22359 Specify the output pixel format.
22360
22361 Currently supported formats are:
22362 @table @var
22363 @item p010
22364 @item nv12
22365 @end table
22366
22367 @item range, r
22368 Set the output color range.
22369
22370 Possible values are:
22371 @table @var
22372 @item tv/mpeg
22373 @item pc/jpeg
22374 @end table
22375
22376 Default is same as input.
22377
22378 @item primaries, p
22379 Set the output color primaries.
22380
22381 Possible values are:
22382 @table @var
22383 @item bt709
22384 @item bt2020
22385 @end table
22386
22387 Default is same as input.
22388
22389 @item transfer, t
22390 Set the output transfer characteristics.
22391
22392 Possible values are:
22393 @table @var
22394 @item bt709
22395 @item bt2020
22396 @end table
22397
22398 Default is bt709.
22399
22400 @item matrix, m
22401 Set the output colorspace matrix.
22402
22403 Possible value are:
22404 @table @var
22405 @item bt709
22406 @item bt2020
22407 @end table
22408
22409 Default is same as input.
22410
22411 @end table
22412
22413 @subsection Example
22414
22415 @itemize
22416 @item
22417 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
22418 @example
22419 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
22420 @end example
22421 @end itemize
22422
22423 @section unsharp_opencl
22424
22425 Sharpen or blur the input video.
22426
22427 It accepts the following parameters:
22428
22429 @table @option
22430 @item luma_msize_x, lx
22431 Set the luma matrix horizontal size.
22432 Range is @code{[1, 23]} and default value is @code{5}.
22433
22434 @item luma_msize_y, ly
22435 Set the luma matrix vertical size.
22436 Range is @code{[1, 23]} and default value is @code{5}.
22437
22438 @item luma_amount, la
22439 Set the luma effect strength.
22440 Range is @code{[-10, 10]} and default value is @code{1.0}.
22441
22442 Negative values will blur the input video, while positive values will
22443 sharpen it, a value of zero will disable the effect.
22444
22445 @item chroma_msize_x, cx
22446 Set the chroma matrix horizontal size.
22447 Range is @code{[1, 23]} and default value is @code{5}.
22448
22449 @item chroma_msize_y, cy
22450 Set the chroma matrix vertical size.
22451 Range is @code{[1, 23]} and default value is @code{5}.
22452
22453 @item chroma_amount, ca
22454 Set the chroma effect strength.
22455 Range is @code{[-10, 10]} and default value is @code{0.0}.
22456
22457 Negative values will blur the input video, while positive values will
22458 sharpen it, a value of zero will disable the effect.
22459
22460 @end table
22461
22462 All parameters are optional and default to the equivalent of the
22463 string '5:5:1.0:5:5:0.0'.
22464
22465 @subsection Examples
22466
22467 @itemize
22468 @item
22469 Apply strong luma sharpen effect:
22470 @example
22471 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
22472 @end example
22473
22474 @item
22475 Apply a strong blur of both luma and chroma parameters:
22476 @example
22477 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
22478 @end example
22479 @end itemize
22480
22481 @section xfade_opencl
22482
22483 Cross fade two videos with custom transition effect by using OpenCL.
22484
22485 It accepts the following options:
22486
22487 @table @option
22488 @item transition
22489 Set one of possible transition effects.
22490
22491 @table @option
22492 @item custom
22493 Select custom transition effect, the actual transition description
22494 will be picked from source and kernel options.
22495
22496 @item fade
22497 @item wipeleft
22498 @item wiperight
22499 @item wipeup
22500 @item wipedown
22501 @item slideleft
22502 @item slideright
22503 @item slideup
22504 @item slidedown
22505
22506 Default transition is fade.
22507 @end table
22508
22509 @item source
22510 OpenCL program source file for custom transition.
22511
22512 @item kernel
22513 Set name of kernel to use for custom transition from program source file.
22514
22515 @item duration
22516 Set duration of video transition.
22517
22518 @item offset
22519 Set time of start of transition relative to first video.
22520 @end table
22521
22522 The program source file must contain a kernel function with the given name,
22523 which will be run once for each plane of the output.  Each run on a plane
22524 gets enqueued as a separate 2D global NDRange with one work-item for each
22525 pixel to be generated.  The global ID offset for each work-item is therefore
22526 the coordinates of a pixel in the destination image.
22527
22528 The kernel function needs to take the following arguments:
22529 @itemize
22530 @item
22531 Destination image, @var{__write_only image2d_t}.
22532
22533 This image will become the output; the kernel should write all of it.
22534
22535 @item
22536 First Source image, @var{__read_only image2d_t}.
22537 Second Source image, @var{__read_only image2d_t}.
22538
22539 These are the most recent images on each input.  The kernel may read from
22540 them to generate the output, but they can't be written to.
22541
22542 @item
22543 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
22544 @end itemize
22545
22546 Example programs:
22547
22548 @itemize
22549 @item
22550 Apply dots curtain transition effect:
22551 @verbatim
22552 __kernel void blend_images(__write_only image2d_t dst,
22553                            __read_only  image2d_t src1,
22554                            __read_only  image2d_t src2,
22555                            float progress)
22556 {
22557     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22558                                CLK_FILTER_LINEAR);
22559     int2  p = (int2)(get_global_id(0), get_global_id(1));
22560     float2 rp = (float2)(get_global_id(0), get_global_id(1));
22561     float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
22562     rp = rp / dim;
22563
22564     float2 dots = (float2)(20.0, 20.0);
22565     float2 center = (float2)(0,0);
22566     float2 unused;
22567
22568     float4 val1 = read_imagef(src1, sampler, p);
22569     float4 val2 = read_imagef(src2, sampler, p);
22570     bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
22571
22572     write_imagef(dst, p, next ? val1 : val2);
22573 }
22574 @end verbatim
22575
22576 @end itemize
22577
22578 @c man end OPENCL VIDEO FILTERS
22579
22580 @chapter VAAPI Video Filters
22581 @c man begin VAAPI VIDEO FILTERS
22582
22583 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
22584
22585 To enable compilation of these filters you need to configure FFmpeg with
22586 @code{--enable-vaapi}.
22587
22588 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}
22589
22590 @section tonemap_vaapi
22591
22592 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
22593 It maps the dynamic range of HDR10 content to the SDR content.
22594 It currently only accepts HDR10 as input.
22595
22596 It accepts the following parameters:
22597
22598 @table @option
22599 @item format
22600 Specify the output pixel format.
22601
22602 Currently supported formats are:
22603 @table @var
22604 @item p010
22605 @item nv12
22606 @end table
22607
22608 Default is nv12.
22609
22610 @item primaries, p
22611 Set the output color primaries.
22612
22613 Default is same as input.
22614
22615 @item transfer, t
22616 Set the output transfer characteristics.
22617
22618 Default is bt709.
22619
22620 @item matrix, m
22621 Set the output colorspace matrix.
22622
22623 Default is same as input.
22624
22625 @end table
22626
22627 @subsection Example
22628
22629 @itemize
22630 @item
22631 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
22632 @example
22633 tonemap_vaapi=format=p010:t=bt2020-10
22634 @end example
22635 @end itemize
22636
22637 @c man end VAAPI VIDEO FILTERS
22638
22639 @chapter Video Sources
22640 @c man begin VIDEO SOURCES
22641
22642 Below is a description of the currently available video sources.
22643
22644 @section buffer
22645
22646 Buffer video frames, and make them available to the filter chain.
22647
22648 This source is mainly intended for a programmatic use, in particular
22649 through the interface defined in @file{libavfilter/buffersrc.h}.
22650
22651 It accepts the following parameters:
22652
22653 @table @option
22654
22655 @item video_size
22656 Specify the size (width and height) of the buffered video frames. For the
22657 syntax of this option, check the
22658 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22659
22660 @item width
22661 The input video width.
22662
22663 @item height
22664 The input video height.
22665
22666 @item pix_fmt
22667 A string representing the pixel format of the buffered video frames.
22668 It may be a number corresponding to a pixel format, or a pixel format
22669 name.
22670
22671 @item time_base
22672 Specify the timebase assumed by the timestamps of the buffered frames.
22673
22674 @item frame_rate
22675 Specify the frame rate expected for the video stream.
22676
22677 @item pixel_aspect, sar
22678 The sample (pixel) aspect ratio of the input video.
22679
22680 @item sws_param
22681 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
22682 to the filtergraph description to specify swscale flags for automatically
22683 inserted scalers. See @ref{Filtergraph syntax}.
22684
22685 @item hw_frames_ctx
22686 When using a hardware pixel format, this should be a reference to an
22687 AVHWFramesContext describing input frames.
22688 @end table
22689
22690 For example:
22691 @example
22692 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
22693 @end example
22694
22695 will instruct the source to accept video frames with size 320x240 and
22696 with format "yuv410p", assuming 1/24 as the timestamps timebase and
22697 square pixels (1:1 sample aspect ratio).
22698 Since the pixel format with name "yuv410p" corresponds to the number 6
22699 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
22700 this example corresponds to:
22701 @example
22702 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
22703 @end example
22704
22705 Alternatively, the options can be specified as a flat string, but this
22706 syntax is deprecated:
22707
22708 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
22709
22710 @section cellauto
22711
22712 Create a pattern generated by an elementary cellular automaton.
22713
22714 The initial state of the cellular automaton can be defined through the
22715 @option{filename} and @option{pattern} options. If such options are
22716 not specified an initial state is created randomly.
22717
22718 At each new frame a new row in the video is filled with the result of
22719 the cellular automaton next generation. The behavior when the whole
22720 frame is filled is defined by the @option{scroll} option.
22721
22722 This source accepts the following options:
22723
22724 @table @option
22725 @item filename, f
22726 Read the initial cellular automaton state, i.e. the starting row, from
22727 the specified file.
22728 In the file, each non-whitespace character is considered an alive
22729 cell, a newline will terminate the row, and further characters in the
22730 file will be ignored.
22731
22732 @item pattern, p
22733 Read the initial cellular automaton state, i.e. the starting row, from
22734 the specified string.
22735
22736 Each non-whitespace character in the string is considered an alive
22737 cell, a newline will terminate the row, and further characters in the
22738 string will be ignored.
22739
22740 @item rate, r
22741 Set the video rate, that is the number of frames generated per second.
22742 Default is 25.
22743
22744 @item random_fill_ratio, ratio
22745 Set the random fill ratio for the initial cellular automaton row. It
22746 is a floating point number value ranging from 0 to 1, defaults to
22747 1/PHI.
22748
22749 This option is ignored when a file or a pattern is specified.
22750
22751 @item random_seed, seed
22752 Set the seed for filling randomly the initial row, must be an integer
22753 included between 0 and UINT32_MAX. If not specified, or if explicitly
22754 set to -1, the filter will try to use a good random seed on a best
22755 effort basis.
22756
22757 @item rule
22758 Set the cellular automaton rule, it is a number ranging from 0 to 255.
22759 Default value is 110.
22760
22761 @item size, s
22762 Set the size of the output video. For the syntax of this option, check the
22763 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22764
22765 If @option{filename} or @option{pattern} is specified, the size is set
22766 by default to the width of the specified initial state row, and the
22767 height is set to @var{width} * PHI.
22768
22769 If @option{size} is set, it must contain the width of the specified
22770 pattern string, and the specified pattern will be centered in the
22771 larger row.
22772
22773 If a filename or a pattern string is not specified, the size value
22774 defaults to "320x518" (used for a randomly generated initial state).
22775
22776 @item scroll
22777 If set to 1, scroll the output upward when all the rows in the output
22778 have been already filled. If set to 0, the new generated row will be
22779 written over the top row just after the bottom row is filled.
22780 Defaults to 1.
22781
22782 @item start_full, full
22783 If set to 1, completely fill the output with generated rows before
22784 outputting the first frame.
22785 This is the default behavior, for disabling set the value to 0.
22786
22787 @item stitch
22788 If set to 1, stitch the left and right row edges together.
22789 This is the default behavior, for disabling set the value to 0.
22790 @end table
22791
22792 @subsection Examples
22793
22794 @itemize
22795 @item
22796 Read the initial state from @file{pattern}, and specify an output of
22797 size 200x400.
22798 @example
22799 cellauto=f=pattern:s=200x400
22800 @end example
22801
22802 @item
22803 Generate a random initial row with a width of 200 cells, with a fill
22804 ratio of 2/3:
22805 @example
22806 cellauto=ratio=2/3:s=200x200
22807 @end example
22808
22809 @item
22810 Create a pattern generated by rule 18 starting by a single alive cell
22811 centered on an initial row with width 100:
22812 @example
22813 cellauto=p=@@:s=100x400:full=0:rule=18
22814 @end example
22815
22816 @item
22817 Specify a more elaborated initial pattern:
22818 @example
22819 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
22820 @end example
22821
22822 @end itemize
22823
22824 @anchor{coreimagesrc}
22825 @section coreimagesrc
22826 Video source generated on GPU using Apple's CoreImage API on OSX.
22827
22828 This video source is a specialized version of the @ref{coreimage} video filter.
22829 Use a core image generator at the beginning of the applied filterchain to
22830 generate the content.
22831
22832 The coreimagesrc video source accepts the following options:
22833 @table @option
22834 @item list_generators
22835 List all available generators along with all their respective options as well as
22836 possible minimum and maximum values along with the default values.
22837 @example
22838 list_generators=true
22839 @end example
22840
22841 @item size, s
22842 Specify the size of the sourced video. For the syntax of this option, check the
22843 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22844 The default value is @code{320x240}.
22845
22846 @item rate, r
22847 Specify the frame rate of the sourced video, as the number of frames
22848 generated per second. It has to be a string in the format
22849 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22850 number or a valid video frame rate abbreviation. The default value is
22851 "25".
22852
22853 @item sar
22854 Set the sample aspect ratio of the sourced video.
22855
22856 @item duration, d
22857 Set the duration of the sourced video. See
22858 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22859 for the accepted syntax.
22860
22861 If not specified, or the expressed duration is negative, the video is
22862 supposed to be generated forever.
22863 @end table
22864
22865 Additionally, all options of the @ref{coreimage} video filter are accepted.
22866 A complete filterchain can be used for further processing of the
22867 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
22868 and examples for details.
22869
22870 @subsection Examples
22871
22872 @itemize
22873
22874 @item
22875 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
22876 given as complete and escaped command-line for Apple's standard bash shell:
22877 @example
22878 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
22879 @end example
22880 This example is equivalent to the QRCode example of @ref{coreimage} without the
22881 need for a nullsrc video source.
22882 @end itemize
22883
22884
22885 @section gradients
22886 Generate several gradients.
22887
22888 @table @option
22889 @item size, s
22890 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22891 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22892
22893 @item rate, r
22894 Set frame rate, expressed as number of frames per second. Default
22895 value is "25".
22896
22897 @item c0, c1, c2, c3, c4, c5, c6, c7
22898 Set 8 colors. Default values for colors is to pick random one.
22899
22900 @item x0, y0, y0, y1
22901 Set gradient line source and destination points. If negative or out of range, random ones
22902 are picked.
22903
22904 @item nb_colors, n
22905 Set number of colors to use at once. Allowed range is from 2 to 8. Default value is 2.
22906
22907 @item seed
22908 Set seed for picking gradient line points.
22909
22910 @item duration, d
22911 Set the duration of the sourced video. See
22912 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22913 for the accepted syntax.
22914
22915 If not specified, or the expressed duration is negative, the video is
22916 supposed to be generated forever.
22917
22918 @item speed
22919 Set speed of gradients rotation.
22920 @end table
22921
22922
22923 @section mandelbrot
22924
22925 Generate a Mandelbrot set fractal, and progressively zoom towards the
22926 point specified with @var{start_x} and @var{start_y}.
22927
22928 This source accepts the following options:
22929
22930 @table @option
22931
22932 @item end_pts
22933 Set the terminal pts value. Default value is 400.
22934
22935 @item end_scale
22936 Set the terminal scale value.
22937 Must be a floating point value. Default value is 0.3.
22938
22939 @item inner
22940 Set the inner coloring mode, that is the algorithm used to draw the
22941 Mandelbrot fractal internal region.
22942
22943 It shall assume one of the following values:
22944 @table @option
22945 @item black
22946 Set black mode.
22947 @item convergence
22948 Show time until convergence.
22949 @item mincol
22950 Set color based on point closest to the origin of the iterations.
22951 @item period
22952 Set period mode.
22953 @end table
22954
22955 Default value is @var{mincol}.
22956
22957 @item bailout
22958 Set the bailout value. Default value is 10.0.
22959
22960 @item maxiter
22961 Set the maximum of iterations performed by the rendering
22962 algorithm. Default value is 7189.
22963
22964 @item outer
22965 Set outer coloring mode.
22966 It shall assume one of following values:
22967 @table @option
22968 @item iteration_count
22969 Set iteration count mode.
22970 @item normalized_iteration_count
22971 set normalized iteration count mode.
22972 @end table
22973 Default value is @var{normalized_iteration_count}.
22974
22975 @item rate, r
22976 Set frame rate, expressed as number of frames per second. Default
22977 value is "25".
22978
22979 @item size, s
22980 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22981 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22982
22983 @item start_scale
22984 Set the initial scale value. Default value is 3.0.
22985
22986 @item start_x
22987 Set the initial x position. Must be a floating point value between
22988 -100 and 100. Default value is -0.743643887037158704752191506114774.
22989
22990 @item start_y
22991 Set the initial y position. Must be a floating point value between
22992 -100 and 100. Default value is -0.131825904205311970493132056385139.
22993 @end table
22994
22995 @section mptestsrc
22996
22997 Generate various test patterns, as generated by the MPlayer test filter.
22998
22999 The size of the generated video is fixed, and is 256x256.
23000 This source is useful in particular for testing encoding features.
23001
23002 This source accepts the following options:
23003
23004 @table @option
23005
23006 @item rate, r
23007 Specify the frame rate of the sourced video, as the number of frames
23008 generated per second. It has to be a string in the format
23009 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23010 number or a valid video frame rate abbreviation. The default value is
23011 "25".
23012
23013 @item duration, d
23014 Set the duration of the sourced video. See
23015 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23016 for the accepted syntax.
23017
23018 If not specified, or the expressed duration is negative, the video is
23019 supposed to be generated forever.
23020
23021 @item test, t
23022
23023 Set the number or the name of the test to perform. Supported tests are:
23024 @table @option
23025 @item dc_luma
23026 @item dc_chroma
23027 @item freq_luma
23028 @item freq_chroma
23029 @item amp_luma
23030 @item amp_chroma
23031 @item cbp
23032 @item mv
23033 @item ring1
23034 @item ring2
23035 @item all
23036
23037 @item max_frames, m
23038 Set the maximum number of frames generated for each test, default value is 30.
23039
23040 @end table
23041
23042 Default value is "all", which will cycle through the list of all tests.
23043 @end table
23044
23045 Some examples:
23046 @example
23047 mptestsrc=t=dc_luma
23048 @end example
23049
23050 will generate a "dc_luma" test pattern.
23051
23052 @section frei0r_src
23053
23054 Provide a frei0r source.
23055
23056 To enable compilation of this filter you need to install the frei0r
23057 header and configure FFmpeg with @code{--enable-frei0r}.
23058
23059 This source accepts the following parameters:
23060
23061 @table @option
23062
23063 @item size
23064 The size of the video to generate. For the syntax of this option, check the
23065 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23066
23067 @item framerate
23068 The framerate of the generated video. It may be a string of the form
23069 @var{num}/@var{den} or a frame rate abbreviation.
23070
23071 @item filter_name
23072 The name to the frei0r source to load. For more information regarding frei0r and
23073 how to set the parameters, read the @ref{frei0r} section in the video filters
23074 documentation.
23075
23076 @item filter_params
23077 A '|'-separated list of parameters to pass to the frei0r source.
23078
23079 @end table
23080
23081 For example, to generate a frei0r partik0l source with size 200x200
23082 and frame rate 10 which is overlaid on the overlay filter main input:
23083 @example
23084 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
23085 @end example
23086
23087 @section life
23088
23089 Generate a life pattern.
23090
23091 This source is based on a generalization of John Conway's life game.
23092
23093 The sourced input represents a life grid, each pixel represents a cell
23094 which can be in one of two possible states, alive or dead. Every cell
23095 interacts with its eight neighbours, which are the cells that are
23096 horizontally, vertically, or diagonally adjacent.
23097
23098 At each interaction the grid evolves according to the adopted rule,
23099 which specifies the number of neighbor alive cells which will make a
23100 cell stay alive or born. The @option{rule} option allows one to specify
23101 the rule to adopt.
23102
23103 This source accepts the following options:
23104
23105 @table @option
23106 @item filename, f
23107 Set the file from which to read the initial grid state. In the file,
23108 each non-whitespace character is considered an alive cell, and newline
23109 is used to delimit the end of each row.
23110
23111 If this option is not specified, the initial grid is generated
23112 randomly.
23113
23114 @item rate, r
23115 Set the video rate, that is the number of frames generated per second.
23116 Default is 25.
23117
23118 @item random_fill_ratio, ratio
23119 Set the random fill ratio for the initial random grid. It is a
23120 floating point number value ranging from 0 to 1, defaults to 1/PHI.
23121 It is ignored when a file is specified.
23122
23123 @item random_seed, seed
23124 Set the seed for filling the initial random grid, must be an integer
23125 included between 0 and UINT32_MAX. If not specified, or if explicitly
23126 set to -1, the filter will try to use a good random seed on a best
23127 effort basis.
23128
23129 @item rule
23130 Set the life rule.
23131
23132 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
23133 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
23134 @var{NS} specifies the number of alive neighbor cells which make a
23135 live cell stay alive, and @var{NB} the number of alive neighbor cells
23136 which make a dead cell to become alive (i.e. to "born").
23137 "s" and "b" can be used in place of "S" and "B", respectively.
23138
23139 Alternatively a rule can be specified by an 18-bits integer. The 9
23140 high order bits are used to encode the next cell state if it is alive
23141 for each number of neighbor alive cells, the low order bits specify
23142 the rule for "borning" new cells. Higher order bits encode for an
23143 higher number of neighbor cells.
23144 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
23145 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
23146
23147 Default value is "S23/B3", which is the original Conway's game of life
23148 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
23149 cells, and will born a new cell if there are three alive cells around
23150 a dead cell.
23151
23152 @item size, s
23153 Set the size of the output video. For the syntax of this option, check the
23154 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23155
23156 If @option{filename} is specified, the size is set by default to the
23157 same size of the input file. If @option{size} is set, it must contain
23158 the size specified in the input file, and the initial grid defined in
23159 that file is centered in the larger resulting area.
23160
23161 If a filename is not specified, the size value defaults to "320x240"
23162 (used for a randomly generated initial grid).
23163
23164 @item stitch
23165 If set to 1, stitch the left and right grid edges together, and the
23166 top and bottom edges also. Defaults to 1.
23167
23168 @item mold
23169 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
23170 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
23171 value from 0 to 255.
23172
23173 @item life_color
23174 Set the color of living (or new born) cells.
23175
23176 @item death_color
23177 Set the color of dead cells. If @option{mold} is set, this is the first color
23178 used to represent a dead cell.
23179
23180 @item mold_color
23181 Set mold color, for definitely dead and moldy cells.
23182
23183 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
23184 ffmpeg-utils manual,ffmpeg-utils}.
23185 @end table
23186
23187 @subsection Examples
23188
23189 @itemize
23190 @item
23191 Read a grid from @file{pattern}, and center it on a grid of size
23192 300x300 pixels:
23193 @example
23194 life=f=pattern:s=300x300
23195 @end example
23196
23197 @item
23198 Generate a random grid of size 200x200, with a fill ratio of 2/3:
23199 @example
23200 life=ratio=2/3:s=200x200
23201 @end example
23202
23203 @item
23204 Specify a custom rule for evolving a randomly generated grid:
23205 @example
23206 life=rule=S14/B34
23207 @end example
23208
23209 @item
23210 Full example with slow death effect (mold) using @command{ffplay}:
23211 @example
23212 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
23213 @end example
23214 @end itemize
23215
23216 @anchor{allrgb}
23217 @anchor{allyuv}
23218 @anchor{color}
23219 @anchor{haldclutsrc}
23220 @anchor{nullsrc}
23221 @anchor{pal75bars}
23222 @anchor{pal100bars}
23223 @anchor{rgbtestsrc}
23224 @anchor{smptebars}
23225 @anchor{smptehdbars}
23226 @anchor{testsrc}
23227 @anchor{testsrc2}
23228 @anchor{yuvtestsrc}
23229 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
23230
23231 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
23232
23233 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
23234
23235 The @code{color} source provides an uniformly colored input.
23236
23237 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
23238 @ref{haldclut} filter.
23239
23240 The @code{nullsrc} source returns unprocessed video frames. It is
23241 mainly useful to be employed in analysis / debugging tools, or as the
23242 source for filters which ignore the input data.
23243
23244 The @code{pal75bars} source generates a color bars pattern, based on
23245 EBU PAL recommendations with 75% color levels.
23246
23247 The @code{pal100bars} source generates a color bars pattern, based on
23248 EBU PAL recommendations with 100% color levels.
23249
23250 The @code{rgbtestsrc} source generates an RGB test pattern useful for
23251 detecting RGB vs BGR issues. You should see a red, green and blue
23252 stripe from top to bottom.
23253
23254 The @code{smptebars} source generates a color bars pattern, based on
23255 the SMPTE Engineering Guideline EG 1-1990.
23256
23257 The @code{smptehdbars} source generates a color bars pattern, based on
23258 the SMPTE RP 219-2002.
23259
23260 The @code{testsrc} source generates a test video pattern, showing a
23261 color pattern, a scrolling gradient and a timestamp. This is mainly
23262 intended for testing purposes.
23263
23264 The @code{testsrc2} source is similar to testsrc, but supports more
23265 pixel formats instead of just @code{rgb24}. This allows using it as an
23266 input for other tests without requiring a format conversion.
23267
23268 The @code{yuvtestsrc} source generates an YUV test pattern. You should
23269 see a y, cb and cr stripe from top to bottom.
23270
23271 The sources accept the following parameters:
23272
23273 @table @option
23274
23275 @item level
23276 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
23277 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
23278 pixels to be used as identity matrix for 3D lookup tables. Each component is
23279 coded on a @code{1/(N*N)} scale.
23280
23281 @item color, c
23282 Specify the color of the source, only available in the @code{color}
23283 source. For the syntax of this option, check the
23284 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
23285
23286 @item size, s
23287 Specify the size of the sourced video. For the syntax of this option, check the
23288 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23289 The default value is @code{320x240}.
23290
23291 This option is not available with the @code{allrgb}, @code{allyuv}, and
23292 @code{haldclutsrc} filters.
23293
23294 @item rate, r
23295 Specify the frame rate of the sourced video, as the number of frames
23296 generated per second. It has to be a string in the format
23297 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23298 number or a valid video frame rate abbreviation. The default value is
23299 "25".
23300
23301 @item duration, d
23302 Set the duration of the sourced video. See
23303 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23304 for the accepted syntax.
23305
23306 If not specified, or the expressed duration is negative, the video is
23307 supposed to be generated forever.
23308
23309 Since the frame rate is used as time base, all frames including the last one
23310 will have their full duration. If the specified duration is not a multiple
23311 of the frame duration, it will be rounded up.
23312
23313 @item sar
23314 Set the sample aspect ratio of the sourced video.
23315
23316 @item alpha
23317 Specify the alpha (opacity) of the background, only available in the
23318 @code{testsrc2} source. The value must be between 0 (fully transparent) and
23319 255 (fully opaque, the default).
23320
23321 @item decimals, n
23322 Set the number of decimals to show in the timestamp, only available in the
23323 @code{testsrc} source.
23324
23325 The displayed timestamp value will correspond to the original
23326 timestamp value multiplied by the power of 10 of the specified
23327 value. Default value is 0.
23328 @end table
23329
23330 @subsection Examples
23331
23332 @itemize
23333 @item
23334 Generate a video with a duration of 5.3 seconds, with size
23335 176x144 and a frame rate of 10 frames per second:
23336 @example
23337 testsrc=duration=5.3:size=qcif:rate=10
23338 @end example
23339
23340 @item
23341 The following graph description will generate a red source
23342 with an opacity of 0.2, with size "qcif" and a frame rate of 10
23343 frames per second:
23344 @example
23345 color=c=red@@0.2:s=qcif:r=10
23346 @end example
23347
23348 @item
23349 If the input content is to be ignored, @code{nullsrc} can be used. The
23350 following command generates noise in the luminance plane by employing
23351 the @code{geq} filter:
23352 @example
23353 nullsrc=s=256x256, geq=random(1)*255:128:128
23354 @end example
23355 @end itemize
23356
23357 @subsection Commands
23358
23359 The @code{color} source supports the following commands:
23360
23361 @table @option
23362 @item c, color
23363 Set the color of the created image. Accepts the same syntax of the
23364 corresponding @option{color} option.
23365 @end table
23366
23367 @section openclsrc
23368
23369 Generate video using an OpenCL program.
23370
23371 @table @option
23372
23373 @item source
23374 OpenCL program source file.
23375
23376 @item kernel
23377 Kernel name in program.
23378
23379 @item size, s
23380 Size of frames to generate.  This must be set.
23381
23382 @item format
23383 Pixel format to use for the generated frames.  This must be set.
23384
23385 @item rate, r
23386 Number of frames generated every second.  Default value is '25'.
23387
23388 @end table
23389
23390 For details of how the program loading works, see the @ref{program_opencl}
23391 filter.
23392
23393 Example programs:
23394
23395 @itemize
23396 @item
23397 Generate a colour ramp by setting pixel values from the position of the pixel
23398 in the output image.  (Note that this will work with all pixel formats, but
23399 the generated output will not be the same.)
23400 @verbatim
23401 __kernel void ramp(__write_only image2d_t dst,
23402                    unsigned int index)
23403 {
23404     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23405
23406     float4 val;
23407     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
23408
23409     write_imagef(dst, loc, val);
23410 }
23411 @end verbatim
23412
23413 @item
23414 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
23415 @verbatim
23416 __kernel void sierpinski_carpet(__write_only image2d_t dst,
23417                                 unsigned int index)
23418 {
23419     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23420
23421     float4 value = 0.0f;
23422     int x = loc.x + index;
23423     int y = loc.y + index;
23424     while (x > 0 || y > 0) {
23425         if (x % 3 == 1 && y % 3 == 1) {
23426             value = 1.0f;
23427             break;
23428         }
23429         x /= 3;
23430         y /= 3;
23431     }
23432
23433     write_imagef(dst, loc, value);
23434 }
23435 @end verbatim
23436
23437 @end itemize
23438
23439 @section sierpinski
23440
23441 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
23442
23443 This source accepts the following options:
23444
23445 @table @option
23446 @item size, s
23447 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23448 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23449
23450 @item rate, r
23451 Set frame rate, expressed as number of frames per second. Default
23452 value is "25".
23453
23454 @item seed
23455 Set seed which is used for random panning.
23456
23457 @item jump
23458 Set max jump for single pan destination. Allowed range is from 1 to 10000.
23459
23460 @item type
23461 Set fractal type, can be default @code{carpet} or @code{triangle}.
23462 @end table
23463
23464 @c man end VIDEO SOURCES
23465
23466 @chapter Video Sinks
23467 @c man begin VIDEO SINKS
23468
23469 Below is a description of the currently available video sinks.
23470
23471 @section buffersink
23472
23473 Buffer video frames, and make them available to the end of the filter
23474 graph.
23475
23476 This sink is mainly intended for programmatic use, in particular
23477 through the interface defined in @file{libavfilter/buffersink.h}
23478 or the options system.
23479
23480 It accepts a pointer to an AVBufferSinkContext structure, which
23481 defines the incoming buffers' formats, to be passed as the opaque
23482 parameter to @code{avfilter_init_filter} for initialization.
23483
23484 @section nullsink
23485
23486 Null video sink: do absolutely nothing with the input video. It is
23487 mainly useful as a template and for use in analysis / debugging
23488 tools.
23489
23490 @c man end VIDEO SINKS
23491
23492 @chapter Multimedia Filters
23493 @c man begin MULTIMEDIA FILTERS
23494
23495 Below is a description of the currently available multimedia filters.
23496
23497 @section abitscope
23498
23499 Convert input audio to a video output, displaying the audio bit scope.
23500
23501 The filter accepts the following options:
23502
23503 @table @option
23504 @item rate, r
23505 Set frame rate, expressed as number of frames per second. Default
23506 value is "25".
23507
23508 @item size, s
23509 Specify the video size for the output. For the syntax of this option, check the
23510 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23511 Default value is @code{1024x256}.
23512
23513 @item colors
23514 Specify list of colors separated by space or by '|' which will be used to
23515 draw channels. Unrecognized or missing colors will be replaced
23516 by white color.
23517 @end table
23518
23519 @section adrawgraph
23520 Draw a graph using input audio metadata.
23521
23522 See @ref{drawgraph}
23523
23524 @section agraphmonitor
23525
23526 See @ref{graphmonitor}.
23527
23528 @section ahistogram
23529
23530 Convert input audio to a video output, displaying the volume histogram.
23531
23532 The filter accepts the following options:
23533
23534 @table @option
23535 @item dmode
23536 Specify how histogram is calculated.
23537
23538 It accepts the following values:
23539 @table @samp
23540 @item single
23541 Use single histogram for all channels.
23542 @item separate
23543 Use separate histogram for each channel.
23544 @end table
23545 Default is @code{single}.
23546
23547 @item rate, r
23548 Set frame rate, expressed as number of frames per second. Default
23549 value is "25".
23550
23551 @item size, s
23552 Specify the video size for the output. For the syntax of this option, check the
23553 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23554 Default value is @code{hd720}.
23555
23556 @item scale
23557 Set display scale.
23558
23559 It accepts the following values:
23560 @table @samp
23561 @item log
23562 logarithmic
23563 @item sqrt
23564 square root
23565 @item cbrt
23566 cubic root
23567 @item lin
23568 linear
23569 @item rlog
23570 reverse logarithmic
23571 @end table
23572 Default is @code{log}.
23573
23574 @item ascale
23575 Set amplitude scale.
23576
23577 It accepts the following values:
23578 @table @samp
23579 @item log
23580 logarithmic
23581 @item lin
23582 linear
23583 @end table
23584 Default is @code{log}.
23585
23586 @item acount
23587 Set how much frames to accumulate in histogram.
23588 Default is 1. Setting this to -1 accumulates all frames.
23589
23590 @item rheight
23591 Set histogram ratio of window height.
23592
23593 @item slide
23594 Set sonogram sliding.
23595
23596 It accepts the following values:
23597 @table @samp
23598 @item replace
23599 replace old rows with new ones.
23600 @item scroll
23601 scroll from top to bottom.
23602 @end table
23603 Default is @code{replace}.
23604 @end table
23605
23606 @section aphasemeter
23607
23608 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
23609 representing mean phase of current audio frame. A video output can also be produced and is
23610 enabled by default. The audio is passed through as first output.
23611
23612 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
23613 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
23614 and @code{1} means channels are in phase.
23615
23616 The filter accepts the following options, all related to its video output:
23617
23618 @table @option
23619 @item rate, r
23620 Set the output frame rate. Default value is @code{25}.
23621
23622 @item size, s
23623 Set the video size for the output. For the syntax of this option, check the
23624 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23625 Default value is @code{800x400}.
23626
23627 @item rc
23628 @item gc
23629 @item bc
23630 Specify the red, green, blue contrast. Default values are @code{2},
23631 @code{7} and @code{1}.
23632 Allowed range is @code{[0, 255]}.
23633
23634 @item mpc
23635 Set color which will be used for drawing median phase. If color is
23636 @code{none} which is default, no median phase value will be drawn.
23637
23638 @item video
23639 Enable video output. Default is enabled.
23640 @end table
23641
23642 @subsection phasing detection
23643
23644 The filter also detects out of phase and mono sequences in stereo streams.
23645 It logs the sequence start, end and duration when it lasts longer or as long as the minimum set.
23646
23647 The filter accepts the following options for this detection:
23648
23649 @table @option
23650 @item phasing
23651 Enable mono and out of phase detection. Default is disabled.
23652
23653 @item tolerance, t
23654 Set phase tolerance for mono detection, in amplitude ratio. Default is @code{0}.
23655 Allowed range is @code{[0, 1]}.
23656
23657 @item angle, a
23658 Set angle threshold for out of phase detection, in degree. Default is @code{170}.
23659 Allowed range is @code{[90, 180]}.
23660
23661 @item duration, d
23662 Set mono or out of phase duration until notification, expressed in seconds. Default is @code{2}.
23663 @end table
23664
23665 @subsection Examples
23666
23667 @itemize
23668 @item
23669 Complete example with @command{ffmpeg} to detect 1 second of mono with 0.001 phase tolerance:
23670 @example
23671 ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
23672 @end example
23673 @end itemize
23674
23675 @section avectorscope
23676
23677 Convert input audio to a video output, representing the audio vector
23678 scope.
23679
23680 The filter is used to measure the difference between channels of stereo
23681 audio stream. A monaural signal, consisting of identical left and right
23682 signal, results in straight vertical line. Any stereo separation is visible
23683 as a deviation from this line, creating a Lissajous figure.
23684 If the straight (or deviation from it) but horizontal line appears this
23685 indicates that the left and right channels are out of phase.
23686
23687 The filter accepts the following options:
23688
23689 @table @option
23690 @item mode, m
23691 Set the vectorscope mode.
23692
23693 Available values are:
23694 @table @samp
23695 @item lissajous
23696 Lissajous rotated by 45 degrees.
23697
23698 @item lissajous_xy
23699 Same as above but not rotated.
23700
23701 @item polar
23702 Shape resembling half of circle.
23703 @end table
23704
23705 Default value is @samp{lissajous}.
23706
23707 @item size, s
23708 Set the video size for the output. For the syntax of this option, check the
23709 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23710 Default value is @code{400x400}.
23711
23712 @item rate, r
23713 Set the output frame rate. Default value is @code{25}.
23714
23715 @item rc
23716 @item gc
23717 @item bc
23718 @item ac
23719 Specify the red, green, blue and alpha contrast. Default values are @code{40},
23720 @code{160}, @code{80} and @code{255}.
23721 Allowed range is @code{[0, 255]}.
23722
23723 @item rf
23724 @item gf
23725 @item bf
23726 @item af
23727 Specify the red, green, blue and alpha fade. Default values are @code{15},
23728 @code{10}, @code{5} and @code{5}.
23729 Allowed range is @code{[0, 255]}.
23730
23731 @item zoom
23732 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
23733 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
23734
23735 @item draw
23736 Set the vectorscope drawing mode.
23737
23738 Available values are:
23739 @table @samp
23740 @item dot
23741 Draw dot for each sample.
23742
23743 @item line
23744 Draw line between previous and current sample.
23745 @end table
23746
23747 Default value is @samp{dot}.
23748
23749 @item scale
23750 Specify amplitude scale of audio samples.
23751
23752 Available values are:
23753 @table @samp
23754 @item lin
23755 Linear.
23756
23757 @item sqrt
23758 Square root.
23759
23760 @item cbrt
23761 Cubic root.
23762
23763 @item log
23764 Logarithmic.
23765 @end table
23766
23767 @item swap
23768 Swap left channel axis with right channel axis.
23769
23770 @item mirror
23771 Mirror axis.
23772
23773 @table @samp
23774 @item none
23775 No mirror.
23776
23777 @item x
23778 Mirror only x axis.
23779
23780 @item y
23781 Mirror only y axis.
23782
23783 @item xy
23784 Mirror both axis.
23785 @end table
23786
23787 @end table
23788
23789 @subsection Examples
23790
23791 @itemize
23792 @item
23793 Complete example using @command{ffplay}:
23794 @example
23795 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
23796              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
23797 @end example
23798 @end itemize
23799
23800 @section bench, abench
23801
23802 Benchmark part of a filtergraph.
23803
23804 The filter accepts the following options:
23805
23806 @table @option
23807 @item action
23808 Start or stop a timer.
23809
23810 Available values are:
23811 @table @samp
23812 @item start
23813 Get the current time, set it as frame metadata (using the key
23814 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
23815
23816 @item stop
23817 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
23818 the input frame metadata to get the time difference. Time difference, average,
23819 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
23820 @code{min}) are then printed. The timestamps are expressed in seconds.
23821 @end table
23822 @end table
23823
23824 @subsection Examples
23825
23826 @itemize
23827 @item
23828 Benchmark @ref{selectivecolor} filter:
23829 @example
23830 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
23831 @end example
23832 @end itemize
23833
23834 @section concat
23835
23836 Concatenate audio and video streams, joining them together one after the
23837 other.
23838
23839 The filter works on segments of synchronized video and audio streams. All
23840 segments must have the same number of streams of each type, and that will
23841 also be the number of streams at output.
23842
23843 The filter accepts the following options:
23844
23845 @table @option
23846
23847 @item n
23848 Set the number of segments. Default is 2.
23849
23850 @item v
23851 Set the number of output video streams, that is also the number of video
23852 streams in each segment. Default is 1.
23853
23854 @item a
23855 Set the number of output audio streams, that is also the number of audio
23856 streams in each segment. Default is 0.
23857
23858 @item unsafe
23859 Activate unsafe mode: do not fail if segments have a different format.
23860
23861 @end table
23862
23863 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
23864 @var{a} audio outputs.
23865
23866 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
23867 segment, in the same order as the outputs, then the inputs for the second
23868 segment, etc.
23869
23870 Related streams do not always have exactly the same duration, for various
23871 reasons including codec frame size or sloppy authoring. For that reason,
23872 related synchronized streams (e.g. a video and its audio track) should be
23873 concatenated at once. The concat filter will use the duration of the longest
23874 stream in each segment (except the last one), and if necessary pad shorter
23875 audio streams with silence.
23876
23877 For this filter to work correctly, all segments must start at timestamp 0.
23878
23879 All corresponding streams must have the same parameters in all segments; the
23880 filtering system will automatically select a common pixel format for video
23881 streams, and a common sample format, sample rate and channel layout for
23882 audio streams, but other settings, such as resolution, must be converted
23883 explicitly by the user.
23884
23885 Different frame rates are acceptable but will result in variable frame rate
23886 at output; be sure to configure the output file to handle it.
23887
23888 @subsection Examples
23889
23890 @itemize
23891 @item
23892 Concatenate an opening, an episode and an ending, all in bilingual version
23893 (video in stream 0, audio in streams 1 and 2):
23894 @example
23895 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
23896   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
23897    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
23898   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
23899 @end example
23900
23901 @item
23902 Concatenate two parts, handling audio and video separately, using the
23903 (a)movie sources, and adjusting the resolution:
23904 @example
23905 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
23906 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
23907 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
23908 @end example
23909 Note that a desync will happen at the stitch if the audio and video streams
23910 do not have exactly the same duration in the first file.
23911
23912 @end itemize
23913
23914 @subsection Commands
23915
23916 This filter supports the following commands:
23917 @table @option
23918 @item next
23919 Close the current segment and step to the next one
23920 @end table
23921
23922 @anchor{ebur128}
23923 @section ebur128
23924
23925 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
23926 level. By default, it logs a message at a frequency of 10Hz with the
23927 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
23928 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
23929
23930 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
23931 sample format is double-precision floating point. The input stream will be converted to
23932 this specification, if needed. Users may need to insert aformat and/or aresample filters
23933 after this filter to obtain the original parameters.
23934
23935 The filter also has a video output (see the @var{video} option) with a real
23936 time graph to observe the loudness evolution. The graphic contains the logged
23937 message mentioned above, so it is not printed anymore when this option is set,
23938 unless the verbose logging is set. The main graphing area contains the
23939 short-term loudness (3 seconds of analysis), and the gauge on the right is for
23940 the momentary loudness (400 milliseconds), but can optionally be configured
23941 to instead display short-term loudness (see @var{gauge}).
23942
23943 The green area marks a  +/- 1LU target range around the target loudness
23944 (-23LUFS by default, unless modified through @var{target}).
23945
23946 More information about the Loudness Recommendation EBU R128 on
23947 @url{http://tech.ebu.ch/loudness}.
23948
23949 The filter accepts the following options:
23950
23951 @table @option
23952
23953 @item video
23954 Activate the video output. The audio stream is passed unchanged whether this
23955 option is set or no. The video stream will be the first output stream if
23956 activated. Default is @code{0}.
23957
23958 @item size
23959 Set the video size. This option is for video only. For the syntax of this
23960 option, check the
23961 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23962 Default and minimum resolution is @code{640x480}.
23963
23964 @item meter
23965 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
23966 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
23967 other integer value between this range is allowed.
23968
23969 @item metadata
23970 Set metadata injection. If set to @code{1}, the audio input will be segmented
23971 into 100ms output frames, each of them containing various loudness information
23972 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
23973
23974 Default is @code{0}.
23975
23976 @item framelog
23977 Force the frame logging level.
23978
23979 Available values are:
23980 @table @samp
23981 @item info
23982 information logging level
23983 @item verbose
23984 verbose logging level
23985 @end table
23986
23987 By default, the logging level is set to @var{info}. If the @option{video} or
23988 the @option{metadata} options are set, it switches to @var{verbose}.
23989
23990 @item peak
23991 Set peak mode(s).
23992
23993 Available modes can be cumulated (the option is a @code{flag} type). Possible
23994 values are:
23995 @table @samp
23996 @item none
23997 Disable any peak mode (default).
23998 @item sample
23999 Enable sample-peak mode.
24000
24001 Simple peak mode looking for the higher sample value. It logs a message
24002 for sample-peak (identified by @code{SPK}).
24003 @item true
24004 Enable true-peak mode.
24005
24006 If enabled, the peak lookup is done on an over-sampled version of the input
24007 stream for better peak accuracy. It logs a message for true-peak.
24008 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
24009 This mode requires a build with @code{libswresample}.
24010 @end table
24011
24012 @item dualmono
24013 Treat mono input files as "dual mono". If a mono file is intended for playback
24014 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
24015 If set to @code{true}, this option will compensate for this effect.
24016 Multi-channel input files are not affected by this option.
24017
24018 @item panlaw
24019 Set a specific pan law to be used for the measurement of dual mono files.
24020 This parameter is optional, and has a default value of -3.01dB.
24021
24022 @item target
24023 Set a specific target level (in LUFS) used as relative zero in the visualization.
24024 This parameter is optional and has a default value of -23LUFS as specified
24025 by EBU R128. However, material published online may prefer a level of -16LUFS
24026 (e.g. for use with podcasts or video platforms).
24027
24028 @item gauge
24029 Set the value displayed by the gauge. Valid values are @code{momentary} and s
24030 @code{shortterm}. By default the momentary value will be used, but in certain
24031 scenarios it may be more useful to observe the short term value instead (e.g.
24032 live mixing).
24033
24034 @item scale
24035 Sets the display scale for the loudness. Valid parameters are @code{absolute}
24036 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
24037 video output, not the summary or continuous log output.
24038 @end table
24039
24040 @subsection Examples
24041
24042 @itemize
24043 @item
24044 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
24045 @example
24046 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
24047 @end example
24048
24049 @item
24050 Run an analysis with @command{ffmpeg}:
24051 @example
24052 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
24053 @end example
24054 @end itemize
24055
24056 @section interleave, ainterleave
24057
24058 Temporally interleave frames from several inputs.
24059
24060 @code{interleave} works with video inputs, @code{ainterleave} with audio.
24061
24062 These filters read frames from several inputs and send the oldest
24063 queued frame to the output.
24064
24065 Input streams must have well defined, monotonically increasing frame
24066 timestamp values.
24067
24068 In order to submit one frame to output, these filters need to enqueue
24069 at least one frame for each input, so they cannot work in case one
24070 input is not yet terminated and will not receive incoming frames.
24071
24072 For example consider the case when one input is a @code{select} filter
24073 which always drops input frames. The @code{interleave} filter will keep
24074 reading from that input, but it will never be able to send new frames
24075 to output until the input sends an end-of-stream signal.
24076
24077 Also, depending on inputs synchronization, the filters will drop
24078 frames in case one input receives more frames than the other ones, and
24079 the queue is already filled.
24080
24081 These filters accept the following options:
24082
24083 @table @option
24084 @item nb_inputs, n
24085 Set the number of different inputs, it is 2 by default.
24086
24087 @item duration
24088 How to determine the end-of-stream.
24089
24090 @table @option
24091 @item longest
24092 The duration of the longest input. (default)
24093
24094 @item shortest
24095 The duration of the shortest input.
24096
24097 @item first
24098 The duration of the first input.
24099 @end table
24100
24101 @end table
24102
24103 @subsection Examples
24104
24105 @itemize
24106 @item
24107 Interleave frames belonging to different streams using @command{ffmpeg}:
24108 @example
24109 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
24110 @end example
24111
24112 @item
24113 Add flickering blur effect:
24114 @example
24115 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
24116 @end example
24117 @end itemize
24118
24119 @section metadata, ametadata
24120
24121 Manipulate frame metadata.
24122
24123 This filter accepts the following options:
24124
24125 @table @option
24126 @item mode
24127 Set mode of operation of the filter.
24128
24129 Can be one of the following:
24130
24131 @table @samp
24132 @item select
24133 If both @code{value} and @code{key} is set, select frames
24134 which have such metadata. If only @code{key} is set, select
24135 every frame that has such key in metadata.
24136
24137 @item add
24138 Add new metadata @code{key} and @code{value}. If key is already available
24139 do nothing.
24140
24141 @item modify
24142 Modify value of already present key.
24143
24144 @item delete
24145 If @code{value} is set, delete only keys that have such value.
24146 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
24147 the frame.
24148
24149 @item print
24150 Print key and its value if metadata was found. If @code{key} is not set print all
24151 metadata values available in frame.
24152 @end table
24153
24154 @item key
24155 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
24156
24157 @item value
24158 Set metadata value which will be used. This option is mandatory for
24159 @code{modify} and @code{add} mode.
24160
24161 @item function
24162 Which function to use when comparing metadata value and @code{value}.
24163
24164 Can be one of following:
24165
24166 @table @samp
24167 @item same_str
24168 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
24169
24170 @item starts_with
24171 Values are interpreted as strings, returns true if metadata value starts with
24172 the @code{value} option string.
24173
24174 @item less
24175 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
24176
24177 @item equal
24178 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
24179
24180 @item greater
24181 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
24182
24183 @item expr
24184 Values are interpreted as floats, returns true if expression from option @code{expr}
24185 evaluates to true.
24186
24187 @item ends_with
24188 Values are interpreted as strings, returns true if metadata value ends with
24189 the @code{value} option string.
24190 @end table
24191
24192 @item expr
24193 Set expression which is used when @code{function} is set to @code{expr}.
24194 The expression is evaluated through the eval API and can contain the following
24195 constants:
24196
24197 @table @option
24198 @item VALUE1
24199 Float representation of @code{value} from metadata key.
24200
24201 @item VALUE2
24202 Float representation of @code{value} as supplied by user in @code{value} option.
24203 @end table
24204
24205 @item file
24206 If specified in @code{print} mode, output is written to the named file. Instead of
24207 plain filename any writable url can be specified. Filename ``-'' is a shorthand
24208 for standard output. If @code{file} option is not set, output is written to the log
24209 with AV_LOG_INFO loglevel.
24210
24211 @item direct
24212 Reduces buffering in print mode when output is written to a URL set using @var{file}.
24213
24214 @end table
24215
24216 @subsection Examples
24217
24218 @itemize
24219 @item
24220 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
24221 between 0 and 1.
24222 @example
24223 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
24224 @end example
24225 @item
24226 Print silencedetect output to file @file{metadata.txt}.
24227 @example
24228 silencedetect,ametadata=mode=print:file=metadata.txt
24229 @end example
24230 @item
24231 Direct all metadata to a pipe with file descriptor 4.
24232 @example
24233 metadata=mode=print:file='pipe\:4'
24234 @end example
24235 @end itemize
24236
24237 @section perms, aperms
24238
24239 Set read/write permissions for the output frames.
24240
24241 These filters are mainly aimed at developers to test direct path in the
24242 following filter in the filtergraph.
24243
24244 The filters accept the following options:
24245
24246 @table @option
24247 @item mode
24248 Select the permissions mode.
24249
24250 It accepts the following values:
24251 @table @samp
24252 @item none
24253 Do nothing. This is the default.
24254 @item ro
24255 Set all the output frames read-only.
24256 @item rw
24257 Set all the output frames directly writable.
24258 @item toggle
24259 Make the frame read-only if writable, and writable if read-only.
24260 @item random
24261 Set each output frame read-only or writable randomly.
24262 @end table
24263
24264 @item seed
24265 Set the seed for the @var{random} mode, must be an integer included between
24266 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
24267 @code{-1}, the filter will try to use a good random seed on a best effort
24268 basis.
24269 @end table
24270
24271 Note: in case of auto-inserted filter between the permission filter and the
24272 following one, the permission might not be received as expected in that
24273 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
24274 perms/aperms filter can avoid this problem.
24275
24276 @section realtime, arealtime
24277
24278 Slow down filtering to match real time approximately.
24279
24280 These filters will pause the filtering for a variable amount of time to
24281 match the output rate with the input timestamps.
24282 They are similar to the @option{re} option to @code{ffmpeg}.
24283
24284 They accept the following options:
24285
24286 @table @option
24287 @item limit
24288 Time limit for the pauses. Any pause longer than that will be considered
24289 a timestamp discontinuity and reset the timer. Default is 2 seconds.
24290 @item speed
24291 Speed factor for processing. The value must be a float larger than zero.
24292 Values larger than 1.0 will result in faster than realtime processing,
24293 smaller will slow processing down. The @var{limit} is automatically adapted
24294 accordingly. Default is 1.0.
24295
24296 A processing speed faster than what is possible without these filters cannot
24297 be achieved.
24298 @end table
24299
24300 @anchor{select}
24301 @section select, aselect
24302
24303 Select frames to pass in output.
24304
24305 This filter accepts the following options:
24306
24307 @table @option
24308
24309 @item expr, e
24310 Set expression, which is evaluated for each input frame.
24311
24312 If the expression is evaluated to zero, the frame is discarded.
24313
24314 If the evaluation result is negative or NaN, the frame is sent to the
24315 first output; otherwise it is sent to the output with index
24316 @code{ceil(val)-1}, assuming that the input index starts from 0.
24317
24318 For example a value of @code{1.2} corresponds to the output with index
24319 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
24320
24321 @item outputs, n
24322 Set the number of outputs. The output to which to send the selected
24323 frame is based on the result of the evaluation. Default value is 1.
24324 @end table
24325
24326 The expression can contain the following constants:
24327
24328 @table @option
24329 @item n
24330 The (sequential) number of the filtered frame, starting from 0.
24331
24332 @item selected_n
24333 The (sequential) number of the selected frame, starting from 0.
24334
24335 @item prev_selected_n
24336 The sequential number of the last selected frame. It's NAN if undefined.
24337
24338 @item TB
24339 The timebase of the input timestamps.
24340
24341 @item pts
24342 The PTS (Presentation TimeStamp) of the filtered video frame,
24343 expressed in @var{TB} units. It's NAN if undefined.
24344
24345 @item t
24346 The PTS of the filtered video frame,
24347 expressed in seconds. It's NAN if undefined.
24348
24349 @item prev_pts
24350 The PTS of the previously filtered video frame. It's NAN if undefined.
24351
24352 @item prev_selected_pts
24353 The PTS of the last previously filtered video frame. It's NAN if undefined.
24354
24355 @item prev_selected_t
24356 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
24357
24358 @item start_pts
24359 The PTS of the first video frame in the video. It's NAN if undefined.
24360
24361 @item start_t
24362 The time of the first video frame in the video. It's NAN if undefined.
24363
24364 @item pict_type @emph{(video only)}
24365 The type of the filtered frame. It can assume one of the following
24366 values:
24367 @table @option
24368 @item I
24369 @item P
24370 @item B
24371 @item S
24372 @item SI
24373 @item SP
24374 @item BI
24375 @end table
24376
24377 @item interlace_type @emph{(video only)}
24378 The frame interlace type. It can assume one of the following values:
24379 @table @option
24380 @item PROGRESSIVE
24381 The frame is progressive (not interlaced).
24382 @item TOPFIRST
24383 The frame is top-field-first.
24384 @item BOTTOMFIRST
24385 The frame is bottom-field-first.
24386 @end table
24387
24388 @item consumed_sample_n @emph{(audio only)}
24389 the number of selected samples before the current frame
24390
24391 @item samples_n @emph{(audio only)}
24392 the number of samples in the current frame
24393
24394 @item sample_rate @emph{(audio only)}
24395 the input sample rate
24396
24397 @item key
24398 This is 1 if the filtered frame is a key-frame, 0 otherwise.
24399
24400 @item pos
24401 the position in the file of the filtered frame, -1 if the information
24402 is not available (e.g. for synthetic video)
24403
24404 @item scene @emph{(video only)}
24405 value between 0 and 1 to indicate a new scene; a low value reflects a low
24406 probability for the current frame to introduce a new scene, while a higher
24407 value means the current frame is more likely to be one (see the example below)
24408
24409 @item concatdec_select
24410 The concat demuxer can select only part of a concat input file by setting an
24411 inpoint and an outpoint, but the output packets may not be entirely contained
24412 in the selected interval. By using this variable, it is possible to skip frames
24413 generated by the concat demuxer which are not exactly contained in the selected
24414 interval.
24415
24416 This works by comparing the frame pts against the @var{lavf.concat.start_time}
24417 and the @var{lavf.concat.duration} packet metadata values which are also
24418 present in the decoded frames.
24419
24420 The @var{concatdec_select} variable is -1 if the frame pts is at least
24421 start_time and either the duration metadata is missing or the frame pts is less
24422 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
24423 missing.
24424
24425 That basically means that an input frame is selected if its pts is within the
24426 interval set by the concat demuxer.
24427
24428 @end table
24429
24430 The default value of the select expression is "1".
24431
24432 @subsection Examples
24433
24434 @itemize
24435 @item
24436 Select all frames in input:
24437 @example
24438 select
24439 @end example
24440
24441 The example above is the same as:
24442 @example
24443 select=1
24444 @end example
24445
24446 @item
24447 Skip all frames:
24448 @example
24449 select=0
24450 @end example
24451
24452 @item
24453 Select only I-frames:
24454 @example
24455 select='eq(pict_type\,I)'
24456 @end example
24457
24458 @item
24459 Select one frame every 100:
24460 @example
24461 select='not(mod(n\,100))'
24462 @end example
24463
24464 @item
24465 Select only frames contained in the 10-20 time interval:
24466 @example
24467 select=between(t\,10\,20)
24468 @end example
24469
24470 @item
24471 Select only I-frames contained in the 10-20 time interval:
24472 @example
24473 select=between(t\,10\,20)*eq(pict_type\,I)
24474 @end example
24475
24476 @item
24477 Select frames with a minimum distance of 10 seconds:
24478 @example
24479 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
24480 @end example
24481
24482 @item
24483 Use aselect to select only audio frames with samples number > 100:
24484 @example
24485 aselect='gt(samples_n\,100)'
24486 @end example
24487
24488 @item
24489 Create a mosaic of the first scenes:
24490 @example
24491 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
24492 @end example
24493
24494 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
24495 choice.
24496
24497 @item
24498 Send even and odd frames to separate outputs, and compose them:
24499 @example
24500 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
24501 @end example
24502
24503 @item
24504 Select useful frames from an ffconcat file which is using inpoints and
24505 outpoints but where the source files are not intra frame only.
24506 @example
24507 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
24508 @end example
24509 @end itemize
24510
24511 @section sendcmd, asendcmd
24512
24513 Send commands to filters in the filtergraph.
24514
24515 These filters read commands to be sent to other filters in the
24516 filtergraph.
24517
24518 @code{sendcmd} must be inserted between two video filters,
24519 @code{asendcmd} must be inserted between two audio filters, but apart
24520 from that they act the same way.
24521
24522 The specification of commands can be provided in the filter arguments
24523 with the @var{commands} option, or in a file specified by the
24524 @var{filename} option.
24525
24526 These filters accept the following options:
24527 @table @option
24528 @item commands, c
24529 Set the commands to be read and sent to the other filters.
24530 @item filename, f
24531 Set the filename of the commands to be read and sent to the other
24532 filters.
24533 @end table
24534
24535 @subsection Commands syntax
24536
24537 A commands description consists of a sequence of interval
24538 specifications, comprising a list of commands to be executed when a
24539 particular event related to that interval occurs. The occurring event
24540 is typically the current frame time entering or leaving a given time
24541 interval.
24542
24543 An interval is specified by the following syntax:
24544 @example
24545 @var{START}[-@var{END}] @var{COMMANDS};
24546 @end example
24547
24548 The time interval is specified by the @var{START} and @var{END} times.
24549 @var{END} is optional and defaults to the maximum time.
24550
24551 The current frame time is considered within the specified interval if
24552 it is included in the interval [@var{START}, @var{END}), that is when
24553 the time is greater or equal to @var{START} and is lesser than
24554 @var{END}.
24555
24556 @var{COMMANDS} consists of a sequence of one or more command
24557 specifications, separated by ",", relating to that interval.  The
24558 syntax of a command specification is given by:
24559 @example
24560 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
24561 @end example
24562
24563 @var{FLAGS} is optional and specifies the type of events relating to
24564 the time interval which enable sending the specified command, and must
24565 be a non-null sequence of identifier flags separated by "+" or "|" and
24566 enclosed between "[" and "]".
24567
24568 The following flags are recognized:
24569 @table @option
24570 @item enter
24571 The command is sent when the current frame timestamp enters the
24572 specified interval. In other words, the command is sent when the
24573 previous frame timestamp was not in the given interval, and the
24574 current is.
24575
24576 @item leave
24577 The command is sent when the current frame timestamp leaves the
24578 specified interval. In other words, the command is sent when the
24579 previous frame timestamp was in the given interval, and the
24580 current is not.
24581
24582 @item expr
24583 The command @var{ARG} is interpreted as expression and result of
24584 expression is passed as @var{ARG}.
24585
24586 The expression is evaluated through the eval API and can contain the following
24587 constants:
24588
24589 @table @option
24590 @item POS
24591 Original position in the file of the frame, or undefined if undefined
24592 for the current frame.
24593
24594 @item PTS
24595 The presentation timestamp in input.
24596
24597 @item N
24598 The count of the input frame for video or audio, starting from 0.
24599
24600 @item T
24601 The time in seconds of the current frame.
24602
24603 @item TS
24604 The start time in seconds of the current command interval.
24605
24606 @item TE
24607 The end time in seconds of the current command interval.
24608
24609 @item TI
24610 The interpolated time of the current command interval, TI = (T - TS) / (TE - TS).
24611 @end table
24612
24613 @end table
24614
24615 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
24616 assumed.
24617
24618 @var{TARGET} specifies the target of the command, usually the name of
24619 the filter class or a specific filter instance name.
24620
24621 @var{COMMAND} specifies the name of the command for the target filter.
24622
24623 @var{ARG} is optional and specifies the optional list of argument for
24624 the given @var{COMMAND}.
24625
24626 Between one interval specification and another, whitespaces, or
24627 sequences of characters starting with @code{#} until the end of line,
24628 are ignored and can be used to annotate comments.
24629
24630 A simplified BNF description of the commands specification syntax
24631 follows:
24632 @example
24633 @var{COMMAND_FLAG}  ::= "enter" | "leave"
24634 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
24635 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
24636 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
24637 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
24638 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
24639 @end example
24640
24641 @subsection Examples
24642
24643 @itemize
24644 @item
24645 Specify audio tempo change at second 4:
24646 @example
24647 asendcmd=c='4.0 atempo tempo 1.5',atempo
24648 @end example
24649
24650 @item
24651 Target a specific filter instance:
24652 @example
24653 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
24654 @end example
24655
24656 @item
24657 Specify a list of drawtext and hue commands in a file.
24658 @example
24659 # show text in the interval 5-10
24660 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
24661          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
24662
24663 # desaturate the image in the interval 15-20
24664 15.0-20.0 [enter] hue s 0,
24665           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
24666           [leave] hue s 1,
24667           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
24668
24669 # apply an exponential saturation fade-out effect, starting from time 25
24670 25 [enter] hue s exp(25-t)
24671 @end example
24672
24673 A filtergraph allowing to read and process the above command list
24674 stored in a file @file{test.cmd}, can be specified with:
24675 @example
24676 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
24677 @end example
24678 @end itemize
24679
24680 @anchor{setpts}
24681 @section setpts, asetpts
24682
24683 Change the PTS (presentation timestamp) of the input frames.
24684
24685 @code{setpts} works on video frames, @code{asetpts} on audio frames.
24686
24687 This filter accepts the following options:
24688
24689 @table @option
24690
24691 @item expr
24692 The expression which is evaluated for each frame to construct its timestamp.
24693
24694 @end table
24695
24696 The expression is evaluated through the eval API and can contain the following
24697 constants:
24698
24699 @table @option
24700 @item FRAME_RATE, FR
24701 frame rate, only defined for constant frame-rate video
24702
24703 @item PTS
24704 The presentation timestamp in input
24705
24706 @item N
24707 The count of the input frame for video or the number of consumed samples,
24708 not including the current frame for audio, starting from 0.
24709
24710 @item NB_CONSUMED_SAMPLES
24711 The number of consumed samples, not including the current frame (only
24712 audio)
24713
24714 @item NB_SAMPLES, S
24715 The number of samples in the current frame (only audio)
24716
24717 @item SAMPLE_RATE, SR
24718 The audio sample rate.
24719
24720 @item STARTPTS
24721 The PTS of the first frame.
24722
24723 @item STARTT
24724 the time in seconds of the first frame
24725
24726 @item INTERLACED
24727 State whether the current frame is interlaced.
24728
24729 @item T
24730 the time in seconds of the current frame
24731
24732 @item POS
24733 original position in the file of the frame, or undefined if undefined
24734 for the current frame
24735
24736 @item PREV_INPTS
24737 The previous input PTS.
24738
24739 @item PREV_INT
24740 previous input time in seconds
24741
24742 @item PREV_OUTPTS
24743 The previous output PTS.
24744
24745 @item PREV_OUTT
24746 previous output time in seconds
24747
24748 @item RTCTIME
24749 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
24750 instead.
24751
24752 @item RTCSTART
24753 The wallclock (RTC) time at the start of the movie in microseconds.
24754
24755 @item TB
24756 The timebase of the input timestamps.
24757
24758 @end table
24759
24760 @subsection Examples
24761
24762 @itemize
24763 @item
24764 Start counting PTS from zero
24765 @example
24766 setpts=PTS-STARTPTS
24767 @end example
24768
24769 @item
24770 Apply fast motion effect:
24771 @example
24772 setpts=0.5*PTS
24773 @end example
24774
24775 @item
24776 Apply slow motion effect:
24777 @example
24778 setpts=2.0*PTS
24779 @end example
24780
24781 @item
24782 Set fixed rate of 25 frames per second:
24783 @example
24784 setpts=N/(25*TB)
24785 @end example
24786
24787 @item
24788 Set fixed rate 25 fps with some jitter:
24789 @example
24790 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
24791 @end example
24792
24793 @item
24794 Apply an offset of 10 seconds to the input PTS:
24795 @example
24796 setpts=PTS+10/TB
24797 @end example
24798
24799 @item
24800 Generate timestamps from a "live source" and rebase onto the current timebase:
24801 @example
24802 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
24803 @end example
24804
24805 @item
24806 Generate timestamps by counting samples:
24807 @example
24808 asetpts=N/SR/TB
24809 @end example
24810
24811 @end itemize
24812
24813 @section setrange
24814
24815 Force color range for the output video frame.
24816
24817 The @code{setrange} filter marks the color range property for the
24818 output frames. It does not change the input frame, but only sets the
24819 corresponding property, which affects how the frame is treated by
24820 following filters.
24821
24822 The filter accepts the following options:
24823
24824 @table @option
24825
24826 @item range
24827 Available values are:
24828
24829 @table @samp
24830 @item auto
24831 Keep the same color range property.
24832
24833 @item unspecified, unknown
24834 Set the color range as unspecified.
24835
24836 @item limited, tv, mpeg
24837 Set the color range as limited.
24838
24839 @item full, pc, jpeg
24840 Set the color range as full.
24841 @end table
24842 @end table
24843
24844 @section settb, asettb
24845
24846 Set the timebase to use for the output frames timestamps.
24847 It is mainly useful for testing timebase configuration.
24848
24849 It accepts the following parameters:
24850
24851 @table @option
24852
24853 @item expr, tb
24854 The expression which is evaluated into the output timebase.
24855
24856 @end table
24857
24858 The value for @option{tb} is an arithmetic expression representing a
24859 rational. The expression can contain the constants "AVTB" (the default
24860 timebase), "intb" (the input timebase) and "sr" (the sample rate,
24861 audio only). Default value is "intb".
24862
24863 @subsection Examples
24864
24865 @itemize
24866 @item
24867 Set the timebase to 1/25:
24868 @example
24869 settb=expr=1/25
24870 @end example
24871
24872 @item
24873 Set the timebase to 1/10:
24874 @example
24875 settb=expr=0.1
24876 @end example
24877
24878 @item
24879 Set the timebase to 1001/1000:
24880 @example
24881 settb=1+0.001
24882 @end example
24883
24884 @item
24885 Set the timebase to 2*intb:
24886 @example
24887 settb=2*intb
24888 @end example
24889
24890 @item
24891 Set the default timebase value:
24892 @example
24893 settb=AVTB
24894 @end example
24895 @end itemize
24896
24897 @section showcqt
24898 Convert input audio to a video output representing frequency spectrum
24899 logarithmically using Brown-Puckette constant Q transform algorithm with
24900 direct frequency domain coefficient calculation (but the transform itself
24901 is not really constant Q, instead the Q factor is actually variable/clamped),
24902 with musical tone scale, from E0 to D#10.
24903
24904 The filter accepts the following options:
24905
24906 @table @option
24907 @item size, s
24908 Specify the video size for the output. It must be even. For the syntax of this option,
24909 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24910 Default value is @code{1920x1080}.
24911
24912 @item fps, rate, r
24913 Set the output frame rate. Default value is @code{25}.
24914
24915 @item bar_h
24916 Set the bargraph height. It must be even. Default value is @code{-1} which
24917 computes the bargraph height automatically.
24918
24919 @item axis_h
24920 Set the axis height. It must be even. Default value is @code{-1} which computes
24921 the axis height automatically.
24922
24923 @item sono_h
24924 Set the sonogram height. It must be even. Default value is @code{-1} which
24925 computes the sonogram height automatically.
24926
24927 @item fullhd
24928 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
24929 instead. Default value is @code{1}.
24930
24931 @item sono_v, volume
24932 Specify the sonogram volume expression. It can contain variables:
24933 @table @option
24934 @item bar_v
24935 the @var{bar_v} evaluated expression
24936 @item frequency, freq, f
24937 the frequency where it is evaluated
24938 @item timeclamp, tc
24939 the value of @var{timeclamp} option
24940 @end table
24941 and functions:
24942 @table @option
24943 @item a_weighting(f)
24944 A-weighting of equal loudness
24945 @item b_weighting(f)
24946 B-weighting of equal loudness
24947 @item c_weighting(f)
24948 C-weighting of equal loudness.
24949 @end table
24950 Default value is @code{16}.
24951
24952 @item bar_v, volume2
24953 Specify the bargraph volume expression. It can contain variables:
24954 @table @option
24955 @item sono_v
24956 the @var{sono_v} evaluated expression
24957 @item frequency, freq, f
24958 the frequency where it is evaluated
24959 @item timeclamp, tc
24960 the value of @var{timeclamp} option
24961 @end table
24962 and functions:
24963 @table @option
24964 @item a_weighting(f)
24965 A-weighting of equal loudness
24966 @item b_weighting(f)
24967 B-weighting of equal loudness
24968 @item c_weighting(f)
24969 C-weighting of equal loudness.
24970 @end table
24971 Default value is @code{sono_v}.
24972
24973 @item sono_g, gamma
24974 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
24975 higher gamma makes the spectrum having more range. Default value is @code{3}.
24976 Acceptable range is @code{[1, 7]}.
24977
24978 @item bar_g, gamma2
24979 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
24980 @code{[1, 7]}.
24981
24982 @item bar_t
24983 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
24984 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
24985
24986 @item timeclamp, tc
24987 Specify the transform timeclamp. At low frequency, there is trade-off between
24988 accuracy in time domain and frequency domain. If timeclamp is lower,
24989 event in time domain is represented more accurately (such as fast bass drum),
24990 otherwise event in frequency domain is represented more accurately
24991 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
24992
24993 @item attack
24994 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
24995 limits future samples by applying asymmetric windowing in time domain, useful
24996 when low latency is required. Accepted range is @code{[0, 1]}.
24997
24998 @item basefreq
24999 Specify the transform base frequency. Default value is @code{20.01523126408007475},
25000 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
25001
25002 @item endfreq
25003 Specify the transform end frequency. Default value is @code{20495.59681441799654},
25004 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
25005
25006 @item coeffclamp
25007 This option is deprecated and ignored.
25008
25009 @item tlength
25010 Specify the transform length in time domain. Use this option to control accuracy
25011 trade-off between time domain and frequency domain at every frequency sample.
25012 It can contain variables:
25013 @table @option
25014 @item frequency, freq, f
25015 the frequency where it is evaluated
25016 @item timeclamp, tc
25017 the value of @var{timeclamp} option.
25018 @end table
25019 Default value is @code{384*tc/(384+tc*f)}.
25020
25021 @item count
25022 Specify the transform count for every video frame. Default value is @code{6}.
25023 Acceptable range is @code{[1, 30]}.
25024
25025 @item fcount
25026 Specify the transform count for every single pixel. Default value is @code{0},
25027 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
25028
25029 @item fontfile
25030 Specify font file for use with freetype to draw the axis. If not specified,
25031 use embedded font. Note that drawing with font file or embedded font is not
25032 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
25033 option instead.
25034
25035 @item font
25036 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
25037 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
25038 escaping.
25039
25040 @item fontcolor
25041 Specify font color expression. This is arithmetic expression that should return
25042 integer value 0xRRGGBB. It can contain variables:
25043 @table @option
25044 @item frequency, freq, f
25045 the frequency where it is evaluated
25046 @item timeclamp, tc
25047 the value of @var{timeclamp} option
25048 @end table
25049 and functions:
25050 @table @option
25051 @item midi(f)
25052 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
25053 @item r(x), g(x), b(x)
25054 red, green, and blue value of intensity x.
25055 @end table
25056 Default value is @code{st(0, (midi(f)-59.5)/12);
25057 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
25058 r(1-ld(1)) + b(ld(1))}.
25059
25060 @item axisfile
25061 Specify image file to draw the axis. This option override @var{fontfile} and
25062 @var{fontcolor} option.
25063
25064 @item axis, text
25065 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
25066 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
25067 Default value is @code{1}.
25068
25069 @item csp
25070 Set colorspace. The accepted values are:
25071 @table @samp
25072 @item unspecified
25073 Unspecified (default)
25074
25075 @item bt709
25076 BT.709
25077
25078 @item fcc
25079 FCC
25080
25081 @item bt470bg
25082 BT.470BG or BT.601-6 625
25083
25084 @item smpte170m
25085 SMPTE-170M or BT.601-6 525
25086
25087 @item smpte240m
25088 SMPTE-240M
25089
25090 @item bt2020ncl
25091 BT.2020 with non-constant luminance
25092
25093 @end table
25094
25095 @item cscheme
25096 Set spectrogram color scheme. This is list of floating point values with format
25097 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
25098 The default is @code{1|0.5|0|0|0.5|1}.
25099
25100 @end table
25101
25102 @subsection Examples
25103
25104 @itemize
25105 @item
25106 Playing audio while showing the spectrum:
25107 @example
25108 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
25109 @end example
25110
25111 @item
25112 Same as above, but with frame rate 30 fps:
25113 @example
25114 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
25115 @end example
25116
25117 @item
25118 Playing at 1280x720:
25119 @example
25120 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
25121 @end example
25122
25123 @item
25124 Disable sonogram display:
25125 @example
25126 sono_h=0
25127 @end example
25128
25129 @item
25130 A1 and its harmonics: A1, A2, (near)E3, A3:
25131 @example
25132 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),
25133                  asplit[a][out1]; [a] showcqt [out0]'
25134 @end example
25135
25136 @item
25137 Same as above, but with more accuracy in frequency domain:
25138 @example
25139 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),
25140                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
25141 @end example
25142
25143 @item
25144 Custom volume:
25145 @example
25146 bar_v=10:sono_v=bar_v*a_weighting(f)
25147 @end example
25148
25149 @item
25150 Custom gamma, now spectrum is linear to the amplitude.
25151 @example
25152 bar_g=2:sono_g=2
25153 @end example
25154
25155 @item
25156 Custom tlength equation:
25157 @example
25158 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)))'
25159 @end example
25160
25161 @item
25162 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
25163 @example
25164 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
25165 @end example
25166
25167 @item
25168 Custom font using fontconfig:
25169 @example
25170 font='Courier New,Monospace,mono|bold'
25171 @end example
25172
25173 @item
25174 Custom frequency range with custom axis using image file:
25175 @example
25176 axisfile=myaxis.png:basefreq=40:endfreq=10000
25177 @end example
25178 @end itemize
25179
25180 @section showfreqs
25181
25182 Convert input audio to video output representing the audio power spectrum.
25183 Audio amplitude is on Y-axis while frequency is on X-axis.
25184
25185 The filter accepts the following options:
25186
25187 @table @option
25188 @item size, s
25189 Specify size of video. For the syntax of this option, check the
25190 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25191 Default is @code{1024x512}.
25192
25193 @item mode
25194 Set display mode.
25195 This set how each frequency bin will be represented.
25196
25197 It accepts the following values:
25198 @table @samp
25199 @item line
25200 @item bar
25201 @item dot
25202 @end table
25203 Default is @code{bar}.
25204
25205 @item ascale
25206 Set amplitude scale.
25207
25208 It accepts the following values:
25209 @table @samp
25210 @item lin
25211 Linear scale.
25212
25213 @item sqrt
25214 Square root scale.
25215
25216 @item cbrt
25217 Cubic root scale.
25218
25219 @item log
25220 Logarithmic scale.
25221 @end table
25222 Default is @code{log}.
25223
25224 @item fscale
25225 Set frequency scale.
25226
25227 It accepts the following values:
25228 @table @samp
25229 @item lin
25230 Linear scale.
25231
25232 @item log
25233 Logarithmic scale.
25234
25235 @item rlog
25236 Reverse logarithmic scale.
25237 @end table
25238 Default is @code{lin}.
25239
25240 @item win_size
25241 Set window size. Allowed range is from 16 to 65536.
25242
25243 Default is @code{2048}
25244
25245 @item win_func
25246 Set windowing function.
25247
25248 It accepts the following values:
25249 @table @samp
25250 @item rect
25251 @item bartlett
25252 @item hanning
25253 @item hamming
25254 @item blackman
25255 @item welch
25256 @item flattop
25257 @item bharris
25258 @item bnuttall
25259 @item bhann
25260 @item sine
25261 @item nuttall
25262 @item lanczos
25263 @item gauss
25264 @item tukey
25265 @item dolph
25266 @item cauchy
25267 @item parzen
25268 @item poisson
25269 @item bohman
25270 @end table
25271 Default is @code{hanning}.
25272
25273 @item overlap
25274 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25275 which means optimal overlap for selected window function will be picked.
25276
25277 @item averaging
25278 Set time averaging. Setting this to 0 will display current maximal peaks.
25279 Default is @code{1}, which means time averaging is disabled.
25280
25281 @item colors
25282 Specify list of colors separated by space or by '|' which will be used to
25283 draw channel frequencies. Unrecognized or missing colors will be replaced
25284 by white color.
25285
25286 @item cmode
25287 Set channel display mode.
25288
25289 It accepts the following values:
25290 @table @samp
25291 @item combined
25292 @item separate
25293 @end table
25294 Default is @code{combined}.
25295
25296 @item minamp
25297 Set minimum amplitude used in @code{log} amplitude scaler.
25298
25299 @item data
25300 Set data display mode.
25301
25302 It accepts the following values:
25303 @table @samp
25304 @item magnitude
25305 @item phase
25306 @item delay
25307 @end table
25308 Default is @code{magnitude}.
25309 @end table
25310
25311 @section showspatial
25312
25313 Convert stereo input audio to a video output, representing the spatial relationship
25314 between two channels.
25315
25316 The filter accepts the following options:
25317
25318 @table @option
25319 @item size, s
25320 Specify the video size for the output. For the syntax of this option, check the
25321 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25322 Default value is @code{512x512}.
25323
25324 @item win_size
25325 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
25326
25327 @item win_func
25328 Set window function.
25329
25330 It accepts the following values:
25331 @table @samp
25332 @item rect
25333 @item bartlett
25334 @item hann
25335 @item hanning
25336 @item hamming
25337 @item blackman
25338 @item welch
25339 @item flattop
25340 @item bharris
25341 @item bnuttall
25342 @item bhann
25343 @item sine
25344 @item nuttall
25345 @item lanczos
25346 @item gauss
25347 @item tukey
25348 @item dolph
25349 @item cauchy
25350 @item parzen
25351 @item poisson
25352 @item bohman
25353 @end table
25354
25355 Default value is @code{hann}.
25356
25357 @item overlap
25358 Set ratio of overlap window. Default value is @code{0.5}.
25359 When value is @code{1} overlap is set to recommended size for specific
25360 window function currently used.
25361 @end table
25362
25363 @anchor{showspectrum}
25364 @section showspectrum
25365
25366 Convert input audio to a video output, representing the audio frequency
25367 spectrum.
25368
25369 The filter accepts the following options:
25370
25371 @table @option
25372 @item size, s
25373 Specify the video size for the output. For the syntax of this option, check the
25374 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25375 Default value is @code{640x512}.
25376
25377 @item slide
25378 Specify how the spectrum should slide along the window.
25379
25380 It accepts the following values:
25381 @table @samp
25382 @item replace
25383 the samples start again on the left when they reach the right
25384 @item scroll
25385 the samples scroll from right to left
25386 @item fullframe
25387 frames are only produced when the samples reach the right
25388 @item rscroll
25389 the samples scroll from left to right
25390 @end table
25391
25392 Default value is @code{replace}.
25393
25394 @item mode
25395 Specify display mode.
25396
25397 It accepts the following values:
25398 @table @samp
25399 @item combined
25400 all channels are displayed in the same row
25401 @item separate
25402 all channels are displayed in separate rows
25403 @end table
25404
25405 Default value is @samp{combined}.
25406
25407 @item color
25408 Specify display color mode.
25409
25410 It accepts the following values:
25411 @table @samp
25412 @item channel
25413 each channel is displayed in a separate color
25414 @item intensity
25415 each channel is displayed using the same color scheme
25416 @item rainbow
25417 each channel is displayed using the rainbow color scheme
25418 @item moreland
25419 each channel is displayed using the moreland color scheme
25420 @item nebulae
25421 each channel is displayed using the nebulae color scheme
25422 @item fire
25423 each channel is displayed using the fire color scheme
25424 @item fiery
25425 each channel is displayed using the fiery color scheme
25426 @item fruit
25427 each channel is displayed using the fruit color scheme
25428 @item cool
25429 each channel is displayed using the cool color scheme
25430 @item magma
25431 each channel is displayed using the magma color scheme
25432 @item green
25433 each channel is displayed using the green color scheme
25434 @item viridis
25435 each channel is displayed using the viridis color scheme
25436 @item plasma
25437 each channel is displayed using the plasma color scheme
25438 @item cividis
25439 each channel is displayed using the cividis color scheme
25440 @item terrain
25441 each channel is displayed using the terrain color scheme
25442 @end table
25443
25444 Default value is @samp{channel}.
25445
25446 @item scale
25447 Specify scale used for calculating intensity color values.
25448
25449 It accepts the following values:
25450 @table @samp
25451 @item lin
25452 linear
25453 @item sqrt
25454 square root, default
25455 @item cbrt
25456 cubic root
25457 @item log
25458 logarithmic
25459 @item 4thrt
25460 4th root
25461 @item 5thrt
25462 5th root
25463 @end table
25464
25465 Default value is @samp{sqrt}.
25466
25467 @item fscale
25468 Specify frequency scale.
25469
25470 It accepts the following values:
25471 @table @samp
25472 @item lin
25473 linear
25474 @item log
25475 logarithmic
25476 @end table
25477
25478 Default value is @samp{lin}.
25479
25480 @item saturation
25481 Set saturation modifier for displayed colors. Negative values provide
25482 alternative color scheme. @code{0} is no saturation at all.
25483 Saturation must be in [-10.0, 10.0] range.
25484 Default value is @code{1}.
25485
25486 @item win_func
25487 Set window function.
25488
25489 It accepts the following values:
25490 @table @samp
25491 @item rect
25492 @item bartlett
25493 @item hann
25494 @item hanning
25495 @item hamming
25496 @item blackman
25497 @item welch
25498 @item flattop
25499 @item bharris
25500 @item bnuttall
25501 @item bhann
25502 @item sine
25503 @item nuttall
25504 @item lanczos
25505 @item gauss
25506 @item tukey
25507 @item dolph
25508 @item cauchy
25509 @item parzen
25510 @item poisson
25511 @item bohman
25512 @end table
25513
25514 Default value is @code{hann}.
25515
25516 @item orientation
25517 Set orientation of time vs frequency axis. Can be @code{vertical} or
25518 @code{horizontal}. Default is @code{vertical}.
25519
25520 @item overlap
25521 Set ratio of overlap window. Default value is @code{0}.
25522 When value is @code{1} overlap is set to recommended size for specific
25523 window function currently used.
25524
25525 @item gain
25526 Set scale gain for calculating intensity color values.
25527 Default value is @code{1}.
25528
25529 @item data
25530 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
25531
25532 @item rotation
25533 Set color rotation, must be in [-1.0, 1.0] range.
25534 Default value is @code{0}.
25535
25536 @item start
25537 Set start frequency from which to display spectrogram. Default is @code{0}.
25538
25539 @item stop
25540 Set stop frequency to which to display spectrogram. Default is @code{0}.
25541
25542 @item fps
25543 Set upper frame rate limit. Default is @code{auto}, unlimited.
25544
25545 @item legend
25546 Draw time and frequency axes and legends. Default is disabled.
25547 @end table
25548
25549 The usage is very similar to the showwaves filter; see the examples in that
25550 section.
25551
25552 @subsection Examples
25553
25554 @itemize
25555 @item
25556 Large window with logarithmic color scaling:
25557 @example
25558 showspectrum=s=1280x480:scale=log
25559 @end example
25560
25561 @item
25562 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
25563 @example
25564 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
25565              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
25566 @end example
25567 @end itemize
25568
25569 @section showspectrumpic
25570
25571 Convert input audio to a single video frame, representing the audio frequency
25572 spectrum.
25573
25574 The filter accepts the following options:
25575
25576 @table @option
25577 @item size, s
25578 Specify the video size for the output. For the syntax of this option, check the
25579 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25580 Default value is @code{4096x2048}.
25581
25582 @item mode
25583 Specify display mode.
25584
25585 It accepts the following values:
25586 @table @samp
25587 @item combined
25588 all channels are displayed in the same row
25589 @item separate
25590 all channels are displayed in separate rows
25591 @end table
25592 Default value is @samp{combined}.
25593
25594 @item color
25595 Specify display color mode.
25596
25597 It accepts the following values:
25598 @table @samp
25599 @item channel
25600 each channel is displayed in a separate color
25601 @item intensity
25602 each channel is displayed using the same color scheme
25603 @item rainbow
25604 each channel is displayed using the rainbow color scheme
25605 @item moreland
25606 each channel is displayed using the moreland color scheme
25607 @item nebulae
25608 each channel is displayed using the nebulae color scheme
25609 @item fire
25610 each channel is displayed using the fire color scheme
25611 @item fiery
25612 each channel is displayed using the fiery color scheme
25613 @item fruit
25614 each channel is displayed using the fruit color scheme
25615 @item cool
25616 each channel is displayed using the cool color scheme
25617 @item magma
25618 each channel is displayed using the magma color scheme
25619 @item green
25620 each channel is displayed using the green color scheme
25621 @item viridis
25622 each channel is displayed using the viridis color scheme
25623 @item plasma
25624 each channel is displayed using the plasma color scheme
25625 @item cividis
25626 each channel is displayed using the cividis color scheme
25627 @item terrain
25628 each channel is displayed using the terrain color scheme
25629 @end table
25630 Default value is @samp{intensity}.
25631
25632 @item scale
25633 Specify scale used for calculating intensity color values.
25634
25635 It accepts the following values:
25636 @table @samp
25637 @item lin
25638 linear
25639 @item sqrt
25640 square root, default
25641 @item cbrt
25642 cubic root
25643 @item log
25644 logarithmic
25645 @item 4thrt
25646 4th root
25647 @item 5thrt
25648 5th root
25649 @end table
25650 Default value is @samp{log}.
25651
25652 @item fscale
25653 Specify frequency scale.
25654
25655 It accepts the following values:
25656 @table @samp
25657 @item lin
25658 linear
25659 @item log
25660 logarithmic
25661 @end table
25662
25663 Default value is @samp{lin}.
25664
25665 @item saturation
25666 Set saturation modifier for displayed colors. Negative values provide
25667 alternative color scheme. @code{0} is no saturation at all.
25668 Saturation must be in [-10.0, 10.0] range.
25669 Default value is @code{1}.
25670
25671 @item win_func
25672 Set window function.
25673
25674 It accepts the following values:
25675 @table @samp
25676 @item rect
25677 @item bartlett
25678 @item hann
25679 @item hanning
25680 @item hamming
25681 @item blackman
25682 @item welch
25683 @item flattop
25684 @item bharris
25685 @item bnuttall
25686 @item bhann
25687 @item sine
25688 @item nuttall
25689 @item lanczos
25690 @item gauss
25691 @item tukey
25692 @item dolph
25693 @item cauchy
25694 @item parzen
25695 @item poisson
25696 @item bohman
25697 @end table
25698 Default value is @code{hann}.
25699
25700 @item orientation
25701 Set orientation of time vs frequency axis. Can be @code{vertical} or
25702 @code{horizontal}. Default is @code{vertical}.
25703
25704 @item gain
25705 Set scale gain for calculating intensity color values.
25706 Default value is @code{1}.
25707
25708 @item legend
25709 Draw time and frequency axes and legends. Default is enabled.
25710
25711 @item rotation
25712 Set color rotation, must be in [-1.0, 1.0] range.
25713 Default value is @code{0}.
25714
25715 @item start
25716 Set start frequency from which to display spectrogram. Default is @code{0}.
25717
25718 @item stop
25719 Set stop frequency to which to display spectrogram. Default is @code{0}.
25720 @end table
25721
25722 @subsection Examples
25723
25724 @itemize
25725 @item
25726 Extract an audio spectrogram of a whole audio track
25727 in a 1024x1024 picture using @command{ffmpeg}:
25728 @example
25729 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
25730 @end example
25731 @end itemize
25732
25733 @section showvolume
25734
25735 Convert input audio volume to a video output.
25736
25737 The filter accepts the following options:
25738
25739 @table @option
25740 @item rate, r
25741 Set video rate.
25742
25743 @item b
25744 Set border width, allowed range is [0, 5]. Default is 1.
25745
25746 @item w
25747 Set channel width, allowed range is [80, 8192]. Default is 400.
25748
25749 @item h
25750 Set channel height, allowed range is [1, 900]. Default is 20.
25751
25752 @item f
25753 Set fade, allowed range is [0, 1]. Default is 0.95.
25754
25755 @item c
25756 Set volume color expression.
25757
25758 The expression can use the following variables:
25759
25760 @table @option
25761 @item VOLUME
25762 Current max volume of channel in dB.
25763
25764 @item PEAK
25765 Current peak.
25766
25767 @item CHANNEL
25768 Current channel number, starting from 0.
25769 @end table
25770
25771 @item t
25772 If set, displays channel names. Default is enabled.
25773
25774 @item v
25775 If set, displays volume values. Default is enabled.
25776
25777 @item o
25778 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
25779 default is @code{h}.
25780
25781 @item s
25782 Set step size, allowed range is [0, 5]. Default is 0, which means
25783 step is disabled.
25784
25785 @item p
25786 Set background opacity, allowed range is [0, 1]. Default is 0.
25787
25788 @item m
25789 Set metering mode, can be peak: @code{p} or rms: @code{r},
25790 default is @code{p}.
25791
25792 @item ds
25793 Set display scale, can be linear: @code{lin} or log: @code{log},
25794 default is @code{lin}.
25795
25796 @item dm
25797 In second.
25798 If set to > 0., display a line for the max level
25799 in the previous seconds.
25800 default is disabled: @code{0.}
25801
25802 @item dmc
25803 The color of the max line. Use when @code{dm} option is set to > 0.
25804 default is: @code{orange}
25805 @end table
25806
25807 @section showwaves
25808
25809 Convert input audio to a video output, representing the samples waves.
25810
25811 The filter accepts the following options:
25812
25813 @table @option
25814 @item size, s
25815 Specify the video size for the output. For the syntax of this option, check the
25816 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25817 Default value is @code{600x240}.
25818
25819 @item mode
25820 Set display mode.
25821
25822 Available values are:
25823 @table @samp
25824 @item point
25825 Draw a point for each sample.
25826
25827 @item line
25828 Draw a vertical line for each sample.
25829
25830 @item p2p
25831 Draw a point for each sample and a line between them.
25832
25833 @item cline
25834 Draw a centered vertical line for each sample.
25835 @end table
25836
25837 Default value is @code{point}.
25838
25839 @item n
25840 Set the number of samples which are printed on the same column. A
25841 larger value will decrease the frame rate. Must be a positive
25842 integer. This option can be set only if the value for @var{rate}
25843 is not explicitly specified.
25844
25845 @item rate, r
25846 Set the (approximate) output frame rate. This is done by setting the
25847 option @var{n}. Default value is "25".
25848
25849 @item split_channels
25850 Set if channels should be drawn separately or overlap. Default value is 0.
25851
25852 @item colors
25853 Set colors separated by '|' which are going to be used for drawing of each channel.
25854
25855 @item scale
25856 Set amplitude scale.
25857
25858 Available values are:
25859 @table @samp
25860 @item lin
25861 Linear.
25862
25863 @item log
25864 Logarithmic.
25865
25866 @item sqrt
25867 Square root.
25868
25869 @item cbrt
25870 Cubic root.
25871 @end table
25872
25873 Default is linear.
25874
25875 @item draw
25876 Set the draw mode. This is mostly useful to set for high @var{n}.
25877
25878 Available values are:
25879 @table @samp
25880 @item scale
25881 Scale pixel values for each drawn sample.
25882
25883 @item full
25884 Draw every sample directly.
25885 @end table
25886
25887 Default value is @code{scale}.
25888 @end table
25889
25890 @subsection Examples
25891
25892 @itemize
25893 @item
25894 Output the input file audio and the corresponding video representation
25895 at the same time:
25896 @example
25897 amovie=a.mp3,asplit[out0],showwaves[out1]
25898 @end example
25899
25900 @item
25901 Create a synthetic signal and show it with showwaves, forcing a
25902 frame rate of 30 frames per second:
25903 @example
25904 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
25905 @end example
25906 @end itemize
25907
25908 @section showwavespic
25909
25910 Convert input audio to a single video frame, representing the samples waves.
25911
25912 The filter accepts the following options:
25913
25914 @table @option
25915 @item size, s
25916 Specify the video size for the output. For the syntax of this option, check the
25917 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25918 Default value is @code{600x240}.
25919
25920 @item split_channels
25921 Set if channels should be drawn separately or overlap. Default value is 0.
25922
25923 @item colors
25924 Set colors separated by '|' which are going to be used for drawing of each channel.
25925
25926 @item scale
25927 Set amplitude scale.
25928
25929 Available values are:
25930 @table @samp
25931 @item lin
25932 Linear.
25933
25934 @item log
25935 Logarithmic.
25936
25937 @item sqrt
25938 Square root.
25939
25940 @item cbrt
25941 Cubic root.
25942 @end table
25943
25944 Default is linear.
25945
25946 @item draw
25947 Set the draw mode.
25948
25949 Available values are:
25950 @table @samp
25951 @item scale
25952 Scale pixel values for each drawn sample.
25953
25954 @item full
25955 Draw every sample directly.
25956 @end table
25957
25958 Default value is @code{scale}.
25959
25960 @item filter
25961 Set the filter mode.
25962
25963 Available values are:
25964 @table @samp
25965 @item average
25966 Use average samples values for each drawn sample.
25967
25968 @item peak
25969 Use peak samples values for each drawn sample.
25970 @end table
25971
25972 Default value is @code{average}.
25973 @end table
25974
25975 @subsection Examples
25976
25977 @itemize
25978 @item
25979 Extract a channel split representation of the wave form of a whole audio track
25980 in a 1024x800 picture using @command{ffmpeg}:
25981 @example
25982 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
25983 @end example
25984 @end itemize
25985
25986 @section sidedata, asidedata
25987
25988 Delete frame side data, or select frames based on it.
25989
25990 This filter accepts the following options:
25991
25992 @table @option
25993 @item mode
25994 Set mode of operation of the filter.
25995
25996 Can be one of the following:
25997
25998 @table @samp
25999 @item select
26000 Select every frame with side data of @code{type}.
26001
26002 @item delete
26003 Delete side data of @code{type}. If @code{type} is not set, delete all side
26004 data in the frame.
26005
26006 @end table
26007
26008 @item type
26009 Set side data type used with all modes. Must be set for @code{select} mode. For
26010 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
26011 in @file{libavutil/frame.h}. For example, to choose
26012 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
26013
26014 @end table
26015
26016 @section spectrumsynth
26017
26018 Synthesize audio from 2 input video spectrums, first input stream represents
26019 magnitude across time and second represents phase across time.
26020 The filter will transform from frequency domain as displayed in videos back
26021 to time domain as presented in audio output.
26022
26023 This filter is primarily created for reversing processed @ref{showspectrum}
26024 filter outputs, but can synthesize sound from other spectrograms too.
26025 But in such case results are going to be poor if the phase data is not
26026 available, because in such cases phase data need to be recreated, usually
26027 it's just recreated from random noise.
26028 For best results use gray only output (@code{channel} color mode in
26029 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
26030 @code{lin} scale for phase video. To produce phase, for 2nd video, use
26031 @code{data} option. Inputs videos should generally use @code{fullframe}
26032 slide mode as that saves resources needed for decoding video.
26033
26034 The filter accepts the following options:
26035
26036 @table @option
26037 @item sample_rate
26038 Specify sample rate of output audio, the sample rate of audio from which
26039 spectrum was generated may differ.
26040
26041 @item channels
26042 Set number of channels represented in input video spectrums.
26043
26044 @item scale
26045 Set scale which was used when generating magnitude input spectrum.
26046 Can be @code{lin} or @code{log}. Default is @code{log}.
26047
26048 @item slide
26049 Set slide which was used when generating inputs spectrums.
26050 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
26051 Default is @code{fullframe}.
26052
26053 @item win_func
26054 Set window function used for resynthesis.
26055
26056 @item overlap
26057 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
26058 which means optimal overlap for selected window function will be picked.
26059
26060 @item orientation
26061 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
26062 Default is @code{vertical}.
26063 @end table
26064
26065 @subsection Examples
26066
26067 @itemize
26068 @item
26069 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
26070 then resynthesize videos back to audio with spectrumsynth:
26071 @example
26072 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
26073 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
26074 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
26075 @end example
26076 @end itemize
26077
26078 @section split, asplit
26079
26080 Split input into several identical outputs.
26081
26082 @code{asplit} works with audio input, @code{split} with video.
26083
26084 The filter accepts a single parameter which specifies the number of outputs. If
26085 unspecified, it defaults to 2.
26086
26087 @subsection Examples
26088
26089 @itemize
26090 @item
26091 Create two separate outputs from the same input:
26092 @example
26093 [in] split [out0][out1]
26094 @end example
26095
26096 @item
26097 To create 3 or more outputs, you need to specify the number of
26098 outputs, like in:
26099 @example
26100 [in] asplit=3 [out0][out1][out2]
26101 @end example
26102
26103 @item
26104 Create two separate outputs from the same input, one cropped and
26105 one padded:
26106 @example
26107 [in] split [splitout1][splitout2];
26108 [splitout1] crop=100:100:0:0    [cropout];
26109 [splitout2] pad=200:200:100:100 [padout];
26110 @end example
26111
26112 @item
26113 Create 5 copies of the input audio with @command{ffmpeg}:
26114 @example
26115 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
26116 @end example
26117 @end itemize
26118
26119 @section zmq, azmq
26120
26121 Receive commands sent through a libzmq client, and forward them to
26122 filters in the filtergraph.
26123
26124 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
26125 must be inserted between two video filters, @code{azmq} between two
26126 audio filters. Both are capable to send messages to any filter type.
26127
26128 To enable these filters you need to install the libzmq library and
26129 headers and configure FFmpeg with @code{--enable-libzmq}.
26130
26131 For more information about libzmq see:
26132 @url{http://www.zeromq.org/}
26133
26134 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
26135 receives messages sent through a network interface defined by the
26136 @option{bind_address} (or the abbreviation "@option{b}") option.
26137 Default value of this option is @file{tcp://localhost:5555}. You may
26138 want to alter this value to your needs, but do not forget to escape any
26139 ':' signs (see @ref{filtergraph escaping}).
26140
26141 The received message must be in the form:
26142 @example
26143 @var{TARGET} @var{COMMAND} [@var{ARG}]
26144 @end example
26145
26146 @var{TARGET} specifies the target of the command, usually the name of
26147 the filter class or a specific filter instance name. The default
26148 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
26149 but you can override this by using the @samp{filter_name@@id} syntax
26150 (see @ref{Filtergraph syntax}).
26151
26152 @var{COMMAND} specifies the name of the command for the target filter.
26153
26154 @var{ARG} is optional and specifies the optional argument list for the
26155 given @var{COMMAND}.
26156
26157 Upon reception, the message is processed and the corresponding command
26158 is injected into the filtergraph. Depending on the result, the filter
26159 will send a reply to the client, adopting the format:
26160 @example
26161 @var{ERROR_CODE} @var{ERROR_REASON}
26162 @var{MESSAGE}
26163 @end example
26164
26165 @var{MESSAGE} is optional.
26166
26167 @subsection Examples
26168
26169 Look at @file{tools/zmqsend} for an example of a zmq client which can
26170 be used to send commands processed by these filters.
26171
26172 Consider the following filtergraph generated by @command{ffplay}.
26173 In this example the last overlay filter has an instance name. All other
26174 filters will have default instance names.
26175
26176 @example
26177 ffplay -dumpgraph 1 -f lavfi "
26178 color=s=100x100:c=red  [l];
26179 color=s=100x100:c=blue [r];
26180 nullsrc=s=200x100, zmq [bg];
26181 [bg][l]   overlay     [bg+l];
26182 [bg+l][r] overlay@@my=x=100 "
26183 @end example
26184
26185 To change the color of the left side of the video, the following
26186 command can be used:
26187 @example
26188 echo Parsed_color_0 c yellow | tools/zmqsend
26189 @end example
26190
26191 To change the right side:
26192 @example
26193 echo Parsed_color_1 c pink | tools/zmqsend
26194 @end example
26195
26196 To change the position of the right side:
26197 @example
26198 echo overlay@@my x 150 | tools/zmqsend
26199 @end example
26200
26201
26202 @c man end MULTIMEDIA FILTERS
26203
26204 @chapter Multimedia Sources
26205 @c man begin MULTIMEDIA SOURCES
26206
26207 Below is a description of the currently available multimedia sources.
26208
26209 @section amovie
26210
26211 This is the same as @ref{movie} source, except it selects an audio
26212 stream by default.
26213
26214 @anchor{movie}
26215 @section movie
26216
26217 Read audio and/or video stream(s) from a movie container.
26218
26219 It accepts the following parameters:
26220
26221 @table @option
26222 @item filename
26223 The name of the resource to read (not necessarily a file; it can also be a
26224 device or a stream accessed through some protocol).
26225
26226 @item format_name, f
26227 Specifies the format assumed for the movie to read, and can be either
26228 the name of a container or an input device. If not specified, the
26229 format is guessed from @var{movie_name} or by probing.
26230
26231 @item seek_point, sp
26232 Specifies the seek point in seconds. The frames will be output
26233 starting from this seek point. The parameter is evaluated with
26234 @code{av_strtod}, so the numerical value may be suffixed by an IS
26235 postfix. The default value is "0".
26236
26237 @item streams, s
26238 Specifies the streams to read. Several streams can be specified,
26239 separated by "+". The source will then have as many outputs, in the
26240 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
26241 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
26242 respectively the default (best suited) video and audio stream. Default
26243 is "dv", or "da" if the filter is called as "amovie".
26244
26245 @item stream_index, si
26246 Specifies the index of the video stream to read. If the value is -1,
26247 the most suitable video stream will be automatically selected. The default
26248 value is "-1". Deprecated. If the filter is called "amovie", it will select
26249 audio instead of video.
26250
26251 @item loop
26252 Specifies how many times to read the stream in sequence.
26253 If the value is 0, the stream will be looped infinitely.
26254 Default value is "1".
26255
26256 Note that when the movie is looped the source timestamps are not
26257 changed, so it will generate non monotonically increasing timestamps.
26258
26259 @item discontinuity
26260 Specifies the time difference between frames above which the point is
26261 considered a timestamp discontinuity which is removed by adjusting the later
26262 timestamps.
26263 @end table
26264
26265 It allows overlaying a second video on top of the main input of
26266 a filtergraph, as shown in this graph:
26267 @example
26268 input -----------> deltapts0 --> overlay --> output
26269                                     ^
26270                                     |
26271 movie --> scale--> deltapts1 -------+
26272 @end example
26273 @subsection Examples
26274
26275 @itemize
26276 @item
26277 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
26278 on top of the input labelled "in":
26279 @example
26280 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
26281 [in] setpts=PTS-STARTPTS [main];
26282 [main][over] overlay=16:16 [out]
26283 @end example
26284
26285 @item
26286 Read from a video4linux2 device, and overlay it on top of the input
26287 labelled "in":
26288 @example
26289 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
26290 [in] setpts=PTS-STARTPTS [main];
26291 [main][over] overlay=16:16 [out]
26292 @end example
26293
26294 @item
26295 Read the first video stream and the audio stream with id 0x81 from
26296 dvd.vob; the video is connected to the pad named "video" and the audio is
26297 connected to the pad named "audio":
26298 @example
26299 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
26300 @end example
26301 @end itemize
26302
26303 @subsection Commands
26304
26305 Both movie and amovie support the following commands:
26306 @table @option
26307 @item seek
26308 Perform seek using "av_seek_frame".
26309 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
26310 @itemize
26311 @item
26312 @var{stream_index}: If stream_index is -1, a default
26313 stream is selected, and @var{timestamp} is automatically converted
26314 from AV_TIME_BASE units to the stream specific time_base.
26315 @item
26316 @var{timestamp}: Timestamp in AVStream.time_base units
26317 or, if no stream is specified, in AV_TIME_BASE units.
26318 @item
26319 @var{flags}: Flags which select direction and seeking mode.
26320 @end itemize
26321
26322 @item get_duration
26323 Get movie duration in AV_TIME_BASE units.
26324
26325 @end table
26326
26327 @c man end MULTIMEDIA SOURCES