]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avfilter/af_amix: add sum option
[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 @subsection Commands
644
645 This filter supports the all above options as @ref{commands}.
646
647 @section acue
648
649 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
650 filter.
651
652 @section adeclick
653 Remove impulsive noise from input audio.
654
655 Samples detected as impulsive noise are replaced by interpolated samples using
656 autoregressive modelling.
657
658 @table @option
659 @item w
660 Set window size, in milliseconds. Allowed range is from @code{10} to
661 @code{100}. Default value is @code{55} milliseconds.
662 This sets size of window which will be processed at once.
663
664 @item o
665 Set window overlap, in percentage of window size. Allowed range is from
666 @code{50} to @code{95}. Default value is @code{75} percent.
667 Setting this to a very high value increases impulsive noise removal but makes
668 whole process much slower.
669
670 @item a
671 Set autoregression order, in percentage of window size. Allowed range is from
672 @code{0} to @code{25}. Default value is @code{2} percent. This option also
673 controls quality of interpolated samples using neighbour good samples.
674
675 @item t
676 Set threshold value. Allowed range is from @code{1} to @code{100}.
677 Default value is @code{2}.
678 This controls the strength of impulsive noise which is going to be removed.
679 The lower value, the more samples will be detected as impulsive noise.
680
681 @item b
682 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
683 @code{10}. Default value is @code{2}.
684 If any two samples detected as noise are spaced less than this value then any
685 sample between those two samples will be also detected as noise.
686
687 @item m
688 Set overlap method.
689
690 It accepts the following values:
691 @table @option
692 @item a
693 Select overlap-add method. Even not interpolated samples are slightly
694 changed with this method.
695
696 @item s
697 Select overlap-save method. Not interpolated samples remain unchanged.
698 @end table
699
700 Default value is @code{a}.
701 @end table
702
703 @section adeclip
704 Remove clipped samples from input audio.
705
706 Samples detected as clipped are replaced by interpolated samples using
707 autoregressive modelling.
708
709 @table @option
710 @item w
711 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
712 Default value is @code{55} milliseconds.
713 This sets size of window which will be processed at once.
714
715 @item o
716 Set window overlap, in percentage of window size. Allowed range is from @code{50}
717 to @code{95}. Default value is @code{75} percent.
718
719 @item a
720 Set autoregression order, in percentage of window size. Allowed range is from
721 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
722 quality of interpolated samples using neighbour good samples.
723
724 @item t
725 Set threshold value. Allowed range is from @code{1} to @code{100}.
726 Default value is @code{10}. Higher values make clip detection less aggressive.
727
728 @item n
729 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
730 Default value is @code{1000}. Higher values make clip detection less aggressive.
731
732 @item m
733 Set overlap method.
734
735 It accepts the following values:
736 @table @option
737 @item a
738 Select overlap-add method. Even not interpolated samples are slightly changed
739 with this method.
740
741 @item s
742 Select overlap-save method. Not interpolated samples remain unchanged.
743 @end table
744
745 Default value is @code{a}.
746 @end table
747
748 @section adelay
749
750 Delay one or more audio channels.
751
752 Samples in delayed channel are filled with silence.
753
754 The filter accepts the following option:
755
756 @table @option
757 @item delays
758 Set list of delays in milliseconds for each channel separated by '|'.
759 Unused delays will be silently ignored. If number of given delays is
760 smaller than number of channels all remaining channels will not be delayed.
761 If you want to delay exact number of samples, append 'S' to number.
762 If you want instead to delay in seconds, append 's' to number.
763
764 @item all
765 Use last set delay for all remaining channels. By default is disabled.
766 This option if enabled changes how option @code{delays} is interpreted.
767 @end table
768
769 @subsection Examples
770
771 @itemize
772 @item
773 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
774 the second channel (and any other channels that may be present) unchanged.
775 @example
776 adelay=1500|0|500
777 @end example
778
779 @item
780 Delay second channel by 500 samples, the third channel by 700 samples and leave
781 the first channel (and any other channels that may be present) unchanged.
782 @example
783 adelay=0|500S|700S
784 @end example
785
786 @item
787 Delay all channels by same number of samples:
788 @example
789 adelay=delays=64S:all=1
790 @end example
791 @end itemize
792
793 @section adenorm
794 Remedy denormals in audio by adding extremely low-level noise.
795
796 This filter shall be placed before any filter that can produce denormals.
797
798 A description of the accepted parameters follows.
799
800 @table @option
801 @item level
802 Set level of added noise in dB. Default is @code{-351}.
803 Allowed range is from -451 to -90.
804
805 @item type
806 Set type of added noise.
807
808 @table @option
809 @item dc
810 Add DC signal.
811 @item ac
812 Add AC signal.
813 @item square
814 Add square signal.
815 @item pulse
816 Add pulse signal.
817 @end table
818
819 Default is @code{dc}.
820 @end table
821
822 @subsection Commands
823
824 This filter supports the all above options as @ref{commands}.
825
826 @section aderivative, aintegral
827
828 Compute derivative/integral of audio stream.
829
830 Applying both filters one after another produces original audio.
831
832 @section aecho
833
834 Apply echoing to the input audio.
835
836 Echoes are reflected sound and can occur naturally amongst mountains
837 (and sometimes large buildings) when talking or shouting; digital echo
838 effects emulate this behaviour and are often used to help fill out the
839 sound of a single instrument or vocal. The time difference between the
840 original signal and the reflection is the @code{delay}, and the
841 loudness of the reflected signal is the @code{decay}.
842 Multiple echoes can have different delays and decays.
843
844 A description of the accepted parameters follows.
845
846 @table @option
847 @item in_gain
848 Set input gain of reflected signal. Default is @code{0.6}.
849
850 @item out_gain
851 Set output gain of reflected signal. Default is @code{0.3}.
852
853 @item delays
854 Set list of time intervals in milliseconds between original signal and reflections
855 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
856 Default is @code{1000}.
857
858 @item decays
859 Set list of loudness of reflected signals separated by '|'.
860 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
861 Default is @code{0.5}.
862 @end table
863
864 @subsection Examples
865
866 @itemize
867 @item
868 Make it sound as if there are twice as many instruments as are actually playing:
869 @example
870 aecho=0.8:0.88:60:0.4
871 @end example
872
873 @item
874 If delay is very short, then it sounds like a (metallic) robot playing music:
875 @example
876 aecho=0.8:0.88:6:0.4
877 @end example
878
879 @item
880 A longer delay will sound like an open air concert in the mountains:
881 @example
882 aecho=0.8:0.9:1000:0.3
883 @end example
884
885 @item
886 Same as above but with one more mountain:
887 @example
888 aecho=0.8:0.9:1000|1800:0.3|0.25
889 @end example
890 @end itemize
891
892 @section aemphasis
893 Audio emphasis filter creates or restores material directly taken from LPs or
894 emphased CDs with different filter curves. E.g. to store music on vinyl the
895 signal has to be altered by a filter first to even out the disadvantages of
896 this recording medium.
897 Once the material is played back the inverse filter has to be applied to
898 restore the distortion of the frequency response.
899
900 The filter accepts the following options:
901
902 @table @option
903 @item level_in
904 Set input gain.
905
906 @item level_out
907 Set output gain.
908
909 @item mode
910 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
911 use @code{production} mode. Default is @code{reproduction} mode.
912
913 @item type
914 Set filter type. Selects medium. Can be one of the following:
915
916 @table @option
917 @item col
918 select Columbia.
919 @item emi
920 select EMI.
921 @item bsi
922 select BSI (78RPM).
923 @item riaa
924 select RIAA.
925 @item cd
926 select Compact Disc (CD).
927 @item 50fm
928 select 50µs (FM).
929 @item 75fm
930 select 75µs (FM).
931 @item 50kf
932 select 50µs (FM-KF).
933 @item 75kf
934 select 75µs (FM-KF).
935 @end table
936 @end table
937
938 @subsection Commands
939
940 This filter supports the all above options as @ref{commands}.
941
942 @section aeval
943
944 Modify an audio signal according to the specified expressions.
945
946 This filter accepts one or more expressions (one for each channel),
947 which are evaluated and used to modify a corresponding audio signal.
948
949 It accepts the following parameters:
950
951 @table @option
952 @item exprs
953 Set the '|'-separated expressions list for each separate channel. If
954 the number of input channels is greater than the number of
955 expressions, the last specified expression is used for the remaining
956 output channels.
957
958 @item channel_layout, c
959 Set output channel layout. If not specified, the channel layout is
960 specified by the number of expressions. If set to @samp{same}, it will
961 use by default the same input channel layout.
962 @end table
963
964 Each expression in @var{exprs} can contain the following constants and functions:
965
966 @table @option
967 @item ch
968 channel number of the current expression
969
970 @item n
971 number of the evaluated sample, starting from 0
972
973 @item s
974 sample rate
975
976 @item t
977 time of the evaluated sample expressed in seconds
978
979 @item nb_in_channels
980 @item nb_out_channels
981 input and output number of channels
982
983 @item val(CH)
984 the value of input channel with number @var{CH}
985 @end table
986
987 Note: this filter is slow. For faster processing you should use a
988 dedicated filter.
989
990 @subsection Examples
991
992 @itemize
993 @item
994 Half volume:
995 @example
996 aeval=val(ch)/2:c=same
997 @end example
998
999 @item
1000 Invert phase of the second channel:
1001 @example
1002 aeval=val(0)|-val(1)
1003 @end example
1004 @end itemize
1005
1006 @anchor{afade}
1007 @section afade
1008
1009 Apply fade-in/out effect to input audio.
1010
1011 A description of the accepted parameters follows.
1012
1013 @table @option
1014 @item type, t
1015 Specify the effect type, can be either @code{in} for fade-in, or
1016 @code{out} for a fade-out effect. Default is @code{in}.
1017
1018 @item start_sample, ss
1019 Specify the number of the start sample for starting to apply the fade
1020 effect. Default is 0.
1021
1022 @item nb_samples, ns
1023 Specify the number of samples for which the fade effect has to last. At
1024 the end of the fade-in effect the output audio will have the same
1025 volume as the input audio, at the end of the fade-out transition
1026 the output audio will be silence. Default is 44100.
1027
1028 @item start_time, st
1029 Specify the start time of the fade effect. Default is 0.
1030 The value must be specified as a time duration; see
1031 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1032 for the accepted syntax.
1033 If set this option is used instead of @var{start_sample}.
1034
1035 @item duration, d
1036 Specify the duration of the fade effect. See
1037 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1038 for the accepted syntax.
1039 At the end of the fade-in effect the output audio will have the same
1040 volume as the input audio, at the end of the fade-out transition
1041 the output audio will be silence.
1042 By default the duration is determined by @var{nb_samples}.
1043 If set this option is used instead of @var{nb_samples}.
1044
1045 @item curve
1046 Set curve for fade transition.
1047
1048 It accepts the following values:
1049 @table @option
1050 @item tri
1051 select triangular, linear slope (default)
1052 @item qsin
1053 select quarter of sine wave
1054 @item hsin
1055 select half of sine wave
1056 @item esin
1057 select exponential sine wave
1058 @item log
1059 select logarithmic
1060 @item ipar
1061 select inverted parabola
1062 @item qua
1063 select quadratic
1064 @item cub
1065 select cubic
1066 @item squ
1067 select square root
1068 @item cbr
1069 select cubic root
1070 @item par
1071 select parabola
1072 @item exp
1073 select exponential
1074 @item iqsin
1075 select inverted quarter of sine wave
1076 @item ihsin
1077 select inverted half of sine wave
1078 @item dese
1079 select double-exponential seat
1080 @item desi
1081 select double-exponential sigmoid
1082 @item losi
1083 select logistic sigmoid
1084 @item sinc
1085 select sine cardinal function
1086 @item isinc
1087 select inverted sine cardinal function
1088 @item nofade
1089 no fade applied
1090 @end table
1091 @end table
1092
1093 @subsection Commands
1094
1095 This filter supports the all above options as @ref{commands}.
1096
1097 @subsection Examples
1098
1099 @itemize
1100 @item
1101 Fade in first 15 seconds of audio:
1102 @example
1103 afade=t=in:ss=0:d=15
1104 @end example
1105
1106 @item
1107 Fade out last 25 seconds of a 900 seconds audio:
1108 @example
1109 afade=t=out:st=875:d=25
1110 @end example
1111 @end itemize
1112
1113 @section afftdn
1114 Denoise audio samples with FFT.
1115
1116 A description of the accepted parameters follows.
1117
1118 @table @option
1119 @item nr
1120 Set the noise reduction in dB, allowed range is 0.01 to 97.
1121 Default value is 12 dB.
1122
1123 @item nf
1124 Set the noise floor in dB, allowed range is -80 to -20.
1125 Default value is -50 dB.
1126
1127 @item nt
1128 Set the noise type.
1129
1130 It accepts the following values:
1131 @table @option
1132 @item w
1133 Select white noise.
1134
1135 @item v
1136 Select vinyl noise.
1137
1138 @item s
1139 Select shellac noise.
1140
1141 @item c
1142 Select custom noise, defined in @code{bn} option.
1143
1144 Default value is white noise.
1145 @end table
1146
1147 @item bn
1148 Set custom band noise for every one of 15 bands.
1149 Bands are separated by ' ' or '|'.
1150
1151 @item rf
1152 Set the residual floor in dB, allowed range is -80 to -20.
1153 Default value is -38 dB.
1154
1155 @item tn
1156 Enable noise tracking. By default is disabled.
1157 With this enabled, noise floor is automatically adjusted.
1158
1159 @item tr
1160 Enable residual tracking. By default is disabled.
1161
1162 @item om
1163 Set the output mode.
1164
1165 It accepts the following values:
1166 @table @option
1167 @item i
1168 Pass input unchanged.
1169
1170 @item o
1171 Pass noise filtered out.
1172
1173 @item n
1174 Pass only noise.
1175
1176 Default value is @var{o}.
1177 @end table
1178 @end table
1179
1180 @subsection Commands
1181
1182 This filter supports the following commands:
1183 @table @option
1184 @item sample_noise, sn
1185 Start or stop measuring noise profile.
1186 Syntax for the command is : "start" or "stop" string.
1187 After measuring noise profile is stopped it will be
1188 automatically applied in filtering.
1189
1190 @item noise_reduction, nr
1191 Change noise reduction. Argument is single float number.
1192 Syntax for the command is : "@var{noise_reduction}"
1193
1194 @item noise_floor, nf
1195 Change noise floor. Argument is single float number.
1196 Syntax for the command is : "@var{noise_floor}"
1197
1198 @item output_mode, om
1199 Change output mode operation.
1200 Syntax for the command is : "i", "o" or "n" string.
1201 @end table
1202
1203 @section afftfilt
1204 Apply arbitrary expressions to samples in frequency domain.
1205
1206 @table @option
1207 @item real
1208 Set frequency domain real expression for each separate channel separated
1209 by '|'. Default is "re".
1210 If the number of input channels is greater than the number of
1211 expressions, the last specified expression is used for the remaining
1212 output channels.
1213
1214 @item imag
1215 Set frequency domain imaginary expression for each separate channel
1216 separated by '|'. Default is "im".
1217
1218 Each expression in @var{real} and @var{imag} can contain the following
1219 constants and functions:
1220
1221 @table @option
1222 @item sr
1223 sample rate
1224
1225 @item b
1226 current frequency bin number
1227
1228 @item nb
1229 number of available bins
1230
1231 @item ch
1232 channel number of the current expression
1233
1234 @item chs
1235 number of channels
1236
1237 @item pts
1238 current frame pts
1239
1240 @item re
1241 current real part of frequency bin of current channel
1242
1243 @item im
1244 current imaginary part of frequency bin of current channel
1245
1246 @item real(b, ch)
1247 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1248
1249 @item imag(b, ch)
1250 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1251 @end table
1252
1253 @item win_size
1254 Set window size. Allowed range is from 16 to 131072.
1255 Default is @code{4096}
1256
1257 @item win_func
1258 Set window function. Default is @code{hann}.
1259
1260 @item overlap
1261 Set window overlap. If set to 1, the recommended overlap for selected
1262 window function will be picked. Default is @code{0.75}.
1263 @end table
1264
1265 @subsection Examples
1266
1267 @itemize
1268 @item
1269 Leave almost only low frequencies in audio:
1270 @example
1271 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1272 @end example
1273
1274 @item
1275 Apply robotize effect:
1276 @example
1277 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1278 @end example
1279
1280 @item
1281 Apply whisper effect:
1282 @example
1283 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"
1284 @end example
1285 @end itemize
1286
1287 @anchor{afir}
1288 @section afir
1289
1290 Apply an arbitrary Finite Impulse Response filter.
1291
1292 This filter is designed for applying long FIR filters,
1293 up to 60 seconds long.
1294
1295 It can be used as component for digital crossover filters,
1296 room equalization, cross talk cancellation, wavefield synthesis,
1297 auralization, ambiophonics, ambisonics and spatialization.
1298
1299 This filter uses the streams higher than first one as FIR coefficients.
1300 If the non-first stream holds a single channel, it will be used
1301 for all input channels in the first stream, otherwise
1302 the number of channels in the non-first stream must be same as
1303 the number of channels in the first stream.
1304
1305 It accepts the following parameters:
1306
1307 @table @option
1308 @item dry
1309 Set dry gain. This sets input gain.
1310
1311 @item wet
1312 Set wet gain. This sets final output gain.
1313
1314 @item length
1315 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1316
1317 @item gtype
1318 Enable applying gain measured from power of IR.
1319
1320 Set which approach to use for auto gain measurement.
1321
1322 @table @option
1323 @item none
1324 Do not apply any gain.
1325
1326 @item peak
1327 select peak gain, very conservative approach. This is default value.
1328
1329 @item dc
1330 select DC gain, limited application.
1331
1332 @item gn
1333 select gain to noise approach, this is most popular one.
1334 @end table
1335
1336 @item irgain
1337 Set gain to be applied to IR coefficients before filtering.
1338 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1339
1340 @item irfmt
1341 Set format of IR stream. Can be @code{mono} or @code{input}.
1342 Default is @code{input}.
1343
1344 @item maxir
1345 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1346 Allowed range is 0.1 to 60 seconds.
1347
1348 @item response
1349 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1350 By default it is disabled.
1351
1352 @item channel
1353 Set for which IR channel to display frequency response. By default is first channel
1354 displayed. This option is used only when @var{response} is enabled.
1355
1356 @item size
1357 Set video stream size. This option is used only when @var{response} is enabled.
1358
1359 @item rate
1360 Set video stream frame rate. This option is used only when @var{response} is enabled.
1361
1362 @item minp
1363 Set minimal partition size used for convolution. Default is @var{8192}.
1364 Allowed range is from @var{1} to @var{32768}.
1365 Lower values decreases latency at cost of higher CPU usage.
1366
1367 @item maxp
1368 Set maximal partition size used for convolution. Default is @var{8192}.
1369 Allowed range is from @var{8} to @var{32768}.
1370 Lower values may increase CPU usage.
1371
1372 @item nbirs
1373 Set number of input impulse responses streams which will be switchable at runtime.
1374 Allowed range is from @var{1} to @var{32}. Default is @var{1}.
1375
1376 @item ir
1377 Set IR stream which will be used for convolution, starting from @var{0}, should always be
1378 lower than supplied value by @code{nbirs} option. Default is @var{0}.
1379 This option can be changed at runtime via @ref{commands}.
1380 @end table
1381
1382 @subsection Examples
1383
1384 @itemize
1385 @item
1386 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1387 @example
1388 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1389 @end example
1390 @end itemize
1391
1392 @anchor{aformat}
1393 @section aformat
1394
1395 Set output format constraints for the input audio. The framework will
1396 negotiate the most appropriate format to minimize conversions.
1397
1398 It accepts the following parameters:
1399 @table @option
1400
1401 @item sample_fmts, f
1402 A '|'-separated list of requested sample formats.
1403
1404 @item sample_rates, r
1405 A '|'-separated list of requested sample rates.
1406
1407 @item channel_layouts, cl
1408 A '|'-separated list of requested channel layouts.
1409
1410 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1411 for the required syntax.
1412 @end table
1413
1414 If a parameter is omitted, all values are allowed.
1415
1416 Force the output to either unsigned 8-bit or signed 16-bit stereo
1417 @example
1418 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1419 @end example
1420
1421 @section afreqshift
1422 Apply frequency shift to input audio samples.
1423
1424 The filter accepts the following options:
1425
1426 @table @option
1427 @item shift
1428 Specify frequency shift. Allowed range is -INT_MAX to INT_MAX.
1429 Default value is 0.0.
1430
1431 @item level
1432 Set output gain applied to final output. Allowed range is from 0.0 to 1.0.
1433 Default value is 1.0.
1434 @end table
1435
1436 @subsection Commands
1437
1438 This filter supports the all above options as @ref{commands}.
1439
1440 @section agate
1441
1442 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1443 processing reduces disturbing noise between useful signals.
1444
1445 Gating is done by detecting the volume below a chosen level @var{threshold}
1446 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1447 floor is set via @var{range}. Because an exact manipulation of the signal
1448 would cause distortion of the waveform the reduction can be levelled over
1449 time. This is done by setting @var{attack} and @var{release}.
1450
1451 @var{attack} determines how long the signal has to fall below the threshold
1452 before any reduction will occur and @var{release} sets the time the signal
1453 has to rise above the threshold to reduce the reduction again.
1454 Shorter signals than the chosen attack time will be left untouched.
1455
1456 @table @option
1457 @item level_in
1458 Set input level before filtering.
1459 Default is 1. Allowed range is from 0.015625 to 64.
1460
1461 @item mode
1462 Set the mode of operation. Can be @code{upward} or @code{downward}.
1463 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1464 will be amplified, expanding dynamic range in upward direction.
1465 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1466
1467 @item range
1468 Set the level of gain reduction when the signal is below the threshold.
1469 Default is 0.06125. Allowed range is from 0 to 1.
1470 Setting this to 0 disables reduction and then filter behaves like expander.
1471
1472 @item threshold
1473 If a signal rises above this level the gain reduction is released.
1474 Default is 0.125. Allowed range is from 0 to 1.
1475
1476 @item ratio
1477 Set a ratio by which the signal is reduced.
1478 Default is 2. Allowed range is from 1 to 9000.
1479
1480 @item attack
1481 Amount of milliseconds the signal has to rise above the threshold before gain
1482 reduction stops.
1483 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1484
1485 @item release
1486 Amount of milliseconds the signal has to fall below the threshold before the
1487 reduction is increased again. Default is 250 milliseconds.
1488 Allowed range is from 0.01 to 9000.
1489
1490 @item makeup
1491 Set amount of amplification of signal after processing.
1492 Default is 1. Allowed range is from 1 to 64.
1493
1494 @item knee
1495 Curve the sharp knee around the threshold to enter gain reduction more softly.
1496 Default is 2.828427125. Allowed range is from 1 to 8.
1497
1498 @item detection
1499 Choose if exact signal should be taken for detection or an RMS like one.
1500 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1501
1502 @item link
1503 Choose if the average level between all channels or the louder channel affects
1504 the reduction.
1505 Default is @code{average}. Can be @code{average} or @code{maximum}.
1506 @end table
1507
1508 @subsection Commands
1509
1510 This filter supports the all above options as @ref{commands}.
1511
1512 @section aiir
1513
1514 Apply an arbitrary Infinite Impulse Response filter.
1515
1516 It accepts the following parameters:
1517
1518 @table @option
1519 @item zeros, z
1520 Set B/numerator/zeros/reflection coefficients.
1521
1522 @item poles, p
1523 Set A/denominator/poles/ladder coefficients.
1524
1525 @item gains, k
1526 Set channels gains.
1527
1528 @item dry_gain
1529 Set input gain.
1530
1531 @item wet_gain
1532 Set output gain.
1533
1534 @item format, f
1535 Set coefficients format.
1536
1537 @table @samp
1538 @item ll
1539 lattice-ladder function
1540 @item sf
1541 analog transfer function
1542 @item tf
1543 digital transfer function
1544 @item zp
1545 Z-plane zeros/poles, cartesian (default)
1546 @item pr
1547 Z-plane zeros/poles, polar radians
1548 @item pd
1549 Z-plane zeros/poles, polar degrees
1550 @item sp
1551 S-plane zeros/poles
1552 @end table
1553
1554 @item process, r
1555 Set type of processing.
1556
1557 @table @samp
1558 @item d
1559 direct processing
1560 @item s
1561 serial processing
1562 @item p
1563 parallel processing
1564 @end table
1565
1566 @item precision, e
1567 Set filtering precision.
1568
1569 @table @samp
1570 @item dbl
1571 double-precision floating-point (default)
1572 @item flt
1573 single-precision floating-point
1574 @item i32
1575 32-bit integers
1576 @item i16
1577 16-bit integers
1578 @end table
1579
1580 @item normalize, n
1581 Normalize filter coefficients, by default is enabled.
1582 Enabling it will normalize magnitude response at DC to 0dB.
1583
1584 @item mix
1585 How much to use filtered signal in output. Default is 1.
1586 Range is between 0 and 1.
1587
1588 @item response
1589 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1590 By default it is disabled.
1591
1592 @item channel
1593 Set for which IR channel to display frequency response. By default is first channel
1594 displayed. This option is used only when @var{response} is enabled.
1595
1596 @item size
1597 Set video stream size. This option is used only when @var{response} is enabled.
1598 @end table
1599
1600 Coefficients in @code{tf} and @code{sf} format are separated by spaces and are in ascending
1601 order.
1602
1603 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1604 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1605 imaginary unit.
1606
1607 Different coefficients and gains can be provided for every channel, in such case
1608 use '|' to separate coefficients or gains. Last provided coefficients will be
1609 used for all remaining channels.
1610
1611 @subsection Examples
1612
1613 @itemize
1614 @item
1615 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1616 @example
1617 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
1618 @end example
1619
1620 @item
1621 Same as above but in @code{zp} format:
1622 @example
1623 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
1624 @end example
1625
1626 @item
1627 Apply 3-rd order analog normalized Butterworth low-pass filter, using analog transfer function format:
1628 @example
1629 aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
1630 @end example
1631 @end itemize
1632
1633 @section alimiter
1634
1635 The limiter prevents an input signal from rising over a desired threshold.
1636 This limiter uses lookahead technology to prevent your signal from distorting.
1637 It means that there is a small delay after the signal is processed. Keep in mind
1638 that the delay it produces is the attack time you set.
1639
1640 The filter accepts the following options:
1641
1642 @table @option
1643 @item level_in
1644 Set input gain. Default is 1.
1645
1646 @item level_out
1647 Set output gain. Default is 1.
1648
1649 @item limit
1650 Don't let signals above this level pass the limiter. Default is 1.
1651
1652 @item attack
1653 The limiter will reach its attenuation level in this amount of time in
1654 milliseconds. Default is 5 milliseconds.
1655
1656 @item release
1657 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1658 Default is 50 milliseconds.
1659
1660 @item asc
1661 When gain reduction is always needed ASC takes care of releasing to an
1662 average reduction level rather than reaching a reduction of 0 in the release
1663 time.
1664
1665 @item asc_level
1666 Select how much the release time is affected by ASC, 0 means nearly no changes
1667 in release time while 1 produces higher release times.
1668
1669 @item level
1670 Auto level output signal. Default is enabled.
1671 This normalizes audio back to 0dB if enabled.
1672 @end table
1673
1674 Depending on picked setting it is recommended to upsample input 2x or 4x times
1675 with @ref{aresample} before applying this filter.
1676
1677 @section allpass
1678
1679 Apply a two-pole all-pass filter with central frequency (in Hz)
1680 @var{frequency}, and filter-width @var{width}.
1681 An all-pass filter changes the audio's frequency to phase relationship
1682 without changing its frequency to amplitude relationship.
1683
1684 The filter accepts the following options:
1685
1686 @table @option
1687 @item frequency, f
1688 Set frequency in Hz.
1689
1690 @item width_type, t
1691 Set method to specify band-width of filter.
1692 @table @option
1693 @item h
1694 Hz
1695 @item q
1696 Q-Factor
1697 @item o
1698 octave
1699 @item s
1700 slope
1701 @item k
1702 kHz
1703 @end table
1704
1705 @item width, w
1706 Specify the band-width of a filter in width_type units.
1707
1708 @item mix, m
1709 How much to use filtered signal in output. Default is 1.
1710 Range is between 0 and 1.
1711
1712 @item channels, c
1713 Specify which channels to filter, by default all available are filtered.
1714
1715 @item normalize, n
1716 Normalize biquad coefficients, by default is disabled.
1717 Enabling it will normalize magnitude response at DC to 0dB.
1718
1719 @item order, o
1720 Set the filter order, can be 1 or 2. Default is 2.
1721
1722 @item transform, a
1723 Set transform type of IIR filter.
1724 @table @option
1725 @item di
1726 @item dii
1727 @item tdii
1728 @item latt
1729 @end table
1730
1731 @item precision, r
1732 Set precison of filtering.
1733 @table @option
1734 @item auto
1735 Pick automatic sample format depending on surround filters.
1736 @item s16
1737 Always use signed 16-bit.
1738 @item s32
1739 Always use signed 32-bit.
1740 @item f32
1741 Always use float 32-bit.
1742 @item f64
1743 Always use float 64-bit.
1744 @end table
1745 @end table
1746
1747 @subsection Commands
1748
1749 This filter supports the following commands:
1750 @table @option
1751 @item frequency, f
1752 Change allpass frequency.
1753 Syntax for the command is : "@var{frequency}"
1754
1755 @item width_type, t
1756 Change allpass width_type.
1757 Syntax for the command is : "@var{width_type}"
1758
1759 @item width, w
1760 Change allpass width.
1761 Syntax for the command is : "@var{width}"
1762
1763 @item mix, m
1764 Change allpass mix.
1765 Syntax for the command is : "@var{mix}"
1766 @end table
1767
1768 @section aloop
1769
1770 Loop audio samples.
1771
1772 The filter accepts the following options:
1773
1774 @table @option
1775 @item loop
1776 Set the number of loops. Setting this value to -1 will result in infinite loops.
1777 Default is 0.
1778
1779 @item size
1780 Set maximal number of samples. Default is 0.
1781
1782 @item start
1783 Set first sample of loop. Default is 0.
1784 @end table
1785
1786 @anchor{amerge}
1787 @section amerge
1788
1789 Merge two or more audio streams into a single multi-channel stream.
1790
1791 The filter accepts the following options:
1792
1793 @table @option
1794
1795 @item inputs
1796 Set the number of inputs. Default is 2.
1797
1798 @end table
1799
1800 If the channel layouts of the inputs are disjoint, and therefore compatible,
1801 the channel layout of the output will be set accordingly and the channels
1802 will be reordered as necessary. If the channel layouts of the inputs are not
1803 disjoint, the output will have all the channels of the first input then all
1804 the channels of the second input, in that order, and the channel layout of
1805 the output will be the default value corresponding to the total number of
1806 channels.
1807
1808 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1809 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1810 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1811 first input, b1 is the first channel of the second input).
1812
1813 On the other hand, if both input are in stereo, the output channels will be
1814 in the default order: a1, a2, b1, b2, and the channel layout will be
1815 arbitrarily set to 4.0, which may or may not be the expected value.
1816
1817 All inputs must have the same sample rate, and format.
1818
1819 If inputs do not have the same duration, the output will stop with the
1820 shortest.
1821
1822 @subsection Examples
1823
1824 @itemize
1825 @item
1826 Merge two mono files into a stereo stream:
1827 @example
1828 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1829 @end example
1830
1831 @item
1832 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1833 @example
1834 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
1835 @end example
1836 @end itemize
1837
1838 @section amix
1839
1840 Mixes multiple audio inputs into a single output.
1841
1842 Note that this filter only supports float samples (the @var{amerge}
1843 and @var{pan} audio filters support many formats). If the @var{amix}
1844 input has integer samples then @ref{aresample} will be automatically
1845 inserted to perform the conversion to float samples.
1846
1847 For example
1848 @example
1849 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1850 @end example
1851 will mix 3 input audio streams to a single output with the same duration as the
1852 first input and a dropout transition time of 3 seconds.
1853
1854 It accepts the following parameters:
1855 @table @option
1856
1857 @item inputs
1858 The number of inputs. If unspecified, it defaults to 2.
1859
1860 @item duration
1861 How to determine the end-of-stream.
1862 @table @option
1863
1864 @item longest
1865 The duration of the longest input. (default)
1866
1867 @item shortest
1868 The duration of the shortest input.
1869
1870 @item first
1871 The duration of the first input.
1872
1873 @end table
1874
1875 @item dropout_transition
1876 The transition time, in seconds, for volume renormalization when an input
1877 stream ends. The default value is 2 seconds.
1878
1879 @item weights
1880 Specify weight of each input audio stream as sequence.
1881 Each weight is separated by space. By default all inputs have same weight.
1882
1883 @item sum
1884 Do not scale inputs but instead do only summation of samples.
1885 Beware of heavy clipping if inputs are not normalized prior of filtering
1886 or output from @var{amix} normalized after filtering. By default is disabled.
1887 @end table
1888
1889 @subsection Commands
1890
1891 This filter supports the following commands:
1892 @table @option
1893 @item weights
1894 @item sum
1895 Syntax is same as option with same name.
1896 @end table
1897
1898 @section amultiply
1899
1900 Multiply first audio stream with second audio stream and store result
1901 in output audio stream. Multiplication is done by multiplying each
1902 sample from first stream with sample at same position from second stream.
1903
1904 With this element-wise multiplication one can create amplitude fades and
1905 amplitude modulations.
1906
1907 @section anequalizer
1908
1909 High-order parametric multiband equalizer for each channel.
1910
1911 It accepts the following parameters:
1912 @table @option
1913 @item params
1914
1915 This option string is in format:
1916 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1917 Each equalizer band is separated by '|'.
1918
1919 @table @option
1920 @item chn
1921 Set channel number to which equalization will be applied.
1922 If input doesn't have that channel the entry is ignored.
1923
1924 @item f
1925 Set central frequency for band.
1926 If input doesn't have that frequency the entry is ignored.
1927
1928 @item w
1929 Set band width in Hertz.
1930
1931 @item g
1932 Set band gain in dB.
1933
1934 @item t
1935 Set filter type for band, optional, can be:
1936
1937 @table @samp
1938 @item 0
1939 Butterworth, this is default.
1940
1941 @item 1
1942 Chebyshev type 1.
1943
1944 @item 2
1945 Chebyshev type 2.
1946 @end table
1947 @end table
1948
1949 @item curves
1950 With this option activated frequency response of anequalizer is displayed
1951 in video stream.
1952
1953 @item size
1954 Set video stream size. Only useful if curves option is activated.
1955
1956 @item mgain
1957 Set max gain that will be displayed. Only useful if curves option is activated.
1958 Setting this to a reasonable value makes it possible to display gain which is derived from
1959 neighbour bands which are too close to each other and thus produce higher gain
1960 when both are activated.
1961
1962 @item fscale
1963 Set frequency scale used to draw frequency response in video output.
1964 Can be linear or logarithmic. Default is logarithmic.
1965
1966 @item colors
1967 Set color for each channel curve which is going to be displayed in video stream.
1968 This is list of color names separated by space or by '|'.
1969 Unrecognised or missing colors will be replaced by white color.
1970 @end table
1971
1972 @subsection Examples
1973
1974 @itemize
1975 @item
1976 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1977 for first 2 channels using Chebyshev type 1 filter:
1978 @example
1979 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1980 @end example
1981 @end itemize
1982
1983 @subsection Commands
1984
1985 This filter supports the following commands:
1986 @table @option
1987 @item change
1988 Alter existing filter parameters.
1989 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1990
1991 @var{fN} is existing filter number, starting from 0, if no such filter is available
1992 error is returned.
1993 @var{freq} set new frequency parameter.
1994 @var{width} set new width parameter in Hertz.
1995 @var{gain} set new gain parameter in dB.
1996
1997 Full filter invocation with asendcmd may look like this:
1998 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1999 @end table
2000
2001 @section anlmdn
2002
2003 Reduce broadband noise in audio samples using Non-Local Means algorithm.
2004
2005 Each sample is adjusted by looking for other samples with similar contexts. This
2006 context similarity is defined by comparing their surrounding patches of size
2007 @option{p}. Patches are searched in an area of @option{r} around the sample.
2008
2009 The filter accepts the following options:
2010
2011 @table @option
2012 @item s
2013 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
2014
2015 @item p
2016 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
2017 Default value is 2 milliseconds.
2018
2019 @item r
2020 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
2021 Default value is 6 milliseconds.
2022
2023 @item o
2024 Set the output mode.
2025
2026 It accepts the following values:
2027 @table @option
2028 @item i
2029 Pass input unchanged.
2030
2031 @item o
2032 Pass noise filtered out.
2033
2034 @item n
2035 Pass only noise.
2036
2037 Default value is @var{o}.
2038 @end table
2039
2040 @item m
2041 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
2042 @end table
2043
2044 @subsection Commands
2045
2046 This filter supports the all above options as @ref{commands}.
2047
2048 @section anlms
2049 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
2050
2051 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
2052 relate to producing the least mean square of the error signal (difference between the desired,
2053 2nd input audio stream and the actual signal, the 1st input audio stream).
2054
2055 A description of the accepted options follows.
2056
2057 @table @option
2058 @item order
2059 Set filter order.
2060
2061 @item mu
2062 Set filter mu.
2063
2064 @item eps
2065 Set the filter eps.
2066
2067 @item leakage
2068 Set the filter leakage.
2069
2070 @item out_mode
2071 It accepts the following values:
2072 @table @option
2073 @item i
2074 Pass the 1st input.
2075
2076 @item d
2077 Pass the 2nd input.
2078
2079 @item o
2080 Pass filtered samples.
2081
2082 @item n
2083 Pass difference between desired and filtered samples.
2084
2085 Default value is @var{o}.
2086 @end table
2087 @end table
2088
2089 @subsection Examples
2090
2091 @itemize
2092 @item
2093 One of many usages of this filter is noise reduction, input audio is filtered
2094 with same samples that are delayed by fixed amount, one such example for stereo audio is:
2095 @example
2096 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
2097 @end example
2098 @end itemize
2099
2100 @subsection Commands
2101
2102 This filter supports the same commands as options, excluding option @code{order}.
2103
2104 @section anull
2105
2106 Pass the audio source unchanged to the output.
2107
2108 @section apad
2109
2110 Pad the end of an audio stream with silence.
2111
2112 This can be used together with @command{ffmpeg} @option{-shortest} to
2113 extend audio streams to the same length as the video stream.
2114
2115 A description of the accepted options follows.
2116
2117 @table @option
2118 @item packet_size
2119 Set silence packet size. Default value is 4096.
2120
2121 @item pad_len
2122 Set the number of samples of silence to add to the end. After the
2123 value is reached, the stream is terminated. This option is mutually
2124 exclusive with @option{whole_len}.
2125
2126 @item whole_len
2127 Set the minimum total number of samples in the output audio stream. If
2128 the value is longer than the input audio length, silence is added to
2129 the end, until the value is reached. This option is mutually exclusive
2130 with @option{pad_len}.
2131
2132 @item pad_dur
2133 Specify the duration of samples of silence to add. See
2134 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2135 for the accepted syntax. Used only if set to non-zero value.
2136
2137 @item whole_dur
2138 Specify the minimum total duration in the output audio stream. See
2139 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2140 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
2141 the input audio length, silence is added to the end, until the value is reached.
2142 This option is mutually exclusive with @option{pad_dur}
2143 @end table
2144
2145 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
2146 nor @option{whole_dur} option is set, the filter will add silence to the end of
2147 the input stream indefinitely.
2148
2149 @subsection Examples
2150
2151 @itemize
2152 @item
2153 Add 1024 samples of silence to the end of the input:
2154 @example
2155 apad=pad_len=1024
2156 @end example
2157
2158 @item
2159 Make sure the audio output will contain at least 10000 samples, pad
2160 the input with silence if required:
2161 @example
2162 apad=whole_len=10000
2163 @end example
2164
2165 @item
2166 Use @command{ffmpeg} to pad the audio input with silence, so that the
2167 video stream will always result the shortest and will be converted
2168 until the end in the output file when using the @option{shortest}
2169 option:
2170 @example
2171 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
2172 @end example
2173 @end itemize
2174
2175 @section aphaser
2176 Add a phasing effect to the input audio.
2177
2178 A phaser filter creates series of peaks and troughs in the frequency spectrum.
2179 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
2180
2181 A description of the accepted parameters follows.
2182
2183 @table @option
2184 @item in_gain
2185 Set input gain. Default is 0.4.
2186
2187 @item out_gain
2188 Set output gain. Default is 0.74
2189
2190 @item delay
2191 Set delay in milliseconds. Default is 3.0.
2192
2193 @item decay
2194 Set decay. Default is 0.4.
2195
2196 @item speed
2197 Set modulation speed in Hz. Default is 0.5.
2198
2199 @item type
2200 Set modulation type. Default is triangular.
2201
2202 It accepts the following values:
2203 @table @samp
2204 @item triangular, t
2205 @item sinusoidal, s
2206 @end table
2207 @end table
2208
2209 @section aphaseshift
2210 Apply phase shift to input audio samples.
2211
2212 The filter accepts the following options:
2213
2214 @table @option
2215 @item shift
2216 Specify phase shift. Allowed range is from -1.0 to 1.0.
2217 Default value is 0.0.
2218
2219 @item level
2220 Set output gain applied to final output. Allowed range is from 0.0 to 1.0.
2221 Default value is 1.0.
2222 @end table
2223
2224 @subsection Commands
2225
2226 This filter supports the all above options as @ref{commands}.
2227
2228 @section apulsator
2229
2230 Audio pulsator is something between an autopanner and a tremolo.
2231 But it can produce funny stereo effects as well. Pulsator changes the volume
2232 of the left and right channel based on a LFO (low frequency oscillator) with
2233 different waveforms and shifted phases.
2234 This filter have the ability to define an offset between left and right
2235 channel. An offset of 0 means that both LFO shapes match each other.
2236 The left and right channel are altered equally - a conventional tremolo.
2237 An offset of 50% means that the shape of the right channel is exactly shifted
2238 in phase (or moved backwards about half of the frequency) - pulsator acts as
2239 an autopanner. At 1 both curves match again. Every setting in between moves the
2240 phase shift gapless between all stages and produces some "bypassing" sounds with
2241 sine and triangle waveforms. The more you set the offset near 1 (starting from
2242 the 0.5) the faster the signal passes from the left to the right speaker.
2243
2244 The filter accepts the following options:
2245
2246 @table @option
2247 @item level_in
2248 Set input gain. By default it is 1. Range is [0.015625 - 64].
2249
2250 @item level_out
2251 Set output gain. By default it is 1. Range is [0.015625 - 64].
2252
2253 @item mode
2254 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2255 sawup or sawdown. Default is sine.
2256
2257 @item amount
2258 Set modulation. Define how much of original signal is affected by the LFO.
2259
2260 @item offset_l
2261 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2262
2263 @item offset_r
2264 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2265
2266 @item width
2267 Set pulse width. Default is 1. Allowed range is [0 - 2].
2268
2269 @item timing
2270 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2271
2272 @item bpm
2273 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2274 is set to bpm.
2275
2276 @item ms
2277 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2278 is set to ms.
2279
2280 @item hz
2281 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2282 if timing is set to hz.
2283 @end table
2284
2285 @anchor{aresample}
2286 @section aresample
2287
2288 Resample the input audio to the specified parameters, using the
2289 libswresample library. If none are specified then the filter will
2290 automatically convert between its input and output.
2291
2292 This filter is also able to stretch/squeeze the audio data to make it match
2293 the timestamps or to inject silence / cut out audio to make it match the
2294 timestamps, do a combination of both or do neither.
2295
2296 The filter accepts the syntax
2297 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2298 expresses a sample rate and @var{resampler_options} is a list of
2299 @var{key}=@var{value} pairs, separated by ":". See the
2300 @ref{Resampler Options,,"Resampler Options" section in the
2301 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2302 for the complete list of supported options.
2303
2304 @subsection Examples
2305
2306 @itemize
2307 @item
2308 Resample the input audio to 44100Hz:
2309 @example
2310 aresample=44100
2311 @end example
2312
2313 @item
2314 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2315 samples per second compensation:
2316 @example
2317 aresample=async=1000
2318 @end example
2319 @end itemize
2320
2321 @section areverse
2322
2323 Reverse an audio clip.
2324
2325 Warning: This filter requires memory to buffer the entire clip, so trimming
2326 is suggested.
2327
2328 @subsection Examples
2329
2330 @itemize
2331 @item
2332 Take the first 5 seconds of a clip, and reverse it.
2333 @example
2334 atrim=end=5,areverse
2335 @end example
2336 @end itemize
2337
2338 @section arnndn
2339
2340 Reduce noise from speech using Recurrent Neural Networks.
2341
2342 This filter accepts the following options:
2343
2344 @table @option
2345 @item model, m
2346 Set train model file to load. This option is always required.
2347
2348 @item mix
2349 Set how much to mix filtered samples into final output.
2350 Allowed range is from -1 to 1. Default value is 1.
2351 Negative values are special, they set how much to keep filtered noise
2352 in the final filter output. Set this option to -1 to hear actual
2353 noise removed from input signal.
2354 @end table
2355
2356 @section asetnsamples
2357
2358 Set the number of samples per each output audio frame.
2359
2360 The last output packet may contain a different number of samples, as
2361 the filter will flush all the remaining samples when the input audio
2362 signals its end.
2363
2364 The filter accepts the following options:
2365
2366 @table @option
2367
2368 @item nb_out_samples, n
2369 Set the number of frames per each output audio frame. The number is
2370 intended as the number of samples @emph{per each channel}.
2371 Default value is 1024.
2372
2373 @item pad, p
2374 If set to 1, the filter will pad the last audio frame with zeroes, so
2375 that the last frame will contain the same number of samples as the
2376 previous ones. Default value is 1.
2377 @end table
2378
2379 For example, to set the number of per-frame samples to 1234 and
2380 disable padding for the last frame, use:
2381 @example
2382 asetnsamples=n=1234:p=0
2383 @end example
2384
2385 @section asetrate
2386
2387 Set the sample rate without altering the PCM data.
2388 This will result in a change of speed and pitch.
2389
2390 The filter accepts the following options:
2391
2392 @table @option
2393 @item sample_rate, r
2394 Set the output sample rate. Default is 44100 Hz.
2395 @end table
2396
2397 @section ashowinfo
2398
2399 Show a line containing various information for each input audio frame.
2400 The input audio is not modified.
2401
2402 The shown line contains a sequence of key/value pairs of the form
2403 @var{key}:@var{value}.
2404
2405 The following values are shown in the output:
2406
2407 @table @option
2408 @item n
2409 The (sequential) number of the input frame, starting from 0.
2410
2411 @item pts
2412 The presentation timestamp of the input frame, in time base units; the time base
2413 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2414
2415 @item pts_time
2416 The presentation timestamp of the input frame in seconds.
2417
2418 @item pos
2419 position of the frame in the input stream, -1 if this information in
2420 unavailable and/or meaningless (for example in case of synthetic audio)
2421
2422 @item fmt
2423 The sample format.
2424
2425 @item chlayout
2426 The channel layout.
2427
2428 @item rate
2429 The sample rate for the audio frame.
2430
2431 @item nb_samples
2432 The number of samples (per channel) in the frame.
2433
2434 @item checksum
2435 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2436 audio, the data is treated as if all the planes were concatenated.
2437
2438 @item plane_checksums
2439 A list of Adler-32 checksums for each data plane.
2440 @end table
2441
2442 @section asoftclip
2443 Apply audio soft clipping.
2444
2445 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2446 along a smooth curve, rather than the abrupt shape of hard-clipping.
2447
2448 This filter accepts the following options:
2449
2450 @table @option
2451 @item type
2452 Set type of soft-clipping.
2453
2454 It accepts the following values:
2455 @table @option
2456 @item hard
2457 @item tanh
2458 @item atan
2459 @item cubic
2460 @item exp
2461 @item alg
2462 @item quintic
2463 @item sin
2464 @item erf
2465 @end table
2466
2467 @item threshold
2468 Set threshold from where to start clipping. Default value is 0dB or 1.
2469
2470 @item output
2471 Set gain applied to output. Default value is 0dB or 1.
2472
2473 @item param
2474 Set additional parameter which controls sigmoid function.
2475
2476 @item oversample
2477 Set oversampling factor.
2478 @end table
2479
2480 @subsection Commands
2481
2482 This filter supports the all above options as @ref{commands}.
2483
2484 @section asr
2485 Automatic Speech Recognition
2486
2487 This filter uses PocketSphinx for speech recognition. To enable
2488 compilation of this filter, you need to configure FFmpeg with
2489 @code{--enable-pocketsphinx}.
2490
2491 It accepts the following options:
2492
2493 @table @option
2494 @item rate
2495 Set sampling rate of input audio. Defaults is @code{16000}.
2496 This need to match speech models, otherwise one will get poor results.
2497
2498 @item hmm
2499 Set dictionary containing acoustic model files.
2500
2501 @item dict
2502 Set pronunciation dictionary.
2503
2504 @item lm
2505 Set language model file.
2506
2507 @item lmctl
2508 Set language model set.
2509
2510 @item lmname
2511 Set which language model to use.
2512
2513 @item logfn
2514 Set output for log messages.
2515 @end table
2516
2517 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2518
2519 @anchor{astats}
2520 @section astats
2521
2522 Display time domain statistical information about the audio channels.
2523 Statistics are calculated and displayed for each audio channel and,
2524 where applicable, an overall figure is also given.
2525
2526 It accepts the following option:
2527 @table @option
2528 @item length
2529 Short window length in seconds, used for peak and trough RMS measurement.
2530 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2531
2532 @item metadata
2533
2534 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2535 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2536 disabled.
2537
2538 Available keys for each channel are:
2539 DC_offset
2540 Min_level
2541 Max_level
2542 Min_difference
2543 Max_difference
2544 Mean_difference
2545 RMS_difference
2546 Peak_level
2547 RMS_peak
2548 RMS_trough
2549 Crest_factor
2550 Flat_factor
2551 Peak_count
2552 Noise_floor
2553 Noise_floor_count
2554 Bit_depth
2555 Dynamic_range
2556 Zero_crossings
2557 Zero_crossings_rate
2558 Number_of_NaNs
2559 Number_of_Infs
2560 Number_of_denormals
2561
2562 and for Overall:
2563 DC_offset
2564 Min_level
2565 Max_level
2566 Min_difference
2567 Max_difference
2568 Mean_difference
2569 RMS_difference
2570 Peak_level
2571 RMS_level
2572 RMS_peak
2573 RMS_trough
2574 Flat_factor
2575 Peak_count
2576 Noise_floor
2577 Noise_floor_count
2578 Bit_depth
2579 Number_of_samples
2580 Number_of_NaNs
2581 Number_of_Infs
2582 Number_of_denormals
2583
2584 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2585 this @code{lavfi.astats.Overall.Peak_count}.
2586
2587 For description what each key means read below.
2588
2589 @item reset
2590 Set number of frame after which stats are going to be recalculated.
2591 Default is disabled.
2592
2593 @item measure_perchannel
2594 Select the entries which need to be measured per channel. The metadata keys can
2595 be used as flags, default is @option{all} which measures everything.
2596 @option{none} disables all per channel measurement.
2597
2598 @item measure_overall
2599 Select the entries which need to be measured overall. The metadata keys can
2600 be used as flags, default is @option{all} which measures everything.
2601 @option{none} disables all overall measurement.
2602
2603 @end table
2604
2605 A description of each shown parameter follows:
2606
2607 @table @option
2608 @item DC offset
2609 Mean amplitude displacement from zero.
2610
2611 @item Min level
2612 Minimal sample level.
2613
2614 @item Max level
2615 Maximal sample level.
2616
2617 @item Min difference
2618 Minimal difference between two consecutive samples.
2619
2620 @item Max difference
2621 Maximal difference between two consecutive samples.
2622
2623 @item Mean difference
2624 Mean difference between two consecutive samples.
2625 The average of each difference between two consecutive samples.
2626
2627 @item RMS difference
2628 Root Mean Square difference between two consecutive samples.
2629
2630 @item Peak level dB
2631 @item RMS level dB
2632 Standard peak and RMS level measured in dBFS.
2633
2634 @item RMS peak dB
2635 @item RMS trough dB
2636 Peak and trough values for RMS level measured over a short window.
2637
2638 @item Crest factor
2639 Standard ratio of peak to RMS level (note: not in dB).
2640
2641 @item Flat factor
2642 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2643 (i.e. either @var{Min level} or @var{Max level}).
2644
2645 @item Peak count
2646 Number of occasions (not the number of samples) that the signal attained either
2647 @var{Min level} or @var{Max level}.
2648
2649 @item Noise floor dB
2650 Minimum local peak measured in dBFS over a short window.
2651
2652 @item Noise floor count
2653 Number of occasions (not the number of samples) that the signal attained
2654 @var{Noise floor}.
2655
2656 @item Bit depth
2657 Overall bit depth of audio. Number of bits used for each sample.
2658
2659 @item Dynamic range
2660 Measured dynamic range of audio in dB.
2661
2662 @item Zero crossings
2663 Number of points where the waveform crosses the zero level axis.
2664
2665 @item Zero crossings rate
2666 Rate of Zero crossings and number of audio samples.
2667 @end table
2668
2669 @section asubboost
2670 Boost subwoofer frequencies.
2671
2672 The filter accepts the following options:
2673
2674 @table @option
2675 @item dry
2676 Set dry gain, how much of original signal is kept. Allowed range is from 0 to 1.
2677 Default value is 0.7.
2678
2679 @item wet
2680 Set wet gain, how much of filtered signal is kept. Allowed range is from 0 to 1.
2681 Default value is 0.7.
2682
2683 @item decay
2684 Set delay line decay gain value. Allowed range is from 0 to 1.
2685 Default value is 0.7.
2686
2687 @item feedback
2688 Set delay line feedback gain value. Allowed range is from 0 to 1.
2689 Default value is 0.9.
2690
2691 @item cutoff
2692 Set cutoff frequency in Hertz. Allowed range is 50 to 900.
2693 Default value is 100.
2694
2695 @item slope
2696 Set slope amount for cutoff frequency. Allowed range is 0.0001 to 1.
2697 Default value is 0.5.
2698
2699 @item delay
2700 Set delay. Allowed range is from 1 to 100.
2701 Default value is 20.
2702 @end table
2703
2704 @subsection Commands
2705
2706 This filter supports the all above options as @ref{commands}.
2707
2708 @section asubcut
2709 Cut subwoofer frequencies.
2710
2711 This filter allows to set custom, steeper
2712 roll off than highpass filter, and thus is able to more attenuate
2713 frequency content in stop-band.
2714
2715 The filter accepts the following options:
2716
2717 @table @option
2718 @item cutoff
2719 Set cutoff frequency in Hertz. Allowed range is 2 to 200.
2720 Default value is 20.
2721
2722 @item order
2723 Set filter order. Available values are from 3 to 20.
2724 Default value is 10.
2725
2726 @item level
2727 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
2728 @end table
2729
2730 @subsection Commands
2731
2732 This filter supports the all above options as @ref{commands}.
2733
2734 @section asupercut
2735 Cut super frequencies.
2736
2737 The filter accepts the following options:
2738
2739 @table @option
2740 @item cutoff
2741 Set cutoff frequency in Hertz. Allowed range is 20000 to 192000.
2742 Default value is 20000.
2743
2744 @item order
2745 Set filter order. Available values are from 3 to 20.
2746 Default value is 10.
2747
2748 @item level
2749 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
2750 @end table
2751
2752 @subsection Commands
2753
2754 This filter supports the all above options as @ref{commands}.
2755
2756 @section asuperpass
2757 Apply high order Butterworth band-pass filter.
2758
2759 The filter accepts the following options:
2760
2761 @table @option
2762 @item centerf
2763 Set center frequency in Hertz. Allowed range is 2 to 999999.
2764 Default value is 1000.
2765
2766 @item order
2767 Set filter order. Available values are from 4 to 20.
2768 Default value is 4.
2769
2770 @item qfactor
2771 Set Q-factor. Allowed range is from 0.01 to 100. Default value is 1.
2772
2773 @item level
2774 Set input gain level. Allowed range is from 0 to 2. Default value is 1.
2775 @end table
2776
2777 @subsection Commands
2778
2779 This filter supports the all above options as @ref{commands}.
2780
2781 @section asuperstop
2782 Apply high order Butterworth band-stop filter.
2783
2784 The filter accepts the following options:
2785
2786 @table @option
2787 @item centerf
2788 Set center frequency in Hertz. Allowed range is 2 to 999999.
2789 Default value is 1000.
2790
2791 @item order
2792 Set filter order. Available values are from 4 to 20.
2793 Default value is 4.
2794
2795 @item qfactor
2796 Set Q-factor. Allowed range is from 0.01 to 100. Default value is 1.
2797
2798 @item level
2799 Set input gain level. Allowed range is from 0 to 2. Default value is 1.
2800 @end table
2801
2802 @subsection Commands
2803
2804 This filter supports the all above options as @ref{commands}.
2805
2806 @section atempo
2807
2808 Adjust audio tempo.
2809
2810 The filter accepts exactly one parameter, the audio tempo. If not
2811 specified then the filter will assume nominal 1.0 tempo. Tempo must
2812 be in the [0.5, 100.0] range.
2813
2814 Note that tempo greater than 2 will skip some samples rather than
2815 blend them in.  If for any reason this is a concern it is always
2816 possible to daisy-chain several instances of atempo to achieve the
2817 desired product tempo.
2818
2819 @subsection Examples
2820
2821 @itemize
2822 @item
2823 Slow down audio to 80% tempo:
2824 @example
2825 atempo=0.8
2826 @end example
2827
2828 @item
2829 To speed up audio to 300% tempo:
2830 @example
2831 atempo=3
2832 @end example
2833
2834 @item
2835 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2836 @example
2837 atempo=sqrt(3),atempo=sqrt(3)
2838 @end example
2839 @end itemize
2840
2841 @subsection Commands
2842
2843 This filter supports the following commands:
2844 @table @option
2845 @item tempo
2846 Change filter tempo scale factor.
2847 Syntax for the command is : "@var{tempo}"
2848 @end table
2849
2850 @section atrim
2851
2852 Trim the input so that the output contains one continuous subpart of the input.
2853
2854 It accepts the following parameters:
2855 @table @option
2856 @item start
2857 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2858 sample with the timestamp @var{start} will be the first sample in the output.
2859
2860 @item end
2861 Specify time of the first audio sample that will be dropped, i.e. the
2862 audio sample immediately preceding the one with the timestamp @var{end} will be
2863 the last sample in the output.
2864
2865 @item start_pts
2866 Same as @var{start}, except this option sets the start timestamp in samples
2867 instead of seconds.
2868
2869 @item end_pts
2870 Same as @var{end}, except this option sets the end timestamp in samples instead
2871 of seconds.
2872
2873 @item duration
2874 The maximum duration of the output in seconds.
2875
2876 @item start_sample
2877 The number of the first sample that should be output.
2878
2879 @item end_sample
2880 The number of the first sample that should be dropped.
2881 @end table
2882
2883 @option{start}, @option{end}, and @option{duration} are expressed as time
2884 duration specifications; see
2885 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2886
2887 Note that the first two sets of the start/end options and the @option{duration}
2888 option look at the frame timestamp, while the _sample options simply count the
2889 samples that pass through the filter. So start/end_pts and start/end_sample will
2890 give different results when the timestamps are wrong, inexact or do not start at
2891 zero. Also note that this filter does not modify the timestamps. If you wish
2892 to have the output timestamps start at zero, insert the asetpts filter after the
2893 atrim filter.
2894
2895 If multiple start or end options are set, this filter tries to be greedy and
2896 keep all samples that match at least one of the specified constraints. To keep
2897 only the part that matches all the constraints at once, chain multiple atrim
2898 filters.
2899
2900 The defaults are such that all the input is kept. So it is possible to set e.g.
2901 just the end values to keep everything before the specified time.
2902
2903 Examples:
2904 @itemize
2905 @item
2906 Drop everything except the second minute of input:
2907 @example
2908 ffmpeg -i INPUT -af atrim=60:120
2909 @end example
2910
2911 @item
2912 Keep only the first 1000 samples:
2913 @example
2914 ffmpeg -i INPUT -af atrim=end_sample=1000
2915 @end example
2916
2917 @end itemize
2918
2919 @section axcorrelate
2920 Calculate normalized cross-correlation between two input audio streams.
2921
2922 Resulted samples are always between -1 and 1 inclusive.
2923 If result is 1 it means two input samples are highly correlated in that selected segment.
2924 Result 0 means they are not correlated at all.
2925 If result is -1 it means two input samples are out of phase, which means they cancel each
2926 other.
2927
2928 The filter accepts the following options:
2929
2930 @table @option
2931 @item size
2932 Set size of segment over which cross-correlation is calculated.
2933 Default is 256. Allowed range is from 2 to 131072.
2934
2935 @item algo
2936 Set algorithm for cross-correlation. Can be @code{slow} or @code{fast}.
2937 Default is @code{slow}. Fast algorithm assumes mean values over any given segment
2938 are always zero and thus need much less calculations to make.
2939 This is generally not true, but is valid for typical audio streams.
2940 @end table
2941
2942 @subsection Examples
2943
2944 @itemize
2945 @item
2946 Calculate correlation between channels in stereo audio stream:
2947 @example
2948 ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
2949 @end example
2950 @end itemize
2951
2952 @section bandpass
2953
2954 Apply a two-pole Butterworth band-pass filter with central
2955 frequency @var{frequency}, and (3dB-point) band-width width.
2956 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2957 instead of the default: constant 0dB peak gain.
2958 The filter roll off at 6dB per octave (20dB per decade).
2959
2960 The filter accepts the following options:
2961
2962 @table @option
2963 @item frequency, f
2964 Set the filter's central frequency. Default is @code{3000}.
2965
2966 @item csg
2967 Constant skirt gain if set to 1. Defaults to 0.
2968
2969 @item width_type, t
2970 Set method to specify band-width of filter.
2971 @table @option
2972 @item h
2973 Hz
2974 @item q
2975 Q-Factor
2976 @item o
2977 octave
2978 @item s
2979 slope
2980 @item k
2981 kHz
2982 @end table
2983
2984 @item width, w
2985 Specify the band-width of a filter in width_type units.
2986
2987 @item mix, m
2988 How much to use filtered signal in output. Default is 1.
2989 Range is between 0 and 1.
2990
2991 @item channels, c
2992 Specify which channels to filter, by default all available are filtered.
2993
2994 @item normalize, n
2995 Normalize biquad coefficients, by default is disabled.
2996 Enabling it will normalize magnitude response at DC to 0dB.
2997
2998 @item transform, a
2999 Set transform type of IIR filter.
3000 @table @option
3001 @item di
3002 @item dii
3003 @item tdii
3004 @item latt
3005 @end table
3006
3007 @item precision, r
3008 Set precison of filtering.
3009 @table @option
3010 @item auto
3011 Pick automatic sample format depending on surround filters.
3012 @item s16
3013 Always use signed 16-bit.
3014 @item s32
3015 Always use signed 32-bit.
3016 @item f32
3017 Always use float 32-bit.
3018 @item f64
3019 Always use float 64-bit.
3020 @end table
3021 @end table
3022
3023 @subsection Commands
3024
3025 This filter supports the following commands:
3026 @table @option
3027 @item frequency, f
3028 Change bandpass frequency.
3029 Syntax for the command is : "@var{frequency}"
3030
3031 @item width_type, t
3032 Change bandpass width_type.
3033 Syntax for the command is : "@var{width_type}"
3034
3035 @item width, w
3036 Change bandpass width.
3037 Syntax for the command is : "@var{width}"
3038
3039 @item mix, m
3040 Change bandpass mix.
3041 Syntax for the command is : "@var{mix}"
3042 @end table
3043
3044 @section bandreject
3045
3046 Apply a two-pole Butterworth band-reject filter with central
3047 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
3048 The filter roll off at 6dB per octave (20dB per decade).
3049
3050 The filter accepts the following options:
3051
3052 @table @option
3053 @item frequency, f
3054 Set the filter's central frequency. Default is @code{3000}.
3055
3056 @item width_type, t
3057 Set method to specify band-width of filter.
3058 @table @option
3059 @item h
3060 Hz
3061 @item q
3062 Q-Factor
3063 @item o
3064 octave
3065 @item s
3066 slope
3067 @item k
3068 kHz
3069 @end table
3070
3071 @item width, w
3072 Specify the band-width of a filter in width_type units.
3073
3074 @item mix, m
3075 How much to use filtered signal in output. Default is 1.
3076 Range is between 0 and 1.
3077
3078 @item channels, c
3079 Specify which channels to filter, by default all available are filtered.
3080
3081 @item normalize, n
3082 Normalize biquad coefficients, by default is disabled.
3083 Enabling it will normalize magnitude response at DC to 0dB.
3084
3085 @item transform, a
3086 Set transform type of IIR filter.
3087 @table @option
3088 @item di
3089 @item dii
3090 @item tdii
3091 @item latt
3092 @end table
3093
3094 @item precision, r
3095 Set precison of filtering.
3096 @table @option
3097 @item auto
3098 Pick automatic sample format depending on surround filters.
3099 @item s16
3100 Always use signed 16-bit.
3101 @item s32
3102 Always use signed 32-bit.
3103 @item f32
3104 Always use float 32-bit.
3105 @item f64
3106 Always use float 64-bit.
3107 @end table
3108 @end table
3109
3110 @subsection Commands
3111
3112 This filter supports the following commands:
3113 @table @option
3114 @item frequency, f
3115 Change bandreject frequency.
3116 Syntax for the command is : "@var{frequency}"
3117
3118 @item width_type, t
3119 Change bandreject width_type.
3120 Syntax for the command is : "@var{width_type}"
3121
3122 @item width, w
3123 Change bandreject width.
3124 Syntax for the command is : "@var{width}"
3125
3126 @item mix, m
3127 Change bandreject mix.
3128 Syntax for the command is : "@var{mix}"
3129 @end table
3130
3131 @section bass, lowshelf
3132
3133 Boost or cut the bass (lower) frequencies of the audio using a two-pole
3134 shelving filter with a response similar to that of a standard
3135 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
3136
3137 The filter accepts the following options:
3138
3139 @table @option
3140 @item gain, g
3141 Give the gain at 0 Hz. Its useful range is about -20
3142 (for a large cut) to +20 (for a large boost).
3143 Beware of clipping when using a positive gain.
3144
3145 @item frequency, f
3146 Set the filter's central frequency and so can be used
3147 to extend or reduce the frequency range to be boosted or cut.
3148 The default value is @code{100} Hz.
3149
3150 @item width_type, t
3151 Set method to specify band-width of filter.
3152 @table @option
3153 @item h
3154 Hz
3155 @item q
3156 Q-Factor
3157 @item o
3158 octave
3159 @item s
3160 slope
3161 @item k
3162 kHz
3163 @end table
3164
3165 @item width, w
3166 Determine how steep is the filter's shelf transition.
3167
3168 @item poles, p
3169 Set number of poles. Default is 2.
3170
3171 @item mix, m
3172 How much to use filtered signal in output. Default is 1.
3173 Range is between 0 and 1.
3174
3175 @item channels, c
3176 Specify which channels to filter, by default all available are filtered.
3177
3178 @item normalize, n
3179 Normalize biquad coefficients, by default is disabled.
3180 Enabling it will normalize magnitude response at DC to 0dB.
3181
3182 @item transform, a
3183 Set transform type of IIR filter.
3184 @table @option
3185 @item di
3186 @item dii
3187 @item tdii
3188 @item latt
3189 @end table
3190
3191 @item precision, r
3192 Set precison of filtering.
3193 @table @option
3194 @item auto
3195 Pick automatic sample format depending on surround filters.
3196 @item s16
3197 Always use signed 16-bit.
3198 @item s32
3199 Always use signed 32-bit.
3200 @item f32
3201 Always use float 32-bit.
3202 @item f64
3203 Always use float 64-bit.
3204 @end table
3205 @end table
3206
3207 @subsection Commands
3208
3209 This filter supports the following commands:
3210 @table @option
3211 @item frequency, f
3212 Change bass frequency.
3213 Syntax for the command is : "@var{frequency}"
3214
3215 @item width_type, t
3216 Change bass width_type.
3217 Syntax for the command is : "@var{width_type}"
3218
3219 @item width, w
3220 Change bass width.
3221 Syntax for the command is : "@var{width}"
3222
3223 @item gain, g
3224 Change bass gain.
3225 Syntax for the command is : "@var{gain}"
3226
3227 @item mix, m
3228 Change bass mix.
3229 Syntax for the command is : "@var{mix}"
3230 @end table
3231
3232 @section biquad
3233
3234 Apply a biquad IIR filter with the given coefficients.
3235 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
3236 are the numerator and denominator coefficients respectively.
3237 and @var{channels}, @var{c} specify which channels to filter, by default all
3238 available are filtered.
3239
3240 @subsection Commands
3241
3242 This filter supports the following commands:
3243 @table @option
3244 @item a0
3245 @item a1
3246 @item a2
3247 @item b0
3248 @item b1
3249 @item b2
3250 Change biquad parameter.
3251 Syntax for the command is : "@var{value}"
3252
3253 @item mix, m
3254 How much to use filtered signal in output. Default is 1.
3255 Range is between 0 and 1.
3256
3257 @item channels, c
3258 Specify which channels to filter, by default all available are filtered.
3259
3260 @item normalize, n
3261 Normalize biquad coefficients, by default is disabled.
3262 Enabling it will normalize magnitude response at DC to 0dB.
3263
3264 @item transform, a
3265 Set transform type of IIR filter.
3266 @table @option
3267 @item di
3268 @item dii
3269 @item tdii
3270 @item latt
3271 @end table
3272
3273 @item precision, r
3274 Set precison of filtering.
3275 @table @option
3276 @item auto
3277 Pick automatic sample format depending on surround filters.
3278 @item s16
3279 Always use signed 16-bit.
3280 @item s32
3281 Always use signed 32-bit.
3282 @item f32
3283 Always use float 32-bit.
3284 @item f64
3285 Always use float 64-bit.
3286 @end table
3287 @end table
3288
3289 @section bs2b
3290 Bauer stereo to binaural transformation, which improves headphone listening of
3291 stereo audio records.
3292
3293 To enable compilation of this filter you need to configure FFmpeg with
3294 @code{--enable-libbs2b}.
3295
3296 It accepts the following parameters:
3297 @table @option
3298
3299 @item profile
3300 Pre-defined crossfeed level.
3301 @table @option
3302
3303 @item default
3304 Default level (fcut=700, feed=50).
3305
3306 @item cmoy
3307 Chu Moy circuit (fcut=700, feed=60).
3308
3309 @item jmeier
3310 Jan Meier circuit (fcut=650, feed=95).
3311
3312 @end table
3313
3314 @item fcut
3315 Cut frequency (in Hz).
3316
3317 @item feed
3318 Feed level (in Hz).
3319
3320 @end table
3321
3322 @section channelmap
3323
3324 Remap input channels to new locations.
3325
3326 It accepts the following parameters:
3327 @table @option
3328 @item map
3329 Map channels from input to output. The argument is a '|'-separated list of
3330 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
3331 @var{in_channel} form. @var{in_channel} can be either the name of the input
3332 channel (e.g. FL for front left) or its index in the input channel layout.
3333 @var{out_channel} is the name of the output channel or its index in the output
3334 channel layout. If @var{out_channel} is not given then it is implicitly an
3335 index, starting with zero and increasing by one for each mapping.
3336
3337 @item channel_layout
3338 The channel layout of the output stream.
3339 @end table
3340
3341 If no mapping is present, the filter will implicitly map input channels to
3342 output channels, preserving indices.
3343
3344 @subsection Examples
3345
3346 @itemize
3347 @item
3348 For example, assuming a 5.1+downmix input MOV file,
3349 @example
3350 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
3351 @end example
3352 will create an output WAV file tagged as stereo from the downmix channels of
3353 the input.
3354
3355 @item
3356 To fix a 5.1 WAV improperly encoded in AAC's native channel order
3357 @example
3358 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
3359 @end example
3360 @end itemize
3361
3362 @section channelsplit
3363
3364 Split each channel from an input audio stream into a separate output stream.
3365
3366 It accepts the following parameters:
3367 @table @option
3368 @item channel_layout
3369 The channel layout of the input stream. The default is "stereo".
3370 @item channels
3371 A channel layout describing the channels to be extracted as separate output streams
3372 or "all" to extract each input channel as a separate stream. The default is "all".
3373
3374 Choosing channels not present in channel layout in the input will result in an error.
3375 @end table
3376
3377 @subsection Examples
3378
3379 @itemize
3380 @item
3381 For example, assuming a stereo input MP3 file,
3382 @example
3383 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
3384 @end example
3385 will create an output Matroska file with two audio streams, one containing only
3386 the left channel and the other the right channel.
3387
3388 @item
3389 Split a 5.1 WAV file into per-channel files:
3390 @example
3391 ffmpeg -i in.wav -filter_complex
3392 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
3393 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
3394 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
3395 side_right.wav
3396 @end example
3397
3398 @item
3399 Extract only LFE from a 5.1 WAV file:
3400 @example
3401 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
3402 -map '[LFE]' lfe.wav
3403 @end example
3404 @end itemize
3405
3406 @section chorus
3407 Add a chorus effect to the audio.
3408
3409 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
3410
3411 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
3412 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
3413 The modulation depth defines the range the modulated delay is played before or after
3414 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
3415 sound tuned around the original one, like in a chorus where some vocals are slightly
3416 off key.
3417
3418 It accepts the following parameters:
3419 @table @option
3420 @item in_gain
3421 Set input gain. Default is 0.4.
3422
3423 @item out_gain
3424 Set output gain. Default is 0.4.
3425
3426 @item delays
3427 Set delays. A typical delay is around 40ms to 60ms.
3428
3429 @item decays
3430 Set decays.
3431
3432 @item speeds
3433 Set speeds.
3434
3435 @item depths
3436 Set depths.
3437 @end table
3438
3439 @subsection Examples
3440
3441 @itemize
3442 @item
3443 A single delay:
3444 @example
3445 chorus=0.7:0.9:55:0.4:0.25:2
3446 @end example
3447
3448 @item
3449 Two delays:
3450 @example
3451 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
3452 @end example
3453
3454 @item
3455 Fuller sounding chorus with three delays:
3456 @example
3457 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
3458 @end example
3459 @end itemize
3460
3461 @section compand
3462 Compress or expand the audio's dynamic range.
3463
3464 It accepts the following parameters:
3465
3466 @table @option
3467
3468 @item attacks
3469 @item decays
3470 A list of times in seconds for each channel over which the instantaneous level
3471 of the input signal is averaged to determine its volume. @var{attacks} refers to
3472 increase of volume and @var{decays} refers to decrease of volume. For most
3473 situations, the attack time (response to the audio getting louder) should be
3474 shorter than the decay time, because the human ear is more sensitive to sudden
3475 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
3476 a typical value for decay is 0.8 seconds.
3477 If specified number of attacks & decays is lower than number of channels, the last
3478 set attack/decay will be used for all remaining channels.
3479
3480 @item points
3481 A list of points for the transfer function, specified in dB relative to the
3482 maximum possible signal amplitude. Each key points list must be defined using
3483 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
3484 @code{x0/y0 x1/y1 x2/y2 ....}
3485
3486 The input values must be in strictly increasing order but the transfer function
3487 does not have to be monotonically rising. The point @code{0/0} is assumed but
3488 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
3489 function are @code{-70/-70|-60/-20|1/0}.
3490
3491 @item soft-knee
3492 Set the curve radius in dB for all joints. It defaults to 0.01.
3493
3494 @item gain
3495 Set the additional gain in dB to be applied at all points on the transfer
3496 function. This allows for easy adjustment of the overall gain.
3497 It defaults to 0.
3498
3499 @item volume
3500 Set an initial volume, in dB, to be assumed for each channel when filtering
3501 starts. This permits the user to supply a nominal level initially, so that, for
3502 example, a very large gain is not applied to initial signal levels before the
3503 companding has begun to operate. A typical value for audio which is initially
3504 quiet is -90 dB. It defaults to 0.
3505
3506 @item delay
3507 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
3508 delayed before being fed to the volume adjuster. Specifying a delay
3509 approximately equal to the attack/decay times allows the filter to effectively
3510 operate in predictive rather than reactive mode. It defaults to 0.
3511
3512 @end table
3513
3514 @subsection Examples
3515
3516 @itemize
3517 @item
3518 Make music with both quiet and loud passages suitable for listening to in a
3519 noisy environment:
3520 @example
3521 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
3522 @end example
3523
3524 Another example for audio with whisper and explosion parts:
3525 @example
3526 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
3527 @end example
3528
3529 @item
3530 A noise gate for when the noise is at a lower level than the signal:
3531 @example
3532 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
3533 @end example
3534
3535 @item
3536 Here is another noise gate, this time for when the noise is at a higher level
3537 than the signal (making it, in some ways, similar to squelch):
3538 @example
3539 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3540 @end example
3541
3542 @item
3543 2:1 compression starting at -6dB:
3544 @example
3545 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3546 @end example
3547
3548 @item
3549 2:1 compression starting at -9dB:
3550 @example
3551 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3552 @end example
3553
3554 @item
3555 2:1 compression starting at -12dB:
3556 @example
3557 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3558 @end example
3559
3560 @item
3561 2:1 compression starting at -18dB:
3562 @example
3563 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3564 @end example
3565
3566 @item
3567 3:1 compression starting at -15dB:
3568 @example
3569 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3570 @end example
3571
3572 @item
3573 Compressor/Gate:
3574 @example
3575 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3576 @end example
3577
3578 @item
3579 Expander:
3580 @example
3581 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
3582 @end example
3583
3584 @item
3585 Hard limiter at -6dB:
3586 @example
3587 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3588 @end example
3589
3590 @item
3591 Hard limiter at -12dB:
3592 @example
3593 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3594 @end example
3595
3596 @item
3597 Hard noise gate at -35 dB:
3598 @example
3599 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3600 @end example
3601
3602 @item
3603 Soft limiter:
3604 @example
3605 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3606 @end example
3607 @end itemize
3608
3609 @section compensationdelay
3610
3611 Compensation Delay Line is a metric based delay to compensate differing
3612 positions of microphones or speakers.
3613
3614 For example, you have recorded guitar with two microphones placed in
3615 different locations. Because the front of sound wave has fixed speed in
3616 normal conditions, the phasing of microphones can vary and depends on
3617 their location and interposition. The best sound mix can be achieved when
3618 these microphones are in phase (synchronized). Note that a distance of
3619 ~30 cm between microphones makes one microphone capture the signal in
3620 antiphase to the other microphone. That makes the final mix sound moody.
3621 This filter helps to solve phasing problems by adding different delays
3622 to each microphone track and make them synchronized.
3623
3624 The best result can be reached when you take one track as base and
3625 synchronize other tracks one by one with it.
3626 Remember that synchronization/delay tolerance depends on sample rate, too.
3627 Higher sample rates will give more tolerance.
3628
3629 The filter accepts the following parameters:
3630
3631 @table @option
3632 @item mm
3633 Set millimeters distance. This is compensation distance for fine tuning.
3634 Default is 0.
3635
3636 @item cm
3637 Set cm distance. This is compensation distance for tightening distance setup.
3638 Default is 0.
3639
3640 @item m
3641 Set meters distance. This is compensation distance for hard distance setup.
3642 Default is 0.
3643
3644 @item dry
3645 Set dry amount. Amount of unprocessed (dry) signal.
3646 Default is 0.
3647
3648 @item wet
3649 Set wet amount. Amount of processed (wet) signal.
3650 Default is 1.
3651
3652 @item temp
3653 Set temperature in degrees Celsius. This is the temperature of the environment.
3654 Default is 20.
3655 @end table
3656
3657 @section crossfeed
3658 Apply headphone crossfeed filter.
3659
3660 Crossfeed is the process of blending the left and right channels of stereo
3661 audio recording.
3662 It is mainly used to reduce extreme stereo separation of low frequencies.
3663
3664 The intent is to produce more speaker like sound to the listener.
3665
3666 The filter accepts the following options:
3667
3668 @table @option
3669 @item strength
3670 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3671 This sets gain of low shelf filter for side part of stereo image.
3672 Default is -6dB. Max allowed is -30db when strength is set to 1.
3673
3674 @item range
3675 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3676 This sets cut off frequency of low shelf filter. Default is cut off near
3677 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3678
3679 @item slope
3680 Set curve slope of low shelf filter. Default is 0.5.
3681 Allowed range is from 0.01 to 1.
3682
3683 @item level_in
3684 Set input gain. Default is 0.9.
3685
3686 @item level_out
3687 Set output gain. Default is 1.
3688 @end table
3689
3690 @subsection Commands
3691
3692 This filter supports the all above options as @ref{commands}.
3693
3694 @section crystalizer
3695 Simple algorithm for audio noise sharpening.
3696
3697 This filter linearly increases differences betweeen each audio sample.
3698
3699 The filter accepts the following options:
3700
3701 @table @option
3702 @item i
3703 Sets the intensity of effect (default: 2.0). Must be in range between -10.0 to 0
3704 (unchanged sound) to 10.0 (maximum effect).
3705 To inverse filtering use negative value.
3706
3707 @item c
3708 Enable clipping. By default is enabled.
3709 @end table
3710
3711 @subsection Commands
3712
3713 This filter supports the all above options as @ref{commands}.
3714
3715 @section dcshift
3716 Apply a DC shift to the audio.
3717
3718 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3719 in the recording chain) from the audio. The effect of a DC offset is reduced
3720 headroom and hence volume. The @ref{astats} filter can be used to determine if
3721 a signal has a DC offset.
3722
3723 @table @option
3724 @item shift
3725 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3726 the audio.
3727
3728 @item limitergain
3729 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3730 used to prevent clipping.
3731 @end table
3732
3733 @section deesser
3734
3735 Apply de-essing to the audio samples.
3736
3737 @table @option
3738 @item i
3739 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3740 Default is 0.
3741
3742 @item m
3743 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3744 Default is 0.5.
3745
3746 @item f
3747 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3748 Default is 0.5.
3749
3750 @item s
3751 Set the output mode.
3752
3753 It accepts the following values:
3754 @table @option
3755 @item i
3756 Pass input unchanged.
3757
3758 @item o
3759 Pass ess filtered out.
3760
3761 @item e
3762 Pass only ess.
3763
3764 Default value is @var{o}.
3765 @end table
3766
3767 @end table
3768
3769 @section drmeter
3770 Measure audio dynamic range.
3771
3772 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3773 is found in transition material. And anything less that 8 have very poor dynamics
3774 and is very compressed.
3775
3776 The filter accepts the following options:
3777
3778 @table @option
3779 @item length
3780 Set window length in seconds used to split audio into segments of equal length.
3781 Default is 3 seconds.
3782 @end table
3783
3784 @section dynaudnorm
3785 Dynamic Audio Normalizer.
3786
3787 This filter applies a certain amount of gain to the input audio in order
3788 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3789 contrast to more "simple" normalization algorithms, the Dynamic Audio
3790 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3791 This allows for applying extra gain to the "quiet" sections of the audio
3792 while avoiding distortions or clipping the "loud" sections. In other words:
3793 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3794 sections, in the sense that the volume of each section is brought to the
3795 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3796 this goal *without* applying "dynamic range compressing". It will retain 100%
3797 of the dynamic range *within* each section of the audio file.
3798
3799 @table @option
3800 @item framelen, f
3801 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3802 Default is 500 milliseconds.
3803 The Dynamic Audio Normalizer processes the input audio in small chunks,
3804 referred to as frames. This is required, because a peak magnitude has no
3805 meaning for just a single sample value. Instead, we need to determine the
3806 peak magnitude for a contiguous sequence of sample values. While a "standard"
3807 normalizer would simply use the peak magnitude of the complete file, the
3808 Dynamic Audio Normalizer determines the peak magnitude individually for each
3809 frame. The length of a frame is specified in milliseconds. By default, the
3810 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3811 been found to give good results with most files.
3812 Note that the exact frame length, in number of samples, will be determined
3813 automatically, based on the sampling rate of the individual input audio file.
3814
3815 @item gausssize, g
3816 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3817 number. Default is 31.
3818 Probably the most important parameter of the Dynamic Audio Normalizer is the
3819 @code{window size} of the Gaussian smoothing filter. The filter's window size
3820 is specified in frames, centered around the current frame. For the sake of
3821 simplicity, this must be an odd number. Consequently, the default value of 31
3822 takes into account the current frame, as well as the 15 preceding frames and
3823 the 15 subsequent frames. Using a larger window results in a stronger
3824 smoothing effect and thus in less gain variation, i.e. slower gain
3825 adaptation. Conversely, using a smaller window results in a weaker smoothing
3826 effect and thus in more gain variation, i.e. faster gain adaptation.
3827 In other words, the more you increase this value, the more the Dynamic Audio
3828 Normalizer will behave like a "traditional" normalization filter. On the
3829 contrary, the more you decrease this value, the more the Dynamic Audio
3830 Normalizer will behave like a dynamic range compressor.
3831
3832 @item peak, p
3833 Set the target peak value. This specifies the highest permissible magnitude
3834 level for the normalized audio input. This filter will try to approach the
3835 target peak magnitude as closely as possible, but at the same time it also
3836 makes sure that the normalized signal will never exceed the peak magnitude.
3837 A frame's maximum local gain factor is imposed directly by the target peak
3838 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3839 It is not recommended to go above this value.
3840
3841 @item maxgain, m
3842 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3843 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3844 factor for each input frame, i.e. the maximum gain factor that does not
3845 result in clipping or distortion. The maximum gain factor is determined by
3846 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3847 additionally bounds the frame's maximum gain factor by a predetermined
3848 (global) maximum gain factor. This is done in order to avoid excessive gain
3849 factors in "silent" or almost silent frames. By default, the maximum gain
3850 factor is 10.0, For most inputs the default value should be sufficient and
3851 it usually is not recommended to increase this value. Though, for input
3852 with an extremely low overall volume level, it may be necessary to allow even
3853 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3854 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3855 Instead, a "sigmoid" threshold function will be applied. This way, the
3856 gain factors will smoothly approach the threshold value, but never exceed that
3857 value.
3858
3859 @item targetrms, r
3860 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3861 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3862 This means that the maximum local gain factor for each frame is defined
3863 (only) by the frame's highest magnitude sample. This way, the samples can
3864 be amplified as much as possible without exceeding the maximum signal
3865 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3866 Normalizer can also take into account the frame's root mean square,
3867 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3868 determine the power of a time-varying signal. It is therefore considered
3869 that the RMS is a better approximation of the "perceived loudness" than
3870 just looking at the signal's peak magnitude. Consequently, by adjusting all
3871 frames to a constant RMS value, a uniform "perceived loudness" can be
3872 established. If a target RMS value has been specified, a frame's local gain
3873 factor is defined as the factor that would result in exactly that RMS value.
3874 Note, however, that the maximum local gain factor is still restricted by the
3875 frame's highest magnitude sample, in order to prevent clipping.
3876
3877 @item coupling, n
3878 Enable channels coupling. By default is enabled.
3879 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3880 amount. This means the same gain factor will be applied to all channels, i.e.
3881 the maximum possible gain factor is determined by the "loudest" channel.
3882 However, in some recordings, it may happen that the volume of the different
3883 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3884 In this case, this option can be used to disable the channel coupling. This way,
3885 the gain factor will be determined independently for each channel, depending
3886 only on the individual channel's highest magnitude sample. This allows for
3887 harmonizing the volume of the different channels.
3888
3889 @item correctdc, c
3890 Enable DC bias correction. By default is disabled.
3891 An audio signal (in the time domain) is a sequence of sample values.
3892 In the Dynamic Audio Normalizer these sample values are represented in the
3893 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3894 audio signal, or "waveform", should be centered around the zero point.
3895 That means if we calculate the mean value of all samples in a file, or in a
3896 single frame, then the result should be 0.0 or at least very close to that
3897 value. If, however, there is a significant deviation of the mean value from
3898 0.0, in either positive or negative direction, this is referred to as a
3899 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3900 Audio Normalizer provides optional DC bias correction.
3901 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3902 the mean value, or "DC correction" offset, of each input frame and subtract
3903 that value from all of the frame's sample values which ensures those samples
3904 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3905 boundaries, the DC correction offset values will be interpolated smoothly
3906 between neighbouring frames.
3907
3908 @item altboundary, b
3909 Enable alternative boundary mode. By default is disabled.
3910 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3911 around each frame. This includes the preceding frames as well as the
3912 subsequent frames. However, for the "boundary" frames, located at the very
3913 beginning and at the very end of the audio file, not all neighbouring
3914 frames are available. In particular, for the first few frames in the audio
3915 file, the preceding frames are not known. And, similarly, for the last few
3916 frames in the audio file, the subsequent frames are not known. Thus, the
3917 question arises which gain factors should be assumed for the missing frames
3918 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3919 to deal with this situation. The default boundary mode assumes a gain factor
3920 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3921 "fade out" at the beginning and at the end of the input, respectively.
3922
3923 @item compress, s
3924 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3925 By default, the Dynamic Audio Normalizer does not apply "traditional"
3926 compression. This means that signal peaks will not be pruned and thus the
3927 full dynamic range will be retained within each local neighbourhood. However,
3928 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3929 normalization algorithm with a more "traditional" compression.
3930 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3931 (thresholding) function. If (and only if) the compression feature is enabled,
3932 all input frames will be processed by a soft knee thresholding function prior
3933 to the actual normalization process. Put simply, the thresholding function is
3934 going to prune all samples whose magnitude exceeds a certain threshold value.
3935 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3936 value. Instead, the threshold value will be adjusted for each individual
3937 frame.
3938 In general, smaller parameters result in stronger compression, and vice versa.
3939 Values below 3.0 are not recommended, because audible distortion may appear.
3940
3941 @item threshold, t
3942 Set the target threshold value. This specifies the lowest permissible
3943 magnitude level for the audio input which will be normalized.
3944 If input frame volume is above this value frame will be normalized.
3945 Otherwise frame may not be normalized at all. The default value is set
3946 to 0, which means all input frames will be normalized.
3947 This option is mostly useful if digital noise is not wanted to be amplified.
3948 @end table
3949
3950 @subsection Commands
3951
3952 This filter supports the all above options as @ref{commands}.
3953
3954 @section earwax
3955
3956 Make audio easier to listen to on headphones.
3957
3958 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3959 so that when listened to on headphones the stereo image is moved from
3960 inside your head (standard for headphones) to outside and in front of
3961 the listener (standard for speakers).
3962
3963 Ported from SoX.
3964
3965 @section equalizer
3966
3967 Apply a two-pole peaking equalisation (EQ) filter. With this
3968 filter, the signal-level at and around a selected frequency can
3969 be increased or decreased, whilst (unlike bandpass and bandreject
3970 filters) that at all other frequencies is unchanged.
3971
3972 In order to produce complex equalisation curves, this filter can
3973 be given several times, each with a different central frequency.
3974
3975 The filter accepts the following options:
3976
3977 @table @option
3978 @item frequency, f
3979 Set the filter's central frequency in Hz.
3980
3981 @item width_type, t
3982 Set method to specify band-width of filter.
3983 @table @option
3984 @item h
3985 Hz
3986 @item q
3987 Q-Factor
3988 @item o
3989 octave
3990 @item s
3991 slope
3992 @item k
3993 kHz
3994 @end table
3995
3996 @item width, w
3997 Specify the band-width of a filter in width_type units.
3998
3999 @item gain, g
4000 Set the required gain or attenuation in dB.
4001 Beware of clipping when using a positive gain.
4002
4003 @item mix, m
4004 How much to use filtered signal in output. Default is 1.
4005 Range is between 0 and 1.
4006
4007 @item channels, c
4008 Specify which channels to filter, by default all available are filtered.
4009
4010 @item normalize, n
4011 Normalize biquad coefficients, by default is disabled.
4012 Enabling it will normalize magnitude response at DC to 0dB.
4013
4014 @item transform, a
4015 Set transform type of IIR filter.
4016 @table @option
4017 @item di
4018 @item dii
4019 @item tdii
4020 @item latt
4021 @end table
4022
4023 @item precision, r
4024 Set precison of filtering.
4025 @table @option
4026 @item auto
4027 Pick automatic sample format depending on surround filters.
4028 @item s16
4029 Always use signed 16-bit.
4030 @item s32
4031 Always use signed 32-bit.
4032 @item f32
4033 Always use float 32-bit.
4034 @item f64
4035 Always use float 64-bit.
4036 @end table
4037 @end table
4038
4039 @subsection Examples
4040 @itemize
4041 @item
4042 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
4043 @example
4044 equalizer=f=1000:t=h:width=200:g=-10
4045 @end example
4046
4047 @item
4048 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
4049 @example
4050 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
4051 @end example
4052 @end itemize
4053
4054 @subsection Commands
4055
4056 This filter supports the following commands:
4057 @table @option
4058 @item frequency, f
4059 Change equalizer frequency.
4060 Syntax for the command is : "@var{frequency}"
4061
4062 @item width_type, t
4063 Change equalizer width_type.
4064 Syntax for the command is : "@var{width_type}"
4065
4066 @item width, w
4067 Change equalizer width.
4068 Syntax for the command is : "@var{width}"
4069
4070 @item gain, g
4071 Change equalizer gain.
4072 Syntax for the command is : "@var{gain}"
4073
4074 @item mix, m
4075 Change equalizer mix.
4076 Syntax for the command is : "@var{mix}"
4077 @end table
4078
4079 @section extrastereo
4080
4081 Linearly increases the difference between left and right channels which
4082 adds some sort of "live" effect to playback.
4083
4084 The filter accepts the following options:
4085
4086 @table @option
4087 @item m
4088 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
4089 (average of both channels), with 1.0 sound will be unchanged, with
4090 -1.0 left and right channels will be swapped.
4091
4092 @item c
4093 Enable clipping. By default is enabled.
4094 @end table
4095
4096 @subsection Commands
4097
4098 This filter supports the all above options as @ref{commands}.
4099
4100 @section firequalizer
4101 Apply FIR Equalization using arbitrary frequency response.
4102
4103 The filter accepts the following option:
4104
4105 @table @option
4106 @item gain
4107 Set gain curve equation (in dB). The expression can contain variables:
4108 @table @option
4109 @item f
4110 the evaluated frequency
4111 @item sr
4112 sample rate
4113 @item ch
4114 channel number, set to 0 when multichannels evaluation is disabled
4115 @item chid
4116 channel id, see libavutil/channel_layout.h, set to the first channel id when
4117 multichannels evaluation is disabled
4118 @item chs
4119 number of channels
4120 @item chlayout
4121 channel_layout, see libavutil/channel_layout.h
4122
4123 @end table
4124 and functions:
4125 @table @option
4126 @item gain_interpolate(f)
4127 interpolate gain on frequency f based on gain_entry
4128 @item cubic_interpolate(f)
4129 same as gain_interpolate, but smoother
4130 @end table
4131 This option is also available as command. Default is @code{gain_interpolate(f)}.
4132
4133 @item gain_entry
4134 Set gain entry for gain_interpolate function. The expression can
4135 contain functions:
4136 @table @option
4137 @item entry(f, g)
4138 store gain entry at frequency f with value g
4139 @end table
4140 This option is also available as command.
4141
4142 @item delay
4143 Set filter delay in seconds. Higher value means more accurate.
4144 Default is @code{0.01}.
4145
4146 @item accuracy
4147 Set filter accuracy in Hz. Lower value means more accurate.
4148 Default is @code{5}.
4149
4150 @item wfunc
4151 Set window function. Acceptable values are:
4152 @table @option
4153 @item rectangular
4154 rectangular window, useful when gain curve is already smooth
4155 @item hann
4156 hann window (default)
4157 @item hamming
4158 hamming window
4159 @item blackman
4160 blackman window
4161 @item nuttall3
4162 3-terms continuous 1st derivative nuttall window
4163 @item mnuttall3
4164 minimum 3-terms discontinuous nuttall window
4165 @item nuttall
4166 4-terms continuous 1st derivative nuttall window
4167 @item bnuttall
4168 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
4169 @item bharris
4170 blackman-harris window
4171 @item tukey
4172 tukey window
4173 @end table
4174
4175 @item fixed
4176 If enabled, use fixed number of audio samples. This improves speed when
4177 filtering with large delay. Default is disabled.
4178
4179 @item multi
4180 Enable multichannels evaluation on gain. Default is disabled.
4181
4182 @item zero_phase
4183 Enable zero phase mode by subtracting timestamp to compensate delay.
4184 Default is disabled.
4185
4186 @item scale
4187 Set scale used by gain. Acceptable values are:
4188 @table @option
4189 @item linlin
4190 linear frequency, linear gain
4191 @item linlog
4192 linear frequency, logarithmic (in dB) gain (default)
4193 @item loglin
4194 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
4195 @item loglog
4196 logarithmic frequency, logarithmic gain
4197 @end table
4198
4199 @item dumpfile
4200 Set file for dumping, suitable for gnuplot.
4201
4202 @item dumpscale
4203 Set scale for dumpfile. Acceptable values are same with scale option.
4204 Default is linlog.
4205
4206 @item fft2
4207 Enable 2-channel convolution using complex FFT. This improves speed significantly.
4208 Default is disabled.
4209
4210 @item min_phase
4211 Enable minimum phase impulse response. Default is disabled.
4212 @end table
4213
4214 @subsection Examples
4215 @itemize
4216 @item
4217 lowpass at 1000 Hz:
4218 @example
4219 firequalizer=gain='if(lt(f,1000), 0, -INF)'
4220 @end example
4221 @item
4222 lowpass at 1000 Hz with gain_entry:
4223 @example
4224 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
4225 @end example
4226 @item
4227 custom equalization:
4228 @example
4229 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
4230 @end example
4231 @item
4232 higher delay with zero phase to compensate delay:
4233 @example
4234 firequalizer=delay=0.1:fixed=on:zero_phase=on
4235 @end example
4236 @item
4237 lowpass on left channel, highpass on right channel:
4238 @example
4239 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
4240 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
4241 @end example
4242 @end itemize
4243
4244 @section flanger
4245 Apply a flanging effect to the audio.
4246
4247 The filter accepts the following options:
4248
4249 @table @option
4250 @item delay
4251 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
4252
4253 @item depth
4254 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
4255
4256 @item regen
4257 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
4258 Default value is 0.
4259
4260 @item width
4261 Set percentage of delayed signal mixed with original. Range from 0 to 100.
4262 Default value is 71.
4263
4264 @item speed
4265 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
4266
4267 @item shape
4268 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
4269 Default value is @var{sinusoidal}.
4270
4271 @item phase
4272 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
4273 Default value is 25.
4274
4275 @item interp
4276 Set delay-line interpolation, @var{linear} or @var{quadratic}.
4277 Default is @var{linear}.
4278 @end table
4279
4280 @section haas
4281 Apply Haas effect to audio.
4282
4283 Note that this makes most sense to apply on mono signals.
4284 With this filter applied to mono signals it give some directionality and
4285 stretches its stereo image.
4286
4287 The filter accepts the following options:
4288
4289 @table @option
4290 @item level_in
4291 Set input level. By default is @var{1}, or 0dB
4292
4293 @item level_out
4294 Set output level. By default is @var{1}, or 0dB.
4295
4296 @item side_gain
4297 Set gain applied to side part of signal. By default is @var{1}.
4298
4299 @item middle_source
4300 Set kind of middle source. Can be one of the following:
4301
4302 @table @samp
4303 @item left
4304 Pick left channel.
4305
4306 @item right
4307 Pick right channel.
4308
4309 @item mid
4310 Pick middle part signal of stereo image.
4311
4312 @item side
4313 Pick side part signal of stereo image.
4314 @end table
4315
4316 @item middle_phase
4317 Change middle phase. By default is disabled.
4318
4319 @item left_delay
4320 Set left channel delay. By default is @var{2.05} milliseconds.
4321
4322 @item left_balance
4323 Set left channel balance. By default is @var{-1}.
4324
4325 @item left_gain
4326 Set left channel gain. By default is @var{1}.
4327
4328 @item left_phase
4329 Change left phase. By default is disabled.
4330
4331 @item right_delay
4332 Set right channel delay. By defaults is @var{2.12} milliseconds.
4333
4334 @item right_balance
4335 Set right channel balance. By default is @var{1}.
4336
4337 @item right_gain
4338 Set right channel gain. By default is @var{1}.
4339
4340 @item right_phase
4341 Change right phase. By default is enabled.
4342 @end table
4343
4344 @section hdcd
4345
4346 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
4347 embedded HDCD codes is expanded into a 20-bit PCM stream.
4348
4349 The filter supports the Peak Extend and Low-level Gain Adjustment features
4350 of HDCD, and detects the Transient Filter flag.
4351
4352 @example
4353 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
4354 @end example
4355
4356 When using the filter with wav, note the default encoding for wav is 16-bit,
4357 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
4358 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
4359 @example
4360 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
4361 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
4362 @end example
4363
4364 The filter accepts the following options:
4365
4366 @table @option
4367 @item disable_autoconvert
4368 Disable any automatic format conversion or resampling in the filter graph.
4369
4370 @item process_stereo
4371 Process the stereo channels together. If target_gain does not match between
4372 channels, consider it invalid and use the last valid target_gain.
4373
4374 @item cdt_ms
4375 Set the code detect timer period in ms.
4376
4377 @item force_pe
4378 Always extend peaks above -3dBFS even if PE isn't signaled.
4379
4380 @item analyze_mode
4381 Replace audio with a solid tone and adjust the amplitude to signal some
4382 specific aspect of the decoding process. The output file can be loaded in
4383 an audio editor alongside the original to aid analysis.
4384
4385 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
4386
4387 Modes are:
4388 @table @samp
4389 @item 0, off
4390 Disabled
4391 @item 1, lle
4392 Gain adjustment level at each sample
4393 @item 2, pe
4394 Samples where peak extend occurs
4395 @item 3, cdt
4396 Samples where the code detect timer is active
4397 @item 4, tgm
4398 Samples where the target gain does not match between channels
4399 @end table
4400 @end table
4401
4402 @section headphone
4403
4404 Apply head-related transfer functions (HRTFs) to create virtual
4405 loudspeakers around the user for binaural listening via headphones.
4406 The HRIRs are provided via additional streams, for each channel
4407 one stereo input stream is needed.
4408
4409 The filter accepts the following options:
4410
4411 @table @option
4412 @item map
4413 Set mapping of input streams for convolution.
4414 The argument is a '|'-separated list of channel names in order as they
4415 are given as additional stream inputs for filter.
4416 This also specify number of input streams. Number of input streams
4417 must be not less than number of channels in first stream plus one.
4418
4419 @item gain
4420 Set gain applied to audio. Value is in dB. Default is 0.
4421
4422 @item type
4423 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4424 processing audio in time domain which is slow.
4425 @var{freq} is processing audio in frequency domain which is fast.
4426 Default is @var{freq}.
4427
4428 @item lfe
4429 Set custom gain for LFE channels. Value is in dB. Default is 0.
4430
4431 @item size
4432 Set size of frame in number of samples which will be processed at once.
4433 Default value is @var{1024}. Allowed range is from 1024 to 96000.
4434
4435 @item hrir
4436 Set format of hrir stream.
4437 Default value is @var{stereo}. Alternative value is @var{multich}.
4438 If value is set to @var{stereo}, number of additional streams should
4439 be greater or equal to number of input channels in first input stream.
4440 Also each additional stream should have stereo number of channels.
4441 If value is set to @var{multich}, number of additional streams should
4442 be exactly one. Also number of input channels of additional stream
4443 should be equal or greater than twice number of channels of first input
4444 stream.
4445 @end table
4446
4447 @subsection Examples
4448
4449 @itemize
4450 @item
4451 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4452 each amovie filter use stereo file with IR coefficients as input.
4453 The files give coefficients for each position of virtual loudspeaker:
4454 @example
4455 ffmpeg -i input.wav
4456 -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"
4457 output.wav
4458 @end example
4459
4460 @item
4461 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4462 but now in @var{multich} @var{hrir} format.
4463 @example
4464 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"
4465 output.wav
4466 @end example
4467 @end itemize
4468
4469 @section highpass
4470
4471 Apply a high-pass filter with 3dB point frequency.
4472 The filter can be either single-pole, or double-pole (the default).
4473 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4474
4475 The filter accepts the following options:
4476
4477 @table @option
4478 @item frequency, f
4479 Set frequency in Hz. Default is 3000.
4480
4481 @item poles, p
4482 Set number of poles. Default is 2.
4483
4484 @item width_type, t
4485 Set method to specify band-width of filter.
4486 @table @option
4487 @item h
4488 Hz
4489 @item q
4490 Q-Factor
4491 @item o
4492 octave
4493 @item s
4494 slope
4495 @item k
4496 kHz
4497 @end table
4498
4499 @item width, w
4500 Specify the band-width of a filter in width_type units.
4501 Applies only to double-pole filter.
4502 The default is 0.707q and gives a Butterworth response.
4503
4504 @item mix, m
4505 How much to use filtered signal in output. Default is 1.
4506 Range is between 0 and 1.
4507
4508 @item channels, c
4509 Specify which channels to filter, by default all available are filtered.
4510
4511 @item normalize, n
4512 Normalize biquad coefficients, by default is disabled.
4513 Enabling it will normalize magnitude response at DC to 0dB.
4514
4515 @item transform, a
4516 Set transform type of IIR filter.
4517 @table @option
4518 @item di
4519 @item dii
4520 @item tdii
4521 @item latt
4522 @end table
4523
4524 @item precision, r
4525 Set precison of filtering.
4526 @table @option
4527 @item auto
4528 Pick automatic sample format depending on surround filters.
4529 @item s16
4530 Always use signed 16-bit.
4531 @item s32
4532 Always use signed 32-bit.
4533 @item f32
4534 Always use float 32-bit.
4535 @item f64
4536 Always use float 64-bit.
4537 @end table
4538 @end table
4539
4540 @subsection Commands
4541
4542 This filter supports the following commands:
4543 @table @option
4544 @item frequency, f
4545 Change highpass frequency.
4546 Syntax for the command is : "@var{frequency}"
4547
4548 @item width_type, t
4549 Change highpass width_type.
4550 Syntax for the command is : "@var{width_type}"
4551
4552 @item width, w
4553 Change highpass width.
4554 Syntax for the command is : "@var{width}"
4555
4556 @item mix, m
4557 Change highpass mix.
4558 Syntax for the command is : "@var{mix}"
4559 @end table
4560
4561 @section join
4562
4563 Join multiple input streams into one multi-channel stream.
4564
4565 It accepts the following parameters:
4566 @table @option
4567
4568 @item inputs
4569 The number of input streams. It defaults to 2.
4570
4571 @item channel_layout
4572 The desired output channel layout. It defaults to stereo.
4573
4574 @item map
4575 Map channels from inputs to output. The argument is a '|'-separated list of
4576 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
4577 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
4578 can be either the name of the input channel (e.g. FL for front left) or its
4579 index in the specified input stream. @var{out_channel} is the name of the output
4580 channel.
4581 @end table
4582
4583 The filter will attempt to guess the mappings when they are not specified
4584 explicitly. It does so by first trying to find an unused matching input channel
4585 and if that fails it picks the first unused input channel.
4586
4587 Join 3 inputs (with properly set channel layouts):
4588 @example
4589 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
4590 @end example
4591
4592 Build a 5.1 output from 6 single-channel streams:
4593 @example
4594 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
4595 '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'
4596 out
4597 @end example
4598
4599 @section ladspa
4600
4601 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
4602
4603 To enable compilation of this filter you need to configure FFmpeg with
4604 @code{--enable-ladspa}.
4605
4606 @table @option
4607 @item file, f
4608 Specifies the name of LADSPA plugin library to load. If the environment
4609 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
4610 each one of the directories specified by the colon separated list in
4611 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
4612 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
4613 @file{/usr/lib/ladspa/}.
4614
4615 @item plugin, p
4616 Specifies the plugin within the library. Some libraries contain only
4617 one plugin, but others contain many of them. If this is not set filter
4618 will list all available plugins within the specified library.
4619
4620 @item controls, c
4621 Set the '|' separated list of controls which are zero or more floating point
4622 values that determine the behavior of the loaded plugin (for example delay,
4623 threshold or gain).
4624 Controls need to be defined using the following syntax:
4625 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
4626 @var{valuei} is the value set on the @var{i}-th control.
4627 Alternatively they can be also defined using the following syntax:
4628 @var{value0}|@var{value1}|@var{value2}|..., where
4629 @var{valuei} is the value set on the @var{i}-th control.
4630 If @option{controls} is set to @code{help}, all available controls and
4631 their valid ranges are printed.
4632
4633 @item sample_rate, s
4634 Specify the sample rate, default to 44100. Only used if plugin have
4635 zero inputs.
4636
4637 @item nb_samples, n
4638 Set the number of samples per channel per each output frame, default
4639 is 1024. Only used if plugin have zero inputs.
4640
4641 @item duration, d
4642 Set the minimum duration of the sourced audio. See
4643 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4644 for the accepted syntax.
4645 Note that the resulting duration may be greater than the specified duration,
4646 as the generated audio is always cut at the end of a complete frame.
4647 If not specified, or the expressed duration is negative, the audio is
4648 supposed to be generated forever.
4649 Only used if plugin have zero inputs.
4650
4651 @item latency, l
4652 Enable latency compensation, by default is disabled.
4653 Only used if plugin have inputs.
4654 @end table
4655
4656 @subsection Examples
4657
4658 @itemize
4659 @item
4660 List all available plugins within amp (LADSPA example plugin) library:
4661 @example
4662 ladspa=file=amp
4663 @end example
4664
4665 @item
4666 List all available controls and their valid ranges for @code{vcf_notch}
4667 plugin from @code{VCF} library:
4668 @example
4669 ladspa=f=vcf:p=vcf_notch:c=help
4670 @end example
4671
4672 @item
4673 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4674 plugin library:
4675 @example
4676 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4677 @end example
4678
4679 @item
4680 Add reverberation to the audio using TAP-plugins
4681 (Tom's Audio Processing plugins):
4682 @example
4683 ladspa=file=tap_reverb:tap_reverb
4684 @end example
4685
4686 @item
4687 Generate white noise, with 0.2 amplitude:
4688 @example
4689 ladspa=file=cmt:noise_source_white:c=c0=.2
4690 @end example
4691
4692 @item
4693 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4694 @code{C* Audio Plugin Suite} (CAPS) library:
4695 @example
4696 ladspa=file=caps:Click:c=c1=20'
4697 @end example
4698
4699 @item
4700 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4701 @example
4702 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4703 @end example
4704
4705 @item
4706 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4707 @code{SWH Plugins} collection:
4708 @example
4709 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4710 @end example
4711
4712 @item
4713 Attenuate low frequencies using Multiband EQ from Steve Harris
4714 @code{SWH Plugins} collection:
4715 @example
4716 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4717 @end example
4718
4719 @item
4720 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4721 (CAPS) library:
4722 @example
4723 ladspa=caps:Narrower
4724 @end example
4725
4726 @item
4727 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4728 @example
4729 ladspa=caps:White:.2
4730 @end example
4731
4732 @item
4733 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4734 @example
4735 ladspa=caps:Fractal:c=c1=1
4736 @end example
4737
4738 @item
4739 Dynamic volume normalization using @code{VLevel} plugin:
4740 @example
4741 ladspa=vlevel-ladspa:vlevel_mono
4742 @end example
4743 @end itemize
4744
4745 @subsection Commands
4746
4747 This filter supports the following commands:
4748 @table @option
4749 @item cN
4750 Modify the @var{N}-th control value.
4751
4752 If the specified value is not valid, it is ignored and prior one is kept.
4753 @end table
4754
4755 @section loudnorm
4756
4757 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4758 Support for both single pass (livestreams, files) and double pass (files) modes.
4759 This algorithm can target IL, LRA, and maximum true peak. In dynamic mode, to accurately
4760 detect true peaks, the audio stream will be upsampled to 192 kHz.
4761 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4762
4763 The filter accepts the following options:
4764
4765 @table @option
4766 @item I, i
4767 Set integrated loudness target.
4768 Range is -70.0 - -5.0. Default value is -24.0.
4769
4770 @item LRA, lra
4771 Set loudness range target.
4772 Range is 1.0 - 20.0. Default value is 7.0.
4773
4774 @item TP, tp
4775 Set maximum true peak.
4776 Range is -9.0 - +0.0. Default value is -2.0.
4777
4778 @item measured_I, measured_i
4779 Measured IL of input file.
4780 Range is -99.0 - +0.0.
4781
4782 @item measured_LRA, measured_lra
4783 Measured LRA of input file.
4784 Range is  0.0 - 99.0.
4785
4786 @item measured_TP, measured_tp
4787 Measured true peak of input file.
4788 Range is  -99.0 - +99.0.
4789
4790 @item measured_thresh
4791 Measured threshold of input file.
4792 Range is -99.0 - +0.0.
4793
4794 @item offset
4795 Set offset gain. Gain is applied before the true-peak limiter.
4796 Range is  -99.0 - +99.0. Default is +0.0.
4797
4798 @item linear
4799 Normalize by linearly scaling the source audio.
4800 @code{measured_I}, @code{measured_LRA}, @code{measured_TP},
4801 and @code{measured_thresh} must all be specified. Target LRA shouldn't
4802 be lower than source LRA and the change in integrated loudness shouldn't
4803 result in a true peak which exceeds the target TP. If any of these
4804 conditions aren't met, normalization mode will revert to @var{dynamic}.
4805 Options are @code{true} or @code{false}. Default is @code{true}.
4806
4807 @item dual_mono
4808 Treat mono input files as "dual-mono". If a mono file is intended for playback
4809 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4810 If set to @code{true}, this option will compensate for this effect.
4811 Multi-channel input files are not affected by this option.
4812 Options are true or false. Default is false.
4813
4814 @item print_format
4815 Set print format for stats. Options are summary, json, or none.
4816 Default value is none.
4817 @end table
4818
4819 @section lowpass
4820
4821 Apply a low-pass filter with 3dB point frequency.
4822 The filter can be either single-pole or double-pole (the default).
4823 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4824
4825 The filter accepts the following options:
4826
4827 @table @option
4828 @item frequency, f
4829 Set frequency in Hz. Default is 500.
4830
4831 @item poles, p
4832 Set number of poles. Default is 2.
4833
4834 @item width_type, t
4835 Set method to specify band-width of filter.
4836 @table @option
4837 @item h
4838 Hz
4839 @item q
4840 Q-Factor
4841 @item o
4842 octave
4843 @item s
4844 slope
4845 @item k
4846 kHz
4847 @end table
4848
4849 @item width, w
4850 Specify the band-width of a filter in width_type units.
4851 Applies only to double-pole filter.
4852 The default is 0.707q and gives a Butterworth response.
4853
4854 @item mix, m
4855 How much to use filtered signal in output. Default is 1.
4856 Range is between 0 and 1.
4857
4858 @item channels, c
4859 Specify which channels to filter, by default all available are filtered.
4860
4861 @item normalize, n
4862 Normalize biquad coefficients, by default is disabled.
4863 Enabling it will normalize magnitude response at DC to 0dB.
4864
4865 @item transform, a
4866 Set transform type of IIR filter.
4867 @table @option
4868 @item di
4869 @item dii
4870 @item tdii
4871 @item latt
4872 @end table
4873
4874 @item precision, r
4875 Set precison of filtering.
4876 @table @option
4877 @item auto
4878 Pick automatic sample format depending on surround filters.
4879 @item s16
4880 Always use signed 16-bit.
4881 @item s32
4882 Always use signed 32-bit.
4883 @item f32
4884 Always use float 32-bit.
4885 @item f64
4886 Always use float 64-bit.
4887 @end table
4888 @end table
4889
4890 @subsection Examples
4891 @itemize
4892 @item
4893 Lowpass only LFE channel, it LFE is not present it does nothing:
4894 @example
4895 lowpass=c=LFE
4896 @end example
4897 @end itemize
4898
4899 @subsection Commands
4900
4901 This filter supports the following commands:
4902 @table @option
4903 @item frequency, f
4904 Change lowpass frequency.
4905 Syntax for the command is : "@var{frequency}"
4906
4907 @item width_type, t
4908 Change lowpass width_type.
4909 Syntax for the command is : "@var{width_type}"
4910
4911 @item width, w
4912 Change lowpass width.
4913 Syntax for the command is : "@var{width}"
4914
4915 @item mix, m
4916 Change lowpass mix.
4917 Syntax for the command is : "@var{mix}"
4918 @end table
4919
4920 @section lv2
4921
4922 Load a LV2 (LADSPA Version 2) plugin.
4923
4924 To enable compilation of this filter you need to configure FFmpeg with
4925 @code{--enable-lv2}.
4926
4927 @table @option
4928 @item plugin, p
4929 Specifies the plugin URI. You may need to escape ':'.
4930
4931 @item controls, c
4932 Set the '|' separated list of controls which are zero or more floating point
4933 values that determine the behavior of the loaded plugin (for example delay,
4934 threshold or gain).
4935 If @option{controls} is set to @code{help}, all available controls and
4936 their valid ranges are printed.
4937
4938 @item sample_rate, s
4939 Specify the sample rate, default to 44100. Only used if plugin have
4940 zero inputs.
4941
4942 @item nb_samples, n
4943 Set the number of samples per channel per each output frame, default
4944 is 1024. Only used if plugin have zero inputs.
4945
4946 @item duration, d
4947 Set the minimum duration of the sourced audio. See
4948 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4949 for the accepted syntax.
4950 Note that the resulting duration may be greater than the specified duration,
4951 as the generated audio is always cut at the end of a complete frame.
4952 If not specified, or the expressed duration is negative, the audio is
4953 supposed to be generated forever.
4954 Only used if plugin have zero inputs.
4955 @end table
4956
4957 @subsection Examples
4958
4959 @itemize
4960 @item
4961 Apply bass enhancer plugin from Calf:
4962 @example
4963 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4964 @end example
4965
4966 @item
4967 Apply vinyl plugin from Calf:
4968 @example
4969 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4970 @end example
4971
4972 @item
4973 Apply bit crusher plugin from ArtyFX:
4974 @example
4975 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4976 @end example
4977 @end itemize
4978
4979 @section mcompand
4980 Multiband Compress or expand the audio's dynamic range.
4981
4982 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4983 This is akin to the crossover of a loudspeaker, and results in flat frequency
4984 response when absent compander action.
4985
4986 It accepts the following parameters:
4987
4988 @table @option
4989 @item args
4990 This option syntax is:
4991 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4992 For explanation of each item refer to compand filter documentation.
4993 @end table
4994
4995 @anchor{pan}
4996 @section pan
4997
4998 Mix channels with specific gain levels. The filter accepts the output
4999 channel layout followed by a set of channels definitions.
5000
5001 This filter is also designed to efficiently remap the channels of an audio
5002 stream.
5003
5004 The filter accepts parameters of the form:
5005 "@var{l}|@var{outdef}|@var{outdef}|..."
5006
5007 @table @option
5008 @item l
5009 output channel layout or number of channels
5010
5011 @item outdef
5012 output channel specification, of the form:
5013 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
5014
5015 @item out_name
5016 output channel to define, either a channel name (FL, FR, etc.) or a channel
5017 number (c0, c1, etc.)
5018
5019 @item gain
5020 multiplicative coefficient for the channel, 1 leaving the volume unchanged
5021
5022 @item in_name
5023 input channel to use, see out_name for details; it is not possible to mix
5024 named and numbered input channels
5025 @end table
5026
5027 If the `=' in a channel specification is replaced by `<', then the gains for
5028 that specification will be renormalized so that the total is 1, thus
5029 avoiding clipping noise.
5030
5031 @subsection Mixing examples
5032
5033 For example, if you want to down-mix from stereo to mono, but with a bigger
5034 factor for the left channel:
5035 @example
5036 pan=1c|c0=0.9*c0+0.1*c1
5037 @end example
5038
5039 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
5040 7-channels surround:
5041 @example
5042 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
5043 @end example
5044
5045 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
5046 that should be preferred (see "-ac" option) unless you have very specific
5047 needs.
5048
5049 @subsection Remapping examples
5050
5051 The channel remapping will be effective if, and only if:
5052
5053 @itemize
5054 @item gain coefficients are zeroes or ones,
5055 @item only one input per channel output,
5056 @end itemize
5057
5058 If all these conditions are satisfied, the filter will notify the user ("Pure
5059 channel mapping detected"), and use an optimized and lossless method to do the
5060 remapping.
5061
5062 For example, if you have a 5.1 source and want a stereo audio stream by
5063 dropping the extra channels:
5064 @example
5065 pan="stereo| c0=FL | c1=FR"
5066 @end example
5067
5068 Given the same source, you can also switch front left and front right channels
5069 and keep the input channel layout:
5070 @example
5071 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
5072 @end example
5073
5074 If the input is a stereo audio stream, you can mute the front left channel (and
5075 still keep the stereo channel layout) with:
5076 @example
5077 pan="stereo|c1=c1"
5078 @end example
5079
5080 Still with a stereo audio stream input, you can copy the right channel in both
5081 front left and right:
5082 @example
5083 pan="stereo| c0=FR | c1=FR"
5084 @end example
5085
5086 @section replaygain
5087
5088 ReplayGain scanner filter. This filter takes an audio stream as an input and
5089 outputs it unchanged.
5090 At end of filtering it displays @code{track_gain} and @code{track_peak}.
5091
5092 @section resample
5093
5094 Convert the audio sample format, sample rate and channel layout. It is
5095 not meant to be used directly.
5096
5097 @section rubberband
5098 Apply time-stretching and pitch-shifting with librubberband.
5099
5100 To enable compilation of this filter, you need to configure FFmpeg with
5101 @code{--enable-librubberband}.
5102
5103 The filter accepts the following options:
5104
5105 @table @option
5106 @item tempo
5107 Set tempo scale factor.
5108
5109 @item pitch
5110 Set pitch scale factor.
5111
5112 @item transients
5113 Set transients detector.
5114 Possible values are:
5115 @table @var
5116 @item crisp
5117 @item mixed
5118 @item smooth
5119 @end table
5120
5121 @item detector
5122 Set detector.
5123 Possible values are:
5124 @table @var
5125 @item compound
5126 @item percussive
5127 @item soft
5128 @end table
5129
5130 @item phase
5131 Set phase.
5132 Possible values are:
5133 @table @var
5134 @item laminar
5135 @item independent
5136 @end table
5137
5138 @item window
5139 Set processing window size.
5140 Possible values are:
5141 @table @var
5142 @item standard
5143 @item short
5144 @item long
5145 @end table
5146
5147 @item smoothing
5148 Set smoothing.
5149 Possible values are:
5150 @table @var
5151 @item off
5152 @item on
5153 @end table
5154
5155 @item formant
5156 Enable formant preservation when shift pitching.
5157 Possible values are:
5158 @table @var
5159 @item shifted
5160 @item preserved
5161 @end table
5162
5163 @item pitchq
5164 Set pitch quality.
5165 Possible values are:
5166 @table @var
5167 @item quality
5168 @item speed
5169 @item consistency
5170 @end table
5171
5172 @item channels
5173 Set channels.
5174 Possible values are:
5175 @table @var
5176 @item apart
5177 @item together
5178 @end table
5179 @end table
5180
5181 @subsection Commands
5182
5183 This filter supports the following commands:
5184 @table @option
5185 @item tempo
5186 Change filter tempo scale factor.
5187 Syntax for the command is : "@var{tempo}"
5188
5189 @item pitch
5190 Change filter pitch scale factor.
5191 Syntax for the command is : "@var{pitch}"
5192 @end table
5193
5194 @section sidechaincompress
5195
5196 This filter acts like normal compressor but has the ability to compress
5197 detected signal using second input signal.
5198 It needs two input streams and returns one output stream.
5199 First input stream will be processed depending on second stream signal.
5200 The filtered signal then can be filtered with other filters in later stages of
5201 processing. See @ref{pan} and @ref{amerge} filter.
5202
5203 The filter accepts the following options:
5204
5205 @table @option
5206 @item level_in
5207 Set input gain. Default is 1. Range is between 0.015625 and 64.
5208
5209 @item mode
5210 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
5211 Default is @code{downward}.
5212
5213 @item threshold
5214 If a signal of second stream raises above this level it will affect the gain
5215 reduction of first stream.
5216 By default is 0.125. Range is between 0.00097563 and 1.
5217
5218 @item ratio
5219 Set a ratio about which the signal is reduced. 1:2 means that if the level
5220 raised 4dB above the threshold, it will be only 2dB above after the reduction.
5221 Default is 2. Range is between 1 and 20.
5222
5223 @item attack
5224 Amount of milliseconds the signal has to rise above the threshold before gain
5225 reduction starts. Default is 20. Range is between 0.01 and 2000.
5226
5227 @item release
5228 Amount of milliseconds the signal has to fall below the threshold before
5229 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
5230
5231 @item makeup
5232 Set the amount by how much signal will be amplified after processing.
5233 Default is 1. Range is from 1 to 64.
5234
5235 @item knee
5236 Curve the sharp knee around the threshold to enter gain reduction more softly.
5237 Default is 2.82843. Range is between 1 and 8.
5238
5239 @item link
5240 Choose if the @code{average} level between all channels of side-chain stream
5241 or the louder(@code{maximum}) channel of side-chain stream affects the
5242 reduction. Default is @code{average}.
5243
5244 @item detection
5245 Should the exact signal be taken in case of @code{peak} or an RMS one in case
5246 of @code{rms}. Default is @code{rms} which is mainly smoother.
5247
5248 @item level_sc
5249 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
5250
5251 @item mix
5252 How much to use compressed signal in output. Default is 1.
5253 Range is between 0 and 1.
5254 @end table
5255
5256 @subsection Commands
5257
5258 This filter supports the all above options as @ref{commands}.
5259
5260 @subsection Examples
5261
5262 @itemize
5263 @item
5264 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
5265 depending on the signal of 2nd input and later compressed signal to be
5266 merged with 2nd input:
5267 @example
5268 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
5269 @end example
5270 @end itemize
5271
5272 @section sidechaingate
5273
5274 A sidechain gate acts like a normal (wideband) gate but has the ability to
5275 filter the detected signal before sending it to the gain reduction stage.
5276 Normally a gate uses the full range signal to detect a level above the
5277 threshold.
5278 For example: If you cut all lower frequencies from your sidechain signal
5279 the gate will decrease the volume of your track only if not enough highs
5280 appear. With this technique you are able to reduce the resonation of a
5281 natural drum or remove "rumbling" of muted strokes from a heavily distorted
5282 guitar.
5283 It needs two input streams and returns one output stream.
5284 First input stream will be processed depending on second stream signal.
5285
5286 The filter accepts the following options:
5287
5288 @table @option
5289 @item level_in
5290 Set input level before filtering.
5291 Default is 1. Allowed range is from 0.015625 to 64.
5292
5293 @item mode
5294 Set the mode of operation. Can be @code{upward} or @code{downward}.
5295 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
5296 will be amplified, expanding dynamic range in upward direction.
5297 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
5298
5299 @item range
5300 Set the level of gain reduction when the signal is below the threshold.
5301 Default is 0.06125. Allowed range is from 0 to 1.
5302 Setting this to 0 disables reduction and then filter behaves like expander.
5303
5304 @item threshold
5305 If a signal rises above this level the gain reduction is released.
5306 Default is 0.125. Allowed range is from 0 to 1.
5307
5308 @item ratio
5309 Set a ratio about which the signal is reduced.
5310 Default is 2. Allowed range is from 1 to 9000.
5311
5312 @item attack
5313 Amount of milliseconds the signal has to rise above the threshold before gain
5314 reduction stops.
5315 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
5316
5317 @item release
5318 Amount of milliseconds the signal has to fall below the threshold before the
5319 reduction is increased again. Default is 250 milliseconds.
5320 Allowed range is from 0.01 to 9000.
5321
5322 @item makeup
5323 Set amount of amplification of signal after processing.
5324 Default is 1. Allowed range is from 1 to 64.
5325
5326 @item knee
5327 Curve the sharp knee around the threshold to enter gain reduction more softly.
5328 Default is 2.828427125. Allowed range is from 1 to 8.
5329
5330 @item detection
5331 Choose if exact signal should be taken for detection or an RMS like one.
5332 Default is rms. Can be peak or rms.
5333
5334 @item link
5335 Choose if the average level between all channels or the louder channel affects
5336 the reduction.
5337 Default is average. Can be average or maximum.
5338
5339 @item level_sc
5340 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
5341 @end table
5342
5343 @subsection Commands
5344
5345 This filter supports the all above options as @ref{commands}.
5346
5347 @section silencedetect
5348
5349 Detect silence in an audio stream.
5350
5351 This filter logs a message when it detects that the input audio volume is less
5352 or equal to a noise tolerance value for a duration greater or equal to the
5353 minimum detected noise duration.
5354
5355 The printed times and duration are expressed in seconds. The
5356 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
5357 is set on the first frame whose timestamp equals or exceeds the detection
5358 duration and it contains the timestamp of the first frame of the silence.
5359
5360 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
5361 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
5362 keys are set on the first frame after the silence. If @option{mono} is
5363 enabled, and each channel is evaluated separately, the @code{.X}
5364 suffixed keys are used, and @code{X} corresponds to the channel number.
5365
5366 The filter accepts the following options:
5367
5368 @table @option
5369 @item noise, n
5370 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
5371 specified value) or amplitude ratio. Default is -60dB, or 0.001.
5372
5373 @item duration, d
5374 Set silence duration until notification (default is 2 seconds). See
5375 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5376 for the accepted syntax.
5377
5378 @item mono, m
5379 Process each channel separately, instead of combined. By default is disabled.
5380 @end table
5381
5382 @subsection Examples
5383
5384 @itemize
5385 @item
5386 Detect 5 seconds of silence with -50dB noise tolerance:
5387 @example
5388 silencedetect=n=-50dB:d=5
5389 @end example
5390
5391 @item
5392 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
5393 tolerance in @file{silence.mp3}:
5394 @example
5395 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
5396 @end example
5397 @end itemize
5398
5399 @section silenceremove
5400
5401 Remove silence from the beginning, middle or end of the audio.
5402
5403 The filter accepts the following options:
5404
5405 @table @option
5406 @item start_periods
5407 This value is used to indicate if audio should be trimmed at beginning of
5408 the audio. A value of zero indicates no silence should be trimmed from the
5409 beginning. When specifying a non-zero value, it trims audio up until it
5410 finds non-silence. Normally, when trimming silence from beginning of audio
5411 the @var{start_periods} will be @code{1} but it can be increased to higher
5412 values to trim all audio up to specific count of non-silence periods.
5413 Default value is @code{0}.
5414
5415 @item start_duration
5416 Specify the amount of time that non-silence must be detected before it stops
5417 trimming audio. By increasing the duration, bursts of noises can be treated
5418 as silence and trimmed off. Default value is @code{0}.
5419
5420 @item start_threshold
5421 This indicates what sample value should be treated as silence. For digital
5422 audio, a value of @code{0} may be fine but for audio recorded from analog,
5423 you may wish to increase the value to account for background noise.
5424 Can be specified in dB (in case "dB" is appended to the specified value)
5425 or amplitude ratio. Default value is @code{0}.
5426
5427 @item start_silence
5428 Specify max duration of silence at beginning that will be kept after
5429 trimming. Default is 0, which is equal to trimming all samples detected
5430 as silence.
5431
5432 @item start_mode
5433 Specify mode of detection of silence end in start of multi-channel audio.
5434 Can be @var{any} or @var{all}. Default is @var{any}.
5435 With @var{any}, any sample that is detected as non-silence will cause
5436 stopped trimming of silence.
5437 With @var{all}, only if all channels are detected as non-silence will cause
5438 stopped trimming of silence.
5439
5440 @item stop_periods
5441 Set the count for trimming silence from the end of audio.
5442 To remove silence from the middle of a file, specify a @var{stop_periods}
5443 that is negative. This value is then treated as a positive value and is
5444 used to indicate the effect should restart processing as specified by
5445 @var{start_periods}, making it suitable for removing periods of silence
5446 in the middle of the audio.
5447 Default value is @code{0}.
5448
5449 @item stop_duration
5450 Specify a duration of silence that must exist before audio is not copied any
5451 more. By specifying a higher duration, silence that is wanted can be left in
5452 the audio.
5453 Default value is @code{0}.
5454
5455 @item stop_threshold
5456 This is the same as @option{start_threshold} but for trimming silence from
5457 the end of audio.
5458 Can be specified in dB (in case "dB" is appended to the specified value)
5459 or amplitude ratio. Default value is @code{0}.
5460
5461 @item stop_silence
5462 Specify max duration of silence at end that will be kept after
5463 trimming. Default is 0, which is equal to trimming all samples detected
5464 as silence.
5465
5466 @item stop_mode
5467 Specify mode of detection of silence start in end of multi-channel audio.
5468 Can be @var{any} or @var{all}. Default is @var{any}.
5469 With @var{any}, any sample that is detected as non-silence will cause
5470 stopped trimming of silence.
5471 With @var{all}, only if all channels are detected as non-silence will cause
5472 stopped trimming of silence.
5473
5474 @item detection
5475 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
5476 and works better with digital silence which is exactly 0.
5477 Default value is @code{rms}.
5478
5479 @item window
5480 Set duration in number of seconds used to calculate size of window in number
5481 of samples for detecting silence.
5482 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
5483 @end table
5484
5485 @subsection Examples
5486
5487 @itemize
5488 @item
5489 The following example shows how this filter can be used to start a recording
5490 that does not contain the delay at the start which usually occurs between
5491 pressing the record button and the start of the performance:
5492 @example
5493 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
5494 @end example
5495
5496 @item
5497 Trim all silence encountered from beginning to end where there is more than 1
5498 second of silence in audio:
5499 @example
5500 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
5501 @end example
5502
5503 @item
5504 Trim all digital silence samples, using peak detection, from beginning to end
5505 where there is more than 0 samples of digital silence in audio and digital
5506 silence is detected in all channels at same positions in stream:
5507 @example
5508 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
5509 @end example
5510 @end itemize
5511
5512 @section sofalizer
5513
5514 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
5515 loudspeakers around the user for binaural listening via headphones (audio
5516 formats up to 9 channels supported).
5517 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
5518 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
5519 Austrian Academy of Sciences.
5520
5521 To enable compilation of this filter you need to configure FFmpeg with
5522 @code{--enable-libmysofa}.
5523
5524 The filter accepts the following options:
5525
5526 @table @option
5527 @item sofa
5528 Set the SOFA file used for rendering.
5529
5530 @item gain
5531 Set gain applied to audio. Value is in dB. Default is 0.
5532
5533 @item rotation
5534 Set rotation of virtual loudspeakers in deg. Default is 0.
5535
5536 @item elevation
5537 Set elevation of virtual speakers in deg. Default is 0.
5538
5539 @item radius
5540 Set distance in meters between loudspeakers and the listener with near-field
5541 HRTFs. Default is 1.
5542
5543 @item type
5544 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
5545 processing audio in time domain which is slow.
5546 @var{freq} is processing audio in frequency domain which is fast.
5547 Default is @var{freq}.
5548
5549 @item speakers
5550 Set custom positions of virtual loudspeakers. Syntax for this option is:
5551 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
5552 Each virtual loudspeaker is described with short channel name following with
5553 azimuth and elevation in degrees.
5554 Each virtual loudspeaker description is separated by '|'.
5555 For example to override front left and front right channel positions use:
5556 'speakers=FL 45 15|FR 345 15'.
5557 Descriptions with unrecognised channel names are ignored.
5558
5559 @item lfegain
5560 Set custom gain for LFE channels. Value is in dB. Default is 0.
5561
5562 @item framesize
5563 Set custom frame size in number of samples. Default is 1024.
5564 Allowed range is from 1024 to 96000. Only used if option @samp{type}
5565 is set to @var{freq}.
5566
5567 @item normalize
5568 Should all IRs be normalized upon importing SOFA file.
5569 By default is enabled.
5570
5571 @item interpolate
5572 Should nearest IRs be interpolated with neighbor IRs if exact position
5573 does not match. By default is disabled.
5574
5575 @item minphase
5576 Minphase all IRs upon loading of SOFA file. By default is disabled.
5577
5578 @item anglestep
5579 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
5580
5581 @item radstep
5582 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
5583 @end table
5584
5585 @subsection Examples
5586
5587 @itemize
5588 @item
5589 Using ClubFritz6 sofa file:
5590 @example
5591 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
5592 @end example
5593
5594 @item
5595 Using ClubFritz12 sofa file and bigger radius with small rotation:
5596 @example
5597 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
5598 @end example
5599
5600 @item
5601 Similar as above but with custom speaker positions for front left, front right, back left and back right
5602 and also with custom gain:
5603 @example
5604 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
5605 @end example
5606 @end itemize
5607
5608 @section speechnorm
5609 Speech Normalizer.
5610
5611 This filter expands or compresses each half-cycle of audio samples
5612 (local set of samples all above or all below zero and between two nearest zero crossings) depending
5613 on threshold value, so audio reaches target peak value under conditions controlled by below options.
5614
5615 The filter accepts the following options:
5616
5617 @table @option
5618 @item peak, p
5619 Set the expansion target peak value. This specifies the highest allowed absolute amplitude
5620 level for the normalized audio input. Default value is 0.95. Allowed range is from 0.0 to 1.0.
5621
5622 @item expansion, e
5623 Set the maximum expansion factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5624 This option controls maximum local half-cycle of samples expansion. The maximum expansion
5625 would be such that local peak value reaches target peak value but never to surpass it and that
5626 ratio between new and previous peak value does not surpass this option value.
5627
5628 @item compression, c
5629 Set the maximum compression factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5630 This option controls maximum local half-cycle of samples compression. This option is used
5631 only if @option{threshold} option is set to value greater than 0.0, then in such cases
5632 when local peak is lower or same as value set by @option{threshold} all samples belonging to
5633 that peak's half-cycle will be compressed by current compression factor.
5634
5635 @item threshold, t
5636 Set the threshold value. Default value is 0.0. Allowed range is from 0.0 to 1.0.
5637 This option specifies which half-cycles of samples will be compressed and which will be expanded.
5638 Any half-cycle samples with their local peak value below or same as this option value will be
5639 compressed by current compression factor, otherwise, if greater than threshold value they will be
5640 expanded with expansion factor so that it could reach peak target value but never surpass it.
5641
5642 @item raise, r
5643 Set the expansion raising amount per each half-cycle of samples. Default value is 0.001.
5644 Allowed range is from 0.0 to 1.0. This controls how fast expansion factor is raised per
5645 each new half-cycle until it reaches @option{expansion} value.
5646 Setting this options too high may lead to distortions.
5647
5648 @item fall, f
5649 Set the compression raising amount per each half-cycle of samples. Default value is 0.001.
5650 Allowed range is from 0.0 to 1.0. This controls how fast compression factor is raised per
5651 each new half-cycle until it reaches @option{compression} value.
5652
5653 @item channels, h
5654 Specify which channels to filter, by default all available channels are filtered.
5655
5656 @item invert, i
5657 Enable inverted filtering, by default is disabled. This inverts interpretation of @option{threshold}
5658 option. When enabled any half-cycle of samples with their local peak value below or same as
5659 @option{threshold} option will be expanded otherwise it will be compressed.
5660
5661 @item link, l
5662 Link channels when calculating gain applied to each filtered channel sample, by default is disabled.
5663 When disabled each filtered channel gain calculation is independent, otherwise when this option
5664 is enabled the minimum of all possible gains for each filtered channel is used.
5665 @end table
5666
5667 @subsection Commands
5668
5669 This filter supports the all above options as @ref{commands}.
5670
5671 @section stereotools
5672
5673 This filter has some handy utilities to manage stereo signals, for converting
5674 M/S stereo recordings to L/R signal while having control over the parameters
5675 or spreading the stereo image of master track.
5676
5677 The filter accepts the following options:
5678
5679 @table @option
5680 @item level_in
5681 Set input level before filtering for both channels. Defaults is 1.
5682 Allowed range is from 0.015625 to 64.
5683
5684 @item level_out
5685 Set output level after filtering for both channels. Defaults is 1.
5686 Allowed range is from 0.015625 to 64.
5687
5688 @item balance_in
5689 Set input balance between both channels. Default is 0.
5690 Allowed range is from -1 to 1.
5691
5692 @item balance_out
5693 Set output balance between both channels. Default is 0.
5694 Allowed range is from -1 to 1.
5695
5696 @item softclip
5697 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
5698 clipping. Disabled by default.
5699
5700 @item mutel
5701 Mute the left channel. Disabled by default.
5702
5703 @item muter
5704 Mute the right channel. Disabled by default.
5705
5706 @item phasel
5707 Change the phase of the left channel. Disabled by default.
5708
5709 @item phaser
5710 Change the phase of the right channel. Disabled by default.
5711
5712 @item mode
5713 Set stereo mode. Available values are:
5714
5715 @table @samp
5716 @item lr>lr
5717 Left/Right to Left/Right, this is default.
5718
5719 @item lr>ms
5720 Left/Right to Mid/Side.
5721
5722 @item ms>lr
5723 Mid/Side to Left/Right.
5724
5725 @item lr>ll
5726 Left/Right to Left/Left.
5727
5728 @item lr>rr
5729 Left/Right to Right/Right.
5730
5731 @item lr>l+r
5732 Left/Right to Left + Right.
5733
5734 @item lr>rl
5735 Left/Right to Right/Left.
5736
5737 @item ms>ll
5738 Mid/Side to Left/Left.
5739
5740 @item ms>rr
5741 Mid/Side to Right/Right.
5742
5743 @item ms>rl
5744 Mid/Side to Right/Left.
5745
5746 @item lr>l-r
5747 Left/Right to Left - Right.
5748 @end table
5749
5750 @item slev
5751 Set level of side signal. Default is 1.
5752 Allowed range is from 0.015625 to 64.
5753
5754 @item sbal
5755 Set balance of side signal. Default is 0.
5756 Allowed range is from -1 to 1.
5757
5758 @item mlev
5759 Set level of the middle signal. Default is 1.
5760 Allowed range is from 0.015625 to 64.
5761
5762 @item mpan
5763 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5764
5765 @item base
5766 Set stereo base between mono and inversed channels. Default is 0.
5767 Allowed range is from -1 to 1.
5768
5769 @item delay
5770 Set delay in milliseconds how much to delay left from right channel and
5771 vice versa. Default is 0. Allowed range is from -20 to 20.
5772
5773 @item sclevel
5774 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5775
5776 @item phase
5777 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5778
5779 @item bmode_in, bmode_out
5780 Set balance mode for balance_in/balance_out option.
5781
5782 Can be one of the following:
5783
5784 @table @samp
5785 @item balance
5786 Classic balance mode. Attenuate one channel at time.
5787 Gain is raised up to 1.
5788
5789 @item amplitude
5790 Similar as classic mode above but gain is raised up to 2.
5791
5792 @item power
5793 Equal power distribution, from -6dB to +6dB range.
5794 @end table
5795 @end table
5796
5797 @subsection Commands
5798
5799 This filter supports the all above options as @ref{commands}.
5800
5801 @subsection Examples
5802
5803 @itemize
5804 @item
5805 Apply karaoke like effect:
5806 @example
5807 stereotools=mlev=0.015625
5808 @end example
5809
5810 @item
5811 Convert M/S signal to L/R:
5812 @example
5813 "stereotools=mode=ms>lr"
5814 @end example
5815 @end itemize
5816
5817 @section stereowiden
5818
5819 This filter enhance the stereo effect by suppressing signal common to both
5820 channels and by delaying the signal of left into right and vice versa,
5821 thereby widening the stereo effect.
5822
5823 The filter accepts the following options:
5824
5825 @table @option
5826 @item delay
5827 Time in milliseconds of the delay of left signal into right and vice versa.
5828 Default is 20 milliseconds.
5829
5830 @item feedback
5831 Amount of gain in delayed signal into right and vice versa. Gives a delay
5832 effect of left signal in right output and vice versa which gives widening
5833 effect. Default is 0.3.
5834
5835 @item crossfeed
5836 Cross feed of left into right with inverted phase. This helps in suppressing
5837 the mono. If the value is 1 it will cancel all the signal common to both
5838 channels. Default is 0.3.
5839
5840 @item drymix
5841 Set level of input signal of original channel. Default is 0.8.
5842 @end table
5843
5844 @subsection Commands
5845
5846 This filter supports the all above options except @code{delay} as @ref{commands}.
5847
5848 @section superequalizer
5849 Apply 18 band equalizer.
5850
5851 The filter accepts the following options:
5852 @table @option
5853 @item 1b
5854 Set 65Hz band gain.
5855 @item 2b
5856 Set 92Hz band gain.
5857 @item 3b
5858 Set 131Hz band gain.
5859 @item 4b
5860 Set 185Hz band gain.
5861 @item 5b
5862 Set 262Hz band gain.
5863 @item 6b
5864 Set 370Hz band gain.
5865 @item 7b
5866 Set 523Hz band gain.
5867 @item 8b
5868 Set 740Hz band gain.
5869 @item 9b
5870 Set 1047Hz band gain.
5871 @item 10b
5872 Set 1480Hz band gain.
5873 @item 11b
5874 Set 2093Hz band gain.
5875 @item 12b
5876 Set 2960Hz band gain.
5877 @item 13b
5878 Set 4186Hz band gain.
5879 @item 14b
5880 Set 5920Hz band gain.
5881 @item 15b
5882 Set 8372Hz band gain.
5883 @item 16b
5884 Set 11840Hz band gain.
5885 @item 17b
5886 Set 16744Hz band gain.
5887 @item 18b
5888 Set 20000Hz band gain.
5889 @end table
5890
5891 @section surround
5892 Apply audio surround upmix filter.
5893
5894 This filter allows to produce multichannel output from audio stream.
5895
5896 The filter accepts the following options:
5897
5898 @table @option
5899 @item chl_out
5900 Set output channel layout. By default, this is @var{5.1}.
5901
5902 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5903 for the required syntax.
5904
5905 @item chl_in
5906 Set input channel layout. By default, this is @var{stereo}.
5907
5908 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5909 for the required syntax.
5910
5911 @item level_in
5912 Set input volume level. By default, this is @var{1}.
5913
5914 @item level_out
5915 Set output volume level. By default, this is @var{1}.
5916
5917 @item lfe
5918 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5919
5920 @item lfe_low
5921 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5922
5923 @item lfe_high
5924 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5925
5926 @item lfe_mode
5927 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5928 In @var{add} mode, LFE channel is created from input audio and added to output.
5929 In @var{sub} mode, LFE channel is created from input audio and added to output but
5930 also all non-LFE output channels are subtracted with output LFE channel.
5931
5932 @item angle
5933 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5934 Default is @var{90}.
5935
5936 @item fc_in
5937 Set front center input volume. By default, this is @var{1}.
5938
5939 @item fc_out
5940 Set front center output volume. By default, this is @var{1}.
5941
5942 @item fl_in
5943 Set front left input volume. By default, this is @var{1}.
5944
5945 @item fl_out
5946 Set front left output volume. By default, this is @var{1}.
5947
5948 @item fr_in
5949 Set front right input volume. By default, this is @var{1}.
5950
5951 @item fr_out
5952 Set front right output volume. By default, this is @var{1}.
5953
5954 @item sl_in
5955 Set side left input volume. By default, this is @var{1}.
5956
5957 @item sl_out
5958 Set side left output volume. By default, this is @var{1}.
5959
5960 @item sr_in
5961 Set side right input volume. By default, this is @var{1}.
5962
5963 @item sr_out
5964 Set side right output volume. By default, this is @var{1}.
5965
5966 @item bl_in
5967 Set back left input volume. By default, this is @var{1}.
5968
5969 @item bl_out
5970 Set back left output volume. By default, this is @var{1}.
5971
5972 @item br_in
5973 Set back right input volume. By default, this is @var{1}.
5974
5975 @item br_out
5976 Set back right output volume. By default, this is @var{1}.
5977
5978 @item bc_in
5979 Set back center input volume. By default, this is @var{1}.
5980
5981 @item bc_out
5982 Set back center output volume. By default, this is @var{1}.
5983
5984 @item lfe_in
5985 Set LFE input volume. By default, this is @var{1}.
5986
5987 @item lfe_out
5988 Set LFE output volume. By default, this is @var{1}.
5989
5990 @item allx
5991 Set spread usage of stereo image across X axis for all channels.
5992
5993 @item ally
5994 Set spread usage of stereo image across Y axis for all channels.
5995
5996 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5997 Set spread usage of stereo image across X axis for each channel.
5998
5999 @item fcy, fly, fry, bly, bry, sly, sry, bcy
6000 Set spread usage of stereo image across Y axis for each channel.
6001
6002 @item win_size
6003 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
6004
6005 @item win_func
6006 Set window function.
6007
6008 It accepts the following values:
6009 @table @samp
6010 @item rect
6011 @item bartlett
6012 @item hann, hanning
6013 @item hamming
6014 @item blackman
6015 @item welch
6016 @item flattop
6017 @item bharris
6018 @item bnuttall
6019 @item bhann
6020 @item sine
6021 @item nuttall
6022 @item lanczos
6023 @item gauss
6024 @item tukey
6025 @item dolph
6026 @item cauchy
6027 @item parzen
6028 @item poisson
6029 @item bohman
6030 @end table
6031 Default is @code{hann}.
6032
6033 @item overlap
6034 Set window overlap. If set to 1, the recommended overlap for selected
6035 window function will be picked. Default is @code{0.5}.
6036 @end table
6037
6038 @section treble, highshelf
6039
6040 Boost or cut treble (upper) frequencies of the audio using a two-pole
6041 shelving filter with a response similar to that of a standard
6042 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
6043
6044 The filter accepts the following options:
6045
6046 @table @option
6047 @item gain, g
6048 Give the gain at whichever is the lower of ~22 kHz and the
6049 Nyquist frequency. Its useful range is about -20 (for a large cut)
6050 to +20 (for a large boost). Beware of clipping when using a positive gain.
6051
6052 @item frequency, f
6053 Set the filter's central frequency and so can be used
6054 to extend or reduce the frequency range to be boosted or cut.
6055 The default value is @code{3000} Hz.
6056
6057 @item width_type, t
6058 Set method to specify band-width of filter.
6059 @table @option
6060 @item h
6061 Hz
6062 @item q
6063 Q-Factor
6064 @item o
6065 octave
6066 @item s
6067 slope
6068 @item k
6069 kHz
6070 @end table
6071
6072 @item width, w
6073 Determine how steep is the filter's shelf transition.
6074
6075 @item poles, p
6076 Set number of poles. Default is 2.
6077
6078 @item mix, m
6079 How much to use filtered signal in output. Default is 1.
6080 Range is between 0 and 1.
6081
6082 @item channels, c
6083 Specify which channels to filter, by default all available are filtered.
6084
6085 @item normalize, n
6086 Normalize biquad coefficients, by default is disabled.
6087 Enabling it will normalize magnitude response at DC to 0dB.
6088
6089 @item transform, a
6090 Set transform type of IIR filter.
6091 @table @option
6092 @item di
6093 @item dii
6094 @item tdii
6095 @item latt
6096 @end table
6097
6098 @item precision, r
6099 Set precison of filtering.
6100 @table @option
6101 @item auto
6102 Pick automatic sample format depending on surround filters.
6103 @item s16
6104 Always use signed 16-bit.
6105 @item s32
6106 Always use signed 32-bit.
6107 @item f32
6108 Always use float 32-bit.
6109 @item f64
6110 Always use float 64-bit.
6111 @end table
6112 @end table
6113
6114 @subsection Commands
6115
6116 This filter supports the following commands:
6117 @table @option
6118 @item frequency, f
6119 Change treble frequency.
6120 Syntax for the command is : "@var{frequency}"
6121
6122 @item width_type, t
6123 Change treble width_type.
6124 Syntax for the command is : "@var{width_type}"
6125
6126 @item width, w
6127 Change treble width.
6128 Syntax for the command is : "@var{width}"
6129
6130 @item gain, g
6131 Change treble gain.
6132 Syntax for the command is : "@var{gain}"
6133
6134 @item mix, m
6135 Change treble mix.
6136 Syntax for the command is : "@var{mix}"
6137 @end table
6138
6139 @section tremolo
6140
6141 Sinusoidal amplitude modulation.
6142
6143 The filter accepts the following options:
6144
6145 @table @option
6146 @item f
6147 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
6148 (20 Hz or lower) will result in a tremolo effect.
6149 This filter may also be used as a ring modulator by specifying
6150 a modulation frequency higher than 20 Hz.
6151 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
6152
6153 @item d
6154 Depth of modulation as a percentage. Range is 0.0 - 1.0.
6155 Default value is 0.5.
6156 @end table
6157
6158 @section vibrato
6159
6160 Sinusoidal phase modulation.
6161
6162 The filter accepts the following options:
6163
6164 @table @option
6165 @item f
6166 Modulation frequency in Hertz.
6167 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
6168
6169 @item d
6170 Depth of modulation as a percentage. Range is 0.0 - 1.0.
6171 Default value is 0.5.
6172 @end table
6173
6174 @section volume
6175
6176 Adjust the input audio volume.
6177
6178 It accepts the following parameters:
6179 @table @option
6180
6181 @item volume
6182 Set audio volume expression.
6183
6184 Output values are clipped to the maximum value.
6185
6186 The output audio volume is given by the relation:
6187 @example
6188 @var{output_volume} = @var{volume} * @var{input_volume}
6189 @end example
6190
6191 The default value for @var{volume} is "1.0".
6192
6193 @item precision
6194 This parameter represents the mathematical precision.
6195
6196 It determines which input sample formats will be allowed, which affects the
6197 precision of the volume scaling.
6198
6199 @table @option
6200 @item fixed
6201 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
6202 @item float
6203 32-bit floating-point; this limits input sample format to FLT. (default)
6204 @item double
6205 64-bit floating-point; this limits input sample format to DBL.
6206 @end table
6207
6208 @item replaygain
6209 Choose the behaviour on encountering ReplayGain side data in input frames.
6210
6211 @table @option
6212 @item drop
6213 Remove ReplayGain side data, ignoring its contents (the default).
6214
6215 @item ignore
6216 Ignore ReplayGain side data, but leave it in the frame.
6217
6218 @item track
6219 Prefer the track gain, if present.
6220
6221 @item album
6222 Prefer the album gain, if present.
6223 @end table
6224
6225 @item replaygain_preamp
6226 Pre-amplification gain in dB to apply to the selected replaygain gain.
6227
6228 Default value for @var{replaygain_preamp} is 0.0.
6229
6230 @item replaygain_noclip
6231 Prevent clipping by limiting the gain applied.
6232
6233 Default value for @var{replaygain_noclip} is 1.
6234
6235 @item eval
6236 Set when the volume expression is evaluated.
6237
6238 It accepts the following values:
6239 @table @samp
6240 @item once
6241 only evaluate expression once during the filter initialization, or
6242 when the @samp{volume} command is sent
6243
6244 @item frame
6245 evaluate expression for each incoming frame
6246 @end table
6247
6248 Default value is @samp{once}.
6249 @end table
6250
6251 The volume expression can contain the following parameters.
6252
6253 @table @option
6254 @item n
6255 frame number (starting at zero)
6256 @item nb_channels
6257 number of channels
6258 @item nb_consumed_samples
6259 number of samples consumed by the filter
6260 @item nb_samples
6261 number of samples in the current frame
6262 @item pos
6263 original frame position in the file
6264 @item pts
6265 frame PTS
6266 @item sample_rate
6267 sample rate
6268 @item startpts
6269 PTS at start of stream
6270 @item startt
6271 time at start of stream
6272 @item t
6273 frame time
6274 @item tb
6275 timestamp timebase
6276 @item volume
6277 last set volume value
6278 @end table
6279
6280 Note that when @option{eval} is set to @samp{once} only the
6281 @var{sample_rate} and @var{tb} variables are available, all other
6282 variables will evaluate to NAN.
6283
6284 @subsection Commands
6285
6286 This filter supports the following commands:
6287 @table @option
6288 @item volume
6289 Modify the volume expression.
6290 The command accepts the same syntax of the corresponding option.
6291
6292 If the specified expression is not valid, it is kept at its current
6293 value.
6294 @end table
6295
6296 @subsection Examples
6297
6298 @itemize
6299 @item
6300 Halve the input audio volume:
6301 @example
6302 volume=volume=0.5
6303 volume=volume=1/2
6304 volume=volume=-6.0206dB
6305 @end example
6306
6307 In all the above example the named key for @option{volume} can be
6308 omitted, for example like in:
6309 @example
6310 volume=0.5
6311 @end example
6312
6313 @item
6314 Increase input audio power by 6 decibels using fixed-point precision:
6315 @example
6316 volume=volume=6dB:precision=fixed
6317 @end example
6318
6319 @item
6320 Fade volume after time 10 with an annihilation period of 5 seconds:
6321 @example
6322 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
6323 @end example
6324 @end itemize
6325
6326 @section volumedetect
6327
6328 Detect the volume of the input video.
6329
6330 The filter has no parameters. The input is not modified. Statistics about
6331 the volume will be printed in the log when the input stream end is reached.
6332
6333 In particular it will show the mean volume (root mean square), maximum
6334 volume (on a per-sample basis), and the beginning of a histogram of the
6335 registered volume values (from the maximum value to a cumulated 1/1000 of
6336 the samples).
6337
6338 All volumes are in decibels relative to the maximum PCM value.
6339
6340 @subsection Examples
6341
6342 Here is an excerpt of the output:
6343 @example
6344 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
6345 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
6346 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
6347 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
6348 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
6349 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
6350 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
6351 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
6352 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
6353 @end example
6354
6355 It means that:
6356 @itemize
6357 @item
6358 The mean square energy is approximately -27 dB, or 10^-2.7.
6359 @item
6360 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
6361 @item
6362 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
6363 @end itemize
6364
6365 In other words, raising the volume by +4 dB does not cause any clipping,
6366 raising it by +5 dB causes clipping for 6 samples, etc.
6367
6368 @c man end AUDIO FILTERS
6369
6370 @chapter Audio Sources
6371 @c man begin AUDIO SOURCES
6372
6373 Below is a description of the currently available audio sources.
6374
6375 @section abuffer
6376
6377 Buffer audio frames, and make them available to the filter chain.
6378
6379 This source is mainly intended for a programmatic use, in particular
6380 through the interface defined in @file{libavfilter/buffersrc.h}.
6381
6382 It accepts the following parameters:
6383 @table @option
6384
6385 @item time_base
6386 The timebase which will be used for timestamps of submitted frames. It must be
6387 either a floating-point number or in @var{numerator}/@var{denominator} form.
6388
6389 @item sample_rate
6390 The sample rate of the incoming audio buffers.
6391
6392 @item sample_fmt
6393 The sample format of the incoming audio buffers.
6394 Either a sample format name or its corresponding integer representation from
6395 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
6396
6397 @item channel_layout
6398 The channel layout of the incoming audio buffers.
6399 Either a channel layout name from channel_layout_map in
6400 @file{libavutil/channel_layout.c} or its corresponding integer representation
6401 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
6402
6403 @item channels
6404 The number of channels of the incoming audio buffers.
6405 If both @var{channels} and @var{channel_layout} are specified, then they
6406 must be consistent.
6407
6408 @end table
6409
6410 @subsection Examples
6411
6412 @example
6413 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
6414 @end example
6415
6416 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
6417 Since the sample format with name "s16p" corresponds to the number
6418 6 and the "stereo" channel layout corresponds to the value 0x3, this is
6419 equivalent to:
6420 @example
6421 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
6422 @end example
6423
6424 @section aevalsrc
6425
6426 Generate an audio signal specified by an expression.
6427
6428 This source accepts in input one or more expressions (one for each
6429 channel), which are evaluated and used to generate a corresponding
6430 audio signal.
6431
6432 This source accepts the following options:
6433
6434 @table @option
6435 @item exprs
6436 Set the '|'-separated expressions list for each separate channel. In case the
6437 @option{channel_layout} option is not specified, the selected channel layout
6438 depends on the number of provided expressions. Otherwise the last
6439 specified expression is applied to the remaining output channels.
6440
6441 @item channel_layout, c
6442 Set the channel layout. The number of channels in the specified layout
6443 must be equal to the number of specified expressions.
6444
6445 @item duration, d
6446 Set the minimum duration of the sourced audio. See
6447 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6448 for the accepted syntax.
6449 Note that the resulting duration may be greater than the specified
6450 duration, as the generated audio is always cut at the end of a
6451 complete frame.
6452
6453 If not specified, or the expressed duration is negative, the audio is
6454 supposed to be generated forever.
6455
6456 @item nb_samples, n
6457 Set the number of samples per channel per each output frame,
6458 default to 1024.
6459
6460 @item sample_rate, s
6461 Specify the sample rate, default to 44100.
6462 @end table
6463
6464 Each expression in @var{exprs} can contain the following constants:
6465
6466 @table @option
6467 @item n
6468 number of the evaluated sample, starting from 0
6469
6470 @item t
6471 time of the evaluated sample expressed in seconds, starting from 0
6472
6473 @item s
6474 sample rate
6475
6476 @end table
6477
6478 @subsection Examples
6479
6480 @itemize
6481 @item
6482 Generate silence:
6483 @example
6484 aevalsrc=0
6485 @end example
6486
6487 @item
6488 Generate a sin signal with frequency of 440 Hz, set sample rate to
6489 8000 Hz:
6490 @example
6491 aevalsrc="sin(440*2*PI*t):s=8000"
6492 @end example
6493
6494 @item
6495 Generate a two channels signal, specify the channel layout (Front
6496 Center + Back Center) explicitly:
6497 @example
6498 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
6499 @end example
6500
6501 @item
6502 Generate white noise:
6503 @example
6504 aevalsrc="-2+random(0)"
6505 @end example
6506
6507 @item
6508 Generate an amplitude modulated signal:
6509 @example
6510 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
6511 @end example
6512
6513 @item
6514 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
6515 @example
6516 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
6517 @end example
6518
6519 @end itemize
6520
6521 @section afirsrc
6522
6523 Generate a FIR coefficients using frequency sampling method.
6524
6525 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6526
6527 The filter accepts the following options:
6528
6529 @table @option
6530 @item taps, t
6531 Set number of filter coefficents in output audio stream.
6532 Default value is 1025.
6533
6534 @item frequency, f
6535 Set frequency points from where magnitude and phase are set.
6536 This must be in non decreasing order, and first element must be 0, while last element
6537 must be 1. Elements are separated by white spaces.
6538
6539 @item magnitude, m
6540 Set magnitude value for every frequency point set by @option{frequency}.
6541 Number of values must be same as number of frequency points.
6542 Values are separated by white spaces.
6543
6544 @item phase, p
6545 Set phase value for every frequency point set by @option{frequency}.
6546 Number of values must be same as number of frequency points.
6547 Values are separated by white spaces.
6548
6549 @item sample_rate, r
6550 Set sample rate, default is 44100.
6551
6552 @item nb_samples, n
6553 Set number of samples per each frame. Default is 1024.
6554
6555 @item win_func, w
6556 Set window function. Default is blackman.
6557 @end table
6558
6559 @section anullsrc
6560
6561 The null audio source, return unprocessed audio frames. It is mainly useful
6562 as a template and to be employed in analysis / debugging tools, or as
6563 the source for filters which ignore the input data (for example the sox
6564 synth filter).
6565
6566 This source accepts the following options:
6567
6568 @table @option
6569
6570 @item channel_layout, cl
6571
6572 Specifies the channel layout, and can be either an integer or a string
6573 representing a channel layout. The default value of @var{channel_layout}
6574 is "stereo".
6575
6576 Check the channel_layout_map definition in
6577 @file{libavutil/channel_layout.c} for the mapping between strings and
6578 channel layout values.
6579
6580 @item sample_rate, r
6581 Specifies the sample rate, and defaults to 44100.
6582
6583 @item nb_samples, n
6584 Set the number of samples per requested frames.
6585
6586 @item duration, d
6587 Set the duration of the sourced audio. See
6588 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6589 for the accepted syntax.
6590
6591 If not specified, or the expressed duration is negative, the audio is
6592 supposed to be generated forever.
6593 @end table
6594
6595 @subsection Examples
6596
6597 @itemize
6598 @item
6599 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
6600 @example
6601 anullsrc=r=48000:cl=4
6602 @end example
6603
6604 @item
6605 Do the same operation with a more obvious syntax:
6606 @example
6607 anullsrc=r=48000:cl=mono
6608 @end example
6609 @end itemize
6610
6611 All the parameters need to be explicitly defined.
6612
6613 @section flite
6614
6615 Synthesize a voice utterance using the libflite library.
6616
6617 To enable compilation of this filter you need to configure FFmpeg with
6618 @code{--enable-libflite}.
6619
6620 Note that versions of the flite library prior to 2.0 are not thread-safe.
6621
6622 The filter accepts the following options:
6623
6624 @table @option
6625
6626 @item list_voices
6627 If set to 1, list the names of the available voices and exit
6628 immediately. Default value is 0.
6629
6630 @item nb_samples, n
6631 Set the maximum number of samples per frame. Default value is 512.
6632
6633 @item textfile
6634 Set the filename containing the text to speak.
6635
6636 @item text
6637 Set the text to speak.
6638
6639 @item voice, v
6640 Set the voice to use for the speech synthesis. Default value is
6641 @code{kal}. See also the @var{list_voices} option.
6642 @end table
6643
6644 @subsection Examples
6645
6646 @itemize
6647 @item
6648 Read from file @file{speech.txt}, and synthesize the text using the
6649 standard flite voice:
6650 @example
6651 flite=textfile=speech.txt
6652 @end example
6653
6654 @item
6655 Read the specified text selecting the @code{slt} voice:
6656 @example
6657 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6658 @end example
6659
6660 @item
6661 Input text to ffmpeg:
6662 @example
6663 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6664 @end example
6665
6666 @item
6667 Make @file{ffplay} speak the specified text, using @code{flite} and
6668 the @code{lavfi} device:
6669 @example
6670 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
6671 @end example
6672 @end itemize
6673
6674 For more information about libflite, check:
6675 @url{http://www.festvox.org/flite/}
6676
6677 @section anoisesrc
6678
6679 Generate a noise audio signal.
6680
6681 The filter accepts the following options:
6682
6683 @table @option
6684 @item sample_rate, r
6685 Specify the sample rate. Default value is 48000 Hz.
6686
6687 @item amplitude, a
6688 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
6689 is 1.0.
6690
6691 @item duration, d
6692 Specify the duration of the generated audio stream. Not specifying this option
6693 results in noise with an infinite length.
6694
6695 @item color, colour, c
6696 Specify the color of noise. Available noise colors are white, pink, brown,
6697 blue, violet and velvet. Default color is white.
6698
6699 @item seed, s
6700 Specify a value used to seed the PRNG.
6701
6702 @item nb_samples, n
6703 Set the number of samples per each output frame, default is 1024.
6704 @end table
6705
6706 @subsection Examples
6707
6708 @itemize
6709
6710 @item
6711 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
6712 @example
6713 anoisesrc=d=60:c=pink:r=44100:a=0.5
6714 @end example
6715 @end itemize
6716
6717 @section hilbert
6718
6719 Generate odd-tap Hilbert transform FIR coefficients.
6720
6721 The resulting stream can be used with @ref{afir} filter for phase-shifting
6722 the signal by 90 degrees.
6723
6724 This is used in many matrix coding schemes and for analytic signal generation.
6725 The process is often written as a multiplication by i (or j), the imaginary unit.
6726
6727 The filter accepts the following options:
6728
6729 @table @option
6730
6731 @item sample_rate, s
6732 Set sample rate, default is 44100.
6733
6734 @item taps, t
6735 Set length of FIR filter, default is 22051.
6736
6737 @item nb_samples, n
6738 Set number of samples per each frame.
6739
6740 @item win_func, w
6741 Set window function to be used when generating FIR coefficients.
6742 @end table
6743
6744 @section sinc
6745
6746 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
6747
6748 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6749
6750 The filter accepts the following options:
6751
6752 @table @option
6753 @item sample_rate, r
6754 Set sample rate, default is 44100.
6755
6756 @item nb_samples, n
6757 Set number of samples per each frame. Default is 1024.
6758
6759 @item hp
6760 Set high-pass frequency. Default is 0.
6761
6762 @item lp
6763 Set low-pass frequency. Default is 0.
6764 If high-pass frequency is lower than low-pass frequency and low-pass frequency
6765 is higher than 0 then filter will create band-pass filter coefficients,
6766 otherwise band-reject filter coefficients.
6767
6768 @item phase
6769 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
6770
6771 @item beta
6772 Set Kaiser window beta.
6773
6774 @item att
6775 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
6776
6777 @item round
6778 Enable rounding, by default is disabled.
6779
6780 @item hptaps
6781 Set number of taps for high-pass filter.
6782
6783 @item lptaps
6784 Set number of taps for low-pass filter.
6785 @end table
6786
6787 @section sine
6788
6789 Generate an audio signal made of a sine wave with amplitude 1/8.
6790
6791 The audio signal is bit-exact.
6792
6793 The filter accepts the following options:
6794
6795 @table @option
6796
6797 @item frequency, f
6798 Set the carrier frequency. Default is 440 Hz.
6799
6800 @item beep_factor, b
6801 Enable a periodic beep every second with frequency @var{beep_factor} times
6802 the carrier frequency. Default is 0, meaning the beep is disabled.
6803
6804 @item sample_rate, r
6805 Specify the sample rate, default is 44100.
6806
6807 @item duration, d
6808 Specify the duration of the generated audio stream.
6809
6810 @item samples_per_frame
6811 Set the number of samples per output frame.
6812
6813 The expression can contain the following constants:
6814
6815 @table @option
6816 @item n
6817 The (sequential) number of the output audio frame, starting from 0.
6818
6819 @item pts
6820 The PTS (Presentation TimeStamp) of the output audio frame,
6821 expressed in @var{TB} units.
6822
6823 @item t
6824 The PTS of the output audio frame, expressed in seconds.
6825
6826 @item TB
6827 The timebase of the output audio frames.
6828 @end table
6829
6830 Default is @code{1024}.
6831 @end table
6832
6833 @subsection Examples
6834
6835 @itemize
6836
6837 @item
6838 Generate a simple 440 Hz sine wave:
6839 @example
6840 sine
6841 @end example
6842
6843 @item
6844 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6845 @example
6846 sine=220:4:d=5
6847 sine=f=220:b=4:d=5
6848 sine=frequency=220:beep_factor=4:duration=5
6849 @end example
6850
6851 @item
6852 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6853 pattern:
6854 @example
6855 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6856 @end example
6857 @end itemize
6858
6859 @c man end AUDIO SOURCES
6860
6861 @chapter Audio Sinks
6862 @c man begin AUDIO SINKS
6863
6864 Below is a description of the currently available audio sinks.
6865
6866 @section abuffersink
6867
6868 Buffer audio frames, and make them available to the end of filter chain.
6869
6870 This sink is mainly intended for programmatic use, in particular
6871 through the interface defined in @file{libavfilter/buffersink.h}
6872 or the options system.
6873
6874 It accepts a pointer to an AVABufferSinkContext structure, which
6875 defines the incoming buffers' formats, to be passed as the opaque
6876 parameter to @code{avfilter_init_filter} for initialization.
6877 @section anullsink
6878
6879 Null audio sink; do absolutely nothing with the input audio. It is
6880 mainly useful as a template and for use in analysis / debugging
6881 tools.
6882
6883 @c man end AUDIO SINKS
6884
6885 @chapter Video Filters
6886 @c man begin VIDEO FILTERS
6887
6888 When you configure your FFmpeg build, you can disable any of the
6889 existing filters using @code{--disable-filters}.
6890 The configure output will show the video filters included in your
6891 build.
6892
6893 Below is a description of the currently available video filters.
6894
6895 @section addroi
6896
6897 Mark a region of interest in a video frame.
6898
6899 The frame data is passed through unchanged, but metadata is attached
6900 to the frame indicating regions of interest which can affect the
6901 behaviour of later encoding.  Multiple regions can be marked by
6902 applying the filter multiple times.
6903
6904 @table @option
6905 @item x
6906 Region distance in pixels from the left edge of the frame.
6907 @item y
6908 Region distance in pixels from the top edge of the frame.
6909 @item w
6910 Region width in pixels.
6911 @item h
6912 Region height in pixels.
6913
6914 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6915 and may contain the following variables:
6916 @table @option
6917 @item iw
6918 Width of the input frame.
6919 @item ih
6920 Height of the input frame.
6921 @end table
6922
6923 @item qoffset
6924 Quantisation offset to apply within the region.
6925
6926 This must be a real value in the range -1 to +1.  A value of zero
6927 indicates no quality change.  A negative value asks for better quality
6928 (less quantisation), while a positive value asks for worse quality
6929 (greater quantisation).
6930
6931 The range is calibrated so that the extreme values indicate the
6932 largest possible offset - if the rest of the frame is encoded with the
6933 worst possible quality, an offset of -1 indicates that this region
6934 should be encoded with the best possible quality anyway.  Intermediate
6935 values are then interpolated in some codec-dependent way.
6936
6937 For example, in 10-bit H.264 the quantisation parameter varies between
6938 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6939 this region should be encoded with a QP around one-tenth of the full
6940 range better than the rest of the frame.  So, if most of the frame
6941 were to be encoded with a QP of around 30, this region would get a QP
6942 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6943 An extreme value of -1 would indicate that this region should be
6944 encoded with the best possible quality regardless of the treatment of
6945 the rest of the frame - that is, should be encoded at a QP of -12.
6946 @item clear
6947 If set to true, remove any existing regions of interest marked on the
6948 frame before adding the new one.
6949 @end table
6950
6951 @subsection Examples
6952
6953 @itemize
6954 @item
6955 Mark the centre quarter of the frame as interesting.
6956 @example
6957 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6958 @end example
6959 @item
6960 Mark the 100-pixel-wide region on the left edge of the frame as very
6961 uninteresting (to be encoded at much lower quality than the rest of
6962 the frame).
6963 @example
6964 addroi=0:0:100:ih:+1/5
6965 @end example
6966 @end itemize
6967
6968 @section alphaextract
6969
6970 Extract the alpha component from the input as a grayscale video. This
6971 is especially useful with the @var{alphamerge} filter.
6972
6973 @section alphamerge
6974
6975 Add or replace the alpha component of the primary input with the
6976 grayscale value of a second input. This is intended for use with
6977 @var{alphaextract} to allow the transmission or storage of frame
6978 sequences that have alpha in a format that doesn't support an alpha
6979 channel.
6980
6981 For example, to reconstruct full frames from a normal YUV-encoded video
6982 and a separate video created with @var{alphaextract}, you might use:
6983 @example
6984 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6985 @end example
6986
6987 @section amplify
6988
6989 Amplify differences between current pixel and pixels of adjacent frames in
6990 same pixel location.
6991
6992 This filter accepts the following options:
6993
6994 @table @option
6995 @item radius
6996 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6997 For example radius of 3 will instruct filter to calculate average of 7 frames.
6998
6999 @item factor
7000 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
7001
7002 @item threshold
7003 Set threshold for difference amplification. Any difference greater or equal to
7004 this value will not alter source pixel. Default is 10.
7005 Allowed range is from 0 to 65535.
7006
7007 @item tolerance
7008 Set tolerance for difference amplification. Any difference lower to
7009 this value will not alter source pixel. Default is 0.
7010 Allowed range is from 0 to 65535.
7011
7012 @item low
7013 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
7014 This option controls maximum possible value that will decrease source pixel value.
7015
7016 @item high
7017 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
7018 This option controls maximum possible value that will increase source pixel value.
7019
7020 @item planes
7021 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
7022 @end table
7023
7024 @subsection Commands
7025
7026 This filter supports the following @ref{commands} that corresponds to option of same name:
7027 @table @option
7028 @item factor
7029 @item threshold
7030 @item tolerance
7031 @item low
7032 @item high
7033 @item planes
7034 @end table
7035
7036 @section ass
7037
7038 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
7039 and libavformat to work. On the other hand, it is limited to ASS (Advanced
7040 Substation Alpha) subtitles files.
7041
7042 This filter accepts the following option in addition to the common options from
7043 the @ref{subtitles} filter:
7044
7045 @table @option
7046 @item shaping
7047 Set the shaping engine
7048
7049 Available values are:
7050 @table @samp
7051 @item auto
7052 The default libass shaping engine, which is the best available.
7053 @item simple
7054 Fast, font-agnostic shaper that can do only substitutions
7055 @item complex
7056 Slower shaper using OpenType for substitutions and positioning
7057 @end table
7058
7059 The default is @code{auto}.
7060 @end table
7061
7062 @section atadenoise
7063 Apply an Adaptive Temporal Averaging Denoiser to the video input.
7064
7065 The filter accepts the following options:
7066
7067 @table @option
7068 @item 0a
7069 Set threshold A for 1st plane. Default is 0.02.
7070 Valid range is 0 to 0.3.
7071
7072 @item 0b
7073 Set threshold B for 1st plane. Default is 0.04.
7074 Valid range is 0 to 5.
7075
7076 @item 1a
7077 Set threshold A for 2nd plane. Default is 0.02.
7078 Valid range is 0 to 0.3.
7079
7080 @item 1b
7081 Set threshold B for 2nd plane. Default is 0.04.
7082 Valid range is 0 to 5.
7083
7084 @item 2a
7085 Set threshold A for 3rd plane. Default is 0.02.
7086 Valid range is 0 to 0.3.
7087
7088 @item 2b
7089 Set threshold B for 3rd plane. Default is 0.04.
7090 Valid range is 0 to 5.
7091
7092 Threshold A is designed to react on abrupt changes in the input signal and
7093 threshold B is designed to react on continuous changes in the input signal.
7094
7095 @item s
7096 Set number of frames filter will use for averaging. Default is 9. Must be odd
7097 number in range [5, 129].
7098
7099 @item p
7100 Set what planes of frame filter will use for averaging. Default is all.
7101
7102 @item a
7103 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
7104 Alternatively can be set to @code{s} serial.
7105
7106 Parallel can be faster then serial, while other way around is never true.
7107 Parallel will abort early on first change being greater then thresholds, while serial
7108 will continue processing other side of frames if they are equal or below thresholds.
7109
7110 @item 0s
7111 @item 1s
7112 @item 2s
7113 Set sigma for 1st plane, 2nd plane or 3rd plane. Default is 32767.
7114 Valid range is from 0 to 32767.
7115 This options controls weight for each pixel in radius defined by size.
7116 Default value means every pixel have same weight.
7117 Setting this option to 0 effectively disables filtering.
7118 @end table
7119
7120 @subsection Commands
7121 This filter supports same @ref{commands} as options except option @code{s}.
7122 The command accepts the same syntax of the corresponding option.
7123
7124 @section avgblur
7125
7126 Apply average blur filter.
7127
7128 The filter accepts the following options:
7129
7130 @table @option
7131 @item sizeX
7132 Set horizontal radius size.
7133
7134 @item planes
7135 Set which planes to filter. By default all planes are filtered.
7136
7137 @item sizeY
7138 Set vertical radius size, if zero it will be same as @code{sizeX}.
7139 Default is @code{0}.
7140 @end table
7141
7142 @subsection Commands
7143 This filter supports same commands as options.
7144 The command accepts the same syntax of the corresponding option.
7145
7146 If the specified expression is not valid, it is kept at its current
7147 value.
7148
7149 @section bbox
7150
7151 Compute the bounding box for the non-black pixels in the input frame
7152 luminance plane.
7153
7154 This filter computes the bounding box containing all the pixels with a
7155 luminance value greater than the minimum allowed value.
7156 The parameters describing the bounding box are printed on the filter
7157 log.
7158
7159 The filter accepts the following option:
7160
7161 @table @option
7162 @item min_val
7163 Set the minimal luminance value. Default is @code{16}.
7164 @end table
7165
7166 @subsection Commands
7167
7168 This filter supports the all above options as @ref{commands}.
7169
7170 @section bilateral
7171 Apply bilateral filter, spatial smoothing while preserving edges.
7172
7173 The filter accepts the following options:
7174 @table @option
7175 @item sigmaS
7176 Set sigma of gaussian function to calculate spatial weight.
7177 Allowed range is 0 to 512. Default is 0.1.
7178
7179 @item sigmaR
7180 Set sigma of gaussian function to calculate range weight.
7181 Allowed range is 0 to 1. Default is 0.1.
7182
7183 @item planes
7184 Set planes to filter. Default is first only.
7185 @end table
7186
7187 @subsection Commands
7188
7189 This filter supports the all above options as @ref{commands}.
7190
7191 @section bitplanenoise
7192
7193 Show and measure bit plane noise.
7194
7195 The filter accepts the following options:
7196
7197 @table @option
7198 @item bitplane
7199 Set which plane to analyze. Default is @code{1}.
7200
7201 @item filter
7202 Filter out noisy pixels from @code{bitplane} set above.
7203 Default is disabled.
7204 @end table
7205
7206 @section blackdetect
7207
7208 Detect video intervals that are (almost) completely black. Can be
7209 useful to detect chapter transitions, commercials, or invalid
7210 recordings.
7211
7212 The filter outputs its detection analysis to both the log as well as
7213 frame metadata. If a black segment of at least the specified minimum
7214 duration is found, a line with the start and end timestamps as well
7215 as duration is printed to the log with level @code{info}. In addition,
7216 a log line with level @code{debug} is printed per frame showing the
7217 black amount detected for that frame.
7218
7219 The filter also attaches metadata to the first frame of a black
7220 segment with key @code{lavfi.black_start} and to the first frame
7221 after the black segment ends with key @code{lavfi.black_end}. The
7222 value is the frame's timestamp. This metadata is added regardless
7223 of the minimum duration specified.
7224
7225 The filter accepts the following options:
7226
7227 @table @option
7228 @item black_min_duration, d
7229 Set the minimum detected black duration expressed in seconds. It must
7230 be a non-negative floating point number.
7231
7232 Default value is 2.0.
7233
7234 @item picture_black_ratio_th, pic_th
7235 Set the threshold for considering a picture "black".
7236 Express the minimum value for the ratio:
7237 @example
7238 @var{nb_black_pixels} / @var{nb_pixels}
7239 @end example
7240
7241 for which a picture is considered black.
7242 Default value is 0.98.
7243
7244 @item pixel_black_th, pix_th
7245 Set the threshold for considering a pixel "black".
7246
7247 The threshold expresses the maximum pixel luminance value for which a
7248 pixel is considered "black". The provided value is scaled according to
7249 the following equation:
7250 @example
7251 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
7252 @end example
7253
7254 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
7255 the input video format, the range is [0-255] for YUV full-range
7256 formats and [16-235] for YUV non full-range formats.
7257
7258 Default value is 0.10.
7259 @end table
7260
7261 The following example sets the maximum pixel threshold to the minimum
7262 value, and detects only black intervals of 2 or more seconds:
7263 @example
7264 blackdetect=d=2:pix_th=0.00
7265 @end example
7266
7267 @section blackframe
7268
7269 Detect frames that are (almost) completely black. Can be useful to
7270 detect chapter transitions or commercials. Output lines consist of
7271 the frame number of the detected frame, the percentage of blackness,
7272 the position in the file if known or -1 and the timestamp in seconds.
7273
7274 In order to display the output lines, you need to set the loglevel at
7275 least to the AV_LOG_INFO value.
7276
7277 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
7278 The value represents the percentage of pixels in the picture that
7279 are below the threshold value.
7280
7281 It accepts the following parameters:
7282
7283 @table @option
7284
7285 @item amount
7286 The percentage of the pixels that have to be below the threshold; it defaults to
7287 @code{98}.
7288
7289 @item threshold, thresh
7290 The threshold below which a pixel value is considered black; it defaults to
7291 @code{32}.
7292
7293 @end table
7294
7295 @anchor{blend}
7296 @section blend
7297
7298 Blend two video frames into each other.
7299
7300 The @code{blend} filter takes two input streams and outputs one
7301 stream, the first input is the "top" layer and second input is
7302 "bottom" layer.  By default, the output terminates when the longest input terminates.
7303
7304 The @code{tblend} (time blend) filter takes two consecutive frames
7305 from one single stream, and outputs the result obtained by blending
7306 the new frame on top of the old frame.
7307
7308 A description of the accepted options follows.
7309
7310 @table @option
7311 @item c0_mode
7312 @item c1_mode
7313 @item c2_mode
7314 @item c3_mode
7315 @item all_mode
7316 Set blend mode for specific pixel component or all pixel components in case
7317 of @var{all_mode}. Default value is @code{normal}.
7318
7319 Available values for component modes are:
7320 @table @samp
7321 @item addition
7322 @item grainmerge
7323 @item and
7324 @item average
7325 @item burn
7326 @item darken
7327 @item difference
7328 @item grainextract
7329 @item divide
7330 @item dodge
7331 @item freeze
7332 @item exclusion
7333 @item extremity
7334 @item glow
7335 @item hardlight
7336 @item hardmix
7337 @item heat
7338 @item lighten
7339 @item linearlight
7340 @item multiply
7341 @item multiply128
7342 @item negation
7343 @item normal
7344 @item or
7345 @item overlay
7346 @item phoenix
7347 @item pinlight
7348 @item reflect
7349 @item screen
7350 @item softlight
7351 @item subtract
7352 @item vividlight
7353 @item xor
7354 @end table
7355
7356 @item c0_opacity
7357 @item c1_opacity
7358 @item c2_opacity
7359 @item c3_opacity
7360 @item all_opacity
7361 Set blend opacity for specific pixel component or all pixel components in case
7362 of @var{all_opacity}. Only used in combination with pixel component blend modes.
7363
7364 @item c0_expr
7365 @item c1_expr
7366 @item c2_expr
7367 @item c3_expr
7368 @item all_expr
7369 Set blend expression for specific pixel component or all pixel components in case
7370 of @var{all_expr}. Note that related mode options will be ignored if those are set.
7371
7372 The expressions can use the following variables:
7373
7374 @table @option
7375 @item N
7376 The sequential number of the filtered frame, starting from @code{0}.
7377
7378 @item X
7379 @item Y
7380 the coordinates of the current sample
7381
7382 @item W
7383 @item H
7384 the width and height of currently filtered plane
7385
7386 @item SW
7387 @item SH
7388 Width and height scale for the plane being filtered. It is the
7389 ratio between the dimensions of the current plane to the luma plane,
7390 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
7391 the luma plane and @code{0.5,0.5} for the chroma planes.
7392
7393 @item T
7394 Time of the current frame, expressed in seconds.
7395
7396 @item TOP, A
7397 Value of pixel component at current location for first video frame (top layer).
7398
7399 @item BOTTOM, B
7400 Value of pixel component at current location for second video frame (bottom layer).
7401 @end table
7402 @end table
7403
7404 The @code{blend} filter also supports the @ref{framesync} options.
7405
7406 @subsection Examples
7407
7408 @itemize
7409 @item
7410 Apply transition from bottom layer to top layer in first 10 seconds:
7411 @example
7412 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
7413 @end example
7414
7415 @item
7416 Apply linear horizontal transition from top layer to bottom layer:
7417 @example
7418 blend=all_expr='A*(X/W)+B*(1-X/W)'
7419 @end example
7420
7421 @item
7422 Apply 1x1 checkerboard effect:
7423 @example
7424 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
7425 @end example
7426
7427 @item
7428 Apply uncover left effect:
7429 @example
7430 blend=all_expr='if(gte(N*SW+X,W),A,B)'
7431 @end example
7432
7433 @item
7434 Apply uncover down effect:
7435 @example
7436 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
7437 @end example
7438
7439 @item
7440 Apply uncover up-left effect:
7441 @example
7442 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
7443 @end example
7444
7445 @item
7446 Split diagonally video and shows top and bottom layer on each side:
7447 @example
7448 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
7449 @end example
7450
7451 @item
7452 Display differences between the current and the previous frame:
7453 @example
7454 tblend=all_mode=grainextract
7455 @end example
7456 @end itemize
7457
7458 @section bm3d
7459
7460 Denoise frames using Block-Matching 3D algorithm.
7461
7462 The filter accepts the following options.
7463
7464 @table @option
7465 @item sigma
7466 Set denoising strength. Default value is 1.
7467 Allowed range is from 0 to 999.9.
7468 The denoising algorithm is very sensitive to sigma, so adjust it
7469 according to the source.
7470
7471 @item block
7472 Set local patch size. This sets dimensions in 2D.
7473
7474 @item bstep
7475 Set sliding step for processing blocks. Default value is 4.
7476 Allowed range is from 1 to 64.
7477 Smaller values allows processing more reference blocks and is slower.
7478
7479 @item group
7480 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
7481 When set to 1, no block matching is done. Larger values allows more blocks
7482 in single group.
7483 Allowed range is from 1 to 256.
7484
7485 @item range
7486 Set radius for search block matching. Default is 9.
7487 Allowed range is from 1 to INT32_MAX.
7488
7489 @item mstep
7490 Set step between two search locations for block matching. Default is 1.
7491 Allowed range is from 1 to 64. Smaller is slower.
7492
7493 @item thmse
7494 Set threshold of mean square error for block matching. Valid range is 0 to
7495 INT32_MAX.
7496
7497 @item hdthr
7498 Set thresholding parameter for hard thresholding in 3D transformed domain.
7499 Larger values results in stronger hard-thresholding filtering in frequency
7500 domain.
7501
7502 @item estim
7503 Set filtering estimation mode. Can be @code{basic} or @code{final}.
7504 Default is @code{basic}.
7505
7506 @item ref
7507 If enabled, filter will use 2nd stream for block matching.
7508 Default is disabled for @code{basic} value of @var{estim} option,
7509 and always enabled if value of @var{estim} is @code{final}.
7510
7511 @item planes
7512 Set planes to filter. Default is all available except alpha.
7513 @end table
7514
7515 @subsection Examples
7516
7517 @itemize
7518 @item
7519 Basic filtering with bm3d:
7520 @example
7521 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
7522 @end example
7523
7524 @item
7525 Same as above, but filtering only luma:
7526 @example
7527 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
7528 @end example
7529
7530 @item
7531 Same as above, but with both estimation modes:
7532 @example
7533 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
7534 @end example
7535
7536 @item
7537 Same as above, but prefilter with @ref{nlmeans} filter instead:
7538 @example
7539 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
7540 @end example
7541 @end itemize
7542
7543 @section boxblur
7544
7545 Apply a boxblur algorithm to the input video.
7546
7547 It accepts the following parameters:
7548
7549 @table @option
7550
7551 @item luma_radius, lr
7552 @item luma_power, lp
7553 @item chroma_radius, cr
7554 @item chroma_power, cp
7555 @item alpha_radius, ar
7556 @item alpha_power, ap
7557
7558 @end table
7559
7560 A description of the accepted options follows.
7561
7562 @table @option
7563 @item luma_radius, lr
7564 @item chroma_radius, cr
7565 @item alpha_radius, ar
7566 Set an expression for the box radius in pixels used for blurring the
7567 corresponding input plane.
7568
7569 The radius value must be a non-negative number, and must not be
7570 greater than the value of the expression @code{min(w,h)/2} for the
7571 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
7572 planes.
7573
7574 Default value for @option{luma_radius} is "2". If not specified,
7575 @option{chroma_radius} and @option{alpha_radius} default to the
7576 corresponding value set for @option{luma_radius}.
7577
7578 The expressions can contain the following constants:
7579 @table @option
7580 @item w
7581 @item h
7582 The input width and height in pixels.
7583
7584 @item cw
7585 @item ch
7586 The input chroma image width and height in pixels.
7587
7588 @item hsub
7589 @item vsub
7590 The horizontal and vertical chroma subsample values. For example, for the
7591 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
7592 @end table
7593
7594 @item luma_power, lp
7595 @item chroma_power, cp
7596 @item alpha_power, ap
7597 Specify how many times the boxblur filter is applied to the
7598 corresponding plane.
7599
7600 Default value for @option{luma_power} is 2. If not specified,
7601 @option{chroma_power} and @option{alpha_power} default to the
7602 corresponding value set for @option{luma_power}.
7603
7604 A value of 0 will disable the effect.
7605 @end table
7606
7607 @subsection Examples
7608
7609 @itemize
7610 @item
7611 Apply a boxblur filter with the luma, chroma, and alpha radii
7612 set to 2:
7613 @example
7614 boxblur=luma_radius=2:luma_power=1
7615 boxblur=2:1
7616 @end example
7617
7618 @item
7619 Set the luma radius to 2, and alpha and chroma radius to 0:
7620 @example
7621 boxblur=2:1:cr=0:ar=0
7622 @end example
7623
7624 @item
7625 Set the luma and chroma radii to a fraction of the video dimension:
7626 @example
7627 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
7628 @end example
7629 @end itemize
7630
7631 @section bwdif
7632
7633 Deinterlace the input video ("bwdif" stands for "Bob Weaver
7634 Deinterlacing Filter").
7635
7636 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
7637 interpolation algorithms.
7638 It accepts the following parameters:
7639
7640 @table @option
7641 @item mode
7642 The interlacing mode to adopt. It accepts one of the following values:
7643
7644 @table @option
7645 @item 0, send_frame
7646 Output one frame for each frame.
7647 @item 1, send_field
7648 Output one frame for each field.
7649 @end table
7650
7651 The default value is @code{send_field}.
7652
7653 @item parity
7654 The picture field parity assumed for the input interlaced video. It accepts one
7655 of the following values:
7656
7657 @table @option
7658 @item 0, tff
7659 Assume the top field is first.
7660 @item 1, bff
7661 Assume the bottom field is first.
7662 @item -1, auto
7663 Enable automatic detection of field parity.
7664 @end table
7665
7666 The default value is @code{auto}.
7667 If the interlacing is unknown or the decoder does not export this information,
7668 top field first will be assumed.
7669
7670 @item deint
7671 Specify which frames to deinterlace. Accepts one of the following
7672 values:
7673
7674 @table @option
7675 @item 0, all
7676 Deinterlace all frames.
7677 @item 1, interlaced
7678 Only deinterlace frames marked as interlaced.
7679 @end table
7680
7681 The default value is @code{all}.
7682 @end table
7683
7684 @section cas
7685
7686 Apply Contrast Adaptive Sharpen filter to video stream.
7687
7688 The filter accepts the following options:
7689
7690 @table @option
7691 @item strength
7692 Set the sharpening strength. Default value is 0.
7693
7694 @item planes
7695 Set planes to filter. Default value is to filter all
7696 planes except alpha plane.
7697 @end table
7698
7699 @subsection Commands
7700 This filter supports same @ref{commands} as options.
7701
7702 @section chromahold
7703 Remove all color information for all colors except for certain one.
7704
7705 The filter accepts the following options:
7706
7707 @table @option
7708 @item color
7709 The color which will not be replaced with neutral chroma.
7710
7711 @item similarity
7712 Similarity percentage with the above color.
7713 0.01 matches only the exact key color, while 1.0 matches everything.
7714
7715 @item blend
7716 Blend percentage.
7717 0.0 makes pixels either fully gray, or not gray at all.
7718 Higher values result in more preserved color.
7719
7720 @item yuv
7721 Signals that the color passed is already in YUV instead of RGB.
7722
7723 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7724 This can be used to pass exact YUV values as hexadecimal numbers.
7725 @end table
7726
7727 @subsection Commands
7728 This filter supports same @ref{commands} as options.
7729 The command accepts the same syntax of the corresponding option.
7730
7731 If the specified expression is not valid, it is kept at its current
7732 value.
7733
7734 @section chromakey
7735 YUV colorspace color/chroma keying.
7736
7737 The filter accepts the following options:
7738
7739 @table @option
7740 @item color
7741 The color which will be replaced with transparency.
7742
7743 @item similarity
7744 Similarity percentage with the key color.
7745
7746 0.01 matches only the exact key color, while 1.0 matches everything.
7747
7748 @item blend
7749 Blend percentage.
7750
7751 0.0 makes pixels either fully transparent, or not transparent at all.
7752
7753 Higher values result in semi-transparent pixels, with a higher transparency
7754 the more similar the pixels color is to the key color.
7755
7756 @item yuv
7757 Signals that the color passed is already in YUV instead of RGB.
7758
7759 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7760 This can be used to pass exact YUV values as hexadecimal numbers.
7761 @end table
7762
7763 @subsection Commands
7764 This filter supports same @ref{commands} as options.
7765 The command accepts the same syntax of the corresponding option.
7766
7767 If the specified expression is not valid, it is kept at its current
7768 value.
7769
7770 @subsection Examples
7771
7772 @itemize
7773 @item
7774 Make every green pixel in the input image transparent:
7775 @example
7776 ffmpeg -i input.png -vf chromakey=green out.png
7777 @end example
7778
7779 @item
7780 Overlay a greenscreen-video on top of a static black background.
7781 @example
7782 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
7783 @end example
7784 @end itemize
7785
7786 @section chromanr
7787 Reduce chrominance noise.
7788
7789 The filter accepts the following options:
7790
7791 @table @option
7792 @item thres
7793 Set threshold for averaging chrominance values.
7794 Sum of absolute difference of Y, U and V pixel components of current
7795 pixel and neighbour pixels lower than this threshold will be used in
7796 averaging. Luma component is left unchanged and is copied to output.
7797 Default value is 30. Allowed range is from 1 to 200.
7798
7799 @item sizew
7800 Set horizontal radius of rectangle used for averaging.
7801 Allowed range is from 1 to 100. Default value is 5.
7802
7803 @item sizeh
7804 Set vertical radius of rectangle used for averaging.
7805 Allowed range is from 1 to 100. Default value is 5.
7806
7807 @item stepw
7808 Set horizontal step when averaging. Default value is 1.
7809 Allowed range is from 1 to 50.
7810 Mostly useful to speed-up filtering.
7811
7812 @item steph
7813 Set vertical step when averaging. Default value is 1.
7814 Allowed range is from 1 to 50.
7815 Mostly useful to speed-up filtering.
7816
7817 @item threy
7818 Set Y threshold for averaging chrominance values.
7819 Set finer control for max allowed difference between Y components
7820 of current pixel and neigbour pixels.
7821 Default value is 200. Allowed range is from 1 to 200.
7822
7823 @item threu
7824 Set U threshold for averaging chrominance values.
7825 Set finer control for max allowed difference between U components
7826 of current pixel and neigbour pixels.
7827 Default value is 200. Allowed range is from 1 to 200.
7828
7829 @item threv
7830 Set V threshold for averaging chrominance values.
7831 Set finer control for max allowed difference between V components
7832 of current pixel and neigbour pixels.
7833 Default value is 200. Allowed range is from 1 to 200.
7834 @end table
7835
7836 @subsection Commands
7837 This filter supports same @ref{commands} as options.
7838 The command accepts the same syntax of the corresponding option.
7839
7840 @section chromashift
7841 Shift chroma pixels horizontally and/or vertically.
7842
7843 The filter accepts the following options:
7844 @table @option
7845 @item cbh
7846 Set amount to shift chroma-blue horizontally.
7847 @item cbv
7848 Set amount to shift chroma-blue vertically.
7849 @item crh
7850 Set amount to shift chroma-red horizontally.
7851 @item crv
7852 Set amount to shift chroma-red vertically.
7853 @item edge
7854 Set edge mode, can be @var{smear}, default, or @var{warp}.
7855 @end table
7856
7857 @subsection Commands
7858
7859 This filter supports the all above options as @ref{commands}.
7860
7861 @section ciescope
7862
7863 Display CIE color diagram with pixels overlaid onto it.
7864
7865 The filter accepts the following options:
7866
7867 @table @option
7868 @item system
7869 Set color system.
7870
7871 @table @samp
7872 @item ntsc, 470m
7873 @item ebu, 470bg
7874 @item smpte
7875 @item 240m
7876 @item apple
7877 @item widergb
7878 @item cie1931
7879 @item rec709, hdtv
7880 @item uhdtv, rec2020
7881 @item dcip3
7882 @end table
7883
7884 @item cie
7885 Set CIE system.
7886
7887 @table @samp
7888 @item xyy
7889 @item ucs
7890 @item luv
7891 @end table
7892
7893 @item gamuts
7894 Set what gamuts to draw.
7895
7896 See @code{system} option for available values.
7897
7898 @item size, s
7899 Set ciescope size, by default set to 512.
7900
7901 @item intensity, i
7902 Set intensity used to map input pixel values to CIE diagram.
7903
7904 @item contrast
7905 Set contrast used to draw tongue colors that are out of active color system gamut.
7906
7907 @item corrgamma
7908 Correct gamma displayed on scope, by default enabled.
7909
7910 @item showwhite
7911 Show white point on CIE diagram, by default disabled.
7912
7913 @item gamma
7914 Set input gamma. Used only with XYZ input color space.
7915 @end table
7916
7917 @section codecview
7918
7919 Visualize information exported by some codecs.
7920
7921 Some codecs can export information through frames using side-data or other
7922 means. For example, some MPEG based codecs export motion vectors through the
7923 @var{export_mvs} flag in the codec @option{flags2} option.
7924
7925 The filter accepts the following option:
7926
7927 @table @option
7928 @item mv
7929 Set motion vectors to visualize.
7930
7931 Available flags for @var{mv} are:
7932
7933 @table @samp
7934 @item pf
7935 forward predicted MVs of P-frames
7936 @item bf
7937 forward predicted MVs of B-frames
7938 @item bb
7939 backward predicted MVs of B-frames
7940 @end table
7941
7942 @item qp
7943 Display quantization parameters using the chroma planes.
7944
7945 @item mv_type, mvt
7946 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7947
7948 Available flags for @var{mv_type} are:
7949
7950 @table @samp
7951 @item fp
7952 forward predicted MVs
7953 @item bp
7954 backward predicted MVs
7955 @end table
7956
7957 @item frame_type, ft
7958 Set frame type to visualize motion vectors of.
7959
7960 Available flags for @var{frame_type} are:
7961
7962 @table @samp
7963 @item if
7964 intra-coded frames (I-frames)
7965 @item pf
7966 predicted frames (P-frames)
7967 @item bf
7968 bi-directionally predicted frames (B-frames)
7969 @end table
7970 @end table
7971
7972 @subsection Examples
7973
7974 @itemize
7975 @item
7976 Visualize forward predicted MVs of all frames using @command{ffplay}:
7977 @example
7978 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7979 @end example
7980
7981 @item
7982 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7983 @example
7984 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7985 @end example
7986 @end itemize
7987
7988 @section colorbalance
7989 Modify intensity of primary colors (red, green and blue) of input frames.
7990
7991 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7992 regions for the red-cyan, green-magenta or blue-yellow balance.
7993
7994 A positive adjustment value shifts the balance towards the primary color, a negative
7995 value towards the complementary color.
7996
7997 The filter accepts the following options:
7998
7999 @table @option
8000 @item rs
8001 @item gs
8002 @item bs
8003 Adjust red, green and blue shadows (darkest pixels).
8004
8005 @item rm
8006 @item gm
8007 @item bm
8008 Adjust red, green and blue midtones (medium pixels).
8009
8010 @item rh
8011 @item gh
8012 @item bh
8013 Adjust red, green and blue highlights (brightest pixels).
8014
8015 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
8016
8017 @item pl
8018 Preserve lightness when changing color balance. Default is disabled.
8019 @end table
8020
8021 @subsection Examples
8022
8023 @itemize
8024 @item
8025 Add red color cast to shadows:
8026 @example
8027 colorbalance=rs=.3
8028 @end example
8029 @end itemize
8030
8031 @subsection Commands
8032
8033 This filter supports the all above options as @ref{commands}.
8034
8035 @section colorcontrast
8036
8037 Adjust color contrast between RGB components.
8038
8039 The filter accepts the following options:
8040
8041 @table @option
8042 @item rc
8043 Set the red-cyan contrast. Defaults is 0.0. Allowed range is from -1.0 to 1.0.
8044
8045 @item gm
8046 Set the green-magenta contrast. Defaults is 0.0. Allowed range is from -1.0 to 1.0.
8047
8048 @item by
8049 Set the blue-yellow contrast. Defaults is 0.0. Allowed range is from -1.0 to 1.0.
8050
8051 @item rcw
8052 @item gmw
8053 @item byw
8054 Set the weight of each @code{rc}, @code{gm}, @code{by} option value. Default value is 0.0.
8055 Allowed range is from 0.0 to 1.0. If all weights are 0.0 filtering is disabled.
8056
8057 @item pl
8058 Set the amount of preserving lightness. Default value is 0.0. Allowed range is from 0.0 to 1.0.
8059 @end table
8060
8061 @subsection Commands
8062
8063 This filter supports the all above options as @ref{commands}.
8064
8065 @section colorcorrect
8066
8067 Adjust color white balance selectively for blacks and whites.
8068 This filter operates in YUV colorspace.
8069
8070 The filter accepts the following options:
8071
8072 @table @option
8073 @item rl
8074 Set the red shadow spot. Allowed range is from -1.0 to 1.0.
8075 Default value is 0.
8076
8077 @item bl
8078 Set the blue shadow spot. Allowed range is from -1.0 to 1.0.
8079 Default value is 0.
8080
8081 @item rh
8082 Set the red highlight spot. Allowed range is from -1.0 to 1.0.
8083 Default value is 0.
8084
8085 @item bh
8086 Set the red highlight spot. Allowed range is from -1.0 to 1.0.
8087 Default value is 0.
8088
8089 @item saturation
8090 Set the amount of saturation. Allowed range is from -3.0 to 3.0.
8091 Default value is 1.
8092 @end table
8093
8094 @subsection Commands
8095
8096 This filter supports the all above options as @ref{commands}.
8097
8098 @section colorchannelmixer
8099
8100 Adjust video input frames by re-mixing color channels.
8101
8102 This filter modifies a color channel by adding the values associated to
8103 the other channels of the same pixels. For example if the value to
8104 modify is red, the output value will be:
8105 @example
8106 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
8107 @end example
8108
8109 The filter accepts the following options:
8110
8111 @table @option
8112 @item rr
8113 @item rg
8114 @item rb
8115 @item ra
8116 Adjust contribution of input red, green, blue and alpha channels for output red channel.
8117 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
8118
8119 @item gr
8120 @item gg
8121 @item gb
8122 @item ga
8123 Adjust contribution of input red, green, blue and alpha channels for output green channel.
8124 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
8125
8126 @item br
8127 @item bg
8128 @item bb
8129 @item ba
8130 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
8131 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
8132
8133 @item ar
8134 @item ag
8135 @item ab
8136 @item aa
8137 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
8138 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
8139
8140 Allowed ranges for options are @code{[-2.0, 2.0]}.
8141
8142 @item pl
8143 Preserve lightness when changing colors. Allowed range is from @code{[0.0, 1.0]}.
8144 Default is @code{0.0}, thus disabled.
8145 @end table
8146
8147 @subsection Examples
8148
8149 @itemize
8150 @item
8151 Convert source to grayscale:
8152 @example
8153 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
8154 @end example
8155 @item
8156 Simulate sepia tones:
8157 @example
8158 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
8159 @end example
8160 @end itemize
8161
8162 @subsection Commands
8163
8164 This filter supports the all above options as @ref{commands}.
8165
8166 @section colorkey
8167 RGB colorspace color keying.
8168
8169 The filter accepts the following options:
8170
8171 @table @option
8172 @item color
8173 The color which will be replaced with transparency.
8174
8175 @item similarity
8176 Similarity percentage with the key color.
8177
8178 0.01 matches only the exact key color, while 1.0 matches everything.
8179
8180 @item blend
8181 Blend percentage.
8182
8183 0.0 makes pixels either fully transparent, or not transparent at all.
8184
8185 Higher values result in semi-transparent pixels, with a higher transparency
8186 the more similar the pixels color is to the key color.
8187 @end table
8188
8189 @subsection Examples
8190
8191 @itemize
8192 @item
8193 Make every green pixel in the input image transparent:
8194 @example
8195 ffmpeg -i input.png -vf colorkey=green out.png
8196 @end example
8197
8198 @item
8199 Overlay a greenscreen-video on top of a static background image.
8200 @example
8201 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
8202 @end example
8203 @end itemize
8204
8205 @subsection Commands
8206 This filter supports same @ref{commands} as options.
8207 The command accepts the same syntax of the corresponding option.
8208
8209 If the specified expression is not valid, it is kept at its current
8210 value.
8211
8212 @section colorhold
8213 Remove all color information for all RGB colors except for certain one.
8214
8215 The filter accepts the following options:
8216
8217 @table @option
8218 @item color
8219 The color which will not be replaced with neutral gray.
8220
8221 @item similarity
8222 Similarity percentage with the above color.
8223 0.01 matches only the exact key color, while 1.0 matches everything.
8224
8225 @item blend
8226 Blend percentage. 0.0 makes pixels fully gray.
8227 Higher values result in more preserved color.
8228 @end table
8229
8230 @subsection Commands
8231 This filter supports same @ref{commands} as options.
8232 The command accepts the same syntax of the corresponding option.
8233
8234 If the specified expression is not valid, it is kept at its current
8235 value.
8236
8237 @section colorlevels
8238
8239 Adjust video input frames using levels.
8240
8241 The filter accepts the following options:
8242
8243 @table @option
8244 @item rimin
8245 @item gimin
8246 @item bimin
8247 @item aimin
8248 Adjust red, green, blue and alpha input black point.
8249 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
8250
8251 @item rimax
8252 @item gimax
8253 @item bimax
8254 @item aimax
8255 Adjust red, green, blue and alpha input white point.
8256 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
8257
8258 Input levels are used to lighten highlights (bright tones), darken shadows
8259 (dark tones), change the balance of bright and dark tones.
8260
8261 @item romin
8262 @item gomin
8263 @item bomin
8264 @item aomin
8265 Adjust red, green, blue and alpha output black point.
8266 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
8267
8268 @item romax
8269 @item gomax
8270 @item bomax
8271 @item aomax
8272 Adjust red, green, blue and alpha output white point.
8273 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
8274
8275 Output levels allows manual selection of a constrained output level range.
8276 @end table
8277
8278 @subsection Examples
8279
8280 @itemize
8281 @item
8282 Make video output darker:
8283 @example
8284 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
8285 @end example
8286
8287 @item
8288 Increase contrast:
8289 @example
8290 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
8291 @end example
8292
8293 @item
8294 Make video output lighter:
8295 @example
8296 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
8297 @end example
8298
8299 @item
8300 Increase brightness:
8301 @example
8302 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
8303 @end example
8304 @end itemize
8305
8306 @subsection Commands
8307
8308 This filter supports the all above options as @ref{commands}.
8309
8310 @section colormatrix
8311
8312 Convert color matrix.
8313
8314 The filter accepts the following options:
8315
8316 @table @option
8317 @item src
8318 @item dst
8319 Specify the source and destination color matrix. Both values must be
8320 specified.
8321
8322 The accepted values are:
8323 @table @samp
8324 @item bt709
8325 BT.709
8326
8327 @item fcc
8328 FCC
8329
8330 @item bt601
8331 BT.601
8332
8333 @item bt470
8334 BT.470
8335
8336 @item bt470bg
8337 BT.470BG
8338
8339 @item smpte170m
8340 SMPTE-170M
8341
8342 @item smpte240m
8343 SMPTE-240M
8344
8345 @item bt2020
8346 BT.2020
8347 @end table
8348 @end table
8349
8350 For example to convert from BT.601 to SMPTE-240M, use the command:
8351 @example
8352 colormatrix=bt601:smpte240m
8353 @end example
8354
8355 @section colorspace
8356
8357 Convert colorspace, transfer characteristics or color primaries.
8358 Input video needs to have an even size.
8359
8360 The filter accepts the following options:
8361
8362 @table @option
8363 @anchor{all}
8364 @item all
8365 Specify all color properties at once.
8366
8367 The accepted values are:
8368 @table @samp
8369 @item bt470m
8370 BT.470M
8371
8372 @item bt470bg
8373 BT.470BG
8374
8375 @item bt601-6-525
8376 BT.601-6 525
8377
8378 @item bt601-6-625
8379 BT.601-6 625
8380
8381 @item bt709
8382 BT.709
8383
8384 @item smpte170m
8385 SMPTE-170M
8386
8387 @item smpte240m
8388 SMPTE-240M
8389
8390 @item bt2020
8391 BT.2020
8392
8393 @end table
8394
8395 @anchor{space}
8396 @item space
8397 Specify output colorspace.
8398
8399 The accepted values are:
8400 @table @samp
8401 @item bt709
8402 BT.709
8403
8404 @item fcc
8405 FCC
8406
8407 @item bt470bg
8408 BT.470BG or BT.601-6 625
8409
8410 @item smpte170m
8411 SMPTE-170M or BT.601-6 525
8412
8413 @item smpte240m
8414 SMPTE-240M
8415
8416 @item ycgco
8417 YCgCo
8418
8419 @item bt2020ncl
8420 BT.2020 with non-constant luminance
8421
8422 @end table
8423
8424 @anchor{trc}
8425 @item trc
8426 Specify output transfer characteristics.
8427
8428 The accepted values are:
8429 @table @samp
8430 @item bt709
8431 BT.709
8432
8433 @item bt470m
8434 BT.470M
8435
8436 @item bt470bg
8437 BT.470BG
8438
8439 @item gamma22
8440 Constant gamma of 2.2
8441
8442 @item gamma28
8443 Constant gamma of 2.8
8444
8445 @item smpte170m
8446 SMPTE-170M, BT.601-6 625 or BT.601-6 525
8447
8448 @item smpte240m
8449 SMPTE-240M
8450
8451 @item srgb
8452 SRGB
8453
8454 @item iec61966-2-1
8455 iec61966-2-1
8456
8457 @item iec61966-2-4
8458 iec61966-2-4
8459
8460 @item xvycc
8461 xvycc
8462
8463 @item bt2020-10
8464 BT.2020 for 10-bits content
8465
8466 @item bt2020-12
8467 BT.2020 for 12-bits content
8468
8469 @end table
8470
8471 @anchor{primaries}
8472 @item primaries
8473 Specify output color primaries.
8474
8475 The accepted values are:
8476 @table @samp
8477 @item bt709
8478 BT.709
8479
8480 @item bt470m
8481 BT.470M
8482
8483 @item bt470bg
8484 BT.470BG or BT.601-6 625
8485
8486 @item smpte170m
8487 SMPTE-170M or BT.601-6 525
8488
8489 @item smpte240m
8490 SMPTE-240M
8491
8492 @item film
8493 film
8494
8495 @item smpte431
8496 SMPTE-431
8497
8498 @item smpte432
8499 SMPTE-432
8500
8501 @item bt2020
8502 BT.2020
8503
8504 @item jedec-p22
8505 JEDEC P22 phosphors
8506
8507 @end table
8508
8509 @anchor{range}
8510 @item range
8511 Specify output color range.
8512
8513 The accepted values are:
8514 @table @samp
8515 @item tv
8516 TV (restricted) range
8517
8518 @item mpeg
8519 MPEG (restricted) range
8520
8521 @item pc
8522 PC (full) range
8523
8524 @item jpeg
8525 JPEG (full) range
8526
8527 @end table
8528
8529 @item format
8530 Specify output color format.
8531
8532 The accepted values are:
8533 @table @samp
8534 @item yuv420p
8535 YUV 4:2:0 planar 8-bits
8536
8537 @item yuv420p10
8538 YUV 4:2:0 planar 10-bits
8539
8540 @item yuv420p12
8541 YUV 4:2:0 planar 12-bits
8542
8543 @item yuv422p
8544 YUV 4:2:2 planar 8-bits
8545
8546 @item yuv422p10
8547 YUV 4:2:2 planar 10-bits
8548
8549 @item yuv422p12
8550 YUV 4:2:2 planar 12-bits
8551
8552 @item yuv444p
8553 YUV 4:4:4 planar 8-bits
8554
8555 @item yuv444p10
8556 YUV 4:4:4 planar 10-bits
8557
8558 @item yuv444p12
8559 YUV 4:4:4 planar 12-bits
8560
8561 @end table
8562
8563 @item fast
8564 Do a fast conversion, which skips gamma/primary correction. This will take
8565 significantly less CPU, but will be mathematically incorrect. To get output
8566 compatible with that produced by the colormatrix filter, use fast=1.
8567
8568 @item dither
8569 Specify dithering mode.
8570
8571 The accepted values are:
8572 @table @samp
8573 @item none
8574 No dithering
8575
8576 @item fsb
8577 Floyd-Steinberg dithering
8578 @end table
8579
8580 @item wpadapt
8581 Whitepoint adaptation mode.
8582
8583 The accepted values are:
8584 @table @samp
8585 @item bradford
8586 Bradford whitepoint adaptation
8587
8588 @item vonkries
8589 von Kries whitepoint adaptation
8590
8591 @item identity
8592 identity whitepoint adaptation (i.e. no whitepoint adaptation)
8593 @end table
8594
8595 @item iall
8596 Override all input properties at once. Same accepted values as @ref{all}.
8597
8598 @item ispace
8599 Override input colorspace. Same accepted values as @ref{space}.
8600
8601 @item iprimaries
8602 Override input color primaries. Same accepted values as @ref{primaries}.
8603
8604 @item itrc
8605 Override input transfer characteristics. Same accepted values as @ref{trc}.
8606
8607 @item irange
8608 Override input color range. Same accepted values as @ref{range}.
8609
8610 @end table
8611
8612 The filter converts the transfer characteristics, color space and color
8613 primaries to the specified user values. The output value, if not specified,
8614 is set to a default value based on the "all" property. If that property is
8615 also not specified, the filter will log an error. The output color range and
8616 format default to the same value as the input color range and format. The
8617 input transfer characteristics, color space, color primaries and color range
8618 should be set on the input data. If any of these are missing, the filter will
8619 log an error and no conversion will take place.
8620
8621 For example to convert the input to SMPTE-240M, use the command:
8622 @example
8623 colorspace=smpte240m
8624 @end example
8625
8626 @section colortemperature
8627 Adjust color temperature in video to simulate variations in ambient color temperature.
8628
8629 The filter accepts the following options:
8630
8631 @table @option
8632 @item temperature
8633 Set the temperature in Kelvin. Allowed range is from 1000 to 40000.
8634 Default value is 6500 K.
8635
8636 @item mix
8637 Set mixing with filtered output. Allowed range is from 0 to 1.
8638 Default value is 1.
8639
8640 @item pl
8641 Set the amount of preserving lightness. Allowed range is from 0 to 1.
8642 Default value is 0.
8643 @end table
8644
8645 @subsection Commands
8646 This filter supports same @ref{commands} as options.
8647
8648 @section convolution
8649
8650 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
8651
8652 The filter accepts the following options:
8653
8654 @table @option
8655 @item 0m
8656 @item 1m
8657 @item 2m
8658 @item 3m
8659 Set matrix for each plane.
8660 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
8661 and from 1 to 49 odd number of signed integers in @var{row} mode.
8662
8663 @item 0rdiv
8664 @item 1rdiv
8665 @item 2rdiv
8666 @item 3rdiv
8667 Set multiplier for calculated value for each plane.
8668 If unset or 0, it will be sum of all matrix elements.
8669
8670 @item 0bias
8671 @item 1bias
8672 @item 2bias
8673 @item 3bias
8674 Set bias for each plane. This value is added to the result of the multiplication.
8675 Useful for making the overall image brighter or darker. Default is 0.0.
8676
8677 @item 0mode
8678 @item 1mode
8679 @item 2mode
8680 @item 3mode
8681 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
8682 Default is @var{square}.
8683 @end table
8684
8685 @subsection Commands
8686
8687 This filter supports the all above options as @ref{commands}.
8688
8689 @subsection Examples
8690
8691 @itemize
8692 @item
8693 Apply sharpen:
8694 @example
8695 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"
8696 @end example
8697
8698 @item
8699 Apply blur:
8700 @example
8701 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"
8702 @end example
8703
8704 @item
8705 Apply edge enhance:
8706 @example
8707 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"
8708 @end example
8709
8710 @item
8711 Apply edge detect:
8712 @example
8713 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"
8714 @end example
8715
8716 @item
8717 Apply laplacian edge detector which includes diagonals:
8718 @example
8719 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"
8720 @end example
8721
8722 @item
8723 Apply emboss:
8724 @example
8725 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"
8726 @end example
8727 @end itemize
8728
8729 @section convolve
8730
8731 Apply 2D convolution of video stream in frequency domain using second stream
8732 as impulse.
8733
8734 The filter accepts the following options:
8735
8736 @table @option
8737 @item planes
8738 Set which planes to process.
8739
8740 @item impulse
8741 Set which impulse video frames will be processed, can be @var{first}
8742 or @var{all}. Default is @var{all}.
8743 @end table
8744
8745 The @code{convolve} filter also supports the @ref{framesync} options.
8746
8747 @section copy
8748
8749 Copy the input video source unchanged to the output. This is mainly useful for
8750 testing purposes.
8751
8752 @anchor{coreimage}
8753 @section coreimage
8754 Video filtering on GPU using Apple's CoreImage API on OSX.
8755
8756 Hardware acceleration is based on an OpenGL context. Usually, this means it is
8757 processed by video hardware. However, software-based OpenGL implementations
8758 exist which means there is no guarantee for hardware processing. It depends on
8759 the respective OSX.
8760
8761 There are many filters and image generators provided by Apple that come with a
8762 large variety of options. The filter has to be referenced by its name along
8763 with its options.
8764
8765 The coreimage filter accepts the following options:
8766 @table @option
8767 @item list_filters
8768 List all available filters and generators along with all their respective
8769 options as well as possible minimum and maximum values along with the default
8770 values.
8771 @example
8772 list_filters=true
8773 @end example
8774
8775 @item filter
8776 Specify all filters by their respective name and options.
8777 Use @var{list_filters} to determine all valid filter names and options.
8778 Numerical options are specified by a float value and are automatically clamped
8779 to their respective value range.  Vector and color options have to be specified
8780 by a list of space separated float values. Character escaping has to be done.
8781 A special option name @code{default} is available to use default options for a
8782 filter.
8783
8784 It is required to specify either @code{default} or at least one of the filter options.
8785 All omitted options are used with their default values.
8786 The syntax of the filter string is as follows:
8787 @example
8788 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
8789 @end example
8790
8791 @item output_rect
8792 Specify a rectangle where the output of the filter chain is copied into the
8793 input image. It is given by a list of space separated float values:
8794 @example
8795 output_rect=x\ y\ width\ height
8796 @end example
8797 If not given, the output rectangle equals the dimensions of the input image.
8798 The output rectangle is automatically cropped at the borders of the input
8799 image. Negative values are valid for each component.
8800 @example
8801 output_rect=25\ 25\ 100\ 100
8802 @end example
8803 @end table
8804
8805 Several filters can be chained for successive processing without GPU-HOST
8806 transfers allowing for fast processing of complex filter chains.
8807 Currently, only filters with zero (generators) or exactly one (filters) input
8808 image and one output image are supported. Also, transition filters are not yet
8809 usable as intended.
8810
8811 Some filters generate output images with additional padding depending on the
8812 respective filter kernel. The padding is automatically removed to ensure the
8813 filter output has the same size as the input image.
8814
8815 For image generators, the size of the output image is determined by the
8816 previous output image of the filter chain or the input image of the whole
8817 filterchain, respectively. The generators do not use the pixel information of
8818 this image to generate their output. However, the generated output is
8819 blended onto this image, resulting in partial or complete coverage of the
8820 output image.
8821
8822 The @ref{coreimagesrc} video source can be used for generating input images
8823 which are directly fed into the filter chain. By using it, providing input
8824 images by another video source or an input video is not required.
8825
8826 @subsection Examples
8827
8828 @itemize
8829
8830 @item
8831 List all filters available:
8832 @example
8833 coreimage=list_filters=true
8834 @end example
8835
8836 @item
8837 Use the CIBoxBlur filter with default options to blur an image:
8838 @example
8839 coreimage=filter=CIBoxBlur@@default
8840 @end example
8841
8842 @item
8843 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
8844 its center at 100x100 and a radius of 50 pixels:
8845 @example
8846 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
8847 @end example
8848
8849 @item
8850 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
8851 given as complete and escaped command-line for Apple's standard bash shell:
8852 @example
8853 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
8854 @end example
8855 @end itemize
8856
8857 @section cover_rect
8858
8859 Cover a rectangular object
8860
8861 It accepts the following options:
8862
8863 @table @option
8864 @item cover
8865 Filepath of the optional cover image, needs to be in yuv420.
8866
8867 @item mode
8868 Set covering mode.
8869
8870 It accepts the following values:
8871 @table @samp
8872 @item cover
8873 cover it by the supplied image
8874 @item blur
8875 cover it by interpolating the surrounding pixels
8876 @end table
8877
8878 Default value is @var{blur}.
8879 @end table
8880
8881 @subsection Examples
8882
8883 @itemize
8884 @item
8885 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
8886 @example
8887 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8888 @end example
8889 @end itemize
8890
8891 @section crop
8892
8893 Crop the input video to given dimensions.
8894
8895 It accepts the following parameters:
8896
8897 @table @option
8898 @item w, out_w
8899 The width of the output video. It defaults to @code{iw}.
8900 This expression is evaluated only once during the filter
8901 configuration, or when the @samp{w} or @samp{out_w} command is sent.
8902
8903 @item h, out_h
8904 The height of the output video. It defaults to @code{ih}.
8905 This expression is evaluated only once during the filter
8906 configuration, or when the @samp{h} or @samp{out_h} command is sent.
8907
8908 @item x
8909 The horizontal position, in the input video, of the left edge of the output
8910 video. It defaults to @code{(in_w-out_w)/2}.
8911 This expression is evaluated per-frame.
8912
8913 @item y
8914 The vertical position, in the input video, of the top edge of the output video.
8915 It defaults to @code{(in_h-out_h)/2}.
8916 This expression is evaluated per-frame.
8917
8918 @item keep_aspect
8919 If set to 1 will force the output display aspect ratio
8920 to be the same of the input, by changing the output sample aspect
8921 ratio. It defaults to 0.
8922
8923 @item exact
8924 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
8925 width/height/x/y as specified and will not be rounded to nearest smaller value.
8926 It defaults to 0.
8927 @end table
8928
8929 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
8930 expressions containing the following constants:
8931
8932 @table @option
8933 @item x
8934 @item y
8935 The computed values for @var{x} and @var{y}. They are evaluated for
8936 each new frame.
8937
8938 @item in_w
8939 @item in_h
8940 The input width and height.
8941
8942 @item iw
8943 @item ih
8944 These are the same as @var{in_w} and @var{in_h}.
8945
8946 @item out_w
8947 @item out_h
8948 The output (cropped) width and height.
8949
8950 @item ow
8951 @item oh
8952 These are the same as @var{out_w} and @var{out_h}.
8953
8954 @item a
8955 same as @var{iw} / @var{ih}
8956
8957 @item sar
8958 input sample aspect ratio
8959
8960 @item dar
8961 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8962
8963 @item hsub
8964 @item vsub
8965 horizontal and vertical chroma subsample values. For example for the
8966 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8967
8968 @item n
8969 The number of the input frame, starting from 0.
8970
8971 @item pos
8972 the position in the file of the input frame, NAN if unknown
8973
8974 @item t
8975 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
8976
8977 @end table
8978
8979 The expression for @var{out_w} may depend on the value of @var{out_h},
8980 and the expression for @var{out_h} may depend on @var{out_w}, but they
8981 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
8982 evaluated after @var{out_w} and @var{out_h}.
8983
8984 The @var{x} and @var{y} parameters specify the expressions for the
8985 position of the top-left corner of the output (non-cropped) area. They
8986 are evaluated for each frame. If the evaluated value is not valid, it
8987 is approximated to the nearest valid value.
8988
8989 The expression for @var{x} may depend on @var{y}, and the expression
8990 for @var{y} may depend on @var{x}.
8991
8992 @subsection Examples
8993
8994 @itemize
8995 @item
8996 Crop area with size 100x100 at position (12,34).
8997 @example
8998 crop=100:100:12:34
8999 @end example
9000
9001 Using named options, the example above becomes:
9002 @example
9003 crop=w=100:h=100:x=12:y=34
9004 @end example
9005
9006 @item
9007 Crop the central input area with size 100x100:
9008 @example
9009 crop=100:100
9010 @end example
9011
9012 @item
9013 Crop the central input area with size 2/3 of the input video:
9014 @example
9015 crop=2/3*in_w:2/3*in_h
9016 @end example
9017
9018 @item
9019 Crop the input video central square:
9020 @example
9021 crop=out_w=in_h
9022 crop=in_h
9023 @end example
9024
9025 @item
9026 Delimit the rectangle with the top-left corner placed at position
9027 100:100 and the right-bottom corner corresponding to the right-bottom
9028 corner of the input image.
9029 @example
9030 crop=in_w-100:in_h-100:100:100
9031 @end example
9032
9033 @item
9034 Crop 10 pixels from the left and right borders, and 20 pixels from
9035 the top and bottom borders
9036 @example
9037 crop=in_w-2*10:in_h-2*20
9038 @end example
9039
9040 @item
9041 Keep only the bottom right quarter of the input image:
9042 @example
9043 crop=in_w/2:in_h/2:in_w/2:in_h/2
9044 @end example
9045
9046 @item
9047 Crop height for getting Greek harmony:
9048 @example
9049 crop=in_w:1/PHI*in_w
9050 @end example
9051
9052 @item
9053 Apply trembling effect:
9054 @example
9055 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)
9056 @end example
9057
9058 @item
9059 Apply erratic camera effect depending on timestamp:
9060 @example
9061 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)"
9062 @end example
9063
9064 @item
9065 Set x depending on the value of y:
9066 @example
9067 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
9068 @end example
9069 @end itemize
9070
9071 @subsection Commands
9072
9073 This filter supports the following commands:
9074 @table @option
9075 @item w, out_w
9076 @item h, out_h
9077 @item x
9078 @item y
9079 Set width/height of the output video and the horizontal/vertical position
9080 in the input video.
9081 The command accepts the same syntax of the corresponding option.
9082
9083 If the specified expression is not valid, it is kept at its current
9084 value.
9085 @end table
9086
9087 @section cropdetect
9088
9089 Auto-detect the crop size.
9090
9091 It calculates the necessary cropping parameters and prints the
9092 recommended parameters via the logging system. The detected dimensions
9093 correspond to the non-black area of the input video.
9094
9095 It accepts the following parameters:
9096
9097 @table @option
9098
9099 @item limit
9100 Set higher black value threshold, which can be optionally specified
9101 from nothing (0) to everything (255 for 8-bit based formats). An intensity
9102 value greater to the set value is considered non-black. It defaults to 24.
9103 You can also specify a value between 0.0 and 1.0 which will be scaled depending
9104 on the bitdepth of the pixel format.
9105
9106 @item round
9107 The value which the width/height should be divisible by. It defaults to
9108 16. The offset is automatically adjusted to center the video. Use 2 to
9109 get only even dimensions (needed for 4:2:2 video). 16 is best when
9110 encoding to most video codecs.
9111
9112 @item skip
9113 Set the number of initial frames for which evaluation is skipped.
9114 Default is 2. Range is 0 to INT_MAX.
9115
9116 @item reset_count, reset
9117 Set the counter that determines after how many frames cropdetect will
9118 reset the previously detected largest video area and start over to
9119 detect the current optimal crop area. Default value is 0.
9120
9121 This can be useful when channel logos distort the video area. 0
9122 indicates 'never reset', and returns the largest area encountered during
9123 playback.
9124 @end table
9125
9126 @anchor{cue}
9127 @section cue
9128
9129 Delay video filtering until a given wallclock timestamp. The filter first
9130 passes on @option{preroll} amount of frames, then it buffers at most
9131 @option{buffer} amount of frames and waits for the cue. After reaching the cue
9132 it forwards the buffered frames and also any subsequent frames coming in its
9133 input.
9134
9135 The filter can be used synchronize the output of multiple ffmpeg processes for
9136 realtime output devices like decklink. By putting the delay in the filtering
9137 chain and pre-buffering frames the process can pass on data to output almost
9138 immediately after the target wallclock timestamp is reached.
9139
9140 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
9141 some use cases.
9142
9143 @table @option
9144
9145 @item cue
9146 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
9147
9148 @item preroll
9149 The duration of content to pass on as preroll expressed in seconds. Default is 0.
9150
9151 @item buffer
9152 The maximum duration of content to buffer before waiting for the cue expressed
9153 in seconds. Default is 0.
9154
9155 @end table
9156
9157 @anchor{curves}
9158 @section curves
9159
9160 Apply color adjustments using curves.
9161
9162 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
9163 component (red, green and blue) has its values defined by @var{N} key points
9164 tied from each other using a smooth curve. The x-axis represents the pixel
9165 values from the input frame, and the y-axis the new pixel values to be set for
9166 the output frame.
9167
9168 By default, a component curve is defined by the two points @var{(0;0)} and
9169 @var{(1;1)}. This creates a straight line where each original pixel value is
9170 "adjusted" to its own value, which means no change to the image.
9171
9172 The filter allows you to redefine these two points and add some more. A new
9173 curve (using a natural cubic spline interpolation) will be define to pass
9174 smoothly through all these new coordinates. The new defined points needs to be
9175 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
9176 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
9177 the vector spaces, the values will be clipped accordingly.
9178
9179 The filter accepts the following options:
9180
9181 @table @option
9182 @item preset
9183 Select one of the available color presets. This option can be used in addition
9184 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
9185 options takes priority on the preset values.
9186 Available presets are:
9187 @table @samp
9188 @item none
9189 @item color_negative
9190 @item cross_process
9191 @item darker
9192 @item increase_contrast
9193 @item lighter
9194 @item linear_contrast
9195 @item medium_contrast
9196 @item negative
9197 @item strong_contrast
9198 @item vintage
9199 @end table
9200 Default is @code{none}.
9201 @item master, m
9202 Set the master key points. These points will define a second pass mapping. It
9203 is sometimes called a "luminance" or "value" mapping. It can be used with
9204 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
9205 post-processing LUT.
9206 @item red, r
9207 Set the key points for the red component.
9208 @item green, g
9209 Set the key points for the green component.
9210 @item blue, b
9211 Set the key points for the blue component.
9212 @item all
9213 Set the key points for all components (not including master).
9214 Can be used in addition to the other key points component
9215 options. In this case, the unset component(s) will fallback on this
9216 @option{all} setting.
9217 @item psfile
9218 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
9219 @item plot
9220 Save Gnuplot script of the curves in specified file.
9221 @end table
9222
9223 To avoid some filtergraph syntax conflicts, each key points list need to be
9224 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
9225
9226 @subsection Examples
9227
9228 @itemize
9229 @item
9230 Increase slightly the middle level of blue:
9231 @example
9232 curves=blue='0/0 0.5/0.58 1/1'
9233 @end example
9234
9235 @item
9236 Vintage effect:
9237 @example
9238 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'
9239 @end example
9240 Here we obtain the following coordinates for each components:
9241 @table @var
9242 @item red
9243 @code{(0;0.11) (0.42;0.51) (1;0.95)}
9244 @item green
9245 @code{(0;0) (0.50;0.48) (1;1)}
9246 @item blue
9247 @code{(0;0.22) (0.49;0.44) (1;0.80)}
9248 @end table
9249
9250 @item
9251 The previous example can also be achieved with the associated built-in preset:
9252 @example
9253 curves=preset=vintage
9254 @end example
9255
9256 @item
9257 Or simply:
9258 @example
9259 curves=vintage
9260 @end example
9261
9262 @item
9263 Use a Photoshop preset and redefine the points of the green component:
9264 @example
9265 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
9266 @end example
9267
9268 @item
9269 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
9270 and @command{gnuplot}:
9271 @example
9272 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
9273 gnuplot -p /tmp/curves.plt
9274 @end example
9275 @end itemize
9276
9277 @section datascope
9278
9279 Video data analysis filter.
9280
9281 This filter shows hexadecimal pixel values of part of video.
9282
9283 The filter accepts the following options:
9284
9285 @table @option
9286 @item size, s
9287 Set output video size.
9288
9289 @item x
9290 Set x offset from where to pick pixels.
9291
9292 @item y
9293 Set y offset from where to pick pixels.
9294
9295 @item mode
9296 Set scope mode, can be one of the following:
9297 @table @samp
9298 @item mono
9299 Draw hexadecimal pixel values with white color on black background.
9300
9301 @item color
9302 Draw hexadecimal pixel values with input video pixel color on black
9303 background.
9304
9305 @item color2
9306 Draw hexadecimal pixel values on color background picked from input video,
9307 the text color is picked in such way so its always visible.
9308 @end table
9309
9310 @item axis
9311 Draw rows and columns numbers on left and top of video.
9312
9313 @item opacity
9314 Set background opacity.
9315
9316 @item format
9317 Set display number format. Can be @code{hex}, or @code{dec}. Default is @code{hex}.
9318
9319 @item components
9320 Set pixel components to display. By default all pixel components are displayed.
9321 @end table
9322
9323 @section dblur
9324 Apply Directional blur filter.
9325
9326 The filter accepts the following options:
9327
9328 @table @option
9329 @item angle
9330 Set angle of directional blur. Default is @code{45}.
9331
9332 @item radius
9333 Set radius of directional blur. Default is @code{5}.
9334
9335 @item planes
9336 Set which planes to filter. By default all planes are filtered.
9337 @end table
9338
9339 @subsection Commands
9340 This filter supports same @ref{commands} as options.
9341 The command accepts the same syntax of the corresponding option.
9342
9343 If the specified expression is not valid, it is kept at its current
9344 value.
9345
9346 @section dctdnoiz
9347
9348 Denoise frames using 2D DCT (frequency domain filtering).
9349
9350 This filter is not designed for real time.
9351
9352 The filter accepts the following options:
9353
9354 @table @option
9355 @item sigma, s
9356 Set the noise sigma constant.
9357
9358 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
9359 coefficient (absolute value) below this threshold with be dropped.
9360
9361 If you need a more advanced filtering, see @option{expr}.
9362
9363 Default is @code{0}.
9364
9365 @item overlap
9366 Set number overlapping pixels for each block. Since the filter can be slow, you
9367 may want to reduce this value, at the cost of a less effective filter and the
9368 risk of various artefacts.
9369
9370 If the overlapping value doesn't permit processing the whole input width or
9371 height, a warning will be displayed and according borders won't be denoised.
9372
9373 Default value is @var{blocksize}-1, which is the best possible setting.
9374
9375 @item expr, e
9376 Set the coefficient factor expression.
9377
9378 For each coefficient of a DCT block, this expression will be evaluated as a
9379 multiplier value for the coefficient.
9380
9381 If this is option is set, the @option{sigma} option will be ignored.
9382
9383 The absolute value of the coefficient can be accessed through the @var{c}
9384 variable.
9385
9386 @item n
9387 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
9388 @var{blocksize}, which is the width and height of the processed blocks.
9389
9390 The default value is @var{3} (8x8) and can be raised to @var{4} for a
9391 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
9392 on the speed processing. Also, a larger block size does not necessarily means a
9393 better de-noising.
9394 @end table
9395
9396 @subsection Examples
9397
9398 Apply a denoise with a @option{sigma} of @code{4.5}:
9399 @example
9400 dctdnoiz=4.5
9401 @end example
9402
9403 The same operation can be achieved using the expression system:
9404 @example
9405 dctdnoiz=e='gte(c, 4.5*3)'
9406 @end example
9407
9408 Violent denoise using a block size of @code{16x16}:
9409 @example
9410 dctdnoiz=15:n=4
9411 @end example
9412
9413 @section deband
9414
9415 Remove banding artifacts from input video.
9416 It works by replacing banded pixels with average value of referenced pixels.
9417
9418 The filter accepts the following options:
9419
9420 @table @option
9421 @item 1thr
9422 @item 2thr
9423 @item 3thr
9424 @item 4thr
9425 Set banding detection threshold for each plane. Default is 0.02.
9426 Valid range is 0.00003 to 0.5.
9427 If difference between current pixel and reference pixel is less than threshold,
9428 it will be considered as banded.
9429
9430 @item range, r
9431 Banding detection range in pixels. Default is 16. If positive, random number
9432 in range 0 to set value will be used. If negative, exact absolute value
9433 will be used.
9434 The range defines square of four pixels around current pixel.
9435
9436 @item direction, d
9437 Set direction in radians from which four pixel will be compared. If positive,
9438 random direction from 0 to set direction will be picked. If negative, exact of
9439 absolute value will be picked. For example direction 0, -PI or -2*PI radians
9440 will pick only pixels on same row and -PI/2 will pick only pixels on same
9441 column.
9442
9443 @item blur, b
9444 If enabled, current pixel is compared with average value of all four
9445 surrounding pixels. The default is enabled. If disabled current pixel is
9446 compared with all four surrounding pixels. The pixel is considered banded
9447 if only all four differences with surrounding pixels are less than threshold.
9448
9449 @item coupling, c
9450 If enabled, current pixel is changed if and only if all pixel components are banded,
9451 e.g. banding detection threshold is triggered for all color components.
9452 The default is disabled.
9453 @end table
9454
9455 @section deblock
9456
9457 Remove blocking artifacts from input video.
9458
9459 The filter accepts the following options:
9460
9461 @table @option
9462 @item filter
9463 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
9464 This controls what kind of deblocking is applied.
9465
9466 @item block
9467 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
9468
9469 @item alpha
9470 @item beta
9471 @item gamma
9472 @item delta
9473 Set blocking detection thresholds. Allowed range is 0 to 1.
9474 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
9475 Using higher threshold gives more deblocking strength.
9476 Setting @var{alpha} controls threshold detection at exact edge of block.
9477 Remaining options controls threshold detection near the edge. Each one for
9478 below/above or left/right. Setting any of those to @var{0} disables
9479 deblocking.
9480
9481 @item planes
9482 Set planes to filter. Default is to filter all available planes.
9483 @end table
9484
9485 @subsection Examples
9486
9487 @itemize
9488 @item
9489 Deblock using weak filter and block size of 4 pixels.
9490 @example
9491 deblock=filter=weak:block=4
9492 @end example
9493
9494 @item
9495 Deblock using strong filter, block size of 4 pixels and custom thresholds for
9496 deblocking more edges.
9497 @example
9498 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
9499 @end example
9500
9501 @item
9502 Similar as above, but filter only first plane.
9503 @example
9504 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
9505 @end example
9506
9507 @item
9508 Similar as above, but filter only second and third plane.
9509 @example
9510 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
9511 @end example
9512 @end itemize
9513
9514 @anchor{decimate}
9515 @section decimate
9516
9517 Drop duplicated frames at regular intervals.
9518
9519 The filter accepts the following options:
9520
9521 @table @option
9522 @item cycle
9523 Set the number of frames from which one will be dropped. Setting this to
9524 @var{N} means one frame in every batch of @var{N} frames will be dropped.
9525 Default is @code{5}.
9526
9527 @item dupthresh
9528 Set the threshold for duplicate detection. If the difference metric for a frame
9529 is less than or equal to this value, then it is declared as duplicate. Default
9530 is @code{1.1}
9531
9532 @item scthresh
9533 Set scene change threshold. Default is @code{15}.
9534
9535 @item blockx
9536 @item blocky
9537 Set the size of the x and y-axis blocks used during metric calculations.
9538 Larger blocks give better noise suppression, but also give worse detection of
9539 small movements. Must be a power of two. Default is @code{32}.
9540
9541 @item ppsrc
9542 Mark main input as a pre-processed input and activate clean source input
9543 stream. This allows the input to be pre-processed with various filters to help
9544 the metrics calculation while keeping the frame selection lossless. When set to
9545 @code{1}, the first stream is for the pre-processed input, and the second
9546 stream is the clean source from where the kept frames are chosen. Default is
9547 @code{0}.
9548
9549 @item chroma
9550 Set whether or not chroma is considered in the metric calculations. Default is
9551 @code{1}.
9552 @end table
9553
9554 @section deconvolve
9555
9556 Apply 2D deconvolution of video stream in frequency domain using second stream
9557 as impulse.
9558
9559 The filter accepts the following options:
9560
9561 @table @option
9562 @item planes
9563 Set which planes to process.
9564
9565 @item impulse
9566 Set which impulse video frames will be processed, can be @var{first}
9567 or @var{all}. Default is @var{all}.
9568
9569 @item noise
9570 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
9571 and height are not same and not power of 2 or if stream prior to convolving
9572 had noise.
9573 @end table
9574
9575 The @code{deconvolve} filter also supports the @ref{framesync} options.
9576
9577 @section dedot
9578
9579 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
9580
9581 It accepts the following options:
9582
9583 @table @option
9584 @item m
9585 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
9586 @var{rainbows} for cross-color reduction.
9587
9588 @item lt
9589 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
9590
9591 @item tl
9592 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
9593
9594 @item tc
9595 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
9596
9597 @item ct
9598 Set temporal chroma threshold. Lower values increases reduction of cross-color.
9599 @end table
9600
9601 @section deflate
9602
9603 Apply deflate effect to the video.
9604
9605 This filter replaces the pixel by the local(3x3) average by taking into account
9606 only values lower than the pixel.
9607
9608 It accepts the following options:
9609
9610 @table @option
9611 @item threshold0
9612 @item threshold1
9613 @item threshold2
9614 @item threshold3
9615 Limit the maximum change for each plane, default is 65535.
9616 If 0, plane will remain unchanged.
9617 @end table
9618
9619 @subsection Commands
9620
9621 This filter supports the all above options as @ref{commands}.
9622
9623 @section deflicker
9624
9625 Remove temporal frame luminance variations.
9626
9627 It accepts the following options:
9628
9629 @table @option
9630 @item size, s
9631 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
9632
9633 @item mode, m
9634 Set averaging mode to smooth temporal luminance variations.
9635
9636 Available values are:
9637 @table @samp
9638 @item am
9639 Arithmetic mean
9640
9641 @item gm
9642 Geometric mean
9643
9644 @item hm
9645 Harmonic mean
9646
9647 @item qm
9648 Quadratic mean
9649
9650 @item cm
9651 Cubic mean
9652
9653 @item pm
9654 Power mean
9655
9656 @item median
9657 Median
9658 @end table
9659
9660 @item bypass
9661 Do not actually modify frame. Useful when one only wants metadata.
9662 @end table
9663
9664 @section dejudder
9665
9666 Remove judder produced by partially interlaced telecined content.
9667
9668 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
9669 source was partially telecined content then the output of @code{pullup,dejudder}
9670 will have a variable frame rate. May change the recorded frame rate of the
9671 container. Aside from that change, this filter will not affect constant frame
9672 rate video.
9673
9674 The option available in this filter is:
9675 @table @option
9676
9677 @item cycle
9678 Specify the length of the window over which the judder repeats.
9679
9680 Accepts any integer greater than 1. Useful values are:
9681 @table @samp
9682
9683 @item 4
9684 If the original was telecined from 24 to 30 fps (Film to NTSC).
9685
9686 @item 5
9687 If the original was telecined from 25 to 30 fps (PAL to NTSC).
9688
9689 @item 20
9690 If a mixture of the two.
9691 @end table
9692
9693 The default is @samp{4}.
9694 @end table
9695
9696 @section delogo
9697
9698 Suppress a TV station logo by a simple interpolation of the surrounding
9699 pixels. Just set a rectangle covering the logo and watch it disappear
9700 (and sometimes something even uglier appear - your mileage may vary).
9701
9702 It accepts the following parameters:
9703 @table @option
9704
9705 @item x
9706 @item y
9707 Specify the top left corner coordinates of the logo. They must be
9708 specified.
9709
9710 @item w
9711 @item h
9712 Specify the width and height of the logo to clear. They must be
9713 specified.
9714
9715 @item band, t
9716 Specify the thickness of the fuzzy edge of the rectangle (added to
9717 @var{w} and @var{h}). The default value is 1. This option is
9718 deprecated, setting higher values should no longer be necessary and
9719 is not recommended.
9720
9721 @item show
9722 When set to 1, a green rectangle is drawn on the screen to simplify
9723 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
9724 The default value is 0.
9725
9726 The rectangle is drawn on the outermost pixels which will be (partly)
9727 replaced with interpolated values. The values of the next pixels
9728 immediately outside this rectangle in each direction will be used to
9729 compute the interpolated pixel values inside the rectangle.
9730
9731 @end table
9732
9733 @subsection Examples
9734
9735 @itemize
9736 @item
9737 Set a rectangle covering the area with top left corner coordinates 0,0
9738 and size 100x77, and a band of size 10:
9739 @example
9740 delogo=x=0:y=0:w=100:h=77:band=10
9741 @end example
9742
9743 @end itemize
9744
9745 @anchor{derain}
9746 @section derain
9747
9748 Remove the rain in the input image/video by applying the derain methods based on
9749 convolutional neural networks. Supported models:
9750
9751 @itemize
9752 @item
9753 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
9754 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
9755 @end itemize
9756
9757 Training as well as model generation scripts are provided in
9758 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
9759
9760 Native model files (.model) can be generated from TensorFlow model
9761 files (.pb) by using tools/python/convert.py
9762
9763 The filter accepts the following options:
9764
9765 @table @option
9766 @item filter_type
9767 Specify which filter to use. This option accepts the following values:
9768
9769 @table @samp
9770 @item derain
9771 Derain filter. To conduct derain filter, you need to use a derain model.
9772
9773 @item dehaze
9774 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
9775 @end table
9776 Default value is @samp{derain}.
9777
9778 @item dnn_backend
9779 Specify which DNN backend to use for model loading and execution. This option accepts
9780 the following values:
9781
9782 @table @samp
9783 @item native
9784 Native implementation of DNN loading and execution.
9785
9786 @item tensorflow
9787 TensorFlow backend. To enable this backend you
9788 need to install the TensorFlow for C library (see
9789 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9790 @code{--enable-libtensorflow}
9791 @end table
9792 Default value is @samp{native}.
9793
9794 @item model
9795 Set path to model file specifying network architecture and its parameters.
9796 Note that different backends use different file formats. TensorFlow and native
9797 backend can load files for only its format.
9798 @end table
9799
9800 It can also be finished with @ref{dnn_processing} filter.
9801
9802 @section deshake
9803
9804 Attempt to fix small changes in horizontal and/or vertical shift. This
9805 filter helps remove camera shake from hand-holding a camera, bumping a
9806 tripod, moving on a vehicle, etc.
9807
9808 The filter accepts the following options:
9809
9810 @table @option
9811
9812 @item x
9813 @item y
9814 @item w
9815 @item h
9816 Specify a rectangular area where to limit the search for motion
9817 vectors.
9818 If desired the search for motion vectors can be limited to a
9819 rectangular area of the frame defined by its top left corner, width
9820 and height. These parameters have the same meaning as the drawbox
9821 filter which can be used to visualise the position of the bounding
9822 box.
9823
9824 This is useful when simultaneous movement of subjects within the frame
9825 might be confused for camera motion by the motion vector search.
9826
9827 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
9828 then the full frame is used. This allows later options to be set
9829 without specifying the bounding box for the motion vector search.
9830
9831 Default - search the whole frame.
9832
9833 @item rx
9834 @item ry
9835 Specify the maximum extent of movement in x and y directions in the
9836 range 0-64 pixels. Default 16.
9837
9838 @item edge
9839 Specify how to generate pixels to fill blanks at the edge of the
9840 frame. Available values are:
9841 @table @samp
9842 @item blank, 0
9843 Fill zeroes at blank locations
9844 @item original, 1
9845 Original image at blank locations
9846 @item clamp, 2
9847 Extruded edge value at blank locations
9848 @item mirror, 3
9849 Mirrored edge at blank locations
9850 @end table
9851 Default value is @samp{mirror}.
9852
9853 @item blocksize
9854 Specify the blocksize to use for motion search. Range 4-128 pixels,
9855 default 8.
9856
9857 @item contrast
9858 Specify the contrast threshold for blocks. Only blocks with more than
9859 the specified contrast (difference between darkest and lightest
9860 pixels) will be considered. Range 1-255, default 125.
9861
9862 @item search
9863 Specify the search strategy. Available values are:
9864 @table @samp
9865 @item exhaustive, 0
9866 Set exhaustive search
9867 @item less, 1
9868 Set less exhaustive search.
9869 @end table
9870 Default value is @samp{exhaustive}.
9871
9872 @item filename
9873 If set then a detailed log of the motion search is written to the
9874 specified file.
9875
9876 @end table
9877
9878 @section despill
9879
9880 Remove unwanted contamination of foreground colors, caused by reflected color of
9881 greenscreen or bluescreen.
9882
9883 This filter accepts the following options:
9884
9885 @table @option
9886 @item type
9887 Set what type of despill to use.
9888
9889 @item mix
9890 Set how spillmap will be generated.
9891
9892 @item expand
9893 Set how much to get rid of still remaining spill.
9894
9895 @item red
9896 Controls amount of red in spill area.
9897
9898 @item green
9899 Controls amount of green in spill area.
9900 Should be -1 for greenscreen.
9901
9902 @item blue
9903 Controls amount of blue in spill area.
9904 Should be -1 for bluescreen.
9905
9906 @item brightness
9907 Controls brightness of spill area, preserving colors.
9908
9909 @item alpha
9910 Modify alpha from generated spillmap.
9911 @end table
9912
9913 @subsection Commands
9914
9915 This filter supports the all above options as @ref{commands}.
9916
9917 @section detelecine
9918
9919 Apply an exact inverse of the telecine operation. It requires a predefined
9920 pattern specified using the pattern option which must be the same as that passed
9921 to the telecine filter.
9922
9923 This filter accepts the following options:
9924
9925 @table @option
9926 @item first_field
9927 @table @samp
9928 @item top, t
9929 top field first
9930 @item bottom, b
9931 bottom field first
9932 The default value is @code{top}.
9933 @end table
9934
9935 @item pattern
9936 A string of numbers representing the pulldown pattern you wish to apply.
9937 The default value is @code{23}.
9938
9939 @item start_frame
9940 A number representing position of the first frame with respect to the telecine
9941 pattern. This is to be used if the stream is cut. The default value is @code{0}.
9942 @end table
9943
9944 @section dilation
9945
9946 Apply dilation effect to the video.
9947
9948 This filter replaces the pixel by the local(3x3) maximum.
9949
9950 It accepts the following options:
9951
9952 @table @option
9953 @item threshold0
9954 @item threshold1
9955 @item threshold2
9956 @item threshold3
9957 Limit the maximum change for each plane, default is 65535.
9958 If 0, plane will remain unchanged.
9959
9960 @item coordinates
9961 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9962 pixels are used.
9963
9964 Flags to local 3x3 coordinates maps like this:
9965
9966     1 2 3
9967     4   5
9968     6 7 8
9969 @end table
9970
9971 @subsection Commands
9972
9973 This filter supports the all above options as @ref{commands}.
9974
9975 @section displace
9976
9977 Displace pixels as indicated by second and third input stream.
9978
9979 It takes three input streams and outputs one stream, the first input is the
9980 source, and second and third input are displacement maps.
9981
9982 The second input specifies how much to displace pixels along the
9983 x-axis, while the third input specifies how much to displace pixels
9984 along the y-axis.
9985 If one of displacement map streams terminates, last frame from that
9986 displacement map will be used.
9987
9988 Note that once generated, displacements maps can be reused over and over again.
9989
9990 A description of the accepted options follows.
9991
9992 @table @option
9993 @item edge
9994 Set displace behavior for pixels that are out of range.
9995
9996 Available values are:
9997 @table @samp
9998 @item blank
9999 Missing pixels are replaced by black pixels.
10000
10001 @item smear
10002 Adjacent pixels will spread out to replace missing pixels.
10003
10004 @item wrap
10005 Out of range pixels are wrapped so they point to pixels of other side.
10006
10007 @item mirror
10008 Out of range pixels will be replaced with mirrored pixels.
10009 @end table
10010 Default is @samp{smear}.
10011
10012 @end table
10013
10014 @subsection Examples
10015
10016 @itemize
10017 @item
10018 Add ripple effect to rgb input of video size hd720:
10019 @example
10020 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
10021 @end example
10022
10023 @item
10024 Add wave effect to rgb input of video size hd720:
10025 @example
10026 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
10027 @end example
10028 @end itemize
10029
10030 @anchor{dnn_processing}
10031 @section dnn_processing
10032
10033 Do image processing with deep neural networks. It works together with another filter
10034 which converts the pixel format of the Frame to what the dnn network requires.
10035
10036 The filter accepts the following options:
10037
10038 @table @option
10039 @item dnn_backend
10040 Specify which DNN backend to use for model loading and execution. This option accepts
10041 the following values:
10042
10043 @table @samp
10044 @item native
10045 Native implementation of DNN loading and execution.
10046
10047 @item tensorflow
10048 TensorFlow backend. To enable this backend you
10049 need to install the TensorFlow for C library (see
10050 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
10051 @code{--enable-libtensorflow}
10052
10053 @item openvino
10054 OpenVINO backend. To enable this backend you
10055 need to build and install the OpenVINO for C library (see
10056 @url{https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md}) and configure FFmpeg with
10057 @code{--enable-libopenvino} (--extra-cflags=-I... --extra-ldflags=-L... might
10058 be needed if the header files and libraries are not installed into system path)
10059
10060 @end table
10061
10062 Default value is @samp{native}.
10063
10064 @item model
10065 Set path to model file specifying network architecture and its parameters.
10066 Note that different backends use different file formats. TensorFlow, OpenVINO and native
10067 backend can load files for only its format.
10068
10069 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
10070
10071 @item input
10072 Set the input name of the dnn network.
10073
10074 @item output
10075 Set the output name of the dnn network.
10076
10077 @item async
10078 use DNN async execution if set (default: set),
10079 roll back to sync execution if the backend does not support async.
10080
10081 @end table
10082
10083 @subsection Examples
10084
10085 @itemize
10086 @item
10087 Remove rain in rgb24 frame with can.pb (see @ref{derain} filter):
10088 @example
10089 ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
10090 @end example
10091
10092 @item
10093 Halve the pixel value of the frame with format gray32f:
10094 @example
10095 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
10096 @end example
10097
10098 @item
10099 Handle the Y channel with srcnn.pb (see @ref{sr} filter) for frame with yuv420p (planar YUV formats supported):
10100 @example
10101 ./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
10102 @end example
10103
10104 @item
10105 Handle the Y channel with espcn.pb (see @ref{sr} filter), which changes frame size, for format yuv420p (planar YUV formats supported):
10106 @example
10107 ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y -y tmp.espcn.jpg
10108 @end example
10109
10110 @end itemize
10111
10112 @section drawbox
10113
10114 Draw a colored box on the input image.
10115
10116 It accepts the following parameters:
10117
10118 @table @option
10119 @item x
10120 @item y
10121 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
10122
10123 @item width, w
10124 @item height, h
10125 The expressions which specify the width and height of the box; if 0 they are interpreted as
10126 the input width and height. It defaults to 0.
10127
10128 @item color, c
10129 Specify the color of the box to write. For the general syntax of this option,
10130 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
10131 value @code{invert} is used, the box edge color is the same as the
10132 video with inverted luma.
10133
10134 @item thickness, t
10135 The expression which sets the thickness of the box edge.
10136 A value of @code{fill} will create a filled box. Default value is @code{3}.
10137
10138 See below for the list of accepted constants.
10139
10140 @item replace
10141 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
10142 will overwrite the video's color and alpha pixels.
10143 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
10144 @end table
10145
10146 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
10147 following constants:
10148
10149 @table @option
10150 @item dar
10151 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
10152
10153 @item hsub
10154 @item vsub
10155 horizontal and vertical chroma subsample values. For example for the
10156 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10157
10158 @item in_h, ih
10159 @item in_w, iw
10160 The input width and height.
10161
10162 @item sar
10163 The input sample aspect ratio.
10164
10165 @item x
10166 @item y
10167 The x and y offset coordinates where the box is drawn.
10168
10169 @item w
10170 @item h
10171 The width and height of the drawn box.
10172
10173 @item t
10174 The thickness of the drawn box.
10175
10176 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
10177 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
10178
10179 @end table
10180
10181 @subsection Examples
10182
10183 @itemize
10184 @item
10185 Draw a black box around the edge of the input image:
10186 @example
10187 drawbox
10188 @end example
10189
10190 @item
10191 Draw a box with color red and an opacity of 50%:
10192 @example
10193 drawbox=10:20:200:60:red@@0.5
10194 @end example
10195
10196 The previous example can be specified as:
10197 @example
10198 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
10199 @end example
10200
10201 @item
10202 Fill the box with pink color:
10203 @example
10204 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
10205 @end example
10206
10207 @item
10208 Draw a 2-pixel red 2.40:1 mask:
10209 @example
10210 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
10211 @end example
10212 @end itemize
10213
10214 @subsection Commands
10215 This filter supports same commands as options.
10216 The command accepts the same syntax of the corresponding option.
10217
10218 If the specified expression is not valid, it is kept at its current
10219 value.
10220
10221 @anchor{drawgraph}
10222 @section drawgraph
10223 Draw a graph using input video metadata.
10224
10225 It accepts the following parameters:
10226
10227 @table @option
10228 @item m1
10229 Set 1st frame metadata key from which metadata values will be used to draw a graph.
10230
10231 @item fg1
10232 Set 1st foreground color expression.
10233
10234 @item m2
10235 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
10236
10237 @item fg2
10238 Set 2nd foreground color expression.
10239
10240 @item m3
10241 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
10242
10243 @item fg3
10244 Set 3rd foreground color expression.
10245
10246 @item m4
10247 Set 4th frame metadata key from which metadata values will be used to draw a graph.
10248
10249 @item fg4
10250 Set 4th foreground color expression.
10251
10252 @item min
10253 Set minimal value of metadata value.
10254
10255 @item max
10256 Set maximal value of metadata value.
10257
10258 @item bg
10259 Set graph background color. Default is white.
10260
10261 @item mode
10262 Set graph mode.
10263
10264 Available values for mode is:
10265 @table @samp
10266 @item bar
10267 @item dot
10268 @item line
10269 @end table
10270
10271 Default is @code{line}.
10272
10273 @item slide
10274 Set slide mode.
10275
10276 Available values for slide is:
10277 @table @samp
10278 @item frame
10279 Draw new frame when right border is reached.
10280
10281 @item replace
10282 Replace old columns with new ones.
10283
10284 @item scroll
10285 Scroll from right to left.
10286
10287 @item rscroll
10288 Scroll from left to right.
10289
10290 @item picture
10291 Draw single picture.
10292 @end table
10293
10294 Default is @code{frame}.
10295
10296 @item size
10297 Set size of graph video. For the syntax of this option, check the
10298 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
10299 The default value is @code{900x256}.
10300
10301 @item rate, r
10302 Set the output frame rate. Default value is @code{25}.
10303
10304 The foreground color expressions can use the following variables:
10305 @table @option
10306 @item MIN
10307 Minimal value of metadata value.
10308
10309 @item MAX
10310 Maximal value of metadata value.
10311
10312 @item VAL
10313 Current metadata key value.
10314 @end table
10315
10316 The color is defined as 0xAABBGGRR.
10317 @end table
10318
10319 Example using metadata from @ref{signalstats} filter:
10320 @example
10321 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
10322 @end example
10323
10324 Example using metadata from @ref{ebur128} filter:
10325 @example
10326 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
10327 @end example
10328
10329 @section drawgrid
10330
10331 Draw a grid on the input image.
10332
10333 It accepts the following parameters:
10334
10335 @table @option
10336 @item x
10337 @item y
10338 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
10339
10340 @item width, w
10341 @item height, h
10342 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
10343 input width and height, respectively, minus @code{thickness}, so image gets
10344 framed. Default to 0.
10345
10346 @item color, c
10347 Specify the color of the grid. For the general syntax of this option,
10348 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
10349 value @code{invert} is used, the grid color is the same as the
10350 video with inverted luma.
10351
10352 @item thickness, t
10353 The expression which sets the thickness of the grid line. Default value is @code{1}.
10354
10355 See below for the list of accepted constants.
10356
10357 @item replace
10358 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
10359 will overwrite the video's color and alpha pixels.
10360 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
10361 @end table
10362
10363 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
10364 following constants:
10365
10366 @table @option
10367 @item dar
10368 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
10369
10370 @item hsub
10371 @item vsub
10372 horizontal and vertical chroma subsample values. For example for the
10373 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10374
10375 @item in_h, ih
10376 @item in_w, iw
10377 The input grid cell width and height.
10378
10379 @item sar
10380 The input sample aspect ratio.
10381
10382 @item x
10383 @item y
10384 The x and y coordinates of some point of grid intersection (meant to configure offset).
10385
10386 @item w
10387 @item h
10388 The width and height of the drawn cell.
10389
10390 @item t
10391 The thickness of the drawn cell.
10392
10393 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
10394 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
10395
10396 @end table
10397
10398 @subsection Examples
10399
10400 @itemize
10401 @item
10402 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
10403 @example
10404 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
10405 @end example
10406
10407 @item
10408 Draw a white 3x3 grid with an opacity of 50%:
10409 @example
10410 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
10411 @end example
10412 @end itemize
10413
10414 @subsection Commands
10415 This filter supports same commands as options.
10416 The command accepts the same syntax of the corresponding option.
10417
10418 If the specified expression is not valid, it is kept at its current
10419 value.
10420
10421 @anchor{drawtext}
10422 @section drawtext
10423
10424 Draw a text string or text from a specified file on top of a video, using the
10425 libfreetype library.
10426
10427 To enable compilation of this filter, you need to configure FFmpeg with
10428 @code{--enable-libfreetype}.
10429 To enable default font fallback and the @var{font} option you need to
10430 configure FFmpeg with @code{--enable-libfontconfig}.
10431 To enable the @var{text_shaping} option, you need to configure FFmpeg with
10432 @code{--enable-libfribidi}.
10433
10434 @subsection Syntax
10435
10436 It accepts the following parameters:
10437
10438 @table @option
10439
10440 @item box
10441 Used to draw a box around text using the background color.
10442 The value must be either 1 (enable) or 0 (disable).
10443 The default value of @var{box} is 0.
10444
10445 @item boxborderw
10446 Set the width of the border to be drawn around the box using @var{boxcolor}.
10447 The default value of @var{boxborderw} is 0.
10448
10449 @item boxcolor
10450 The color to be used for drawing box around text. For the syntax of this
10451 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10452
10453 The default value of @var{boxcolor} is "white".
10454
10455 @item line_spacing
10456 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
10457 The default value of @var{line_spacing} is 0.
10458
10459 @item borderw
10460 Set the width of the border to be drawn around the text using @var{bordercolor}.
10461 The default value of @var{borderw} is 0.
10462
10463 @item bordercolor
10464 Set the color to be used for drawing border around text. For the syntax of this
10465 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10466
10467 The default value of @var{bordercolor} is "black".
10468
10469 @item expansion
10470 Select how the @var{text} is expanded. Can be either @code{none},
10471 @code{strftime} (deprecated) or
10472 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
10473 below for details.
10474
10475 @item basetime
10476 Set a start time for the count. Value is in microseconds. Only applied
10477 in the deprecated strftime expansion mode. To emulate in normal expansion
10478 mode use the @code{pts} function, supplying the start time (in seconds)
10479 as the second argument.
10480
10481 @item fix_bounds
10482 If true, check and fix text coords to avoid clipping.
10483
10484 @item fontcolor
10485 The color to be used for drawing fonts. For the syntax of this option, check
10486 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10487
10488 The default value of @var{fontcolor} is "black".
10489
10490 @item fontcolor_expr
10491 String which is expanded the same way as @var{text} to obtain dynamic
10492 @var{fontcolor} value. By default this option has empty value and is not
10493 processed. When this option is set, it overrides @var{fontcolor} option.
10494
10495 @item font
10496 The font family to be used for drawing text. By default Sans.
10497
10498 @item fontfile
10499 The font file to be used for drawing text. The path must be included.
10500 This parameter is mandatory if the fontconfig support is disabled.
10501
10502 @item alpha
10503 Draw the text applying alpha blending. The value can
10504 be a number between 0.0 and 1.0.
10505 The expression accepts the same variables @var{x, y} as well.
10506 The default value is 1.
10507 Please see @var{fontcolor_expr}.
10508
10509 @item fontsize
10510 The font size to be used for drawing text.
10511 The default value of @var{fontsize} is 16.
10512
10513 @item text_shaping
10514 If set to 1, attempt to shape the text (for example, reverse the order of
10515 right-to-left text and join Arabic characters) before drawing it.
10516 Otherwise, just draw the text exactly as given.
10517 By default 1 (if supported).
10518
10519 @item ft_load_flags
10520 The flags to be used for loading the fonts.
10521
10522 The flags map the corresponding flags supported by libfreetype, and are
10523 a combination of the following values:
10524 @table @var
10525 @item default
10526 @item no_scale
10527 @item no_hinting
10528 @item render
10529 @item no_bitmap
10530 @item vertical_layout
10531 @item force_autohint
10532 @item crop_bitmap
10533 @item pedantic
10534 @item ignore_global_advance_width
10535 @item no_recurse
10536 @item ignore_transform
10537 @item monochrome
10538 @item linear_design
10539 @item no_autohint
10540 @end table
10541
10542 Default value is "default".
10543
10544 For more information consult the documentation for the FT_LOAD_*
10545 libfreetype flags.
10546
10547 @item shadowcolor
10548 The color to be used for drawing a shadow behind the drawn text. For the
10549 syntax of this option, check the @ref{color syntax,,"Color" section in the
10550 ffmpeg-utils manual,ffmpeg-utils}.
10551
10552 The default value of @var{shadowcolor} is "black".
10553
10554 @item shadowx
10555 @item shadowy
10556 The x and y offsets for the text shadow position with respect to the
10557 position of the text. They can be either positive or negative
10558 values. The default value for both is "0".
10559
10560 @item start_number
10561 The starting frame number for the n/frame_num variable. The default value
10562 is "0".
10563
10564 @item tabsize
10565 The size in number of spaces to use for rendering the tab.
10566 Default value is 4.
10567
10568 @item timecode
10569 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
10570 format. It can be used with or without text parameter. @var{timecode_rate}
10571 option must be specified.
10572
10573 @item timecode_rate, rate, r
10574 Set the timecode frame rate (timecode only). Value will be rounded to nearest
10575 integer. Minimum value is "1".
10576 Drop-frame timecode is supported for frame rates 30 & 60.
10577
10578 @item tc24hmax
10579 If set to 1, the output of the timecode option will wrap around at 24 hours.
10580 Default is 0 (disabled).
10581
10582 @item text
10583 The text string to be drawn. The text must be a sequence of UTF-8
10584 encoded characters.
10585 This parameter is mandatory if no file is specified with the parameter
10586 @var{textfile}.
10587
10588 @item textfile
10589 A text file containing text to be drawn. The text must be a sequence
10590 of UTF-8 encoded characters.
10591
10592 This parameter is mandatory if no text string is specified with the
10593 parameter @var{text}.
10594
10595 If both @var{text} and @var{textfile} are specified, an error is thrown.
10596
10597 @item reload
10598 If set to 1, the @var{textfile} will be reloaded before each frame.
10599 Be sure to update it atomically, or it may be read partially, or even fail.
10600
10601 @item x
10602 @item y
10603 The expressions which specify the offsets where text will be drawn
10604 within the video frame. They are relative to the top/left border of the
10605 output image.
10606
10607 The default value of @var{x} and @var{y} is "0".
10608
10609 See below for the list of accepted constants and functions.
10610 @end table
10611
10612 The parameters for @var{x} and @var{y} are expressions containing the
10613 following constants and functions:
10614
10615 @table @option
10616 @item dar
10617 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
10618
10619 @item hsub
10620 @item vsub
10621 horizontal and vertical chroma subsample values. For example for the
10622 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10623
10624 @item line_h, lh
10625 the height of each text line
10626
10627 @item main_h, h, H
10628 the input height
10629
10630 @item main_w, w, W
10631 the input width
10632
10633 @item max_glyph_a, ascent
10634 the maximum distance from the baseline to the highest/upper grid
10635 coordinate used to place a glyph outline point, for all the rendered
10636 glyphs.
10637 It is a positive value, due to the grid's orientation with the Y axis
10638 upwards.
10639
10640 @item max_glyph_d, descent
10641 the maximum distance from the baseline to the lowest grid coordinate
10642 used to place a glyph outline point, for all the rendered glyphs.
10643 This is a negative value, due to the grid's orientation, with the Y axis
10644 upwards.
10645
10646 @item max_glyph_h
10647 maximum glyph height, that is the maximum height for all the glyphs
10648 contained in the rendered text, it is equivalent to @var{ascent} -
10649 @var{descent}.
10650
10651 @item max_glyph_w
10652 maximum glyph width, that is the maximum width for all the glyphs
10653 contained in the rendered text
10654
10655 @item n
10656 the number of input frame, starting from 0
10657
10658 @item rand(min, max)
10659 return a random number included between @var{min} and @var{max}
10660
10661 @item sar
10662 The input sample aspect ratio.
10663
10664 @item t
10665 timestamp expressed in seconds, NAN if the input timestamp is unknown
10666
10667 @item text_h, th
10668 the height of the rendered text
10669
10670 @item text_w, tw
10671 the width of the rendered text
10672
10673 @item x
10674 @item y
10675 the x and y offset coordinates where the text is drawn.
10676
10677 These parameters allow the @var{x} and @var{y} expressions to refer
10678 to each other, so you can for example specify @code{y=x/dar}.
10679
10680 @item pict_type
10681 A one character description of the current frame's picture type.
10682
10683 @item pkt_pos
10684 The current packet's position in the input file or stream
10685 (in bytes, from the start of the input). A value of -1 indicates
10686 this info is not available.
10687
10688 @item pkt_duration
10689 The current packet's duration, in seconds.
10690
10691 @item pkt_size
10692 The current packet's size (in bytes).
10693 @end table
10694
10695 @anchor{drawtext_expansion}
10696 @subsection Text expansion
10697
10698 If @option{expansion} is set to @code{strftime},
10699 the filter recognizes strftime() sequences in the provided text and
10700 expands them accordingly. Check the documentation of strftime(). This
10701 feature is deprecated.
10702
10703 If @option{expansion} is set to @code{none}, the text is printed verbatim.
10704
10705 If @option{expansion} is set to @code{normal} (which is the default),
10706 the following expansion mechanism is used.
10707
10708 The backslash character @samp{\}, followed by any character, always expands to
10709 the second character.
10710
10711 Sequences of the form @code{%@{...@}} are expanded. The text between the
10712 braces is a function name, possibly followed by arguments separated by ':'.
10713 If the arguments contain special characters or delimiters (':' or '@}'),
10714 they should be escaped.
10715
10716 Note that they probably must also be escaped as the value for the
10717 @option{text} option in the filter argument string and as the filter
10718 argument in the filtergraph description, and possibly also for the shell,
10719 that makes up to four levels of escaping; using a text file avoids these
10720 problems.
10721
10722 The following functions are available:
10723
10724 @table @command
10725
10726 @item expr, e
10727 The expression evaluation result.
10728
10729 It must take one argument specifying the expression to be evaluated,
10730 which accepts the same constants and functions as the @var{x} and
10731 @var{y} values. Note that not all constants should be used, for
10732 example the text size is not known when evaluating the expression, so
10733 the constants @var{text_w} and @var{text_h} will have an undefined
10734 value.
10735
10736 @item expr_int_format, eif
10737 Evaluate the expression's value and output as formatted integer.
10738
10739 The first argument is the expression to be evaluated, just as for the @var{expr} function.
10740 The second argument specifies the output format. Allowed values are @samp{x},
10741 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
10742 @code{printf} function.
10743 The third parameter is optional and sets the number of positions taken by the output.
10744 It can be used to add padding with zeros from the left.
10745
10746 @item gmtime
10747 The time at which the filter is running, expressed in UTC.
10748 It can accept an argument: a strftime() format string.
10749
10750 @item localtime
10751 The time at which the filter is running, expressed in the local time zone.
10752 It can accept an argument: a strftime() format string.
10753
10754 @item metadata
10755 Frame metadata. Takes one or two arguments.
10756
10757 The first argument is mandatory and specifies the metadata key.
10758
10759 The second argument is optional and specifies a default value, used when the
10760 metadata key is not found or empty.
10761
10762 Available metadata can be identified by inspecting entries
10763 starting with TAG included within each frame section
10764 printed by running @code{ffprobe -show_frames}.
10765
10766 String metadata generated in filters leading to
10767 the drawtext filter are also available.
10768
10769 @item n, frame_num
10770 The frame number, starting from 0.
10771
10772 @item pict_type
10773 A one character description of the current picture type.
10774
10775 @item pts
10776 The timestamp of the current frame.
10777 It can take up to three arguments.
10778
10779 The first argument is the format of the timestamp; it defaults to @code{flt}
10780 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
10781 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
10782 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
10783 @code{localtime} stands for the timestamp of the frame formatted as
10784 local time zone time.
10785
10786 The second argument is an offset added to the timestamp.
10787
10788 If the format is set to @code{hms}, a third argument @code{24HH} may be
10789 supplied to present the hour part of the formatted timestamp in 24h format
10790 (00-23).
10791
10792 If the format is set to @code{localtime} or @code{gmtime},
10793 a third argument may be supplied: a strftime() format string.
10794 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
10795 @end table
10796
10797 @subsection Commands
10798
10799 This filter supports altering parameters via commands:
10800 @table @option
10801 @item reinit
10802 Alter existing filter parameters.
10803
10804 Syntax for the argument is the same as for filter invocation, e.g.
10805
10806 @example
10807 fontsize=56:fontcolor=green:text='Hello World'
10808 @end example
10809
10810 Full filter invocation with sendcmd would look like this:
10811
10812 @example
10813 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
10814 @end example
10815 @end table
10816
10817 If the entire argument can't be parsed or applied as valid values then the filter will
10818 continue with its existing parameters.
10819
10820 @subsection Examples
10821
10822 @itemize
10823 @item
10824 Draw "Test Text" with font FreeSerif, using the default values for the
10825 optional parameters.
10826
10827 @example
10828 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
10829 @end example
10830
10831 @item
10832 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
10833 and y=50 (counting from the top-left corner of the screen), text is
10834 yellow with a red box around it. Both the text and the box have an
10835 opacity of 20%.
10836
10837 @example
10838 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
10839           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
10840 @end example
10841
10842 Note that the double quotes are not necessary if spaces are not used
10843 within the parameter list.
10844
10845 @item
10846 Show the text at the center of the video frame:
10847 @example
10848 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
10849 @end example
10850
10851 @item
10852 Show the text at a random position, switching to a new position every 30 seconds:
10853 @example
10854 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)"
10855 @end example
10856
10857 @item
10858 Show a text line sliding from right to left in the last row of the video
10859 frame. The file @file{LONG_LINE} is assumed to contain a single line
10860 with no newlines.
10861 @example
10862 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
10863 @end example
10864
10865 @item
10866 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
10867 @example
10868 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
10869 @end example
10870
10871 @item
10872 Draw a single green letter "g", at the center of the input video.
10873 The glyph baseline is placed at half screen height.
10874 @example
10875 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
10876 @end example
10877
10878 @item
10879 Show text for 1 second every 3 seconds:
10880 @example
10881 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
10882 @end example
10883
10884 @item
10885 Use fontconfig to set the font. Note that the colons need to be escaped.
10886 @example
10887 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
10888 @end example
10889
10890 @item
10891 Draw "Test Text" with font size dependent on height of the video.
10892 @example
10893 drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
10894 @end example
10895
10896 @item
10897 Print the date of a real-time encoding (see strftime(3)):
10898 @example
10899 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
10900 @end example
10901
10902 @item
10903 Show text fading in and out (appearing/disappearing):
10904 @example
10905 #!/bin/sh
10906 DS=1.0 # display start
10907 DE=10.0 # display end
10908 FID=1.5 # fade in duration
10909 FOD=5 # fade out duration
10910 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 @}"
10911 @end example
10912
10913 @item
10914 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
10915 and the @option{fontsize} value are included in the @option{y} offset.
10916 @example
10917 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
10918 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
10919 @end example
10920
10921 @item
10922 Plot special @var{lavf.image2dec.source_basename} metadata onto each frame if
10923 such metadata exists. Otherwise, plot the string "NA". Note that image2 demuxer
10924 must have option @option{-export_path_metadata 1} for the special metadata fields
10925 to be available for filters.
10926 @example
10927 drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%@{metadata\:lavf.image2dec.source_basename\:NA@}':x=10:y=10"
10928 @end example
10929
10930 @end itemize
10931
10932 For more information about libfreetype, check:
10933 @url{http://www.freetype.org/}.
10934
10935 For more information about fontconfig, check:
10936 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
10937
10938 For more information about libfribidi, check:
10939 @url{http://fribidi.org/}.
10940
10941 @section edgedetect
10942
10943 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
10944
10945 The filter accepts the following options:
10946
10947 @table @option
10948 @item low
10949 @item high
10950 Set low and high threshold values used by the Canny thresholding
10951 algorithm.
10952
10953 The high threshold selects the "strong" edge pixels, which are then
10954 connected through 8-connectivity with the "weak" edge pixels selected
10955 by the low threshold.
10956
10957 @var{low} and @var{high} threshold values must be chosen in the range
10958 [0,1], and @var{low} should be lesser or equal to @var{high}.
10959
10960 Default value for @var{low} is @code{20/255}, and default value for @var{high}
10961 is @code{50/255}.
10962
10963 @item mode
10964 Define the drawing mode.
10965
10966 @table @samp
10967 @item wires
10968 Draw white/gray wires on black background.
10969
10970 @item colormix
10971 Mix the colors to create a paint/cartoon effect.
10972
10973 @item canny
10974 Apply Canny edge detector on all selected planes.
10975 @end table
10976 Default value is @var{wires}.
10977
10978 @item planes
10979 Select planes for filtering. By default all available planes are filtered.
10980 @end table
10981
10982 @subsection Examples
10983
10984 @itemize
10985 @item
10986 Standard edge detection with custom values for the hysteresis thresholding:
10987 @example
10988 edgedetect=low=0.1:high=0.4
10989 @end example
10990
10991 @item
10992 Painting effect without thresholding:
10993 @example
10994 edgedetect=mode=colormix:high=0
10995 @end example
10996 @end itemize
10997
10998 @section elbg
10999
11000 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
11001
11002 For each input image, the filter will compute the optimal mapping from
11003 the input to the output given the codebook length, that is the number
11004 of distinct output colors.
11005
11006 This filter accepts the following options.
11007
11008 @table @option
11009 @item codebook_length, l
11010 Set codebook length. The value must be a positive integer, and
11011 represents the number of distinct output colors. Default value is 256.
11012
11013 @item nb_steps, n
11014 Set the maximum number of iterations to apply for computing the optimal
11015 mapping. The higher the value the better the result and the higher the
11016 computation time. Default value is 1.
11017
11018 @item seed, s
11019 Set a random seed, must be an integer included between 0 and
11020 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
11021 will try to use a good random seed on a best effort basis.
11022
11023 @item pal8
11024 Set pal8 output pixel format. This option does not work with codebook
11025 length greater than 256.
11026 @end table
11027
11028 @section entropy
11029
11030 Measure graylevel entropy in histogram of color channels of video frames.
11031
11032 It accepts the following parameters:
11033
11034 @table @option
11035 @item mode
11036 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
11037
11038 @var{diff} mode measures entropy of histogram delta values, absolute differences
11039 between neighbour histogram values.
11040 @end table
11041
11042 @section epx
11043 Apply the EPX magnification filter which is designed for pixel art.
11044
11045 It accepts the following option:
11046
11047 @table @option
11048 @item n
11049 Set the scaling dimension: @code{2} for @code{2xEPX}, @code{3} for
11050 @code{3xEPX}.
11051 Default is @code{3}.
11052 @end table
11053
11054 @section eq
11055 Set brightness, contrast, saturation and approximate gamma adjustment.
11056
11057 The filter accepts the following options:
11058
11059 @table @option
11060 @item contrast
11061 Set the contrast expression. The value must be a float value in range
11062 @code{-1000.0} to @code{1000.0}. The default value is "1".
11063
11064 @item brightness
11065 Set the brightness expression. The value must be a float value in
11066 range @code{-1.0} to @code{1.0}. The default value is "0".
11067
11068 @item saturation
11069 Set the saturation expression. The value must be a float in
11070 range @code{0.0} to @code{3.0}. The default value is "1".
11071
11072 @item gamma
11073 Set the gamma expression. The value must be a float in range
11074 @code{0.1} to @code{10.0}.  The default value is "1".
11075
11076 @item gamma_r
11077 Set the gamma expression for red. The value must be a float in
11078 range @code{0.1} to @code{10.0}. The default value is "1".
11079
11080 @item gamma_g
11081 Set the gamma expression for green. The value must be a float in range
11082 @code{0.1} to @code{10.0}. The default value is "1".
11083
11084 @item gamma_b
11085 Set the gamma expression for blue. The value must be a float in range
11086 @code{0.1} to @code{10.0}. The default value is "1".
11087
11088 @item gamma_weight
11089 Set the gamma weight expression. It can be used to reduce the effect
11090 of a high gamma value on bright image areas, e.g. keep them from
11091 getting overamplified and just plain white. The value must be a float
11092 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
11093 gamma correction all the way down while @code{1.0} leaves it at its
11094 full strength. Default is "1".
11095
11096 @item eval
11097 Set when the expressions for brightness, contrast, saturation and
11098 gamma expressions are evaluated.
11099
11100 It accepts the following values:
11101 @table @samp
11102 @item init
11103 only evaluate expressions once during the filter initialization or
11104 when a command is processed
11105
11106 @item frame
11107 evaluate expressions for each incoming frame
11108 @end table
11109
11110 Default value is @samp{init}.
11111 @end table
11112
11113 The expressions accept the following parameters:
11114 @table @option
11115 @item n
11116 frame count of the input frame starting from 0
11117
11118 @item pos
11119 byte position of the corresponding packet in the input file, NAN if
11120 unspecified
11121
11122 @item r
11123 frame rate of the input video, NAN if the input frame rate is unknown
11124
11125 @item t
11126 timestamp expressed in seconds, NAN if the input timestamp is unknown
11127 @end table
11128
11129 @subsection Commands
11130 The filter supports the following commands:
11131
11132 @table @option
11133 @item contrast
11134 Set the contrast expression.
11135
11136 @item brightness
11137 Set the brightness expression.
11138
11139 @item saturation
11140 Set the saturation expression.
11141
11142 @item gamma
11143 Set the gamma expression.
11144
11145 @item gamma_r
11146 Set the gamma_r expression.
11147
11148 @item gamma_g
11149 Set gamma_g expression.
11150
11151 @item gamma_b
11152 Set gamma_b expression.
11153
11154 @item gamma_weight
11155 Set gamma_weight expression.
11156
11157 The command accepts the same syntax of the corresponding option.
11158
11159 If the specified expression is not valid, it is kept at its current
11160 value.
11161
11162 @end table
11163
11164 @section erosion
11165
11166 Apply erosion effect to the video.
11167
11168 This filter replaces the pixel by the local(3x3) minimum.
11169
11170 It accepts the following options:
11171
11172 @table @option
11173 @item threshold0
11174 @item threshold1
11175 @item threshold2
11176 @item threshold3
11177 Limit the maximum change for each plane, default is 65535.
11178 If 0, plane will remain unchanged.
11179
11180 @item coordinates
11181 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
11182 pixels are used.
11183
11184 Flags to local 3x3 coordinates maps like this:
11185
11186     1 2 3
11187     4   5
11188     6 7 8
11189 @end table
11190
11191 @subsection Commands
11192
11193 This filter supports the all above options as @ref{commands}.
11194
11195 @section estdif
11196
11197 Deinterlace the input video ("estdif" stands for "Edge Slope
11198 Tracing Deinterlacing Filter").
11199
11200 Spatial only filter that uses edge slope tracing algorithm
11201 to interpolate missing lines.
11202 It accepts the following parameters:
11203
11204 @table @option
11205 @item mode
11206 The interlacing mode to adopt. It accepts one of the following values:
11207
11208 @table @option
11209 @item frame
11210 Output one frame for each frame.
11211 @item field
11212 Output one frame for each field.
11213 @end table
11214
11215 The default value is @code{field}.
11216
11217 @item parity
11218 The picture field parity assumed for the input interlaced video. It accepts one
11219 of the following values:
11220
11221 @table @option
11222 @item tff
11223 Assume the top field is first.
11224 @item bff
11225 Assume the bottom field is first.
11226 @item auto
11227 Enable automatic detection of field parity.
11228 @end table
11229
11230 The default value is @code{auto}.
11231 If the interlacing is unknown or the decoder does not export this information,
11232 top field first will be assumed.
11233
11234 @item deint
11235 Specify which frames to deinterlace. Accepts one of the following
11236 values:
11237
11238 @table @option
11239 @item all
11240 Deinterlace all frames.
11241 @item interlaced
11242 Only deinterlace frames marked as interlaced.
11243 @end table
11244
11245 The default value is @code{all}.
11246
11247 @item rslope
11248 Specify the search radius for edge slope tracing. Default value is 1.
11249 Allowed range is from 1 to 15.
11250
11251 @item redge
11252 Specify the search radius for best edge matching. Default value is 2.
11253 Allowed range is from 0 to 15.
11254
11255 @item interp
11256 Specify the interpolation used. Default is 4-point interpolation. It accepts one
11257 of the following values:
11258
11259 @table @option
11260 @item 2p
11261 Two-point interpolation.
11262 @item 4p
11263 Four-point interpolation.
11264 @item 6p
11265 Six-point interpolation.
11266 @end table
11267 @end table
11268
11269 @subsection Commands
11270 This filter supports same @ref{commands} as options.
11271
11272 @section extractplanes
11273
11274 Extract color channel components from input video stream into
11275 separate grayscale video streams.
11276
11277 The filter accepts the following option:
11278
11279 @table @option
11280 @item planes
11281 Set plane(s) to extract.
11282
11283 Available values for planes are:
11284 @table @samp
11285 @item y
11286 @item u
11287 @item v
11288 @item a
11289 @item r
11290 @item g
11291 @item b
11292 @end table
11293
11294 Choosing planes not available in the input will result in an error.
11295 That means you cannot select @code{r}, @code{g}, @code{b} planes
11296 with @code{y}, @code{u}, @code{v} planes at same time.
11297 @end table
11298
11299 @subsection Examples
11300
11301 @itemize
11302 @item
11303 Extract luma, u and v color channel component from input video frame
11304 into 3 grayscale outputs:
11305 @example
11306 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
11307 @end example
11308 @end itemize
11309
11310 @section fade
11311
11312 Apply a fade-in/out effect to the input video.
11313
11314 It accepts the following parameters:
11315
11316 @table @option
11317 @item type, t
11318 The effect type can be either "in" for a fade-in, or "out" for a fade-out
11319 effect.
11320 Default is @code{in}.
11321
11322 @item start_frame, s
11323 Specify the number of the frame to start applying the fade
11324 effect at. Default is 0.
11325
11326 @item nb_frames, n
11327 The number of frames that the fade effect lasts. At the end of the
11328 fade-in effect, the output video will have the same intensity as the input video.
11329 At the end of the fade-out transition, the output video will be filled with the
11330 selected @option{color}.
11331 Default is 25.
11332
11333 @item alpha
11334 If set to 1, fade only alpha channel, if one exists on the input.
11335 Default value is 0.
11336
11337 @item start_time, st
11338 Specify the timestamp (in seconds) of the frame to start to apply the fade
11339 effect. If both start_frame and start_time are specified, the fade will start at
11340 whichever comes last.  Default is 0.
11341
11342 @item duration, d
11343 The number of seconds for which the fade effect has to last. At the end of the
11344 fade-in effect the output video will have the same intensity as the input video,
11345 at the end of the fade-out transition the output video will be filled with the
11346 selected @option{color}.
11347 If both duration and nb_frames are specified, duration is used. Default is 0
11348 (nb_frames is used by default).
11349
11350 @item color, c
11351 Specify the color of the fade. Default is "black".
11352 @end table
11353
11354 @subsection Examples
11355
11356 @itemize
11357 @item
11358 Fade in the first 30 frames of video:
11359 @example
11360 fade=in:0:30
11361 @end example
11362
11363 The command above is equivalent to:
11364 @example
11365 fade=t=in:s=0:n=30
11366 @end example
11367
11368 @item
11369 Fade out the last 45 frames of a 200-frame video:
11370 @example
11371 fade=out:155:45
11372 fade=type=out:start_frame=155:nb_frames=45
11373 @end example
11374
11375 @item
11376 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
11377 @example
11378 fade=in:0:25, fade=out:975:25
11379 @end example
11380
11381 @item
11382 Make the first 5 frames yellow, then fade in from frame 5-24:
11383 @example
11384 fade=in:5:20:color=yellow
11385 @end example
11386
11387 @item
11388 Fade in alpha over first 25 frames of video:
11389 @example
11390 fade=in:0:25:alpha=1
11391 @end example
11392
11393 @item
11394 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
11395 @example
11396 fade=t=in:st=5.5:d=0.5
11397 @end example
11398
11399 @end itemize
11400
11401 @section fftdnoiz
11402 Denoise frames using 3D FFT (frequency domain filtering).
11403
11404 The filter accepts the following options:
11405
11406 @table @option
11407 @item sigma
11408 Set the noise sigma constant. This sets denoising strength.
11409 Default value is 1. Allowed range is from 0 to 30.
11410 Using very high sigma with low overlap may give blocking artifacts.
11411
11412 @item amount
11413 Set amount of denoising. By default all detected noise is reduced.
11414 Default value is 1. Allowed range is from 0 to 1.
11415
11416 @item block
11417 Set size of block, Default is 4, can be 3, 4, 5 or 6.
11418 Actual size of block in pixels is 2 to power of @var{block}, so by default
11419 block size in pixels is 2^4 which is 16.
11420
11421 @item overlap
11422 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
11423
11424 @item prev
11425 Set number of previous frames to use for denoising. By default is set to 0.
11426
11427 @item next
11428 Set number of next frames to to use for denoising. By default is set to 0.
11429
11430 @item planes
11431 Set planes which will be filtered, by default are all available filtered
11432 except alpha.
11433 @end table
11434
11435 @section fftfilt
11436 Apply arbitrary expressions to samples in frequency domain
11437
11438 @table @option
11439 @item dc_Y
11440 Adjust the dc value (gain) of the luma plane of the image. The filter
11441 accepts an integer value in range @code{0} to @code{1000}. The default
11442 value is set to @code{0}.
11443
11444 @item dc_U
11445 Adjust the dc value (gain) of the 1st chroma plane of the image. The
11446 filter accepts an integer value in range @code{0} to @code{1000}. The
11447 default value is set to @code{0}.
11448
11449 @item dc_V
11450 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
11451 filter accepts an integer value in range @code{0} to @code{1000}. The
11452 default value is set to @code{0}.
11453
11454 @item weight_Y
11455 Set the frequency domain weight expression for the luma plane.
11456
11457 @item weight_U
11458 Set the frequency domain weight expression for the 1st chroma plane.
11459
11460 @item weight_V
11461 Set the frequency domain weight expression for the 2nd chroma plane.
11462
11463 @item eval
11464 Set when the expressions are evaluated.
11465
11466 It accepts the following values:
11467 @table @samp
11468 @item init
11469 Only evaluate expressions once during the filter initialization.
11470
11471 @item frame
11472 Evaluate expressions for each incoming frame.
11473 @end table
11474
11475 Default value is @samp{init}.
11476
11477 The filter accepts the following variables:
11478 @item X
11479 @item Y
11480 The coordinates of the current sample.
11481
11482 @item W
11483 @item H
11484 The width and height of the image.
11485
11486 @item N
11487 The number of input frame, starting from 0.
11488 @end table
11489
11490 @subsection Examples
11491
11492 @itemize
11493 @item
11494 High-pass:
11495 @example
11496 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
11497 @end example
11498
11499 @item
11500 Low-pass:
11501 @example
11502 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
11503 @end example
11504
11505 @item
11506 Sharpen:
11507 @example
11508 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
11509 @end example
11510
11511 @item
11512 Blur:
11513 @example
11514 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
11515 @end example
11516
11517 @end itemize
11518
11519 @section field
11520
11521 Extract a single field from an interlaced image using stride
11522 arithmetic to avoid wasting CPU time. The output frames are marked as
11523 non-interlaced.
11524
11525 The filter accepts the following options:
11526
11527 @table @option
11528 @item type
11529 Specify whether to extract the top (if the value is @code{0} or
11530 @code{top}) or the bottom field (if the value is @code{1} or
11531 @code{bottom}).
11532 @end table
11533
11534 @section fieldhint
11535
11536 Create new frames by copying the top and bottom fields from surrounding frames
11537 supplied as numbers by the hint file.
11538
11539 @table @option
11540 @item hint
11541 Set file containing hints: absolute/relative frame numbers.
11542
11543 There must be one line for each frame in a clip. Each line must contain two
11544 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
11545 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
11546 is current frame number for @code{absolute} mode or out of [-1, 1] range
11547 for @code{relative} mode. First number tells from which frame to pick up top
11548 field and second number tells from which frame to pick up bottom field.
11549
11550 If optionally followed by @code{+} output frame will be marked as interlaced,
11551 else if followed by @code{-} output frame will be marked as progressive, else
11552 it will be marked same as input frame.
11553 If optionally followed by @code{t} output frame will use only top field, or in
11554 case of @code{b} it will use only bottom field.
11555 If line starts with @code{#} or @code{;} that line is skipped.
11556
11557 @item mode
11558 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
11559 @end table
11560
11561 Example of first several lines of @code{hint} file for @code{relative} mode:
11562 @example
11563 0,0 - # first frame
11564 1,0 - # second frame, use third's frame top field and second's frame bottom field
11565 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
11566 1,0 -
11567 0,0 -
11568 0,0 -
11569 1,0 -
11570 1,0 -
11571 1,0 -
11572 0,0 -
11573 0,0 -
11574 1,0 -
11575 1,0 -
11576 1,0 -
11577 0,0 -
11578 @end example
11579
11580 @section fieldmatch
11581
11582 Field matching filter for inverse telecine. It is meant to reconstruct the
11583 progressive frames from a telecined stream. The filter does not drop duplicated
11584 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
11585 followed by a decimation filter such as @ref{decimate} in the filtergraph.
11586
11587 The separation of the field matching and the decimation is notably motivated by
11588 the possibility of inserting a de-interlacing filter fallback between the two.
11589 If the source has mixed telecined and real interlaced content,
11590 @code{fieldmatch} will not be able to match fields for the interlaced parts.
11591 But these remaining combed frames will be marked as interlaced, and thus can be
11592 de-interlaced by a later filter such as @ref{yadif} before decimation.
11593
11594 In addition to the various configuration options, @code{fieldmatch} can take an
11595 optional second stream, activated through the @option{ppsrc} option. If
11596 enabled, the frames reconstruction will be based on the fields and frames from
11597 this second stream. This allows the first input to be pre-processed in order to
11598 help the various algorithms of the filter, while keeping the output lossless
11599 (assuming the fields are matched properly). Typically, a field-aware denoiser,
11600 or brightness/contrast adjustments can help.
11601
11602 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
11603 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
11604 which @code{fieldmatch} is based on. While the semantic and usage are very
11605 close, some behaviour and options names can differ.
11606
11607 The @ref{decimate} filter currently only works for constant frame rate input.
11608 If your input has mixed telecined (30fps) and progressive content with a lower
11609 framerate like 24fps use the following filterchain to produce the necessary cfr
11610 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
11611
11612 The filter accepts the following options:
11613
11614 @table @option
11615 @item order
11616 Specify the assumed field order of the input stream. Available values are:
11617
11618 @table @samp
11619 @item auto
11620 Auto detect parity (use FFmpeg's internal parity value).
11621 @item bff
11622 Assume bottom field first.
11623 @item tff
11624 Assume top field first.
11625 @end table
11626
11627 Note that it is sometimes recommended not to trust the parity announced by the
11628 stream.
11629
11630 Default value is @var{auto}.
11631
11632 @item mode
11633 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
11634 sense that it won't risk creating jerkiness due to duplicate frames when
11635 possible, but if there are bad edits or blended fields it will end up
11636 outputting combed frames when a good match might actually exist. On the other
11637 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
11638 but will almost always find a good frame if there is one. The other values are
11639 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
11640 jerkiness and creating duplicate frames versus finding good matches in sections
11641 with bad edits, orphaned fields, blended fields, etc.
11642
11643 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
11644
11645 Available values are:
11646
11647 @table @samp
11648 @item pc
11649 2-way matching (p/c)
11650 @item pc_n
11651 2-way matching, and trying 3rd match if still combed (p/c + n)
11652 @item pc_u
11653 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
11654 @item pc_n_ub
11655 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
11656 still combed (p/c + n + u/b)
11657 @item pcn
11658 3-way matching (p/c/n)
11659 @item pcn_ub
11660 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
11661 detected as combed (p/c/n + u/b)
11662 @end table
11663
11664 The parenthesis at the end indicate the matches that would be used for that
11665 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
11666 @var{top}).
11667
11668 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
11669 the slowest.
11670
11671 Default value is @var{pc_n}.
11672
11673 @item ppsrc
11674 Mark the main input stream as a pre-processed input, and enable the secondary
11675 input stream as the clean source to pick the fields from. See the filter
11676 introduction for more details. It is similar to the @option{clip2} feature from
11677 VFM/TFM.
11678
11679 Default value is @code{0} (disabled).
11680
11681 @item field
11682 Set the field to match from. It is recommended to set this to the same value as
11683 @option{order} unless you experience matching failures with that setting. In
11684 certain circumstances changing the field that is used to match from can have a
11685 large impact on matching performance. Available values are:
11686
11687 @table @samp
11688 @item auto
11689 Automatic (same value as @option{order}).
11690 @item bottom
11691 Match from the bottom field.
11692 @item top
11693 Match from the top field.
11694 @end table
11695
11696 Default value is @var{auto}.
11697
11698 @item mchroma
11699 Set whether or not chroma is included during the match comparisons. In most
11700 cases it is recommended to leave this enabled. You should set this to @code{0}
11701 only if your clip has bad chroma problems such as heavy rainbowing or other
11702 artifacts. Setting this to @code{0} could also be used to speed things up at
11703 the cost of some accuracy.
11704
11705 Default value is @code{1}.
11706
11707 @item y0
11708 @item y1
11709 These define an exclusion band which excludes the lines between @option{y0} and
11710 @option{y1} from being included in the field matching decision. An exclusion
11711 band can be used to ignore subtitles, a logo, or other things that may
11712 interfere with the matching. @option{y0} sets the starting scan line and
11713 @option{y1} sets the ending line; all lines in between @option{y0} and
11714 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
11715 @option{y0} and @option{y1} to the same value will disable the feature.
11716 @option{y0} and @option{y1} defaults to @code{0}.
11717
11718 @item scthresh
11719 Set the scene change detection threshold as a percentage of maximum change on
11720 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
11721 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
11722 @option{scthresh} is @code{[0.0, 100.0]}.
11723
11724 Default value is @code{12.0}.
11725
11726 @item combmatch
11727 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
11728 account the combed scores of matches when deciding what match to use as the
11729 final match. Available values are:
11730
11731 @table @samp
11732 @item none
11733 No final matching based on combed scores.
11734 @item sc
11735 Combed scores are only used when a scene change is detected.
11736 @item full
11737 Use combed scores all the time.
11738 @end table
11739
11740 Default is @var{sc}.
11741
11742 @item combdbg
11743 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
11744 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
11745 Available values are:
11746
11747 @table @samp
11748 @item none
11749 No forced calculation.
11750 @item pcn
11751 Force p/c/n calculations.
11752 @item pcnub
11753 Force p/c/n/u/b calculations.
11754 @end table
11755
11756 Default value is @var{none}.
11757
11758 @item cthresh
11759 This is the area combing threshold used for combed frame detection. This
11760 essentially controls how "strong" or "visible" combing must be to be detected.
11761 Larger values mean combing must be more visible and smaller values mean combing
11762 can be less visible or strong and still be detected. Valid settings are from
11763 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
11764 be detected as combed). This is basically a pixel difference value. A good
11765 range is @code{[8, 12]}.
11766
11767 Default value is @code{9}.
11768
11769 @item chroma
11770 Sets whether or not chroma is considered in the combed frame decision.  Only
11771 disable this if your source has chroma problems (rainbowing, etc.) that are
11772 causing problems for the combed frame detection with chroma enabled. Actually,
11773 using @option{chroma}=@var{0} is usually more reliable, except for the case
11774 where there is chroma only combing in the source.
11775
11776 Default value is @code{0}.
11777
11778 @item blockx
11779 @item blocky
11780 Respectively set the x-axis and y-axis size of the window used during combed
11781 frame detection. This has to do with the size of the area in which
11782 @option{combpel} pixels are required to be detected as combed for a frame to be
11783 declared combed. See the @option{combpel} parameter description for more info.
11784 Possible values are any number that is a power of 2 starting at 4 and going up
11785 to 512.
11786
11787 Default value is @code{16}.
11788
11789 @item combpel
11790 The number of combed pixels inside any of the @option{blocky} by
11791 @option{blockx} size blocks on the frame for the frame to be detected as
11792 combed. While @option{cthresh} controls how "visible" the combing must be, this
11793 setting controls "how much" combing there must be in any localized area (a
11794 window defined by the @option{blockx} and @option{blocky} settings) on the
11795 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
11796 which point no frames will ever be detected as combed). This setting is known
11797 as @option{MI} in TFM/VFM vocabulary.
11798
11799 Default value is @code{80}.
11800 @end table
11801
11802 @anchor{p/c/n/u/b meaning}
11803 @subsection p/c/n/u/b meaning
11804
11805 @subsubsection p/c/n
11806
11807 We assume the following telecined stream:
11808
11809 @example
11810 Top fields:     1 2 2 3 4
11811 Bottom fields:  1 2 3 4 4
11812 @end example
11813
11814 The numbers correspond to the progressive frame the fields relate to. Here, the
11815 first two frames are progressive, the 3rd and 4th are combed, and so on.
11816
11817 When @code{fieldmatch} is configured to run a matching from bottom
11818 (@option{field}=@var{bottom}) this is how this input stream get transformed:
11819
11820 @example
11821 Input stream:
11822                 T     1 2 2 3 4
11823                 B     1 2 3 4 4   <-- matching reference
11824
11825 Matches:              c c n n c
11826
11827 Output stream:
11828                 T     1 2 3 4 4
11829                 B     1 2 3 4 4
11830 @end example
11831
11832 As a result of the field matching, we can see that some frames get duplicated.
11833 To perform a complete inverse telecine, you need to rely on a decimation filter
11834 after this operation. See for instance the @ref{decimate} filter.
11835
11836 The same operation now matching from top fields (@option{field}=@var{top})
11837 looks like this:
11838
11839 @example
11840 Input stream:
11841                 T     1 2 2 3 4   <-- matching reference
11842                 B     1 2 3 4 4
11843
11844 Matches:              c c p p c
11845
11846 Output stream:
11847                 T     1 2 2 3 4
11848                 B     1 2 2 3 4
11849 @end example
11850
11851 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
11852 basically, they refer to the frame and field of the opposite parity:
11853
11854 @itemize
11855 @item @var{p} matches the field of the opposite parity in the previous frame
11856 @item @var{c} matches the field of the opposite parity in the current frame
11857 @item @var{n} matches the field of the opposite parity in the next frame
11858 @end itemize
11859
11860 @subsubsection u/b
11861
11862 The @var{u} and @var{b} matching are a bit special in the sense that they match
11863 from the opposite parity flag. In the following examples, we assume that we are
11864 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
11865 'x' is placed above and below each matched fields.
11866
11867 With bottom matching (@option{field}=@var{bottom}):
11868 @example
11869 Match:           c         p           n          b          u
11870
11871                  x       x               x        x          x
11872   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11873   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11874                  x         x           x        x              x
11875
11876 Output frames:
11877                  2          1          2          2          2
11878                  2          2          2          1          3
11879 @end example
11880
11881 With top matching (@option{field}=@var{top}):
11882 @example
11883 Match:           c         p           n          b          u
11884
11885                  x         x           x        x              x
11886   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11887   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11888                  x       x               x        x          x
11889
11890 Output frames:
11891                  2          2          2          1          2
11892                  2          1          3          2          2
11893 @end example
11894
11895 @subsection Examples
11896
11897 Simple IVTC of a top field first telecined stream:
11898 @example
11899 fieldmatch=order=tff:combmatch=none, decimate
11900 @end example
11901
11902 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
11903 @example
11904 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11905 @end example
11906
11907 @section fieldorder
11908
11909 Transform the field order of the input video.
11910
11911 It accepts the following parameters:
11912
11913 @table @option
11914
11915 @item order
11916 The output field order. Valid values are @var{tff} for top field first or @var{bff}
11917 for bottom field first.
11918 @end table
11919
11920 The default value is @samp{tff}.
11921
11922 The transformation is done by shifting the picture content up or down
11923 by one line, and filling the remaining line with appropriate picture content.
11924 This method is consistent with most broadcast field order converters.
11925
11926 If the input video is not flagged as being interlaced, or it is already
11927 flagged as being of the required output field order, then this filter does
11928 not alter the incoming video.
11929
11930 It is very useful when converting to or from PAL DV material,
11931 which is bottom field first.
11932
11933 For example:
11934 @example
11935 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11936 @end example
11937
11938 @section fifo, afifo
11939
11940 Buffer input images and send them when they are requested.
11941
11942 It is mainly useful when auto-inserted by the libavfilter
11943 framework.
11944
11945 It does not take parameters.
11946
11947 @section fillborders
11948
11949 Fill borders of the input video, without changing video stream dimensions.
11950 Sometimes video can have garbage at the four edges and you may not want to
11951 crop video input to keep size multiple of some number.
11952
11953 This filter accepts the following options:
11954
11955 @table @option
11956 @item left
11957 Number of pixels to fill from left border.
11958
11959 @item right
11960 Number of pixels to fill from right border.
11961
11962 @item top
11963 Number of pixels to fill from top border.
11964
11965 @item bottom
11966 Number of pixels to fill from bottom border.
11967
11968 @item mode
11969 Set fill mode.
11970
11971 It accepts the following values:
11972 @table @samp
11973 @item smear
11974 fill pixels using outermost pixels
11975
11976 @item mirror
11977 fill pixels using mirroring (half sample symmetric)
11978
11979 @item fixed
11980 fill pixels with constant value
11981
11982 @item reflect
11983 fill pixels using reflecting (whole sample symmetric)
11984
11985 @item wrap
11986 fill pixels using wrapping
11987
11988 @item fade
11989 fade pixels to constant value
11990 @end table
11991
11992 Default is @var{smear}.
11993
11994 @item color
11995 Set color for pixels in fixed or fade mode. Default is @var{black}.
11996 @end table
11997
11998 @subsection Commands
11999 This filter supports same @ref{commands} as options.
12000 The command accepts the same syntax of the corresponding option.
12001
12002 If the specified expression is not valid, it is kept at its current
12003 value.
12004
12005 @section find_rect
12006
12007 Find a rectangular object
12008
12009 It accepts the following options:
12010
12011 @table @option
12012 @item object
12013 Filepath of the object image, needs to be in gray8.
12014
12015 @item threshold
12016 Detection threshold, default is 0.5.
12017
12018 @item mipmaps
12019 Number of mipmaps, default is 3.
12020
12021 @item xmin, ymin, xmax, ymax
12022 Specifies the rectangle in which to search.
12023 @end table
12024
12025 @subsection Examples
12026
12027 @itemize
12028 @item
12029 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
12030 @example
12031 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
12032 @end example
12033 @end itemize
12034
12035 @section floodfill
12036
12037 Flood area with values of same pixel components with another values.
12038
12039 It accepts the following options:
12040 @table @option
12041 @item x
12042 Set pixel x coordinate.
12043
12044 @item y
12045 Set pixel y coordinate.
12046
12047 @item s0
12048 Set source #0 component value.
12049
12050 @item s1
12051 Set source #1 component value.
12052
12053 @item s2
12054 Set source #2 component value.
12055
12056 @item s3
12057 Set source #3 component value.
12058
12059 @item d0
12060 Set destination #0 component value.
12061
12062 @item d1
12063 Set destination #1 component value.
12064
12065 @item d2
12066 Set destination #2 component value.
12067
12068 @item d3
12069 Set destination #3 component value.
12070 @end table
12071
12072 @anchor{format}
12073 @section format
12074
12075 Convert the input video to one of the specified pixel formats.
12076 Libavfilter will try to pick one that is suitable as input to
12077 the next filter.
12078
12079 It accepts the following parameters:
12080 @table @option
12081
12082 @item pix_fmts
12083 A '|'-separated list of pixel format names, such as
12084 "pix_fmts=yuv420p|monow|rgb24".
12085
12086 @end table
12087
12088 @subsection Examples
12089
12090 @itemize
12091 @item
12092 Convert the input video to the @var{yuv420p} format
12093 @example
12094 format=pix_fmts=yuv420p
12095 @end example
12096
12097 Convert the input video to any of the formats in the list
12098 @example
12099 format=pix_fmts=yuv420p|yuv444p|yuv410p
12100 @end example
12101 @end itemize
12102
12103 @anchor{fps}
12104 @section fps
12105
12106 Convert the video to specified constant frame rate by duplicating or dropping
12107 frames as necessary.
12108
12109 It accepts the following parameters:
12110 @table @option
12111
12112 @item fps
12113 The desired output frame rate. The default is @code{25}.
12114
12115 @item start_time
12116 Assume the first PTS should be the given value, in seconds. This allows for
12117 padding/trimming at the start of stream. By default, no assumption is made
12118 about the first frame's expected PTS, so no padding or trimming is done.
12119 For example, this could be set to 0 to pad the beginning with duplicates of
12120 the first frame if a video stream starts after the audio stream or to trim any
12121 frames with a negative PTS.
12122
12123 @item round
12124 Timestamp (PTS) rounding method.
12125
12126 Possible values are:
12127 @table @option
12128 @item zero
12129 round towards 0
12130 @item inf
12131 round away from 0
12132 @item down
12133 round towards -infinity
12134 @item up
12135 round towards +infinity
12136 @item near
12137 round to nearest
12138 @end table
12139 The default is @code{near}.
12140
12141 @item eof_action
12142 Action performed when reading the last frame.
12143
12144 Possible values are:
12145 @table @option
12146 @item round
12147 Use same timestamp rounding method as used for other frames.
12148 @item pass
12149 Pass through last frame if input duration has not been reached yet.
12150 @end table
12151 The default is @code{round}.
12152
12153 @end table
12154
12155 Alternatively, the options can be specified as a flat string:
12156 @var{fps}[:@var{start_time}[:@var{round}]].
12157
12158 See also the @ref{setpts} filter.
12159
12160 @subsection Examples
12161
12162 @itemize
12163 @item
12164 A typical usage in order to set the fps to 25:
12165 @example
12166 fps=fps=25
12167 @end example
12168
12169 @item
12170 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
12171 @example
12172 fps=fps=film:round=near
12173 @end example
12174 @end itemize
12175
12176 @section framepack
12177
12178 Pack two different video streams into a stereoscopic video, setting proper
12179 metadata on supported codecs. The two views should have the same size and
12180 framerate and processing will stop when the shorter video ends. Please note
12181 that you may conveniently adjust view properties with the @ref{scale} and
12182 @ref{fps} filters.
12183
12184 It accepts the following parameters:
12185 @table @option
12186
12187 @item format
12188 The desired packing format. Supported values are:
12189
12190 @table @option
12191
12192 @item sbs
12193 The views are next to each other (default).
12194
12195 @item tab
12196 The views are on top of each other.
12197
12198 @item lines
12199 The views are packed by line.
12200
12201 @item columns
12202 The views are packed by column.
12203
12204 @item frameseq
12205 The views are temporally interleaved.
12206
12207 @end table
12208
12209 @end table
12210
12211 Some examples:
12212
12213 @example
12214 # Convert left and right views into a frame-sequential video
12215 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
12216
12217 # Convert views into a side-by-side video with the same output resolution as the input
12218 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
12219 @end example
12220
12221 @section framerate
12222
12223 Change the frame rate by interpolating new video output frames from the source
12224 frames.
12225
12226 This filter is not designed to function correctly with interlaced media. If
12227 you wish to change the frame rate of interlaced media then you are required
12228 to deinterlace before this filter and re-interlace after this filter.
12229
12230 A description of the accepted options follows.
12231
12232 @table @option
12233 @item fps
12234 Specify the output frames per second. This option can also be specified
12235 as a value alone. The default is @code{50}.
12236
12237 @item interp_start
12238 Specify the start of a range where the output frame will be created as a
12239 linear interpolation of two frames. The range is [@code{0}-@code{255}],
12240 the default is @code{15}.
12241
12242 @item interp_end
12243 Specify the end of a range where the output frame will be created as a
12244 linear interpolation of two frames. The range is [@code{0}-@code{255}],
12245 the default is @code{240}.
12246
12247 @item scene
12248 Specify the level at which a scene change is detected as a value between
12249 0 and 100 to indicate a new scene; a low value reflects a low
12250 probability for the current frame to introduce a new scene, while a higher
12251 value means the current frame is more likely to be one.
12252 The default is @code{8.2}.
12253
12254 @item flags
12255 Specify flags influencing the filter process.
12256
12257 Available value for @var{flags} is:
12258
12259 @table @option
12260 @item scene_change_detect, scd
12261 Enable scene change detection using the value of the option @var{scene}.
12262 This flag is enabled by default.
12263 @end table
12264 @end table
12265
12266 @section framestep
12267
12268 Select one frame every N-th frame.
12269
12270 This filter accepts the following option:
12271 @table @option
12272 @item step
12273 Select frame after every @code{step} frames.
12274 Allowed values are positive integers higher than 0. Default value is @code{1}.
12275 @end table
12276
12277 @section freezedetect
12278
12279 Detect frozen video.
12280
12281 This filter logs a message and sets frame metadata when it detects that the
12282 input video has no significant change in content during a specified duration.
12283 Video freeze detection calculates the mean average absolute difference of all
12284 the components of video frames and compares it to a noise floor.
12285
12286 The printed times and duration are expressed in seconds. The
12287 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
12288 whose timestamp equals or exceeds the detection duration and it contains the
12289 timestamp of the first frame of the freeze. The
12290 @code{lavfi.freezedetect.freeze_duration} and
12291 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
12292 after the freeze.
12293
12294 The filter accepts the following options:
12295
12296 @table @option
12297 @item noise, n
12298 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
12299 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
12300 0.001.
12301
12302 @item duration, d
12303 Set freeze duration until notification (default is 2 seconds).
12304 @end table
12305
12306 @section freezeframes
12307
12308 Freeze video frames.
12309
12310 This filter freezes video frames using frame from 2nd input.
12311
12312 The filter accepts the following options:
12313
12314 @table @option
12315 @item first
12316 Set number of first frame from which to start freeze.
12317
12318 @item last
12319 Set number of last frame from which to end freeze.
12320
12321 @item replace
12322 Set number of frame from 2nd input which will be used instead of replaced frames.
12323 @end table
12324
12325 @anchor{frei0r}
12326 @section frei0r
12327
12328 Apply a frei0r effect to the input video.
12329
12330 To enable the compilation of this filter, you need to install the frei0r
12331 header and configure FFmpeg with @code{--enable-frei0r}.
12332
12333 It accepts the following parameters:
12334
12335 @table @option
12336
12337 @item filter_name
12338 The name of the frei0r effect to load. If the environment variable
12339 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
12340 directories specified by the colon-separated list in @env{FREI0R_PATH}.
12341 Otherwise, the standard frei0r paths are searched, in this order:
12342 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
12343 @file{/usr/lib/frei0r-1/}.
12344
12345 @item filter_params
12346 A '|'-separated list of parameters to pass to the frei0r effect.
12347
12348 @end table
12349
12350 A frei0r effect parameter can be a boolean (its value is either
12351 "y" or "n"), a double, a color (specified as
12352 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
12353 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
12354 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
12355 a position (specified as @var{X}/@var{Y}, where
12356 @var{X} and @var{Y} are floating point numbers) and/or a string.
12357
12358 The number and types of parameters depend on the loaded effect. If an
12359 effect parameter is not specified, the default value is set.
12360
12361 @subsection Examples
12362
12363 @itemize
12364 @item
12365 Apply the distort0r effect, setting the first two double parameters:
12366 @example
12367 frei0r=filter_name=distort0r:filter_params=0.5|0.01
12368 @end example
12369
12370 @item
12371 Apply the colordistance effect, taking a color as the first parameter:
12372 @example
12373 frei0r=colordistance:0.2/0.3/0.4
12374 frei0r=colordistance:violet
12375 frei0r=colordistance:0x112233
12376 @end example
12377
12378 @item
12379 Apply the perspective effect, specifying the top left and top right image
12380 positions:
12381 @example
12382 frei0r=perspective:0.2/0.2|0.8/0.2
12383 @end example
12384 @end itemize
12385
12386 For more information, see
12387 @url{http://frei0r.dyne.org}
12388
12389 @subsection Commands
12390
12391 This filter supports the @option{filter_params} option as @ref{commands}.
12392
12393 @section fspp
12394
12395 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
12396
12397 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
12398 processing filter, one of them is performed once per block, not per pixel.
12399 This allows for much higher speed.
12400
12401 The filter accepts the following options:
12402
12403 @table @option
12404 @item quality
12405 Set quality. This option defines the number of levels for averaging. It accepts
12406 an integer in the range 4-5. Default value is @code{4}.
12407
12408 @item qp
12409 Force a constant quantization parameter. It accepts an integer in range 0-63.
12410 If not set, the filter will use the QP from the video stream (if available).
12411
12412 @item strength
12413 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
12414 more details but also more artifacts, while higher values make the image smoother
12415 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
12416
12417 @item use_bframe_qp
12418 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
12419 option may cause flicker since the B-Frames have often larger QP. Default is
12420 @code{0} (not enabled).
12421
12422 @end table
12423
12424 @section gblur
12425
12426 Apply Gaussian blur filter.
12427
12428 The filter accepts the following options:
12429
12430 @table @option
12431 @item sigma
12432 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
12433
12434 @item steps
12435 Set number of steps for Gaussian approximation. Default is @code{1}.
12436
12437 @item planes
12438 Set which planes to filter. By default all planes are filtered.
12439
12440 @item sigmaV
12441 Set vertical sigma, if negative it will be same as @code{sigma}.
12442 Default is @code{-1}.
12443 @end table
12444
12445 @subsection Commands
12446 This filter supports same commands as options.
12447 The command accepts the same syntax of the corresponding option.
12448
12449 If the specified expression is not valid, it is kept at its current
12450 value.
12451
12452 @section geq
12453
12454 Apply generic equation to each pixel.
12455
12456 The filter accepts the following options:
12457
12458 @table @option
12459 @item lum_expr, lum
12460 Set the luminance expression.
12461 @item cb_expr, cb
12462 Set the chrominance blue expression.
12463 @item cr_expr, cr
12464 Set the chrominance red expression.
12465 @item alpha_expr, a
12466 Set the alpha expression.
12467 @item red_expr, r
12468 Set the red expression.
12469 @item green_expr, g
12470 Set the green expression.
12471 @item blue_expr, b
12472 Set the blue expression.
12473 @end table
12474
12475 The colorspace is selected according to the specified options. If one
12476 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
12477 options is specified, the filter will automatically select a YCbCr
12478 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
12479 @option{blue_expr} options is specified, it will select an RGB
12480 colorspace.
12481
12482 If one of the chrominance expression is not defined, it falls back on the other
12483 one. If no alpha expression is specified it will evaluate to opaque value.
12484 If none of chrominance expressions are specified, they will evaluate
12485 to the luminance expression.
12486
12487 The expressions can use the following variables and functions:
12488
12489 @table @option
12490 @item N
12491 The sequential number of the filtered frame, starting from @code{0}.
12492
12493 @item X
12494 @item Y
12495 The coordinates of the current sample.
12496
12497 @item W
12498 @item H
12499 The width and height of the image.
12500
12501 @item SW
12502 @item SH
12503 Width and height scale depending on the currently filtered plane. It is the
12504 ratio between the corresponding luma plane number of pixels and the current
12505 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
12506 @code{0.5,0.5} for chroma planes.
12507
12508 @item T
12509 Time of the current frame, expressed in seconds.
12510
12511 @item p(x, y)
12512 Return the value of the pixel at location (@var{x},@var{y}) of the current
12513 plane.
12514
12515 @item lum(x, y)
12516 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
12517 plane.
12518
12519 @item cb(x, y)
12520 Return the value of the pixel at location (@var{x},@var{y}) of the
12521 blue-difference chroma plane. Return 0 if there is no such plane.
12522
12523 @item cr(x, y)
12524 Return the value of the pixel at location (@var{x},@var{y}) of the
12525 red-difference chroma plane. Return 0 if there is no such plane.
12526
12527 @item r(x, y)
12528 @item g(x, y)
12529 @item b(x, y)
12530 Return the value of the pixel at location (@var{x},@var{y}) of the
12531 red/green/blue component. Return 0 if there is no such component.
12532
12533 @item alpha(x, y)
12534 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
12535 plane. Return 0 if there is no such plane.
12536
12537 @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)
12538 Sum of sample values in the rectangle from (0,0) to (x,y), this allows obtaining
12539 sums of samples within a rectangle. See the functions without the sum postfix.
12540
12541 @item interpolation
12542 Set one of interpolation methods:
12543 @table @option
12544 @item nearest, n
12545 @item bilinear, b
12546 @end table
12547 Default is bilinear.
12548 @end table
12549
12550 For functions, if @var{x} and @var{y} are outside the area, the value will be
12551 automatically clipped to the closer edge.
12552
12553 Please note that this filter can use multiple threads in which case each slice
12554 will have its own expression state. If you want to use only a single expression
12555 state because your expressions depend on previous state then you should limit
12556 the number of filter threads to 1.
12557
12558 @subsection Examples
12559
12560 @itemize
12561 @item
12562 Flip the image horizontally:
12563 @example
12564 geq=p(W-X\,Y)
12565 @end example
12566
12567 @item
12568 Generate a bidimensional sine wave, with angle @code{PI/3} and a
12569 wavelength of 100 pixels:
12570 @example
12571 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
12572 @end example
12573
12574 @item
12575 Generate a fancy enigmatic moving light:
12576 @example
12577 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
12578 @end example
12579
12580 @item
12581 Generate a quick emboss effect:
12582 @example
12583 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
12584 @end example
12585
12586 @item
12587 Modify RGB components depending on pixel position:
12588 @example
12589 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
12590 @end example
12591
12592 @item
12593 Create a radial gradient that is the same size as the input (also see
12594 the @ref{vignette} filter):
12595 @example
12596 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
12597 @end example
12598 @end itemize
12599
12600 @section gradfun
12601
12602 Fix the banding artifacts that are sometimes introduced into nearly flat
12603 regions by truncation to 8-bit color depth.
12604 Interpolate the gradients that should go where the bands are, and
12605 dither them.
12606
12607 It is designed for playback only.  Do not use it prior to
12608 lossy compression, because compression tends to lose the dither and
12609 bring back the bands.
12610
12611 It accepts the following parameters:
12612
12613 @table @option
12614
12615 @item strength
12616 The maximum amount by which the filter will change any one pixel. This is also
12617 the threshold for detecting nearly flat regions. Acceptable values range from
12618 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
12619 valid range.
12620
12621 @item radius
12622 The neighborhood to fit the gradient to. A larger radius makes for smoother
12623 gradients, but also prevents the filter from modifying the pixels near detailed
12624 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
12625 values will be clipped to the valid range.
12626
12627 @end table
12628
12629 Alternatively, the options can be specified as a flat string:
12630 @var{strength}[:@var{radius}]
12631
12632 @subsection Examples
12633
12634 @itemize
12635 @item
12636 Apply the filter with a @code{3.5} strength and radius of @code{8}:
12637 @example
12638 gradfun=3.5:8
12639 @end example
12640
12641 @item
12642 Specify radius, omitting the strength (which will fall-back to the default
12643 value):
12644 @example
12645 gradfun=radius=8
12646 @end example
12647
12648 @end itemize
12649
12650 @anchor{graphmonitor}
12651 @section graphmonitor
12652 Show various filtergraph stats.
12653
12654 With this filter one can debug complete filtergraph.
12655 Especially issues with links filling with queued frames.
12656
12657 The filter accepts the following options:
12658
12659 @table @option
12660 @item size, s
12661 Set video output size. Default is @var{hd720}.
12662
12663 @item opacity, o
12664 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
12665
12666 @item mode, m
12667 Set output mode, can be @var{fulll} or @var{compact}.
12668 In @var{compact} mode only filters with some queued frames have displayed stats.
12669
12670 @item flags, f
12671 Set flags which enable which stats are shown in video.
12672
12673 Available values for flags are:
12674 @table @samp
12675 @item queue
12676 Display number of queued frames in each link.
12677
12678 @item frame_count_in
12679 Display number of frames taken from filter.
12680
12681 @item frame_count_out
12682 Display number of frames given out from filter.
12683
12684 @item pts
12685 Display current filtered frame pts.
12686
12687 @item time
12688 Display current filtered frame time.
12689
12690 @item timebase
12691 Display time base for filter link.
12692
12693 @item format
12694 Display used format for filter link.
12695
12696 @item size
12697 Display video size or number of audio channels in case of audio used by filter link.
12698
12699 @item rate
12700 Display video frame rate or sample rate in case of audio used by filter link.
12701
12702 @item eof
12703 Display link output status.
12704 @end table
12705
12706 @item rate, r
12707 Set upper limit for video rate of output stream, Default value is @var{25}.
12708 This guarantee that output video frame rate will not be higher than this value.
12709 @end table
12710
12711 @section greyedge
12712 A color constancy variation filter which estimates scene illumination via grey edge algorithm
12713 and corrects the scene colors accordingly.
12714
12715 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
12716
12717 The filter accepts the following options:
12718
12719 @table @option
12720 @item difford
12721 The order of differentiation to be applied on the scene. Must be chosen in the range
12722 [0,2] and default value is 1.
12723
12724 @item minknorm
12725 The Minkowski parameter to be used for calculating the Minkowski distance. Must
12726 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
12727 max value instead of calculating Minkowski distance.
12728
12729 @item sigma
12730 The standard deviation of Gaussian blur to be applied on the scene. Must be
12731 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
12732 can't be equal to 0 if @var{difford} is greater than 0.
12733 @end table
12734
12735 @subsection Examples
12736 @itemize
12737
12738 @item
12739 Grey Edge:
12740 @example
12741 greyedge=difford=1:minknorm=5:sigma=2
12742 @end example
12743
12744 @item
12745 Max Edge:
12746 @example
12747 greyedge=difford=1:minknorm=0:sigma=2
12748 @end example
12749
12750 @end itemize
12751
12752 @anchor{haldclut}
12753 @section haldclut
12754
12755 Apply a Hald CLUT to a video stream.
12756
12757 First input is the video stream to process, and second one is the Hald CLUT.
12758 The Hald CLUT input can be a simple picture or a complete video stream.
12759
12760 The filter accepts the following options:
12761
12762 @table @option
12763 @item shortest
12764 Force termination when the shortest input terminates. Default is @code{0}.
12765 @item repeatlast
12766 Continue applying the last CLUT after the end of the stream. A value of
12767 @code{0} disable the filter after the last frame of the CLUT is reached.
12768 Default is @code{1}.
12769 @end table
12770
12771 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
12772 filters share the same internals).
12773
12774 This filter also supports the @ref{framesync} options.
12775
12776 More information about the Hald CLUT can be found on Eskil Steenberg's website
12777 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
12778
12779 @subsection Workflow examples
12780
12781 @subsubsection Hald CLUT video stream
12782
12783 Generate an identity Hald CLUT stream altered with various effects:
12784 @example
12785 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
12786 @end example
12787
12788 Note: make sure you use a lossless codec.
12789
12790 Then use it with @code{haldclut} to apply it on some random stream:
12791 @example
12792 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
12793 @end example
12794
12795 The Hald CLUT will be applied to the 10 first seconds (duration of
12796 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
12797 to the remaining frames of the @code{mandelbrot} stream.
12798
12799 @subsubsection Hald CLUT with preview
12800
12801 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
12802 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
12803 biggest possible square starting at the top left of the picture. The remaining
12804 padding pixels (bottom or right) will be ignored. This area can be used to add
12805 a preview of the Hald CLUT.
12806
12807 Typically, the following generated Hald CLUT will be supported by the
12808 @code{haldclut} filter:
12809
12810 @example
12811 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
12812    pad=iw+320 [padded_clut];
12813    smptebars=s=320x256, split [a][b];
12814    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
12815    [main][b] overlay=W-320" -frames:v 1 clut.png
12816 @end example
12817
12818 It contains the original and a preview of the effect of the CLUT: SMPTE color
12819 bars are displayed on the right-top, and below the same color bars processed by
12820 the color changes.
12821
12822 Then, the effect of this Hald CLUT can be visualized with:
12823 @example
12824 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
12825 @end example
12826
12827 @section hflip
12828
12829 Flip the input video horizontally.
12830
12831 For example, to horizontally flip the input video with @command{ffmpeg}:
12832 @example
12833 ffmpeg -i in.avi -vf "hflip" out.avi
12834 @end example
12835
12836 @section histeq
12837 This filter applies a global color histogram equalization on a
12838 per-frame basis.
12839
12840 It can be used to correct video that has a compressed range of pixel
12841 intensities.  The filter redistributes the pixel intensities to
12842 equalize their distribution across the intensity range. It may be
12843 viewed as an "automatically adjusting contrast filter". This filter is
12844 useful only for correcting degraded or poorly captured source
12845 video.
12846
12847 The filter accepts the following options:
12848
12849 @table @option
12850 @item strength
12851 Determine the amount of equalization to be applied.  As the strength
12852 is reduced, the distribution of pixel intensities more-and-more
12853 approaches that of the input frame. The value must be a float number
12854 in the range [0,1] and defaults to 0.200.
12855
12856 @item intensity
12857 Set the maximum intensity that can generated and scale the output
12858 values appropriately.  The strength should be set as desired and then
12859 the intensity can be limited if needed to avoid washing-out. The value
12860 must be a float number in the range [0,1] and defaults to 0.210.
12861
12862 @item antibanding
12863 Set the antibanding level. If enabled the filter will randomly vary
12864 the luminance of output pixels by a small amount to avoid banding of
12865 the histogram. Possible values are @code{none}, @code{weak} or
12866 @code{strong}. It defaults to @code{none}.
12867 @end table
12868
12869 @anchor{histogram}
12870 @section histogram
12871
12872 Compute and draw a color distribution histogram for the input video.
12873
12874 The computed histogram is a representation of the color component
12875 distribution in an image.
12876
12877 Standard histogram displays the color components distribution in an image.
12878 Displays color graph for each color component. Shows distribution of
12879 the Y, U, V, A or R, G, B components, depending on input format, in the
12880 current frame. Below each graph a color component scale meter is shown.
12881
12882 The filter accepts the following options:
12883
12884 @table @option
12885 @item level_height
12886 Set height of level. Default value is @code{200}.
12887 Allowed range is [50, 2048].
12888
12889 @item scale_height
12890 Set height of color scale. Default value is @code{12}.
12891 Allowed range is [0, 40].
12892
12893 @item display_mode
12894 Set display mode.
12895 It accepts the following values:
12896 @table @samp
12897 @item stack
12898 Per color component graphs are placed below each other.
12899
12900 @item parade
12901 Per color component graphs are placed side by side.
12902
12903 @item overlay
12904 Presents information identical to that in the @code{parade}, except
12905 that the graphs representing color components are superimposed directly
12906 over one another.
12907 @end table
12908 Default is @code{stack}.
12909
12910 @item levels_mode
12911 Set mode. Can be either @code{linear}, or @code{logarithmic}.
12912 Default is @code{linear}.
12913
12914 @item components
12915 Set what color components to display.
12916 Default is @code{7}.
12917
12918 @item fgopacity
12919 Set foreground opacity. Default is @code{0.7}.
12920
12921 @item bgopacity
12922 Set background opacity. Default is @code{0.5}.
12923 @end table
12924
12925 @subsection Examples
12926
12927 @itemize
12928
12929 @item
12930 Calculate and draw histogram:
12931 @example
12932 ffplay -i input -vf histogram
12933 @end example
12934
12935 @end itemize
12936
12937 @anchor{hqdn3d}
12938 @section hqdn3d
12939
12940 This is a high precision/quality 3d denoise filter. It aims to reduce
12941 image noise, producing smooth images and making still images really
12942 still. It should enhance compressibility.
12943
12944 It accepts the following optional parameters:
12945
12946 @table @option
12947 @item luma_spatial
12948 A non-negative floating point number which specifies spatial luma strength.
12949 It defaults to 4.0.
12950
12951 @item chroma_spatial
12952 A non-negative floating point number which specifies spatial chroma strength.
12953 It defaults to 3.0*@var{luma_spatial}/4.0.
12954
12955 @item luma_tmp
12956 A floating point number which specifies luma temporal strength. It defaults to
12957 6.0*@var{luma_spatial}/4.0.
12958
12959 @item chroma_tmp
12960 A floating point number which specifies chroma temporal strength. It defaults to
12961 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
12962 @end table
12963
12964 @subsection Commands
12965 This filter supports same @ref{commands} as options.
12966 The command accepts the same syntax of the corresponding option.
12967
12968 If the specified expression is not valid, it is kept at its current
12969 value.
12970
12971 @anchor{hwdownload}
12972 @section hwdownload
12973
12974 Download hardware frames to system memory.
12975
12976 The input must be in hardware frames, and the output a non-hardware format.
12977 Not all formats will be supported on the output - it may be necessary to insert
12978 an additional @option{format} filter immediately following in the graph to get
12979 the output in a supported format.
12980
12981 @section hwmap
12982
12983 Map hardware frames to system memory or to another device.
12984
12985 This filter has several different modes of operation; which one is used depends
12986 on the input and output formats:
12987 @itemize
12988 @item
12989 Hardware frame input, normal frame output
12990
12991 Map the input frames to system memory and pass them to the output.  If the
12992 original hardware frame is later required (for example, after overlaying
12993 something else on part of it), the @option{hwmap} filter can be used again
12994 in the next mode to retrieve it.
12995 @item
12996 Normal frame input, hardware frame output
12997
12998 If the input is actually a software-mapped hardware frame, then unmap it -
12999 that is, return the original hardware frame.
13000
13001 Otherwise, a device must be provided.  Create new hardware surfaces on that
13002 device for the output, then map them back to the software format at the input
13003 and give those frames to the preceding filter.  This will then act like the
13004 @option{hwupload} filter, but may be able to avoid an additional copy when
13005 the input is already in a compatible format.
13006 @item
13007 Hardware frame input and output
13008
13009 A device must be supplied for the output, either directly or with the
13010 @option{derive_device} option.  The input and output devices must be of
13011 different types and compatible - the exact meaning of this is
13012 system-dependent, but typically it means that they must refer to the same
13013 underlying hardware context (for example, refer to the same graphics card).
13014
13015 If the input frames were originally created on the output device, then unmap
13016 to retrieve the original frames.
13017
13018 Otherwise, map the frames to the output device - create new hardware frames
13019 on the output corresponding to the frames on the input.
13020 @end itemize
13021
13022 The following additional parameters are accepted:
13023
13024 @table @option
13025 @item mode
13026 Set the frame mapping mode.  Some combination of:
13027 @table @var
13028 @item read
13029 The mapped frame should be readable.
13030 @item write
13031 The mapped frame should be writeable.
13032 @item overwrite
13033 The mapping will always overwrite the entire frame.
13034
13035 This may improve performance in some cases, as the original contents of the
13036 frame need not be loaded.
13037 @item direct
13038 The mapping must not involve any copying.
13039
13040 Indirect mappings to copies of frames are created in some cases where either
13041 direct mapping is not possible or it would have unexpected properties.
13042 Setting this flag ensures that the mapping is direct and will fail if that is
13043 not possible.
13044 @end table
13045 Defaults to @var{read+write} if not specified.
13046
13047 @item derive_device @var{type}
13048 Rather than using the device supplied at initialisation, instead derive a new
13049 device of type @var{type} from the device the input frames exist on.
13050
13051 @item reverse
13052 In a hardware to hardware mapping, map in reverse - create frames in the sink
13053 and map them back to the source.  This may be necessary in some cases where
13054 a mapping in one direction is required but only the opposite direction is
13055 supported by the devices being used.
13056
13057 This option is dangerous - it may break the preceding filter in undefined
13058 ways if there are any additional constraints on that filter's output.
13059 Do not use it without fully understanding the implications of its use.
13060 @end table
13061
13062 @anchor{hwupload}
13063 @section hwupload
13064
13065 Upload system memory frames to hardware surfaces.
13066
13067 The device to upload to must be supplied when the filter is initialised.  If
13068 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
13069 option or with the @option{derive_device} option.  The input and output devices
13070 must be of different types and compatible - the exact meaning of this is
13071 system-dependent, but typically it means that they must refer to the same
13072 underlying hardware context (for example, refer to the same graphics card).
13073
13074 The following additional parameters are accepted:
13075
13076 @table @option
13077 @item derive_device @var{type}
13078 Rather than using the device supplied at initialisation, instead derive a new
13079 device of type @var{type} from the device the input frames exist on.
13080 @end table
13081
13082 @anchor{hwupload_cuda}
13083 @section hwupload_cuda
13084
13085 Upload system memory frames to a CUDA device.
13086
13087 It accepts the following optional parameters:
13088
13089 @table @option
13090 @item device
13091 The number of the CUDA device to use
13092 @end table
13093
13094 @section hqx
13095
13096 Apply a high-quality magnification filter designed for pixel art. This filter
13097 was originally created by Maxim Stepin.
13098
13099 It accepts the following option:
13100
13101 @table @option
13102 @item n
13103 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
13104 @code{hq3x} and @code{4} for @code{hq4x}.
13105 Default is @code{3}.
13106 @end table
13107
13108 @section hstack
13109 Stack input videos horizontally.
13110
13111 All streams must be of same pixel format and of same height.
13112
13113 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
13114 to create same output.
13115
13116 The filter accepts the following option:
13117
13118 @table @option
13119 @item inputs
13120 Set number of input streams. Default is 2.
13121
13122 @item shortest
13123 If set to 1, force the output to terminate when the shortest input
13124 terminates. Default value is 0.
13125 @end table
13126
13127 @section hue
13128
13129 Modify the hue and/or the saturation of the input.
13130
13131 It accepts the following parameters:
13132
13133 @table @option
13134 @item h
13135 Specify the hue angle as a number of degrees. It accepts an expression,
13136 and defaults to "0".
13137
13138 @item s
13139 Specify the saturation in the [-10,10] range. It accepts an expression and
13140 defaults to "1".
13141
13142 @item H
13143 Specify the hue angle as a number of radians. It accepts an
13144 expression, and defaults to "0".
13145
13146 @item b
13147 Specify the brightness in the [-10,10] range. It accepts an expression and
13148 defaults to "0".
13149 @end table
13150
13151 @option{h} and @option{H} are mutually exclusive, and can't be
13152 specified at the same time.
13153
13154 The @option{b}, @option{h}, @option{H} and @option{s} option values are
13155 expressions containing the following constants:
13156
13157 @table @option
13158 @item n
13159 frame count of the input frame starting from 0
13160
13161 @item pts
13162 presentation timestamp of the input frame expressed in time base units
13163
13164 @item r
13165 frame rate of the input video, NAN if the input frame rate is unknown
13166
13167 @item t
13168 timestamp expressed in seconds, NAN if the input timestamp is unknown
13169
13170 @item tb
13171 time base of the input video
13172 @end table
13173
13174 @subsection Examples
13175
13176 @itemize
13177 @item
13178 Set the hue to 90 degrees and the saturation to 1.0:
13179 @example
13180 hue=h=90:s=1
13181 @end example
13182
13183 @item
13184 Same command but expressing the hue in radians:
13185 @example
13186 hue=H=PI/2:s=1
13187 @end example
13188
13189 @item
13190 Rotate hue and make the saturation swing between 0
13191 and 2 over a period of 1 second:
13192 @example
13193 hue="H=2*PI*t: s=sin(2*PI*t)+1"
13194 @end example
13195
13196 @item
13197 Apply a 3 seconds saturation fade-in effect starting at 0:
13198 @example
13199 hue="s=min(t/3\,1)"
13200 @end example
13201
13202 The general fade-in expression can be written as:
13203 @example
13204 hue="s=min(0\, max((t-START)/DURATION\, 1))"
13205 @end example
13206
13207 @item
13208 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
13209 @example
13210 hue="s=max(0\, min(1\, (8-t)/3))"
13211 @end example
13212
13213 The general fade-out expression can be written as:
13214 @example
13215 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
13216 @end example
13217
13218 @end itemize
13219
13220 @subsection Commands
13221
13222 This filter supports the following commands:
13223 @table @option
13224 @item b
13225 @item s
13226 @item h
13227 @item H
13228 Modify the hue and/or the saturation and/or brightness of the input video.
13229 The command accepts the same syntax of the corresponding option.
13230
13231 If the specified expression is not valid, it is kept at its current
13232 value.
13233 @end table
13234
13235 @section hysteresis
13236
13237 Grow first stream into second stream by connecting components.
13238 This makes it possible to build more robust edge masks.
13239
13240 This filter accepts the following options:
13241
13242 @table @option
13243 @item planes
13244 Set which planes will be processed as bitmap, unprocessed planes will be
13245 copied from first stream.
13246 By default value 0xf, all planes will be processed.
13247
13248 @item threshold
13249 Set threshold which is used in filtering. If pixel component value is higher than
13250 this value filter algorithm for connecting components is activated.
13251 By default value is 0.
13252 @end table
13253
13254 The @code{hysteresis} filter also supports the @ref{framesync} options.
13255
13256 @section idet
13257
13258 Detect video interlacing type.
13259
13260 This filter tries to detect if the input frames are interlaced, progressive,
13261 top or bottom field first. It will also try to detect fields that are
13262 repeated between adjacent frames (a sign of telecine).
13263
13264 Single frame detection considers only immediately adjacent frames when classifying each frame.
13265 Multiple frame detection incorporates the classification history of previous frames.
13266
13267 The filter will log these metadata values:
13268
13269 @table @option
13270 @item single.current_frame
13271 Detected type of current frame using single-frame detection. One of:
13272 ``tff'' (top field first), ``bff'' (bottom field first),
13273 ``progressive'', or ``undetermined''
13274
13275 @item single.tff
13276 Cumulative number of frames detected as top field first using single-frame detection.
13277
13278 @item multiple.tff
13279 Cumulative number of frames detected as top field first using multiple-frame detection.
13280
13281 @item single.bff
13282 Cumulative number of frames detected as bottom field first using single-frame detection.
13283
13284 @item multiple.current_frame
13285 Detected type of current frame using multiple-frame detection. One of:
13286 ``tff'' (top field first), ``bff'' (bottom field first),
13287 ``progressive'', or ``undetermined''
13288
13289 @item multiple.bff
13290 Cumulative number of frames detected as bottom field first using multiple-frame detection.
13291
13292 @item single.progressive
13293 Cumulative number of frames detected as progressive using single-frame detection.
13294
13295 @item multiple.progressive
13296 Cumulative number of frames detected as progressive using multiple-frame detection.
13297
13298 @item single.undetermined
13299 Cumulative number of frames that could not be classified using single-frame detection.
13300
13301 @item multiple.undetermined
13302 Cumulative number of frames that could not be classified using multiple-frame detection.
13303
13304 @item repeated.current_frame
13305 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
13306
13307 @item repeated.neither
13308 Cumulative number of frames with no repeated field.
13309
13310 @item repeated.top
13311 Cumulative number of frames with the top field repeated from the previous frame's top field.
13312
13313 @item repeated.bottom
13314 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
13315 @end table
13316
13317 The filter accepts the following options:
13318
13319 @table @option
13320 @item intl_thres
13321 Set interlacing threshold.
13322 @item prog_thres
13323 Set progressive threshold.
13324 @item rep_thres
13325 Threshold for repeated field detection.
13326 @item half_life
13327 Number of frames after which a given frame's contribution to the
13328 statistics is halved (i.e., it contributes only 0.5 to its
13329 classification). The default of 0 means that all frames seen are given
13330 full weight of 1.0 forever.
13331 @item analyze_interlaced_flag
13332 When this is not 0 then idet will use the specified number of frames to determine
13333 if the interlaced flag is accurate, it will not count undetermined frames.
13334 If the flag is found to be accurate it will be used without any further
13335 computations, if it is found to be inaccurate it will be cleared without any
13336 further computations. This allows inserting the idet filter as a low computational
13337 method to clean up the interlaced flag
13338 @end table
13339
13340 @section il
13341
13342 Deinterleave or interleave fields.
13343
13344 This filter allows one to process interlaced images fields without
13345 deinterlacing them. Deinterleaving splits the input frame into 2
13346 fields (so called half pictures). Odd lines are moved to the top
13347 half of the output image, even lines to the bottom half.
13348 You can process (filter) them independently and then re-interleave them.
13349
13350 The filter accepts the following options:
13351
13352 @table @option
13353 @item luma_mode, l
13354 @item chroma_mode, c
13355 @item alpha_mode, a
13356 Available values for @var{luma_mode}, @var{chroma_mode} and
13357 @var{alpha_mode} are:
13358
13359 @table @samp
13360 @item none
13361 Do nothing.
13362
13363 @item deinterleave, d
13364 Deinterleave fields, placing one above the other.
13365
13366 @item interleave, i
13367 Interleave fields. Reverse the effect of deinterleaving.
13368 @end table
13369 Default value is @code{none}.
13370
13371 @item luma_swap, ls
13372 @item chroma_swap, cs
13373 @item alpha_swap, as
13374 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
13375 @end table
13376
13377 @subsection Commands
13378
13379 This filter supports the all above options as @ref{commands}.
13380
13381 @section inflate
13382
13383 Apply inflate effect to the video.
13384
13385 This filter replaces the pixel by the local(3x3) average by taking into account
13386 only values higher than the pixel.
13387
13388 It accepts the following options:
13389
13390 @table @option
13391 @item threshold0
13392 @item threshold1
13393 @item threshold2
13394 @item threshold3
13395 Limit the maximum change for each plane, default is 65535.
13396 If 0, plane will remain unchanged.
13397 @end table
13398
13399 @subsection Commands
13400
13401 This filter supports the all above options as @ref{commands}.
13402
13403 @section interlace
13404
13405 Simple interlacing filter from progressive contents. This interleaves upper (or
13406 lower) lines from odd frames with lower (or upper) lines from even frames,
13407 halving the frame rate and preserving image height.
13408
13409 @example
13410    Original        Original             New Frame
13411    Frame 'j'      Frame 'j+1'             (tff)
13412   ==========      ===========       ==================
13413     Line 0  -------------------->    Frame 'j' Line 0
13414     Line 1          Line 1  ---->   Frame 'j+1' Line 1
13415     Line 2 --------------------->    Frame 'j' Line 2
13416     Line 3          Line 3  ---->   Frame 'j+1' Line 3
13417      ...             ...                   ...
13418 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
13419 @end example
13420
13421 It accepts the following optional parameters:
13422
13423 @table @option
13424 @item scan
13425 This determines whether the interlaced frame is taken from the even
13426 (tff - default) or odd (bff) lines of the progressive frame.
13427
13428 @item lowpass
13429 Vertical lowpass filter to avoid twitter interlacing and
13430 reduce moire patterns.
13431
13432 @table @samp
13433 @item 0, off
13434 Disable vertical lowpass filter
13435
13436 @item 1, linear
13437 Enable linear filter (default)
13438
13439 @item 2, complex
13440 Enable complex filter. This will slightly less reduce twitter and moire
13441 but better retain detail and subjective sharpness impression.
13442
13443 @end table
13444 @end table
13445
13446 @section kerndeint
13447
13448 Deinterlace input video by applying Donald Graft's adaptive kernel
13449 deinterling. Work on interlaced parts of a video to produce
13450 progressive frames.
13451
13452 The description of the accepted parameters follows.
13453
13454 @table @option
13455 @item thresh
13456 Set the threshold which affects the filter's tolerance when
13457 determining if a pixel line must be processed. It must be an integer
13458 in the range [0,255] and defaults to 10. A value of 0 will result in
13459 applying the process on every pixels.
13460
13461 @item map
13462 Paint pixels exceeding the threshold value to white if set to 1.
13463 Default is 0.
13464
13465 @item order
13466 Set the fields order. Swap fields if set to 1, leave fields alone if
13467 0. Default is 0.
13468
13469 @item sharp
13470 Enable additional sharpening if set to 1. Default is 0.
13471
13472 @item twoway
13473 Enable twoway sharpening if set to 1. Default is 0.
13474 @end table
13475
13476 @subsection Examples
13477
13478 @itemize
13479 @item
13480 Apply default values:
13481 @example
13482 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
13483 @end example
13484
13485 @item
13486 Enable additional sharpening:
13487 @example
13488 kerndeint=sharp=1
13489 @end example
13490
13491 @item
13492 Paint processed pixels in white:
13493 @example
13494 kerndeint=map=1
13495 @end example
13496 @end itemize
13497
13498 @section kirsch
13499 Apply kirsch operator to input video stream.
13500
13501 The filter accepts the following option:
13502
13503 @table @option
13504 @item planes
13505 Set which planes will be processed, unprocessed planes will be copied.
13506 By default value 0xf, all planes will be processed.
13507
13508 @item scale
13509 Set value which will be multiplied with filtered result.
13510
13511 @item delta
13512 Set value which will be added to filtered result.
13513 @end table
13514
13515 @subsection Commands
13516
13517 This filter supports the all above options as @ref{commands}.
13518
13519 @section lagfun
13520
13521 Slowly update darker pixels.
13522
13523 This filter makes short flashes of light appear longer.
13524 This filter accepts the following options:
13525
13526 @table @option
13527 @item decay
13528 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
13529
13530 @item planes
13531 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
13532 @end table
13533
13534 @subsection Commands
13535
13536 This filter supports the all above options as @ref{commands}.
13537
13538 @section lenscorrection
13539
13540 Correct radial lens distortion
13541
13542 This filter can be used to correct for radial distortion as can result from the use
13543 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
13544 one can use tools available for example as part of opencv or simply trial-and-error.
13545 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
13546 and extract the k1 and k2 coefficients from the resulting matrix.
13547
13548 Note that effectively the same filter is available in the open-source tools Krita and
13549 Digikam from the KDE project.
13550
13551 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
13552 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
13553 brightness distribution, so you may want to use both filters together in certain
13554 cases, though you will have to take care of ordering, i.e. whether vignetting should
13555 be applied before or after lens correction.
13556
13557 @subsection Options
13558
13559 The filter accepts the following options:
13560
13561 @table @option
13562 @item cx
13563 Relative x-coordinate of the focal point of the image, and thereby the center of the
13564 distortion. This value has a range [0,1] and is expressed as fractions of the image
13565 width. Default is 0.5.
13566 @item cy
13567 Relative y-coordinate of the focal point of the image, and thereby the center of the
13568 distortion. This value has a range [0,1] and is expressed as fractions of the image
13569 height. Default is 0.5.
13570 @item k1
13571 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
13572 no correction. Default is 0.
13573 @item k2
13574 Coefficient of the double quadratic correction term. This value has a range [-1,1].
13575 0 means no correction. Default is 0.
13576 @item i
13577 Set interpolation type. Can be @code{nearest} or @code{bilinear}.
13578 Default is @code{nearest}.
13579 @item fc
13580 Specify the color of the unmapped pixels. For the syntax of this option,
13581 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
13582 manual,ffmpeg-utils}. Default color is @code{black@@0}.
13583 @end table
13584
13585 The formula that generates the correction is:
13586
13587 @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)
13588
13589 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
13590 distances from the focal point in the source and target images, respectively.
13591
13592 @subsection Commands
13593
13594 This filter supports the all above options as @ref{commands}.
13595
13596 @section lensfun
13597
13598 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
13599
13600 The @code{lensfun} filter requires the camera make, camera model, and lens model
13601 to apply the lens correction. The filter will load the lensfun database and
13602 query it to find the corresponding camera and lens entries in the database. As
13603 long as these entries can be found with the given options, the filter can
13604 perform corrections on frames. Note that incomplete strings will result in the
13605 filter choosing the best match with the given options, and the filter will
13606 output the chosen camera and lens models (logged with level "info"). You must
13607 provide the make, camera model, and lens model as they are required.
13608
13609 The filter accepts the following options:
13610
13611 @table @option
13612 @item make
13613 The make of the camera (for example, "Canon"). This option is required.
13614
13615 @item model
13616 The model of the camera (for example, "Canon EOS 100D"). This option is
13617 required.
13618
13619 @item lens_model
13620 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
13621 option is required.
13622
13623 @item mode
13624 The type of correction to apply. The following values are valid options:
13625
13626 @table @samp
13627 @item vignetting
13628 Enables fixing lens vignetting.
13629
13630 @item geometry
13631 Enables fixing lens geometry. This is the default.
13632
13633 @item subpixel
13634 Enables fixing chromatic aberrations.
13635
13636 @item vig_geo
13637 Enables fixing lens vignetting and lens geometry.
13638
13639 @item vig_subpixel
13640 Enables fixing lens vignetting and chromatic aberrations.
13641
13642 @item distortion
13643 Enables fixing both lens geometry and chromatic aberrations.
13644
13645 @item all
13646 Enables all possible corrections.
13647
13648 @end table
13649 @item focal_length
13650 The focal length of the image/video (zoom; expected constant for video). For
13651 example, a 18--55mm lens has focal length range of [18--55], so a value in that
13652 range should be chosen when using that lens. Default 18.
13653
13654 @item aperture
13655 The aperture of the image/video (expected constant for video). Note that
13656 aperture is only used for vignetting correction. Default 3.5.
13657
13658 @item focus_distance
13659 The focus distance of the image/video (expected constant for video). Note that
13660 focus distance is only used for vignetting and only slightly affects the
13661 vignetting correction process. If unknown, leave it at the default value (which
13662 is 1000).
13663
13664 @item scale
13665 The scale factor which is applied after transformation. After correction the
13666 video is no longer necessarily rectangular. This parameter controls how much of
13667 the resulting image is visible. The value 0 means that a value will be chosen
13668 automatically such that there is little or no unmapped area in the output
13669 image. 1.0 means that no additional scaling is done. Lower values may result
13670 in more of the corrected image being visible, while higher values may avoid
13671 unmapped areas in the output.
13672
13673 @item target_geometry
13674 The target geometry of the output image/video. The following values are valid
13675 options:
13676
13677 @table @samp
13678 @item rectilinear (default)
13679 @item fisheye
13680 @item panoramic
13681 @item equirectangular
13682 @item fisheye_orthographic
13683 @item fisheye_stereographic
13684 @item fisheye_equisolid
13685 @item fisheye_thoby
13686 @end table
13687 @item reverse
13688 Apply the reverse of image correction (instead of correcting distortion, apply
13689 it).
13690
13691 @item interpolation
13692 The type of interpolation used when correcting distortion. The following values
13693 are valid options:
13694
13695 @table @samp
13696 @item nearest
13697 @item linear (default)
13698 @item lanczos
13699 @end table
13700 @end table
13701
13702 @subsection Examples
13703
13704 @itemize
13705 @item
13706 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
13707 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
13708 aperture of "8.0".
13709
13710 @example
13711 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
13712 @end example
13713
13714 @item
13715 Apply the same as before, but only for the first 5 seconds of video.
13716
13717 @example
13718 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
13719 @end example
13720
13721 @end itemize
13722
13723 @section libvmaf
13724
13725 Obtain the VMAF (Video Multi-Method Assessment Fusion)
13726 score between two input videos.
13727
13728 The obtained VMAF score is printed through the logging system.
13729
13730 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
13731 After installing the library it can be enabled using:
13732 @code{./configure --enable-libvmaf}.
13733 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
13734
13735 The filter has following options:
13736
13737 @table @option
13738 @item model_path
13739 Set the model path which is to be used for SVM.
13740 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
13741
13742 @item log_path
13743 Set the file path to be used to store logs.
13744
13745 @item log_fmt
13746 Set the format of the log file (csv, json or xml).
13747
13748 @item enable_transform
13749 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
13750 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
13751 Default value: @code{false}
13752
13753 @item phone_model
13754 Invokes the phone model which will generate VMAF scores higher than in the
13755 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
13756 Default value: @code{false}
13757
13758 @item psnr
13759 Enables computing psnr along with vmaf.
13760 Default value: @code{false}
13761
13762 @item ssim
13763 Enables computing ssim along with vmaf.
13764 Default value: @code{false}
13765
13766 @item ms_ssim
13767 Enables computing ms_ssim along with vmaf.
13768 Default value: @code{false}
13769
13770 @item pool
13771 Set the pool method to be used for computing vmaf.
13772 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
13773
13774 @item n_threads
13775 Set number of threads to be used when computing vmaf.
13776 Default value: @code{0}, which makes use of all available logical processors.
13777
13778 @item n_subsample
13779 Set interval for frame subsampling used when computing vmaf.
13780 Default value: @code{1}
13781
13782 @item enable_conf_interval
13783 Enables confidence interval.
13784 Default value: @code{false}
13785 @end table
13786
13787 This filter also supports the @ref{framesync} options.
13788
13789 @subsection Examples
13790 @itemize
13791 @item
13792 On the below examples the input file @file{main.mpg} being processed is
13793 compared with the reference file @file{ref.mpg}.
13794
13795 @example
13796 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
13797 @end example
13798
13799 @item
13800 Example with options:
13801 @example
13802 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
13803 @end example
13804
13805 @item
13806 Example with options and different containers:
13807 @example
13808 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 -
13809 @end example
13810 @end itemize
13811
13812 @section limiter
13813
13814 Limits the pixel components values to the specified range [min, max].
13815
13816 The filter accepts the following options:
13817
13818 @table @option
13819 @item min
13820 Lower bound. Defaults to the lowest allowed value for the input.
13821
13822 @item max
13823 Upper bound. Defaults to the highest allowed value for the input.
13824
13825 @item planes
13826 Specify which planes will be processed. Defaults to all available.
13827 @end table
13828
13829 @subsection Commands
13830
13831 This filter supports the all above options as @ref{commands}.
13832
13833 @section loop
13834
13835 Loop video frames.
13836
13837 The filter accepts the following options:
13838
13839 @table @option
13840 @item loop
13841 Set the number of loops. Setting this value to -1 will result in infinite loops.
13842 Default is 0.
13843
13844 @item size
13845 Set maximal size in number of frames. Default is 0.
13846
13847 @item start
13848 Set first frame of loop. Default is 0.
13849 @end table
13850
13851 @subsection Examples
13852
13853 @itemize
13854 @item
13855 Loop single first frame infinitely:
13856 @example
13857 loop=loop=-1:size=1:start=0
13858 @end example
13859
13860 @item
13861 Loop single first frame 10 times:
13862 @example
13863 loop=loop=10:size=1:start=0
13864 @end example
13865
13866 @item
13867 Loop 10 first frames 5 times:
13868 @example
13869 loop=loop=5:size=10:start=0
13870 @end example
13871 @end itemize
13872
13873 @section lut1d
13874
13875 Apply a 1D LUT to an input video.
13876
13877 The filter accepts the following options:
13878
13879 @table @option
13880 @item file
13881 Set the 1D LUT file name.
13882
13883 Currently supported formats:
13884 @table @samp
13885 @item cube
13886 Iridas
13887 @item csp
13888 cineSpace
13889 @end table
13890
13891 @item interp
13892 Select interpolation mode.
13893
13894 Available values are:
13895
13896 @table @samp
13897 @item nearest
13898 Use values from the nearest defined point.
13899 @item linear
13900 Interpolate values using the linear interpolation.
13901 @item cosine
13902 Interpolate values using the cosine interpolation.
13903 @item cubic
13904 Interpolate values using the cubic interpolation.
13905 @item spline
13906 Interpolate values using the spline interpolation.
13907 @end table
13908 @end table
13909
13910 @anchor{lut3d}
13911 @section lut3d
13912
13913 Apply a 3D LUT to an input video.
13914
13915 The filter accepts the following options:
13916
13917 @table @option
13918 @item file
13919 Set the 3D LUT file name.
13920
13921 Currently supported formats:
13922 @table @samp
13923 @item 3dl
13924 AfterEffects
13925 @item cube
13926 Iridas
13927 @item dat
13928 DaVinci
13929 @item m3d
13930 Pandora
13931 @item csp
13932 cineSpace
13933 @end table
13934 @item interp
13935 Select interpolation mode.
13936
13937 Available values are:
13938
13939 @table @samp
13940 @item nearest
13941 Use values from the nearest defined point.
13942 @item trilinear
13943 Interpolate values using the 8 points defining a cube.
13944 @item tetrahedral
13945 Interpolate values using a tetrahedron.
13946 @item pyramid
13947 Interpolate values using a pyramid.
13948 @item prism
13949 Interpolate values using a prism.
13950 @end table
13951 @end table
13952
13953 @section lumakey
13954
13955 Turn certain luma values into transparency.
13956
13957 The filter accepts the following options:
13958
13959 @table @option
13960 @item threshold
13961 Set the luma which will be used as base for transparency.
13962 Default value is @code{0}.
13963
13964 @item tolerance
13965 Set the range of luma values to be keyed out.
13966 Default value is @code{0.01}.
13967
13968 @item softness
13969 Set the range of softness. Default value is @code{0}.
13970 Use this to control gradual transition from zero to full transparency.
13971 @end table
13972
13973 @subsection Commands
13974 This filter supports same @ref{commands} as options.
13975 The command accepts the same syntax of the corresponding option.
13976
13977 If the specified expression is not valid, it is kept at its current
13978 value.
13979
13980 @section lut, lutrgb, lutyuv
13981
13982 Compute a look-up table for binding each pixel component input value
13983 to an output value, and apply it to the input video.
13984
13985 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
13986 to an RGB input video.
13987
13988 These filters accept the following parameters:
13989 @table @option
13990 @item c0
13991 set first pixel component expression
13992 @item c1
13993 set second pixel component expression
13994 @item c2
13995 set third pixel component expression
13996 @item c3
13997 set fourth pixel component expression, corresponds to the alpha component
13998
13999 @item r
14000 set red component expression
14001 @item g
14002 set green component expression
14003 @item b
14004 set blue component expression
14005 @item a
14006 alpha component expression
14007
14008 @item y
14009 set Y/luminance component expression
14010 @item u
14011 set U/Cb component expression
14012 @item v
14013 set V/Cr component expression
14014 @end table
14015
14016 Each of them specifies the expression to use for computing the lookup table for
14017 the corresponding pixel component values.
14018
14019 The exact component associated to each of the @var{c*} options depends on the
14020 format in input.
14021
14022 The @var{lut} filter requires either YUV or RGB pixel formats in input,
14023 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
14024
14025 The expressions can contain the following constants and functions:
14026
14027 @table @option
14028 @item w
14029 @item h
14030 The input width and height.
14031
14032 @item val
14033 The input value for the pixel component.
14034
14035 @item clipval
14036 The input value, clipped to the @var{minval}-@var{maxval} range.
14037
14038 @item maxval
14039 The maximum value for the pixel component.
14040
14041 @item minval
14042 The minimum value for the pixel component.
14043
14044 @item negval
14045 The negated value for the pixel component value, clipped to the
14046 @var{minval}-@var{maxval} range; it corresponds to the expression
14047 "maxval-clipval+minval".
14048
14049 @item clip(val)
14050 The computed value in @var{val}, clipped to the
14051 @var{minval}-@var{maxval} range.
14052
14053 @item gammaval(gamma)
14054 The computed gamma correction value of the pixel component value,
14055 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
14056 expression
14057 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
14058
14059 @end table
14060
14061 All expressions default to "val".
14062
14063 @subsection Examples
14064
14065 @itemize
14066 @item
14067 Negate input video:
14068 @example
14069 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
14070 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
14071 @end example
14072
14073 The above is the same as:
14074 @example
14075 lutrgb="r=negval:g=negval:b=negval"
14076 lutyuv="y=negval:u=negval:v=negval"
14077 @end example
14078
14079 @item
14080 Negate luminance:
14081 @example
14082 lutyuv=y=negval
14083 @end example
14084
14085 @item
14086 Remove chroma components, turning the video into a graytone image:
14087 @example
14088 lutyuv="u=128:v=128"
14089 @end example
14090
14091 @item
14092 Apply a luma burning effect:
14093 @example
14094 lutyuv="y=2*val"
14095 @end example
14096
14097 @item
14098 Remove green and blue components:
14099 @example
14100 lutrgb="g=0:b=0"
14101 @end example
14102
14103 @item
14104 Set a constant alpha channel value on input:
14105 @example
14106 format=rgba,lutrgb=a="maxval-minval/2"
14107 @end example
14108
14109 @item
14110 Correct luminance gamma by a factor of 0.5:
14111 @example
14112 lutyuv=y=gammaval(0.5)
14113 @end example
14114
14115 @item
14116 Discard least significant bits of luma:
14117 @example
14118 lutyuv=y='bitand(val, 128+64+32)'
14119 @end example
14120
14121 @item
14122 Technicolor like effect:
14123 @example
14124 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
14125 @end example
14126 @end itemize
14127
14128 @section lut2, tlut2
14129
14130 The @code{lut2} filter takes two input streams and outputs one
14131 stream.
14132
14133 The @code{tlut2} (time lut2) filter takes two consecutive frames
14134 from one single stream.
14135
14136 This filter accepts the following parameters:
14137 @table @option
14138 @item c0
14139 set first pixel component expression
14140 @item c1
14141 set second pixel component expression
14142 @item c2
14143 set third pixel component expression
14144 @item c3
14145 set fourth pixel component expression, corresponds to the alpha component
14146
14147 @item d
14148 set output bit depth, only available for @code{lut2} filter. By default is 0,
14149 which means bit depth is automatically picked from first input format.
14150 @end table
14151
14152 The @code{lut2} filter also supports the @ref{framesync} options.
14153
14154 Each of them specifies the expression to use for computing the lookup table for
14155 the corresponding pixel component values.
14156
14157 The exact component associated to each of the @var{c*} options depends on the
14158 format in inputs.
14159
14160 The expressions can contain the following constants:
14161
14162 @table @option
14163 @item w
14164 @item h
14165 The input width and height.
14166
14167 @item x
14168 The first input value for the pixel component.
14169
14170 @item y
14171 The second input value for the pixel component.
14172
14173 @item bdx
14174 The first input video bit depth.
14175
14176 @item bdy
14177 The second input video bit depth.
14178 @end table
14179
14180 All expressions default to "x".
14181
14182 @subsection Examples
14183
14184 @itemize
14185 @item
14186 Highlight differences between two RGB video streams:
14187 @example
14188 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)'
14189 @end example
14190
14191 @item
14192 Highlight differences between two YUV video streams:
14193 @example
14194 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)'
14195 @end example
14196
14197 @item
14198 Show max difference between two video streams:
14199 @example
14200 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)))'
14201 @end example
14202 @end itemize
14203
14204 @section maskedclamp
14205
14206 Clamp the first input stream with the second input and third input stream.
14207
14208 Returns the value of first stream to be between second input
14209 stream - @code{undershoot} and third input stream + @code{overshoot}.
14210
14211 This filter accepts the following options:
14212 @table @option
14213 @item undershoot
14214 Default value is @code{0}.
14215
14216 @item overshoot
14217 Default value is @code{0}.
14218
14219 @item planes
14220 Set which planes will be processed as bitmap, unprocessed planes will be
14221 copied from first stream.
14222 By default value 0xf, all planes will be processed.
14223 @end table
14224
14225 @subsection Commands
14226
14227 This filter supports the all above options as @ref{commands}.
14228
14229 @section maskedmax
14230
14231 Merge the second and third input stream into output stream using absolute differences
14232 between second input stream and first input stream and absolute difference between
14233 third input stream and first input stream. The picked value will be from second input
14234 stream if second absolute difference is greater than first one or from third input stream
14235 otherwise.
14236
14237 This filter accepts the following options:
14238 @table @option
14239 @item planes
14240 Set which planes will be processed as bitmap, unprocessed planes will be
14241 copied from first stream.
14242 By default value 0xf, all planes will be processed.
14243 @end table
14244
14245 @subsection Commands
14246
14247 This filter supports the all above options as @ref{commands}.
14248
14249 @section maskedmerge
14250
14251 Merge the first input stream with the second input stream using per pixel
14252 weights in the third input stream.
14253
14254 A value of 0 in the third stream pixel component means that pixel component
14255 from first stream is returned unchanged, while maximum value (eg. 255 for
14256 8-bit videos) means that pixel component from second stream is returned
14257 unchanged. Intermediate values define the amount of merging between both
14258 input stream's pixel components.
14259
14260 This filter accepts the following options:
14261 @table @option
14262 @item planes
14263 Set which planes will be processed as bitmap, unprocessed planes will be
14264 copied from first stream.
14265 By default value 0xf, all planes will be processed.
14266 @end table
14267
14268 @subsection Commands
14269
14270 This filter supports the all above options as @ref{commands}.
14271
14272 @section maskedmin
14273
14274 Merge the second and third input stream into output stream using absolute differences
14275 between second input stream and first input stream and absolute difference between
14276 third input stream and first input stream. The picked value will be from second input
14277 stream if second absolute difference is less than first one or from third input stream
14278 otherwise.
14279
14280 This filter accepts the following options:
14281 @table @option
14282 @item planes
14283 Set which planes will be processed as bitmap, unprocessed planes will be
14284 copied from first stream.
14285 By default value 0xf, all planes will be processed.
14286 @end table
14287
14288 @subsection Commands
14289
14290 This filter supports the all above options as @ref{commands}.
14291
14292 @section maskedthreshold
14293 Pick pixels comparing absolute difference of two video streams with fixed
14294 threshold.
14295
14296 If absolute difference between pixel component of first and second video
14297 stream is equal or lower than user supplied threshold than pixel component
14298 from first video stream is picked, otherwise pixel component from second
14299 video stream is picked.
14300
14301 This filter accepts the following options:
14302 @table @option
14303 @item threshold
14304 Set threshold used when picking pixels from absolute difference from two input
14305 video streams.
14306
14307 @item planes
14308 Set which planes will be processed as bitmap, unprocessed planes will be
14309 copied from second stream.
14310 By default value 0xf, all planes will be processed.
14311 @end table
14312
14313 @subsection Commands
14314
14315 This filter supports the all above options as @ref{commands}.
14316
14317 @section maskfun
14318 Create mask from input video.
14319
14320 For example it is useful to create motion masks after @code{tblend} filter.
14321
14322 This filter accepts the following options:
14323
14324 @table @option
14325 @item low
14326 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
14327
14328 @item high
14329 Set high threshold. Any pixel component higher than this value will be set to max value
14330 allowed for current pixel format.
14331
14332 @item planes
14333 Set planes to filter, by default all available planes are filtered.
14334
14335 @item fill
14336 Fill all frame pixels with this value.
14337
14338 @item sum
14339 Set max average pixel value for frame. If sum of all pixel components is higher that this
14340 average, output frame will be completely filled with value set by @var{fill} option.
14341 Typically useful for scene changes when used in combination with @code{tblend} filter.
14342 @end table
14343
14344 @section mcdeint
14345
14346 Apply motion-compensation deinterlacing.
14347
14348 It needs one field per frame as input and must thus be used together
14349 with yadif=1/3 or equivalent.
14350
14351 This filter accepts the following options:
14352 @table @option
14353 @item mode
14354 Set the deinterlacing mode.
14355
14356 It accepts one of the following values:
14357 @table @samp
14358 @item fast
14359 @item medium
14360 @item slow
14361 use iterative motion estimation
14362 @item extra_slow
14363 like @samp{slow}, but use multiple reference frames.
14364 @end table
14365 Default value is @samp{fast}.
14366
14367 @item parity
14368 Set the picture field parity assumed for the input video. It must be
14369 one of the following values:
14370
14371 @table @samp
14372 @item 0, tff
14373 assume top field first
14374 @item 1, bff
14375 assume bottom field first
14376 @end table
14377
14378 Default value is @samp{bff}.
14379
14380 @item qp
14381 Set per-block quantization parameter (QP) used by the internal
14382 encoder.
14383
14384 Higher values should result in a smoother motion vector field but less
14385 optimal individual vectors. Default value is 1.
14386 @end table
14387
14388 @section median
14389
14390 Pick median pixel from certain rectangle defined by radius.
14391
14392 This filter accepts the following options:
14393
14394 @table @option
14395 @item radius
14396 Set horizontal radius size. Default value is @code{1}.
14397 Allowed range is integer from 1 to 127.
14398
14399 @item planes
14400 Set which planes to process. Default is @code{15}, which is all available planes.
14401
14402 @item radiusV
14403 Set vertical radius size. Default value is @code{0}.
14404 Allowed range is integer from 0 to 127.
14405 If it is 0, value will be picked from horizontal @code{radius} option.
14406
14407 @item percentile
14408 Set median percentile. Default value is @code{0.5}.
14409 Default value of @code{0.5} will pick always median values, while @code{0} will pick
14410 minimum values, and @code{1} maximum values.
14411 @end table
14412
14413 @subsection Commands
14414 This filter supports same @ref{commands} as options.
14415 The command accepts the same syntax of the corresponding option.
14416
14417 If the specified expression is not valid, it is kept at its current
14418 value.
14419
14420 @section mergeplanes
14421
14422 Merge color channel components from several video streams.
14423
14424 The filter accepts up to 4 input streams, and merge selected input
14425 planes to the output video.
14426
14427 This filter accepts the following options:
14428 @table @option
14429 @item mapping
14430 Set input to output plane mapping. Default is @code{0}.
14431
14432 The mappings is specified as a bitmap. It should be specified as a
14433 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
14434 mapping for the first plane of the output stream. 'A' sets the number of
14435 the input stream to use (from 0 to 3), and 'a' the plane number of the
14436 corresponding input to use (from 0 to 3). The rest of the mappings is
14437 similar, 'Bb' describes the mapping for the output stream second
14438 plane, 'Cc' describes the mapping for the output stream third plane and
14439 'Dd' describes the mapping for the output stream fourth plane.
14440
14441 @item format
14442 Set output pixel format. Default is @code{yuva444p}.
14443 @end table
14444
14445 @subsection Examples
14446
14447 @itemize
14448 @item
14449 Merge three gray video streams of same width and height into single video stream:
14450 @example
14451 [a0][a1][a2]mergeplanes=0x001020:yuv444p
14452 @end example
14453
14454 @item
14455 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
14456 @example
14457 [a0][a1]mergeplanes=0x00010210:yuva444p
14458 @end example
14459
14460 @item
14461 Swap Y and A plane in yuva444p stream:
14462 @example
14463 format=yuva444p,mergeplanes=0x03010200:yuva444p
14464 @end example
14465
14466 @item
14467 Swap U and V plane in yuv420p stream:
14468 @example
14469 format=yuv420p,mergeplanes=0x000201:yuv420p
14470 @end example
14471
14472 @item
14473 Cast a rgb24 clip to yuv444p:
14474 @example
14475 format=rgb24,mergeplanes=0x000102:yuv444p
14476 @end example
14477 @end itemize
14478
14479 @section mestimate
14480
14481 Estimate and export motion vectors using block matching algorithms.
14482 Motion vectors are stored in frame side data to be used by other filters.
14483
14484 This filter accepts the following options:
14485 @table @option
14486 @item method
14487 Specify the motion estimation method. Accepts one of the following values:
14488
14489 @table @samp
14490 @item esa
14491 Exhaustive search algorithm.
14492 @item tss
14493 Three step search algorithm.
14494 @item tdls
14495 Two dimensional logarithmic search algorithm.
14496 @item ntss
14497 New three step search algorithm.
14498 @item fss
14499 Four step search algorithm.
14500 @item ds
14501 Diamond search algorithm.
14502 @item hexbs
14503 Hexagon-based search algorithm.
14504 @item epzs
14505 Enhanced predictive zonal search algorithm.
14506 @item umh
14507 Uneven multi-hexagon search algorithm.
14508 @end table
14509 Default value is @samp{esa}.
14510
14511 @item mb_size
14512 Macroblock size. Default @code{16}.
14513
14514 @item search_param
14515 Search parameter. Default @code{7}.
14516 @end table
14517
14518 @section midequalizer
14519
14520 Apply Midway Image Equalization effect using two video streams.
14521
14522 Midway Image Equalization adjusts a pair of images to have the same
14523 histogram, while maintaining their dynamics as much as possible. It's
14524 useful for e.g. matching exposures from a pair of stereo cameras.
14525
14526 This filter has two inputs and one output, which must be of same pixel format, but
14527 may be of different sizes. The output of filter is first input adjusted with
14528 midway histogram of both inputs.
14529
14530 This filter accepts the following option:
14531
14532 @table @option
14533 @item planes
14534 Set which planes to process. Default is @code{15}, which is all available planes.
14535 @end table
14536
14537 @section minterpolate
14538
14539 Convert the video to specified frame rate using motion interpolation.
14540
14541 This filter accepts the following options:
14542 @table @option
14543 @item fps
14544 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}.
14545
14546 @item mi_mode
14547 Motion interpolation mode. Following values are accepted:
14548 @table @samp
14549 @item dup
14550 Duplicate previous or next frame for interpolating new ones.
14551 @item blend
14552 Blend source frames. Interpolated frame is mean of previous and next frames.
14553 @item mci
14554 Motion compensated interpolation. Following options are effective when this mode is selected:
14555
14556 @table @samp
14557 @item mc_mode
14558 Motion compensation mode. Following values are accepted:
14559 @table @samp
14560 @item obmc
14561 Overlapped block motion compensation.
14562 @item aobmc
14563 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
14564 @end table
14565 Default mode is @samp{obmc}.
14566
14567 @item me_mode
14568 Motion estimation mode. Following values are accepted:
14569 @table @samp
14570 @item bidir
14571 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
14572 @item bilat
14573 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
14574 @end table
14575 Default mode is @samp{bilat}.
14576
14577 @item me
14578 The algorithm to be used for motion estimation. Following values are accepted:
14579 @table @samp
14580 @item esa
14581 Exhaustive search algorithm.
14582 @item tss
14583 Three step search algorithm.
14584 @item tdls
14585 Two dimensional logarithmic search algorithm.
14586 @item ntss
14587 New three step search algorithm.
14588 @item fss
14589 Four step search algorithm.
14590 @item ds
14591 Diamond search algorithm.
14592 @item hexbs
14593 Hexagon-based search algorithm.
14594 @item epzs
14595 Enhanced predictive zonal search algorithm.
14596 @item umh
14597 Uneven multi-hexagon search algorithm.
14598 @end table
14599 Default algorithm is @samp{epzs}.
14600
14601 @item mb_size
14602 Macroblock size. Default @code{16}.
14603
14604 @item search_param
14605 Motion estimation search parameter. Default @code{32}.
14606
14607 @item vsbmc
14608 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).
14609 @end table
14610 @end table
14611
14612 @item scd
14613 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:
14614 @table @samp
14615 @item none
14616 Disable scene change detection.
14617 @item fdiff
14618 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
14619 @end table
14620 Default method is @samp{fdiff}.
14621
14622 @item scd_threshold
14623 Scene change detection threshold. Default is @code{10.}.
14624 @end table
14625
14626 @section mix
14627
14628 Mix several video input streams into one video stream.
14629
14630 A description of the accepted options follows.
14631
14632 @table @option
14633 @item nb_inputs
14634 The number of inputs. If unspecified, it defaults to 2.
14635
14636 @item weights
14637 Specify weight of each input video stream as sequence.
14638 Each weight is separated by space. If number of weights
14639 is smaller than number of @var{frames} last specified
14640 weight will be used for all remaining unset weights.
14641
14642 @item scale
14643 Specify scale, if it is set it will be multiplied with sum
14644 of each weight multiplied with pixel values to give final destination
14645 pixel value. By default @var{scale} is auto scaled to sum of weights.
14646
14647 @item duration
14648 Specify how end of stream is determined.
14649 @table @samp
14650 @item longest
14651 The duration of the longest input. (default)
14652
14653 @item shortest
14654 The duration of the shortest input.
14655
14656 @item first
14657 The duration of the first input.
14658 @end table
14659 @end table
14660
14661 @section mpdecimate
14662
14663 Drop frames that do not differ greatly from the previous frame in
14664 order to reduce frame rate.
14665
14666 The main use of this filter is for very-low-bitrate encoding
14667 (e.g. streaming over dialup modem), but it could in theory be used for
14668 fixing movies that were inverse-telecined incorrectly.
14669
14670 A description of the accepted options follows.
14671
14672 @table @option
14673 @item max
14674 Set the maximum number of consecutive frames which can be dropped (if
14675 positive), or the minimum interval between dropped frames (if
14676 negative). If the value is 0, the frame is dropped disregarding the
14677 number of previous sequentially dropped frames.
14678
14679 Default value is 0.
14680
14681 @item hi
14682 @item lo
14683 @item frac
14684 Set the dropping threshold values.
14685
14686 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
14687 represent actual pixel value differences, so a threshold of 64
14688 corresponds to 1 unit of difference for each pixel, or the same spread
14689 out differently over the block.
14690
14691 A frame is a candidate for dropping if no 8x8 blocks differ by more
14692 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
14693 meaning the whole image) differ by more than a threshold of @option{lo}.
14694
14695 Default value for @option{hi} is 64*12, default value for @option{lo} is
14696 64*5, and default value for @option{frac} is 0.33.
14697 @end table
14698
14699
14700 @section negate
14701
14702 Negate (invert) the input video.
14703
14704 It accepts the following option:
14705
14706 @table @option
14707
14708 @item negate_alpha
14709 With value 1, it negates the alpha component, if present. Default value is 0.
14710 @end table
14711
14712 @anchor{nlmeans}
14713 @section nlmeans
14714
14715 Denoise frames using Non-Local Means algorithm.
14716
14717 Each pixel is adjusted by looking for other pixels with similar contexts. This
14718 context similarity is defined by comparing their surrounding patches of size
14719 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
14720 around the pixel.
14721
14722 Note that the research area defines centers for patches, which means some
14723 patches will be made of pixels outside that research area.
14724
14725 The filter accepts the following options.
14726
14727 @table @option
14728 @item s
14729 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
14730
14731 @item p
14732 Set patch size. Default is 7. Must be odd number in range [0, 99].
14733
14734 @item pc
14735 Same as @option{p} but for chroma planes.
14736
14737 The default value is @var{0} and means automatic.
14738
14739 @item r
14740 Set research size. Default is 15. Must be odd number in range [0, 99].
14741
14742 @item rc
14743 Same as @option{r} but for chroma planes.
14744
14745 The default value is @var{0} and means automatic.
14746 @end table
14747
14748 @section nnedi
14749
14750 Deinterlace video using neural network edge directed interpolation.
14751
14752 This filter accepts the following options:
14753
14754 @table @option
14755 @item weights
14756 Mandatory option, without binary file filter can not work.
14757 Currently file can be found here:
14758 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
14759
14760 @item deint
14761 Set which frames to deinterlace, by default it is @code{all}.
14762 Can be @code{all} or @code{interlaced}.
14763
14764 @item field
14765 Set mode of operation.
14766
14767 Can be one of the following:
14768
14769 @table @samp
14770 @item af
14771 Use frame flags, both fields.
14772 @item a
14773 Use frame flags, single field.
14774 @item t
14775 Use top field only.
14776 @item b
14777 Use bottom field only.
14778 @item tf
14779 Use both fields, top first.
14780 @item bf
14781 Use both fields, bottom first.
14782 @end table
14783
14784 @item planes
14785 Set which planes to process, by default filter process all frames.
14786
14787 @item nsize
14788 Set size of local neighborhood around each pixel, used by the predictor neural
14789 network.
14790
14791 Can be one of the following:
14792
14793 @table @samp
14794 @item s8x6
14795 @item s16x6
14796 @item s32x6
14797 @item s48x6
14798 @item s8x4
14799 @item s16x4
14800 @item s32x4
14801 @end table
14802
14803 @item nns
14804 Set the number of neurons in predictor neural network.
14805 Can be one of the following:
14806
14807 @table @samp
14808 @item n16
14809 @item n32
14810 @item n64
14811 @item n128
14812 @item n256
14813 @end table
14814
14815 @item qual
14816 Controls the number of different neural network predictions that are blended
14817 together to compute the final output value. Can be @code{fast}, default or
14818 @code{slow}.
14819
14820 @item etype
14821 Set which set of weights to use in the predictor.
14822 Can be one of the following:
14823
14824 @table @samp
14825 @item a, abs
14826 weights trained to minimize absolute error
14827 @item s, mse
14828 weights trained to minimize squared error
14829 @end table
14830
14831 @item pscrn
14832 Controls whether or not the prescreener neural network is used to decide
14833 which pixels should be processed by the predictor neural network and which
14834 can be handled by simple cubic interpolation.
14835 The prescreener is trained to know whether cubic interpolation will be
14836 sufficient for a pixel or whether it should be predicted by the predictor nn.
14837 The computational complexity of the prescreener nn is much less than that of
14838 the predictor nn. Since most pixels can be handled by cubic interpolation,
14839 using the prescreener generally results in much faster processing.
14840 The prescreener is pretty accurate, so the difference between using it and not
14841 using it is almost always unnoticeable.
14842
14843 Can be one of the following:
14844
14845 @table @samp
14846 @item none
14847 @item original
14848 @item new
14849 @item new2
14850 @item new3
14851 @end table
14852
14853 Default is @code{new}.
14854 @end table
14855
14856 @subsection Commands
14857 This filter supports same @ref{commands} as options, excluding @var{weights} option.
14858
14859 @section noformat
14860
14861 Force libavfilter not to use any of the specified pixel formats for the
14862 input to the next filter.
14863
14864 It accepts the following parameters:
14865 @table @option
14866
14867 @item pix_fmts
14868 A '|'-separated list of pixel format names, such as
14869 pix_fmts=yuv420p|monow|rgb24".
14870
14871 @end table
14872
14873 @subsection Examples
14874
14875 @itemize
14876 @item
14877 Force libavfilter to use a format different from @var{yuv420p} for the
14878 input to the vflip filter:
14879 @example
14880 noformat=pix_fmts=yuv420p,vflip
14881 @end example
14882
14883 @item
14884 Convert the input video to any of the formats not contained in the list:
14885 @example
14886 noformat=yuv420p|yuv444p|yuv410p
14887 @end example
14888 @end itemize
14889
14890 @section noise
14891
14892 Add noise on video input frame.
14893
14894 The filter accepts the following options:
14895
14896 @table @option
14897 @item all_seed
14898 @item c0_seed
14899 @item c1_seed
14900 @item c2_seed
14901 @item c3_seed
14902 Set noise seed for specific pixel component or all pixel components in case
14903 of @var{all_seed}. Default value is @code{123457}.
14904
14905 @item all_strength, alls
14906 @item c0_strength, c0s
14907 @item c1_strength, c1s
14908 @item c2_strength, c2s
14909 @item c3_strength, c3s
14910 Set noise strength for specific pixel component or all pixel components in case
14911 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
14912
14913 @item all_flags, allf
14914 @item c0_flags, c0f
14915 @item c1_flags, c1f
14916 @item c2_flags, c2f
14917 @item c3_flags, c3f
14918 Set pixel component flags or set flags for all components if @var{all_flags}.
14919 Available values for component flags are:
14920 @table @samp
14921 @item a
14922 averaged temporal noise (smoother)
14923 @item p
14924 mix random noise with a (semi)regular pattern
14925 @item t
14926 temporal noise (noise pattern changes between frames)
14927 @item u
14928 uniform noise (gaussian otherwise)
14929 @end table
14930 @end table
14931
14932 @subsection Examples
14933
14934 Add temporal and uniform noise to input video:
14935 @example
14936 noise=alls=20:allf=t+u
14937 @end example
14938
14939 @section normalize
14940
14941 Normalize RGB video (aka histogram stretching, contrast stretching).
14942 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
14943
14944 For each channel of each frame, the filter computes the input range and maps
14945 it linearly to the user-specified output range. The output range defaults
14946 to the full dynamic range from pure black to pure white.
14947
14948 Temporal smoothing can be used on the input range to reduce flickering (rapid
14949 changes in brightness) caused when small dark or bright objects enter or leave
14950 the scene. This is similar to the auto-exposure (automatic gain control) on a
14951 video camera, and, like a video camera, it may cause a period of over- or
14952 under-exposure of the video.
14953
14954 The R,G,B channels can be normalized independently, which may cause some
14955 color shifting, or linked together as a single channel, which prevents
14956 color shifting. Linked normalization preserves hue. Independent normalization
14957 does not, so it can be used to remove some color casts. Independent and linked
14958 normalization can be combined in any ratio.
14959
14960 The normalize filter accepts the following options:
14961
14962 @table @option
14963 @item blackpt
14964 @item whitept
14965 Colors which define the output range. The minimum input value is mapped to
14966 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
14967 The defaults are black and white respectively. Specifying white for
14968 @var{blackpt} and black for @var{whitept} will give color-inverted,
14969 normalized video. Shades of grey can be used to reduce the dynamic range
14970 (contrast). Specifying saturated colors here can create some interesting
14971 effects.
14972
14973 @item smoothing
14974 The number of previous frames to use for temporal smoothing. The input range
14975 of each channel is smoothed using a rolling average over the current frame
14976 and the @var{smoothing} previous frames. The default is 0 (no temporal
14977 smoothing).
14978
14979 @item independence
14980 Controls the ratio of independent (color shifting) channel normalization to
14981 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
14982 independent. Defaults to 1.0 (fully independent).
14983
14984 @item strength
14985 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
14986 expensive no-op. Defaults to 1.0 (full strength).
14987
14988 @end table
14989
14990 @subsection Commands
14991 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
14992 The command accepts the same syntax of the corresponding option.
14993
14994 If the specified expression is not valid, it is kept at its current
14995 value.
14996
14997 @subsection Examples
14998
14999 Stretch video contrast to use the full dynamic range, with no temporal
15000 smoothing; may flicker depending on the source content:
15001 @example
15002 normalize=blackpt=black:whitept=white:smoothing=0
15003 @end example
15004
15005 As above, but with 50 frames of temporal smoothing; flicker should be
15006 reduced, depending on the source content:
15007 @example
15008 normalize=blackpt=black:whitept=white:smoothing=50
15009 @end example
15010
15011 As above, but with hue-preserving linked channel normalization:
15012 @example
15013 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
15014 @end example
15015
15016 As above, but with half strength:
15017 @example
15018 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
15019 @end example
15020
15021 Map the darkest input color to red, the brightest input color to cyan:
15022 @example
15023 normalize=blackpt=red:whitept=cyan
15024 @end example
15025
15026 @section null
15027
15028 Pass the video source unchanged to the output.
15029
15030 @section ocr
15031 Optical Character Recognition
15032
15033 This filter uses Tesseract for optical character recognition. To enable
15034 compilation of this filter, you need to configure FFmpeg with
15035 @code{--enable-libtesseract}.
15036
15037 It accepts the following options:
15038
15039 @table @option
15040 @item datapath
15041 Set datapath to tesseract data. Default is to use whatever was
15042 set at installation.
15043
15044 @item language
15045 Set language, default is "eng".
15046
15047 @item whitelist
15048 Set character whitelist.
15049
15050 @item blacklist
15051 Set character blacklist.
15052 @end table
15053
15054 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
15055 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
15056
15057 @section ocv
15058
15059 Apply a video transform using libopencv.
15060
15061 To enable this filter, install the libopencv library and headers and
15062 configure FFmpeg with @code{--enable-libopencv}.
15063
15064 It accepts the following parameters:
15065
15066 @table @option
15067
15068 @item filter_name
15069 The name of the libopencv filter to apply.
15070
15071 @item filter_params
15072 The parameters to pass to the libopencv filter. If not specified, the default
15073 values are assumed.
15074
15075 @end table
15076
15077 Refer to the official libopencv documentation for more precise
15078 information:
15079 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
15080
15081 Several libopencv filters are supported; see the following subsections.
15082
15083 @anchor{dilate}
15084 @subsection dilate
15085
15086 Dilate an image by using a specific structuring element.
15087 It corresponds to the libopencv function @code{cvDilate}.
15088
15089 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
15090
15091 @var{struct_el} represents a structuring element, and has the syntax:
15092 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
15093
15094 @var{cols} and @var{rows} represent the number of columns and rows of
15095 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
15096 point, and @var{shape} the shape for the structuring element. @var{shape}
15097 must be "rect", "cross", "ellipse", or "custom".
15098
15099 If the value for @var{shape} is "custom", it must be followed by a
15100 string of the form "=@var{filename}". The file with name
15101 @var{filename} is assumed to represent a binary image, with each
15102 printable character corresponding to a bright pixel. When a custom
15103 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
15104 or columns and rows of the read file are assumed instead.
15105
15106 The default value for @var{struct_el} is "3x3+0x0/rect".
15107
15108 @var{nb_iterations} specifies the number of times the transform is
15109 applied to the image, and defaults to 1.
15110
15111 Some examples:
15112 @example
15113 # Use the default values
15114 ocv=dilate
15115
15116 # Dilate using a structuring element with a 5x5 cross, iterating two times
15117 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
15118
15119 # Read the shape from the file diamond.shape, iterating two times.
15120 # The file diamond.shape may contain a pattern of characters like this
15121 #   *
15122 #  ***
15123 # *****
15124 #  ***
15125 #   *
15126 # The specified columns and rows are ignored
15127 # but the anchor point coordinates are not
15128 ocv=dilate:0x0+2x2/custom=diamond.shape|2
15129 @end example
15130
15131 @subsection erode
15132
15133 Erode an image by using a specific structuring element.
15134 It corresponds to the libopencv function @code{cvErode}.
15135
15136 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
15137 with the same syntax and semantics as the @ref{dilate} filter.
15138
15139 @subsection smooth
15140
15141 Smooth the input video.
15142
15143 The filter takes the following parameters:
15144 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
15145
15146 @var{type} is the type of smooth filter to apply, and must be one of
15147 the following values: "blur", "blur_no_scale", "median", "gaussian",
15148 or "bilateral". The default value is "gaussian".
15149
15150 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
15151 depends on the smooth type. @var{param1} and
15152 @var{param2} accept integer positive values or 0. @var{param3} and
15153 @var{param4} accept floating point values.
15154
15155 The default value for @var{param1} is 3. The default value for the
15156 other parameters is 0.
15157
15158 These parameters correspond to the parameters assigned to the
15159 libopencv function @code{cvSmooth}.
15160
15161 @section oscilloscope
15162
15163 2D Video Oscilloscope.
15164
15165 Useful to measure spatial impulse, step responses, chroma delays, etc.
15166
15167 It accepts the following parameters:
15168
15169 @table @option
15170 @item x
15171 Set scope center x position.
15172
15173 @item y
15174 Set scope center y position.
15175
15176 @item s
15177 Set scope size, relative to frame diagonal.
15178
15179 @item t
15180 Set scope tilt/rotation.
15181
15182 @item o
15183 Set trace opacity.
15184
15185 @item tx
15186 Set trace center x position.
15187
15188 @item ty
15189 Set trace center y position.
15190
15191 @item tw
15192 Set trace width, relative to width of frame.
15193
15194 @item th
15195 Set trace height, relative to height of frame.
15196
15197 @item c
15198 Set which components to trace. By default it traces first three components.
15199
15200 @item g
15201 Draw trace grid. By default is enabled.
15202
15203 @item st
15204 Draw some statistics. By default is enabled.
15205
15206 @item sc
15207 Draw scope. By default is enabled.
15208 @end table
15209
15210 @subsection Commands
15211 This filter supports same @ref{commands} as options.
15212 The command accepts the same syntax of the corresponding option.
15213
15214 If the specified expression is not valid, it is kept at its current
15215 value.
15216
15217 @subsection Examples
15218
15219 @itemize
15220 @item
15221 Inspect full first row of video frame.
15222 @example
15223 oscilloscope=x=0.5:y=0:s=1
15224 @end example
15225
15226 @item
15227 Inspect full last row of video frame.
15228 @example
15229 oscilloscope=x=0.5:y=1:s=1
15230 @end example
15231
15232 @item
15233 Inspect full 5th line of video frame of height 1080.
15234 @example
15235 oscilloscope=x=0.5:y=5/1080:s=1
15236 @end example
15237
15238 @item
15239 Inspect full last column of video frame.
15240 @example
15241 oscilloscope=x=1:y=0.5:s=1:t=1
15242 @end example
15243
15244 @end itemize
15245
15246 @anchor{overlay}
15247 @section overlay
15248
15249 Overlay one video on top of another.
15250
15251 It takes two inputs and has one output. The first input is the "main"
15252 video on which the second input is overlaid.
15253
15254 It accepts the following parameters:
15255
15256 A description of the accepted options follows.
15257
15258 @table @option
15259 @item x
15260 @item y
15261 Set the expression for the x and y coordinates of the overlaid video
15262 on the main video. Default value is "0" for both expressions. In case
15263 the expression is invalid, it is set to a huge value (meaning that the
15264 overlay will not be displayed within the output visible area).
15265
15266 @item eof_action
15267 See @ref{framesync}.
15268
15269 @item eval
15270 Set when the expressions for @option{x}, and @option{y} are evaluated.
15271
15272 It accepts the following values:
15273 @table @samp
15274 @item init
15275 only evaluate expressions once during the filter initialization or
15276 when a command is processed
15277
15278 @item frame
15279 evaluate expressions for each incoming frame
15280 @end table
15281
15282 Default value is @samp{frame}.
15283
15284 @item shortest
15285 See @ref{framesync}.
15286
15287 @item format
15288 Set the format for the output video.
15289
15290 It accepts the following values:
15291 @table @samp
15292 @item yuv420
15293 force YUV420 output
15294
15295 @item yuv420p10
15296 force YUV420p10 output
15297
15298 @item yuv422
15299 force YUV422 output
15300
15301 @item yuv422p10
15302 force YUV422p10 output
15303
15304 @item yuv444
15305 force YUV444 output
15306
15307 @item rgb
15308 force packed RGB output
15309
15310 @item gbrp
15311 force planar RGB output
15312
15313 @item auto
15314 automatically pick format
15315 @end table
15316
15317 Default value is @samp{yuv420}.
15318
15319 @item repeatlast
15320 See @ref{framesync}.
15321
15322 @item alpha
15323 Set format of alpha of the overlaid video, it can be @var{straight} or
15324 @var{premultiplied}. Default is @var{straight}.
15325 @end table
15326
15327 The @option{x}, and @option{y} expressions can contain the following
15328 parameters.
15329
15330 @table @option
15331 @item main_w, W
15332 @item main_h, H
15333 The main input width and height.
15334
15335 @item overlay_w, w
15336 @item overlay_h, h
15337 The overlay input width and height.
15338
15339 @item x
15340 @item y
15341 The computed values for @var{x} and @var{y}. They are evaluated for
15342 each new frame.
15343
15344 @item hsub
15345 @item vsub
15346 horizontal and vertical chroma subsample values of the output
15347 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
15348 @var{vsub} is 1.
15349
15350 @item n
15351 the number of input frame, starting from 0
15352
15353 @item pos
15354 the position in the file of the input frame, NAN if unknown
15355
15356 @item t
15357 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
15358
15359 @end table
15360
15361 This filter also supports the @ref{framesync} options.
15362
15363 Note that the @var{n}, @var{pos}, @var{t} variables are available only
15364 when evaluation is done @emph{per frame}, and will evaluate to NAN
15365 when @option{eval} is set to @samp{init}.
15366
15367 Be aware that frames are taken from each input video in timestamp
15368 order, hence, if their initial timestamps differ, it is a good idea
15369 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
15370 have them begin in the same zero timestamp, as the example for
15371 the @var{movie} filter does.
15372
15373 You can chain together more overlays but you should test the
15374 efficiency of such approach.
15375
15376 @subsection Commands
15377
15378 This filter supports the following commands:
15379 @table @option
15380 @item x
15381 @item y
15382 Modify the x and y of the overlay input.
15383 The command accepts the same syntax of the corresponding option.
15384
15385 If the specified expression is not valid, it is kept at its current
15386 value.
15387 @end table
15388
15389 @subsection Examples
15390
15391 @itemize
15392 @item
15393 Draw the overlay at 10 pixels from the bottom right corner of the main
15394 video:
15395 @example
15396 overlay=main_w-overlay_w-10:main_h-overlay_h-10
15397 @end example
15398
15399 Using named options the example above becomes:
15400 @example
15401 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
15402 @end example
15403
15404 @item
15405 Insert a transparent PNG logo in the bottom left corner of the input,
15406 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
15407 @example
15408 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
15409 @end example
15410
15411 @item
15412 Insert 2 different transparent PNG logos (second logo on bottom
15413 right corner) using the @command{ffmpeg} tool:
15414 @example
15415 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
15416 @end example
15417
15418 @item
15419 Add a transparent color layer on top of the main video; @code{WxH}
15420 must specify the size of the main input to the overlay filter:
15421 @example
15422 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
15423 @end example
15424
15425 @item
15426 Play an original video and a filtered version (here with the deshake
15427 filter) side by side using the @command{ffplay} tool:
15428 @example
15429 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
15430 @end example
15431
15432 The above command is the same as:
15433 @example
15434 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
15435 @end example
15436
15437 @item
15438 Make a sliding overlay appearing from the left to the right top part of the
15439 screen starting since time 2:
15440 @example
15441 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
15442 @end example
15443
15444 @item
15445 Compose output by putting two input videos side to side:
15446 @example
15447 ffmpeg -i left.avi -i right.avi -filter_complex "
15448 nullsrc=size=200x100 [background];
15449 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
15450 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
15451 [background][left]       overlay=shortest=1       [background+left];
15452 [background+left][right] overlay=shortest=1:x=100 [left+right]
15453 "
15454 @end example
15455
15456 @item
15457 Mask 10-20 seconds of a video by applying the delogo filter to a section
15458 @example
15459 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
15460 -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]'
15461 masked.avi
15462 @end example
15463
15464 @item
15465 Chain several overlays in cascade:
15466 @example
15467 nullsrc=s=200x200 [bg];
15468 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
15469 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
15470 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
15471 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
15472 [in3] null,       [mid2] overlay=100:100 [out0]
15473 @end example
15474
15475 @end itemize
15476
15477 @anchor{overlay_cuda}
15478 @section overlay_cuda
15479
15480 Overlay one video on top of another.
15481
15482 This is the CUDA variant of the @ref{overlay} filter.
15483 It only accepts CUDA frames. The underlying input pixel formats have to match.
15484
15485 It takes two inputs and has one output. The first input is the "main"
15486 video on which the second input is overlaid.
15487
15488 It accepts the following parameters:
15489
15490 @table @option
15491 @item x
15492 @item y
15493 Set the x and y coordinates of the overlaid video on the main video.
15494 Default value is "0" for both expressions.
15495
15496 @item eof_action
15497 See @ref{framesync}.
15498
15499 @item shortest
15500 See @ref{framesync}.
15501
15502 @item repeatlast
15503 See @ref{framesync}.
15504
15505 @end table
15506
15507 This filter also supports the @ref{framesync} options.
15508
15509 @section owdenoise
15510
15511 Apply Overcomplete Wavelet denoiser.
15512
15513 The filter accepts the following options:
15514
15515 @table @option
15516 @item depth
15517 Set depth.
15518
15519 Larger depth values will denoise lower frequency components more, but
15520 slow down filtering.
15521
15522 Must be an int in the range 8-16, default is @code{8}.
15523
15524 @item luma_strength, ls
15525 Set luma strength.
15526
15527 Must be a double value in the range 0-1000, default is @code{1.0}.
15528
15529 @item chroma_strength, cs
15530 Set chroma strength.
15531
15532 Must be a double value in the range 0-1000, default is @code{1.0}.
15533 @end table
15534
15535 @anchor{pad}
15536 @section pad
15537
15538 Add paddings to the input image, and place the original input at the
15539 provided @var{x}, @var{y} coordinates.
15540
15541 It accepts the following parameters:
15542
15543 @table @option
15544 @item width, w
15545 @item height, h
15546 Specify an expression for the size of the output image with the
15547 paddings added. If the value for @var{width} or @var{height} is 0, the
15548 corresponding input size is used for the output.
15549
15550 The @var{width} expression can reference the value set by the
15551 @var{height} expression, and vice versa.
15552
15553 The default value of @var{width} and @var{height} is 0.
15554
15555 @item x
15556 @item y
15557 Specify the offsets to place the input image at within the padded area,
15558 with respect to the top/left border of the output image.
15559
15560 The @var{x} expression can reference the value set by the @var{y}
15561 expression, and vice versa.
15562
15563 The default value of @var{x} and @var{y} is 0.
15564
15565 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
15566 so the input image is centered on the padded area.
15567
15568 @item color
15569 Specify the color of the padded area. For the syntax of this option,
15570 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
15571 manual,ffmpeg-utils}.
15572
15573 The default value of @var{color} is "black".
15574
15575 @item eval
15576 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
15577
15578 It accepts the following values:
15579
15580 @table @samp
15581 @item init
15582 Only evaluate expressions once during the filter initialization or when
15583 a command is processed.
15584
15585 @item frame
15586 Evaluate expressions for each incoming frame.
15587
15588 @end table
15589
15590 Default value is @samp{init}.
15591
15592 @item aspect
15593 Pad to aspect instead to a resolution.
15594
15595 @end table
15596
15597 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
15598 options are expressions containing the following constants:
15599
15600 @table @option
15601 @item in_w
15602 @item in_h
15603 The input video width and height.
15604
15605 @item iw
15606 @item ih
15607 These are the same as @var{in_w} and @var{in_h}.
15608
15609 @item out_w
15610 @item out_h
15611 The output width and height (the size of the padded area), as
15612 specified by the @var{width} and @var{height} expressions.
15613
15614 @item ow
15615 @item oh
15616 These are the same as @var{out_w} and @var{out_h}.
15617
15618 @item x
15619 @item y
15620 The x and y offsets as specified by the @var{x} and @var{y}
15621 expressions, or NAN if not yet specified.
15622
15623 @item a
15624 same as @var{iw} / @var{ih}
15625
15626 @item sar
15627 input sample aspect ratio
15628
15629 @item dar
15630 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
15631
15632 @item hsub
15633 @item vsub
15634 The horizontal and vertical chroma subsample values. For example for the
15635 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15636 @end table
15637
15638 @subsection Examples
15639
15640 @itemize
15641 @item
15642 Add paddings with the color "violet" to the input video. The output video
15643 size is 640x480, and the top-left corner of the input video is placed at
15644 column 0, row 40
15645 @example
15646 pad=640:480:0:40:violet
15647 @end example
15648
15649 The example above is equivalent to the following command:
15650 @example
15651 pad=width=640:height=480:x=0:y=40:color=violet
15652 @end example
15653
15654 @item
15655 Pad the input to get an output with dimensions increased by 3/2,
15656 and put the input video at the center of the padded area:
15657 @example
15658 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
15659 @end example
15660
15661 @item
15662 Pad the input to get a squared output with size equal to the maximum
15663 value between the input width and height, and put the input video at
15664 the center of the padded area:
15665 @example
15666 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
15667 @end example
15668
15669 @item
15670 Pad the input to get a final w/h ratio of 16:9:
15671 @example
15672 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
15673 @end example
15674
15675 @item
15676 In case of anamorphic video, in order to set the output display aspect
15677 correctly, it is necessary to use @var{sar} in the expression,
15678 according to the relation:
15679 @example
15680 (ih * X / ih) * sar = output_dar
15681 X = output_dar / sar
15682 @end example
15683
15684 Thus the previous example needs to be modified to:
15685 @example
15686 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
15687 @end example
15688
15689 @item
15690 Double the output size and put the input video in the bottom-right
15691 corner of the output padded area:
15692 @example
15693 pad="2*iw:2*ih:ow-iw:oh-ih"
15694 @end example
15695 @end itemize
15696
15697 @anchor{palettegen}
15698 @section palettegen
15699
15700 Generate one palette for a whole video stream.
15701
15702 It accepts the following options:
15703
15704 @table @option
15705 @item max_colors
15706 Set the maximum number of colors to quantize in the palette.
15707 Note: the palette will still contain 256 colors; the unused palette entries
15708 will be black.
15709
15710 @item reserve_transparent
15711 Create a palette of 255 colors maximum and reserve the last one for
15712 transparency. Reserving the transparency color is useful for GIF optimization.
15713 If not set, the maximum of colors in the palette will be 256. You probably want
15714 to disable this option for a standalone image.
15715 Set by default.
15716
15717 @item transparency_color
15718 Set the color that will be used as background for transparency.
15719
15720 @item stats_mode
15721 Set statistics mode.
15722
15723 It accepts the following values:
15724 @table @samp
15725 @item full
15726 Compute full frame histograms.
15727 @item diff
15728 Compute histograms only for the part that differs from previous frame. This
15729 might be relevant to give more importance to the moving part of your input if
15730 the background is static.
15731 @item single
15732 Compute new histogram for each frame.
15733 @end table
15734
15735 Default value is @var{full}.
15736 @end table
15737
15738 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
15739 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
15740 color quantization of the palette. This information is also visible at
15741 @var{info} logging level.
15742
15743 @subsection Examples
15744
15745 @itemize
15746 @item
15747 Generate a representative palette of a given video using @command{ffmpeg}:
15748 @example
15749 ffmpeg -i input.mkv -vf palettegen palette.png
15750 @end example
15751 @end itemize
15752
15753 @section paletteuse
15754
15755 Use a palette to downsample an input video stream.
15756
15757 The filter takes two inputs: one video stream and a palette. The palette must
15758 be a 256 pixels image.
15759
15760 It accepts the following options:
15761
15762 @table @option
15763 @item dither
15764 Select dithering mode. Available algorithms are:
15765 @table @samp
15766 @item bayer
15767 Ordered 8x8 bayer dithering (deterministic)
15768 @item heckbert
15769 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
15770 Note: this dithering is sometimes considered "wrong" and is included as a
15771 reference.
15772 @item floyd_steinberg
15773 Floyd and Steingberg dithering (error diffusion)
15774 @item sierra2
15775 Frankie Sierra dithering v2 (error diffusion)
15776 @item sierra2_4a
15777 Frankie Sierra dithering v2 "Lite" (error diffusion)
15778 @end table
15779
15780 Default is @var{sierra2_4a}.
15781
15782 @item bayer_scale
15783 When @var{bayer} dithering is selected, this option defines the scale of the
15784 pattern (how much the crosshatch pattern is visible). A low value means more
15785 visible pattern for less banding, and higher value means less visible pattern
15786 at the cost of more banding.
15787
15788 The option must be an integer value in the range [0,5]. Default is @var{2}.
15789
15790 @item diff_mode
15791 If set, define the zone to process
15792
15793 @table @samp
15794 @item rectangle
15795 Only the changing rectangle will be reprocessed. This is similar to GIF
15796 cropping/offsetting compression mechanism. This option can be useful for speed
15797 if only a part of the image is changing, and has use cases such as limiting the
15798 scope of the error diffusal @option{dither} to the rectangle that bounds the
15799 moving scene (it leads to more deterministic output if the scene doesn't change
15800 much, and as a result less moving noise and better GIF compression).
15801 @end table
15802
15803 Default is @var{none}.
15804
15805 @item new
15806 Take new palette for each output frame.
15807
15808 @item alpha_threshold
15809 Sets the alpha threshold for transparency. Alpha values above this threshold
15810 will be treated as completely opaque, and values below this threshold will be
15811 treated as completely transparent.
15812
15813 The option must be an integer value in the range [0,255]. Default is @var{128}.
15814 @end table
15815
15816 @subsection Examples
15817
15818 @itemize
15819 @item
15820 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
15821 using @command{ffmpeg}:
15822 @example
15823 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
15824 @end example
15825 @end itemize
15826
15827 @section perspective
15828
15829 Correct perspective of video not recorded perpendicular to the screen.
15830
15831 A description of the accepted parameters follows.
15832
15833 @table @option
15834 @item x0
15835 @item y0
15836 @item x1
15837 @item y1
15838 @item x2
15839 @item y2
15840 @item x3
15841 @item y3
15842 Set coordinates expression for top left, top right, bottom left and bottom right corners.
15843 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
15844 If the @code{sense} option is set to @code{source}, then the specified points will be sent
15845 to the corners of the destination. If the @code{sense} option is set to @code{destination},
15846 then the corners of the source will be sent to the specified coordinates.
15847
15848 The expressions can use the following variables:
15849
15850 @table @option
15851 @item W
15852 @item H
15853 the width and height of video frame.
15854 @item in
15855 Input frame count.
15856 @item on
15857 Output frame count.
15858 @end table
15859
15860 @item interpolation
15861 Set interpolation for perspective correction.
15862
15863 It accepts the following values:
15864 @table @samp
15865 @item linear
15866 @item cubic
15867 @end table
15868
15869 Default value is @samp{linear}.
15870
15871 @item sense
15872 Set interpretation of coordinate options.
15873
15874 It accepts the following values:
15875 @table @samp
15876 @item 0, source
15877
15878 Send point in the source specified by the given coordinates to
15879 the corners of the destination.
15880
15881 @item 1, destination
15882
15883 Send the corners of the source to the point in the destination specified
15884 by the given coordinates.
15885
15886 Default value is @samp{source}.
15887 @end table
15888
15889 @item eval
15890 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
15891
15892 It accepts the following values:
15893 @table @samp
15894 @item init
15895 only evaluate expressions once during the filter initialization or
15896 when a command is processed
15897
15898 @item frame
15899 evaluate expressions for each incoming frame
15900 @end table
15901
15902 Default value is @samp{init}.
15903 @end table
15904
15905 @section phase
15906
15907 Delay interlaced video by one field time so that the field order changes.
15908
15909 The intended use is to fix PAL movies that have been captured with the
15910 opposite field order to the film-to-video transfer.
15911
15912 A description of the accepted parameters follows.
15913
15914 @table @option
15915 @item mode
15916 Set phase mode.
15917
15918 It accepts the following values:
15919 @table @samp
15920 @item t
15921 Capture field order top-first, transfer bottom-first.
15922 Filter will delay the bottom field.
15923
15924 @item b
15925 Capture field order bottom-first, transfer top-first.
15926 Filter will delay the top field.
15927
15928 @item p
15929 Capture and transfer with the same field order. This mode only exists
15930 for the documentation of the other options to refer to, but if you
15931 actually select it, the filter will faithfully do nothing.
15932
15933 @item a
15934 Capture field order determined automatically by field flags, transfer
15935 opposite.
15936 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
15937 basis using field flags. If no field information is available,
15938 then this works just like @samp{u}.
15939
15940 @item u
15941 Capture unknown or varying, transfer opposite.
15942 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
15943 analyzing the images and selecting the alternative that produces best
15944 match between the fields.
15945
15946 @item T
15947 Capture top-first, transfer unknown or varying.
15948 Filter selects among @samp{t} and @samp{p} using image analysis.
15949
15950 @item B
15951 Capture bottom-first, transfer unknown or varying.
15952 Filter selects among @samp{b} and @samp{p} using image analysis.
15953
15954 @item A
15955 Capture determined by field flags, transfer unknown or varying.
15956 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
15957 image analysis. If no field information is available, then this works just
15958 like @samp{U}. This is the default mode.
15959
15960 @item U
15961 Both capture and transfer unknown or varying.
15962 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
15963 @end table
15964 @end table
15965
15966 @subsection Commands
15967
15968 This filter supports the all above options as @ref{commands}.
15969
15970 @section photosensitivity
15971 Reduce various flashes in video, so to help users with epilepsy.
15972
15973 It accepts the following options:
15974 @table @option
15975 @item frames, f
15976 Set how many frames to use when filtering. Default is 30.
15977
15978 @item threshold, t
15979 Set detection threshold factor. Default is 1.
15980 Lower is stricter.
15981
15982 @item skip
15983 Set how many pixels to skip when sampling frames. Default is 1.
15984 Allowed range is from 1 to 1024.
15985
15986 @item bypass
15987 Leave frames unchanged. Default is disabled.
15988 @end table
15989
15990 @section pixdesctest
15991
15992 Pixel format descriptor test filter, mainly useful for internal
15993 testing. The output video should be equal to the input video.
15994
15995 For example:
15996 @example
15997 format=monow, pixdesctest
15998 @end example
15999
16000 can be used to test the monowhite pixel format descriptor definition.
16001
16002 @section pixscope
16003
16004 Display sample values of color channels. Mainly useful for checking color
16005 and levels. Minimum supported resolution is 640x480.
16006
16007 The filters accept the following options:
16008
16009 @table @option
16010 @item x
16011 Set scope X position, relative offset on X axis.
16012
16013 @item y
16014 Set scope Y position, relative offset on Y axis.
16015
16016 @item w
16017 Set scope width.
16018
16019 @item h
16020 Set scope height.
16021
16022 @item o
16023 Set window opacity. This window also holds statistics about pixel area.
16024
16025 @item wx
16026 Set window X position, relative offset on X axis.
16027
16028 @item wy
16029 Set window Y position, relative offset on Y axis.
16030 @end table
16031
16032 @section pp
16033
16034 Enable the specified chain of postprocessing subfilters using libpostproc. This
16035 library should be automatically selected with a GPL build (@code{--enable-gpl}).
16036 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
16037 Each subfilter and some options have a short and a long name that can be used
16038 interchangeably, i.e. dr/dering are the same.
16039
16040 The filters accept the following options:
16041
16042 @table @option
16043 @item subfilters
16044 Set postprocessing subfilters string.
16045 @end table
16046
16047 All subfilters share common options to determine their scope:
16048
16049 @table @option
16050 @item a/autoq
16051 Honor the quality commands for this subfilter.
16052
16053 @item c/chrom
16054 Do chrominance filtering, too (default).
16055
16056 @item y/nochrom
16057 Do luminance filtering only (no chrominance).
16058
16059 @item n/noluma
16060 Do chrominance filtering only (no luminance).
16061 @end table
16062
16063 These options can be appended after the subfilter name, separated by a '|'.
16064
16065 Available subfilters are:
16066
16067 @table @option
16068 @item hb/hdeblock[|difference[|flatness]]
16069 Horizontal deblocking filter
16070 @table @option
16071 @item difference
16072 Difference factor where higher values mean more deblocking (default: @code{32}).
16073 @item flatness
16074 Flatness threshold where lower values mean more deblocking (default: @code{39}).
16075 @end table
16076
16077 @item vb/vdeblock[|difference[|flatness]]
16078 Vertical deblocking filter
16079 @table @option
16080 @item difference
16081 Difference factor where higher values mean more deblocking (default: @code{32}).
16082 @item flatness
16083 Flatness threshold where lower values mean more deblocking (default: @code{39}).
16084 @end table
16085
16086 @item ha/hadeblock[|difference[|flatness]]
16087 Accurate horizontal deblocking filter
16088 @table @option
16089 @item difference
16090 Difference factor where higher values mean more deblocking (default: @code{32}).
16091 @item flatness
16092 Flatness threshold where lower values mean more deblocking (default: @code{39}).
16093 @end table
16094
16095 @item va/vadeblock[|difference[|flatness]]
16096 Accurate vertical deblocking filter
16097 @table @option
16098 @item difference
16099 Difference factor where higher values mean more deblocking (default: @code{32}).
16100 @item flatness
16101 Flatness threshold where lower values mean more deblocking (default: @code{39}).
16102 @end table
16103 @end table
16104
16105 The horizontal and vertical deblocking filters share the difference and
16106 flatness values so you cannot set different horizontal and vertical
16107 thresholds.
16108
16109 @table @option
16110 @item h1/x1hdeblock
16111 Experimental horizontal deblocking filter
16112
16113 @item v1/x1vdeblock
16114 Experimental vertical deblocking filter
16115
16116 @item dr/dering
16117 Deringing filter
16118
16119 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
16120 @table @option
16121 @item threshold1
16122 larger -> stronger filtering
16123 @item threshold2
16124 larger -> stronger filtering
16125 @item threshold3
16126 larger -> stronger filtering
16127 @end table
16128
16129 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
16130 @table @option
16131 @item f/fullyrange
16132 Stretch luminance to @code{0-255}.
16133 @end table
16134
16135 @item lb/linblenddeint
16136 Linear blend deinterlacing filter that deinterlaces the given block by
16137 filtering all lines with a @code{(1 2 1)} filter.
16138
16139 @item li/linipoldeint
16140 Linear interpolating deinterlacing filter that deinterlaces the given block by
16141 linearly interpolating every second line.
16142
16143 @item ci/cubicipoldeint
16144 Cubic interpolating deinterlacing filter deinterlaces the given block by
16145 cubically interpolating every second line.
16146
16147 @item md/mediandeint
16148 Median deinterlacing filter that deinterlaces the given block by applying a
16149 median filter to every second line.
16150
16151 @item fd/ffmpegdeint
16152 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
16153 second line with a @code{(-1 4 2 4 -1)} filter.
16154
16155 @item l5/lowpass5
16156 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
16157 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
16158
16159 @item fq/forceQuant[|quantizer]
16160 Overrides the quantizer table from the input with the constant quantizer you
16161 specify.
16162 @table @option
16163 @item quantizer
16164 Quantizer to use
16165 @end table
16166
16167 @item de/default
16168 Default pp filter combination (@code{hb|a,vb|a,dr|a})
16169
16170 @item fa/fast
16171 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
16172
16173 @item ac
16174 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
16175 @end table
16176
16177 @subsection Examples
16178
16179 @itemize
16180 @item
16181 Apply horizontal and vertical deblocking, deringing and automatic
16182 brightness/contrast:
16183 @example
16184 pp=hb/vb/dr/al
16185 @end example
16186
16187 @item
16188 Apply default filters without brightness/contrast correction:
16189 @example
16190 pp=de/-al
16191 @end example
16192
16193 @item
16194 Apply default filters and temporal denoiser:
16195 @example
16196 pp=default/tmpnoise|1|2|3
16197 @end example
16198
16199 @item
16200 Apply deblocking on luminance only, and switch vertical deblocking on or off
16201 automatically depending on available CPU time:
16202 @example
16203 pp=hb|y/vb|a
16204 @end example
16205 @end itemize
16206
16207 @section pp7
16208 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
16209 similar to spp = 6 with 7 point DCT, where only the center sample is
16210 used after IDCT.
16211
16212 The filter accepts the following options:
16213
16214 @table @option
16215 @item qp
16216 Force a constant quantization parameter. It accepts an integer in range
16217 0 to 63. If not set, the filter will use the QP from the video stream
16218 (if available).
16219
16220 @item mode
16221 Set thresholding mode. Available modes are:
16222
16223 @table @samp
16224 @item hard
16225 Set hard thresholding.
16226 @item soft
16227 Set soft thresholding (better de-ringing effect, but likely blurrier).
16228 @item medium
16229 Set medium thresholding (good results, default).
16230 @end table
16231 @end table
16232
16233 @section premultiply
16234 Apply alpha premultiply effect to input video stream using first plane
16235 of second stream as alpha.
16236
16237 Both streams must have same dimensions and same pixel format.
16238
16239 The filter accepts the following option:
16240
16241 @table @option
16242 @item planes
16243 Set which planes will be processed, unprocessed planes will be copied.
16244 By default value 0xf, all planes will be processed.
16245
16246 @item inplace
16247 Do not require 2nd input for processing, instead use alpha plane from input stream.
16248 @end table
16249
16250 @section prewitt
16251 Apply prewitt operator to input video stream.
16252
16253 The filter accepts the following option:
16254
16255 @table @option
16256 @item planes
16257 Set which planes will be processed, unprocessed planes will be copied.
16258 By default value 0xf, all planes will be processed.
16259
16260 @item scale
16261 Set value which will be multiplied with filtered result.
16262
16263 @item delta
16264 Set value which will be added to filtered result.
16265 @end table
16266
16267 @subsection Commands
16268
16269 This filter supports the all above options as @ref{commands}.
16270
16271 @section pseudocolor
16272
16273 Alter frame colors in video with pseudocolors.
16274
16275 This filter accepts the following options:
16276
16277 @table @option
16278 @item c0
16279 set pixel first component expression
16280
16281 @item c1
16282 set pixel second component expression
16283
16284 @item c2
16285 set pixel third component expression
16286
16287 @item c3
16288 set pixel fourth component expression, corresponds to the alpha component
16289
16290 @item i
16291 set component to use as base for altering colors
16292
16293 @item p
16294 Pick one of built-in LUTs. By default is set to none.
16295
16296 Available LUTs:
16297 @table @samp
16298 @item magma
16299 @item inferno
16300 @item plasma
16301 @item viridis
16302 @item turbo
16303 @item cividis
16304 @item range1
16305 @item range2
16306 @end table
16307
16308 @end table
16309
16310 Each of them specifies the expression to use for computing the lookup table for
16311 the corresponding pixel component values.
16312
16313 The expressions can contain the following constants and functions:
16314
16315 @table @option
16316 @item w
16317 @item h
16318 The input width and height.
16319
16320 @item val
16321 The input value for the pixel component.
16322
16323 @item ymin, umin, vmin, amin
16324 The minimum allowed component value.
16325
16326 @item ymax, umax, vmax, amax
16327 The maximum allowed component value.
16328 @end table
16329
16330 All expressions default to "val".
16331
16332 @subsection Commands
16333
16334 This filter supports the all above options as @ref{commands}.
16335
16336 @subsection Examples
16337
16338 @itemize
16339 @item
16340 Change too high luma values to gradient:
16341 @example
16342 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'"
16343 @end example
16344 @end itemize
16345
16346 @section psnr
16347
16348 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
16349 Ratio) between two input videos.
16350
16351 This filter takes in input two input videos, the first input is
16352 considered the "main" source and is passed unchanged to the
16353 output. The second input is used as a "reference" video for computing
16354 the PSNR.
16355
16356 Both video inputs must have the same resolution and pixel format for
16357 this filter to work correctly. Also it assumes that both inputs
16358 have the same number of frames, which are compared one by one.
16359
16360 The obtained average PSNR is printed through the logging system.
16361
16362 The filter stores the accumulated MSE (mean squared error) of each
16363 frame, and at the end of the processing it is averaged across all frames
16364 equally, and the following formula is applied to obtain the PSNR:
16365
16366 @example
16367 PSNR = 10*log10(MAX^2/MSE)
16368 @end example
16369
16370 Where MAX is the average of the maximum values of each component of the
16371 image.
16372
16373 The description of the accepted parameters follows.
16374
16375 @table @option
16376 @item stats_file, f
16377 If specified the filter will use the named file to save the PSNR of
16378 each individual frame. When filename equals "-" the data is sent to
16379 standard output.
16380
16381 @item stats_version
16382 Specifies which version of the stats file format to use. Details of
16383 each format are written below.
16384 Default value is 1.
16385
16386 @item stats_add_max
16387 Determines whether the max value is output to the stats log.
16388 Default value is 0.
16389 Requires stats_version >= 2. If this is set and stats_version < 2,
16390 the filter will return an error.
16391 @end table
16392
16393 This filter also supports the @ref{framesync} options.
16394
16395 The file printed if @var{stats_file} is selected, contains a sequence of
16396 key/value pairs of the form @var{key}:@var{value} for each compared
16397 couple of frames.
16398
16399 If a @var{stats_version} greater than 1 is specified, a header line precedes
16400 the list of per-frame-pair stats, with key value pairs following the frame
16401 format with the following parameters:
16402
16403 @table @option
16404 @item psnr_log_version
16405 The version of the log file format. Will match @var{stats_version}.
16406
16407 @item fields
16408 A comma separated list of the per-frame-pair parameters included in
16409 the log.
16410 @end table
16411
16412 A description of each shown per-frame-pair parameter follows:
16413
16414 @table @option
16415 @item n
16416 sequential number of the input frame, starting from 1
16417
16418 @item mse_avg
16419 Mean Square Error pixel-by-pixel average difference of the compared
16420 frames, averaged over all the image components.
16421
16422 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
16423 Mean Square Error pixel-by-pixel average difference of the compared
16424 frames for the component specified by the suffix.
16425
16426 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
16427 Peak Signal to Noise ratio of the compared frames for the component
16428 specified by the suffix.
16429
16430 @item max_avg, max_y, max_u, max_v
16431 Maximum allowed value for each channel, and average over all
16432 channels.
16433 @end table
16434
16435 @subsection Examples
16436 @itemize
16437 @item
16438 For example:
16439 @example
16440 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
16441 [main][ref] psnr="stats_file=stats.log" [out]
16442 @end example
16443
16444 On this example the input file being processed is compared with the
16445 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
16446 is stored in @file{stats.log}.
16447
16448 @item
16449 Another example with different containers:
16450 @example
16451 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 -
16452 @end example
16453 @end itemize
16454
16455 @anchor{pullup}
16456 @section pullup
16457
16458 Pulldown reversal (inverse telecine) filter, capable of handling mixed
16459 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
16460 content.
16461
16462 The pullup filter is designed to take advantage of future context in making
16463 its decisions. This filter is stateless in the sense that it does not lock
16464 onto a pattern to follow, but it instead looks forward to the following
16465 fields in order to identify matches and rebuild progressive frames.
16466
16467 To produce content with an even framerate, insert the fps filter after
16468 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
16469 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
16470
16471 The filter accepts the following options:
16472
16473 @table @option
16474 @item jl
16475 @item jr
16476 @item jt
16477 @item jb
16478 These options set the amount of "junk" to ignore at the left, right, top, and
16479 bottom of the image, respectively. Left and right are in units of 8 pixels,
16480 while top and bottom are in units of 2 lines.
16481 The default is 8 pixels on each side.
16482
16483 @item sb
16484 Set the strict breaks. Setting this option to 1 will reduce the chances of
16485 filter generating an occasional mismatched frame, but it may also cause an
16486 excessive number of frames to be dropped during high motion sequences.
16487 Conversely, setting it to -1 will make filter match fields more easily.
16488 This may help processing of video where there is slight blurring between
16489 the fields, but may also cause there to be interlaced frames in the output.
16490 Default value is @code{0}.
16491
16492 @item mp
16493 Set the metric plane to use. It accepts the following values:
16494 @table @samp
16495 @item l
16496 Use luma plane.
16497
16498 @item u
16499 Use chroma blue plane.
16500
16501 @item v
16502 Use chroma red plane.
16503 @end table
16504
16505 This option may be set to use chroma plane instead of the default luma plane
16506 for doing filter's computations. This may improve accuracy on very clean
16507 source material, but more likely will decrease accuracy, especially if there
16508 is chroma noise (rainbow effect) or any grayscale video.
16509 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
16510 load and make pullup usable in realtime on slow machines.
16511 @end table
16512
16513 For best results (without duplicated frames in the output file) it is
16514 necessary to change the output frame rate. For example, to inverse
16515 telecine NTSC input:
16516 @example
16517 ffmpeg -i input -vf pullup -r 24000/1001 ...
16518 @end example
16519
16520 @section qp
16521
16522 Change video quantization parameters (QP).
16523
16524 The filter accepts the following option:
16525
16526 @table @option
16527 @item qp
16528 Set expression for quantization parameter.
16529 @end table
16530
16531 The expression is evaluated through the eval API and can contain, among others,
16532 the following constants:
16533
16534 @table @var
16535 @item known
16536 1 if index is not 129, 0 otherwise.
16537
16538 @item qp
16539 Sequential index starting from -129 to 128.
16540 @end table
16541
16542 @subsection Examples
16543
16544 @itemize
16545 @item
16546 Some equation like:
16547 @example
16548 qp=2+2*sin(PI*qp)
16549 @end example
16550 @end itemize
16551
16552 @section random
16553
16554 Flush video frames from internal cache of frames into a random order.
16555 No frame is discarded.
16556 Inspired by @ref{frei0r} nervous filter.
16557
16558 @table @option
16559 @item frames
16560 Set size in number of frames of internal cache, in range from @code{2} to
16561 @code{512}. Default is @code{30}.
16562
16563 @item seed
16564 Set seed for random number generator, must be an integer included between
16565 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
16566 less than @code{0}, the filter will try to use a good random seed on a
16567 best effort basis.
16568 @end table
16569
16570 @section readeia608
16571
16572 Read closed captioning (EIA-608) information from the top lines of a video frame.
16573
16574 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
16575 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
16576 with EIA-608 data (starting from 0). A description of each metadata value follows:
16577
16578 @table @option
16579 @item lavfi.readeia608.X.cc
16580 The two bytes stored as EIA-608 data (printed in hexadecimal).
16581
16582 @item lavfi.readeia608.X.line
16583 The number of the line on which the EIA-608 data was identified and read.
16584 @end table
16585
16586 This filter accepts the following options:
16587
16588 @table @option
16589 @item scan_min
16590 Set the line to start scanning for EIA-608 data. Default is @code{0}.
16591
16592 @item scan_max
16593 Set the line to end scanning for EIA-608 data. Default is @code{29}.
16594
16595 @item spw
16596 Set the ratio of width reserved for sync code detection.
16597 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
16598
16599 @item chp
16600 Enable checking the parity bit. In the event of a parity error, the filter will output
16601 @code{0x00} for that character. Default is false.
16602
16603 @item lp
16604 Lowpass lines prior to further processing. Default is enabled.
16605 @end table
16606
16607 @subsection Commands
16608
16609 This filter supports the all above options as @ref{commands}.
16610
16611 @subsection Examples
16612
16613 @itemize
16614 @item
16615 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
16616 @example
16617 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
16618 @end example
16619 @end itemize
16620
16621 @section readvitc
16622
16623 Read vertical interval timecode (VITC) information from the top lines of a
16624 video frame.
16625
16626 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
16627 timecode value, if a valid timecode has been detected. Further metadata key
16628 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
16629 timecode data has been found or not.
16630
16631 This filter accepts the following options:
16632
16633 @table @option
16634 @item scan_max
16635 Set the maximum number of lines to scan for VITC data. If the value is set to
16636 @code{-1} the full video frame is scanned. Default is @code{45}.
16637
16638 @item thr_b
16639 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
16640 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
16641
16642 @item thr_w
16643 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
16644 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
16645 @end table
16646
16647 @subsection Examples
16648
16649 @itemize
16650 @item
16651 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
16652 draw @code{--:--:--:--} as a placeholder:
16653 @example
16654 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
16655 @end example
16656 @end itemize
16657
16658 @section remap
16659
16660 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
16661
16662 Destination pixel at position (X, Y) will be picked from source (x, y) position
16663 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
16664 value for pixel will be used for destination pixel.
16665
16666 Xmap and Ymap input video streams must be of same dimensions. Output video stream
16667 will have Xmap/Ymap video stream dimensions.
16668 Xmap and Ymap input video streams are 16bit depth, single channel.
16669
16670 @table @option
16671 @item format
16672 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
16673 Default is @code{color}.
16674
16675 @item fill
16676 Specify the color of the unmapped pixels. For the syntax of this option,
16677 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
16678 manual,ffmpeg-utils}. Default color is @code{black}.
16679 @end table
16680
16681 @section removegrain
16682
16683 The removegrain filter is a spatial denoiser for progressive video.
16684
16685 @table @option
16686 @item m0
16687 Set mode for the first plane.
16688
16689 @item m1
16690 Set mode for the second plane.
16691
16692 @item m2
16693 Set mode for the third plane.
16694
16695 @item m3
16696 Set mode for the fourth plane.
16697 @end table
16698
16699 Range of mode is from 0 to 24. Description of each mode follows:
16700
16701 @table @var
16702 @item 0
16703 Leave input plane unchanged. Default.
16704
16705 @item 1
16706 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
16707
16708 @item 2
16709 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
16710
16711 @item 3
16712 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
16713
16714 @item 4
16715 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
16716 This is equivalent to a median filter.
16717
16718 @item 5
16719 Line-sensitive clipping giving the minimal change.
16720
16721 @item 6
16722 Line-sensitive clipping, intermediate.
16723
16724 @item 7
16725 Line-sensitive clipping, intermediate.
16726
16727 @item 8
16728 Line-sensitive clipping, intermediate.
16729
16730 @item 9
16731 Line-sensitive clipping on a line where the neighbours pixels are the closest.
16732
16733 @item 10
16734 Replaces the target pixel with the closest neighbour.
16735
16736 @item 11
16737 [1 2 1] horizontal and vertical kernel blur.
16738
16739 @item 12
16740 Same as mode 11.
16741
16742 @item 13
16743 Bob mode, interpolates top field from the line where the neighbours
16744 pixels are the closest.
16745
16746 @item 14
16747 Bob mode, interpolates bottom field from the line where the neighbours
16748 pixels are the closest.
16749
16750 @item 15
16751 Bob mode, interpolates top field. Same as 13 but with a more complicated
16752 interpolation formula.
16753
16754 @item 16
16755 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
16756 interpolation formula.
16757
16758 @item 17
16759 Clips the pixel with the minimum and maximum of respectively the maximum and
16760 minimum of each pair of opposite neighbour pixels.
16761
16762 @item 18
16763 Line-sensitive clipping using opposite neighbours whose greatest distance from
16764 the current pixel is minimal.
16765
16766 @item 19
16767 Replaces the pixel with the average of its 8 neighbours.
16768
16769 @item 20
16770 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
16771
16772 @item 21
16773 Clips pixels using the averages of opposite neighbour.
16774
16775 @item 22
16776 Same as mode 21 but simpler and faster.
16777
16778 @item 23
16779 Small edge and halo removal, but reputed useless.
16780
16781 @item 24
16782 Similar as 23.
16783 @end table
16784
16785 @section removelogo
16786
16787 Suppress a TV station logo, using an image file to determine which
16788 pixels comprise the logo. It works by filling in the pixels that
16789 comprise the logo with neighboring pixels.
16790
16791 The filter accepts the following options:
16792
16793 @table @option
16794 @item filename, f
16795 Set the filter bitmap file, which can be any image format supported by
16796 libavformat. The width and height of the image file must match those of the
16797 video stream being processed.
16798 @end table
16799
16800 Pixels in the provided bitmap image with a value of zero are not
16801 considered part of the logo, non-zero pixels are considered part of
16802 the logo. If you use white (255) for the logo and black (0) for the
16803 rest, you will be safe. For making the filter bitmap, it is
16804 recommended to take a screen capture of a black frame with the logo
16805 visible, and then using a threshold filter followed by the erode
16806 filter once or twice.
16807
16808 If needed, little splotches can be fixed manually. Remember that if
16809 logo pixels are not covered, the filter quality will be much
16810 reduced. Marking too many pixels as part of the logo does not hurt as
16811 much, but it will increase the amount of blurring needed to cover over
16812 the image and will destroy more information than necessary, and extra
16813 pixels will slow things down on a large logo.
16814
16815 @section repeatfields
16816
16817 This filter uses the repeat_field flag from the Video ES headers and hard repeats
16818 fields based on its value.
16819
16820 @section reverse
16821
16822 Reverse a video clip.
16823
16824 Warning: This filter requires memory to buffer the entire clip, so trimming
16825 is suggested.
16826
16827 @subsection Examples
16828
16829 @itemize
16830 @item
16831 Take the first 5 seconds of a clip, and reverse it.
16832 @example
16833 trim=end=5,reverse
16834 @end example
16835 @end itemize
16836
16837 @section rgbashift
16838 Shift R/G/B/A pixels horizontally and/or vertically.
16839
16840 The filter accepts the following options:
16841 @table @option
16842 @item rh
16843 Set amount to shift red horizontally.
16844 @item rv
16845 Set amount to shift red vertically.
16846 @item gh
16847 Set amount to shift green horizontally.
16848 @item gv
16849 Set amount to shift green vertically.
16850 @item bh
16851 Set amount to shift blue horizontally.
16852 @item bv
16853 Set amount to shift blue vertically.
16854 @item ah
16855 Set amount to shift alpha horizontally.
16856 @item av
16857 Set amount to shift alpha vertically.
16858 @item edge
16859 Set edge mode, can be @var{smear}, default, or @var{warp}.
16860 @end table
16861
16862 @subsection Commands
16863
16864 This filter supports the all above options as @ref{commands}.
16865
16866 @section roberts
16867 Apply roberts cross operator to input video stream.
16868
16869 The filter accepts the following option:
16870
16871 @table @option
16872 @item planes
16873 Set which planes will be processed, unprocessed planes will be copied.
16874 By default value 0xf, all planes will be processed.
16875
16876 @item scale
16877 Set value which will be multiplied with filtered result.
16878
16879 @item delta
16880 Set value which will be added to filtered result.
16881 @end table
16882
16883 @subsection Commands
16884
16885 This filter supports the all above options as @ref{commands}.
16886
16887 @section rotate
16888
16889 Rotate video by an arbitrary angle expressed in radians.
16890
16891 The filter accepts the following options:
16892
16893 A description of the optional parameters follows.
16894 @table @option
16895 @item angle, a
16896 Set an expression for the angle by which to rotate the input video
16897 clockwise, expressed as a number of radians. A negative value will
16898 result in a counter-clockwise rotation. By default it is set to "0".
16899
16900 This expression is evaluated for each frame.
16901
16902 @item out_w, ow
16903 Set the output width expression, default value is "iw".
16904 This expression is evaluated just once during configuration.
16905
16906 @item out_h, oh
16907 Set the output height expression, default value is "ih".
16908 This expression is evaluated just once during configuration.
16909
16910 @item bilinear
16911 Enable bilinear interpolation if set to 1, a value of 0 disables
16912 it. Default value is 1.
16913
16914 @item fillcolor, c
16915 Set the color used to fill the output area not covered by the rotated
16916 image. For the general syntax of this option, check the
16917 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16918 If the special value "none" is selected then no
16919 background is printed (useful for example if the background is never shown).
16920
16921 Default value is "black".
16922 @end table
16923
16924 The expressions for the angle and the output size can contain the
16925 following constants and functions:
16926
16927 @table @option
16928 @item n
16929 sequential number of the input frame, starting from 0. It is always NAN
16930 before the first frame is filtered.
16931
16932 @item t
16933 time in seconds of the input frame, it is set to 0 when the filter is
16934 configured. It is always NAN before the first frame is filtered.
16935
16936 @item hsub
16937 @item vsub
16938 horizontal and vertical chroma subsample values. For example for the
16939 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16940
16941 @item in_w, iw
16942 @item in_h, ih
16943 the input video width and height
16944
16945 @item out_w, ow
16946 @item out_h, oh
16947 the output width and height, that is the size of the padded area as
16948 specified by the @var{width} and @var{height} expressions
16949
16950 @item rotw(a)
16951 @item roth(a)
16952 the minimal width/height required for completely containing the input
16953 video rotated by @var{a} radians.
16954
16955 These are only available when computing the @option{out_w} and
16956 @option{out_h} expressions.
16957 @end table
16958
16959 @subsection Examples
16960
16961 @itemize
16962 @item
16963 Rotate the input by PI/6 radians clockwise:
16964 @example
16965 rotate=PI/6
16966 @end example
16967
16968 @item
16969 Rotate the input by PI/6 radians counter-clockwise:
16970 @example
16971 rotate=-PI/6
16972 @end example
16973
16974 @item
16975 Rotate the input by 45 degrees clockwise:
16976 @example
16977 rotate=45*PI/180
16978 @end example
16979
16980 @item
16981 Apply a constant rotation with period T, starting from an angle of PI/3:
16982 @example
16983 rotate=PI/3+2*PI*t/T
16984 @end example
16985
16986 @item
16987 Make the input video rotation oscillating with a period of T
16988 seconds and an amplitude of A radians:
16989 @example
16990 rotate=A*sin(2*PI/T*t)
16991 @end example
16992
16993 @item
16994 Rotate the video, output size is chosen so that the whole rotating
16995 input video is always completely contained in the output:
16996 @example
16997 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
16998 @end example
16999
17000 @item
17001 Rotate the video, reduce the output size so that no background is ever
17002 shown:
17003 @example
17004 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
17005 @end example
17006 @end itemize
17007
17008 @subsection Commands
17009
17010 The filter supports the following commands:
17011
17012 @table @option
17013 @item a, angle
17014 Set the angle expression.
17015 The command accepts the same syntax of the corresponding option.
17016
17017 If the specified expression is not valid, it is kept at its current
17018 value.
17019 @end table
17020
17021 @section sab
17022
17023 Apply Shape Adaptive Blur.
17024
17025 The filter accepts the following options:
17026
17027 @table @option
17028 @item luma_radius, lr
17029 Set luma blur filter strength, must be a value in range 0.1-4.0, default
17030 value is 1.0. A greater value will result in a more blurred image, and
17031 in slower processing.
17032
17033 @item luma_pre_filter_radius, lpfr
17034 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
17035 value is 1.0.
17036
17037 @item luma_strength, ls
17038 Set luma maximum difference between pixels to still be considered, must
17039 be a value in the 0.1-100.0 range, default value is 1.0.
17040
17041 @item chroma_radius, cr
17042 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
17043 greater value will result in a more blurred image, and in slower
17044 processing.
17045
17046 @item chroma_pre_filter_radius, cpfr
17047 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
17048
17049 @item chroma_strength, cs
17050 Set chroma maximum difference between pixels to still be considered,
17051 must be a value in the -0.9-100.0 range.
17052 @end table
17053
17054 Each chroma option value, if not explicitly specified, is set to the
17055 corresponding luma option value.
17056
17057 @anchor{scale}
17058 @section scale
17059
17060 Scale (resize) the input video, using the libswscale library.
17061
17062 The scale filter forces the output display aspect ratio to be the same
17063 of the input, by changing the output sample aspect ratio.
17064
17065 If the input image format is different from the format requested by
17066 the next filter, the scale filter will convert the input to the
17067 requested format.
17068
17069 @subsection Options
17070 The filter accepts the following options, or any of the options
17071 supported by the libswscale scaler.
17072
17073 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
17074 the complete list of scaler options.
17075
17076 @table @option
17077 @item width, w
17078 @item height, h
17079 Set the output video dimension expression. Default value is the input
17080 dimension.
17081
17082 If the @var{width} or @var{w} value is 0, the input width is used for
17083 the output. If the @var{height} or @var{h} value is 0, the input height
17084 is used for the output.
17085
17086 If one and only one of the values is -n with n >= 1, the scale filter
17087 will use a value that maintains the aspect ratio of the input image,
17088 calculated from the other specified dimension. After that it will,
17089 however, make sure that the calculated dimension is divisible by n and
17090 adjust the value if necessary.
17091
17092 If both values are -n with n >= 1, the behavior will be identical to
17093 both values being set to 0 as previously detailed.
17094
17095 See below for the list of accepted constants for use in the dimension
17096 expression.
17097
17098 @item eval
17099 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
17100
17101 @table @samp
17102 @item init
17103 Only evaluate expressions once during the filter initialization or when a command is processed.
17104
17105 @item frame
17106 Evaluate expressions for each incoming frame.
17107
17108 @end table
17109
17110 Default value is @samp{init}.
17111
17112
17113 @item interl
17114 Set the interlacing mode. It accepts the following values:
17115
17116 @table @samp
17117 @item 1
17118 Force interlaced aware scaling.
17119
17120 @item 0
17121 Do not apply interlaced scaling.
17122
17123 @item -1
17124 Select interlaced aware scaling depending on whether the source frames
17125 are flagged as interlaced or not.
17126 @end table
17127
17128 Default value is @samp{0}.
17129
17130 @item flags
17131 Set libswscale scaling flags. See
17132 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
17133 complete list of values. If not explicitly specified the filter applies
17134 the default flags.
17135
17136
17137 @item param0, param1
17138 Set libswscale input parameters for scaling algorithms that need them. See
17139 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
17140 complete documentation. If not explicitly specified the filter applies
17141 empty parameters.
17142
17143
17144
17145 @item size, s
17146 Set the video size. For the syntax of this option, check the
17147 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17148
17149 @item in_color_matrix
17150 @item out_color_matrix
17151 Set in/output YCbCr color space type.
17152
17153 This allows the autodetected value to be overridden as well as allows forcing
17154 a specific value used for the output and encoder.
17155
17156 If not specified, the color space type depends on the pixel format.
17157
17158 Possible values:
17159
17160 @table @samp
17161 @item auto
17162 Choose automatically.
17163
17164 @item bt709
17165 Format conforming to International Telecommunication Union (ITU)
17166 Recommendation BT.709.
17167
17168 @item fcc
17169 Set color space conforming to the United States Federal Communications
17170 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
17171
17172 @item bt601
17173 @item bt470
17174 @item smpte170m
17175 Set color space conforming to:
17176
17177 @itemize
17178 @item
17179 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
17180
17181 @item
17182 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
17183
17184 @item
17185 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
17186
17187 @end itemize
17188
17189 @item smpte240m
17190 Set color space conforming to SMPTE ST 240:1999.
17191
17192 @item bt2020
17193 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
17194 @end table
17195
17196 @item in_range
17197 @item out_range
17198 Set in/output YCbCr sample range.
17199
17200 This allows the autodetected value to be overridden as well as allows forcing
17201 a specific value used for the output and encoder. If not specified, the
17202 range depends on the pixel format. Possible values:
17203
17204 @table @samp
17205 @item auto/unknown
17206 Choose automatically.
17207
17208 @item jpeg/full/pc
17209 Set full range (0-255 in case of 8-bit luma).
17210
17211 @item mpeg/limited/tv
17212 Set "MPEG" range (16-235 in case of 8-bit luma).
17213 @end table
17214
17215 @item force_original_aspect_ratio
17216 Enable decreasing or increasing output video width or height if necessary to
17217 keep the original aspect ratio. Possible values:
17218
17219 @table @samp
17220 @item disable
17221 Scale the video as specified and disable this feature.
17222
17223 @item decrease
17224 The output video dimensions will automatically be decreased if needed.
17225
17226 @item increase
17227 The output video dimensions will automatically be increased if needed.
17228
17229 @end table
17230
17231 One useful instance of this option is that when you know a specific device's
17232 maximum allowed resolution, you can use this to limit the output video to
17233 that, while retaining the aspect ratio. For example, device A allows
17234 1280x720 playback, and your video is 1920x800. Using this option (set it to
17235 decrease) and specifying 1280x720 to the command line makes the output
17236 1280x533.
17237
17238 Please note that this is a different thing than specifying -1 for @option{w}
17239 or @option{h}, you still need to specify the output resolution for this option
17240 to work.
17241
17242 @item force_divisible_by
17243 Ensures that both the output dimensions, width and height, are divisible by the
17244 given integer when used together with @option{force_original_aspect_ratio}. This
17245 works similar to using @code{-n} in the @option{w} and @option{h} options.
17246
17247 This option respects the value set for @option{force_original_aspect_ratio},
17248 increasing or decreasing the resolution accordingly. The video's aspect ratio
17249 may be slightly modified.
17250
17251 This option can be handy if you need to have a video fit within or exceed
17252 a defined resolution using @option{force_original_aspect_ratio} but also have
17253 encoder restrictions on width or height divisibility.
17254
17255 @end table
17256
17257 The values of the @option{w} and @option{h} options are expressions
17258 containing the following constants:
17259
17260 @table @var
17261 @item in_w
17262 @item in_h
17263 The input width and height
17264
17265 @item iw
17266 @item ih
17267 These are the same as @var{in_w} and @var{in_h}.
17268
17269 @item out_w
17270 @item out_h
17271 The output (scaled) width and height
17272
17273 @item ow
17274 @item oh
17275 These are the same as @var{out_w} and @var{out_h}
17276
17277 @item a
17278 The same as @var{iw} / @var{ih}
17279
17280 @item sar
17281 input sample aspect ratio
17282
17283 @item dar
17284 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
17285
17286 @item hsub
17287 @item vsub
17288 horizontal and vertical input chroma subsample values. For example for the
17289 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17290
17291 @item ohsub
17292 @item ovsub
17293 horizontal and vertical output chroma subsample values. For example for the
17294 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17295
17296 @item n
17297 The (sequential) number of the input frame, starting from 0.
17298 Only available with @code{eval=frame}.
17299
17300 @item t
17301 The presentation timestamp of the input frame, expressed as a number of
17302 seconds. Only available with @code{eval=frame}.
17303
17304 @item pos
17305 The position (byte offset) of the frame in the input stream, or NaN if
17306 this information is unavailable and/or meaningless (for example in case of synthetic video).
17307 Only available with @code{eval=frame}.
17308 @end table
17309
17310 @subsection Examples
17311
17312 @itemize
17313 @item
17314 Scale the input video to a size of 200x100
17315 @example
17316 scale=w=200:h=100
17317 @end example
17318
17319 This is equivalent to:
17320 @example
17321 scale=200:100
17322 @end example
17323
17324 or:
17325 @example
17326 scale=200x100
17327 @end example
17328
17329 @item
17330 Specify a size abbreviation for the output size:
17331 @example
17332 scale=qcif
17333 @end example
17334
17335 which can also be written as:
17336 @example
17337 scale=size=qcif
17338 @end example
17339
17340 @item
17341 Scale the input to 2x:
17342 @example
17343 scale=w=2*iw:h=2*ih
17344 @end example
17345
17346 @item
17347 The above is the same as:
17348 @example
17349 scale=2*in_w:2*in_h
17350 @end example
17351
17352 @item
17353 Scale the input to 2x with forced interlaced scaling:
17354 @example
17355 scale=2*iw:2*ih:interl=1
17356 @end example
17357
17358 @item
17359 Scale the input to half size:
17360 @example
17361 scale=w=iw/2:h=ih/2
17362 @end example
17363
17364 @item
17365 Increase the width, and set the height to the same size:
17366 @example
17367 scale=3/2*iw:ow
17368 @end example
17369
17370 @item
17371 Seek Greek harmony:
17372 @example
17373 scale=iw:1/PHI*iw
17374 scale=ih*PHI:ih
17375 @end example
17376
17377 @item
17378 Increase the height, and set the width to 3/2 of the height:
17379 @example
17380 scale=w=3/2*oh:h=3/5*ih
17381 @end example
17382
17383 @item
17384 Increase the size, making the size a multiple of the chroma
17385 subsample values:
17386 @example
17387 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
17388 @end example
17389
17390 @item
17391 Increase the width to a maximum of 500 pixels,
17392 keeping the same aspect ratio as the input:
17393 @example
17394 scale=w='min(500\, iw*3/2):h=-1'
17395 @end example
17396
17397 @item
17398 Make pixels square by combining scale and setsar:
17399 @example
17400 scale='trunc(ih*dar):ih',setsar=1/1
17401 @end example
17402
17403 @item
17404 Make pixels square by combining scale and setsar,
17405 making sure the resulting resolution is even (required by some codecs):
17406 @example
17407 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
17408 @end example
17409 @end itemize
17410
17411 @subsection Commands
17412
17413 This filter supports the following commands:
17414 @table @option
17415 @item width, w
17416 @item height, h
17417 Set the output video dimension expression.
17418 The command accepts the same syntax of the corresponding option.
17419
17420 If the specified expression is not valid, it is kept at its current
17421 value.
17422 @end table
17423
17424 @section scale_npp
17425
17426 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
17427 format conversion on CUDA video frames. Setting the output width and height
17428 works in the same way as for the @var{scale} filter.
17429
17430 The following additional options are accepted:
17431 @table @option
17432 @item format
17433 The pixel format of the output CUDA frames. If set to the string "same" (the
17434 default), the input format will be kept. Note that automatic format negotiation
17435 and conversion is not yet supported for hardware frames
17436
17437 @item interp_algo
17438 The interpolation algorithm used for resizing. One of the following:
17439 @table @option
17440 @item nn
17441 Nearest neighbour.
17442
17443 @item linear
17444 @item cubic
17445 @item cubic2p_bspline
17446 2-parameter cubic (B=1, C=0)
17447
17448 @item cubic2p_catmullrom
17449 2-parameter cubic (B=0, C=1/2)
17450
17451 @item cubic2p_b05c03
17452 2-parameter cubic (B=1/2, C=3/10)
17453
17454 @item super
17455 Supersampling
17456
17457 @item lanczos
17458 @end table
17459
17460 @item force_original_aspect_ratio
17461 Enable decreasing or increasing output video width or height if necessary to
17462 keep the original aspect ratio. Possible values:
17463
17464 @table @samp
17465 @item disable
17466 Scale the video as specified and disable this feature.
17467
17468 @item decrease
17469 The output video dimensions will automatically be decreased if needed.
17470
17471 @item increase
17472 The output video dimensions will automatically be increased if needed.
17473
17474 @end table
17475
17476 One useful instance of this option is that when you know a specific device's
17477 maximum allowed resolution, you can use this to limit the output video to
17478 that, while retaining the aspect ratio. For example, device A allows
17479 1280x720 playback, and your video is 1920x800. Using this option (set it to
17480 decrease) and specifying 1280x720 to the command line makes the output
17481 1280x533.
17482
17483 Please note that this is a different thing than specifying -1 for @option{w}
17484 or @option{h}, you still need to specify the output resolution for this option
17485 to work.
17486
17487 @item force_divisible_by
17488 Ensures that both the output dimensions, width and height, are divisible by the
17489 given integer when used together with @option{force_original_aspect_ratio}. This
17490 works similar to using @code{-n} in the @option{w} and @option{h} options.
17491
17492 This option respects the value set for @option{force_original_aspect_ratio},
17493 increasing or decreasing the resolution accordingly. The video's aspect ratio
17494 may be slightly modified.
17495
17496 This option can be handy if you need to have a video fit within or exceed
17497 a defined resolution using @option{force_original_aspect_ratio} but also have
17498 encoder restrictions on width or height divisibility.
17499
17500 @end table
17501
17502 @section scale2ref
17503
17504 Scale (resize) the input video, based on a reference video.
17505
17506 See the scale filter for available options, scale2ref supports the same but
17507 uses the reference video instead of the main input as basis. scale2ref also
17508 supports the following additional constants for the @option{w} and
17509 @option{h} options:
17510
17511 @table @var
17512 @item main_w
17513 @item main_h
17514 The main input video's width and height
17515
17516 @item main_a
17517 The same as @var{main_w} / @var{main_h}
17518
17519 @item main_sar
17520 The main input video's sample aspect ratio
17521
17522 @item main_dar, mdar
17523 The main input video's display aspect ratio. Calculated from
17524 @code{(main_w / main_h) * main_sar}.
17525
17526 @item main_hsub
17527 @item main_vsub
17528 The main input video's horizontal and vertical chroma subsample values.
17529 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
17530 is 1.
17531
17532 @item main_n
17533 The (sequential) number of the main input frame, starting from 0.
17534 Only available with @code{eval=frame}.
17535
17536 @item main_t
17537 The presentation timestamp of the main input frame, expressed as a number of
17538 seconds. Only available with @code{eval=frame}.
17539
17540 @item main_pos
17541 The position (byte offset) of the frame in the main input stream, or NaN if
17542 this information is unavailable and/or meaningless (for example in case of synthetic video).
17543 Only available with @code{eval=frame}.
17544 @end table
17545
17546 @subsection Examples
17547
17548 @itemize
17549 @item
17550 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
17551 @example
17552 'scale2ref[b][a];[a][b]overlay'
17553 @end example
17554
17555 @item
17556 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
17557 @example
17558 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
17559 @end example
17560 @end itemize
17561
17562 @subsection Commands
17563
17564 This filter supports the following commands:
17565 @table @option
17566 @item width, w
17567 @item height, h
17568 Set the output video dimension expression.
17569 The command accepts the same syntax of the corresponding option.
17570
17571 If the specified expression is not valid, it is kept at its current
17572 value.
17573 @end table
17574
17575 @section scroll
17576 Scroll input video horizontally and/or vertically by constant speed.
17577
17578 The filter accepts the following options:
17579 @table @option
17580 @item horizontal, h
17581 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
17582 Negative values changes scrolling direction.
17583
17584 @item vertical, v
17585 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
17586 Negative values changes scrolling direction.
17587
17588 @item hpos
17589 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
17590
17591 @item vpos
17592 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
17593 @end table
17594
17595 @subsection Commands
17596
17597 This filter supports the following @ref{commands}:
17598 @table @option
17599 @item horizontal, h
17600 Set the horizontal scrolling speed.
17601 @item vertical, v
17602 Set the vertical scrolling speed.
17603 @end table
17604
17605 @anchor{scdet}
17606 @section scdet
17607
17608 Detect video scene change.
17609
17610 This filter sets frame metadata with mafd between frame, the scene score, and
17611 forward the frame to the next filter, so they can use these metadata to detect
17612 scene change or others.
17613
17614 In addition, this filter logs a message and sets frame metadata when it detects
17615 a scene change by @option{threshold}.
17616
17617 @code{lavfi.scd.mafd} metadata keys are set with mafd for every frame.
17618
17619 @code{lavfi.scd.score} metadata keys are set with scene change score for every frame
17620 to detect scene change.
17621
17622 @code{lavfi.scd.time} metadata keys are set with current filtered frame time which
17623 detect scene change with @option{threshold}.
17624
17625 The filter accepts the following options:
17626
17627 @table @option
17628 @item threshold, t
17629 Set the scene change detection threshold as a percentage of maximum change. Good
17630 values are in the @code{[8.0, 14.0]} range. The range for @option{threshold} is
17631 @code{[0., 100.]}.
17632
17633 Default value is @code{10.}.
17634
17635 @item sc_pass, s
17636 Set the flag to pass scene change frames to the next filter. Default value is @code{0}
17637 You can enable it if you want to get snapshot of scene change frames only.
17638 @end table
17639
17640 @anchor{selectivecolor}
17641 @section selectivecolor
17642
17643 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
17644 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
17645 by the "purity" of the color (that is, how saturated it already is).
17646
17647 This filter is similar to the Adobe Photoshop Selective Color tool.
17648
17649 The filter accepts the following options:
17650
17651 @table @option
17652 @item correction_method
17653 Select color correction method.
17654
17655 Available values are:
17656 @table @samp
17657 @item absolute
17658 Specified adjustments are applied "as-is" (added/subtracted to original pixel
17659 component value).
17660 @item relative
17661 Specified adjustments are relative to the original component value.
17662 @end table
17663 Default is @code{absolute}.
17664 @item reds
17665 Adjustments for red pixels (pixels where the red component is the maximum)
17666 @item yellows
17667 Adjustments for yellow pixels (pixels where the blue component is the minimum)
17668 @item greens
17669 Adjustments for green pixels (pixels where the green component is the maximum)
17670 @item cyans
17671 Adjustments for cyan pixels (pixels where the red component is the minimum)
17672 @item blues
17673 Adjustments for blue pixels (pixels where the blue component is the maximum)
17674 @item magentas
17675 Adjustments for magenta pixels (pixels where the green component is the minimum)
17676 @item whites
17677 Adjustments for white pixels (pixels where all components are greater than 128)
17678 @item neutrals
17679 Adjustments for all pixels except pure black and pure white
17680 @item blacks
17681 Adjustments for black pixels (pixels where all components are lesser than 128)
17682 @item psfile
17683 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
17684 @end table
17685
17686 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
17687 4 space separated floating point adjustment values in the [-1,1] range,
17688 respectively to adjust the amount of cyan, magenta, yellow and black for the
17689 pixels of its range.
17690
17691 @subsection Examples
17692
17693 @itemize
17694 @item
17695 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
17696 increase magenta by 27% in blue areas:
17697 @example
17698 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
17699 @end example
17700
17701 @item
17702 Use a Photoshop selective color preset:
17703 @example
17704 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
17705 @end example
17706 @end itemize
17707
17708 @anchor{separatefields}
17709 @section separatefields
17710
17711 The @code{separatefields} takes a frame-based video input and splits
17712 each frame into its components fields, producing a new half height clip
17713 with twice the frame rate and twice the frame count.
17714
17715 This filter use field-dominance information in frame to decide which
17716 of each pair of fields to place first in the output.
17717 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
17718
17719 @section setdar, setsar
17720
17721 The @code{setdar} filter sets the Display Aspect Ratio for the filter
17722 output video.
17723
17724 This is done by changing the specified Sample (aka Pixel) Aspect
17725 Ratio, according to the following equation:
17726 @example
17727 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
17728 @end example
17729
17730 Keep in mind that the @code{setdar} filter does not modify the pixel
17731 dimensions of the video frame. Also, the display aspect ratio set by
17732 this filter may be changed by later filters in the filterchain,
17733 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
17734 applied.
17735
17736 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
17737 the filter output video.
17738
17739 Note that as a consequence of the application of this filter, the
17740 output display aspect ratio will change according to the equation
17741 above.
17742
17743 Keep in mind that the sample aspect ratio set by the @code{setsar}
17744 filter may be changed by later filters in the filterchain, e.g. if
17745 another "setsar" or a "setdar" filter is applied.
17746
17747 It accepts the following parameters:
17748
17749 @table @option
17750 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
17751 Set the aspect ratio used by the filter.
17752
17753 The parameter can be a floating point number string, an expression, or
17754 a string of the form @var{num}:@var{den}, where @var{num} and
17755 @var{den} are the numerator and denominator of the aspect ratio. If
17756 the parameter is not specified, it is assumed the value "0".
17757 In case the form "@var{num}:@var{den}" is used, the @code{:} character
17758 should be escaped.
17759
17760 @item max
17761 Set the maximum integer value to use for expressing numerator and
17762 denominator when reducing the expressed aspect ratio to a rational.
17763 Default value is @code{100}.
17764
17765 @end table
17766
17767 The parameter @var{sar} is an expression containing
17768 the following constants:
17769
17770 @table @option
17771 @item E, PI, PHI
17772 These are approximated values for the mathematical constants e
17773 (Euler's number), pi (Greek pi), and phi (the golden ratio).
17774
17775 @item w, h
17776 The input width and height.
17777
17778 @item a
17779 These are the same as @var{w} / @var{h}.
17780
17781 @item sar
17782 The input sample aspect ratio.
17783
17784 @item dar
17785 The input display aspect ratio. It is the same as
17786 (@var{w} / @var{h}) * @var{sar}.
17787
17788 @item hsub, vsub
17789 Horizontal and vertical chroma subsample values. For example, for the
17790 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17791 @end table
17792
17793 @subsection Examples
17794
17795 @itemize
17796
17797 @item
17798 To change the display aspect ratio to 16:9, specify one of the following:
17799 @example
17800 setdar=dar=1.77777
17801 setdar=dar=16/9
17802 @end example
17803
17804 @item
17805 To change the sample aspect ratio to 10:11, specify:
17806 @example
17807 setsar=sar=10/11
17808 @end example
17809
17810 @item
17811 To set a display aspect ratio of 16:9, and specify a maximum integer value of
17812 1000 in the aspect ratio reduction, use the command:
17813 @example
17814 setdar=ratio=16/9:max=1000
17815 @end example
17816
17817 @end itemize
17818
17819 @anchor{setfield}
17820 @section setfield
17821
17822 Force field for the output video frame.
17823
17824 The @code{setfield} filter marks the interlace type field for the
17825 output frames. It does not change the input frame, but only sets the
17826 corresponding property, which affects how the frame is treated by
17827 following filters (e.g. @code{fieldorder} or @code{yadif}).
17828
17829 The filter accepts the following options:
17830
17831 @table @option
17832
17833 @item mode
17834 Available values are:
17835
17836 @table @samp
17837 @item auto
17838 Keep the same field property.
17839
17840 @item bff
17841 Mark the frame as bottom-field-first.
17842
17843 @item tff
17844 Mark the frame as top-field-first.
17845
17846 @item prog
17847 Mark the frame as progressive.
17848 @end table
17849 @end table
17850
17851 @anchor{setparams}
17852 @section setparams
17853
17854 Force frame parameter for the output video frame.
17855
17856 The @code{setparams} filter marks interlace and color range for the
17857 output frames. It does not change the input frame, but only sets the
17858 corresponding property, which affects how the frame is treated by
17859 filters/encoders.
17860
17861 @table @option
17862 @item field_mode
17863 Available values are:
17864
17865 @table @samp
17866 @item auto
17867 Keep the same field property (default).
17868
17869 @item bff
17870 Mark the frame as bottom-field-first.
17871
17872 @item tff
17873 Mark the frame as top-field-first.
17874
17875 @item prog
17876 Mark the frame as progressive.
17877 @end table
17878
17879 @item range
17880 Available values are:
17881
17882 @table @samp
17883 @item auto
17884 Keep the same color range property (default).
17885
17886 @item unspecified, unknown
17887 Mark the frame as unspecified color range.
17888
17889 @item limited, tv, mpeg
17890 Mark the frame as limited range.
17891
17892 @item full, pc, jpeg
17893 Mark the frame as full range.
17894 @end table
17895
17896 @item color_primaries
17897 Set the color primaries.
17898 Available values are:
17899
17900 @table @samp
17901 @item auto
17902 Keep the same color primaries property (default).
17903
17904 @item bt709
17905 @item unknown
17906 @item bt470m
17907 @item bt470bg
17908 @item smpte170m
17909 @item smpte240m
17910 @item film
17911 @item bt2020
17912 @item smpte428
17913 @item smpte431
17914 @item smpte432
17915 @item jedec-p22
17916 @end table
17917
17918 @item color_trc
17919 Set the color transfer.
17920 Available values are:
17921
17922 @table @samp
17923 @item auto
17924 Keep the same color trc property (default).
17925
17926 @item bt709
17927 @item unknown
17928 @item bt470m
17929 @item bt470bg
17930 @item smpte170m
17931 @item smpte240m
17932 @item linear
17933 @item log100
17934 @item log316
17935 @item iec61966-2-4
17936 @item bt1361e
17937 @item iec61966-2-1
17938 @item bt2020-10
17939 @item bt2020-12
17940 @item smpte2084
17941 @item smpte428
17942 @item arib-std-b67
17943 @end table
17944
17945 @item colorspace
17946 Set the colorspace.
17947 Available values are:
17948
17949 @table @samp
17950 @item auto
17951 Keep the same colorspace property (default).
17952
17953 @item gbr
17954 @item bt709
17955 @item unknown
17956 @item fcc
17957 @item bt470bg
17958 @item smpte170m
17959 @item smpte240m
17960 @item ycgco
17961 @item bt2020nc
17962 @item bt2020c
17963 @item smpte2085
17964 @item chroma-derived-nc
17965 @item chroma-derived-c
17966 @item ictcp
17967 @end table
17968 @end table
17969
17970 @section shear
17971 Apply shear transform to input video.
17972
17973 This filter supports the following options:
17974
17975 @table @option
17976 @item shx
17977 Shear factor in X-direction. Default value is 0.
17978 Allowed range is from -2 to 2.
17979
17980 @item shy
17981 Shear factor in Y-direction. Default value is 0.
17982 Allowed range is from -2 to 2.
17983
17984 @item fillcolor, c
17985 Set the color used to fill the output area not covered by the transformed
17986 video. For the general syntax of this option, check the
17987 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
17988 If the special value "none" is selected then no
17989 background is printed (useful for example if the background is never shown).
17990
17991 Default value is "black".
17992
17993 @item interp
17994 Set interpolation type. Can be @code{bilinear} or @code{nearest}. Default is @code{bilinear}.
17995 @end table
17996
17997 @subsection Commands
17998
17999 This filter supports the all above options as @ref{commands}.
18000
18001 @section showinfo
18002
18003 Show a line containing various information for each input video frame.
18004 The input video is not modified.
18005
18006 This filter supports the following options:
18007
18008 @table @option
18009 @item checksum
18010 Calculate checksums of each plane. By default enabled.
18011 @end table
18012
18013 The shown line contains a sequence of key/value pairs of the form
18014 @var{key}:@var{value}.
18015
18016 The following values are shown in the output:
18017
18018 @table @option
18019 @item n
18020 The (sequential) number of the input frame, starting from 0.
18021
18022 @item pts
18023 The Presentation TimeStamp of the input frame, expressed as a number of
18024 time base units. The time base unit depends on the filter input pad.
18025
18026 @item pts_time
18027 The Presentation TimeStamp of the input frame, expressed as a number of
18028 seconds.
18029
18030 @item pos
18031 The position of the frame in the input stream, or -1 if this information is
18032 unavailable and/or meaningless (for example in case of synthetic video).
18033
18034 @item fmt
18035 The pixel format name.
18036
18037 @item sar
18038 The sample aspect ratio of the input frame, expressed in the form
18039 @var{num}/@var{den}.
18040
18041 @item s
18042 The size of the input frame. For the syntax of this option, check the
18043 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18044
18045 @item i
18046 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
18047 for bottom field first).
18048
18049 @item iskey
18050 This is 1 if the frame is a key frame, 0 otherwise.
18051
18052 @item type
18053 The picture type of the input frame ("I" for an I-frame, "P" for a
18054 P-frame, "B" for a B-frame, or "?" for an unknown type).
18055 Also refer to the documentation of the @code{AVPictureType} enum and of
18056 the @code{av_get_picture_type_char} function defined in
18057 @file{libavutil/avutil.h}.
18058
18059 @item checksum
18060 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
18061
18062 @item plane_checksum
18063 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
18064 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
18065
18066 @item mean
18067 The mean value of pixels in each plane of the input frame, expressed in the form
18068 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
18069
18070 @item stdev
18071 The standard deviation of pixel values in each plane of the input frame, expressed
18072 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
18073
18074 @end table
18075
18076 @section showpalette
18077
18078 Displays the 256 colors palette of each frame. This filter is only relevant for
18079 @var{pal8} pixel format frames.
18080
18081 It accepts the following option:
18082
18083 @table @option
18084 @item s
18085 Set the size of the box used to represent one palette color entry. Default is
18086 @code{30} (for a @code{30x30} pixel box).
18087 @end table
18088
18089 @section shuffleframes
18090
18091 Reorder and/or duplicate and/or drop video frames.
18092
18093 It accepts the following parameters:
18094
18095 @table @option
18096 @item mapping
18097 Set the destination indexes of input frames.
18098 This is space or '|' separated list of indexes that maps input frames to output
18099 frames. Number of indexes also sets maximal value that each index may have.
18100 '-1' index have special meaning and that is to drop frame.
18101 @end table
18102
18103 The first frame has the index 0. The default is to keep the input unchanged.
18104
18105 @subsection Examples
18106
18107 @itemize
18108 @item
18109 Swap second and third frame of every three frames of the input:
18110 @example
18111 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
18112 @end example
18113
18114 @item
18115 Swap 10th and 1st frame of every ten frames of the input:
18116 @example
18117 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
18118 @end example
18119 @end itemize
18120
18121 @section shufflepixels
18122
18123 Reorder pixels in video frames.
18124
18125 This filter accepts the following options:
18126
18127 @table @option
18128 @item direction, d
18129 Set shuffle direction. Can be forward or inverse direction.
18130 Default direction is forward.
18131
18132 @item mode, m
18133 Set shuffle mode. Can be horizontal, vertical or block mode.
18134
18135 @item width, w
18136 @item height, h
18137 Set shuffle block_size. In case of horizontal shuffle mode only width
18138 part of size is used, and in case of vertical shuffle mode only height
18139 part of size is used.
18140
18141 @item seed, s
18142 Set random seed used with shuffling pixels. Mainly useful to set to be able
18143 to reverse filtering process to get original input.
18144 For example, to reverse forward shuffle you need to use same parameters
18145 and exact same seed and to set direction to inverse.
18146 @end table
18147
18148 @section shuffleplanes
18149
18150 Reorder and/or duplicate video planes.
18151
18152 It accepts the following parameters:
18153
18154 @table @option
18155
18156 @item map0
18157 The index of the input plane to be used as the first output plane.
18158
18159 @item map1
18160 The index of the input plane to be used as the second output plane.
18161
18162 @item map2
18163 The index of the input plane to be used as the third output plane.
18164
18165 @item map3
18166 The index of the input plane to be used as the fourth output plane.
18167
18168 @end table
18169
18170 The first plane has the index 0. The default is to keep the input unchanged.
18171
18172 @subsection Examples
18173
18174 @itemize
18175 @item
18176 Swap the second and third planes of the input:
18177 @example
18178 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
18179 @end example
18180 @end itemize
18181
18182 @anchor{signalstats}
18183 @section signalstats
18184 Evaluate various visual metrics that assist in determining issues associated
18185 with the digitization of analog video media.
18186
18187 By default the filter will log these metadata values:
18188
18189 @table @option
18190 @item YMIN
18191 Display the minimal Y value contained within the input frame. Expressed in
18192 range of [0-255].
18193
18194 @item YLOW
18195 Display the Y value at the 10% percentile within the input frame. Expressed in
18196 range of [0-255].
18197
18198 @item YAVG
18199 Display the average Y value within the input frame. Expressed in range of
18200 [0-255].
18201
18202 @item YHIGH
18203 Display the Y value at the 90% percentile within the input frame. Expressed in
18204 range of [0-255].
18205
18206 @item YMAX
18207 Display the maximum Y value contained within the input frame. Expressed in
18208 range of [0-255].
18209
18210 @item UMIN
18211 Display the minimal U value contained within the input frame. Expressed in
18212 range of [0-255].
18213
18214 @item ULOW
18215 Display the U value at the 10% percentile within the input frame. Expressed in
18216 range of [0-255].
18217
18218 @item UAVG
18219 Display the average U value within the input frame. Expressed in range of
18220 [0-255].
18221
18222 @item UHIGH
18223 Display the U value at the 90% percentile within the input frame. Expressed in
18224 range of [0-255].
18225
18226 @item UMAX
18227 Display the maximum U value contained within the input frame. Expressed in
18228 range of [0-255].
18229
18230 @item VMIN
18231 Display the minimal V value contained within the input frame. Expressed in
18232 range of [0-255].
18233
18234 @item VLOW
18235 Display the V value at the 10% percentile within the input frame. Expressed in
18236 range of [0-255].
18237
18238 @item VAVG
18239 Display the average V value within the input frame. Expressed in range of
18240 [0-255].
18241
18242 @item VHIGH
18243 Display the V value at the 90% percentile within the input frame. Expressed in
18244 range of [0-255].
18245
18246 @item VMAX
18247 Display the maximum V value contained within the input frame. Expressed in
18248 range of [0-255].
18249
18250 @item SATMIN
18251 Display the minimal saturation value contained within the input frame.
18252 Expressed in range of [0-~181.02].
18253
18254 @item SATLOW
18255 Display the saturation value at the 10% percentile within the input frame.
18256 Expressed in range of [0-~181.02].
18257
18258 @item SATAVG
18259 Display the average saturation value within the input frame. Expressed in range
18260 of [0-~181.02].
18261
18262 @item SATHIGH
18263 Display the saturation value at the 90% percentile within the input frame.
18264 Expressed in range of [0-~181.02].
18265
18266 @item SATMAX
18267 Display the maximum saturation value contained within the input frame.
18268 Expressed in range of [0-~181.02].
18269
18270 @item HUEMED
18271 Display the median value for hue within the input frame. Expressed in range of
18272 [0-360].
18273
18274 @item HUEAVG
18275 Display the average value for hue within the input frame. Expressed in range of
18276 [0-360].
18277
18278 @item YDIF
18279 Display the average of sample value difference between all values of the Y
18280 plane in the current frame and corresponding values of the previous input frame.
18281 Expressed in range of [0-255].
18282
18283 @item UDIF
18284 Display the average of sample value difference between all values of the U
18285 plane in the current frame and corresponding values of the previous input frame.
18286 Expressed in range of [0-255].
18287
18288 @item VDIF
18289 Display the average of sample value difference between all values of the V
18290 plane in the current frame and corresponding values of the previous input frame.
18291 Expressed in range of [0-255].
18292
18293 @item YBITDEPTH
18294 Display bit depth of Y plane in current frame.
18295 Expressed in range of [0-16].
18296
18297 @item UBITDEPTH
18298 Display bit depth of U plane in current frame.
18299 Expressed in range of [0-16].
18300
18301 @item VBITDEPTH
18302 Display bit depth of V plane in current frame.
18303 Expressed in range of [0-16].
18304 @end table
18305
18306 The filter accepts the following options:
18307
18308 @table @option
18309 @item stat
18310 @item out
18311
18312 @option{stat} specify an additional form of image analysis.
18313 @option{out} output video with the specified type of pixel highlighted.
18314
18315 Both options accept the following values:
18316
18317 @table @samp
18318 @item tout
18319 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
18320 unlike the neighboring pixels of the same field. Examples of temporal outliers
18321 include the results of video dropouts, head clogs, or tape tracking issues.
18322
18323 @item vrep
18324 Identify @var{vertical line repetition}. Vertical line repetition includes
18325 similar rows of pixels within a frame. In born-digital video vertical line
18326 repetition is common, but this pattern is uncommon in video digitized from an
18327 analog source. When it occurs in video that results from the digitization of an
18328 analog source it can indicate concealment from a dropout compensator.
18329
18330 @item brng
18331 Identify pixels that fall outside of legal broadcast range.
18332 @end table
18333
18334 @item color, c
18335 Set the highlight color for the @option{out} option. The default color is
18336 yellow.
18337 @end table
18338
18339 @subsection Examples
18340
18341 @itemize
18342 @item
18343 Output data of various video metrics:
18344 @example
18345 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
18346 @end example
18347
18348 @item
18349 Output specific data about the minimum and maximum values of the Y plane per frame:
18350 @example
18351 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
18352 @end example
18353
18354 @item
18355 Playback video while highlighting pixels that are outside of broadcast range in red.
18356 @example
18357 ffplay example.mov -vf signalstats="out=brng:color=red"
18358 @end example
18359
18360 @item
18361 Playback video with signalstats metadata drawn over the frame.
18362 @example
18363 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
18364 @end example
18365
18366 The contents of signalstat_drawtext.txt used in the command are:
18367 @example
18368 time %@{pts:hms@}
18369 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
18370 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
18371 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
18372 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
18373
18374 @end example
18375 @end itemize
18376
18377 @anchor{signature}
18378 @section signature
18379
18380 Calculates the MPEG-7 Video Signature. The filter can handle more than one
18381 input. In this case the matching between the inputs can be calculated additionally.
18382 The filter always passes through the first input. The signature of each stream can
18383 be written into a file.
18384
18385 It accepts the following options:
18386
18387 @table @option
18388 @item detectmode
18389 Enable or disable the matching process.
18390
18391 Available values are:
18392
18393 @table @samp
18394 @item off
18395 Disable the calculation of a matching (default).
18396 @item full
18397 Calculate the matching for the whole video and output whether the whole video
18398 matches or only parts.
18399 @item fast
18400 Calculate only until a matching is found or the video ends. Should be faster in
18401 some cases.
18402 @end table
18403
18404 @item nb_inputs
18405 Set the number of inputs. The option value must be a non negative integer.
18406 Default value is 1.
18407
18408 @item filename
18409 Set the path to which the output is written. If there is more than one input,
18410 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
18411 integer), that will be replaced with the input number. If no filename is
18412 specified, no output will be written. This is the default.
18413
18414 @item format
18415 Choose the output format.
18416
18417 Available values are:
18418
18419 @table @samp
18420 @item binary
18421 Use the specified binary representation (default).
18422 @item xml
18423 Use the specified xml representation.
18424 @end table
18425
18426 @item th_d
18427 Set threshold to detect one word as similar. The option value must be an integer
18428 greater than zero. The default value is 9000.
18429
18430 @item th_dc
18431 Set threshold to detect all words as similar. The option value must be an integer
18432 greater than zero. The default value is 60000.
18433
18434 @item th_xh
18435 Set threshold to detect frames as similar. The option value must be an integer
18436 greater than zero. The default value is 116.
18437
18438 @item th_di
18439 Set the minimum length of a sequence in frames to recognize it as matching
18440 sequence. The option value must be a non negative integer value.
18441 The default value is 0.
18442
18443 @item th_it
18444 Set the minimum relation, that matching frames to all frames must have.
18445 The option value must be a double value between 0 and 1. The default value is 0.5.
18446 @end table
18447
18448 @subsection Examples
18449
18450 @itemize
18451 @item
18452 To calculate the signature of an input video and store it in signature.bin:
18453 @example
18454 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
18455 @end example
18456
18457 @item
18458 To detect whether two videos match and store the signatures in XML format in
18459 signature0.xml and signature1.xml:
18460 @example
18461 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 -
18462 @end example
18463
18464 @end itemize
18465
18466 @anchor{smartblur}
18467 @section smartblur
18468
18469 Blur the input video without impacting the outlines.
18470
18471 It accepts the following options:
18472
18473 @table @option
18474 @item luma_radius, lr
18475 Set the luma radius. The option value must be a float number in
18476 the range [0.1,5.0] that specifies the variance of the gaussian filter
18477 used to blur the image (slower if larger). Default value is 1.0.
18478
18479 @item luma_strength, ls
18480 Set the luma strength. The option value must be a float number
18481 in the range [-1.0,1.0] that configures the blurring. A value included
18482 in [0.0,1.0] will blur the image whereas a value included in
18483 [-1.0,0.0] will sharpen the image. Default value is 1.0.
18484
18485 @item luma_threshold, lt
18486 Set the luma threshold used as a coefficient to determine
18487 whether a pixel should be blurred or not. The option value must be an
18488 integer in the range [-30,30]. A value of 0 will filter all the image,
18489 a value included in [0,30] will filter flat areas and a value included
18490 in [-30,0] will filter edges. Default value is 0.
18491
18492 @item chroma_radius, cr
18493 Set the chroma radius. The option value must be a float number in
18494 the range [0.1,5.0] that specifies the variance of the gaussian filter
18495 used to blur the image (slower if larger). Default value is @option{luma_radius}.
18496
18497 @item chroma_strength, cs
18498 Set the chroma strength. The option value must be a float number
18499 in the range [-1.0,1.0] that configures the blurring. A value included
18500 in [0.0,1.0] will blur the image whereas a value included in
18501 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
18502
18503 @item chroma_threshold, ct
18504 Set the chroma threshold used as a coefficient to determine
18505 whether a pixel should be blurred or not. The option value must be an
18506 integer in the range [-30,30]. A value of 0 will filter all the image,
18507 a value included in [0,30] will filter flat areas and a value included
18508 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
18509 @end table
18510
18511 If a chroma option is not explicitly set, the corresponding luma value
18512 is set.
18513
18514 @section sobel
18515 Apply sobel operator to input video stream.
18516
18517 The filter accepts the following option:
18518
18519 @table @option
18520 @item planes
18521 Set which planes will be processed, unprocessed planes will be copied.
18522 By default value 0xf, all planes will be processed.
18523
18524 @item scale
18525 Set value which will be multiplied with filtered result.
18526
18527 @item delta
18528 Set value which will be added to filtered result.
18529 @end table
18530
18531 @subsection Commands
18532
18533 This filter supports the all above options as @ref{commands}.
18534
18535 @anchor{spp}
18536 @section spp
18537
18538 Apply a simple postprocessing filter that compresses and decompresses the image
18539 at several (or - in the case of @option{quality} level @code{6} - all) shifts
18540 and average the results.
18541
18542 The filter accepts the following options:
18543
18544 @table @option
18545 @item quality
18546 Set quality. This option defines the number of levels for averaging. It accepts
18547 an integer in the range 0-6. If set to @code{0}, the filter will have no
18548 effect. A value of @code{6} means the higher quality. For each increment of
18549 that value the speed drops by a factor of approximately 2.  Default value is
18550 @code{3}.
18551
18552 @item qp
18553 Force a constant quantization parameter. If not set, the filter will use the QP
18554 from the video stream (if available).
18555
18556 @item mode
18557 Set thresholding mode. Available modes are:
18558
18559 @table @samp
18560 @item hard
18561 Set hard thresholding (default).
18562 @item soft
18563 Set soft thresholding (better de-ringing effect, but likely blurrier).
18564 @end table
18565
18566 @item use_bframe_qp
18567 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
18568 option may cause flicker since the B-Frames have often larger QP. Default is
18569 @code{0} (not enabled).
18570 @end table
18571
18572 @subsection Commands
18573
18574 This filter supports the following commands:
18575 @table @option
18576 @item quality, level
18577 Set quality level. The value @code{max} can be used to set the maximum level,
18578 currently @code{6}.
18579 @end table
18580
18581 @anchor{sr}
18582 @section sr
18583
18584 Scale the input by applying one of the super-resolution methods based on
18585 convolutional neural networks. Supported models:
18586
18587 @itemize
18588 @item
18589 Super-Resolution Convolutional Neural Network model (SRCNN).
18590 See @url{https://arxiv.org/abs/1501.00092}.
18591
18592 @item
18593 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
18594 See @url{https://arxiv.org/abs/1609.05158}.
18595 @end itemize
18596
18597 Training scripts as well as scripts for model file (.pb) saving can be found at
18598 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
18599 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
18600
18601 Native model files (.model) can be generated from TensorFlow model
18602 files (.pb) by using tools/python/convert.py
18603
18604 The filter accepts the following options:
18605
18606 @table @option
18607 @item dnn_backend
18608 Specify which DNN backend to use for model loading and execution. This option accepts
18609 the following values:
18610
18611 @table @samp
18612 @item native
18613 Native implementation of DNN loading and execution.
18614
18615 @item tensorflow
18616 TensorFlow backend. To enable this backend you
18617 need to install the TensorFlow for C library (see
18618 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
18619 @code{--enable-libtensorflow}
18620 @end table
18621
18622 Default value is @samp{native}.
18623
18624 @item model
18625 Set path to model file specifying network architecture and its parameters.
18626 Note that different backends use different file formats. TensorFlow backend
18627 can load files for both formats, while native backend can load files for only
18628 its format.
18629
18630 @item scale_factor
18631 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
18632 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
18633 input upscaled using bicubic upscaling with proper scale factor.
18634 @end table
18635
18636 This feature can also be finished with @ref{dnn_processing} filter.
18637
18638 @section ssim
18639
18640 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
18641
18642 This filter takes in input two input videos, the first input is
18643 considered the "main" source and is passed unchanged to the
18644 output. The second input is used as a "reference" video for computing
18645 the SSIM.
18646
18647 Both video inputs must have the same resolution and pixel format for
18648 this filter to work correctly. Also it assumes that both inputs
18649 have the same number of frames, which are compared one by one.
18650
18651 The filter stores the calculated SSIM of each frame.
18652
18653 The description of the accepted parameters follows.
18654
18655 @table @option
18656 @item stats_file, f
18657 If specified the filter will use the named file to save the SSIM of
18658 each individual frame. When filename equals "-" the data is sent to
18659 standard output.
18660 @end table
18661
18662 The file printed if @var{stats_file} is selected, contains a sequence of
18663 key/value pairs of the form @var{key}:@var{value} for each compared
18664 couple of frames.
18665
18666 A description of each shown parameter follows:
18667
18668 @table @option
18669 @item n
18670 sequential number of the input frame, starting from 1
18671
18672 @item Y, U, V, R, G, B
18673 SSIM of the compared frames for the component specified by the suffix.
18674
18675 @item All
18676 SSIM of the compared frames for the whole frame.
18677
18678 @item dB
18679 Same as above but in dB representation.
18680 @end table
18681
18682 This filter also supports the @ref{framesync} options.
18683
18684 @subsection Examples
18685 @itemize
18686 @item
18687 For example:
18688 @example
18689 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
18690 [main][ref] ssim="stats_file=stats.log" [out]
18691 @end example
18692
18693 On this example the input file being processed is compared with the
18694 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
18695 is stored in @file{stats.log}.
18696
18697 @item
18698 Another example with both psnr and ssim at same time:
18699 @example
18700 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
18701 @end example
18702
18703 @item
18704 Another example with different containers:
18705 @example
18706 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 -
18707 @end example
18708 @end itemize
18709
18710 @section stereo3d
18711
18712 Convert between different stereoscopic image formats.
18713
18714 The filters accept the following options:
18715
18716 @table @option
18717 @item in
18718 Set stereoscopic image format of input.
18719
18720 Available values for input image formats are:
18721 @table @samp
18722 @item sbsl
18723 side by side parallel (left eye left, right eye right)
18724
18725 @item sbsr
18726 side by side crosseye (right eye left, left eye right)
18727
18728 @item sbs2l
18729 side by side parallel with half width resolution
18730 (left eye left, right eye right)
18731
18732 @item sbs2r
18733 side by side crosseye with half width resolution
18734 (right eye left, left eye right)
18735
18736 @item abl
18737 @item tbl
18738 above-below (left eye above, right eye below)
18739
18740 @item abr
18741 @item tbr
18742 above-below (right eye above, left eye below)
18743
18744 @item ab2l
18745 @item tb2l
18746 above-below with half height resolution
18747 (left eye above, right eye below)
18748
18749 @item ab2r
18750 @item tb2r
18751 above-below with half height resolution
18752 (right eye above, left eye below)
18753
18754 @item al
18755 alternating frames (left eye first, right eye second)
18756
18757 @item ar
18758 alternating frames (right eye first, left eye second)
18759
18760 @item irl
18761 interleaved rows (left eye has top row, right eye starts on next row)
18762
18763 @item irr
18764 interleaved rows (right eye has top row, left eye starts on next row)
18765
18766 @item icl
18767 interleaved columns, left eye first
18768
18769 @item icr
18770 interleaved columns, right eye first
18771
18772 Default value is @samp{sbsl}.
18773 @end table
18774
18775 @item out
18776 Set stereoscopic image format of output.
18777
18778 @table @samp
18779 @item sbsl
18780 side by side parallel (left eye left, right eye right)
18781
18782 @item sbsr
18783 side by side crosseye (right eye left, left eye right)
18784
18785 @item sbs2l
18786 side by side parallel with half width resolution
18787 (left eye left, right eye right)
18788
18789 @item sbs2r
18790 side by side crosseye with half width resolution
18791 (right eye left, left eye right)
18792
18793 @item abl
18794 @item tbl
18795 above-below (left eye above, right eye below)
18796
18797 @item abr
18798 @item tbr
18799 above-below (right eye above, left eye below)
18800
18801 @item ab2l
18802 @item tb2l
18803 above-below with half height resolution
18804 (left eye above, right eye below)
18805
18806 @item ab2r
18807 @item tb2r
18808 above-below with half height resolution
18809 (right eye above, left eye below)
18810
18811 @item al
18812 alternating frames (left eye first, right eye second)
18813
18814 @item ar
18815 alternating frames (right eye first, left eye second)
18816
18817 @item irl
18818 interleaved rows (left eye has top row, right eye starts on next row)
18819
18820 @item irr
18821 interleaved rows (right eye has top row, left eye starts on next row)
18822
18823 @item arbg
18824 anaglyph red/blue gray
18825 (red filter on left eye, blue filter on right eye)
18826
18827 @item argg
18828 anaglyph red/green gray
18829 (red filter on left eye, green filter on right eye)
18830
18831 @item arcg
18832 anaglyph red/cyan gray
18833 (red filter on left eye, cyan filter on right eye)
18834
18835 @item arch
18836 anaglyph red/cyan half colored
18837 (red filter on left eye, cyan filter on right eye)
18838
18839 @item arcc
18840 anaglyph red/cyan color
18841 (red filter on left eye, cyan filter on right eye)
18842
18843 @item arcd
18844 anaglyph red/cyan color optimized with the least squares projection of dubois
18845 (red filter on left eye, cyan filter on right eye)
18846
18847 @item agmg
18848 anaglyph green/magenta gray
18849 (green filter on left eye, magenta filter on right eye)
18850
18851 @item agmh
18852 anaglyph green/magenta half colored
18853 (green filter on left eye, magenta filter on right eye)
18854
18855 @item agmc
18856 anaglyph green/magenta colored
18857 (green filter on left eye, magenta filter on right eye)
18858
18859 @item agmd
18860 anaglyph green/magenta color optimized with the least squares projection of dubois
18861 (green filter on left eye, magenta filter on right eye)
18862
18863 @item aybg
18864 anaglyph yellow/blue gray
18865 (yellow filter on left eye, blue filter on right eye)
18866
18867 @item aybh
18868 anaglyph yellow/blue half colored
18869 (yellow filter on left eye, blue filter on right eye)
18870
18871 @item aybc
18872 anaglyph yellow/blue colored
18873 (yellow filter on left eye, blue filter on right eye)
18874
18875 @item aybd
18876 anaglyph yellow/blue color optimized with the least squares projection of dubois
18877 (yellow filter on left eye, blue filter on right eye)
18878
18879 @item ml
18880 mono output (left eye only)
18881
18882 @item mr
18883 mono output (right eye only)
18884
18885 @item chl
18886 checkerboard, left eye first
18887
18888 @item chr
18889 checkerboard, right eye first
18890
18891 @item icl
18892 interleaved columns, left eye first
18893
18894 @item icr
18895 interleaved columns, right eye first
18896
18897 @item hdmi
18898 HDMI frame pack
18899 @end table
18900
18901 Default value is @samp{arcd}.
18902 @end table
18903
18904 @subsection Examples
18905
18906 @itemize
18907 @item
18908 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
18909 @example
18910 stereo3d=sbsl:aybd
18911 @end example
18912
18913 @item
18914 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
18915 @example
18916 stereo3d=abl:sbsr
18917 @end example
18918 @end itemize
18919
18920 @section streamselect, astreamselect
18921 Select video or audio streams.
18922
18923 The filter accepts the following options:
18924
18925 @table @option
18926 @item inputs
18927 Set number of inputs. Default is 2.
18928
18929 @item map
18930 Set input indexes to remap to outputs.
18931 @end table
18932
18933 @subsection Commands
18934
18935 The @code{streamselect} and @code{astreamselect} filter supports the following
18936 commands:
18937
18938 @table @option
18939 @item map
18940 Set input indexes to remap to outputs.
18941 @end table
18942
18943 @subsection Examples
18944
18945 @itemize
18946 @item
18947 Select first 5 seconds 1st stream and rest of time 2nd stream:
18948 @example
18949 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
18950 @end example
18951
18952 @item
18953 Same as above, but for audio:
18954 @example
18955 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
18956 @end example
18957 @end itemize
18958
18959 @anchor{subtitles}
18960 @section subtitles
18961
18962 Draw subtitles on top of input video using the libass library.
18963
18964 To enable compilation of this filter you need to configure FFmpeg with
18965 @code{--enable-libass}. This filter also requires a build with libavcodec and
18966 libavformat to convert the passed subtitles file to ASS (Advanced Substation
18967 Alpha) subtitles format.
18968
18969 The filter accepts the following options:
18970
18971 @table @option
18972 @item filename, f
18973 Set the filename of the subtitle file to read. It must be specified.
18974
18975 @item original_size
18976 Specify the size of the original video, the video for which the ASS file
18977 was composed. For the syntax of this option, check the
18978 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18979 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
18980 correctly scale the fonts if the aspect ratio has been changed.
18981
18982 @item fontsdir
18983 Set a directory path containing fonts that can be used by the filter.
18984 These fonts will be used in addition to whatever the font provider uses.
18985
18986 @item alpha
18987 Process alpha channel, by default alpha channel is untouched.
18988
18989 @item charenc
18990 Set subtitles input character encoding. @code{subtitles} filter only. Only
18991 useful if not UTF-8.
18992
18993 @item stream_index, si
18994 Set subtitles stream index. @code{subtitles} filter only.
18995
18996 @item force_style
18997 Override default style or script info parameters of the subtitles. It accepts a
18998 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
18999 @end table
19000
19001 If the first key is not specified, it is assumed that the first value
19002 specifies the @option{filename}.
19003
19004 For example, to render the file @file{sub.srt} on top of the input
19005 video, use the command:
19006 @example
19007 subtitles=sub.srt
19008 @end example
19009
19010 which is equivalent to:
19011 @example
19012 subtitles=filename=sub.srt
19013 @end example
19014
19015 To render the default subtitles stream from file @file{video.mkv}, use:
19016 @example
19017 subtitles=video.mkv
19018 @end example
19019
19020 To render the second subtitles stream from that file, use:
19021 @example
19022 subtitles=video.mkv:si=1
19023 @end example
19024
19025 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
19026 @code{DejaVu Serif}, use:
19027 @example
19028 subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
19029 @end example
19030
19031 @section super2xsai
19032
19033 Scale the input by 2x and smooth using the Super2xSaI (Scale and
19034 Interpolate) pixel art scaling algorithm.
19035
19036 Useful for enlarging pixel art images without reducing sharpness.
19037
19038 @section swaprect
19039
19040 Swap two rectangular objects in video.
19041
19042 This filter accepts the following options:
19043
19044 @table @option
19045 @item w
19046 Set object width.
19047
19048 @item h
19049 Set object height.
19050
19051 @item x1
19052 Set 1st rect x coordinate.
19053
19054 @item y1
19055 Set 1st rect y coordinate.
19056
19057 @item x2
19058 Set 2nd rect x coordinate.
19059
19060 @item y2
19061 Set 2nd rect y coordinate.
19062
19063 All expressions are evaluated once for each frame.
19064 @end table
19065
19066 The all options are expressions containing the following constants:
19067
19068 @table @option
19069 @item w
19070 @item h
19071 The input width and height.
19072
19073 @item a
19074 same as @var{w} / @var{h}
19075
19076 @item sar
19077 input sample aspect ratio
19078
19079 @item dar
19080 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
19081
19082 @item n
19083 The number of the input frame, starting from 0.
19084
19085 @item t
19086 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
19087
19088 @item pos
19089 the position in the file of the input frame, NAN if unknown
19090 @end table
19091
19092 @section swapuv
19093 Swap U & V plane.
19094
19095 @section tblend
19096 Blend successive video frames.
19097
19098 See @ref{blend}
19099
19100 @section telecine
19101
19102 Apply telecine process to the video.
19103
19104 This filter accepts the following options:
19105
19106 @table @option
19107 @item first_field
19108 @table @samp
19109 @item top, t
19110 top field first
19111 @item bottom, b
19112 bottom field first
19113 The default value is @code{top}.
19114 @end table
19115
19116 @item pattern
19117 A string of numbers representing the pulldown pattern you wish to apply.
19118 The default value is @code{23}.
19119 @end table
19120
19121 @example
19122 Some typical patterns:
19123
19124 NTSC output (30i):
19125 27.5p: 32222
19126 24p: 23 (classic)
19127 24p: 2332 (preferred)
19128 20p: 33
19129 18p: 334
19130 16p: 3444
19131
19132 PAL output (25i):
19133 27.5p: 12222
19134 24p: 222222222223 ("Euro pulldown")
19135 16.67p: 33
19136 16p: 33333334
19137 @end example
19138
19139 @section thistogram
19140
19141 Compute and draw a color distribution histogram for the input video across time.
19142
19143 Unlike @ref{histogram} video filter which only shows histogram of single input frame
19144 at certain time, this filter shows also past histograms of number of frames defined
19145 by @code{width} option.
19146
19147 The computed histogram is a representation of the color component
19148 distribution in an image.
19149
19150 The filter accepts the following options:
19151
19152 @table @option
19153 @item width, w
19154 Set width of single color component output. Default value is @code{0}.
19155 Value of @code{0} means width will be picked from input video.
19156 This also set number of passed histograms to keep.
19157 Allowed range is [0, 8192].
19158
19159 @item display_mode, d
19160 Set display mode.
19161 It accepts the following values:
19162 @table @samp
19163 @item stack
19164 Per color component graphs are placed below each other.
19165
19166 @item parade
19167 Per color component graphs are placed side by side.
19168
19169 @item overlay
19170 Presents information identical to that in the @code{parade}, except
19171 that the graphs representing color components are superimposed directly
19172 over one another.
19173 @end table
19174 Default is @code{stack}.
19175
19176 @item levels_mode, m
19177 Set mode. Can be either @code{linear}, or @code{logarithmic}.
19178 Default is @code{linear}.
19179
19180 @item components, c
19181 Set what color components to display.
19182 Default is @code{7}.
19183
19184 @item bgopacity, b
19185 Set background opacity. Default is @code{0.9}.
19186
19187 @item envelope, e
19188 Show envelope. Default is disabled.
19189
19190 @item ecolor, ec
19191 Set envelope color. Default is @code{gold}.
19192
19193 @item slide
19194 Set slide mode.
19195
19196 Available values for slide is:
19197 @table @samp
19198 @item frame
19199 Draw new frame when right border is reached.
19200
19201 @item replace
19202 Replace old columns with new ones.
19203
19204 @item scroll
19205 Scroll from right to left.
19206
19207 @item rscroll
19208 Scroll from left to right.
19209
19210 @item picture
19211 Draw single picture.
19212 @end table
19213
19214 Default is @code{replace}.
19215 @end table
19216
19217 @section threshold
19218
19219 Apply threshold effect to video stream.
19220
19221 This filter needs four video streams to perform thresholding.
19222 First stream is stream we are filtering.
19223 Second stream is holding threshold values, third stream is holding min values,
19224 and last, fourth stream is holding max values.
19225
19226 The filter accepts the following option:
19227
19228 @table @option
19229 @item planes
19230 Set which planes will be processed, unprocessed planes will be copied.
19231 By default value 0xf, all planes will be processed.
19232 @end table
19233
19234 For example if first stream pixel's component value is less then threshold value
19235 of pixel component from 2nd threshold stream, third stream value will picked,
19236 otherwise fourth stream pixel component value will be picked.
19237
19238 Using color source filter one can perform various types of thresholding:
19239
19240 @subsection Examples
19241
19242 @itemize
19243 @item
19244 Binary threshold, using gray color as threshold:
19245 @example
19246 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
19247 @end example
19248
19249 @item
19250 Inverted binary threshold, using gray color as threshold:
19251 @example
19252 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
19253 @end example
19254
19255 @item
19256 Truncate binary threshold, using gray color as threshold:
19257 @example
19258 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
19259 @end example
19260
19261 @item
19262 Threshold to zero, using gray color as threshold:
19263 @example
19264 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
19265 @end example
19266
19267 @item
19268 Inverted threshold to zero, using gray color as threshold:
19269 @example
19270 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
19271 @end example
19272 @end itemize
19273
19274 @section thumbnail
19275 Select the most representative frame in a given sequence of consecutive frames.
19276
19277 The filter accepts the following options:
19278
19279 @table @option
19280 @item n
19281 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
19282 will pick one of them, and then handle the next batch of @var{n} frames until
19283 the end. Default is @code{100}.
19284 @end table
19285
19286 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
19287 value will result in a higher memory usage, so a high value is not recommended.
19288
19289 @subsection Examples
19290
19291 @itemize
19292 @item
19293 Extract one picture each 50 frames:
19294 @example
19295 thumbnail=50
19296 @end example
19297
19298 @item
19299 Complete example of a thumbnail creation with @command{ffmpeg}:
19300 @example
19301 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
19302 @end example
19303 @end itemize
19304
19305 @anchor{tile}
19306 @section tile
19307
19308 Tile several successive frames together.
19309
19310 The @ref{untile} filter can do the reverse.
19311
19312 The filter accepts the following options:
19313
19314 @table @option
19315
19316 @item layout
19317 Set the grid size (i.e. the number of lines and columns). For the syntax of
19318 this option, check the
19319 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19320
19321 @item nb_frames
19322 Set the maximum number of frames to render in the given area. It must be less
19323 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
19324 the area will be used.
19325
19326 @item margin
19327 Set the outer border margin in pixels.
19328
19329 @item padding
19330 Set the inner border thickness (i.e. the number of pixels between frames). For
19331 more advanced padding options (such as having different values for the edges),
19332 refer to the pad video filter.
19333
19334 @item color
19335 Specify the color of the unused area. For the syntax of this option, check the
19336 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
19337 The default value of @var{color} is "black".
19338
19339 @item overlap
19340 Set the number of frames to overlap when tiling several successive frames together.
19341 The value must be between @code{0} and @var{nb_frames - 1}.
19342
19343 @item init_padding
19344 Set the number of frames to initially be empty before displaying first output frame.
19345 This controls how soon will one get first output frame.
19346 The value must be between @code{0} and @var{nb_frames - 1}.
19347 @end table
19348
19349 @subsection Examples
19350
19351 @itemize
19352 @item
19353 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
19354 @example
19355 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
19356 @end example
19357 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
19358 duplicating each output frame to accommodate the originally detected frame
19359 rate.
19360
19361 @item
19362 Display @code{5} pictures in an area of @code{3x2} frames,
19363 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
19364 mixed flat and named options:
19365 @example
19366 tile=3x2:nb_frames=5:padding=7:margin=2
19367 @end example
19368 @end itemize
19369
19370 @section tinterlace
19371
19372 Perform various types of temporal field interlacing.
19373
19374 Frames are counted starting from 1, so the first input frame is
19375 considered odd.
19376
19377 The filter accepts the following options:
19378
19379 @table @option
19380
19381 @item mode
19382 Specify the mode of the interlacing. This option can also be specified
19383 as a value alone. See below for a list of values for this option.
19384
19385 Available values are:
19386
19387 @table @samp
19388 @item merge, 0
19389 Move odd frames into the upper field, even into the lower field,
19390 generating a double height frame at half frame rate.
19391 @example
19392  ------> time
19393 Input:
19394 Frame 1         Frame 2         Frame 3         Frame 4
19395
19396 11111           22222           33333           44444
19397 11111           22222           33333           44444
19398 11111           22222           33333           44444
19399 11111           22222           33333           44444
19400
19401 Output:
19402 11111                           33333
19403 22222                           44444
19404 11111                           33333
19405 22222                           44444
19406 11111                           33333
19407 22222                           44444
19408 11111                           33333
19409 22222                           44444
19410 @end example
19411
19412 @item drop_even, 1
19413 Only output odd frames, even frames are dropped, generating a frame with
19414 unchanged height at half frame rate.
19415
19416 @example
19417  ------> time
19418 Input:
19419 Frame 1         Frame 2         Frame 3         Frame 4
19420
19421 11111           22222           33333           44444
19422 11111           22222           33333           44444
19423 11111           22222           33333           44444
19424 11111           22222           33333           44444
19425
19426 Output:
19427 11111                           33333
19428 11111                           33333
19429 11111                           33333
19430 11111                           33333
19431 @end example
19432
19433 @item drop_odd, 2
19434 Only output even frames, odd frames are dropped, generating a frame with
19435 unchanged height at half frame rate.
19436
19437 @example
19438  ------> time
19439 Input:
19440 Frame 1         Frame 2         Frame 3         Frame 4
19441
19442 11111           22222           33333           44444
19443 11111           22222           33333           44444
19444 11111           22222           33333           44444
19445 11111           22222           33333           44444
19446
19447 Output:
19448                 22222                           44444
19449                 22222                           44444
19450                 22222                           44444
19451                 22222                           44444
19452 @end example
19453
19454 @item pad, 3
19455 Expand each frame to full height, but pad alternate lines with black,
19456 generating a frame with double height at the same input frame rate.
19457
19458 @example
19459  ------> time
19460 Input:
19461 Frame 1         Frame 2         Frame 3         Frame 4
19462
19463 11111           22222           33333           44444
19464 11111           22222           33333           44444
19465 11111           22222           33333           44444
19466 11111           22222           33333           44444
19467
19468 Output:
19469 11111           .....           33333           .....
19470 .....           22222           .....           44444
19471 11111           .....           33333           .....
19472 .....           22222           .....           44444
19473 11111           .....           33333           .....
19474 .....           22222           .....           44444
19475 11111           .....           33333           .....
19476 .....           22222           .....           44444
19477 @end example
19478
19479
19480 @item interleave_top, 4
19481 Interleave the upper field from odd frames with the lower field from
19482 even frames, generating a frame with unchanged height at half frame rate.
19483
19484 @example
19485  ------> time
19486 Input:
19487 Frame 1         Frame 2         Frame 3         Frame 4
19488
19489 11111<-         22222           33333<-         44444
19490 11111           22222<-         33333           44444<-
19491 11111<-         22222           33333<-         44444
19492 11111           22222<-         33333           44444<-
19493
19494 Output:
19495 11111                           33333
19496 22222                           44444
19497 11111                           33333
19498 22222                           44444
19499 @end example
19500
19501
19502 @item interleave_bottom, 5
19503 Interleave the lower field from odd frames with the upper field from
19504 even frames, generating a frame with unchanged height at half frame rate.
19505
19506 @example
19507  ------> time
19508 Input:
19509 Frame 1         Frame 2         Frame 3         Frame 4
19510
19511 11111           22222<-         33333           44444<-
19512 11111<-         22222           33333<-         44444
19513 11111           22222<-         33333           44444<-
19514 11111<-         22222           33333<-         44444
19515
19516 Output:
19517 22222                           44444
19518 11111                           33333
19519 22222                           44444
19520 11111                           33333
19521 @end example
19522
19523
19524 @item interlacex2, 6
19525 Double frame rate with unchanged height. Frames are inserted each
19526 containing the second temporal field from the previous input frame and
19527 the first temporal field from the next input frame. This mode relies on
19528 the top_field_first flag. Useful for interlaced video displays with no
19529 field synchronisation.
19530
19531 @example
19532  ------> time
19533 Input:
19534 Frame 1         Frame 2         Frame 3         Frame 4
19535
19536 11111           22222           33333           44444
19537  11111           22222           33333           44444
19538 11111           22222           33333           44444
19539  11111           22222           33333           44444
19540
19541 Output:
19542 11111   22222   22222   33333   33333   44444   44444
19543  11111   11111   22222   22222   33333   33333   44444
19544 11111   22222   22222   33333   33333   44444   44444
19545  11111   11111   22222   22222   33333   33333   44444
19546 @end example
19547
19548
19549 @item mergex2, 7
19550 Move odd frames into the upper field, even into the lower field,
19551 generating a double height frame at same frame rate.
19552
19553 @example
19554  ------> time
19555 Input:
19556 Frame 1         Frame 2         Frame 3         Frame 4
19557
19558 11111           22222           33333           44444
19559 11111           22222           33333           44444
19560 11111           22222           33333           44444
19561 11111           22222           33333           44444
19562
19563 Output:
19564 11111           33333           33333           55555
19565 22222           22222           44444           44444
19566 11111           33333           33333           55555
19567 22222           22222           44444           44444
19568 11111           33333           33333           55555
19569 22222           22222           44444           44444
19570 11111           33333           33333           55555
19571 22222           22222           44444           44444
19572 @end example
19573
19574 @end table
19575
19576 Numeric values are deprecated but are accepted for backward
19577 compatibility reasons.
19578
19579 Default mode is @code{merge}.
19580
19581 @item flags
19582 Specify flags influencing the filter process.
19583
19584 Available value for @var{flags} is:
19585
19586 @table @option
19587 @item low_pass_filter, vlpf
19588 Enable linear vertical low-pass filtering in the filter.
19589 Vertical low-pass filtering is required when creating an interlaced
19590 destination from a progressive source which contains high-frequency
19591 vertical detail. Filtering will reduce interlace 'twitter' and Moire
19592 patterning.
19593
19594 @item complex_filter, cvlpf
19595 Enable complex vertical low-pass filtering.
19596 This will slightly less reduce interlace 'twitter' and Moire
19597 patterning but better retain detail and subjective sharpness impression.
19598
19599 @item bypass_il
19600 Bypass already interlaced frames, only adjust the frame rate.
19601 @end table
19602
19603 Vertical low-pass filtering and bypassing already interlaced frames can only be
19604 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
19605
19606 @end table
19607
19608 @section tmedian
19609 Pick median pixels from several successive input video frames.
19610
19611 The filter accepts the following options:
19612
19613 @table @option
19614 @item radius
19615 Set radius of median filter.
19616 Default is 1. Allowed range is from 1 to 127.
19617
19618 @item planes
19619 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
19620
19621 @item percentile
19622 Set median percentile. Default value is @code{0.5}.
19623 Default value of @code{0.5} will pick always median values, while @code{0} will pick
19624 minimum values, and @code{1} maximum values.
19625 @end table
19626
19627 @subsection Commands
19628
19629 This filter supports all above options as @ref{commands}, excluding option @code{radius}.
19630
19631 @section tmidequalizer
19632
19633 Apply Temporal Midway Video Equalization effect.
19634
19635 Midway Video Equalization adjusts a sequence of video frames to have the same
19636 histograms, while maintaining their dynamics as much as possible. It's
19637 useful for e.g. matching exposures from a video frames sequence.
19638
19639 This filter accepts the following option:
19640
19641 @table @option
19642 @item radius
19643 Set filtering radius. Default is @code{5}. Allowed range is from 1 to 127.
19644
19645 @item sigma
19646 Set filtering sigma. Default is @code{0.5}. This controls strength of filtering.
19647 Setting this option to 0 effectively does nothing.
19648
19649 @item planes
19650 Set which planes to process. Default is @code{15}, which is all available planes.
19651 @end table
19652
19653 @section tmix
19654
19655 Mix successive video frames.
19656
19657 A description of the accepted options follows.
19658
19659 @table @option
19660 @item frames
19661 The number of successive frames to mix. If unspecified, it defaults to 3.
19662
19663 @item weights
19664 Specify weight of each input video frame.
19665 Each weight is separated by space. If number of weights is smaller than
19666 number of @var{frames} last specified weight will be used for all remaining
19667 unset weights.
19668
19669 @item scale
19670 Specify scale, if it is set it will be multiplied with sum
19671 of each weight multiplied with pixel values to give final destination
19672 pixel value. By default @var{scale} is auto scaled to sum of weights.
19673 @end table
19674
19675 @subsection Examples
19676
19677 @itemize
19678 @item
19679 Average 7 successive frames:
19680 @example
19681 tmix=frames=7:weights="1 1 1 1 1 1 1"
19682 @end example
19683
19684 @item
19685 Apply simple temporal convolution:
19686 @example
19687 tmix=frames=3:weights="-1 3 -1"
19688 @end example
19689
19690 @item
19691 Similar as above but only showing temporal differences:
19692 @example
19693 tmix=frames=3:weights="-1 2 -1":scale=1
19694 @end example
19695 @end itemize
19696
19697 @anchor{tonemap}
19698 @section tonemap
19699 Tone map colors from different dynamic ranges.
19700
19701 This filter expects data in single precision floating point, as it needs to
19702 operate on (and can output) out-of-range values. Another filter, such as
19703 @ref{zscale}, is needed to convert the resulting frame to a usable format.
19704
19705 The tonemapping algorithms implemented only work on linear light, so input
19706 data should be linearized beforehand (and possibly correctly tagged).
19707
19708 @example
19709 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
19710 @end example
19711
19712 @subsection Options
19713 The filter accepts the following options.
19714
19715 @table @option
19716 @item tonemap
19717 Set the tone map algorithm to use.
19718
19719 Possible values are:
19720 @table @var
19721 @item none
19722 Do not apply any tone map, only desaturate overbright pixels.
19723
19724 @item clip
19725 Hard-clip any out-of-range values. Use it for perfect color accuracy for
19726 in-range values, while distorting out-of-range values.
19727
19728 @item linear
19729 Stretch the entire reference gamut to a linear multiple of the display.
19730
19731 @item gamma
19732 Fit a logarithmic transfer between the tone curves.
19733
19734 @item reinhard
19735 Preserve overall image brightness with a simple curve, using nonlinear
19736 contrast, which results in flattening details and degrading color accuracy.
19737
19738 @item hable
19739 Preserve both dark and bright details better than @var{reinhard}, at the cost
19740 of slightly darkening everything. Use it when detail preservation is more
19741 important than color and brightness accuracy.
19742
19743 @item mobius
19744 Smoothly map out-of-range values, while retaining contrast and colors for
19745 in-range material as much as possible. Use it when color accuracy is more
19746 important than detail preservation.
19747 @end table
19748
19749 Default is none.
19750
19751 @item param
19752 Tune the tone mapping algorithm.
19753
19754 This affects the following algorithms:
19755 @table @var
19756 @item none
19757 Ignored.
19758
19759 @item linear
19760 Specifies the scale factor to use while stretching.
19761 Default to 1.0.
19762
19763 @item gamma
19764 Specifies the exponent of the function.
19765 Default to 1.8.
19766
19767 @item clip
19768 Specify an extra linear coefficient to multiply into the signal before clipping.
19769 Default to 1.0.
19770
19771 @item reinhard
19772 Specify the local contrast coefficient at the display peak.
19773 Default to 0.5, which means that in-gamut values will be about half as bright
19774 as when clipping.
19775
19776 @item hable
19777 Ignored.
19778
19779 @item mobius
19780 Specify the transition point from linear to mobius transform. Every value
19781 below this point is guaranteed to be mapped 1:1. The higher the value, the
19782 more accurate the result will be, at the cost of losing bright details.
19783 Default to 0.3, which due to the steep initial slope still preserves in-range
19784 colors fairly accurately.
19785 @end table
19786
19787 @item desat
19788 Apply desaturation for highlights that exceed this level of brightness. The
19789 higher the parameter, the more color information will be preserved. This
19790 setting helps prevent unnaturally blown-out colors for super-highlights, by
19791 (smoothly) turning into white instead. This makes images feel more natural,
19792 at the cost of reducing information about out-of-range colors.
19793
19794 The default of 2.0 is somewhat conservative and will mostly just apply to
19795 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
19796
19797 This option works only if the input frame has a supported color tag.
19798
19799 @item peak
19800 Override signal/nominal/reference peak with this value. Useful when the
19801 embedded peak information in display metadata is not reliable or when tone
19802 mapping from a lower range to a higher range.
19803 @end table
19804
19805 @section tpad
19806
19807 Temporarily pad video frames.
19808
19809 The filter accepts the following options:
19810
19811 @table @option
19812 @item start
19813 Specify number of delay frames before input video stream. Default is 0.
19814
19815 @item stop
19816 Specify number of padding frames after input video stream.
19817 Set to -1 to pad indefinitely. Default is 0.
19818
19819 @item start_mode
19820 Set kind of frames added to beginning of stream.
19821 Can be either @var{add} or @var{clone}.
19822 With @var{add} frames of solid-color are added.
19823 With @var{clone} frames are clones of first frame.
19824 Default is @var{add}.
19825
19826 @item stop_mode
19827 Set kind of frames added to end of stream.
19828 Can be either @var{add} or @var{clone}.
19829 With @var{add} frames of solid-color are added.
19830 With @var{clone} frames are clones of last frame.
19831 Default is @var{add}.
19832
19833 @item start_duration, stop_duration
19834 Specify the duration of the start/stop delay. See
19835 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19836 for the accepted syntax.
19837 These options override @var{start} and @var{stop}. Default is 0.
19838
19839 @item color
19840 Specify the color of the padded area. For the syntax of this option,
19841 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
19842 manual,ffmpeg-utils}.
19843
19844 The default value of @var{color} is "black".
19845 @end table
19846
19847 @anchor{transpose}
19848 @section transpose
19849
19850 Transpose rows with columns in the input video and optionally flip it.
19851
19852 It accepts the following parameters:
19853
19854 @table @option
19855
19856 @item dir
19857 Specify the transposition direction.
19858
19859 Can assume the following values:
19860 @table @samp
19861 @item 0, 4, cclock_flip
19862 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
19863 @example
19864 L.R     L.l
19865 . . ->  . .
19866 l.r     R.r
19867 @end example
19868
19869 @item 1, 5, clock
19870 Rotate by 90 degrees clockwise, that is:
19871 @example
19872 L.R     l.L
19873 . . ->  . .
19874 l.r     r.R
19875 @end example
19876
19877 @item 2, 6, cclock
19878 Rotate by 90 degrees counterclockwise, that is:
19879 @example
19880 L.R     R.r
19881 . . ->  . .
19882 l.r     L.l
19883 @end example
19884
19885 @item 3, 7, clock_flip
19886 Rotate by 90 degrees clockwise and vertically flip, that is:
19887 @example
19888 L.R     r.R
19889 . . ->  . .
19890 l.r     l.L
19891 @end example
19892 @end table
19893
19894 For values between 4-7, the transposition is only done if the input
19895 video geometry is portrait and not landscape. These values are
19896 deprecated, the @code{passthrough} option should be used instead.
19897
19898 Numerical values are deprecated, and should be dropped in favor of
19899 symbolic constants.
19900
19901 @item passthrough
19902 Do not apply the transposition if the input geometry matches the one
19903 specified by the specified value. It accepts the following values:
19904 @table @samp
19905 @item none
19906 Always apply transposition.
19907 @item portrait
19908 Preserve portrait geometry (when @var{height} >= @var{width}).
19909 @item landscape
19910 Preserve landscape geometry (when @var{width} >= @var{height}).
19911 @end table
19912
19913 Default value is @code{none}.
19914 @end table
19915
19916 For example to rotate by 90 degrees clockwise and preserve portrait
19917 layout:
19918 @example
19919 transpose=dir=1:passthrough=portrait
19920 @end example
19921
19922 The command above can also be specified as:
19923 @example
19924 transpose=1:portrait
19925 @end example
19926
19927 @section transpose_npp
19928
19929 Transpose rows with columns in the input video and optionally flip it.
19930 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
19931
19932 It accepts the following parameters:
19933
19934 @table @option
19935
19936 @item dir
19937 Specify the transposition direction.
19938
19939 Can assume the following values:
19940 @table @samp
19941 @item cclock_flip
19942 Rotate by 90 degrees counterclockwise and vertically flip. (default)
19943
19944 @item clock
19945 Rotate by 90 degrees clockwise.
19946
19947 @item cclock
19948 Rotate by 90 degrees counterclockwise.
19949
19950 @item clock_flip
19951 Rotate by 90 degrees clockwise and vertically flip.
19952 @end table
19953
19954 @item passthrough
19955 Do not apply the transposition if the input geometry matches the one
19956 specified by the specified value. It accepts the following values:
19957 @table @samp
19958 @item none
19959 Always apply transposition. (default)
19960 @item portrait
19961 Preserve portrait geometry (when @var{height} >= @var{width}).
19962 @item landscape
19963 Preserve landscape geometry (when @var{width} >= @var{height}).
19964 @end table
19965
19966 @end table
19967
19968 @section trim
19969 Trim the input so that the output contains one continuous subpart of the input.
19970
19971 It accepts the following parameters:
19972 @table @option
19973 @item start
19974 Specify the time of the start of the kept section, i.e. the frame with the
19975 timestamp @var{start} will be the first frame in the output.
19976
19977 @item end
19978 Specify the time of the first frame that will be dropped, i.e. the frame
19979 immediately preceding the one with the timestamp @var{end} will be the last
19980 frame in the output.
19981
19982 @item start_pts
19983 This is the same as @var{start}, except this option sets the start timestamp
19984 in timebase units instead of seconds.
19985
19986 @item end_pts
19987 This is the same as @var{end}, except this option sets the end timestamp
19988 in timebase units instead of seconds.
19989
19990 @item duration
19991 The maximum duration of the output in seconds.
19992
19993 @item start_frame
19994 The number of the first frame that should be passed to the output.
19995
19996 @item end_frame
19997 The number of the first frame that should be dropped.
19998 @end table
19999
20000 @option{start}, @option{end}, and @option{duration} are expressed as time
20001 duration specifications; see
20002 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
20003 for the accepted syntax.
20004
20005 Note that the first two sets of the start/end options and the @option{duration}
20006 option look at the frame timestamp, while the _frame variants simply count the
20007 frames that pass through the filter. Also note that this filter does not modify
20008 the timestamps. If you wish for the output timestamps to start at zero, insert a
20009 setpts filter after the trim filter.
20010
20011 If multiple start or end options are set, this filter tries to be greedy and
20012 keep all the frames that match at least one of the specified constraints. To keep
20013 only the part that matches all the constraints at once, chain multiple trim
20014 filters.
20015
20016 The defaults are such that all the input is kept. So it is possible to set e.g.
20017 just the end values to keep everything before the specified time.
20018
20019 Examples:
20020 @itemize
20021 @item
20022 Drop everything except the second minute of input:
20023 @example
20024 ffmpeg -i INPUT -vf trim=60:120
20025 @end example
20026
20027 @item
20028 Keep only the first second:
20029 @example
20030 ffmpeg -i INPUT -vf trim=duration=1
20031 @end example
20032
20033 @end itemize
20034
20035 @section unpremultiply
20036 Apply alpha unpremultiply effect to input video stream using first plane
20037 of second stream as alpha.
20038
20039 Both streams must have same dimensions and same pixel format.
20040
20041 The filter accepts the following option:
20042
20043 @table @option
20044 @item planes
20045 Set which planes will be processed, unprocessed planes will be copied.
20046 By default value 0xf, all planes will be processed.
20047
20048 If the format has 1 or 2 components, then luma is bit 0.
20049 If the format has 3 or 4 components:
20050 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
20051 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
20052 If present, the alpha channel is always the last bit.
20053
20054 @item inplace
20055 Do not require 2nd input for processing, instead use alpha plane from input stream.
20056 @end table
20057
20058 @anchor{unsharp}
20059 @section unsharp
20060
20061 Sharpen or blur the input video.
20062
20063 It accepts the following parameters:
20064
20065 @table @option
20066 @item luma_msize_x, lx
20067 Set the luma matrix horizontal size. It must be an odd integer between
20068 3 and 23. The default value is 5.
20069
20070 @item luma_msize_y, ly
20071 Set the luma matrix vertical size. It must be an odd integer between 3
20072 and 23. The default value is 5.
20073
20074 @item luma_amount, la
20075 Set the luma effect strength. It must be a floating point number, reasonable
20076 values lay between -1.5 and 1.5.
20077
20078 Negative values will blur the input video, while positive values will
20079 sharpen it, a value of zero will disable the effect.
20080
20081 Default value is 1.0.
20082
20083 @item chroma_msize_x, cx
20084 Set the chroma matrix horizontal size. It must be an odd integer
20085 between 3 and 23. The default value is 5.
20086
20087 @item chroma_msize_y, cy
20088 Set the chroma matrix vertical size. It must be an odd integer
20089 between 3 and 23. The default value is 5.
20090
20091 @item chroma_amount, ca
20092 Set the chroma effect strength. It must be a floating point number, reasonable
20093 values lay between -1.5 and 1.5.
20094
20095 Negative values will blur the input video, while positive values will
20096 sharpen it, a value of zero will disable the effect.
20097
20098 Default value is 0.0.
20099
20100 @end table
20101
20102 All parameters are optional and default to the equivalent of the
20103 string '5:5:1.0:5:5:0.0'.
20104
20105 @subsection Examples
20106
20107 @itemize
20108 @item
20109 Apply strong luma sharpen effect:
20110 @example
20111 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
20112 @end example
20113
20114 @item
20115 Apply a strong blur of both luma and chroma parameters:
20116 @example
20117 unsharp=7:7:-2:7:7:-2
20118 @end example
20119 @end itemize
20120
20121 @anchor{untile}
20122 @section untile
20123
20124 Decompose a video made of tiled images into the individual images.
20125
20126 The frame rate of the output video is the frame rate of the input video
20127 multiplied by the number of tiles.
20128
20129 This filter does the reverse of @ref{tile}.
20130
20131 The filter accepts the following options:
20132
20133 @table @option
20134
20135 @item layout
20136 Set the grid size (i.e. the number of lines and columns). For the syntax of
20137 this option, check the
20138 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20139 @end table
20140
20141 @subsection Examples
20142
20143 @itemize
20144 @item
20145 Produce a 1-second video from a still image file made of 25 frames stacked
20146 vertically, like an analogic film reel:
20147 @example
20148 ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
20149 @end example
20150 @end itemize
20151
20152 @section uspp
20153
20154 Apply ultra slow/simple postprocessing filter that compresses and decompresses
20155 the image at several (or - in the case of @option{quality} level @code{8} - all)
20156 shifts and average the results.
20157
20158 The way this differs from the behavior of spp is that uspp actually encodes &
20159 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
20160 DCT similar to MJPEG.
20161
20162 The filter accepts the following options:
20163
20164 @table @option
20165 @item quality
20166 Set quality. This option defines the number of levels for averaging. It accepts
20167 an integer in the range 0-8. If set to @code{0}, the filter will have no
20168 effect. A value of @code{8} means the higher quality. For each increment of
20169 that value the speed drops by a factor of approximately 2.  Default value is
20170 @code{3}.
20171
20172 @item qp
20173 Force a constant quantization parameter. If not set, the filter will use the QP
20174 from the video stream (if available).
20175 @end table
20176
20177 @section v360
20178
20179 Convert 360 videos between various formats.
20180
20181 The filter accepts the following options:
20182
20183 @table @option
20184
20185 @item input
20186 @item output
20187 Set format of the input/output video.
20188
20189 Available formats:
20190
20191 @table @samp
20192
20193 @item e
20194 @item equirect
20195 Equirectangular projection.
20196
20197 @item c3x2
20198 @item c6x1
20199 @item c1x6
20200 Cubemap with 3x2/6x1/1x6 layout.
20201
20202 Format specific options:
20203
20204 @table @option
20205 @item in_pad
20206 @item out_pad
20207 Set padding proportion for the input/output cubemap. Values in decimals.
20208
20209 Example values:
20210 @table @samp
20211 @item 0
20212 No padding.
20213 @item 0.01
20214 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)
20215 @end table
20216
20217 Default value is @b{@samp{0}}.
20218 Maximum value is @b{@samp{0.1}}.
20219
20220 @item fin_pad
20221 @item fout_pad
20222 Set fixed padding for the input/output cubemap. Values in pixels.
20223
20224 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
20225
20226 @item in_forder
20227 @item out_forder
20228 Set order of faces for the input/output cubemap. Choose one direction for each position.
20229
20230 Designation of directions:
20231 @table @samp
20232 @item r
20233 right
20234 @item l
20235 left
20236 @item u
20237 up
20238 @item d
20239 down
20240 @item f
20241 forward
20242 @item b
20243 back
20244 @end table
20245
20246 Default value is @b{@samp{rludfb}}.
20247
20248 @item in_frot
20249 @item out_frot
20250 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
20251
20252 Designation of angles:
20253 @table @samp
20254 @item 0
20255 0 degrees clockwise
20256 @item 1
20257 90 degrees clockwise
20258 @item 2
20259 180 degrees clockwise
20260 @item 3
20261 270 degrees clockwise
20262 @end table
20263
20264 Default value is @b{@samp{000000}}.
20265 @end table
20266
20267 @item eac
20268 Equi-Angular Cubemap.
20269
20270 @item flat
20271 @item gnomonic
20272 @item rectilinear
20273 Regular video.
20274
20275 Format specific options:
20276 @table @option
20277 @item h_fov
20278 @item v_fov
20279 @item d_fov
20280 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20281
20282 If diagonal field of view is set it overrides horizontal and vertical field of view.
20283
20284 @item ih_fov
20285 @item iv_fov
20286 @item id_fov
20287 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20288
20289 If diagonal field of view is set it overrides horizontal and vertical field of view.
20290 @end table
20291
20292 @item dfisheye
20293 Dual fisheye.
20294
20295 Format specific options:
20296 @table @option
20297 @item h_fov
20298 @item v_fov
20299 @item d_fov
20300 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20301
20302 If diagonal field of view is set it overrides horizontal and vertical field of view.
20303
20304 @item ih_fov
20305 @item iv_fov
20306 @item id_fov
20307 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20308
20309 If diagonal field of view is set it overrides horizontal and vertical field of view.
20310 @end table
20311
20312 @item barrel
20313 @item fb
20314 @item barrelsplit
20315 Facebook's 360 formats.
20316
20317 @item sg
20318 Stereographic format.
20319
20320 Format specific options:
20321 @table @option
20322 @item h_fov
20323 @item v_fov
20324 @item d_fov
20325 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20326
20327 If diagonal field of view is set it overrides horizontal and vertical field of view.
20328
20329 @item ih_fov
20330 @item iv_fov
20331 @item id_fov
20332 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20333
20334 If diagonal field of view is set it overrides horizontal and vertical field of view.
20335 @end table
20336
20337 @item mercator
20338 Mercator format.
20339
20340 @item ball
20341 Ball format, gives significant distortion toward the back.
20342
20343 @item hammer
20344 Hammer-Aitoff map projection format.
20345
20346 @item sinusoidal
20347 Sinusoidal map projection format.
20348
20349 @item fisheye
20350 Fisheye projection.
20351
20352 Format specific options:
20353 @table @option
20354 @item h_fov
20355 @item v_fov
20356 @item d_fov
20357 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20358
20359 If diagonal field of view is set it overrides horizontal and vertical field of view.
20360
20361 @item ih_fov
20362 @item iv_fov
20363 @item id_fov
20364 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20365
20366 If diagonal field of view is set it overrides horizontal and vertical field of view.
20367 @end table
20368
20369 @item pannini
20370 Pannini projection.
20371
20372 Format specific options:
20373 @table @option
20374 @item h_fov
20375 Set output pannini parameter.
20376
20377 @item ih_fov
20378 Set input pannini parameter.
20379 @end table
20380
20381 @item cylindrical
20382 Cylindrical projection.
20383
20384 Format specific options:
20385 @table @option
20386 @item h_fov
20387 @item v_fov
20388 @item d_fov
20389 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20390
20391 If diagonal field of view is set it overrides horizontal and vertical field of view.
20392
20393 @item ih_fov
20394 @item iv_fov
20395 @item id_fov
20396 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20397
20398 If diagonal field of view is set it overrides horizontal and vertical field of view.
20399 @end table
20400
20401 @item perspective
20402 Perspective projection. @i{(output only)}
20403
20404 Format specific options:
20405 @table @option
20406 @item v_fov
20407 Set perspective parameter.
20408 @end table
20409
20410 @item tetrahedron
20411 Tetrahedron projection.
20412
20413 @item tsp
20414 Truncated square pyramid projection.
20415
20416 @item he
20417 @item hequirect
20418 Half equirectangular projection.
20419
20420 @item equisolid
20421 Equisolid format.
20422
20423 Format specific options:
20424 @table @option
20425 @item h_fov
20426 @item v_fov
20427 @item d_fov
20428 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20429
20430 If diagonal field of view is set it overrides horizontal and vertical field of view.
20431
20432 @item ih_fov
20433 @item iv_fov
20434 @item id_fov
20435 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20436
20437 If diagonal field of view is set it overrides horizontal and vertical field of view.
20438 @end table
20439
20440 @item og
20441 Orthographic format.
20442
20443 Format specific options:
20444 @table @option
20445 @item h_fov
20446 @item v_fov
20447 @item d_fov
20448 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20449
20450 If diagonal field of view is set it overrides horizontal and vertical field of view.
20451
20452 @item ih_fov
20453 @item iv_fov
20454 @item id_fov
20455 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20456
20457 If diagonal field of view is set it overrides horizontal and vertical field of view.
20458 @end table
20459
20460 @item octahedron
20461 Octahedron projection.
20462 @end table
20463
20464 @item interp
20465 Set interpolation method.@*
20466 @i{Note: more complex interpolation methods require much more memory to run.}
20467
20468 Available methods:
20469
20470 @table @samp
20471 @item near
20472 @item nearest
20473 Nearest neighbour.
20474 @item line
20475 @item linear
20476 Bilinear interpolation.
20477 @item lagrange9
20478 Lagrange9 interpolation.
20479 @item cube
20480 @item cubic
20481 Bicubic interpolation.
20482 @item lanc
20483 @item lanczos
20484 Lanczos interpolation.
20485 @item sp16
20486 @item spline16
20487 Spline16 interpolation.
20488 @item gauss
20489 @item gaussian
20490 Gaussian interpolation.
20491 @item mitchell
20492 Mitchell interpolation.
20493 @end table
20494
20495 Default value is @b{@samp{line}}.
20496
20497 @item w
20498 @item h
20499 Set the output video resolution.
20500
20501 Default resolution depends on formats.
20502
20503 @item in_stereo
20504 @item out_stereo
20505 Set the input/output stereo format.
20506
20507 @table @samp
20508 @item 2d
20509 2D mono
20510 @item sbs
20511 Side by side
20512 @item tb
20513 Top bottom
20514 @end table
20515
20516 Default value is @b{@samp{2d}} for input and output format.
20517
20518 @item yaw
20519 @item pitch
20520 @item roll
20521 Set rotation for the output video. Values in degrees.
20522
20523 @item rorder
20524 Set rotation order for the output video. Choose one item for each position.
20525
20526 @table @samp
20527 @item y, Y
20528 yaw
20529 @item p, P
20530 pitch
20531 @item r, R
20532 roll
20533 @end table
20534
20535 Default value is @b{@samp{ypr}}.
20536
20537 @item h_flip
20538 @item v_flip
20539 @item d_flip
20540 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
20541
20542 @item ih_flip
20543 @item iv_flip
20544 Set if input video is flipped horizontally/vertically. Boolean values.
20545
20546 @item in_trans
20547 Set if input video is transposed. Boolean value, by default disabled.
20548
20549 @item out_trans
20550 Set if output video needs to be transposed. Boolean value, by default disabled.
20551
20552 @item alpha_mask
20553 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
20554 @end table
20555
20556 @subsection Examples
20557
20558 @itemize
20559 @item
20560 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
20561 @example
20562 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
20563 @end example
20564 @item
20565 Extract back view of Equi-Angular Cubemap:
20566 @example
20567 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
20568 @end example
20569 @item
20570 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
20571 @example
20572 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
20573 @end example
20574 @end itemize
20575
20576 @subsection Commands
20577
20578 This filter supports subset of above options as @ref{commands}.
20579
20580 @section vaguedenoiser
20581
20582 Apply a wavelet based denoiser.
20583
20584 It transforms each frame from the video input into the wavelet domain,
20585 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
20586 the obtained coefficients. It does an inverse wavelet transform after.
20587 Due to wavelet properties, it should give a nice smoothed result, and
20588 reduced noise, without blurring picture features.
20589
20590 This filter accepts the following options:
20591
20592 @table @option
20593 @item threshold
20594 The filtering strength. The higher, the more filtered the video will be.
20595 Hard thresholding can use a higher threshold than soft thresholding
20596 before the video looks overfiltered. Default value is 2.
20597
20598 @item method
20599 The filtering method the filter will use.
20600
20601 It accepts the following values:
20602 @table @samp
20603 @item hard
20604 All values under the threshold will be zeroed.
20605
20606 @item soft
20607 All values under the threshold will be zeroed. All values above will be
20608 reduced by the threshold.
20609
20610 @item garrote
20611 Scales or nullifies coefficients - intermediary between (more) soft and
20612 (less) hard thresholding.
20613 @end table
20614
20615 Default is garrote.
20616
20617 @item nsteps
20618 Number of times, the wavelet will decompose the picture. Picture can't
20619 be decomposed beyond a particular point (typically, 8 for a 640x480
20620 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
20621
20622 @item percent
20623 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
20624
20625 @item planes
20626 A list of the planes to process. By default all planes are processed.
20627
20628 @item type
20629 The threshold type the filter will use.
20630
20631 It accepts the following values:
20632 @table @samp
20633 @item universal
20634 Threshold used is same for all decompositions.
20635
20636 @item bayes
20637 Threshold used depends also on each decomposition coefficients.
20638 @end table
20639
20640 Default is universal.
20641 @end table
20642
20643 @section vectorscope
20644
20645 Display 2 color component values in the two dimensional graph (which is called
20646 a vectorscope).
20647
20648 This filter accepts the following options:
20649
20650 @table @option
20651 @item mode, m
20652 Set vectorscope mode.
20653
20654 It accepts the following values:
20655 @table @samp
20656 @item gray
20657 @item tint
20658 Gray values are displayed on graph, higher brightness means more pixels have
20659 same component color value on location in graph. This is the default mode.
20660
20661 @item color
20662 Gray values are displayed on graph. Surrounding pixels values which are not
20663 present in video frame are drawn in gradient of 2 color components which are
20664 set by option @code{x} and @code{y}. The 3rd color component is static.
20665
20666 @item color2
20667 Actual color components values present in video frame are displayed on graph.
20668
20669 @item color3
20670 Similar as color2 but higher frequency of same values @code{x} and @code{y}
20671 on graph increases value of another color component, which is luminance by
20672 default values of @code{x} and @code{y}.
20673
20674 @item color4
20675 Actual colors present in video frame are displayed on graph. If two different
20676 colors map to same position on graph then color with higher value of component
20677 not present in graph is picked.
20678
20679 @item color5
20680 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
20681 component picked from radial gradient.
20682 @end table
20683
20684 @item x
20685 Set which color component will be represented on X-axis. Default is @code{1}.
20686
20687 @item y
20688 Set which color component will be represented on Y-axis. Default is @code{2}.
20689
20690 @item intensity, i
20691 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
20692 of color component which represents frequency of (X, Y) location in graph.
20693
20694 @item envelope, e
20695 @table @samp
20696 @item none
20697 No envelope, this is default.
20698
20699 @item instant
20700 Instant envelope, even darkest single pixel will be clearly highlighted.
20701
20702 @item peak
20703 Hold maximum and minimum values presented in graph over time. This way you
20704 can still spot out of range values without constantly looking at vectorscope.
20705
20706 @item peak+instant
20707 Peak and instant envelope combined together.
20708 @end table
20709
20710 @item graticule, g
20711 Set what kind of graticule to draw.
20712 @table @samp
20713 @item none
20714 @item green
20715 @item color
20716 @item invert
20717 @end table
20718
20719 @item opacity, o
20720 Set graticule opacity.
20721
20722 @item flags, f
20723 Set graticule flags.
20724
20725 @table @samp
20726 @item white
20727 Draw graticule for white point.
20728
20729 @item black
20730 Draw graticule for black point.
20731
20732 @item name
20733 Draw color points short names.
20734 @end table
20735
20736 @item bgopacity, b
20737 Set background opacity.
20738
20739 @item lthreshold, l
20740 Set low threshold for color component not represented on X or Y axis.
20741 Values lower than this value will be ignored. Default is 0.
20742 Note this value is multiplied with actual max possible value one pixel component
20743 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
20744 is 0.1 * 255 = 25.
20745
20746 @item hthreshold, h
20747 Set high threshold for color component not represented on X or Y axis.
20748 Values higher than this value will be ignored. Default is 1.
20749 Note this value is multiplied with actual max possible value one pixel component
20750 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
20751 is 0.9 * 255 = 230.
20752
20753 @item colorspace, c
20754 Set what kind of colorspace to use when drawing graticule.
20755 @table @samp
20756 @item auto
20757 @item 601
20758 @item 709
20759 @end table
20760 Default is auto.
20761
20762 @item tint0, t0
20763 @item tint1, t1
20764 Set color tint for gray/tint vectorscope mode. By default both options are zero.
20765 This means no tint, and output will remain gray.
20766 @end table
20767
20768 @anchor{vidstabdetect}
20769 @section vidstabdetect
20770
20771 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
20772 @ref{vidstabtransform} for pass 2.
20773
20774 This filter generates a file with relative translation and rotation
20775 transform information about subsequent frames, which is then used by
20776 the @ref{vidstabtransform} filter.
20777
20778 To enable compilation of this filter you need to configure FFmpeg with
20779 @code{--enable-libvidstab}.
20780
20781 This filter accepts the following options:
20782
20783 @table @option
20784 @item result
20785 Set the path to the file used to write the transforms information.
20786 Default value is @file{transforms.trf}.
20787
20788 @item shakiness
20789 Set how shaky the video is and how quick the camera is. It accepts an
20790 integer in the range 1-10, a value of 1 means little shakiness, a
20791 value of 10 means strong shakiness. Default value is 5.
20792
20793 @item accuracy
20794 Set the accuracy of the detection process. It must be a value in the
20795 range 1-15. A value of 1 means low accuracy, a value of 15 means high
20796 accuracy. Default value is 15.
20797
20798 @item stepsize
20799 Set stepsize of the search process. The region around minimum is
20800 scanned with 1 pixel resolution. Default value is 6.
20801
20802 @item mincontrast
20803 Set minimum contrast. Below this value a local measurement field is
20804 discarded. Must be a floating point value in the range 0-1. Default
20805 value is 0.3.
20806
20807 @item tripod
20808 Set reference frame number for tripod mode.
20809
20810 If enabled, the motion of the frames is compared to a reference frame
20811 in the filtered stream, identified by the specified number. The idea
20812 is to compensate all movements in a more-or-less static scene and keep
20813 the camera view absolutely still.
20814
20815 If set to 0, it is disabled. The frames are counted starting from 1.
20816
20817 @item show
20818 Show fields and transforms in the resulting frames. It accepts an
20819 integer in the range 0-2. Default value is 0, which disables any
20820 visualization.
20821 @end table
20822
20823 @subsection Examples
20824
20825 @itemize
20826 @item
20827 Use default values:
20828 @example
20829 vidstabdetect
20830 @end example
20831
20832 @item
20833 Analyze strongly shaky movie and put the results in file
20834 @file{mytransforms.trf}:
20835 @example
20836 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
20837 @end example
20838
20839 @item
20840 Visualize the result of internal transformations in the resulting
20841 video:
20842 @example
20843 vidstabdetect=show=1
20844 @end example
20845
20846 @item
20847 Analyze a video with medium shakiness using @command{ffmpeg}:
20848 @example
20849 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
20850 @end example
20851 @end itemize
20852
20853 @anchor{vidstabtransform}
20854 @section vidstabtransform
20855
20856 Video stabilization/deshaking: pass 2 of 2,
20857 see @ref{vidstabdetect} for pass 1.
20858
20859 Read a file with transform information for each frame and
20860 apply/compensate them. Together with the @ref{vidstabdetect}
20861 filter this can be used to deshake videos. See also
20862 @url{http://public.hronopik.de/vid.stab}. It is important to also use
20863 the @ref{unsharp} filter, see below.
20864
20865 To enable compilation of this filter you need to configure FFmpeg with
20866 @code{--enable-libvidstab}.
20867
20868 @subsection Options
20869
20870 @table @option
20871 @item input
20872 Set path to the file used to read the transforms. Default value is
20873 @file{transforms.trf}.
20874
20875 @item smoothing
20876 Set the number of frames (value*2 + 1) used for lowpass filtering the
20877 camera movements. Default value is 10.
20878
20879 For example a number of 10 means that 21 frames are used (10 in the
20880 past and 10 in the future) to smoothen the motion in the video. A
20881 larger value leads to a smoother video, but limits the acceleration of
20882 the camera (pan/tilt movements). 0 is a special case where a static
20883 camera is simulated.
20884
20885 @item optalgo
20886 Set the camera path optimization algorithm.
20887
20888 Accepted values are:
20889 @table @samp
20890 @item gauss
20891 gaussian kernel low-pass filter on camera motion (default)
20892 @item avg
20893 averaging on transformations
20894 @end table
20895
20896 @item maxshift
20897 Set maximal number of pixels to translate frames. Default value is -1,
20898 meaning no limit.
20899
20900 @item maxangle
20901 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
20902 value is -1, meaning no limit.
20903
20904 @item crop
20905 Specify how to deal with borders that may be visible due to movement
20906 compensation.
20907
20908 Available values are:
20909 @table @samp
20910 @item keep
20911 keep image information from previous frame (default)
20912 @item black
20913 fill the border black
20914 @end table
20915
20916 @item invert
20917 Invert transforms if set to 1. Default value is 0.
20918
20919 @item relative
20920 Consider transforms as relative to previous frame if set to 1,
20921 absolute if set to 0. Default value is 0.
20922
20923 @item zoom
20924 Set percentage to zoom. A positive value will result in a zoom-in
20925 effect, a negative value in a zoom-out effect. Default value is 0 (no
20926 zoom).
20927
20928 @item optzoom
20929 Set optimal zooming to avoid borders.
20930
20931 Accepted values are:
20932 @table @samp
20933 @item 0
20934 disabled
20935 @item 1
20936 optimal static zoom value is determined (only very strong movements
20937 will lead to visible borders) (default)
20938 @item 2
20939 optimal adaptive zoom value is determined (no borders will be
20940 visible), see @option{zoomspeed}
20941 @end table
20942
20943 Note that the value given at zoom is added to the one calculated here.
20944
20945 @item zoomspeed
20946 Set percent to zoom maximally each frame (enabled when
20947 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
20948 0.25.
20949
20950 @item interpol
20951 Specify type of interpolation.
20952
20953 Available values are:
20954 @table @samp
20955 @item no
20956 no interpolation
20957 @item linear
20958 linear only horizontal
20959 @item bilinear
20960 linear in both directions (default)
20961 @item bicubic
20962 cubic in both directions (slow)
20963 @end table
20964
20965 @item tripod
20966 Enable virtual tripod mode if set to 1, which is equivalent to
20967 @code{relative=0:smoothing=0}. Default value is 0.
20968
20969 Use also @code{tripod} option of @ref{vidstabdetect}.
20970
20971 @item debug
20972 Increase log verbosity if set to 1. Also the detected global motions
20973 are written to the temporary file @file{global_motions.trf}. Default
20974 value is 0.
20975 @end table
20976
20977 @subsection Examples
20978
20979 @itemize
20980 @item
20981 Use @command{ffmpeg} for a typical stabilization with default values:
20982 @example
20983 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
20984 @end example
20985
20986 Note the use of the @ref{unsharp} filter which is always recommended.
20987
20988 @item
20989 Zoom in a bit more and load transform data from a given file:
20990 @example
20991 vidstabtransform=zoom=5:input="mytransforms.trf"
20992 @end example
20993
20994 @item
20995 Smoothen the video even more:
20996 @example
20997 vidstabtransform=smoothing=30
20998 @end example
20999 @end itemize
21000
21001 @section vflip
21002
21003 Flip the input video vertically.
21004
21005 For example, to vertically flip a video with @command{ffmpeg}:
21006 @example
21007 ffmpeg -i in.avi -vf "vflip" out.avi
21008 @end example
21009
21010 @section vfrdet
21011
21012 Detect variable frame rate video.
21013
21014 This filter tries to detect if the input is variable or constant frame rate.
21015
21016 At end it will output number of frames detected as having variable delta pts,
21017 and ones with constant delta pts.
21018 If there was frames with variable delta, than it will also show min, max and
21019 average delta encountered.
21020
21021 @section vibrance
21022
21023 Boost or alter saturation.
21024
21025 The filter accepts the following options:
21026 @table @option
21027 @item intensity
21028 Set strength of boost if positive value or strength of alter if negative value.
21029 Default is 0. Allowed range is from -2 to 2.
21030
21031 @item rbal
21032 Set the red balance. Default is 1. Allowed range is from -10 to 10.
21033
21034 @item gbal
21035 Set the green balance. Default is 1. Allowed range is from -10 to 10.
21036
21037 @item bbal
21038 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
21039
21040 @item rlum
21041 Set the red luma coefficient.
21042
21043 @item glum
21044 Set the green luma coefficient.
21045
21046 @item blum
21047 Set the blue luma coefficient.
21048
21049 @item alternate
21050 If @code{intensity} is negative and this is set to 1, colors will change,
21051 otherwise colors will be less saturated, more towards gray.
21052 @end table
21053
21054 @subsection Commands
21055
21056 This filter supports the all above options as @ref{commands}.
21057
21058 @anchor{vignette}
21059 @section vignette
21060
21061 Make or reverse a natural vignetting effect.
21062
21063 The filter accepts the following options:
21064
21065 @table @option
21066 @item angle, a
21067 Set lens angle expression as a number of radians.
21068
21069 The value is clipped in the @code{[0,PI/2]} range.
21070
21071 Default value: @code{"PI/5"}
21072
21073 @item x0
21074 @item y0
21075 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
21076 by default.
21077
21078 @item mode
21079 Set forward/backward mode.
21080
21081 Available modes are:
21082 @table @samp
21083 @item forward
21084 The larger the distance from the central point, the darker the image becomes.
21085
21086 @item backward
21087 The larger the distance from the central point, the brighter the image becomes.
21088 This can be used to reverse a vignette effect, though there is no automatic
21089 detection to extract the lens @option{angle} and other settings (yet). It can
21090 also be used to create a burning effect.
21091 @end table
21092
21093 Default value is @samp{forward}.
21094
21095 @item eval
21096 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
21097
21098 It accepts the following values:
21099 @table @samp
21100 @item init
21101 Evaluate expressions only once during the filter initialization.
21102
21103 @item frame
21104 Evaluate expressions for each incoming frame. This is way slower than the
21105 @samp{init} mode since it requires all the scalers to be re-computed, but it
21106 allows advanced dynamic expressions.
21107 @end table
21108
21109 Default value is @samp{init}.
21110
21111 @item dither
21112 Set dithering to reduce the circular banding effects. Default is @code{1}
21113 (enabled).
21114
21115 @item aspect
21116 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
21117 Setting this value to the SAR of the input will make a rectangular vignetting
21118 following the dimensions of the video.
21119
21120 Default is @code{1/1}.
21121 @end table
21122
21123 @subsection Expressions
21124
21125 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
21126 following parameters.
21127
21128 @table @option
21129 @item w
21130 @item h
21131 input width and height
21132
21133 @item n
21134 the number of input frame, starting from 0
21135
21136 @item pts
21137 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
21138 @var{TB} units, NAN if undefined
21139
21140 @item r
21141 frame rate of the input video, NAN if the input frame rate is unknown
21142
21143 @item t
21144 the PTS (Presentation TimeStamp) of the filtered video frame,
21145 expressed in seconds, NAN if undefined
21146
21147 @item tb
21148 time base of the input video
21149 @end table
21150
21151
21152 @subsection Examples
21153
21154 @itemize
21155 @item
21156 Apply simple strong vignetting effect:
21157 @example
21158 vignette=PI/4
21159 @end example
21160
21161 @item
21162 Make a flickering vignetting:
21163 @example
21164 vignette='PI/4+random(1)*PI/50':eval=frame
21165 @end example
21166
21167 @end itemize
21168
21169 @section vmafmotion
21170
21171 Obtain the average VMAF motion score of a video.
21172 It is one of the component metrics of VMAF.
21173
21174 The obtained average motion score is printed through the logging system.
21175
21176 The filter accepts the following options:
21177
21178 @table @option
21179 @item stats_file
21180 If specified, the filter will use the named file to save the motion score of
21181 each frame with respect to the previous frame.
21182 When filename equals "-" the data is sent to standard output.
21183 @end table
21184
21185 Example:
21186 @example
21187 ffmpeg -i ref.mpg -vf vmafmotion -f null -
21188 @end example
21189
21190 @section vstack
21191 Stack input videos vertically.
21192
21193 All streams must be of same pixel format and of same width.
21194
21195 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
21196 to create same output.
21197
21198 The filter accepts the following options:
21199
21200 @table @option
21201 @item inputs
21202 Set number of input streams. Default is 2.
21203
21204 @item shortest
21205 If set to 1, force the output to terminate when the shortest input
21206 terminates. Default value is 0.
21207 @end table
21208
21209 @section w3fdif
21210
21211 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
21212 Deinterlacing Filter").
21213
21214 Based on the process described by Martin Weston for BBC R&D, and
21215 implemented based on the de-interlace algorithm written by Jim
21216 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
21217 uses filter coefficients calculated by BBC R&D.
21218
21219 This filter uses field-dominance information in frame to decide which
21220 of each pair of fields to place first in the output.
21221 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
21222
21223 There are two sets of filter coefficients, so called "simple"
21224 and "complex". Which set of filter coefficients is used can
21225 be set by passing an optional parameter:
21226
21227 @table @option
21228 @item filter
21229 Set the interlacing filter coefficients. Accepts one of the following values:
21230
21231 @table @samp
21232 @item simple
21233 Simple filter coefficient set.
21234 @item complex
21235 More-complex filter coefficient set.
21236 @end table
21237 Default value is @samp{complex}.
21238
21239 @item mode
21240 The interlacing mode to adopt. It accepts one of the following values:
21241
21242 @table @option
21243 @item frame
21244 Output one frame for each frame.
21245 @item field
21246 Output one frame for each field.
21247 @end table
21248
21249 The default value is @code{field}.
21250
21251 @item parity
21252 The picture field parity assumed for the input interlaced video. It accepts one
21253 of the following values:
21254
21255 @table @option
21256 @item tff
21257 Assume the top field is first.
21258 @item bff
21259 Assume the bottom field is first.
21260 @item auto
21261 Enable automatic detection of field parity.
21262 @end table
21263
21264 The default value is @code{auto}.
21265 If the interlacing is unknown or the decoder does not export this information,
21266 top field first will be assumed.
21267
21268 @item deint
21269 Specify which frames to deinterlace. Accepts one of the following values:
21270
21271 @table @samp
21272 @item all
21273 Deinterlace all frames,
21274 @item interlaced
21275 Only deinterlace frames marked as interlaced.
21276 @end table
21277
21278 Default value is @samp{all}.
21279 @end table
21280
21281 @subsection Commands
21282 This filter supports same @ref{commands} as options.
21283
21284 @section waveform
21285 Video waveform monitor.
21286
21287 The waveform monitor plots color component intensity. By default luminance
21288 only. Each column of the waveform corresponds to a column of pixels in the
21289 source video.
21290
21291 It accepts the following options:
21292
21293 @table @option
21294 @item mode, m
21295 Can be either @code{row}, or @code{column}. Default is @code{column}.
21296 In row mode, the graph on the left side represents color component value 0 and
21297 the right side represents value = 255. In column mode, the top side represents
21298 color component value = 0 and bottom side represents value = 255.
21299
21300 @item intensity, i
21301 Set intensity. Smaller values are useful to find out how many values of the same
21302 luminance are distributed across input rows/columns.
21303 Default value is @code{0.04}. Allowed range is [0, 1].
21304
21305 @item mirror, r
21306 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
21307 In mirrored mode, higher values will be represented on the left
21308 side for @code{row} mode and at the top for @code{column} mode. Default is
21309 @code{1} (mirrored).
21310
21311 @item display, d
21312 Set display mode.
21313 It accepts the following values:
21314 @table @samp
21315 @item overlay
21316 Presents information identical to that in the @code{parade}, except
21317 that the graphs representing color components are superimposed directly
21318 over one another.
21319
21320 This display mode makes it easier to spot relative differences or similarities
21321 in overlapping areas of the color components that are supposed to be identical,
21322 such as neutral whites, grays, or blacks.
21323
21324 @item stack
21325 Display separate graph for the color components side by side in
21326 @code{row} mode or one below the other in @code{column} mode.
21327
21328 @item parade
21329 Display separate graph for the color components side by side in
21330 @code{column} mode or one below the other in @code{row} mode.
21331
21332 Using this display mode makes it easy to spot color casts in the highlights
21333 and shadows of an image, by comparing the contours of the top and the bottom
21334 graphs of each waveform. Since whites, grays, and blacks are characterized
21335 by exactly equal amounts of red, green, and blue, neutral areas of the picture
21336 should display three waveforms of roughly equal width/height. If not, the
21337 correction is easy to perform by making level adjustments the three waveforms.
21338 @end table
21339 Default is @code{stack}.
21340
21341 @item components, c
21342 Set which color components to display. Default is 1, which means only luminance
21343 or red color component if input is in RGB colorspace. If is set for example to
21344 7 it will display all 3 (if) available color components.
21345
21346 @item envelope, e
21347 @table @samp
21348 @item none
21349 No envelope, this is default.
21350
21351 @item instant
21352 Instant envelope, minimum and maximum values presented in graph will be easily
21353 visible even with small @code{step} value.
21354
21355 @item peak
21356 Hold minimum and maximum values presented in graph across time. This way you
21357 can still spot out of range values without constantly looking at waveforms.
21358
21359 @item peak+instant
21360 Peak and instant envelope combined together.
21361 @end table
21362
21363 @item filter, f
21364 @table @samp
21365 @item lowpass
21366 No filtering, this is default.
21367
21368 @item flat
21369 Luma and chroma combined together.
21370
21371 @item aflat
21372 Similar as above, but shows difference between blue and red chroma.
21373
21374 @item xflat
21375 Similar as above, but use different colors.
21376
21377 @item yflat
21378 Similar as above, but again with different colors.
21379
21380 @item chroma
21381 Displays only chroma.
21382
21383 @item color
21384 Displays actual color value on waveform.
21385
21386 @item acolor
21387 Similar as above, but with luma showing frequency of chroma values.
21388 @end table
21389
21390 @item graticule, g
21391 Set which graticule to display.
21392
21393 @table @samp
21394 @item none
21395 Do not display graticule.
21396
21397 @item green
21398 Display green graticule showing legal broadcast ranges.
21399
21400 @item orange
21401 Display orange graticule showing legal broadcast ranges.
21402
21403 @item invert
21404 Display invert graticule showing legal broadcast ranges.
21405 @end table
21406
21407 @item opacity, o
21408 Set graticule opacity.
21409
21410 @item flags, fl
21411 Set graticule flags.
21412
21413 @table @samp
21414 @item numbers
21415 Draw numbers above lines. By default enabled.
21416
21417 @item dots
21418 Draw dots instead of lines.
21419 @end table
21420
21421 @item scale, s
21422 Set scale used for displaying graticule.
21423
21424 @table @samp
21425 @item digital
21426 @item millivolts
21427 @item ire
21428 @end table
21429 Default is digital.
21430
21431 @item bgopacity, b
21432 Set background opacity.
21433
21434 @item tint0, t0
21435 @item tint1, t1
21436 Set tint for output.
21437 Only used with lowpass filter and when display is not overlay and input
21438 pixel formats are not RGB.
21439 @end table
21440
21441 @section weave, doubleweave
21442
21443 The @code{weave} takes a field-based video input and join
21444 each two sequential fields into single frame, producing a new double
21445 height clip with half the frame rate and half the frame count.
21446
21447 The @code{doubleweave} works same as @code{weave} but without
21448 halving frame rate and frame count.
21449
21450 It accepts the following option:
21451
21452 @table @option
21453 @item first_field
21454 Set first field. Available values are:
21455
21456 @table @samp
21457 @item top, t
21458 Set the frame as top-field-first.
21459
21460 @item bottom, b
21461 Set the frame as bottom-field-first.
21462 @end table
21463 @end table
21464
21465 @subsection Examples
21466
21467 @itemize
21468 @item
21469 Interlace video using @ref{select} and @ref{separatefields} filter:
21470 @example
21471 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
21472 @end example
21473 @end itemize
21474
21475 @section xbr
21476 Apply the xBR high-quality magnification filter which is designed for pixel
21477 art. It follows a set of edge-detection rules, see
21478 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
21479
21480 It accepts the following option:
21481
21482 @table @option
21483 @item n
21484 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
21485 @code{3xBR} and @code{4} for @code{4xBR}.
21486 Default is @code{3}.
21487 @end table
21488
21489 @section xfade
21490
21491 Apply cross fade from one input video stream to another input video stream.
21492 The cross fade is applied for specified duration.
21493
21494 The filter accepts the following options:
21495
21496 @table @option
21497 @item transition
21498 Set one of available transition effects:
21499
21500 @table @samp
21501 @item custom
21502 @item fade
21503 @item wipeleft
21504 @item wiperight
21505 @item wipeup
21506 @item wipedown
21507 @item slideleft
21508 @item slideright
21509 @item slideup
21510 @item slidedown
21511 @item circlecrop
21512 @item rectcrop
21513 @item distance
21514 @item fadeblack
21515 @item fadewhite
21516 @item radial
21517 @item smoothleft
21518 @item smoothright
21519 @item smoothup
21520 @item smoothdown
21521 @item circleopen
21522 @item circleclose
21523 @item vertopen
21524 @item vertclose
21525 @item horzopen
21526 @item horzclose
21527 @item dissolve
21528 @item pixelize
21529 @item diagtl
21530 @item diagtr
21531 @item diagbl
21532 @item diagbr
21533 @item hlslice
21534 @item hrslice
21535 @item vuslice
21536 @item vdslice
21537 @item hblur
21538 @item fadegrays
21539 @item wipetl
21540 @item wipetr
21541 @item wipebl
21542 @item wipebr
21543 @item squeezeh
21544 @item squeezev
21545 @end table
21546 Default transition effect is fade.
21547
21548 @item duration
21549 Set cross fade duration in seconds.
21550 Default duration is 1 second.
21551
21552 @item offset
21553 Set cross fade start relative to first input stream in seconds.
21554 Default offset is 0.
21555
21556 @item expr
21557 Set expression for custom transition effect.
21558
21559 The expressions can use the following variables and functions:
21560
21561 @table @option
21562 @item X
21563 @item Y
21564 The coordinates of the current sample.
21565
21566 @item W
21567 @item H
21568 The width and height of the image.
21569
21570 @item P
21571 Progress of transition effect.
21572
21573 @item PLANE
21574 Currently processed plane.
21575
21576 @item A
21577 Return value of first input at current location and plane.
21578
21579 @item B
21580 Return value of second input at current location and plane.
21581
21582 @item a0(x, y)
21583 @item a1(x, y)
21584 @item a2(x, y)
21585 @item a3(x, y)
21586 Return the value of the pixel at location (@var{x},@var{y}) of the
21587 first/second/third/fourth component of first input.
21588
21589 @item b0(x, y)
21590 @item b1(x, y)
21591 @item b2(x, y)
21592 @item b3(x, y)
21593 Return the value of the pixel at location (@var{x},@var{y}) of the
21594 first/second/third/fourth component of second input.
21595 @end table
21596 @end table
21597
21598 @subsection Examples
21599
21600 @itemize
21601 @item
21602 Cross fade from one input video to another input video, with fade transition and duration of transition
21603 of 2 seconds starting at offset of 5 seconds:
21604 @example
21605 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
21606 @end example
21607 @end itemize
21608
21609 @section xmedian
21610 Pick median pixels from several input videos.
21611
21612 The filter accepts the following options:
21613
21614 @table @option
21615 @item inputs
21616 Set number of inputs.
21617 Default is 3. Allowed range is from 3 to 255.
21618 If number of inputs is even number, than result will be mean value between two median values.
21619
21620 @item planes
21621 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
21622
21623 @item percentile
21624 Set median percentile. Default value is @code{0.5}.
21625 Default value of @code{0.5} will pick always median values, while @code{0} will pick
21626 minimum values, and @code{1} maximum values.
21627 @end table
21628
21629 @subsection Commands
21630
21631 This filter supports all above options as @ref{commands}, excluding option @code{inputs}.
21632
21633 @section xstack
21634 Stack video inputs into custom layout.
21635
21636 All streams must be of same pixel format.
21637
21638 The filter accepts the following options:
21639
21640 @table @option
21641 @item inputs
21642 Set number of input streams. Default is 2.
21643
21644 @item layout
21645 Specify layout of inputs.
21646 This option requires the desired layout configuration to be explicitly set by the user.
21647 This sets position of each video input in output. Each input
21648 is separated by '|'.
21649 The first number represents the column, and the second number represents the row.
21650 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
21651 where X is video input from which to take width or height.
21652 Multiple values can be used when separated by '+'. In such
21653 case values are summed together.
21654
21655 Note that if inputs are of different sizes gaps may appear, as not all of
21656 the output video frame will be filled. Similarly, videos can overlap each
21657 other if their position doesn't leave enough space for the full frame of
21658 adjoining videos.
21659
21660 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
21661 a layout must be set by the user.
21662
21663 @item shortest
21664 If set to 1, force the output to terminate when the shortest input
21665 terminates. Default value is 0.
21666
21667 @item fill
21668 If set to valid color, all unused pixels will be filled with that color.
21669 By default fill is set to none, so it is disabled.
21670 @end table
21671
21672 @subsection Examples
21673
21674 @itemize
21675 @item
21676 Display 4 inputs into 2x2 grid.
21677
21678 Layout:
21679 @example
21680 input1(0, 0)  | input3(w0, 0)
21681 input2(0, h0) | input4(w0, h0)
21682 @end example
21683
21684 @example
21685 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
21686 @end example
21687
21688 Note that if inputs are of different sizes, gaps or overlaps may occur.
21689
21690 @item
21691 Display 4 inputs into 1x4 grid.
21692
21693 Layout:
21694 @example
21695 input1(0, 0)
21696 input2(0, h0)
21697 input3(0, h0+h1)
21698 input4(0, h0+h1+h2)
21699 @end example
21700
21701 @example
21702 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
21703 @end example
21704
21705 Note that if inputs are of different widths, unused space will appear.
21706
21707 @item
21708 Display 9 inputs into 3x3 grid.
21709
21710 Layout:
21711 @example
21712 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
21713 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
21714 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
21715 @end example
21716
21717 @example
21718 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
21719 @end example
21720
21721 Note that if inputs are of different sizes, gaps or overlaps may occur.
21722
21723 @item
21724 Display 16 inputs into 4x4 grid.
21725
21726 Layout:
21727 @example
21728 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
21729 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
21730 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
21731 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
21732 @end example
21733
21734 @example
21735 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|
21736 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
21737 @end example
21738
21739 Note that if inputs are of different sizes, gaps or overlaps may occur.
21740
21741 @end itemize
21742
21743 @anchor{yadif}
21744 @section yadif
21745
21746 Deinterlace the input video ("yadif" means "yet another deinterlacing
21747 filter").
21748
21749 It accepts the following parameters:
21750
21751
21752 @table @option
21753
21754 @item mode
21755 The interlacing mode to adopt. It accepts one of the following values:
21756
21757 @table @option
21758 @item 0, send_frame
21759 Output one frame for each frame.
21760 @item 1, send_field
21761 Output one frame for each field.
21762 @item 2, send_frame_nospatial
21763 Like @code{send_frame}, but it skips the spatial interlacing check.
21764 @item 3, send_field_nospatial
21765 Like @code{send_field}, but it skips the spatial interlacing check.
21766 @end table
21767
21768 The default value is @code{send_frame}.
21769
21770 @item parity
21771 The picture field parity assumed for the input interlaced video. It accepts one
21772 of the following values:
21773
21774 @table @option
21775 @item 0, tff
21776 Assume the top field is first.
21777 @item 1, bff
21778 Assume the bottom field is first.
21779 @item -1, auto
21780 Enable automatic detection of field parity.
21781 @end table
21782
21783 The default value is @code{auto}.
21784 If the interlacing is unknown or the decoder does not export this information,
21785 top field first will be assumed.
21786
21787 @item deint
21788 Specify which frames to deinterlace. Accepts one of the following
21789 values:
21790
21791 @table @option
21792 @item 0, all
21793 Deinterlace all frames.
21794 @item 1, interlaced
21795 Only deinterlace frames marked as interlaced.
21796 @end table
21797
21798 The default value is @code{all}.
21799 @end table
21800
21801 @section yadif_cuda
21802
21803 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
21804 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
21805 and/or nvenc.
21806
21807 It accepts the following parameters:
21808
21809
21810 @table @option
21811
21812 @item mode
21813 The interlacing mode to adopt. It accepts one of the following values:
21814
21815 @table @option
21816 @item 0, send_frame
21817 Output one frame for each frame.
21818 @item 1, send_field
21819 Output one frame for each field.
21820 @item 2, send_frame_nospatial
21821 Like @code{send_frame}, but it skips the spatial interlacing check.
21822 @item 3, send_field_nospatial
21823 Like @code{send_field}, but it skips the spatial interlacing check.
21824 @end table
21825
21826 The default value is @code{send_frame}.
21827
21828 @item parity
21829 The picture field parity assumed for the input interlaced video. It accepts one
21830 of the following values:
21831
21832 @table @option
21833 @item 0, tff
21834 Assume the top field is first.
21835 @item 1, bff
21836 Assume the bottom field is first.
21837 @item -1, auto
21838 Enable automatic detection of field parity.
21839 @end table
21840
21841 The default value is @code{auto}.
21842 If the interlacing is unknown or the decoder does not export this information,
21843 top field first will be assumed.
21844
21845 @item deint
21846 Specify which frames to deinterlace. Accepts one of the following
21847 values:
21848
21849 @table @option
21850 @item 0, all
21851 Deinterlace all frames.
21852 @item 1, interlaced
21853 Only deinterlace frames marked as interlaced.
21854 @end table
21855
21856 The default value is @code{all}.
21857 @end table
21858
21859 @section yaepblur
21860
21861 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
21862 The algorithm is described in
21863 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
21864
21865 It accepts the following parameters:
21866
21867 @table @option
21868 @item radius, r
21869 Set the window radius. Default value is 3.
21870
21871 @item planes, p
21872 Set which planes to filter. Default is only the first plane.
21873
21874 @item sigma, s
21875 Set blur strength. Default value is 128.
21876 @end table
21877
21878 @subsection Commands
21879 This filter supports same @ref{commands} as options.
21880
21881 @section zoompan
21882
21883 Apply Zoom & Pan effect.
21884
21885 This filter accepts the following options:
21886
21887 @table @option
21888 @item zoom, z
21889 Set the zoom expression. Range is 1-10. Default is 1.
21890
21891 @item x
21892 @item y
21893 Set the x and y expression. Default is 0.
21894
21895 @item d
21896 Set the duration expression in number of frames.
21897 This sets for how many number of frames effect will last for
21898 single input image.
21899
21900 @item s
21901 Set the output image size, default is 'hd720'.
21902
21903 @item fps
21904 Set the output frame rate, default is '25'.
21905 @end table
21906
21907 Each expression can contain the following constants:
21908
21909 @table @option
21910 @item in_w, iw
21911 Input width.
21912
21913 @item in_h, ih
21914 Input height.
21915
21916 @item out_w, ow
21917 Output width.
21918
21919 @item out_h, oh
21920 Output height.
21921
21922 @item in
21923 Input frame count.
21924
21925 @item on
21926 Output frame count.
21927
21928 @item in_time, it
21929 The input timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
21930
21931 @item out_time, time, ot
21932 The output timestamp expressed in seconds.
21933
21934 @item x
21935 @item y
21936 Last calculated 'x' and 'y' position from 'x' and 'y' expression
21937 for current input frame.
21938
21939 @item px
21940 @item py
21941 'x' and 'y' of last output frame of previous input frame or 0 when there was
21942 not yet such frame (first input frame).
21943
21944 @item zoom
21945 Last calculated zoom from 'z' expression for current input frame.
21946
21947 @item pzoom
21948 Last calculated zoom of last output frame of previous input frame.
21949
21950 @item duration
21951 Number of output frames for current input frame. Calculated from 'd' expression
21952 for each input frame.
21953
21954 @item pduration
21955 number of output frames created for previous input frame
21956
21957 @item a
21958 Rational number: input width / input height
21959
21960 @item sar
21961 sample aspect ratio
21962
21963 @item dar
21964 display aspect ratio
21965
21966 @end table
21967
21968 @subsection Examples
21969
21970 @itemize
21971 @item
21972 Zoom in up to 1.5x and pan at same time to some spot near center of picture:
21973 @example
21974 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
21975 @end example
21976
21977 @item
21978 Zoom in up to 1.5x and pan always at center of picture:
21979 @example
21980 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21981 @end example
21982
21983 @item
21984 Same as above but without pausing:
21985 @example
21986 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21987 @end example
21988
21989 @item
21990 Zoom in 2x into center of picture only for the first second of the input video:
21991 @example
21992 zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21993 @end example
21994
21995 @end itemize
21996
21997 @anchor{zscale}
21998 @section zscale
21999 Scale (resize) the input video, using the z.lib library:
22000 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
22001 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
22002
22003 The zscale filter forces the output display aspect ratio to be the same
22004 as the input, by changing the output sample aspect ratio.
22005
22006 If the input image format is different from the format requested by
22007 the next filter, the zscale filter will convert the input to the
22008 requested format.
22009
22010 @subsection Options
22011 The filter accepts the following options.
22012
22013 @table @option
22014 @item width, w
22015 @item height, h
22016 Set the output video dimension expression. Default value is the input
22017 dimension.
22018
22019 If the @var{width} or @var{w} value is 0, the input width is used for
22020 the output. If the @var{height} or @var{h} value is 0, the input height
22021 is used for the output.
22022
22023 If one and only one of the values is -n with n >= 1, the zscale filter
22024 will use a value that maintains the aspect ratio of the input image,
22025 calculated from the other specified dimension. After that it will,
22026 however, make sure that the calculated dimension is divisible by n and
22027 adjust the value if necessary.
22028
22029 If both values are -n with n >= 1, the behavior will be identical to
22030 both values being set to 0 as previously detailed.
22031
22032 See below for the list of accepted constants for use in the dimension
22033 expression.
22034
22035 @item size, s
22036 Set the video size. For the syntax of this option, check the
22037 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22038
22039 @item dither, d
22040 Set the dither type.
22041
22042 Possible values are:
22043 @table @var
22044 @item none
22045 @item ordered
22046 @item random
22047 @item error_diffusion
22048 @end table
22049
22050 Default is none.
22051
22052 @item filter, f
22053 Set the resize filter type.
22054
22055 Possible values are:
22056 @table @var
22057 @item point
22058 @item bilinear
22059 @item bicubic
22060 @item spline16
22061 @item spline36
22062 @item lanczos
22063 @end table
22064
22065 Default is bilinear.
22066
22067 @item range, r
22068 Set the color range.
22069
22070 Possible values are:
22071 @table @var
22072 @item input
22073 @item limited
22074 @item full
22075 @end table
22076
22077 Default is same as input.
22078
22079 @item primaries, p
22080 Set the color primaries.
22081
22082 Possible values are:
22083 @table @var
22084 @item input
22085 @item 709
22086 @item unspecified
22087 @item 170m
22088 @item 240m
22089 @item 2020
22090 @end table
22091
22092 Default is same as input.
22093
22094 @item transfer, t
22095 Set the transfer characteristics.
22096
22097 Possible values are:
22098 @table @var
22099 @item input
22100 @item 709
22101 @item unspecified
22102 @item 601
22103 @item linear
22104 @item 2020_10
22105 @item 2020_12
22106 @item smpte2084
22107 @item iec61966-2-1
22108 @item arib-std-b67
22109 @end table
22110
22111 Default is same as input.
22112
22113 @item matrix, m
22114 Set the colorspace matrix.
22115
22116 Possible value are:
22117 @table @var
22118 @item input
22119 @item 709
22120 @item unspecified
22121 @item 470bg
22122 @item 170m
22123 @item 2020_ncl
22124 @item 2020_cl
22125 @end table
22126
22127 Default is same as input.
22128
22129 @item rangein, rin
22130 Set the input color range.
22131
22132 Possible values are:
22133 @table @var
22134 @item input
22135 @item limited
22136 @item full
22137 @end table
22138
22139 Default is same as input.
22140
22141 @item primariesin, pin
22142 Set the input color primaries.
22143
22144 Possible values are:
22145 @table @var
22146 @item input
22147 @item 709
22148 @item unspecified
22149 @item 170m
22150 @item 240m
22151 @item 2020
22152 @end table
22153
22154 Default is same as input.
22155
22156 @item transferin, tin
22157 Set the input transfer characteristics.
22158
22159 Possible values are:
22160 @table @var
22161 @item input
22162 @item 709
22163 @item unspecified
22164 @item 601
22165 @item linear
22166 @item 2020_10
22167 @item 2020_12
22168 @end table
22169
22170 Default is same as input.
22171
22172 @item matrixin, min
22173 Set the input colorspace matrix.
22174
22175 Possible value are:
22176 @table @var
22177 @item input
22178 @item 709
22179 @item unspecified
22180 @item 470bg
22181 @item 170m
22182 @item 2020_ncl
22183 @item 2020_cl
22184 @end table
22185
22186 @item chromal, c
22187 Set the output chroma location.
22188
22189 Possible values are:
22190 @table @var
22191 @item input
22192 @item left
22193 @item center
22194 @item topleft
22195 @item top
22196 @item bottomleft
22197 @item bottom
22198 @end table
22199
22200 @item chromalin, cin
22201 Set the input chroma location.
22202
22203 Possible values are:
22204 @table @var
22205 @item input
22206 @item left
22207 @item center
22208 @item topleft
22209 @item top
22210 @item bottomleft
22211 @item bottom
22212 @end table
22213
22214 @item npl
22215 Set the nominal peak luminance.
22216 @end table
22217
22218 The values of the @option{w} and @option{h} options are expressions
22219 containing the following constants:
22220
22221 @table @var
22222 @item in_w
22223 @item in_h
22224 The input width and height
22225
22226 @item iw
22227 @item ih
22228 These are the same as @var{in_w} and @var{in_h}.
22229
22230 @item out_w
22231 @item out_h
22232 The output (scaled) width and height
22233
22234 @item ow
22235 @item oh
22236 These are the same as @var{out_w} and @var{out_h}
22237
22238 @item a
22239 The same as @var{iw} / @var{ih}
22240
22241 @item sar
22242 input sample aspect ratio
22243
22244 @item dar
22245 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
22246
22247 @item hsub
22248 @item vsub
22249 horizontal and vertical input chroma subsample values. For example for the
22250 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
22251
22252 @item ohsub
22253 @item ovsub
22254 horizontal and vertical output chroma subsample values. For example for the
22255 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
22256 @end table
22257
22258 @subsection Commands
22259
22260 This filter supports the following commands:
22261 @table @option
22262 @item width, w
22263 @item height, h
22264 Set the output video dimension expression.
22265 The command accepts the same syntax of the corresponding option.
22266
22267 If the specified expression is not valid, it is kept at its current
22268 value.
22269 @end table
22270
22271 @c man end VIDEO FILTERS
22272
22273 @chapter OpenCL Video Filters
22274 @c man begin OPENCL VIDEO FILTERS
22275
22276 Below is a description of the currently available OpenCL video filters.
22277
22278 To enable compilation of these filters you need to configure FFmpeg with
22279 @code{--enable-opencl}.
22280
22281 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
22282 @table @option
22283
22284 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
22285 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
22286 given device parameters.
22287
22288 @item -filter_hw_device @var{name}
22289 Pass the hardware device called @var{name} to all filters in any filter graph.
22290
22291 @end table
22292
22293 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
22294
22295 @itemize
22296 @item
22297 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
22298 @example
22299 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
22300 @end example
22301 @end itemize
22302
22303 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.
22304
22305 @section avgblur_opencl
22306
22307 Apply average blur filter.
22308
22309 The filter accepts the following options:
22310
22311 @table @option
22312 @item sizeX
22313 Set horizontal radius size.
22314 Range is @code{[1, 1024]} and default value is @code{1}.
22315
22316 @item planes
22317 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22318
22319 @item sizeY
22320 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
22321 @end table
22322
22323 @subsection Example
22324
22325 @itemize
22326 @item
22327 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.
22328 @example
22329 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
22330 @end example
22331 @end itemize
22332
22333 @section boxblur_opencl
22334
22335 Apply a boxblur algorithm to the input video.
22336
22337 It accepts the following parameters:
22338
22339 @table @option
22340
22341 @item luma_radius, lr
22342 @item luma_power, lp
22343 @item chroma_radius, cr
22344 @item chroma_power, cp
22345 @item alpha_radius, ar
22346 @item alpha_power, ap
22347
22348 @end table
22349
22350 A description of the accepted options follows.
22351
22352 @table @option
22353 @item luma_radius, lr
22354 @item chroma_radius, cr
22355 @item alpha_radius, ar
22356 Set an expression for the box radius in pixels used for blurring the
22357 corresponding input plane.
22358
22359 The radius value must be a non-negative number, and must not be
22360 greater than the value of the expression @code{min(w,h)/2} for the
22361 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
22362 planes.
22363
22364 Default value for @option{luma_radius} is "2". If not specified,
22365 @option{chroma_radius} and @option{alpha_radius} default to the
22366 corresponding value set for @option{luma_radius}.
22367
22368 The expressions can contain the following constants:
22369 @table @option
22370 @item w
22371 @item h
22372 The input width and height in pixels.
22373
22374 @item cw
22375 @item ch
22376 The input chroma image width and height in pixels.
22377
22378 @item hsub
22379 @item vsub
22380 The horizontal and vertical chroma subsample values. For example, for the
22381 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
22382 @end table
22383
22384 @item luma_power, lp
22385 @item chroma_power, cp
22386 @item alpha_power, ap
22387 Specify how many times the boxblur filter is applied to the
22388 corresponding plane.
22389
22390 Default value for @option{luma_power} is 2. If not specified,
22391 @option{chroma_power} and @option{alpha_power} default to the
22392 corresponding value set for @option{luma_power}.
22393
22394 A value of 0 will disable the effect.
22395 @end table
22396
22397 @subsection Examples
22398
22399 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.
22400
22401 @itemize
22402 @item
22403 Apply a boxblur filter with the luma, chroma, and alpha radius
22404 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.
22405 @example
22406 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
22407 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
22408 @end example
22409
22410 @item
22411 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.
22412
22413 For the luma plane, a 2x2 box radius will be run once.
22414
22415 For the chroma plane, a 4x4 box radius will be run 5 times.
22416
22417 For the alpha plane, a 3x3 box radius will be run 7 times.
22418 @example
22419 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
22420 @end example
22421 @end itemize
22422
22423 @section colorkey_opencl
22424 RGB colorspace color keying.
22425
22426 The filter accepts the following options:
22427
22428 @table @option
22429 @item color
22430 The color which will be replaced with transparency.
22431
22432 @item similarity
22433 Similarity percentage with the key color.
22434
22435 0.01 matches only the exact key color, while 1.0 matches everything.
22436
22437 @item blend
22438 Blend percentage.
22439
22440 0.0 makes pixels either fully transparent, or not transparent at all.
22441
22442 Higher values result in semi-transparent pixels, with a higher transparency
22443 the more similar the pixels color is to the key color.
22444 @end table
22445
22446 @subsection Examples
22447
22448 @itemize
22449 @item
22450 Make every semi-green pixel in the input transparent with some slight blending:
22451 @example
22452 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
22453 @end example
22454 @end itemize
22455
22456 @section convolution_opencl
22457
22458 Apply convolution of 3x3, 5x5, 7x7 matrix.
22459
22460 The filter accepts the following options:
22461
22462 @table @option
22463 @item 0m
22464 @item 1m
22465 @item 2m
22466 @item 3m
22467 Set matrix for each plane.
22468 Matrix is sequence of 9, 25 or 49 signed numbers.
22469 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
22470
22471 @item 0rdiv
22472 @item 1rdiv
22473 @item 2rdiv
22474 @item 3rdiv
22475 Set multiplier for calculated value for each plane.
22476 If unset or 0, it will be sum of all matrix elements.
22477 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
22478
22479 @item 0bias
22480 @item 1bias
22481 @item 2bias
22482 @item 3bias
22483 Set bias for each plane. This value is added to the result of the multiplication.
22484 Useful for making the overall image brighter or darker.
22485 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
22486
22487 @end table
22488
22489 @subsection Examples
22490
22491 @itemize
22492 @item
22493 Apply sharpen:
22494 @example
22495 -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
22496 @end example
22497
22498 @item
22499 Apply blur:
22500 @example
22501 -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
22502 @end example
22503
22504 @item
22505 Apply edge enhance:
22506 @example
22507 -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
22508 @end example
22509
22510 @item
22511 Apply edge detect:
22512 @example
22513 -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
22514 @end example
22515
22516 @item
22517 Apply laplacian edge detector which includes diagonals:
22518 @example
22519 -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
22520 @end example
22521
22522 @item
22523 Apply emboss:
22524 @example
22525 -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
22526 @end example
22527 @end itemize
22528
22529 @section erosion_opencl
22530
22531 Apply erosion effect to the video.
22532
22533 This filter replaces the pixel by the local(3x3) minimum.
22534
22535 It accepts the following options:
22536
22537 @table @option
22538 @item threshold0
22539 @item threshold1
22540 @item threshold2
22541 @item threshold3
22542 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
22543 If @code{0}, plane will remain unchanged.
22544
22545 @item coordinates
22546 Flag which specifies the pixel to refer to.
22547 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
22548
22549 Flags to local 3x3 coordinates region centered on @code{x}:
22550
22551     1 2 3
22552
22553     4 x 5
22554
22555     6 7 8
22556 @end table
22557
22558 @subsection Example
22559
22560 @itemize
22561 @item
22562 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.
22563 @example
22564 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
22565 @end example
22566 @end itemize
22567
22568 @section deshake_opencl
22569 Feature-point based video stabilization filter.
22570
22571 The filter accepts the following options:
22572
22573 @table @option
22574 @item tripod
22575 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
22576
22577 @item debug
22578 Whether or not additional debug info should be displayed, both in the processed output and in the console.
22579
22580 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
22581
22582 Viewing point matches in the output video is only supported for RGB input.
22583
22584 Defaults to @code{0}.
22585
22586 @item adaptive_crop
22587 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
22588
22589 Defaults to @code{1}.
22590
22591 @item refine_features
22592 Whether or not feature points should be refined at a sub-pixel level.
22593
22594 This can be turned off for a slight performance gain at the cost of precision.
22595
22596 Defaults to @code{1}.
22597
22598 @item smooth_strength
22599 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
22600
22601 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
22602
22603 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
22604
22605 Defaults to @code{0.0}.
22606
22607 @item smooth_window_multiplier
22608 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
22609
22610 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
22611
22612 Acceptable values range from @code{0.1} to @code{10.0}.
22613
22614 Larger values increase the amount of motion data available for determining how to smooth the camera path,
22615 potentially improving smoothness, but also increase latency and memory usage.
22616
22617 Defaults to @code{2.0}.
22618
22619 @end table
22620
22621 @subsection Examples
22622
22623 @itemize
22624 @item
22625 Stabilize a video with a fixed, medium smoothing strength:
22626 @example
22627 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
22628 @end example
22629
22630 @item
22631 Stabilize a video with debugging (both in console and in rendered video):
22632 @example
22633 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
22634 @end example
22635 @end itemize
22636
22637 @section dilation_opencl
22638
22639 Apply dilation effect to the video.
22640
22641 This filter replaces the pixel by the local(3x3) maximum.
22642
22643 It accepts the following options:
22644
22645 @table @option
22646 @item threshold0
22647 @item threshold1
22648 @item threshold2
22649 @item threshold3
22650 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
22651 If @code{0}, plane will remain unchanged.
22652
22653 @item coordinates
22654 Flag which specifies the pixel to refer to.
22655 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
22656
22657 Flags to local 3x3 coordinates region centered on @code{x}:
22658
22659     1 2 3
22660
22661     4 x 5
22662
22663     6 7 8
22664 @end table
22665
22666 @subsection Example
22667
22668 @itemize
22669 @item
22670 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.
22671 @example
22672 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
22673 @end example
22674 @end itemize
22675
22676 @section nlmeans_opencl
22677
22678 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
22679
22680 @section overlay_opencl
22681
22682 Overlay one video on top of another.
22683
22684 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
22685 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
22686
22687 The filter accepts the following options:
22688
22689 @table @option
22690
22691 @item x
22692 Set the x coordinate of the overlaid video on the main video.
22693 Default value is @code{0}.
22694
22695 @item y
22696 Set the y coordinate of the overlaid video on the main video.
22697 Default value is @code{0}.
22698
22699 @end table
22700
22701 @subsection Examples
22702
22703 @itemize
22704 @item
22705 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
22706 @example
22707 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22708 @end example
22709 @item
22710 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
22711 @example
22712 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22713 @end example
22714
22715 @end itemize
22716
22717 @section pad_opencl
22718
22719 Add paddings to the input image, and place the original input at the
22720 provided @var{x}, @var{y} coordinates.
22721
22722 It accepts the following options:
22723
22724 @table @option
22725 @item width, w
22726 @item height, h
22727 Specify an expression for the size of the output image with the
22728 paddings added. If the value for @var{width} or @var{height} is 0, the
22729 corresponding input size is used for the output.
22730
22731 The @var{width} expression can reference the value set by the
22732 @var{height} expression, and vice versa.
22733
22734 The default value of @var{width} and @var{height} is 0.
22735
22736 @item x
22737 @item y
22738 Specify the offsets to place the input image at within the padded area,
22739 with respect to the top/left border of the output image.
22740
22741 The @var{x} expression can reference the value set by the @var{y}
22742 expression, and vice versa.
22743
22744 The default value of @var{x} and @var{y} is 0.
22745
22746 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
22747 so the input image is centered on the padded area.
22748
22749 @item color
22750 Specify the color of the padded area. For the syntax of this option,
22751 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
22752 manual,ffmpeg-utils}.
22753
22754 @item aspect
22755 Pad to an aspect instead to a resolution.
22756 @end table
22757
22758 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
22759 options are expressions containing the following constants:
22760
22761 @table @option
22762 @item in_w
22763 @item in_h
22764 The input video width and height.
22765
22766 @item iw
22767 @item ih
22768 These are the same as @var{in_w} and @var{in_h}.
22769
22770 @item out_w
22771 @item out_h
22772 The output width and height (the size of the padded area), as
22773 specified by the @var{width} and @var{height} expressions.
22774
22775 @item ow
22776 @item oh
22777 These are the same as @var{out_w} and @var{out_h}.
22778
22779 @item x
22780 @item y
22781 The x and y offsets as specified by the @var{x} and @var{y}
22782 expressions, or NAN if not yet specified.
22783
22784 @item a
22785 same as @var{iw} / @var{ih}
22786
22787 @item sar
22788 input sample aspect ratio
22789
22790 @item dar
22791 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
22792 @end table
22793
22794 @section prewitt_opencl
22795
22796 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
22797
22798 The filter accepts the following option:
22799
22800 @table @option
22801 @item planes
22802 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22803
22804 @item scale
22805 Set value which will be multiplied with filtered result.
22806 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22807
22808 @item delta
22809 Set value which will be added to filtered result.
22810 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22811 @end table
22812
22813 @subsection Example
22814
22815 @itemize
22816 @item
22817 Apply the Prewitt operator with scale set to 2 and delta set to 10.
22818 @example
22819 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
22820 @end example
22821 @end itemize
22822
22823 @anchor{program_opencl}
22824 @section program_opencl
22825
22826 Filter video using an OpenCL program.
22827
22828 @table @option
22829
22830 @item source
22831 OpenCL program source file.
22832
22833 @item kernel
22834 Kernel name in program.
22835
22836 @item inputs
22837 Number of inputs to the filter.  Defaults to 1.
22838
22839 @item size, s
22840 Size of output frames.  Defaults to the same as the first input.
22841
22842 @end table
22843
22844 The @code{program_opencl} filter also supports the @ref{framesync} options.
22845
22846 The program source file must contain a kernel function with the given name,
22847 which will be run once for each plane of the output.  Each run on a plane
22848 gets enqueued as a separate 2D global NDRange with one work-item for each
22849 pixel to be generated.  The global ID offset for each work-item is therefore
22850 the coordinates of a pixel in the destination image.
22851
22852 The kernel function needs to take the following arguments:
22853 @itemize
22854 @item
22855 Destination image, @var{__write_only image2d_t}.
22856
22857 This image will become the output; the kernel should write all of it.
22858 @item
22859 Frame index, @var{unsigned int}.
22860
22861 This is a counter starting from zero and increasing by one for each frame.
22862 @item
22863 Source images, @var{__read_only image2d_t}.
22864
22865 These are the most recent images on each input.  The kernel may read from
22866 them to generate the output, but they can't be written to.
22867 @end itemize
22868
22869 Example programs:
22870
22871 @itemize
22872 @item
22873 Copy the input to the output (output must be the same size as the input).
22874 @verbatim
22875 __kernel void copy(__write_only image2d_t destination,
22876                    unsigned int index,
22877                    __read_only  image2d_t source)
22878 {
22879     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
22880
22881     int2 location = (int2)(get_global_id(0), get_global_id(1));
22882
22883     float4 value = read_imagef(source, sampler, location);
22884
22885     write_imagef(destination, location, value);
22886 }
22887 @end verbatim
22888
22889 @item
22890 Apply a simple transformation, rotating the input by an amount increasing
22891 with the index counter.  Pixel values are linearly interpolated by the
22892 sampler, and the output need not have the same dimensions as the input.
22893 @verbatim
22894 __kernel void rotate_image(__write_only image2d_t dst,
22895                            unsigned int index,
22896                            __read_only  image2d_t src)
22897 {
22898     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22899                                CLK_FILTER_LINEAR);
22900
22901     float angle = (float)index / 100.0f;
22902
22903     float2 dst_dim = convert_float2(get_image_dim(dst));
22904     float2 src_dim = convert_float2(get_image_dim(src));
22905
22906     float2 dst_cen = dst_dim / 2.0f;
22907     float2 src_cen = src_dim / 2.0f;
22908
22909     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
22910
22911     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
22912     float2 src_pos = {
22913         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
22914         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
22915     };
22916     src_pos = src_pos * src_dim / dst_dim;
22917
22918     float2 src_loc = src_pos + src_cen;
22919
22920     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
22921         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
22922         write_imagef(dst, dst_loc, 0.5f);
22923     else
22924         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
22925 }
22926 @end verbatim
22927
22928 @item
22929 Blend two inputs together, with the amount of each input used varying
22930 with the index counter.
22931 @verbatim
22932 __kernel void blend_images(__write_only image2d_t dst,
22933                            unsigned int index,
22934                            __read_only  image2d_t src1,
22935                            __read_only  image2d_t src2)
22936 {
22937     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22938                                CLK_FILTER_LINEAR);
22939
22940     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
22941
22942     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
22943     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
22944     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
22945
22946     float4 val1 = read_imagef(src1, sampler, src1_loc);
22947     float4 val2 = read_imagef(src2, sampler, src2_loc);
22948
22949     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
22950 }
22951 @end verbatim
22952
22953 @end itemize
22954
22955 @section roberts_opencl
22956 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
22957
22958 The filter accepts the following option:
22959
22960 @table @option
22961 @item planes
22962 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22963
22964 @item scale
22965 Set value which will be multiplied with filtered result.
22966 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22967
22968 @item delta
22969 Set value which will be added to filtered result.
22970 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22971 @end table
22972
22973 @subsection Example
22974
22975 @itemize
22976 @item
22977 Apply the Roberts cross operator with scale set to 2 and delta set to 10
22978 @example
22979 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
22980 @end example
22981 @end itemize
22982
22983 @section sobel_opencl
22984
22985 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
22986
22987 The filter accepts the following option:
22988
22989 @table @option
22990 @item planes
22991 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22992
22993 @item scale
22994 Set value which will be multiplied with filtered result.
22995 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22996
22997 @item delta
22998 Set value which will be added to filtered result.
22999 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
23000 @end table
23001
23002 @subsection Example
23003
23004 @itemize
23005 @item
23006 Apply sobel operator with scale set to 2 and delta set to 10
23007 @example
23008 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
23009 @end example
23010 @end itemize
23011
23012 @section tonemap_opencl
23013
23014 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
23015
23016 It accepts the following parameters:
23017
23018 @table @option
23019 @item tonemap
23020 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
23021
23022 @item param
23023 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
23024
23025 @item desat
23026 Apply desaturation for highlights that exceed this level of brightness. The
23027 higher the parameter, the more color information will be preserved. This
23028 setting helps prevent unnaturally blown-out colors for super-highlights, by
23029 (smoothly) turning into white instead. This makes images feel more natural,
23030 at the cost of reducing information about out-of-range colors.
23031
23032 The default value is 0.5, and the algorithm here is a little different from
23033 the cpu version tonemap currently. A setting of 0.0 disables this option.
23034
23035 @item threshold
23036 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
23037 is used to detect whether the scene has changed or not. If the distance between
23038 the current frame average brightness and the current running average exceeds
23039 a threshold value, we would re-calculate scene average and peak brightness.
23040 The default value is 0.2.
23041
23042 @item format
23043 Specify the output pixel format.
23044
23045 Currently supported formats are:
23046 @table @var
23047 @item p010
23048 @item nv12
23049 @end table
23050
23051 @item range, r
23052 Set the output color range.
23053
23054 Possible values are:
23055 @table @var
23056 @item tv/mpeg
23057 @item pc/jpeg
23058 @end table
23059
23060 Default is same as input.
23061
23062 @item primaries, p
23063 Set the output color primaries.
23064
23065 Possible values are:
23066 @table @var
23067 @item bt709
23068 @item bt2020
23069 @end table
23070
23071 Default is same as input.
23072
23073 @item transfer, t
23074 Set the output transfer characteristics.
23075
23076 Possible values are:
23077 @table @var
23078 @item bt709
23079 @item bt2020
23080 @end table
23081
23082 Default is bt709.
23083
23084 @item matrix, m
23085 Set the output colorspace matrix.
23086
23087 Possible value are:
23088 @table @var
23089 @item bt709
23090 @item bt2020
23091 @end table
23092
23093 Default is same as input.
23094
23095 @end table
23096
23097 @subsection Example
23098
23099 @itemize
23100 @item
23101 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
23102 @example
23103 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
23104 @end example
23105 @end itemize
23106
23107 @section unsharp_opencl
23108
23109 Sharpen or blur the input video.
23110
23111 It accepts the following parameters:
23112
23113 @table @option
23114 @item luma_msize_x, lx
23115 Set the luma matrix horizontal size.
23116 Range is @code{[1, 23]} and default value is @code{5}.
23117
23118 @item luma_msize_y, ly
23119 Set the luma matrix vertical size.
23120 Range is @code{[1, 23]} and default value is @code{5}.
23121
23122 @item luma_amount, la
23123 Set the luma effect strength.
23124 Range is @code{[-10, 10]} and default value is @code{1.0}.
23125
23126 Negative values will blur the input video, while positive values will
23127 sharpen it, a value of zero will disable the effect.
23128
23129 @item chroma_msize_x, cx
23130 Set the chroma matrix horizontal size.
23131 Range is @code{[1, 23]} and default value is @code{5}.
23132
23133 @item chroma_msize_y, cy
23134 Set the chroma matrix vertical size.
23135 Range is @code{[1, 23]} and default value is @code{5}.
23136
23137 @item chroma_amount, ca
23138 Set the chroma effect strength.
23139 Range is @code{[-10, 10]} and default value is @code{0.0}.
23140
23141 Negative values will blur the input video, while positive values will
23142 sharpen it, a value of zero will disable the effect.
23143
23144 @end table
23145
23146 All parameters are optional and default to the equivalent of the
23147 string '5:5:1.0:5:5:0.0'.
23148
23149 @subsection Examples
23150
23151 @itemize
23152 @item
23153 Apply strong luma sharpen effect:
23154 @example
23155 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
23156 @end example
23157
23158 @item
23159 Apply a strong blur of both luma and chroma parameters:
23160 @example
23161 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
23162 @end example
23163 @end itemize
23164
23165 @section xfade_opencl
23166
23167 Cross fade two videos with custom transition effect by using OpenCL.
23168
23169 It accepts the following options:
23170
23171 @table @option
23172 @item transition
23173 Set one of possible transition effects.
23174
23175 @table @option
23176 @item custom
23177 Select custom transition effect, the actual transition description
23178 will be picked from source and kernel options.
23179
23180 @item fade
23181 @item wipeleft
23182 @item wiperight
23183 @item wipeup
23184 @item wipedown
23185 @item slideleft
23186 @item slideright
23187 @item slideup
23188 @item slidedown
23189
23190 Default transition is fade.
23191 @end table
23192
23193 @item source
23194 OpenCL program source file for custom transition.
23195
23196 @item kernel
23197 Set name of kernel to use for custom transition from program source file.
23198
23199 @item duration
23200 Set duration of video transition.
23201
23202 @item offset
23203 Set time of start of transition relative to first video.
23204 @end table
23205
23206 The program source file must contain a kernel function with the given name,
23207 which will be run once for each plane of the output.  Each run on a plane
23208 gets enqueued as a separate 2D global NDRange with one work-item for each
23209 pixel to be generated.  The global ID offset for each work-item is therefore
23210 the coordinates of a pixel in the destination image.
23211
23212 The kernel function needs to take the following arguments:
23213 @itemize
23214 @item
23215 Destination image, @var{__write_only image2d_t}.
23216
23217 This image will become the output; the kernel should write all of it.
23218
23219 @item
23220 First Source image, @var{__read_only image2d_t}.
23221 Second Source image, @var{__read_only image2d_t}.
23222
23223 These are the most recent images on each input.  The kernel may read from
23224 them to generate the output, but they can't be written to.
23225
23226 @item
23227 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
23228 @end itemize
23229
23230 Example programs:
23231
23232 @itemize
23233 @item
23234 Apply dots curtain transition effect:
23235 @verbatim
23236 __kernel void blend_images(__write_only image2d_t dst,
23237                            __read_only  image2d_t src1,
23238                            __read_only  image2d_t src2,
23239                            float progress)
23240 {
23241     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
23242                                CLK_FILTER_LINEAR);
23243     int2  p = (int2)(get_global_id(0), get_global_id(1));
23244     float2 rp = (float2)(get_global_id(0), get_global_id(1));
23245     float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
23246     rp = rp / dim;
23247
23248     float2 dots = (float2)(20.0, 20.0);
23249     float2 center = (float2)(0,0);
23250     float2 unused;
23251
23252     float4 val1 = read_imagef(src1, sampler, p);
23253     float4 val2 = read_imagef(src2, sampler, p);
23254     bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
23255
23256     write_imagef(dst, p, next ? val1 : val2);
23257 }
23258 @end verbatim
23259
23260 @end itemize
23261
23262 @c man end OPENCL VIDEO FILTERS
23263
23264 @chapter VAAPI Video Filters
23265 @c man begin VAAPI VIDEO FILTERS
23266
23267 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
23268
23269 To enable compilation of these filters you need to configure FFmpeg with
23270 @code{--enable-vaapi}.
23271
23272 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}
23273
23274 @section tonemap_vaapi
23275
23276 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
23277 It maps the dynamic range of HDR10 content to the SDR content.
23278 It currently only accepts HDR10 as input.
23279
23280 It accepts the following parameters:
23281
23282 @table @option
23283 @item format
23284 Specify the output pixel format.
23285
23286 Currently supported formats are:
23287 @table @var
23288 @item p010
23289 @item nv12
23290 @end table
23291
23292 Default is nv12.
23293
23294 @item primaries, p
23295 Set the output color primaries.
23296
23297 Default is same as input.
23298
23299 @item transfer, t
23300 Set the output transfer characteristics.
23301
23302 Default is bt709.
23303
23304 @item matrix, m
23305 Set the output colorspace matrix.
23306
23307 Default is same as input.
23308
23309 @end table
23310
23311 @subsection Example
23312
23313 @itemize
23314 @item
23315 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
23316 @example
23317 tonemap_vaapi=format=p010:t=bt2020-10
23318 @end example
23319 @end itemize
23320
23321 @c man end VAAPI VIDEO FILTERS
23322
23323 @chapter Video Sources
23324 @c man begin VIDEO SOURCES
23325
23326 Below is a description of the currently available video sources.
23327
23328 @section buffer
23329
23330 Buffer video frames, and make them available to the filter chain.
23331
23332 This source is mainly intended for a programmatic use, in particular
23333 through the interface defined in @file{libavfilter/buffersrc.h}.
23334
23335 It accepts the following parameters:
23336
23337 @table @option
23338
23339 @item video_size
23340 Specify the size (width and height) of the buffered video frames. For the
23341 syntax of this option, check the
23342 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23343
23344 @item width
23345 The input video width.
23346
23347 @item height
23348 The input video height.
23349
23350 @item pix_fmt
23351 A string representing the pixel format of the buffered video frames.
23352 It may be a number corresponding to a pixel format, or a pixel format
23353 name.
23354
23355 @item time_base
23356 Specify the timebase assumed by the timestamps of the buffered frames.
23357
23358 @item frame_rate
23359 Specify the frame rate expected for the video stream.
23360
23361 @item pixel_aspect, sar
23362 The sample (pixel) aspect ratio of the input video.
23363
23364 @item sws_param
23365 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
23366 to the filtergraph description to specify swscale flags for automatically
23367 inserted scalers. See @ref{Filtergraph syntax}.
23368
23369 @item hw_frames_ctx
23370 When using a hardware pixel format, this should be a reference to an
23371 AVHWFramesContext describing input frames.
23372 @end table
23373
23374 For example:
23375 @example
23376 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
23377 @end example
23378
23379 will instruct the source to accept video frames with size 320x240 and
23380 with format "yuv410p", assuming 1/24 as the timestamps timebase and
23381 square pixels (1:1 sample aspect ratio).
23382 Since the pixel format with name "yuv410p" corresponds to the number 6
23383 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
23384 this example corresponds to:
23385 @example
23386 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
23387 @end example
23388
23389 Alternatively, the options can be specified as a flat string, but this
23390 syntax is deprecated:
23391
23392 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
23393
23394 @section cellauto
23395
23396 Create a pattern generated by an elementary cellular automaton.
23397
23398 The initial state of the cellular automaton can be defined through the
23399 @option{filename} and @option{pattern} options. If such options are
23400 not specified an initial state is created randomly.
23401
23402 At each new frame a new row in the video is filled with the result of
23403 the cellular automaton next generation. The behavior when the whole
23404 frame is filled is defined by the @option{scroll} option.
23405
23406 This source accepts the following options:
23407
23408 @table @option
23409 @item filename, f
23410 Read the initial cellular automaton state, i.e. the starting row, from
23411 the specified file.
23412 In the file, each non-whitespace character is considered an alive
23413 cell, a newline will terminate the row, and further characters in the
23414 file will be ignored.
23415
23416 @item pattern, p
23417 Read the initial cellular automaton state, i.e. the starting row, from
23418 the specified string.
23419
23420 Each non-whitespace character in the string is considered an alive
23421 cell, a newline will terminate the row, and further characters in the
23422 string will be ignored.
23423
23424 @item rate, r
23425 Set the video rate, that is the number of frames generated per second.
23426 Default is 25.
23427
23428 @item random_fill_ratio, ratio
23429 Set the random fill ratio for the initial cellular automaton row. It
23430 is a floating point number value ranging from 0 to 1, defaults to
23431 1/PHI.
23432
23433 This option is ignored when a file or a pattern is specified.
23434
23435 @item random_seed, seed
23436 Set the seed for filling randomly the initial row, must be an integer
23437 included between 0 and UINT32_MAX. If not specified, or if explicitly
23438 set to -1, the filter will try to use a good random seed on a best
23439 effort basis.
23440
23441 @item rule
23442 Set the cellular automaton rule, it is a number ranging from 0 to 255.
23443 Default value is 110.
23444
23445 @item size, s
23446 Set the size of the output video. For the syntax of this option, check the
23447 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23448
23449 If @option{filename} or @option{pattern} is specified, the size is set
23450 by default to the width of the specified initial state row, and the
23451 height is set to @var{width} * PHI.
23452
23453 If @option{size} is set, it must contain the width of the specified
23454 pattern string, and the specified pattern will be centered in the
23455 larger row.
23456
23457 If a filename or a pattern string is not specified, the size value
23458 defaults to "320x518" (used for a randomly generated initial state).
23459
23460 @item scroll
23461 If set to 1, scroll the output upward when all the rows in the output
23462 have been already filled. If set to 0, the new generated row will be
23463 written over the top row just after the bottom row is filled.
23464 Defaults to 1.
23465
23466 @item start_full, full
23467 If set to 1, completely fill the output with generated rows before
23468 outputting the first frame.
23469 This is the default behavior, for disabling set the value to 0.
23470
23471 @item stitch
23472 If set to 1, stitch the left and right row edges together.
23473 This is the default behavior, for disabling set the value to 0.
23474 @end table
23475
23476 @subsection Examples
23477
23478 @itemize
23479 @item
23480 Read the initial state from @file{pattern}, and specify an output of
23481 size 200x400.
23482 @example
23483 cellauto=f=pattern:s=200x400
23484 @end example
23485
23486 @item
23487 Generate a random initial row with a width of 200 cells, with a fill
23488 ratio of 2/3:
23489 @example
23490 cellauto=ratio=2/3:s=200x200
23491 @end example
23492
23493 @item
23494 Create a pattern generated by rule 18 starting by a single alive cell
23495 centered on an initial row with width 100:
23496 @example
23497 cellauto=p=@@:s=100x400:full=0:rule=18
23498 @end example
23499
23500 @item
23501 Specify a more elaborated initial pattern:
23502 @example
23503 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
23504 @end example
23505
23506 @end itemize
23507
23508 @anchor{coreimagesrc}
23509 @section coreimagesrc
23510 Video source generated on GPU using Apple's CoreImage API on OSX.
23511
23512 This video source is a specialized version of the @ref{coreimage} video filter.
23513 Use a core image generator at the beginning of the applied filterchain to
23514 generate the content.
23515
23516 The coreimagesrc video source accepts the following options:
23517 @table @option
23518 @item list_generators
23519 List all available generators along with all their respective options as well as
23520 possible minimum and maximum values along with the default values.
23521 @example
23522 list_generators=true
23523 @end example
23524
23525 @item size, s
23526 Specify the size of the sourced video. For the syntax of this option, check the
23527 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23528 The default value is @code{320x240}.
23529
23530 @item rate, r
23531 Specify the frame rate of the sourced video, as the number of frames
23532 generated per second. It has to be a string in the format
23533 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23534 number or a valid video frame rate abbreviation. The default value is
23535 "25".
23536
23537 @item sar
23538 Set the sample aspect ratio of the sourced video.
23539
23540 @item duration, d
23541 Set the duration of the sourced video. See
23542 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23543 for the accepted syntax.
23544
23545 If not specified, or the expressed duration is negative, the video is
23546 supposed to be generated forever.
23547 @end table
23548
23549 Additionally, all options of the @ref{coreimage} video filter are accepted.
23550 A complete filterchain can be used for further processing of the
23551 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
23552 and examples for details.
23553
23554 @subsection Examples
23555
23556 @itemize
23557
23558 @item
23559 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
23560 given as complete and escaped command-line for Apple's standard bash shell:
23561 @example
23562 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
23563 @end example
23564 This example is equivalent to the QRCode example of @ref{coreimage} without the
23565 need for a nullsrc video source.
23566 @end itemize
23567
23568
23569 @section gradients
23570 Generate several gradients.
23571
23572 @table @option
23573 @item size, s
23574 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23575 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23576
23577 @item rate, r
23578 Set frame rate, expressed as number of frames per second. Default
23579 value is "25".
23580
23581 @item c0, c1, c2, c3, c4, c5, c6, c7
23582 Set 8 colors. Default values for colors is to pick random one.
23583
23584 @item x0, y0, y0, y1
23585 Set gradient line source and destination points. If negative or out of range, random ones
23586 are picked.
23587
23588 @item nb_colors, n
23589 Set number of colors to use at once. Allowed range is from 2 to 8. Default value is 2.
23590
23591 @item seed
23592 Set seed for picking gradient line points.
23593
23594 @item duration, d
23595 Set the duration of the sourced video. See
23596 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23597 for the accepted syntax.
23598
23599 If not specified, or the expressed duration is negative, the video is
23600 supposed to be generated forever.
23601
23602 @item speed
23603 Set speed of gradients rotation.
23604 @end table
23605
23606
23607 @section mandelbrot
23608
23609 Generate a Mandelbrot set fractal, and progressively zoom towards the
23610 point specified with @var{start_x} and @var{start_y}.
23611
23612 This source accepts the following options:
23613
23614 @table @option
23615
23616 @item end_pts
23617 Set the terminal pts value. Default value is 400.
23618
23619 @item end_scale
23620 Set the terminal scale value.
23621 Must be a floating point value. Default value is 0.3.
23622
23623 @item inner
23624 Set the inner coloring mode, that is the algorithm used to draw the
23625 Mandelbrot fractal internal region.
23626
23627 It shall assume one of the following values:
23628 @table @option
23629 @item black
23630 Set black mode.
23631 @item convergence
23632 Show time until convergence.
23633 @item mincol
23634 Set color based on point closest to the origin of the iterations.
23635 @item period
23636 Set period mode.
23637 @end table
23638
23639 Default value is @var{mincol}.
23640
23641 @item bailout
23642 Set the bailout value. Default value is 10.0.
23643
23644 @item maxiter
23645 Set the maximum of iterations performed by the rendering
23646 algorithm. Default value is 7189.
23647
23648 @item outer
23649 Set outer coloring mode.
23650 It shall assume one of following values:
23651 @table @option
23652 @item iteration_count
23653 Set iteration count mode.
23654 @item normalized_iteration_count
23655 set normalized iteration count mode.
23656 @end table
23657 Default value is @var{normalized_iteration_count}.
23658
23659 @item rate, r
23660 Set frame rate, expressed as number of frames per second. Default
23661 value is "25".
23662
23663 @item size, s
23664 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23665 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23666
23667 @item start_scale
23668 Set the initial scale value. Default value is 3.0.
23669
23670 @item start_x
23671 Set the initial x position. Must be a floating point value between
23672 -100 and 100. Default value is -0.743643887037158704752191506114774.
23673
23674 @item start_y
23675 Set the initial y position. Must be a floating point value between
23676 -100 and 100. Default value is -0.131825904205311970493132056385139.
23677 @end table
23678
23679 @section mptestsrc
23680
23681 Generate various test patterns, as generated by the MPlayer test filter.
23682
23683 The size of the generated video is fixed, and is 256x256.
23684 This source is useful in particular for testing encoding features.
23685
23686 This source accepts the following options:
23687
23688 @table @option
23689
23690 @item rate, r
23691 Specify the frame rate of the sourced video, as the number of frames
23692 generated per second. It has to be a string in the format
23693 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23694 number or a valid video frame rate abbreviation. The default value is
23695 "25".
23696
23697 @item duration, d
23698 Set the duration of the sourced video. See
23699 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23700 for the accepted syntax.
23701
23702 If not specified, or the expressed duration is negative, the video is
23703 supposed to be generated forever.
23704
23705 @item test, t
23706
23707 Set the number or the name of the test to perform. Supported tests are:
23708 @table @option
23709 @item dc_luma
23710 @item dc_chroma
23711 @item freq_luma
23712 @item freq_chroma
23713 @item amp_luma
23714 @item amp_chroma
23715 @item cbp
23716 @item mv
23717 @item ring1
23718 @item ring2
23719 @item all
23720
23721 @item max_frames, m
23722 Set the maximum number of frames generated for each test, default value is 30.
23723
23724 @end table
23725
23726 Default value is "all", which will cycle through the list of all tests.
23727 @end table
23728
23729 Some examples:
23730 @example
23731 mptestsrc=t=dc_luma
23732 @end example
23733
23734 will generate a "dc_luma" test pattern.
23735
23736 @section frei0r_src
23737
23738 Provide a frei0r source.
23739
23740 To enable compilation of this filter you need to install the frei0r
23741 header and configure FFmpeg with @code{--enable-frei0r}.
23742
23743 This source accepts the following parameters:
23744
23745 @table @option
23746
23747 @item size
23748 The size of the video to generate. For the syntax of this option, check the
23749 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23750
23751 @item framerate
23752 The framerate of the generated video. It may be a string of the form
23753 @var{num}/@var{den} or a frame rate abbreviation.
23754
23755 @item filter_name
23756 The name to the frei0r source to load. For more information regarding frei0r and
23757 how to set the parameters, read the @ref{frei0r} section in the video filters
23758 documentation.
23759
23760 @item filter_params
23761 A '|'-separated list of parameters to pass to the frei0r source.
23762
23763 @end table
23764
23765 For example, to generate a frei0r partik0l source with size 200x200
23766 and frame rate 10 which is overlaid on the overlay filter main input:
23767 @example
23768 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
23769 @end example
23770
23771 @section life
23772
23773 Generate a life pattern.
23774
23775 This source is based on a generalization of John Conway's life game.
23776
23777 The sourced input represents a life grid, each pixel represents a cell
23778 which can be in one of two possible states, alive or dead. Every cell
23779 interacts with its eight neighbours, which are the cells that are
23780 horizontally, vertically, or diagonally adjacent.
23781
23782 At each interaction the grid evolves according to the adopted rule,
23783 which specifies the number of neighbor alive cells which will make a
23784 cell stay alive or born. The @option{rule} option allows one to specify
23785 the rule to adopt.
23786
23787 This source accepts the following options:
23788
23789 @table @option
23790 @item filename, f
23791 Set the file from which to read the initial grid state. In the file,
23792 each non-whitespace character is considered an alive cell, and newline
23793 is used to delimit the end of each row.
23794
23795 If this option is not specified, the initial grid is generated
23796 randomly.
23797
23798 @item rate, r
23799 Set the video rate, that is the number of frames generated per second.
23800 Default is 25.
23801
23802 @item random_fill_ratio, ratio
23803 Set the random fill ratio for the initial random grid. It is a
23804 floating point number value ranging from 0 to 1, defaults to 1/PHI.
23805 It is ignored when a file is specified.
23806
23807 @item random_seed, seed
23808 Set the seed for filling the initial random grid, must be an integer
23809 included between 0 and UINT32_MAX. If not specified, or if explicitly
23810 set to -1, the filter will try to use a good random seed on a best
23811 effort basis.
23812
23813 @item rule
23814 Set the life rule.
23815
23816 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
23817 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
23818 @var{NS} specifies the number of alive neighbor cells which make a
23819 live cell stay alive, and @var{NB} the number of alive neighbor cells
23820 which make a dead cell to become alive (i.e. to "born").
23821 "s" and "b" can be used in place of "S" and "B", respectively.
23822
23823 Alternatively a rule can be specified by an 18-bits integer. The 9
23824 high order bits are used to encode the next cell state if it is alive
23825 for each number of neighbor alive cells, the low order bits specify
23826 the rule for "borning" new cells. Higher order bits encode for an
23827 higher number of neighbor cells.
23828 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
23829 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
23830
23831 Default value is "S23/B3", which is the original Conway's game of life
23832 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
23833 cells, and will born a new cell if there are three alive cells around
23834 a dead cell.
23835
23836 @item size, s
23837 Set the size of the output video. For the syntax of this option, check the
23838 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23839
23840 If @option{filename} is specified, the size is set by default to the
23841 same size of the input file. If @option{size} is set, it must contain
23842 the size specified in the input file, and the initial grid defined in
23843 that file is centered in the larger resulting area.
23844
23845 If a filename is not specified, the size value defaults to "320x240"
23846 (used for a randomly generated initial grid).
23847
23848 @item stitch
23849 If set to 1, stitch the left and right grid edges together, and the
23850 top and bottom edges also. Defaults to 1.
23851
23852 @item mold
23853 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
23854 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
23855 value from 0 to 255.
23856
23857 @item life_color
23858 Set the color of living (or new born) cells.
23859
23860 @item death_color
23861 Set the color of dead cells. If @option{mold} is set, this is the first color
23862 used to represent a dead cell.
23863
23864 @item mold_color
23865 Set mold color, for definitely dead and moldy cells.
23866
23867 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
23868 ffmpeg-utils manual,ffmpeg-utils}.
23869 @end table
23870
23871 @subsection Examples
23872
23873 @itemize
23874 @item
23875 Read a grid from @file{pattern}, and center it on a grid of size
23876 300x300 pixels:
23877 @example
23878 life=f=pattern:s=300x300
23879 @end example
23880
23881 @item
23882 Generate a random grid of size 200x200, with a fill ratio of 2/3:
23883 @example
23884 life=ratio=2/3:s=200x200
23885 @end example
23886
23887 @item
23888 Specify a custom rule for evolving a randomly generated grid:
23889 @example
23890 life=rule=S14/B34
23891 @end example
23892
23893 @item
23894 Full example with slow death effect (mold) using @command{ffplay}:
23895 @example
23896 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
23897 @end example
23898 @end itemize
23899
23900 @anchor{allrgb}
23901 @anchor{allyuv}
23902 @anchor{color}
23903 @anchor{haldclutsrc}
23904 @anchor{nullsrc}
23905 @anchor{pal75bars}
23906 @anchor{pal100bars}
23907 @anchor{rgbtestsrc}
23908 @anchor{smptebars}
23909 @anchor{smptehdbars}
23910 @anchor{testsrc}
23911 @anchor{testsrc2}
23912 @anchor{yuvtestsrc}
23913 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
23914
23915 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
23916
23917 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
23918
23919 The @code{color} source provides an uniformly colored input.
23920
23921 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
23922 @ref{haldclut} filter.
23923
23924 The @code{nullsrc} source returns unprocessed video frames. It is
23925 mainly useful to be employed in analysis / debugging tools, or as the
23926 source for filters which ignore the input data.
23927
23928 The @code{pal75bars} source generates a color bars pattern, based on
23929 EBU PAL recommendations with 75% color levels.
23930
23931 The @code{pal100bars} source generates a color bars pattern, based on
23932 EBU PAL recommendations with 100% color levels.
23933
23934 The @code{rgbtestsrc} source generates an RGB test pattern useful for
23935 detecting RGB vs BGR issues. You should see a red, green and blue
23936 stripe from top to bottom.
23937
23938 The @code{smptebars} source generates a color bars pattern, based on
23939 the SMPTE Engineering Guideline EG 1-1990.
23940
23941 The @code{smptehdbars} source generates a color bars pattern, based on
23942 the SMPTE RP 219-2002.
23943
23944 The @code{testsrc} source generates a test video pattern, showing a
23945 color pattern, a scrolling gradient and a timestamp. This is mainly
23946 intended for testing purposes.
23947
23948 The @code{testsrc2} source is similar to testsrc, but supports more
23949 pixel formats instead of just @code{rgb24}. This allows using it as an
23950 input for other tests without requiring a format conversion.
23951
23952 The @code{yuvtestsrc} source generates an YUV test pattern. You should
23953 see a y, cb and cr stripe from top to bottom.
23954
23955 The sources accept the following parameters:
23956
23957 @table @option
23958
23959 @item level
23960 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
23961 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
23962 pixels to be used as identity matrix for 3D lookup tables. Each component is
23963 coded on a @code{1/(N*N)} scale.
23964
23965 @item color, c
23966 Specify the color of the source, only available in the @code{color}
23967 source. For the syntax of this option, check the
23968 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
23969
23970 @item size, s
23971 Specify the size of the sourced video. For the syntax of this option, check the
23972 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23973 The default value is @code{320x240}.
23974
23975 This option is not available with the @code{allrgb}, @code{allyuv}, and
23976 @code{haldclutsrc} filters.
23977
23978 @item rate, r
23979 Specify the frame rate of the sourced video, as the number of frames
23980 generated per second. It has to be a string in the format
23981 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23982 number or a valid video frame rate abbreviation. The default value is
23983 "25".
23984
23985 @item duration, d
23986 Set the duration of the sourced video. See
23987 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23988 for the accepted syntax.
23989
23990 If not specified, or the expressed duration is negative, the video is
23991 supposed to be generated forever.
23992
23993 Since the frame rate is used as time base, all frames including the last one
23994 will have their full duration. If the specified duration is not a multiple
23995 of the frame duration, it will be rounded up.
23996
23997 @item sar
23998 Set the sample aspect ratio of the sourced video.
23999
24000 @item alpha
24001 Specify the alpha (opacity) of the background, only available in the
24002 @code{testsrc2} source. The value must be between 0 (fully transparent) and
24003 255 (fully opaque, the default).
24004
24005 @item decimals, n
24006 Set the number of decimals to show in the timestamp, only available in the
24007 @code{testsrc} source.
24008
24009 The displayed timestamp value will correspond to the original
24010 timestamp value multiplied by the power of 10 of the specified
24011 value. Default value is 0.
24012 @end table
24013
24014 @subsection Examples
24015
24016 @itemize
24017 @item
24018 Generate a video with a duration of 5.3 seconds, with size
24019 176x144 and a frame rate of 10 frames per second:
24020 @example
24021 testsrc=duration=5.3:size=qcif:rate=10
24022 @end example
24023
24024 @item
24025 The following graph description will generate a red source
24026 with an opacity of 0.2, with size "qcif" and a frame rate of 10
24027 frames per second:
24028 @example
24029 color=c=red@@0.2:s=qcif:r=10
24030 @end example
24031
24032 @item
24033 If the input content is to be ignored, @code{nullsrc} can be used. The
24034 following command generates noise in the luminance plane by employing
24035 the @code{geq} filter:
24036 @example
24037 nullsrc=s=256x256, geq=random(1)*255:128:128
24038 @end example
24039 @end itemize
24040
24041 @subsection Commands
24042
24043 The @code{color} source supports the following commands:
24044
24045 @table @option
24046 @item c, color
24047 Set the color of the created image. Accepts the same syntax of the
24048 corresponding @option{color} option.
24049 @end table
24050
24051 @section openclsrc
24052
24053 Generate video using an OpenCL program.
24054
24055 @table @option
24056
24057 @item source
24058 OpenCL program source file.
24059
24060 @item kernel
24061 Kernel name in program.
24062
24063 @item size, s
24064 Size of frames to generate.  This must be set.
24065
24066 @item format
24067 Pixel format to use for the generated frames.  This must be set.
24068
24069 @item rate, r
24070 Number of frames generated every second.  Default value is '25'.
24071
24072 @end table
24073
24074 For details of how the program loading works, see the @ref{program_opencl}
24075 filter.
24076
24077 Example programs:
24078
24079 @itemize
24080 @item
24081 Generate a colour ramp by setting pixel values from the position of the pixel
24082 in the output image.  (Note that this will work with all pixel formats, but
24083 the generated output will not be the same.)
24084 @verbatim
24085 __kernel void ramp(__write_only image2d_t dst,
24086                    unsigned int index)
24087 {
24088     int2 loc = (int2)(get_global_id(0), get_global_id(1));
24089
24090     float4 val;
24091     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
24092
24093     write_imagef(dst, loc, val);
24094 }
24095 @end verbatim
24096
24097 @item
24098 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
24099 @verbatim
24100 __kernel void sierpinski_carpet(__write_only image2d_t dst,
24101                                 unsigned int index)
24102 {
24103     int2 loc = (int2)(get_global_id(0), get_global_id(1));
24104
24105     float4 value = 0.0f;
24106     int x = loc.x + index;
24107     int y = loc.y + index;
24108     while (x > 0 || y > 0) {
24109         if (x % 3 == 1 && y % 3 == 1) {
24110             value = 1.0f;
24111             break;
24112         }
24113         x /= 3;
24114         y /= 3;
24115     }
24116
24117     write_imagef(dst, loc, value);
24118 }
24119 @end verbatim
24120
24121 @end itemize
24122
24123 @section sierpinski
24124
24125 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
24126
24127 This source accepts the following options:
24128
24129 @table @option
24130 @item size, s
24131 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
24132 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
24133
24134 @item rate, r
24135 Set frame rate, expressed as number of frames per second. Default
24136 value is "25".
24137
24138 @item seed
24139 Set seed which is used for random panning.
24140
24141 @item jump
24142 Set max jump for single pan destination. Allowed range is from 1 to 10000.
24143
24144 @item type
24145 Set fractal type, can be default @code{carpet} or @code{triangle}.
24146 @end table
24147
24148 @c man end VIDEO SOURCES
24149
24150 @chapter Video Sinks
24151 @c man begin VIDEO SINKS
24152
24153 Below is a description of the currently available video sinks.
24154
24155 @section buffersink
24156
24157 Buffer video frames, and make them available to the end of the filter
24158 graph.
24159
24160 This sink is mainly intended for programmatic use, in particular
24161 through the interface defined in @file{libavfilter/buffersink.h}
24162 or the options system.
24163
24164 It accepts a pointer to an AVBufferSinkContext structure, which
24165 defines the incoming buffers' formats, to be passed as the opaque
24166 parameter to @code{avfilter_init_filter} for initialization.
24167
24168 @section nullsink
24169
24170 Null video sink: do absolutely nothing with the input video. It is
24171 mainly useful as a template and for use in analysis / debugging
24172 tools.
24173
24174 @c man end VIDEO SINKS
24175
24176 @chapter Multimedia Filters
24177 @c man begin MULTIMEDIA FILTERS
24178
24179 Below is a description of the currently available multimedia filters.
24180
24181 @section abitscope
24182
24183 Convert input audio to a video output, displaying the audio bit scope.
24184
24185 The filter accepts the following options:
24186
24187 @table @option
24188 @item rate, r
24189 Set frame rate, expressed as number of frames per second. Default
24190 value is "25".
24191
24192 @item size, s
24193 Specify the video size for the output. For the syntax of this option, check the
24194 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24195 Default value is @code{1024x256}.
24196
24197 @item colors
24198 Specify list of colors separated by space or by '|' which will be used to
24199 draw channels. Unrecognized or missing colors will be replaced
24200 by white color.
24201 @end table
24202
24203 @section adrawgraph
24204 Draw a graph using input audio metadata.
24205
24206 See @ref{drawgraph}
24207
24208 @section agraphmonitor
24209
24210 See @ref{graphmonitor}.
24211
24212 @section ahistogram
24213
24214 Convert input audio to a video output, displaying the volume histogram.
24215
24216 The filter accepts the following options:
24217
24218 @table @option
24219 @item dmode
24220 Specify how histogram is calculated.
24221
24222 It accepts the following values:
24223 @table @samp
24224 @item single
24225 Use single histogram for all channels.
24226 @item separate
24227 Use separate histogram for each channel.
24228 @end table
24229 Default is @code{single}.
24230
24231 @item rate, r
24232 Set frame rate, expressed as number of frames per second. Default
24233 value is "25".
24234
24235 @item size, s
24236 Specify the video size for the output. For the syntax of this option, check the
24237 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24238 Default value is @code{hd720}.
24239
24240 @item scale
24241 Set display scale.
24242
24243 It accepts the following values:
24244 @table @samp
24245 @item log
24246 logarithmic
24247 @item sqrt
24248 square root
24249 @item cbrt
24250 cubic root
24251 @item lin
24252 linear
24253 @item rlog
24254 reverse logarithmic
24255 @end table
24256 Default is @code{log}.
24257
24258 @item ascale
24259 Set amplitude scale.
24260
24261 It accepts the following values:
24262 @table @samp
24263 @item log
24264 logarithmic
24265 @item lin
24266 linear
24267 @end table
24268 Default is @code{log}.
24269
24270 @item acount
24271 Set how much frames to accumulate in histogram.
24272 Default is 1. Setting this to -1 accumulates all frames.
24273
24274 @item rheight
24275 Set histogram ratio of window height.
24276
24277 @item slide
24278 Set sonogram sliding.
24279
24280 It accepts the following values:
24281 @table @samp
24282 @item replace
24283 replace old rows with new ones.
24284 @item scroll
24285 scroll from top to bottom.
24286 @end table
24287 Default is @code{replace}.
24288 @end table
24289
24290 @section aphasemeter
24291
24292 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
24293 representing mean phase of current audio frame. A video output can also be produced and is
24294 enabled by default. The audio is passed through as first output.
24295
24296 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
24297 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
24298 and @code{1} means channels are in phase.
24299
24300 The filter accepts the following options, all related to its video output:
24301
24302 @table @option
24303 @item rate, r
24304 Set the output frame rate. Default value is @code{25}.
24305
24306 @item size, s
24307 Set the video size for the output. For the syntax of this option, check the
24308 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24309 Default value is @code{800x400}.
24310
24311 @item rc
24312 @item gc
24313 @item bc
24314 Specify the red, green, blue contrast. Default values are @code{2},
24315 @code{7} and @code{1}.
24316 Allowed range is @code{[0, 255]}.
24317
24318 @item mpc
24319 Set color which will be used for drawing median phase. If color is
24320 @code{none} which is default, no median phase value will be drawn.
24321
24322 @item video
24323 Enable video output. Default is enabled.
24324 @end table
24325
24326 @subsection phasing detection
24327
24328 The filter also detects out of phase and mono sequences in stereo streams.
24329 It logs the sequence start, end and duration when it lasts longer or as long as the minimum set.
24330
24331 The filter accepts the following options for this detection:
24332
24333 @table @option
24334 @item phasing
24335 Enable mono and out of phase detection. Default is disabled.
24336
24337 @item tolerance, t
24338 Set phase tolerance for mono detection, in amplitude ratio. Default is @code{0}.
24339 Allowed range is @code{[0, 1]}.
24340
24341 @item angle, a
24342 Set angle threshold for out of phase detection, in degree. Default is @code{170}.
24343 Allowed range is @code{[90, 180]}.
24344
24345 @item duration, d
24346 Set mono or out of phase duration until notification, expressed in seconds. Default is @code{2}.
24347 @end table
24348
24349 @subsection Examples
24350
24351 @itemize
24352 @item
24353 Complete example with @command{ffmpeg} to detect 1 second of mono with 0.001 phase tolerance:
24354 @example
24355 ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
24356 @end example
24357 @end itemize
24358
24359 @section avectorscope
24360
24361 Convert input audio to a video output, representing the audio vector
24362 scope.
24363
24364 The filter is used to measure the difference between channels of stereo
24365 audio stream. A monaural signal, consisting of identical left and right
24366 signal, results in straight vertical line. Any stereo separation is visible
24367 as a deviation from this line, creating a Lissajous figure.
24368 If the straight (or deviation from it) but horizontal line appears this
24369 indicates that the left and right channels are out of phase.
24370
24371 The filter accepts the following options:
24372
24373 @table @option
24374 @item mode, m
24375 Set the vectorscope mode.
24376
24377 Available values are:
24378 @table @samp
24379 @item lissajous
24380 Lissajous rotated by 45 degrees.
24381
24382 @item lissajous_xy
24383 Same as above but not rotated.
24384
24385 @item polar
24386 Shape resembling half of circle.
24387 @end table
24388
24389 Default value is @samp{lissajous}.
24390
24391 @item size, s
24392 Set the video size for the output. For the syntax of this option, check the
24393 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24394 Default value is @code{400x400}.
24395
24396 @item rate, r
24397 Set the output frame rate. Default value is @code{25}.
24398
24399 @item rc
24400 @item gc
24401 @item bc
24402 @item ac
24403 Specify the red, green, blue and alpha contrast. Default values are @code{40},
24404 @code{160}, @code{80} and @code{255}.
24405 Allowed range is @code{[0, 255]}.
24406
24407 @item rf
24408 @item gf
24409 @item bf
24410 @item af
24411 Specify the red, green, blue and alpha fade. Default values are @code{15},
24412 @code{10}, @code{5} and @code{5}.
24413 Allowed range is @code{[0, 255]}.
24414
24415 @item zoom
24416 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
24417 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
24418
24419 @item draw
24420 Set the vectorscope drawing mode.
24421
24422 Available values are:
24423 @table @samp
24424 @item dot
24425 Draw dot for each sample.
24426
24427 @item line
24428 Draw line between previous and current sample.
24429 @end table
24430
24431 Default value is @samp{dot}.
24432
24433 @item scale
24434 Specify amplitude scale of audio samples.
24435
24436 Available values are:
24437 @table @samp
24438 @item lin
24439 Linear.
24440
24441 @item sqrt
24442 Square root.
24443
24444 @item cbrt
24445 Cubic root.
24446
24447 @item log
24448 Logarithmic.
24449 @end table
24450
24451 @item swap
24452 Swap left channel axis with right channel axis.
24453
24454 @item mirror
24455 Mirror axis.
24456
24457 @table @samp
24458 @item none
24459 No mirror.
24460
24461 @item x
24462 Mirror only x axis.
24463
24464 @item y
24465 Mirror only y axis.
24466
24467 @item xy
24468 Mirror both axis.
24469 @end table
24470
24471 @end table
24472
24473 @subsection Examples
24474
24475 @itemize
24476 @item
24477 Complete example using @command{ffplay}:
24478 @example
24479 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
24480              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
24481 @end example
24482 @end itemize
24483
24484 @section bench, abench
24485
24486 Benchmark part of a filtergraph.
24487
24488 The filter accepts the following options:
24489
24490 @table @option
24491 @item action
24492 Start or stop a timer.
24493
24494 Available values are:
24495 @table @samp
24496 @item start
24497 Get the current time, set it as frame metadata (using the key
24498 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
24499
24500 @item stop
24501 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
24502 the input frame metadata to get the time difference. Time difference, average,
24503 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
24504 @code{min}) are then printed. The timestamps are expressed in seconds.
24505 @end table
24506 @end table
24507
24508 @subsection Examples
24509
24510 @itemize
24511 @item
24512 Benchmark @ref{selectivecolor} filter:
24513 @example
24514 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
24515 @end example
24516 @end itemize
24517
24518 @section concat
24519
24520 Concatenate audio and video streams, joining them together one after the
24521 other.
24522
24523 The filter works on segments of synchronized video and audio streams. All
24524 segments must have the same number of streams of each type, and that will
24525 also be the number of streams at output.
24526
24527 The filter accepts the following options:
24528
24529 @table @option
24530
24531 @item n
24532 Set the number of segments. Default is 2.
24533
24534 @item v
24535 Set the number of output video streams, that is also the number of video
24536 streams in each segment. Default is 1.
24537
24538 @item a
24539 Set the number of output audio streams, that is also the number of audio
24540 streams in each segment. Default is 0.
24541
24542 @item unsafe
24543 Activate unsafe mode: do not fail if segments have a different format.
24544
24545 @end table
24546
24547 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
24548 @var{a} audio outputs.
24549
24550 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
24551 segment, in the same order as the outputs, then the inputs for the second
24552 segment, etc.
24553
24554 Related streams do not always have exactly the same duration, for various
24555 reasons including codec frame size or sloppy authoring. For that reason,
24556 related synchronized streams (e.g. a video and its audio track) should be
24557 concatenated at once. The concat filter will use the duration of the longest
24558 stream in each segment (except the last one), and if necessary pad shorter
24559 audio streams with silence.
24560
24561 For this filter to work correctly, all segments must start at timestamp 0.
24562
24563 All corresponding streams must have the same parameters in all segments; the
24564 filtering system will automatically select a common pixel format for video
24565 streams, and a common sample format, sample rate and channel layout for
24566 audio streams, but other settings, such as resolution, must be converted
24567 explicitly by the user.
24568
24569 Different frame rates are acceptable but will result in variable frame rate
24570 at output; be sure to configure the output file to handle it.
24571
24572 @subsection Examples
24573
24574 @itemize
24575 @item
24576 Concatenate an opening, an episode and an ending, all in bilingual version
24577 (video in stream 0, audio in streams 1 and 2):
24578 @example
24579 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
24580   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
24581    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
24582   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
24583 @end example
24584
24585 @item
24586 Concatenate two parts, handling audio and video separately, using the
24587 (a)movie sources, and adjusting the resolution:
24588 @example
24589 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
24590 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
24591 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
24592 @end example
24593 Note that a desync will happen at the stitch if the audio and video streams
24594 do not have exactly the same duration in the first file.
24595
24596 @end itemize
24597
24598 @subsection Commands
24599
24600 This filter supports the following commands:
24601 @table @option
24602 @item next
24603 Close the current segment and step to the next one
24604 @end table
24605
24606 @anchor{ebur128}
24607 @section ebur128
24608
24609 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
24610 level. By default, it logs a message at a frequency of 10Hz with the
24611 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
24612 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
24613
24614 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
24615 sample format is double-precision floating point. The input stream will be converted to
24616 this specification, if needed. Users may need to insert aformat and/or aresample filters
24617 after this filter to obtain the original parameters.
24618
24619 The filter also has a video output (see the @var{video} option) with a real
24620 time graph to observe the loudness evolution. The graphic contains the logged
24621 message mentioned above, so it is not printed anymore when this option is set,
24622 unless the verbose logging is set. The main graphing area contains the
24623 short-term loudness (3 seconds of analysis), and the gauge on the right is for
24624 the momentary loudness (400 milliseconds), but can optionally be configured
24625 to instead display short-term loudness (see @var{gauge}).
24626
24627 The green area marks a  +/- 1LU target range around the target loudness
24628 (-23LUFS by default, unless modified through @var{target}).
24629
24630 More information about the Loudness Recommendation EBU R128 on
24631 @url{http://tech.ebu.ch/loudness}.
24632
24633 The filter accepts the following options:
24634
24635 @table @option
24636
24637 @item video
24638 Activate the video output. The audio stream is passed unchanged whether this
24639 option is set or no. The video stream will be the first output stream if
24640 activated. Default is @code{0}.
24641
24642 @item size
24643 Set the video size. This option is for video only. For the syntax of this
24644 option, check the
24645 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24646 Default and minimum resolution is @code{640x480}.
24647
24648 @item meter
24649 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
24650 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
24651 other integer value between this range is allowed.
24652
24653 @item metadata
24654 Set metadata injection. If set to @code{1}, the audio input will be segmented
24655 into 100ms output frames, each of them containing various loudness information
24656 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
24657
24658 Default is @code{0}.
24659
24660 @item framelog
24661 Force the frame logging level.
24662
24663 Available values are:
24664 @table @samp
24665 @item info
24666 information logging level
24667 @item verbose
24668 verbose logging level
24669 @end table
24670
24671 By default, the logging level is set to @var{info}. If the @option{video} or
24672 the @option{metadata} options are set, it switches to @var{verbose}.
24673
24674 @item peak
24675 Set peak mode(s).
24676
24677 Available modes can be cumulated (the option is a @code{flag} type). Possible
24678 values are:
24679 @table @samp
24680 @item none
24681 Disable any peak mode (default).
24682 @item sample
24683 Enable sample-peak mode.
24684
24685 Simple peak mode looking for the higher sample value. It logs a message
24686 for sample-peak (identified by @code{SPK}).
24687 @item true
24688 Enable true-peak mode.
24689
24690 If enabled, the peak lookup is done on an over-sampled version of the input
24691 stream for better peak accuracy. It logs a message for true-peak.
24692 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
24693 This mode requires a build with @code{libswresample}.
24694 @end table
24695
24696 @item dualmono
24697 Treat mono input files as "dual mono". If a mono file is intended for playback
24698 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
24699 If set to @code{true}, this option will compensate for this effect.
24700 Multi-channel input files are not affected by this option.
24701
24702 @item panlaw
24703 Set a specific pan law to be used for the measurement of dual mono files.
24704 This parameter is optional, and has a default value of -3.01dB.
24705
24706 @item target
24707 Set a specific target level (in LUFS) used as relative zero in the visualization.
24708 This parameter is optional and has a default value of -23LUFS as specified
24709 by EBU R128. However, material published online may prefer a level of -16LUFS
24710 (e.g. for use with podcasts or video platforms).
24711
24712 @item gauge
24713 Set the value displayed by the gauge. Valid values are @code{momentary} and s
24714 @code{shortterm}. By default the momentary value will be used, but in certain
24715 scenarios it may be more useful to observe the short term value instead (e.g.
24716 live mixing).
24717
24718 @item scale
24719 Sets the display scale for the loudness. Valid parameters are @code{absolute}
24720 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
24721 video output, not the summary or continuous log output.
24722 @end table
24723
24724 @subsection Examples
24725
24726 @itemize
24727 @item
24728 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
24729 @example
24730 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
24731 @end example
24732
24733 @item
24734 Run an analysis with @command{ffmpeg}:
24735 @example
24736 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
24737 @end example
24738 @end itemize
24739
24740 @section interleave, ainterleave
24741
24742 Temporally interleave frames from several inputs.
24743
24744 @code{interleave} works with video inputs, @code{ainterleave} with audio.
24745
24746 These filters read frames from several inputs and send the oldest
24747 queued frame to the output.
24748
24749 Input streams must have well defined, monotonically increasing frame
24750 timestamp values.
24751
24752 In order to submit one frame to output, these filters need to enqueue
24753 at least one frame for each input, so they cannot work in case one
24754 input is not yet terminated and will not receive incoming frames.
24755
24756 For example consider the case when one input is a @code{select} filter
24757 which always drops input frames. The @code{interleave} filter will keep
24758 reading from that input, but it will never be able to send new frames
24759 to output until the input sends an end-of-stream signal.
24760
24761 Also, depending on inputs synchronization, the filters will drop
24762 frames in case one input receives more frames than the other ones, and
24763 the queue is already filled.
24764
24765 These filters accept the following options:
24766
24767 @table @option
24768 @item nb_inputs, n
24769 Set the number of different inputs, it is 2 by default.
24770
24771 @item duration
24772 How to determine the end-of-stream.
24773
24774 @table @option
24775 @item longest
24776 The duration of the longest input. (default)
24777
24778 @item shortest
24779 The duration of the shortest input.
24780
24781 @item first
24782 The duration of the first input.
24783 @end table
24784
24785 @end table
24786
24787 @subsection Examples
24788
24789 @itemize
24790 @item
24791 Interleave frames belonging to different streams using @command{ffmpeg}:
24792 @example
24793 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
24794 @end example
24795
24796 @item
24797 Add flickering blur effect:
24798 @example
24799 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
24800 @end example
24801 @end itemize
24802
24803 @section metadata, ametadata
24804
24805 Manipulate frame metadata.
24806
24807 This filter accepts the following options:
24808
24809 @table @option
24810 @item mode
24811 Set mode of operation of the filter.
24812
24813 Can be one of the following:
24814
24815 @table @samp
24816 @item select
24817 If both @code{value} and @code{key} is set, select frames
24818 which have such metadata. If only @code{key} is set, select
24819 every frame that has such key in metadata.
24820
24821 @item add
24822 Add new metadata @code{key} and @code{value}. If key is already available
24823 do nothing.
24824
24825 @item modify
24826 Modify value of already present key.
24827
24828 @item delete
24829 If @code{value} is set, delete only keys that have such value.
24830 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
24831 the frame.
24832
24833 @item print
24834 Print key and its value if metadata was found. If @code{key} is not set print all
24835 metadata values available in frame.
24836 @end table
24837
24838 @item key
24839 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
24840
24841 @item value
24842 Set metadata value which will be used. This option is mandatory for
24843 @code{modify} and @code{add} mode.
24844
24845 @item function
24846 Which function to use when comparing metadata value and @code{value}.
24847
24848 Can be one of following:
24849
24850 @table @samp
24851 @item same_str
24852 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
24853
24854 @item starts_with
24855 Values are interpreted as strings, returns true if metadata value starts with
24856 the @code{value} option string.
24857
24858 @item less
24859 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
24860
24861 @item equal
24862 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
24863
24864 @item greater
24865 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
24866
24867 @item expr
24868 Values are interpreted as floats, returns true if expression from option @code{expr}
24869 evaluates to true.
24870
24871 @item ends_with
24872 Values are interpreted as strings, returns true if metadata value ends with
24873 the @code{value} option string.
24874 @end table
24875
24876 @item expr
24877 Set expression which is used when @code{function} is set to @code{expr}.
24878 The expression is evaluated through the eval API and can contain the following
24879 constants:
24880
24881 @table @option
24882 @item VALUE1
24883 Float representation of @code{value} from metadata key.
24884
24885 @item VALUE2
24886 Float representation of @code{value} as supplied by user in @code{value} option.
24887 @end table
24888
24889 @item file
24890 If specified in @code{print} mode, output is written to the named file. Instead of
24891 plain filename any writable url can be specified. Filename ``-'' is a shorthand
24892 for standard output. If @code{file} option is not set, output is written to the log
24893 with AV_LOG_INFO loglevel.
24894
24895 @item direct
24896 Reduces buffering in print mode when output is written to a URL set using @var{file}.
24897
24898 @end table
24899
24900 @subsection Examples
24901
24902 @itemize
24903 @item
24904 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
24905 between 0 and 1.
24906 @example
24907 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
24908 @end example
24909 @item
24910 Print silencedetect output to file @file{metadata.txt}.
24911 @example
24912 silencedetect,ametadata=mode=print:file=metadata.txt
24913 @end example
24914 @item
24915 Direct all metadata to a pipe with file descriptor 4.
24916 @example
24917 metadata=mode=print:file='pipe\:4'
24918 @end example
24919 @end itemize
24920
24921 @section perms, aperms
24922
24923 Set read/write permissions for the output frames.
24924
24925 These filters are mainly aimed at developers to test direct path in the
24926 following filter in the filtergraph.
24927
24928 The filters accept the following options:
24929
24930 @table @option
24931 @item mode
24932 Select the permissions mode.
24933
24934 It accepts the following values:
24935 @table @samp
24936 @item none
24937 Do nothing. This is the default.
24938 @item ro
24939 Set all the output frames read-only.
24940 @item rw
24941 Set all the output frames directly writable.
24942 @item toggle
24943 Make the frame read-only if writable, and writable if read-only.
24944 @item random
24945 Set each output frame read-only or writable randomly.
24946 @end table
24947
24948 @item seed
24949 Set the seed for the @var{random} mode, must be an integer included between
24950 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
24951 @code{-1}, the filter will try to use a good random seed on a best effort
24952 basis.
24953 @end table
24954
24955 Note: in case of auto-inserted filter between the permission filter and the
24956 following one, the permission might not be received as expected in that
24957 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
24958 perms/aperms filter can avoid this problem.
24959
24960 @section realtime, arealtime
24961
24962 Slow down filtering to match real time approximately.
24963
24964 These filters will pause the filtering for a variable amount of time to
24965 match the output rate with the input timestamps.
24966 They are similar to the @option{re} option to @code{ffmpeg}.
24967
24968 They accept the following options:
24969
24970 @table @option
24971 @item limit
24972 Time limit for the pauses. Any pause longer than that will be considered
24973 a timestamp discontinuity and reset the timer. Default is 2 seconds.
24974 @item speed
24975 Speed factor for processing. The value must be a float larger than zero.
24976 Values larger than 1.0 will result in faster than realtime processing,
24977 smaller will slow processing down. The @var{limit} is automatically adapted
24978 accordingly. Default is 1.0.
24979
24980 A processing speed faster than what is possible without these filters cannot
24981 be achieved.
24982 @end table
24983
24984 @anchor{select}
24985 @section select, aselect
24986
24987 Select frames to pass in output.
24988
24989 This filter accepts the following options:
24990
24991 @table @option
24992
24993 @item expr, e
24994 Set expression, which is evaluated for each input frame.
24995
24996 If the expression is evaluated to zero, the frame is discarded.
24997
24998 If the evaluation result is negative or NaN, the frame is sent to the
24999 first output; otherwise it is sent to the output with index
25000 @code{ceil(val)-1}, assuming that the input index starts from 0.
25001
25002 For example a value of @code{1.2} corresponds to the output with index
25003 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
25004
25005 @item outputs, n
25006 Set the number of outputs. The output to which to send the selected
25007 frame is based on the result of the evaluation. Default value is 1.
25008 @end table
25009
25010 The expression can contain the following constants:
25011
25012 @table @option
25013 @item n
25014 The (sequential) number of the filtered frame, starting from 0.
25015
25016 @item selected_n
25017 The (sequential) number of the selected frame, starting from 0.
25018
25019 @item prev_selected_n
25020 The sequential number of the last selected frame. It's NAN if undefined.
25021
25022 @item TB
25023 The timebase of the input timestamps.
25024
25025 @item pts
25026 The PTS (Presentation TimeStamp) of the filtered video frame,
25027 expressed in @var{TB} units. It's NAN if undefined.
25028
25029 @item t
25030 The PTS of the filtered video frame,
25031 expressed in seconds. It's NAN if undefined.
25032
25033 @item prev_pts
25034 The PTS of the previously filtered video frame. It's NAN if undefined.
25035
25036 @item prev_selected_pts
25037 The PTS of the last previously filtered video frame. It's NAN if undefined.
25038
25039 @item prev_selected_t
25040 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
25041
25042 @item start_pts
25043 The PTS of the first video frame in the video. It's NAN if undefined.
25044
25045 @item start_t
25046 The time of the first video frame in the video. It's NAN if undefined.
25047
25048 @item pict_type @emph{(video only)}
25049 The type of the filtered frame. It can assume one of the following
25050 values:
25051 @table @option
25052 @item I
25053 @item P
25054 @item B
25055 @item S
25056 @item SI
25057 @item SP
25058 @item BI
25059 @end table
25060
25061 @item interlace_type @emph{(video only)}
25062 The frame interlace type. It can assume one of the following values:
25063 @table @option
25064 @item PROGRESSIVE
25065 The frame is progressive (not interlaced).
25066 @item TOPFIRST
25067 The frame is top-field-first.
25068 @item BOTTOMFIRST
25069 The frame is bottom-field-first.
25070 @end table
25071
25072 @item consumed_sample_n @emph{(audio only)}
25073 the number of selected samples before the current frame
25074
25075 @item samples_n @emph{(audio only)}
25076 the number of samples in the current frame
25077
25078 @item sample_rate @emph{(audio only)}
25079 the input sample rate
25080
25081 @item key
25082 This is 1 if the filtered frame is a key-frame, 0 otherwise.
25083
25084 @item pos
25085 the position in the file of the filtered frame, -1 if the information
25086 is not available (e.g. for synthetic video)
25087
25088 @item scene @emph{(video only)}
25089 value between 0 and 1 to indicate a new scene; a low value reflects a low
25090 probability for the current frame to introduce a new scene, while a higher
25091 value means the current frame is more likely to be one (see the example below)
25092
25093 @item concatdec_select
25094 The concat demuxer can select only part of a concat input file by setting an
25095 inpoint and an outpoint, but the output packets may not be entirely contained
25096 in the selected interval. By using this variable, it is possible to skip frames
25097 generated by the concat demuxer which are not exactly contained in the selected
25098 interval.
25099
25100 This works by comparing the frame pts against the @var{lavf.concat.start_time}
25101 and the @var{lavf.concat.duration} packet metadata values which are also
25102 present in the decoded frames.
25103
25104 The @var{concatdec_select} variable is -1 if the frame pts is at least
25105 start_time and either the duration metadata is missing or the frame pts is less
25106 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
25107 missing.
25108
25109 That basically means that an input frame is selected if its pts is within the
25110 interval set by the concat demuxer.
25111
25112 @end table
25113
25114 The default value of the select expression is "1".
25115
25116 @subsection Examples
25117
25118 @itemize
25119 @item
25120 Select all frames in input:
25121 @example
25122 select
25123 @end example
25124
25125 The example above is the same as:
25126 @example
25127 select=1
25128 @end example
25129
25130 @item
25131 Skip all frames:
25132 @example
25133 select=0
25134 @end example
25135
25136 @item
25137 Select only I-frames:
25138 @example
25139 select='eq(pict_type\,I)'
25140 @end example
25141
25142 @item
25143 Select one frame every 100:
25144 @example
25145 select='not(mod(n\,100))'
25146 @end example
25147
25148 @item
25149 Select only frames contained in the 10-20 time interval:
25150 @example
25151 select=between(t\,10\,20)
25152 @end example
25153
25154 @item
25155 Select only I-frames contained in the 10-20 time interval:
25156 @example
25157 select=between(t\,10\,20)*eq(pict_type\,I)
25158 @end example
25159
25160 @item
25161 Select frames with a minimum distance of 10 seconds:
25162 @example
25163 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
25164 @end example
25165
25166 @item
25167 Use aselect to select only audio frames with samples number > 100:
25168 @example
25169 aselect='gt(samples_n\,100)'
25170 @end example
25171
25172 @item
25173 Create a mosaic of the first scenes:
25174 @example
25175 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
25176 @end example
25177
25178 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
25179 choice.
25180
25181 @item
25182 Send even and odd frames to separate outputs, and compose them:
25183 @example
25184 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
25185 @end example
25186
25187 @item
25188 Select useful frames from an ffconcat file which is using inpoints and
25189 outpoints but where the source files are not intra frame only.
25190 @example
25191 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
25192 @end example
25193 @end itemize
25194
25195 @section sendcmd, asendcmd
25196
25197 Send commands to filters in the filtergraph.
25198
25199 These filters read commands to be sent to other filters in the
25200 filtergraph.
25201
25202 @code{sendcmd} must be inserted between two video filters,
25203 @code{asendcmd} must be inserted between two audio filters, but apart
25204 from that they act the same way.
25205
25206 The specification of commands can be provided in the filter arguments
25207 with the @var{commands} option, or in a file specified by the
25208 @var{filename} option.
25209
25210 These filters accept the following options:
25211 @table @option
25212 @item commands, c
25213 Set the commands to be read and sent to the other filters.
25214 @item filename, f
25215 Set the filename of the commands to be read and sent to the other
25216 filters.
25217 @end table
25218
25219 @subsection Commands syntax
25220
25221 A commands description consists of a sequence of interval
25222 specifications, comprising a list of commands to be executed when a
25223 particular event related to that interval occurs. The occurring event
25224 is typically the current frame time entering or leaving a given time
25225 interval.
25226
25227 An interval is specified by the following syntax:
25228 @example
25229 @var{START}[-@var{END}] @var{COMMANDS};
25230 @end example
25231
25232 The time interval is specified by the @var{START} and @var{END} times.
25233 @var{END} is optional and defaults to the maximum time.
25234
25235 The current frame time is considered within the specified interval if
25236 it is included in the interval [@var{START}, @var{END}), that is when
25237 the time is greater or equal to @var{START} and is lesser than
25238 @var{END}.
25239
25240 @var{COMMANDS} consists of a sequence of one or more command
25241 specifications, separated by ",", relating to that interval.  The
25242 syntax of a command specification is given by:
25243 @example
25244 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
25245 @end example
25246
25247 @var{FLAGS} is optional and specifies the type of events relating to
25248 the time interval which enable sending the specified command, and must
25249 be a non-null sequence of identifier flags separated by "+" or "|" and
25250 enclosed between "[" and "]".
25251
25252 The following flags are recognized:
25253 @table @option
25254 @item enter
25255 The command is sent when the current frame timestamp enters the
25256 specified interval. In other words, the command is sent when the
25257 previous frame timestamp was not in the given interval, and the
25258 current is.
25259
25260 @item leave
25261 The command is sent when the current frame timestamp leaves the
25262 specified interval. In other words, the command is sent when the
25263 previous frame timestamp was in the given interval, and the
25264 current is not.
25265
25266 @item expr
25267 The command @var{ARG} is interpreted as expression and result of
25268 expression is passed as @var{ARG}.
25269
25270 The expression is evaluated through the eval API and can contain the following
25271 constants:
25272
25273 @table @option
25274 @item POS
25275 Original position in the file of the frame, or undefined if undefined
25276 for the current frame.
25277
25278 @item PTS
25279 The presentation timestamp in input.
25280
25281 @item N
25282 The count of the input frame for video or audio, starting from 0.
25283
25284 @item T
25285 The time in seconds of the current frame.
25286
25287 @item TS
25288 The start time in seconds of the current command interval.
25289
25290 @item TE
25291 The end time in seconds of the current command interval.
25292
25293 @item TI
25294 The interpolated time of the current command interval, TI = (T - TS) / (TE - TS).
25295 @end table
25296
25297 @end table
25298
25299 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
25300 assumed.
25301
25302 @var{TARGET} specifies the target of the command, usually the name of
25303 the filter class or a specific filter instance name.
25304
25305 @var{COMMAND} specifies the name of the command for the target filter.
25306
25307 @var{ARG} is optional and specifies the optional list of argument for
25308 the given @var{COMMAND}.
25309
25310 Between one interval specification and another, whitespaces, or
25311 sequences of characters starting with @code{#} until the end of line,
25312 are ignored and can be used to annotate comments.
25313
25314 A simplified BNF description of the commands specification syntax
25315 follows:
25316 @example
25317 @var{COMMAND_FLAG}  ::= "enter" | "leave"
25318 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
25319 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
25320 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
25321 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
25322 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
25323 @end example
25324
25325 @subsection Examples
25326
25327 @itemize
25328 @item
25329 Specify audio tempo change at second 4:
25330 @example
25331 asendcmd=c='4.0 atempo tempo 1.5',atempo
25332 @end example
25333
25334 @item
25335 Target a specific filter instance:
25336 @example
25337 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
25338 @end example
25339
25340 @item
25341 Specify a list of drawtext and hue commands in a file.
25342 @example
25343 # show text in the interval 5-10
25344 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
25345          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
25346
25347 # desaturate the image in the interval 15-20
25348 15.0-20.0 [enter] hue s 0,
25349           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
25350           [leave] hue s 1,
25351           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
25352
25353 # apply an exponential saturation fade-out effect, starting from time 25
25354 25 [enter] hue s exp(25-t)
25355 @end example
25356
25357 A filtergraph allowing to read and process the above command list
25358 stored in a file @file{test.cmd}, can be specified with:
25359 @example
25360 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
25361 @end example
25362 @end itemize
25363
25364 @anchor{setpts}
25365 @section setpts, asetpts
25366
25367 Change the PTS (presentation timestamp) of the input frames.
25368
25369 @code{setpts} works on video frames, @code{asetpts} on audio frames.
25370
25371 This filter accepts the following options:
25372
25373 @table @option
25374
25375 @item expr
25376 The expression which is evaluated for each frame to construct its timestamp.
25377
25378 @end table
25379
25380 The expression is evaluated through the eval API and can contain the following
25381 constants:
25382
25383 @table @option
25384 @item FRAME_RATE, FR
25385 frame rate, only defined for constant frame-rate video
25386
25387 @item PTS
25388 The presentation timestamp in input
25389
25390 @item N
25391 The count of the input frame for video or the number of consumed samples,
25392 not including the current frame for audio, starting from 0.
25393
25394 @item NB_CONSUMED_SAMPLES
25395 The number of consumed samples, not including the current frame (only
25396 audio)
25397
25398 @item NB_SAMPLES, S
25399 The number of samples in the current frame (only audio)
25400
25401 @item SAMPLE_RATE, SR
25402 The audio sample rate.
25403
25404 @item STARTPTS
25405 The PTS of the first frame.
25406
25407 @item STARTT
25408 the time in seconds of the first frame
25409
25410 @item INTERLACED
25411 State whether the current frame is interlaced.
25412
25413 @item T
25414 the time in seconds of the current frame
25415
25416 @item POS
25417 original position in the file of the frame, or undefined if undefined
25418 for the current frame
25419
25420 @item PREV_INPTS
25421 The previous input PTS.
25422
25423 @item PREV_INT
25424 previous input time in seconds
25425
25426 @item PREV_OUTPTS
25427 The previous output PTS.
25428
25429 @item PREV_OUTT
25430 previous output time in seconds
25431
25432 @item RTCTIME
25433 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
25434 instead.
25435
25436 @item RTCSTART
25437 The wallclock (RTC) time at the start of the movie in microseconds.
25438
25439 @item TB
25440 The timebase of the input timestamps.
25441
25442 @end table
25443
25444 @subsection Examples
25445
25446 @itemize
25447 @item
25448 Start counting PTS from zero
25449 @example
25450 setpts=PTS-STARTPTS
25451 @end example
25452
25453 @item
25454 Apply fast motion effect:
25455 @example
25456 setpts=0.5*PTS
25457 @end example
25458
25459 @item
25460 Apply slow motion effect:
25461 @example
25462 setpts=2.0*PTS
25463 @end example
25464
25465 @item
25466 Set fixed rate of 25 frames per second:
25467 @example
25468 setpts=N/(25*TB)
25469 @end example
25470
25471 @item
25472 Set fixed rate 25 fps with some jitter:
25473 @example
25474 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
25475 @end example
25476
25477 @item
25478 Apply an offset of 10 seconds to the input PTS:
25479 @example
25480 setpts=PTS+10/TB
25481 @end example
25482
25483 @item
25484 Generate timestamps from a "live source" and rebase onto the current timebase:
25485 @example
25486 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
25487 @end example
25488
25489 @item
25490 Generate timestamps by counting samples:
25491 @example
25492 asetpts=N/SR/TB
25493 @end example
25494
25495 @end itemize
25496
25497 @section setrange
25498
25499 Force color range for the output video frame.
25500
25501 The @code{setrange} filter marks the color range property for the
25502 output frames. It does not change the input frame, but only sets the
25503 corresponding property, which affects how the frame is treated by
25504 following filters.
25505
25506 The filter accepts the following options:
25507
25508 @table @option
25509
25510 @item range
25511 Available values are:
25512
25513 @table @samp
25514 @item auto
25515 Keep the same color range property.
25516
25517 @item unspecified, unknown
25518 Set the color range as unspecified.
25519
25520 @item limited, tv, mpeg
25521 Set the color range as limited.
25522
25523 @item full, pc, jpeg
25524 Set the color range as full.
25525 @end table
25526 @end table
25527
25528 @section settb, asettb
25529
25530 Set the timebase to use for the output frames timestamps.
25531 It is mainly useful for testing timebase configuration.
25532
25533 It accepts the following parameters:
25534
25535 @table @option
25536
25537 @item expr, tb
25538 The expression which is evaluated into the output timebase.
25539
25540 @end table
25541
25542 The value for @option{tb} is an arithmetic expression representing a
25543 rational. The expression can contain the constants "AVTB" (the default
25544 timebase), "intb" (the input timebase) and "sr" (the sample rate,
25545 audio only). Default value is "intb".
25546
25547 @subsection Examples
25548
25549 @itemize
25550 @item
25551 Set the timebase to 1/25:
25552 @example
25553 settb=expr=1/25
25554 @end example
25555
25556 @item
25557 Set the timebase to 1/10:
25558 @example
25559 settb=expr=0.1
25560 @end example
25561
25562 @item
25563 Set the timebase to 1001/1000:
25564 @example
25565 settb=1+0.001
25566 @end example
25567
25568 @item
25569 Set the timebase to 2*intb:
25570 @example
25571 settb=2*intb
25572 @end example
25573
25574 @item
25575 Set the default timebase value:
25576 @example
25577 settb=AVTB
25578 @end example
25579 @end itemize
25580
25581 @section showcqt
25582 Convert input audio to a video output representing frequency spectrum
25583 logarithmically using Brown-Puckette constant Q transform algorithm with
25584 direct frequency domain coefficient calculation (but the transform itself
25585 is not really constant Q, instead the Q factor is actually variable/clamped),
25586 with musical tone scale, from E0 to D#10.
25587
25588 The filter accepts the following options:
25589
25590 @table @option
25591 @item size, s
25592 Specify the video size for the output. It must be even. For the syntax of this option,
25593 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25594 Default value is @code{1920x1080}.
25595
25596 @item fps, rate, r
25597 Set the output frame rate. Default value is @code{25}.
25598
25599 @item bar_h
25600 Set the bargraph height. It must be even. Default value is @code{-1} which
25601 computes the bargraph height automatically.
25602
25603 @item axis_h
25604 Set the axis height. It must be even. Default value is @code{-1} which computes
25605 the axis height automatically.
25606
25607 @item sono_h
25608 Set the sonogram height. It must be even. Default value is @code{-1} which
25609 computes the sonogram height automatically.
25610
25611 @item fullhd
25612 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
25613 instead. Default value is @code{1}.
25614
25615 @item sono_v, volume
25616 Specify the sonogram volume expression. It can contain variables:
25617 @table @option
25618 @item bar_v
25619 the @var{bar_v} evaluated expression
25620 @item frequency, freq, f
25621 the frequency where it is evaluated
25622 @item timeclamp, tc
25623 the value of @var{timeclamp} option
25624 @end table
25625 and functions:
25626 @table @option
25627 @item a_weighting(f)
25628 A-weighting of equal loudness
25629 @item b_weighting(f)
25630 B-weighting of equal loudness
25631 @item c_weighting(f)
25632 C-weighting of equal loudness.
25633 @end table
25634 Default value is @code{16}.
25635
25636 @item bar_v, volume2
25637 Specify the bargraph volume expression. It can contain variables:
25638 @table @option
25639 @item sono_v
25640 the @var{sono_v} evaluated expression
25641 @item frequency, freq, f
25642 the frequency where it is evaluated
25643 @item timeclamp, tc
25644 the value of @var{timeclamp} option
25645 @end table
25646 and functions:
25647 @table @option
25648 @item a_weighting(f)
25649 A-weighting of equal loudness
25650 @item b_weighting(f)
25651 B-weighting of equal loudness
25652 @item c_weighting(f)
25653 C-weighting of equal loudness.
25654 @end table
25655 Default value is @code{sono_v}.
25656
25657 @item sono_g, gamma
25658 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
25659 higher gamma makes the spectrum having more range. Default value is @code{3}.
25660 Acceptable range is @code{[1, 7]}.
25661
25662 @item bar_g, gamma2
25663 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
25664 @code{[1, 7]}.
25665
25666 @item bar_t
25667 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
25668 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
25669
25670 @item timeclamp, tc
25671 Specify the transform timeclamp. At low frequency, there is trade-off between
25672 accuracy in time domain and frequency domain. If timeclamp is lower,
25673 event in time domain is represented more accurately (such as fast bass drum),
25674 otherwise event in frequency domain is represented more accurately
25675 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
25676
25677 @item attack
25678 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
25679 limits future samples by applying asymmetric windowing in time domain, useful
25680 when low latency is required. Accepted range is @code{[0, 1]}.
25681
25682 @item basefreq
25683 Specify the transform base frequency. Default value is @code{20.01523126408007475},
25684 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
25685
25686 @item endfreq
25687 Specify the transform end frequency. Default value is @code{20495.59681441799654},
25688 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
25689
25690 @item coeffclamp
25691 This option is deprecated and ignored.
25692
25693 @item tlength
25694 Specify the transform length in time domain. Use this option to control accuracy
25695 trade-off between time domain and frequency domain at every frequency sample.
25696 It can contain variables:
25697 @table @option
25698 @item frequency, freq, f
25699 the frequency where it is evaluated
25700 @item timeclamp, tc
25701 the value of @var{timeclamp} option.
25702 @end table
25703 Default value is @code{384*tc/(384+tc*f)}.
25704
25705 @item count
25706 Specify the transform count for every video frame. Default value is @code{6}.
25707 Acceptable range is @code{[1, 30]}.
25708
25709 @item fcount
25710 Specify the transform count for every single pixel. Default value is @code{0},
25711 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
25712
25713 @item fontfile
25714 Specify font file for use with freetype to draw the axis. If not specified,
25715 use embedded font. Note that drawing with font file or embedded font is not
25716 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
25717 option instead.
25718
25719 @item font
25720 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
25721 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
25722 escaping.
25723
25724 @item fontcolor
25725 Specify font color expression. This is arithmetic expression that should return
25726 integer value 0xRRGGBB. It can contain variables:
25727 @table @option
25728 @item frequency, freq, f
25729 the frequency where it is evaluated
25730 @item timeclamp, tc
25731 the value of @var{timeclamp} option
25732 @end table
25733 and functions:
25734 @table @option
25735 @item midi(f)
25736 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
25737 @item r(x), g(x), b(x)
25738 red, green, and blue value of intensity x.
25739 @end table
25740 Default value is @code{st(0, (midi(f)-59.5)/12);
25741 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
25742 r(1-ld(1)) + b(ld(1))}.
25743
25744 @item axisfile
25745 Specify image file to draw the axis. This option override @var{fontfile} and
25746 @var{fontcolor} option.
25747
25748 @item axis, text
25749 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
25750 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
25751 Default value is @code{1}.
25752
25753 @item csp
25754 Set colorspace. The accepted values are:
25755 @table @samp
25756 @item unspecified
25757 Unspecified (default)
25758
25759 @item bt709
25760 BT.709
25761
25762 @item fcc
25763 FCC
25764
25765 @item bt470bg
25766 BT.470BG or BT.601-6 625
25767
25768 @item smpte170m
25769 SMPTE-170M or BT.601-6 525
25770
25771 @item smpte240m
25772 SMPTE-240M
25773
25774 @item bt2020ncl
25775 BT.2020 with non-constant luminance
25776
25777 @end table
25778
25779 @item cscheme
25780 Set spectrogram color scheme. This is list of floating point values with format
25781 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
25782 The default is @code{1|0.5|0|0|0.5|1}.
25783
25784 @end table
25785
25786 @subsection Examples
25787
25788 @itemize
25789 @item
25790 Playing audio while showing the spectrum:
25791 @example
25792 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
25793 @end example
25794
25795 @item
25796 Same as above, but with frame rate 30 fps:
25797 @example
25798 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
25799 @end example
25800
25801 @item
25802 Playing at 1280x720:
25803 @example
25804 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
25805 @end example
25806
25807 @item
25808 Disable sonogram display:
25809 @example
25810 sono_h=0
25811 @end example
25812
25813 @item
25814 A1 and its harmonics: A1, A2, (near)E3, A3:
25815 @example
25816 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),
25817                  asplit[a][out1]; [a] showcqt [out0]'
25818 @end example
25819
25820 @item
25821 Same as above, but with more accuracy in frequency domain:
25822 @example
25823 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),
25824                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
25825 @end example
25826
25827 @item
25828 Custom volume:
25829 @example
25830 bar_v=10:sono_v=bar_v*a_weighting(f)
25831 @end example
25832
25833 @item
25834 Custom gamma, now spectrum is linear to the amplitude.
25835 @example
25836 bar_g=2:sono_g=2
25837 @end example
25838
25839 @item
25840 Custom tlength equation:
25841 @example
25842 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)))'
25843 @end example
25844
25845 @item
25846 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
25847 @example
25848 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
25849 @end example
25850
25851 @item
25852 Custom font using fontconfig:
25853 @example
25854 font='Courier New,Monospace,mono|bold'
25855 @end example
25856
25857 @item
25858 Custom frequency range with custom axis using image file:
25859 @example
25860 axisfile=myaxis.png:basefreq=40:endfreq=10000
25861 @end example
25862 @end itemize
25863
25864 @section showfreqs
25865
25866 Convert input audio to video output representing the audio power spectrum.
25867 Audio amplitude is on Y-axis while frequency is on X-axis.
25868
25869 The filter accepts the following options:
25870
25871 @table @option
25872 @item size, s
25873 Specify size of video. For the syntax of this option, check the
25874 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25875 Default is @code{1024x512}.
25876
25877 @item mode
25878 Set display mode.
25879 This set how each frequency bin will be represented.
25880
25881 It accepts the following values:
25882 @table @samp
25883 @item line
25884 @item bar
25885 @item dot
25886 @end table
25887 Default is @code{bar}.
25888
25889 @item ascale
25890 Set amplitude scale.
25891
25892 It accepts the following values:
25893 @table @samp
25894 @item lin
25895 Linear scale.
25896
25897 @item sqrt
25898 Square root scale.
25899
25900 @item cbrt
25901 Cubic root scale.
25902
25903 @item log
25904 Logarithmic scale.
25905 @end table
25906 Default is @code{log}.
25907
25908 @item fscale
25909 Set frequency scale.
25910
25911 It accepts the following values:
25912 @table @samp
25913 @item lin
25914 Linear scale.
25915
25916 @item log
25917 Logarithmic scale.
25918
25919 @item rlog
25920 Reverse logarithmic scale.
25921 @end table
25922 Default is @code{lin}.
25923
25924 @item win_size
25925 Set window size. Allowed range is from 16 to 65536.
25926
25927 Default is @code{2048}
25928
25929 @item win_func
25930 Set windowing function.
25931
25932 It accepts the following values:
25933 @table @samp
25934 @item rect
25935 @item bartlett
25936 @item hanning
25937 @item hamming
25938 @item blackman
25939 @item welch
25940 @item flattop
25941 @item bharris
25942 @item bnuttall
25943 @item bhann
25944 @item sine
25945 @item nuttall
25946 @item lanczos
25947 @item gauss
25948 @item tukey
25949 @item dolph
25950 @item cauchy
25951 @item parzen
25952 @item poisson
25953 @item bohman
25954 @end table
25955 Default is @code{hanning}.
25956
25957 @item overlap
25958 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25959 which means optimal overlap for selected window function will be picked.
25960
25961 @item averaging
25962 Set time averaging. Setting this to 0 will display current maximal peaks.
25963 Default is @code{1}, which means time averaging is disabled.
25964
25965 @item colors
25966 Specify list of colors separated by space or by '|' which will be used to
25967 draw channel frequencies. Unrecognized or missing colors will be replaced
25968 by white color.
25969
25970 @item cmode
25971 Set channel display mode.
25972
25973 It accepts the following values:
25974 @table @samp
25975 @item combined
25976 @item separate
25977 @end table
25978 Default is @code{combined}.
25979
25980 @item minamp
25981 Set minimum amplitude used in @code{log} amplitude scaler.
25982
25983 @item data
25984 Set data display mode.
25985
25986 It accepts the following values:
25987 @table @samp
25988 @item magnitude
25989 @item phase
25990 @item delay
25991 @end table
25992 Default is @code{magnitude}.
25993 @end table
25994
25995 @section showspatial
25996
25997 Convert stereo input audio to a video output, representing the spatial relationship
25998 between two channels.
25999
26000 The filter accepts the following options:
26001
26002 @table @option
26003 @item size, s
26004 Specify the video size for the output. For the syntax of this option, check the
26005 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26006 Default value is @code{512x512}.
26007
26008 @item win_size
26009 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
26010
26011 @item win_func
26012 Set window function.
26013
26014 It accepts the following values:
26015 @table @samp
26016 @item rect
26017 @item bartlett
26018 @item hann
26019 @item hanning
26020 @item hamming
26021 @item blackman
26022 @item welch
26023 @item flattop
26024 @item bharris
26025 @item bnuttall
26026 @item bhann
26027 @item sine
26028 @item nuttall
26029 @item lanczos
26030 @item gauss
26031 @item tukey
26032 @item dolph
26033 @item cauchy
26034 @item parzen
26035 @item poisson
26036 @item bohman
26037 @end table
26038
26039 Default value is @code{hann}.
26040
26041 @item overlap
26042 Set ratio of overlap window. Default value is @code{0.5}.
26043 When value is @code{1} overlap is set to recommended size for specific
26044 window function currently used.
26045 @end table
26046
26047 @anchor{showspectrum}
26048 @section showspectrum
26049
26050 Convert input audio to a video output, representing the audio frequency
26051 spectrum.
26052
26053 The filter accepts the following options:
26054
26055 @table @option
26056 @item size, s
26057 Specify the video size for the output. For the syntax of this option, check the
26058 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26059 Default value is @code{640x512}.
26060
26061 @item slide
26062 Specify how the spectrum should slide along the window.
26063
26064 It accepts the following values:
26065 @table @samp
26066 @item replace
26067 the samples start again on the left when they reach the right
26068 @item scroll
26069 the samples scroll from right to left
26070 @item fullframe
26071 frames are only produced when the samples reach the right
26072 @item rscroll
26073 the samples scroll from left to right
26074 @end table
26075
26076 Default value is @code{replace}.
26077
26078 @item mode
26079 Specify display mode.
26080
26081 It accepts the following values:
26082 @table @samp
26083 @item combined
26084 all channels are displayed in the same row
26085 @item separate
26086 all channels are displayed in separate rows
26087 @end table
26088
26089 Default value is @samp{combined}.
26090
26091 @item color
26092 Specify display color mode.
26093
26094 It accepts the following values:
26095 @table @samp
26096 @item channel
26097 each channel is displayed in a separate color
26098 @item intensity
26099 each channel is displayed using the same color scheme
26100 @item rainbow
26101 each channel is displayed using the rainbow color scheme
26102 @item moreland
26103 each channel is displayed using the moreland color scheme
26104 @item nebulae
26105 each channel is displayed using the nebulae color scheme
26106 @item fire
26107 each channel is displayed using the fire color scheme
26108 @item fiery
26109 each channel is displayed using the fiery color scheme
26110 @item fruit
26111 each channel is displayed using the fruit color scheme
26112 @item cool
26113 each channel is displayed using the cool color scheme
26114 @item magma
26115 each channel is displayed using the magma color scheme
26116 @item green
26117 each channel is displayed using the green color scheme
26118 @item viridis
26119 each channel is displayed using the viridis color scheme
26120 @item plasma
26121 each channel is displayed using the plasma color scheme
26122 @item cividis
26123 each channel is displayed using the cividis color scheme
26124 @item terrain
26125 each channel is displayed using the terrain color scheme
26126 @end table
26127
26128 Default value is @samp{channel}.
26129
26130 @item scale
26131 Specify scale used for calculating intensity color values.
26132
26133 It accepts the following values:
26134 @table @samp
26135 @item lin
26136 linear
26137 @item sqrt
26138 square root, default
26139 @item cbrt
26140 cubic root
26141 @item log
26142 logarithmic
26143 @item 4thrt
26144 4th root
26145 @item 5thrt
26146 5th root
26147 @end table
26148
26149 Default value is @samp{sqrt}.
26150
26151 @item fscale
26152 Specify frequency scale.
26153
26154 It accepts the following values:
26155 @table @samp
26156 @item lin
26157 linear
26158 @item log
26159 logarithmic
26160 @end table
26161
26162 Default value is @samp{lin}.
26163
26164 @item saturation
26165 Set saturation modifier for displayed colors. Negative values provide
26166 alternative color scheme. @code{0} is no saturation at all.
26167 Saturation must be in [-10.0, 10.0] range.
26168 Default value is @code{1}.
26169
26170 @item win_func
26171 Set window function.
26172
26173 It accepts the following values:
26174 @table @samp
26175 @item rect
26176 @item bartlett
26177 @item hann
26178 @item hanning
26179 @item hamming
26180 @item blackman
26181 @item welch
26182 @item flattop
26183 @item bharris
26184 @item bnuttall
26185 @item bhann
26186 @item sine
26187 @item nuttall
26188 @item lanczos
26189 @item gauss
26190 @item tukey
26191 @item dolph
26192 @item cauchy
26193 @item parzen
26194 @item poisson
26195 @item bohman
26196 @end table
26197
26198 Default value is @code{hann}.
26199
26200 @item orientation
26201 Set orientation of time vs frequency axis. Can be @code{vertical} or
26202 @code{horizontal}. Default is @code{vertical}.
26203
26204 @item overlap
26205 Set ratio of overlap window. Default value is @code{0}.
26206 When value is @code{1} overlap is set to recommended size for specific
26207 window function currently used.
26208
26209 @item gain
26210 Set scale gain for calculating intensity color values.
26211 Default value is @code{1}.
26212
26213 @item data
26214 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
26215
26216 @item rotation
26217 Set color rotation, must be in [-1.0, 1.0] range.
26218 Default value is @code{0}.
26219
26220 @item start
26221 Set start frequency from which to display spectrogram. Default is @code{0}.
26222
26223 @item stop
26224 Set stop frequency to which to display spectrogram. Default is @code{0}.
26225
26226 @item fps
26227 Set upper frame rate limit. Default is @code{auto}, unlimited.
26228
26229 @item legend
26230 Draw time and frequency axes and legends. Default is disabled.
26231 @end table
26232
26233 The usage is very similar to the showwaves filter; see the examples in that
26234 section.
26235
26236 @subsection Examples
26237
26238 @itemize
26239 @item
26240 Large window with logarithmic color scaling:
26241 @example
26242 showspectrum=s=1280x480:scale=log
26243 @end example
26244
26245 @item
26246 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
26247 @example
26248 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
26249              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
26250 @end example
26251 @end itemize
26252
26253 @section showspectrumpic
26254
26255 Convert input audio to a single video frame, representing the audio frequency
26256 spectrum.
26257
26258 The filter accepts the following options:
26259
26260 @table @option
26261 @item size, s
26262 Specify the video size for the output. For the syntax of this option, check the
26263 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26264 Default value is @code{4096x2048}.
26265
26266 @item mode
26267 Specify display mode.
26268
26269 It accepts the following values:
26270 @table @samp
26271 @item combined
26272 all channels are displayed in the same row
26273 @item separate
26274 all channels are displayed in separate rows
26275 @end table
26276 Default value is @samp{combined}.
26277
26278 @item color
26279 Specify display color mode.
26280
26281 It accepts the following values:
26282 @table @samp
26283 @item channel
26284 each channel is displayed in a separate color
26285 @item intensity
26286 each channel is displayed using the same color scheme
26287 @item rainbow
26288 each channel is displayed using the rainbow color scheme
26289 @item moreland
26290 each channel is displayed using the moreland color scheme
26291 @item nebulae
26292 each channel is displayed using the nebulae color scheme
26293 @item fire
26294 each channel is displayed using the fire color scheme
26295 @item fiery
26296 each channel is displayed using the fiery color scheme
26297 @item fruit
26298 each channel is displayed using the fruit color scheme
26299 @item cool
26300 each channel is displayed using the cool color scheme
26301 @item magma
26302 each channel is displayed using the magma color scheme
26303 @item green
26304 each channel is displayed using the green color scheme
26305 @item viridis
26306 each channel is displayed using the viridis color scheme
26307 @item plasma
26308 each channel is displayed using the plasma color scheme
26309 @item cividis
26310 each channel is displayed using the cividis color scheme
26311 @item terrain
26312 each channel is displayed using the terrain color scheme
26313 @end table
26314 Default value is @samp{intensity}.
26315
26316 @item scale
26317 Specify scale used for calculating intensity color values.
26318
26319 It accepts the following values:
26320 @table @samp
26321 @item lin
26322 linear
26323 @item sqrt
26324 square root, default
26325 @item cbrt
26326 cubic root
26327 @item log
26328 logarithmic
26329 @item 4thrt
26330 4th root
26331 @item 5thrt
26332 5th root
26333 @end table
26334 Default value is @samp{log}.
26335
26336 @item fscale
26337 Specify frequency scale.
26338
26339 It accepts the following values:
26340 @table @samp
26341 @item lin
26342 linear
26343 @item log
26344 logarithmic
26345 @end table
26346
26347 Default value is @samp{lin}.
26348
26349 @item saturation
26350 Set saturation modifier for displayed colors. Negative values provide
26351 alternative color scheme. @code{0} is no saturation at all.
26352 Saturation must be in [-10.0, 10.0] range.
26353 Default value is @code{1}.
26354
26355 @item win_func
26356 Set window function.
26357
26358 It accepts the following values:
26359 @table @samp
26360 @item rect
26361 @item bartlett
26362 @item hann
26363 @item hanning
26364 @item hamming
26365 @item blackman
26366 @item welch
26367 @item flattop
26368 @item bharris
26369 @item bnuttall
26370 @item bhann
26371 @item sine
26372 @item nuttall
26373 @item lanczos
26374 @item gauss
26375 @item tukey
26376 @item dolph
26377 @item cauchy
26378 @item parzen
26379 @item poisson
26380 @item bohman
26381 @end table
26382 Default value is @code{hann}.
26383
26384 @item orientation
26385 Set orientation of time vs frequency axis. Can be @code{vertical} or
26386 @code{horizontal}. Default is @code{vertical}.
26387
26388 @item gain
26389 Set scale gain for calculating intensity color values.
26390 Default value is @code{1}.
26391
26392 @item legend
26393 Draw time and frequency axes and legends. Default is enabled.
26394
26395 @item rotation
26396 Set color rotation, must be in [-1.0, 1.0] range.
26397 Default value is @code{0}.
26398
26399 @item start
26400 Set start frequency from which to display spectrogram. Default is @code{0}.
26401
26402 @item stop
26403 Set stop frequency to which to display spectrogram. Default is @code{0}.
26404 @end table
26405
26406 @subsection Examples
26407
26408 @itemize
26409 @item
26410 Extract an audio spectrogram of a whole audio track
26411 in a 1024x1024 picture using @command{ffmpeg}:
26412 @example
26413 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
26414 @end example
26415 @end itemize
26416
26417 @section showvolume
26418
26419 Convert input audio volume to a video output.
26420
26421 The filter accepts the following options:
26422
26423 @table @option
26424 @item rate, r
26425 Set video rate.
26426
26427 @item b
26428 Set border width, allowed range is [0, 5]. Default is 1.
26429
26430 @item w
26431 Set channel width, allowed range is [80, 8192]. Default is 400.
26432
26433 @item h
26434 Set channel height, allowed range is [1, 900]. Default is 20.
26435
26436 @item f
26437 Set fade, allowed range is [0, 1]. Default is 0.95.
26438
26439 @item c
26440 Set volume color expression.
26441
26442 The expression can use the following variables:
26443
26444 @table @option
26445 @item VOLUME
26446 Current max volume of channel in dB.
26447
26448 @item PEAK
26449 Current peak.
26450
26451 @item CHANNEL
26452 Current channel number, starting from 0.
26453 @end table
26454
26455 @item t
26456 If set, displays channel names. Default is enabled.
26457
26458 @item v
26459 If set, displays volume values. Default is enabled.
26460
26461 @item o
26462 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
26463 default is @code{h}.
26464
26465 @item s
26466 Set step size, allowed range is [0, 5]. Default is 0, which means
26467 step is disabled.
26468
26469 @item p
26470 Set background opacity, allowed range is [0, 1]. Default is 0.
26471
26472 @item m
26473 Set metering mode, can be peak: @code{p} or rms: @code{r},
26474 default is @code{p}.
26475
26476 @item ds
26477 Set display scale, can be linear: @code{lin} or log: @code{log},
26478 default is @code{lin}.
26479
26480 @item dm
26481 In second.
26482 If set to > 0., display a line for the max level
26483 in the previous seconds.
26484 default is disabled: @code{0.}
26485
26486 @item dmc
26487 The color of the max line. Use when @code{dm} option is set to > 0.
26488 default is: @code{orange}
26489 @end table
26490
26491 @section showwaves
26492
26493 Convert input audio to a video output, representing the samples waves.
26494
26495 The filter accepts the following options:
26496
26497 @table @option
26498 @item size, s
26499 Specify the video size for the output. For the syntax of this option, check the
26500 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26501 Default value is @code{600x240}.
26502
26503 @item mode
26504 Set display mode.
26505
26506 Available values are:
26507 @table @samp
26508 @item point
26509 Draw a point for each sample.
26510
26511 @item line
26512 Draw a vertical line for each sample.
26513
26514 @item p2p
26515 Draw a point for each sample and a line between them.
26516
26517 @item cline
26518 Draw a centered vertical line for each sample.
26519 @end table
26520
26521 Default value is @code{point}.
26522
26523 @item n
26524 Set the number of samples which are printed on the same column. A
26525 larger value will decrease the frame rate. Must be a positive
26526 integer. This option can be set only if the value for @var{rate}
26527 is not explicitly specified.
26528
26529 @item rate, r
26530 Set the (approximate) output frame rate. This is done by setting the
26531 option @var{n}. Default value is "25".
26532
26533 @item split_channels
26534 Set if channels should be drawn separately or overlap. Default value is 0.
26535
26536 @item colors
26537 Set colors separated by '|' which are going to be used for drawing of each channel.
26538
26539 @item scale
26540 Set amplitude scale.
26541
26542 Available values are:
26543 @table @samp
26544 @item lin
26545 Linear.
26546
26547 @item log
26548 Logarithmic.
26549
26550 @item sqrt
26551 Square root.
26552
26553 @item cbrt
26554 Cubic root.
26555 @end table
26556
26557 Default is linear.
26558
26559 @item draw
26560 Set the draw mode. This is mostly useful to set for high @var{n}.
26561
26562 Available values are:
26563 @table @samp
26564 @item scale
26565 Scale pixel values for each drawn sample.
26566
26567 @item full
26568 Draw every sample directly.
26569 @end table
26570
26571 Default value is @code{scale}.
26572 @end table
26573
26574 @subsection Examples
26575
26576 @itemize
26577 @item
26578 Output the input file audio and the corresponding video representation
26579 at the same time:
26580 @example
26581 amovie=a.mp3,asplit[out0],showwaves[out1]
26582 @end example
26583
26584 @item
26585 Create a synthetic signal and show it with showwaves, forcing a
26586 frame rate of 30 frames per second:
26587 @example
26588 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
26589 @end example
26590 @end itemize
26591
26592 @section showwavespic
26593
26594 Convert input audio to a single video frame, representing the samples waves.
26595
26596 The filter accepts the following options:
26597
26598 @table @option
26599 @item size, s
26600 Specify the video size for the output. For the syntax of this option, check the
26601 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26602 Default value is @code{600x240}.
26603
26604 @item split_channels
26605 Set if channels should be drawn separately or overlap. Default value is 0.
26606
26607 @item colors
26608 Set colors separated by '|' which are going to be used for drawing of each channel.
26609
26610 @item scale
26611 Set amplitude scale.
26612
26613 Available values are:
26614 @table @samp
26615 @item lin
26616 Linear.
26617
26618 @item log
26619 Logarithmic.
26620
26621 @item sqrt
26622 Square root.
26623
26624 @item cbrt
26625 Cubic root.
26626 @end table
26627
26628 Default is linear.
26629
26630 @item draw
26631 Set the draw mode.
26632
26633 Available values are:
26634 @table @samp
26635 @item scale
26636 Scale pixel values for each drawn sample.
26637
26638 @item full
26639 Draw every sample directly.
26640 @end table
26641
26642 Default value is @code{scale}.
26643
26644 @item filter
26645 Set the filter mode.
26646
26647 Available values are:
26648 @table @samp
26649 @item average
26650 Use average samples values for each drawn sample.
26651
26652 @item peak
26653 Use peak samples values for each drawn sample.
26654 @end table
26655
26656 Default value is @code{average}.
26657 @end table
26658
26659 @subsection Examples
26660
26661 @itemize
26662 @item
26663 Extract a channel split representation of the wave form of a whole audio track
26664 in a 1024x800 picture using @command{ffmpeg}:
26665 @example
26666 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
26667 @end example
26668 @end itemize
26669
26670 @section sidedata, asidedata
26671
26672 Delete frame side data, or select frames based on it.
26673
26674 This filter accepts the following options:
26675
26676 @table @option
26677 @item mode
26678 Set mode of operation of the filter.
26679
26680 Can be one of the following:
26681
26682 @table @samp
26683 @item select
26684 Select every frame with side data of @code{type}.
26685
26686 @item delete
26687 Delete side data of @code{type}. If @code{type} is not set, delete all side
26688 data in the frame.
26689
26690 @end table
26691
26692 @item type
26693 Set side data type used with all modes. Must be set for @code{select} mode. For
26694 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
26695 in @file{libavutil/frame.h}. For example, to choose
26696 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
26697
26698 @end table
26699
26700 @section spectrumsynth
26701
26702 Synthesize audio from 2 input video spectrums, first input stream represents
26703 magnitude across time and second represents phase across time.
26704 The filter will transform from frequency domain as displayed in videos back
26705 to time domain as presented in audio output.
26706
26707 This filter is primarily created for reversing processed @ref{showspectrum}
26708 filter outputs, but can synthesize sound from other spectrograms too.
26709 But in such case results are going to be poor if the phase data is not
26710 available, because in such cases phase data need to be recreated, usually
26711 it's just recreated from random noise.
26712 For best results use gray only output (@code{channel} color mode in
26713 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
26714 @code{lin} scale for phase video. To produce phase, for 2nd video, use
26715 @code{data} option. Inputs videos should generally use @code{fullframe}
26716 slide mode as that saves resources needed for decoding video.
26717
26718 The filter accepts the following options:
26719
26720 @table @option
26721 @item sample_rate
26722 Specify sample rate of output audio, the sample rate of audio from which
26723 spectrum was generated may differ.
26724
26725 @item channels
26726 Set number of channels represented in input video spectrums.
26727
26728 @item scale
26729 Set scale which was used when generating magnitude input spectrum.
26730 Can be @code{lin} or @code{log}. Default is @code{log}.
26731
26732 @item slide
26733 Set slide which was used when generating inputs spectrums.
26734 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
26735 Default is @code{fullframe}.
26736
26737 @item win_func
26738 Set window function used for resynthesis.
26739
26740 @item overlap
26741 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
26742 which means optimal overlap for selected window function will be picked.
26743
26744 @item orientation
26745 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
26746 Default is @code{vertical}.
26747 @end table
26748
26749 @subsection Examples
26750
26751 @itemize
26752 @item
26753 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
26754 then resynthesize videos back to audio with spectrumsynth:
26755 @example
26756 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
26757 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
26758 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
26759 @end example
26760 @end itemize
26761
26762 @section split, asplit
26763
26764 Split input into several identical outputs.
26765
26766 @code{asplit} works with audio input, @code{split} with video.
26767
26768 The filter accepts a single parameter which specifies the number of outputs. If
26769 unspecified, it defaults to 2.
26770
26771 @subsection Examples
26772
26773 @itemize
26774 @item
26775 Create two separate outputs from the same input:
26776 @example
26777 [in] split [out0][out1]
26778 @end example
26779
26780 @item
26781 To create 3 or more outputs, you need to specify the number of
26782 outputs, like in:
26783 @example
26784 [in] asplit=3 [out0][out1][out2]
26785 @end example
26786
26787 @item
26788 Create two separate outputs from the same input, one cropped and
26789 one padded:
26790 @example
26791 [in] split [splitout1][splitout2];
26792 [splitout1] crop=100:100:0:0    [cropout];
26793 [splitout2] pad=200:200:100:100 [padout];
26794 @end example
26795
26796 @item
26797 Create 5 copies of the input audio with @command{ffmpeg}:
26798 @example
26799 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
26800 @end example
26801 @end itemize
26802
26803 @section zmq, azmq
26804
26805 Receive commands sent through a libzmq client, and forward them to
26806 filters in the filtergraph.
26807
26808 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
26809 must be inserted between two video filters, @code{azmq} between two
26810 audio filters. Both are capable to send messages to any filter type.
26811
26812 To enable these filters you need to install the libzmq library and
26813 headers and configure FFmpeg with @code{--enable-libzmq}.
26814
26815 For more information about libzmq see:
26816 @url{http://www.zeromq.org/}
26817
26818 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
26819 receives messages sent through a network interface defined by the
26820 @option{bind_address} (or the abbreviation "@option{b}") option.
26821 Default value of this option is @file{tcp://localhost:5555}. You may
26822 want to alter this value to your needs, but do not forget to escape any
26823 ':' signs (see @ref{filtergraph escaping}).
26824
26825 The received message must be in the form:
26826 @example
26827 @var{TARGET} @var{COMMAND} [@var{ARG}]
26828 @end example
26829
26830 @var{TARGET} specifies the target of the command, usually the name of
26831 the filter class or a specific filter instance name. The default
26832 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
26833 but you can override this by using the @samp{filter_name@@id} syntax
26834 (see @ref{Filtergraph syntax}).
26835
26836 @var{COMMAND} specifies the name of the command for the target filter.
26837
26838 @var{ARG} is optional and specifies the optional argument list for the
26839 given @var{COMMAND}.
26840
26841 Upon reception, the message is processed and the corresponding command
26842 is injected into the filtergraph. Depending on the result, the filter
26843 will send a reply to the client, adopting the format:
26844 @example
26845 @var{ERROR_CODE} @var{ERROR_REASON}
26846 @var{MESSAGE}
26847 @end example
26848
26849 @var{MESSAGE} is optional.
26850
26851 @subsection Examples
26852
26853 Look at @file{tools/zmqsend} for an example of a zmq client which can
26854 be used to send commands processed by these filters.
26855
26856 Consider the following filtergraph generated by @command{ffplay}.
26857 In this example the last overlay filter has an instance name. All other
26858 filters will have default instance names.
26859
26860 @example
26861 ffplay -dumpgraph 1 -f lavfi "
26862 color=s=100x100:c=red  [l];
26863 color=s=100x100:c=blue [r];
26864 nullsrc=s=200x100, zmq [bg];
26865 [bg][l]   overlay     [bg+l];
26866 [bg+l][r] overlay@@my=x=100 "
26867 @end example
26868
26869 To change the color of the left side of the video, the following
26870 command can be used:
26871 @example
26872 echo Parsed_color_0 c yellow | tools/zmqsend
26873 @end example
26874
26875 To change the right side:
26876 @example
26877 echo Parsed_color_1 c pink | tools/zmqsend
26878 @end example
26879
26880 To change the position of the right side:
26881 @example
26882 echo overlay@@my x 150 | tools/zmqsend
26883 @end example
26884
26885
26886 @c man end MULTIMEDIA FILTERS
26887
26888 @chapter Multimedia Sources
26889 @c man begin MULTIMEDIA SOURCES
26890
26891 Below is a description of the currently available multimedia sources.
26892
26893 @section amovie
26894
26895 This is the same as @ref{movie} source, except it selects an audio
26896 stream by default.
26897
26898 @anchor{movie}
26899 @section movie
26900
26901 Read audio and/or video stream(s) from a movie container.
26902
26903 It accepts the following parameters:
26904
26905 @table @option
26906 @item filename
26907 The name of the resource to read (not necessarily a file; it can also be a
26908 device or a stream accessed through some protocol).
26909
26910 @item format_name, f
26911 Specifies the format assumed for the movie to read, and can be either
26912 the name of a container or an input device. If not specified, the
26913 format is guessed from @var{movie_name} or by probing.
26914
26915 @item seek_point, sp
26916 Specifies the seek point in seconds. The frames will be output
26917 starting from this seek point. The parameter is evaluated with
26918 @code{av_strtod}, so the numerical value may be suffixed by an IS
26919 postfix. The default value is "0".
26920
26921 @item streams, s
26922 Specifies the streams to read. Several streams can be specified,
26923 separated by "+". The source will then have as many outputs, in the
26924 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
26925 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
26926 respectively the default (best suited) video and audio stream. Default
26927 is "dv", or "da" if the filter is called as "amovie".
26928
26929 @item stream_index, si
26930 Specifies the index of the video stream to read. If the value is -1,
26931 the most suitable video stream will be automatically selected. The default
26932 value is "-1". Deprecated. If the filter is called "amovie", it will select
26933 audio instead of video.
26934
26935 @item loop
26936 Specifies how many times to read the stream in sequence.
26937 If the value is 0, the stream will be looped infinitely.
26938 Default value is "1".
26939
26940 Note that when the movie is looped the source timestamps are not
26941 changed, so it will generate non monotonically increasing timestamps.
26942
26943 @item discontinuity
26944 Specifies the time difference between frames above which the point is
26945 considered a timestamp discontinuity which is removed by adjusting the later
26946 timestamps.
26947 @end table
26948
26949 It allows overlaying a second video on top of the main input of
26950 a filtergraph, as shown in this graph:
26951 @example
26952 input -----------> deltapts0 --> overlay --> output
26953                                     ^
26954                                     |
26955 movie --> scale--> deltapts1 -------+
26956 @end example
26957 @subsection Examples
26958
26959 @itemize
26960 @item
26961 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
26962 on top of the input labelled "in":
26963 @example
26964 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
26965 [in] setpts=PTS-STARTPTS [main];
26966 [main][over] overlay=16:16 [out]
26967 @end example
26968
26969 @item
26970 Read from a video4linux2 device, and overlay it on top of the input
26971 labelled "in":
26972 @example
26973 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
26974 [in] setpts=PTS-STARTPTS [main];
26975 [main][over] overlay=16:16 [out]
26976 @end example
26977
26978 @item
26979 Read the first video stream and the audio stream with id 0x81 from
26980 dvd.vob; the video is connected to the pad named "video" and the audio is
26981 connected to the pad named "audio":
26982 @example
26983 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
26984 @end example
26985 @end itemize
26986
26987 @subsection Commands
26988
26989 Both movie and amovie support the following commands:
26990 @table @option
26991 @item seek
26992 Perform seek using "av_seek_frame".
26993 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
26994 @itemize
26995 @item
26996 @var{stream_index}: If stream_index is -1, a default
26997 stream is selected, and @var{timestamp} is automatically converted
26998 from AV_TIME_BASE units to the stream specific time_base.
26999 @item
27000 @var{timestamp}: Timestamp in AVStream.time_base units
27001 or, if no stream is specified, in AV_TIME_BASE units.
27002 @item
27003 @var{flags}: Flags which select direction and seeking mode.
27004 @end itemize
27005
27006 @item get_duration
27007 Get movie duration in AV_TIME_BASE units.
27008
27009 @end table
27010
27011 @c man end MULTIMEDIA SOURCES