]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
Merge commit 'c1bcd321ea2c2ae1765a1e64f03278712221d726'
[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{framesync}
316 @chapter Options for filters with several inputs (framesync)
317 @c man begin OPTIONS FOR FILTERS WITH SEVERAL INPUTS
318
319 Some filters with several inputs support a common set of options.
320 These options can only be set by name, not with the short notation.
321
322 @table @option
323 @item eof_action
324 The action to take when EOF is encountered on the secondary input; it accepts
325 one of the following values:
326
327 @table @option
328 @item repeat
329 Repeat the last frame (the default).
330 @item endall
331 End both streams.
332 @item pass
333 Pass the main input through.
334 @end table
335
336 @item shortest
337 If set to 1, force the output to terminate when the shortest input
338 terminates. Default value is 0.
339
340 @item repeatlast
341 If set to 1, force the filter to extend the last frame of secondary streams
342 until the end of the primary stream. A value of 0 disables this behavior.
343 Default value is 1.
344 @end table
345
346 @c man end OPTIONS FOR FILTERS WITH SEVERAL INPUTS
347
348 @chapter Audio Filters
349 @c man begin AUDIO FILTERS
350
351 When you configure your FFmpeg build, you can disable any of the
352 existing filters using @code{--disable-filters}.
353 The configure output will show the audio filters included in your
354 build.
355
356 Below is a description of the currently available audio filters.
357
358 @section acompressor
359
360 A compressor is mainly used to reduce the dynamic range of a signal.
361 Especially modern music is mostly compressed at a high ratio to
362 improve the overall loudness. It's done to get the highest attention
363 of a listener, "fatten" the sound and bring more "power" to the track.
364 If a signal is compressed too much it may sound dull or "dead"
365 afterwards or it may start to "pump" (which could be a powerful effect
366 but can also destroy a track completely).
367 The right compression is the key to reach a professional sound and is
368 the high art of mixing and mastering. Because of its complex settings
369 it may take a long time to get the right feeling for this kind of effect.
370
371 Compression is done by detecting the volume above a chosen level
372 @code{threshold} and dividing it by the factor set with @code{ratio}.
373 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
374 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
375 the signal would cause distortion of the waveform the reduction can be
376 levelled over the time. This is done by setting "Attack" and "Release".
377 @code{attack} determines how long the signal has to rise above the threshold
378 before any reduction will occur and @code{release} sets the time the signal
379 has to fall below the threshold to reduce the reduction again. Shorter signals
380 than the chosen attack time will be left untouched.
381 The overall reduction of the signal can be made up afterwards with the
382 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
383 raising the makeup to this level results in a signal twice as loud than the
384 source. To gain a softer entry in the compression the @code{knee} flattens the
385 hard edge at the threshold in the range of the chosen decibels.
386
387 The filter accepts the following options:
388
389 @table @option
390 @item level_in
391 Set input gain. Default is 1. Range is between 0.015625 and 64.
392
393 @item threshold
394 If a signal of stream rises above this level it will affect the gain
395 reduction.
396 By default it is 0.125. Range is between 0.00097563 and 1.
397
398 @item ratio
399 Set a ratio by which the signal is reduced. 1:2 means that if the level
400 rose 4dB above the threshold, it will be only 2dB above after the reduction.
401 Default is 2. Range is between 1 and 20.
402
403 @item attack
404 Amount of milliseconds the signal has to rise above the threshold before gain
405 reduction starts. Default is 20. Range is between 0.01 and 2000.
406
407 @item release
408 Amount of milliseconds the signal has to fall below the threshold before
409 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
410
411 @item makeup
412 Set the amount by how much signal will be amplified after processing.
413 Default is 1. Range is from 1 to 64.
414
415 @item knee
416 Curve the sharp knee around the threshold to enter gain reduction more softly.
417 Default is 2.82843. Range is between 1 and 8.
418
419 @item link
420 Choose if the @code{average} level between all channels of input stream
421 or the louder(@code{maximum}) channel of input stream affects the
422 reduction. Default is @code{average}.
423
424 @item detection
425 Should the exact signal be taken in case of @code{peak} or an RMS one in case
426 of @code{rms}. Default is @code{rms} which is mostly smoother.
427
428 @item mix
429 How much to use compressed signal in output. Default is 1.
430 Range is between 0 and 1.
431 @end table
432
433 @section acontrast
434 Simple audio dynamic range commpression/expansion filter.
435
436 The filter accepts the following options:
437
438 @table @option
439 @item contrast
440 Set contrast. Default is 33. Allowed range is between 0 and 100.
441 @end table
442
443 @section acopy
444
445 Copy the input audio source unchanged to the output. This is mainly useful for
446 testing purposes.
447
448 @section acrossfade
449
450 Apply cross fade from one input audio stream to another input audio stream.
451 The cross fade is applied for specified duration near the end of first stream.
452
453 The filter accepts the following options:
454
455 @table @option
456 @item nb_samples, ns
457 Specify the number of samples for which the cross fade effect has to last.
458 At the end of the cross fade effect the first input audio will be completely
459 silent. Default is 44100.
460
461 @item duration, d
462 Specify the duration of the cross fade effect. See
463 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
464 for the accepted syntax.
465 By default the duration is determined by @var{nb_samples}.
466 If set this option is used instead of @var{nb_samples}.
467
468 @item overlap, o
469 Should first stream end overlap with second stream start. Default is enabled.
470
471 @item curve1
472 Set curve for cross fade transition for first stream.
473
474 @item curve2
475 Set curve for cross fade transition for second stream.
476
477 For description of available curve types see @ref{afade} filter description.
478 @end table
479
480 @subsection Examples
481
482 @itemize
483 @item
484 Cross fade from one input to another:
485 @example
486 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
487 @end example
488
489 @item
490 Cross fade from one input to another but without overlapping:
491 @example
492 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
493 @end example
494 @end itemize
495
496 @section acrusher
497
498 Reduce audio bit resolution.
499
500 This filter is bit crusher with enhanced functionality. A bit crusher
501 is used to audibly reduce number of bits an audio signal is sampled
502 with. This doesn't change the bit depth at all, it just produces the
503 effect. Material reduced in bit depth sounds more harsh and "digital".
504 This filter is able to even round to continuous values instead of discrete
505 bit depths.
506 Additionally it has a D/C offset which results in different crushing of
507 the lower and the upper half of the signal.
508 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
509
510 Another feature of this filter is the logarithmic mode.
511 This setting switches from linear distances between bits to logarithmic ones.
512 The result is a much more "natural" sounding crusher which doesn't gate low
513 signals for example. The human ear has a logarithmic perception,
514 so this kind of crushing is much more pleasant.
515 Logarithmic crushing is also able to get anti-aliased.
516
517 The filter accepts the following options:
518
519 @table @option
520 @item level_in
521 Set level in.
522
523 @item level_out
524 Set level out.
525
526 @item bits
527 Set bit reduction.
528
529 @item mix
530 Set mixing amount.
531
532 @item mode
533 Can be linear: @code{lin} or logarithmic: @code{log}.
534
535 @item dc
536 Set DC.
537
538 @item aa
539 Set anti-aliasing.
540
541 @item samples
542 Set sample reduction.
543
544 @item lfo
545 Enable LFO. By default disabled.
546
547 @item lforange
548 Set LFO range.
549
550 @item lforate
551 Set LFO rate.
552 @end table
553
554 @section adeclick
555 Remove impulsive noise from input audio.
556
557 Samples detected as impulsive noise are replaced by interpolated samples using
558 autoregressive modelling.
559
560 @table @option
561 @item w
562 Set window size, in milliseconds. Allowed range is from @code{10} to
563 @code{100}. Default value is @code{55} milliseconds.
564 This sets size of window which will be processed at once.
565
566 @item o
567 Set window overlap, in percentage of window size. Allowed range is from
568 @code{50} to @code{95}. Default value is @code{75} percent.
569 Setting this to a very high value increases impulsive noise removal but makes
570 whole process much slower.
571
572 @item a
573 Set autoregression order, in percentage of window size. Allowed range is from
574 @code{0} to @code{25}. Default value is @code{2} percent. This option also
575 controls quality of interpolated samples using neighbour good samples.
576
577 @item t
578 Set threshold value. Allowed range is from @code{1} to @code{100}.
579 Default value is @code{2}.
580 This controls the strength of impulsive noise which is going to be removed.
581 The lower value, the more samples will be detected as impulsive noise.
582
583 @item b
584 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
585 @code{10}. Default value is @code{2}.
586 If any two samples deteced as noise are spaced less than this value then any
587 sample inbetween those two samples will be also detected as noise.
588
589 @item m
590 Set overlap method.
591
592 It accepts the following values:
593 @table @option
594 @item a
595 Select overlap-add method. Even not interpolated samples are slightly
596 changed with this method.
597
598 @item s
599 Select overlap-save method. Not interpolated samples remain unchanged.
600 @end table
601
602 Default value is @code{a}.
603 @end table
604
605 @section adeclip
606 Remove clipped samples from input audio.
607
608 Samples detected as clipped are replaced by interpolated samples using
609 autoregressive modelling.
610
611 @table @option
612 @item w
613 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
614 Default value is @code{55} milliseconds.
615 This sets size of window which will be processed at once.
616
617 @item o
618 Set window overlap, in percentage of window size. Allowed range is from @code{50}
619 to @code{95}. Default value is @code{75} percent.
620
621 @item a
622 Set autoregression order, in percentage of window size. Allowed range is from
623 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
624 quality of interpolated samples using neighbour good samples.
625
626 @item t
627 Set threshold value. Allowed range is from @code{1} to @code{100}.
628 Default value is @code{10}. Higher values make clip detection less aggressive.
629
630 @item n
631 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
632 Default value is @code{1000}. Higher values make clip detection less aggressive.
633
634 @item m
635 Set overlap method.
636
637 It accepts the following values:
638 @table @option
639 @item a
640 Select overlap-add method. Even not interpolated samples are slightly changed
641 with this method.
642
643 @item s
644 Select overlap-save method. Not interpolated samples remain unchanged.
645 @end table
646
647 Default value is @code{a}.
648 @end table
649
650 @section adelay
651
652 Delay one or more audio channels.
653
654 Samples in delayed channel are filled with silence.
655
656 The filter accepts the following option:
657
658 @table @option
659 @item delays
660 Set list of delays in milliseconds for each channel separated by '|'.
661 Unused delays will be silently ignored. If number of given delays is
662 smaller than number of channels all remaining channels will not be delayed.
663 If you want to delay exact number of samples, append 'S' to number.
664 @end table
665
666 @subsection Examples
667
668 @itemize
669 @item
670 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
671 the second channel (and any other channels that may be present) unchanged.
672 @example
673 adelay=1500|0|500
674 @end example
675
676 @item
677 Delay second channel by 500 samples, the third channel by 700 samples and leave
678 the first channel (and any other channels that may be present) unchanged.
679 @example
680 adelay=0|500S|700S
681 @end example
682 @end itemize
683
684 @section aderivative, aintegral
685
686 Compute derivative/integral of audio stream.
687
688 Applying both filters one after another produces original audio.
689
690 @section aecho
691
692 Apply echoing to the input audio.
693
694 Echoes are reflected sound and can occur naturally amongst mountains
695 (and sometimes large buildings) when talking or shouting; digital echo
696 effects emulate this behaviour and are often used to help fill out the
697 sound of a single instrument or vocal. The time difference between the
698 original signal and the reflection is the @code{delay}, and the
699 loudness of the reflected signal is the @code{decay}.
700 Multiple echoes can have different delays and decays.
701
702 A description of the accepted parameters follows.
703
704 @table @option
705 @item in_gain
706 Set input gain of reflected signal. Default is @code{0.6}.
707
708 @item out_gain
709 Set output gain of reflected signal. Default is @code{0.3}.
710
711 @item delays
712 Set list of time intervals in milliseconds between original signal and reflections
713 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
714 Default is @code{1000}.
715
716 @item decays
717 Set list of loudness of reflected signals separated by '|'.
718 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
719 Default is @code{0.5}.
720 @end table
721
722 @subsection Examples
723
724 @itemize
725 @item
726 Make it sound as if there are twice as many instruments as are actually playing:
727 @example
728 aecho=0.8:0.88:60:0.4
729 @end example
730
731 @item
732 If delay is very short, then it sound like a (metallic) robot playing music:
733 @example
734 aecho=0.8:0.88:6:0.4
735 @end example
736
737 @item
738 A longer delay will sound like an open air concert in the mountains:
739 @example
740 aecho=0.8:0.9:1000:0.3
741 @end example
742
743 @item
744 Same as above but with one more mountain:
745 @example
746 aecho=0.8:0.9:1000|1800:0.3|0.25
747 @end example
748 @end itemize
749
750 @section aemphasis
751 Audio emphasis filter creates or restores material directly taken from LPs or
752 emphased CDs with different filter curves. E.g. to store music on vinyl the
753 signal has to be altered by a filter first to even out the disadvantages of
754 this recording medium.
755 Once the material is played back the inverse filter has to be applied to
756 restore the distortion of the frequency response.
757
758 The filter accepts the following options:
759
760 @table @option
761 @item level_in
762 Set input gain.
763
764 @item level_out
765 Set output gain.
766
767 @item mode
768 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
769 use @code{production} mode. Default is @code{reproduction} mode.
770
771 @item type
772 Set filter type. Selects medium. Can be one of the following:
773
774 @table @option
775 @item col
776 select Columbia.
777 @item emi
778 select EMI.
779 @item bsi
780 select BSI (78RPM).
781 @item riaa
782 select RIAA.
783 @item cd
784 select Compact Disc (CD).
785 @item 50fm
786 select 50µs (FM).
787 @item 75fm
788 select 75µs (FM).
789 @item 50kf
790 select 50µs (FM-KF).
791 @item 75kf
792 select 75µs (FM-KF).
793 @end table
794 @end table
795
796 @section aeval
797
798 Modify an audio signal according to the specified expressions.
799
800 This filter accepts one or more expressions (one for each channel),
801 which are evaluated and used to modify a corresponding audio signal.
802
803 It accepts the following parameters:
804
805 @table @option
806 @item exprs
807 Set the '|'-separated expressions list for each separate channel. If
808 the number of input channels is greater than the number of
809 expressions, the last specified expression is used for the remaining
810 output channels.
811
812 @item channel_layout, c
813 Set output channel layout. If not specified, the channel layout is
814 specified by the number of expressions. If set to @samp{same}, it will
815 use by default the same input channel layout.
816 @end table
817
818 Each expression in @var{exprs} can contain the following constants and functions:
819
820 @table @option
821 @item ch
822 channel number of the current expression
823
824 @item n
825 number of the evaluated sample, starting from 0
826
827 @item s
828 sample rate
829
830 @item t
831 time of the evaluated sample expressed in seconds
832
833 @item nb_in_channels
834 @item nb_out_channels
835 input and output number of channels
836
837 @item val(CH)
838 the value of input channel with number @var{CH}
839 @end table
840
841 Note: this filter is slow. For faster processing you should use a
842 dedicated filter.
843
844 @subsection Examples
845
846 @itemize
847 @item
848 Half volume:
849 @example
850 aeval=val(ch)/2:c=same
851 @end example
852
853 @item
854 Invert phase of the second channel:
855 @example
856 aeval=val(0)|-val(1)
857 @end example
858 @end itemize
859
860 @anchor{afade}
861 @section afade
862
863 Apply fade-in/out effect to input audio.
864
865 A description of the accepted parameters follows.
866
867 @table @option
868 @item type, t
869 Specify the effect type, can be either @code{in} for fade-in, or
870 @code{out} for a fade-out effect. Default is @code{in}.
871
872 @item start_sample, ss
873 Specify the number of the start sample for starting to apply the fade
874 effect. Default is 0.
875
876 @item nb_samples, ns
877 Specify the number of samples for which the fade effect has to last. At
878 the end of the fade-in effect the output audio will have the same
879 volume as the input audio, at the end of the fade-out transition
880 the output audio will be silence. Default is 44100.
881
882 @item start_time, st
883 Specify the start time of the fade effect. Default is 0.
884 The value must be specified as a time duration; see
885 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
886 for the accepted syntax.
887 If set this option is used instead of @var{start_sample}.
888
889 @item duration, d
890 Specify the duration of the fade effect. See
891 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
892 for the accepted syntax.
893 At the end of the fade-in effect the output audio will have the same
894 volume as the input audio, at the end of the fade-out transition
895 the output audio will be silence.
896 By default the duration is determined by @var{nb_samples}.
897 If set this option is used instead of @var{nb_samples}.
898
899 @item curve
900 Set curve for fade transition.
901
902 It accepts the following values:
903 @table @option
904 @item tri
905 select triangular, linear slope (default)
906 @item qsin
907 select quarter of sine wave
908 @item hsin
909 select half of sine wave
910 @item esin
911 select exponential sine wave
912 @item log
913 select logarithmic
914 @item ipar
915 select inverted parabola
916 @item qua
917 select quadratic
918 @item cub
919 select cubic
920 @item squ
921 select square root
922 @item cbr
923 select cubic root
924 @item par
925 select parabola
926 @item exp
927 select exponential
928 @item iqsin
929 select inverted quarter of sine wave
930 @item ihsin
931 select inverted half of sine wave
932 @item dese
933 select double-exponential seat
934 @item desi
935 select double-exponential sigmoid
936 @end table
937 @end table
938
939 @subsection Examples
940
941 @itemize
942 @item
943 Fade in first 15 seconds of audio:
944 @example
945 afade=t=in:ss=0:d=15
946 @end example
947
948 @item
949 Fade out last 25 seconds of a 900 seconds audio:
950 @example
951 afade=t=out:st=875:d=25
952 @end example
953 @end itemize
954
955 @section afftfilt
956 Apply arbitrary expressions to samples in frequency domain.
957
958 @table @option
959 @item real
960 Set frequency domain real expression for each separate channel separated
961 by '|'. Default is "1".
962 If the number of input channels is greater than the number of
963 expressions, the last specified expression is used for the remaining
964 output channels.
965
966 @item imag
967 Set frequency domain imaginary expression for each separate channel
968 separated by '|'. If not set, @var{real} option is used.
969
970 Each expression in @var{real} and @var{imag} can contain the following
971 constants:
972
973 @table @option
974 @item sr
975 sample rate
976
977 @item b
978 current frequency bin number
979
980 @item nb
981 number of available bins
982
983 @item ch
984 channel number of the current expression
985
986 @item chs
987 number of channels
988
989 @item pts
990 current frame pts
991 @end table
992
993 @item win_size
994 Set window size.
995
996 It accepts the following values:
997 @table @samp
998 @item w16
999 @item w32
1000 @item w64
1001 @item w128
1002 @item w256
1003 @item w512
1004 @item w1024
1005 @item w2048
1006 @item w4096
1007 @item w8192
1008 @item w16384
1009 @item w32768
1010 @item w65536
1011 @end table
1012 Default is @code{w4096}
1013
1014 @item win_func
1015 Set window function. Default is @code{hann}.
1016
1017 @item overlap
1018 Set window overlap. If set to 1, the recommended overlap for selected
1019 window function will be picked. Default is @code{0.75}.
1020 @end table
1021
1022 @subsection Examples
1023
1024 @itemize
1025 @item
1026 Leave almost only low frequencies in audio:
1027 @example
1028 afftfilt="1-clip((b/nb)*b,0,1)"
1029 @end example
1030 @end itemize
1031
1032 @anchor{afir}
1033 @section afir
1034
1035 Apply an arbitrary Frequency Impulse Response filter.
1036
1037 This filter is designed for applying long FIR filters,
1038 up to 30 seconds long.
1039
1040 It can be used as component for digital crossover filters,
1041 room equalization, cross talk cancellation, wavefield synthesis,
1042 auralization, ambiophonics and ambisonics.
1043
1044 This filter uses second stream as FIR coefficients.
1045 If second stream holds single channel, it will be used
1046 for all input channels in first stream, otherwise
1047 number of channels in second stream must be same as
1048 number of channels in first stream.
1049
1050 It accepts the following parameters:
1051
1052 @table @option
1053 @item dry
1054 Set dry gain. This sets input gain.
1055
1056 @item wet
1057 Set wet gain. This sets final output gain.
1058
1059 @item length
1060 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1061
1062 @item again
1063 Enable applying gain measured from power of IR.
1064
1065 @item maxir
1066 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1067 Allowed range is 0.1 to 60 seconds.
1068
1069 @item response
1070 Show IR frequency reponse, magnitude and phase in additional video stream.
1071 By default it is disabled.
1072
1073 @item channel
1074 Set for which IR channel to display frequency response. By default is first channel
1075 displayed. This option is used only when @var{response} is enabled.
1076
1077 @item size
1078 Set video stream size. This option is used only when @var{response} is enabled.
1079 @end table
1080
1081 @subsection Examples
1082
1083 @itemize
1084 @item
1085 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1086 @example
1087 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1088 @end example
1089 @end itemize
1090
1091 @anchor{aformat}
1092 @section aformat
1093
1094 Set output format constraints for the input audio. The framework will
1095 negotiate the most appropriate format to minimize conversions.
1096
1097 It accepts the following parameters:
1098 @table @option
1099
1100 @item sample_fmts
1101 A '|'-separated list of requested sample formats.
1102
1103 @item sample_rates
1104 A '|'-separated list of requested sample rates.
1105
1106 @item channel_layouts
1107 A '|'-separated list of requested channel layouts.
1108
1109 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1110 for the required syntax.
1111 @end table
1112
1113 If a parameter is omitted, all values are allowed.
1114
1115 Force the output to either unsigned 8-bit or signed 16-bit stereo
1116 @example
1117 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1118 @end example
1119
1120 @section agate
1121
1122 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1123 processing reduces disturbing noise between useful signals.
1124
1125 Gating is done by detecting the volume below a chosen level @var{threshold}
1126 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1127 floor is set via @var{range}. Because an exact manipulation of the signal
1128 would cause distortion of the waveform the reduction can be levelled over
1129 time. This is done by setting @var{attack} and @var{release}.
1130
1131 @var{attack} determines how long the signal has to fall below the threshold
1132 before any reduction will occur and @var{release} sets the time the signal
1133 has to rise above the threshold to reduce the reduction again.
1134 Shorter signals than the chosen attack time will be left untouched.
1135
1136 @table @option
1137 @item level_in
1138 Set input level before filtering.
1139 Default is 1. Allowed range is from 0.015625 to 64.
1140
1141 @item range
1142 Set the level of gain reduction when the signal is below the threshold.
1143 Default is 0.06125. Allowed range is from 0 to 1.
1144
1145 @item threshold
1146 If a signal rises above this level the gain reduction is released.
1147 Default is 0.125. Allowed range is from 0 to 1.
1148
1149 @item ratio
1150 Set a ratio by which the signal is reduced.
1151 Default is 2. Allowed range is from 1 to 9000.
1152
1153 @item attack
1154 Amount of milliseconds the signal has to rise above the threshold before gain
1155 reduction stops.
1156 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1157
1158 @item release
1159 Amount of milliseconds the signal has to fall below the threshold before the
1160 reduction is increased again. Default is 250 milliseconds.
1161 Allowed range is from 0.01 to 9000.
1162
1163 @item makeup
1164 Set amount of amplification of signal after processing.
1165 Default is 1. Allowed range is from 1 to 64.
1166
1167 @item knee
1168 Curve the sharp knee around the threshold to enter gain reduction more softly.
1169 Default is 2.828427125. Allowed range is from 1 to 8.
1170
1171 @item detection
1172 Choose if exact signal should be taken for detection or an RMS like one.
1173 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1174
1175 @item link
1176 Choose if the average level between all channels or the louder channel affects
1177 the reduction.
1178 Default is @code{average}. Can be @code{average} or @code{maximum}.
1179 @end table
1180
1181 @section aiir
1182
1183 Apply an arbitrary Infinite Impulse Response filter.
1184
1185 It accepts the following parameters:
1186
1187 @table @option
1188 @item z
1189 Set numerator/zeros coefficients.
1190
1191 @item p
1192 Set denominator/poles coefficients.
1193
1194 @item k
1195 Set channels gains.
1196
1197 @item dry_gain
1198 Set input gain.
1199
1200 @item wet_gain
1201 Set output gain.
1202
1203 @item f
1204 Set coefficients format.
1205
1206 @table @samp
1207 @item tf
1208 transfer function
1209 @item zp
1210 Z-plane zeros/poles, cartesian (default)
1211 @item pr
1212 Z-plane zeros/poles, polar radians
1213 @item pd
1214 Z-plane zeros/poles, polar degrees
1215 @end table
1216
1217 @item r
1218 Set kind of processing.
1219 Can be @code{d} - direct or @code{s} - serial cascading. Defauls is @code{s}.
1220
1221 @item e
1222 Set filtering precision.
1223
1224 @table @samp
1225 @item dbl
1226 double-precision floating-point (default)
1227 @item flt
1228 single-precision floating-point
1229 @item i32
1230 32-bit integers
1231 @item i16
1232 16-bit integers
1233 @end table
1234
1235 @item response
1236 Show IR frequency reponse, magnitude and phase in additional video stream.
1237 By default it is disabled.
1238
1239 @item channel
1240 Set for which IR channel to display frequency response. By default is first channel
1241 displayed. This option is used only when @var{response} is enabled.
1242
1243 @item size
1244 Set video stream size. This option is used only when @var{response} is enabled.
1245 @end table
1246
1247 Coefficients in @code{tf} format are separated by spaces and are in ascending
1248 order.
1249
1250 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1251 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1252 imaginary unit.
1253
1254 Different coefficients and gains can be provided for every channel, in such case
1255 use '|' to separate coefficients or gains. Last provided coefficients will be
1256 used for all remaining channels.
1257
1258 @subsection Examples
1259
1260 @itemize
1261 @item
1262 Apply 2 pole elliptic notch at arround 5000Hz for 48000 Hz sample rate:
1263 @example
1264 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
1265 @end example
1266
1267 @item
1268 Same as above but in @code{zp} format:
1269 @example
1270 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
1271 @end example
1272 @end itemize
1273
1274 @section alimiter
1275
1276 The limiter prevents an input signal from rising over a desired threshold.
1277 This limiter uses lookahead technology to prevent your signal from distorting.
1278 It means that there is a small delay after the signal is processed. Keep in mind
1279 that the delay it produces is the attack time you set.
1280
1281 The filter accepts the following options:
1282
1283 @table @option
1284 @item level_in
1285 Set input gain. Default is 1.
1286
1287 @item level_out
1288 Set output gain. Default is 1.
1289
1290 @item limit
1291 Don't let signals above this level pass the limiter. Default is 1.
1292
1293 @item attack
1294 The limiter will reach its attenuation level in this amount of time in
1295 milliseconds. Default is 5 milliseconds.
1296
1297 @item release
1298 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1299 Default is 50 milliseconds.
1300
1301 @item asc
1302 When gain reduction is always needed ASC takes care of releasing to an
1303 average reduction level rather than reaching a reduction of 0 in the release
1304 time.
1305
1306 @item asc_level
1307 Select how much the release time is affected by ASC, 0 means nearly no changes
1308 in release time while 1 produces higher release times.
1309
1310 @item level
1311 Auto level output signal. Default is enabled.
1312 This normalizes audio back to 0dB if enabled.
1313 @end table
1314
1315 Depending on picked setting it is recommended to upsample input 2x or 4x times
1316 with @ref{aresample} before applying this filter.
1317
1318 @section allpass
1319
1320 Apply a two-pole all-pass filter with central frequency (in Hz)
1321 @var{frequency}, and filter-width @var{width}.
1322 An all-pass filter changes the audio's frequency to phase relationship
1323 without changing its frequency to amplitude relationship.
1324
1325 The filter accepts the following options:
1326
1327 @table @option
1328 @item frequency, f
1329 Set frequency in Hz.
1330
1331 @item width_type, t
1332 Set method to specify band-width of filter.
1333 @table @option
1334 @item h
1335 Hz
1336 @item q
1337 Q-Factor
1338 @item o
1339 octave
1340 @item s
1341 slope
1342 @item k
1343 kHz
1344 @end table
1345
1346 @item width, w
1347 Specify the band-width of a filter in width_type units.
1348
1349 @item channels, c
1350 Specify which channels to filter, by default all available are filtered.
1351 @end table
1352
1353 @subsection Commands
1354
1355 This filter supports the following commands:
1356 @table @option
1357 @item frequency, f
1358 Change allpass frequency.
1359 Syntax for the command is : "@var{frequency}"
1360
1361 @item width_type, t
1362 Change allpass width_type.
1363 Syntax for the command is : "@var{width_type}"
1364
1365 @item width, w
1366 Change allpass width.
1367 Syntax for the command is : "@var{width}"
1368 @end table
1369
1370 @section aloop
1371
1372 Loop audio samples.
1373
1374 The filter accepts the following options:
1375
1376 @table @option
1377 @item loop
1378 Set the number of loops. Setting this value to -1 will result in infinite loops.
1379 Default is 0.
1380
1381 @item size
1382 Set maximal number of samples. Default is 0.
1383
1384 @item start
1385 Set first sample of loop. Default is 0.
1386 @end table
1387
1388 @anchor{amerge}
1389 @section amerge
1390
1391 Merge two or more audio streams into a single multi-channel stream.
1392
1393 The filter accepts the following options:
1394
1395 @table @option
1396
1397 @item inputs
1398 Set the number of inputs. Default is 2.
1399
1400 @end table
1401
1402 If the channel layouts of the inputs are disjoint, and therefore compatible,
1403 the channel layout of the output will be set accordingly and the channels
1404 will be reordered as necessary. If the channel layouts of the inputs are not
1405 disjoint, the output will have all the channels of the first input then all
1406 the channels of the second input, in that order, and the channel layout of
1407 the output will be the default value corresponding to the total number of
1408 channels.
1409
1410 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1411 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1412 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1413 first input, b1 is the first channel of the second input).
1414
1415 On the other hand, if both input are in stereo, the output channels will be
1416 in the default order: a1, a2, b1, b2, and the channel layout will be
1417 arbitrarily set to 4.0, which may or may not be the expected value.
1418
1419 All inputs must have the same sample rate, and format.
1420
1421 If inputs do not have the same duration, the output will stop with the
1422 shortest.
1423
1424 @subsection Examples
1425
1426 @itemize
1427 @item
1428 Merge two mono files into a stereo stream:
1429 @example
1430 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1431 @end example
1432
1433 @item
1434 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1435 @example
1436 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
1437 @end example
1438 @end itemize
1439
1440 @section amix
1441
1442 Mixes multiple audio inputs into a single output.
1443
1444 Note that this filter only supports float samples (the @var{amerge}
1445 and @var{pan} audio filters support many formats). If the @var{amix}
1446 input has integer samples then @ref{aresample} will be automatically
1447 inserted to perform the conversion to float samples.
1448
1449 For example
1450 @example
1451 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1452 @end example
1453 will mix 3 input audio streams to a single output with the same duration as the
1454 first input and a dropout transition time of 3 seconds.
1455
1456 It accepts the following parameters:
1457 @table @option
1458
1459 @item inputs
1460 The number of inputs. If unspecified, it defaults to 2.
1461
1462 @item duration
1463 How to determine the end-of-stream.
1464 @table @option
1465
1466 @item longest
1467 The duration of the longest input. (default)
1468
1469 @item shortest
1470 The duration of the shortest input.
1471
1472 @item first
1473 The duration of the first input.
1474
1475 @end table
1476
1477 @item dropout_transition
1478 The transition time, in seconds, for volume renormalization when an input
1479 stream ends. The default value is 2 seconds.
1480
1481 @item weights
1482 Specify weight of each input audio stream as sequence.
1483 Each weight is separated by space. By default all inputs have same weight.
1484 @end table
1485
1486 @section anequalizer
1487
1488 High-order parametric multiband equalizer for each channel.
1489
1490 It accepts the following parameters:
1491 @table @option
1492 @item params
1493
1494 This option string is in format:
1495 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1496 Each equalizer band is separated by '|'.
1497
1498 @table @option
1499 @item chn
1500 Set channel number to which equalization will be applied.
1501 If input doesn't have that channel the entry is ignored.
1502
1503 @item f
1504 Set central frequency for band.
1505 If input doesn't have that frequency the entry is ignored.
1506
1507 @item w
1508 Set band width in hertz.
1509
1510 @item g
1511 Set band gain in dB.
1512
1513 @item t
1514 Set filter type for band, optional, can be:
1515
1516 @table @samp
1517 @item 0
1518 Butterworth, this is default.
1519
1520 @item 1
1521 Chebyshev type 1.
1522
1523 @item 2
1524 Chebyshev type 2.
1525 @end table
1526 @end table
1527
1528 @item curves
1529 With this option activated frequency response of anequalizer is displayed
1530 in video stream.
1531
1532 @item size
1533 Set video stream size. Only useful if curves option is activated.
1534
1535 @item mgain
1536 Set max gain that will be displayed. Only useful if curves option is activated.
1537 Setting this to a reasonable value makes it possible to display gain which is derived from
1538 neighbour bands which are too close to each other and thus produce higher gain
1539 when both are activated.
1540
1541 @item fscale
1542 Set frequency scale used to draw frequency response in video output.
1543 Can be linear or logarithmic. Default is logarithmic.
1544
1545 @item colors
1546 Set color for each channel curve which is going to be displayed in video stream.
1547 This is list of color names separated by space or by '|'.
1548 Unrecognised or missing colors will be replaced by white color.
1549 @end table
1550
1551 @subsection Examples
1552
1553 @itemize
1554 @item
1555 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1556 for first 2 channels using Chebyshev type 1 filter:
1557 @example
1558 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1559 @end example
1560 @end itemize
1561
1562 @subsection Commands
1563
1564 This filter supports the following commands:
1565 @table @option
1566 @item change
1567 Alter existing filter parameters.
1568 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1569
1570 @var{fN} is existing filter number, starting from 0, if no such filter is available
1571 error is returned.
1572 @var{freq} set new frequency parameter.
1573 @var{width} set new width parameter in herz.
1574 @var{gain} set new gain parameter in dB.
1575
1576 Full filter invocation with asendcmd may look like this:
1577 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1578 @end table
1579
1580 @section anull
1581
1582 Pass the audio source unchanged to the output.
1583
1584 @section apad
1585
1586 Pad the end of an audio stream with silence.
1587
1588 This can be used together with @command{ffmpeg} @option{-shortest} to
1589 extend audio streams to the same length as the video stream.
1590
1591 A description of the accepted options follows.
1592
1593 @table @option
1594 @item packet_size
1595 Set silence packet size. Default value is 4096.
1596
1597 @item pad_len
1598 Set the number of samples of silence to add to the end. After the
1599 value is reached, the stream is terminated. This option is mutually
1600 exclusive with @option{whole_len}.
1601
1602 @item whole_len
1603 Set the minimum total number of samples in the output audio stream. If
1604 the value is longer than the input audio length, silence is added to
1605 the end, until the value is reached. This option is mutually exclusive
1606 with @option{pad_len}.
1607 @end table
1608
1609 If neither the @option{pad_len} nor the @option{whole_len} option is
1610 set, the filter will add silence to the end of the input stream
1611 indefinitely.
1612
1613 @subsection Examples
1614
1615 @itemize
1616 @item
1617 Add 1024 samples of silence to the end of the input:
1618 @example
1619 apad=pad_len=1024
1620 @end example
1621
1622 @item
1623 Make sure the audio output will contain at least 10000 samples, pad
1624 the input with silence if required:
1625 @example
1626 apad=whole_len=10000
1627 @end example
1628
1629 @item
1630 Use @command{ffmpeg} to pad the audio input with silence, so that the
1631 video stream will always result the shortest and will be converted
1632 until the end in the output file when using the @option{shortest}
1633 option:
1634 @example
1635 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1636 @end example
1637 @end itemize
1638
1639 @section aphaser
1640 Add a phasing effect to the input audio.
1641
1642 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1643 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1644
1645 A description of the accepted parameters follows.
1646
1647 @table @option
1648 @item in_gain
1649 Set input gain. Default is 0.4.
1650
1651 @item out_gain
1652 Set output gain. Default is 0.74
1653
1654 @item delay
1655 Set delay in milliseconds. Default is 3.0.
1656
1657 @item decay
1658 Set decay. Default is 0.4.
1659
1660 @item speed
1661 Set modulation speed in Hz. Default is 0.5.
1662
1663 @item type
1664 Set modulation type. Default is triangular.
1665
1666 It accepts the following values:
1667 @table @samp
1668 @item triangular, t
1669 @item sinusoidal, s
1670 @end table
1671 @end table
1672
1673 @section apulsator
1674
1675 Audio pulsator is something between an autopanner and a tremolo.
1676 But it can produce funny stereo effects as well. Pulsator changes the volume
1677 of the left and right channel based on a LFO (low frequency oscillator) with
1678 different waveforms and shifted phases.
1679 This filter have the ability to define an offset between left and right
1680 channel. An offset of 0 means that both LFO shapes match each other.
1681 The left and right channel are altered equally - a conventional tremolo.
1682 An offset of 50% means that the shape of the right channel is exactly shifted
1683 in phase (or moved backwards about half of the frequency) - pulsator acts as
1684 an autopanner. At 1 both curves match again. Every setting in between moves the
1685 phase shift gapless between all stages and produces some "bypassing" sounds with
1686 sine and triangle waveforms. The more you set the offset near 1 (starting from
1687 the 0.5) the faster the signal passes from the left to the right speaker.
1688
1689 The filter accepts the following options:
1690
1691 @table @option
1692 @item level_in
1693 Set input gain. By default it is 1. Range is [0.015625 - 64].
1694
1695 @item level_out
1696 Set output gain. By default it is 1. Range is [0.015625 - 64].
1697
1698 @item mode
1699 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
1700 sawup or sawdown. Default is sine.
1701
1702 @item amount
1703 Set modulation. Define how much of original signal is affected by the LFO.
1704
1705 @item offset_l
1706 Set left channel offset. Default is 0. Allowed range is [0 - 1].
1707
1708 @item offset_r
1709 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
1710
1711 @item width
1712 Set pulse width. Default is 1. Allowed range is [0 - 2].
1713
1714 @item timing
1715 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
1716
1717 @item bpm
1718 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
1719 is set to bpm.
1720
1721 @item ms
1722 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
1723 is set to ms.
1724
1725 @item hz
1726 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
1727 if timing is set to hz.
1728 @end table
1729
1730 @anchor{aresample}
1731 @section aresample
1732
1733 Resample the input audio to the specified parameters, using the
1734 libswresample library. If none are specified then the filter will
1735 automatically convert between its input and output.
1736
1737 This filter is also able to stretch/squeeze the audio data to make it match
1738 the timestamps or to inject silence / cut out audio to make it match the
1739 timestamps, do a combination of both or do neither.
1740
1741 The filter accepts the syntax
1742 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
1743 expresses a sample rate and @var{resampler_options} is a list of
1744 @var{key}=@var{value} pairs, separated by ":". See the
1745 @ref{Resampler Options,,"Resampler Options" section in the
1746 ffmpeg-resampler(1) manual,ffmpeg-resampler}
1747 for the complete list of supported options.
1748
1749 @subsection Examples
1750
1751 @itemize
1752 @item
1753 Resample the input audio to 44100Hz:
1754 @example
1755 aresample=44100
1756 @end example
1757
1758 @item
1759 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
1760 samples per second compensation:
1761 @example
1762 aresample=async=1000
1763 @end example
1764 @end itemize
1765
1766 @section areverse
1767
1768 Reverse an audio clip.
1769
1770 Warning: This filter requires memory to buffer the entire clip, so trimming
1771 is suggested.
1772
1773 @subsection Examples
1774
1775 @itemize
1776 @item
1777 Take the first 5 seconds of a clip, and reverse it.
1778 @example
1779 atrim=end=5,areverse
1780 @end example
1781 @end itemize
1782
1783 @section asetnsamples
1784
1785 Set the number of samples per each output audio frame.
1786
1787 The last output packet may contain a different number of samples, as
1788 the filter will flush all the remaining samples when the input audio
1789 signals its end.
1790
1791 The filter accepts the following options:
1792
1793 @table @option
1794
1795 @item nb_out_samples, n
1796 Set the number of frames per each output audio frame. The number is
1797 intended as the number of samples @emph{per each channel}.
1798 Default value is 1024.
1799
1800 @item pad, p
1801 If set to 1, the filter will pad the last audio frame with zeroes, so
1802 that the last frame will contain the same number of samples as the
1803 previous ones. Default value is 1.
1804 @end table
1805
1806 For example, to set the number of per-frame samples to 1234 and
1807 disable padding for the last frame, use:
1808 @example
1809 asetnsamples=n=1234:p=0
1810 @end example
1811
1812 @section asetrate
1813
1814 Set the sample rate without altering the PCM data.
1815 This will result in a change of speed and pitch.
1816
1817 The filter accepts the following options:
1818
1819 @table @option
1820 @item sample_rate, r
1821 Set the output sample rate. Default is 44100 Hz.
1822 @end table
1823
1824 @section ashowinfo
1825
1826 Show a line containing various information for each input audio frame.
1827 The input audio is not modified.
1828
1829 The shown line contains a sequence of key/value pairs of the form
1830 @var{key}:@var{value}.
1831
1832 The following values are shown in the output:
1833
1834 @table @option
1835 @item n
1836 The (sequential) number of the input frame, starting from 0.
1837
1838 @item pts
1839 The presentation timestamp of the input frame, in time base units; the time base
1840 depends on the filter input pad, and is usually 1/@var{sample_rate}.
1841
1842 @item pts_time
1843 The presentation timestamp of the input frame in seconds.
1844
1845 @item pos
1846 position of the frame in the input stream, -1 if this information in
1847 unavailable and/or meaningless (for example in case of synthetic audio)
1848
1849 @item fmt
1850 The sample format.
1851
1852 @item chlayout
1853 The channel layout.
1854
1855 @item rate
1856 The sample rate for the audio frame.
1857
1858 @item nb_samples
1859 The number of samples (per channel) in the frame.
1860
1861 @item checksum
1862 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
1863 audio, the data is treated as if all the planes were concatenated.
1864
1865 @item plane_checksums
1866 A list of Adler-32 checksums for each data plane.
1867 @end table
1868
1869 @anchor{astats}
1870 @section astats
1871
1872 Display time domain statistical information about the audio channels.
1873 Statistics are calculated and displayed for each audio channel and,
1874 where applicable, an overall figure is also given.
1875
1876 It accepts the following option:
1877 @table @option
1878 @item length
1879 Short window length in seconds, used for peak and trough RMS measurement.
1880 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
1881
1882 @item metadata
1883
1884 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
1885 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
1886 disabled.
1887
1888 Available keys for each channel are:
1889 DC_offset
1890 Min_level
1891 Max_level
1892 Min_difference
1893 Max_difference
1894 Mean_difference
1895 RMS_difference
1896 Peak_level
1897 RMS_peak
1898 RMS_trough
1899 Crest_factor
1900 Flat_factor
1901 Peak_count
1902 Bit_depth
1903 Dynamic_range
1904
1905 and for Overall:
1906 DC_offset
1907 Min_level
1908 Max_level
1909 Min_difference
1910 Max_difference
1911 Mean_difference
1912 RMS_difference
1913 Peak_level
1914 RMS_level
1915 RMS_peak
1916 RMS_trough
1917 Flat_factor
1918 Peak_count
1919 Bit_depth
1920 Number_of_samples
1921
1922 For example full key look like this @code{lavfi.astats.1.DC_offset} or
1923 this @code{lavfi.astats.Overall.Peak_count}.
1924
1925 For description what each key means read below.
1926
1927 @item reset
1928 Set number of frame after which stats are going to be recalculated.
1929 Default is disabled.
1930 @end table
1931
1932 A description of each shown parameter follows:
1933
1934 @table @option
1935 @item DC offset
1936 Mean amplitude displacement from zero.
1937
1938 @item Min level
1939 Minimal sample level.
1940
1941 @item Max level
1942 Maximal sample level.
1943
1944 @item Min difference
1945 Minimal difference between two consecutive samples.
1946
1947 @item Max difference
1948 Maximal difference between two consecutive samples.
1949
1950 @item Mean difference
1951 Mean difference between two consecutive samples.
1952 The average of each difference between two consecutive samples.
1953
1954 @item RMS difference
1955 Root Mean Square difference between two consecutive samples.
1956
1957 @item Peak level dB
1958 @item RMS level dB
1959 Standard peak and RMS level measured in dBFS.
1960
1961 @item RMS peak dB
1962 @item RMS trough dB
1963 Peak and trough values for RMS level measured over a short window.
1964
1965 @item Crest factor
1966 Standard ratio of peak to RMS level (note: not in dB).
1967
1968 @item Flat factor
1969 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
1970 (i.e. either @var{Min level} or @var{Max level}).
1971
1972 @item Peak count
1973 Number of occasions (not the number of samples) that the signal attained either
1974 @var{Min level} or @var{Max level}.
1975
1976 @item Bit depth
1977 Overall bit depth of audio. Number of bits used for each sample.
1978
1979 @item Dynamic range
1980 Measured dynamic range of audio in dB.
1981 @end table
1982
1983 @section atempo
1984
1985 Adjust audio tempo.
1986
1987 The filter accepts exactly one parameter, the audio tempo. If not
1988 specified then the filter will assume nominal 1.0 tempo. Tempo must
1989 be in the [0.5, 100.0] range.
1990
1991 Note that tempo greater than 2 will skip some samples rather than
1992 blend them in.  If for any reason this is a concern it is always
1993 possible to daisy-chain several instances of atempo to achieve the
1994 desired product tempo.
1995
1996 @subsection Examples
1997
1998 @itemize
1999 @item
2000 Slow down audio to 80% tempo:
2001 @example
2002 atempo=0.8
2003 @end example
2004
2005 @item
2006 To speed up audio to 300% tempo:
2007 @example
2008 atempo=3
2009 @end example
2010
2011 @item
2012 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2013 @example
2014 atempo=sqrt(3),atempo=sqrt(3)
2015 @end example
2016 @end itemize
2017
2018 @section atrim
2019
2020 Trim the input so that the output contains one continuous subpart of the input.
2021
2022 It accepts the following parameters:
2023 @table @option
2024 @item start
2025 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2026 sample with the timestamp @var{start} will be the first sample in the output.
2027
2028 @item end
2029 Specify time of the first audio sample that will be dropped, i.e. the
2030 audio sample immediately preceding the one with the timestamp @var{end} will be
2031 the last sample in the output.
2032
2033 @item start_pts
2034 Same as @var{start}, except this option sets the start timestamp in samples
2035 instead of seconds.
2036
2037 @item end_pts
2038 Same as @var{end}, except this option sets the end timestamp in samples instead
2039 of seconds.
2040
2041 @item duration
2042 The maximum duration of the output in seconds.
2043
2044 @item start_sample
2045 The number of the first sample that should be output.
2046
2047 @item end_sample
2048 The number of the first sample that should be dropped.
2049 @end table
2050
2051 @option{start}, @option{end}, and @option{duration} are expressed as time
2052 duration specifications; see
2053 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2054
2055 Note that the first two sets of the start/end options and the @option{duration}
2056 option look at the frame timestamp, while the _sample options simply count the
2057 samples that pass through the filter. So start/end_pts and start/end_sample will
2058 give different results when the timestamps are wrong, inexact or do not start at
2059 zero. Also note that this filter does not modify the timestamps. If you wish
2060 to have the output timestamps start at zero, insert the asetpts filter after the
2061 atrim filter.
2062
2063 If multiple start or end options are set, this filter tries to be greedy and
2064 keep all samples that match at least one of the specified constraints. To keep
2065 only the part that matches all the constraints at once, chain multiple atrim
2066 filters.
2067
2068 The defaults are such that all the input is kept. So it is possible to set e.g.
2069 just the end values to keep everything before the specified time.
2070
2071 Examples:
2072 @itemize
2073 @item
2074 Drop everything except the second minute of input:
2075 @example
2076 ffmpeg -i INPUT -af atrim=60:120
2077 @end example
2078
2079 @item
2080 Keep only the first 1000 samples:
2081 @example
2082 ffmpeg -i INPUT -af atrim=end_sample=1000
2083 @end example
2084
2085 @end itemize
2086
2087 @section bandpass
2088
2089 Apply a two-pole Butterworth band-pass filter with central
2090 frequency @var{frequency}, and (3dB-point) band-width width.
2091 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2092 instead of the default: constant 0dB peak gain.
2093 The filter roll off at 6dB per octave (20dB per decade).
2094
2095 The filter accepts the following options:
2096
2097 @table @option
2098 @item frequency, f
2099 Set the filter's central frequency. Default is @code{3000}.
2100
2101 @item csg
2102 Constant skirt gain if set to 1. Defaults to 0.
2103
2104 @item width_type, t
2105 Set method to specify band-width of filter.
2106 @table @option
2107 @item h
2108 Hz
2109 @item q
2110 Q-Factor
2111 @item o
2112 octave
2113 @item s
2114 slope
2115 @item k
2116 kHz
2117 @end table
2118
2119 @item width, w
2120 Specify the band-width of a filter in width_type units.
2121
2122 @item channels, c
2123 Specify which channels to filter, by default all available are filtered.
2124 @end table
2125
2126 @subsection Commands
2127
2128 This filter supports the following commands:
2129 @table @option
2130 @item frequency, f
2131 Change bandpass frequency.
2132 Syntax for the command is : "@var{frequency}"
2133
2134 @item width_type, t
2135 Change bandpass width_type.
2136 Syntax for the command is : "@var{width_type}"
2137
2138 @item width, w
2139 Change bandpass width.
2140 Syntax for the command is : "@var{width}"
2141 @end table
2142
2143 @section bandreject
2144
2145 Apply a two-pole Butterworth band-reject filter with central
2146 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2147 The filter roll off at 6dB per octave (20dB per decade).
2148
2149 The filter accepts the following options:
2150
2151 @table @option
2152 @item frequency, f
2153 Set the filter's central frequency. Default is @code{3000}.
2154
2155 @item width_type, t
2156 Set method to specify band-width of filter.
2157 @table @option
2158 @item h
2159 Hz
2160 @item q
2161 Q-Factor
2162 @item o
2163 octave
2164 @item s
2165 slope
2166 @item k
2167 kHz
2168 @end table
2169
2170 @item width, w
2171 Specify the band-width of a filter in width_type units.
2172
2173 @item channels, c
2174 Specify which channels to filter, by default all available are filtered.
2175 @end table
2176
2177 @subsection Commands
2178
2179 This filter supports the following commands:
2180 @table @option
2181 @item frequency, f
2182 Change bandreject frequency.
2183 Syntax for the command is : "@var{frequency}"
2184
2185 @item width_type, t
2186 Change bandreject width_type.
2187 Syntax for the command is : "@var{width_type}"
2188
2189 @item width, w
2190 Change bandreject width.
2191 Syntax for the command is : "@var{width}"
2192 @end table
2193
2194 @section bass, lowshelf
2195
2196 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2197 shelving filter with a response similar to that of a standard
2198 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2199
2200 The filter accepts the following options:
2201
2202 @table @option
2203 @item gain, g
2204 Give the gain at 0 Hz. Its useful range is about -20
2205 (for a large cut) to +20 (for a large boost).
2206 Beware of clipping when using a positive gain.
2207
2208 @item frequency, f
2209 Set the filter's central frequency and so can be used
2210 to extend or reduce the frequency range to be boosted or cut.
2211 The default value is @code{100} Hz.
2212
2213 @item width_type, t
2214 Set method to specify band-width of filter.
2215 @table @option
2216 @item h
2217 Hz
2218 @item q
2219 Q-Factor
2220 @item o
2221 octave
2222 @item s
2223 slope
2224 @item k
2225 kHz
2226 @end table
2227
2228 @item width, w
2229 Determine how steep is the filter's shelf transition.
2230
2231 @item channels, c
2232 Specify which channels to filter, by default all available are filtered.
2233 @end table
2234
2235 @subsection Commands
2236
2237 This filter supports the following commands:
2238 @table @option
2239 @item frequency, f
2240 Change bass frequency.
2241 Syntax for the command is : "@var{frequency}"
2242
2243 @item width_type, t
2244 Change bass width_type.
2245 Syntax for the command is : "@var{width_type}"
2246
2247 @item width, w
2248 Change bass width.
2249 Syntax for the command is : "@var{width}"
2250
2251 @item gain, g
2252 Change bass gain.
2253 Syntax for the command is : "@var{gain}"
2254 @end table
2255
2256 @section biquad
2257
2258 Apply a biquad IIR filter with the given coefficients.
2259 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2260 are the numerator and denominator coefficients respectively.
2261 and @var{channels}, @var{c} specify which channels to filter, by default all
2262 available are filtered.
2263
2264 @subsection Commands
2265
2266 This filter supports the following commands:
2267 @table @option
2268 @item a0
2269 @item a1
2270 @item a2
2271 @item b0
2272 @item b1
2273 @item b2
2274 Change biquad parameter.
2275 Syntax for the command is : "@var{value}"
2276 @end table
2277
2278 @section bs2b
2279 Bauer stereo to binaural transformation, which improves headphone listening of
2280 stereo audio records.
2281
2282 To enable compilation of this filter you need to configure FFmpeg with
2283 @code{--enable-libbs2b}.
2284
2285 It accepts the following parameters:
2286 @table @option
2287
2288 @item profile
2289 Pre-defined crossfeed level.
2290 @table @option
2291
2292 @item default
2293 Default level (fcut=700, feed=50).
2294
2295 @item cmoy
2296 Chu Moy circuit (fcut=700, feed=60).
2297
2298 @item jmeier
2299 Jan Meier circuit (fcut=650, feed=95).
2300
2301 @end table
2302
2303 @item fcut
2304 Cut frequency (in Hz).
2305
2306 @item feed
2307 Feed level (in Hz).
2308
2309 @end table
2310
2311 @section channelmap
2312
2313 Remap input channels to new locations.
2314
2315 It accepts the following parameters:
2316 @table @option
2317 @item map
2318 Map channels from input to output. The argument is a '|'-separated list of
2319 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2320 @var{in_channel} form. @var{in_channel} can be either the name of the input
2321 channel (e.g. FL for front left) or its index in the input channel layout.
2322 @var{out_channel} is the name of the output channel or its index in the output
2323 channel layout. If @var{out_channel} is not given then it is implicitly an
2324 index, starting with zero and increasing by one for each mapping.
2325
2326 @item channel_layout
2327 The channel layout of the output stream.
2328 @end table
2329
2330 If no mapping is present, the filter will implicitly map input channels to
2331 output channels, preserving indices.
2332
2333 @subsection Examples
2334
2335 @itemize
2336 @item
2337 For example, assuming a 5.1+downmix input MOV file,
2338 @example
2339 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2340 @end example
2341 will create an output WAV file tagged as stereo from the downmix channels of
2342 the input.
2343
2344 @item
2345 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2346 @example
2347 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2348 @end example
2349 @end itemize
2350
2351 @section channelsplit
2352
2353 Split each channel from an input audio stream into a separate output stream.
2354
2355 It accepts the following parameters:
2356 @table @option
2357 @item channel_layout
2358 The channel layout of the input stream. The default is "stereo".
2359 @item channels
2360 A channel layout describing the channels to be extracted as separate output streams
2361 or "all" to extract each input channel as a separate stream. The default is "all".
2362
2363 Choosing channels not present in channel layout in the input will result in an error.
2364 @end table
2365
2366 @subsection Examples
2367
2368 @itemize
2369 @item
2370 For example, assuming a stereo input MP3 file,
2371 @example
2372 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2373 @end example
2374 will create an output Matroska file with two audio streams, one containing only
2375 the left channel and the other the right channel.
2376
2377 @item
2378 Split a 5.1 WAV file into per-channel files:
2379 @example
2380 ffmpeg -i in.wav -filter_complex
2381 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2382 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2383 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2384 side_right.wav
2385 @end example
2386
2387 @item
2388 Extract only LFE from a 5.1 WAV file:
2389 @example
2390 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2391 -map '[LFE]' lfe.wav
2392 @end example
2393 @end itemize
2394
2395 @section chorus
2396 Add a chorus effect to the audio.
2397
2398 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2399
2400 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2401 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2402 The modulation depth defines the range the modulated delay is played before or after
2403 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2404 sound tuned around the original one, like in a chorus where some vocals are slightly
2405 off key.
2406
2407 It accepts the following parameters:
2408 @table @option
2409 @item in_gain
2410 Set input gain. Default is 0.4.
2411
2412 @item out_gain
2413 Set output gain. Default is 0.4.
2414
2415 @item delays
2416 Set delays. A typical delay is around 40ms to 60ms.
2417
2418 @item decays
2419 Set decays.
2420
2421 @item speeds
2422 Set speeds.
2423
2424 @item depths
2425 Set depths.
2426 @end table
2427
2428 @subsection Examples
2429
2430 @itemize
2431 @item
2432 A single delay:
2433 @example
2434 chorus=0.7:0.9:55:0.4:0.25:2
2435 @end example
2436
2437 @item
2438 Two delays:
2439 @example
2440 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2441 @end example
2442
2443 @item
2444 Fuller sounding chorus with three delays:
2445 @example
2446 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
2447 @end example
2448 @end itemize
2449
2450 @section compand
2451 Compress or expand the audio's dynamic range.
2452
2453 It accepts the following parameters:
2454
2455 @table @option
2456
2457 @item attacks
2458 @item decays
2459 A list of times in seconds for each channel over which the instantaneous level
2460 of the input signal is averaged to determine its volume. @var{attacks} refers to
2461 increase of volume and @var{decays} refers to decrease of volume. For most
2462 situations, the attack time (response to the audio getting louder) should be
2463 shorter than the decay time, because the human ear is more sensitive to sudden
2464 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2465 a typical value for decay is 0.8 seconds.
2466 If specified number of attacks & decays is lower than number of channels, the last
2467 set attack/decay will be used for all remaining channels.
2468
2469 @item points
2470 A list of points for the transfer function, specified in dB relative to the
2471 maximum possible signal amplitude. Each key points list must be defined using
2472 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2473 @code{x0/y0 x1/y1 x2/y2 ....}
2474
2475 The input values must be in strictly increasing order but the transfer function
2476 does not have to be monotonically rising. The point @code{0/0} is assumed but
2477 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2478 function are @code{-70/-70|-60/-20|1/0}.
2479
2480 @item soft-knee
2481 Set the curve radius in dB for all joints. It defaults to 0.01.
2482
2483 @item gain
2484 Set the additional gain in dB to be applied at all points on the transfer
2485 function. This allows for easy adjustment of the overall gain.
2486 It defaults to 0.
2487
2488 @item volume
2489 Set an initial volume, in dB, to be assumed for each channel when filtering
2490 starts. This permits the user to supply a nominal level initially, so that, for
2491 example, a very large gain is not applied to initial signal levels before the
2492 companding has begun to operate. A typical value for audio which is initially
2493 quiet is -90 dB. It defaults to 0.
2494
2495 @item delay
2496 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2497 delayed before being fed to the volume adjuster. Specifying a delay
2498 approximately equal to the attack/decay times allows the filter to effectively
2499 operate in predictive rather than reactive mode. It defaults to 0.
2500
2501 @end table
2502
2503 @subsection Examples
2504
2505 @itemize
2506 @item
2507 Make music with both quiet and loud passages suitable for listening to in a
2508 noisy environment:
2509 @example
2510 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2511 @end example
2512
2513 Another example for audio with whisper and explosion parts:
2514 @example
2515 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2516 @end example
2517
2518 @item
2519 A noise gate for when the noise is at a lower level than the signal:
2520 @example
2521 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2522 @end example
2523
2524 @item
2525 Here is another noise gate, this time for when the noise is at a higher level
2526 than the signal (making it, in some ways, similar to squelch):
2527 @example
2528 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
2529 @end example
2530
2531 @item
2532 2:1 compression starting at -6dB:
2533 @example
2534 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2535 @end example
2536
2537 @item
2538 2:1 compression starting at -9dB:
2539 @example
2540 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
2541 @end example
2542
2543 @item
2544 2:1 compression starting at -12dB:
2545 @example
2546 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
2547 @end example
2548
2549 @item
2550 2:1 compression starting at -18dB:
2551 @example
2552 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
2553 @end example
2554
2555 @item
2556 3:1 compression starting at -15dB:
2557 @example
2558 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
2559 @end example
2560
2561 @item
2562 Compressor/Gate:
2563 @example
2564 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
2565 @end example
2566
2567 @item
2568 Expander:
2569 @example
2570 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
2571 @end example
2572
2573 @item
2574 Hard limiter at -6dB:
2575 @example
2576 compand=attacks=0:points=-80/-80|-6/-6|20/-6
2577 @end example
2578
2579 @item
2580 Hard limiter at -12dB:
2581 @example
2582 compand=attacks=0:points=-80/-80|-12/-12|20/-12
2583 @end example
2584
2585 @item
2586 Hard noise gate at -35 dB:
2587 @example
2588 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
2589 @end example
2590
2591 @item
2592 Soft limiter:
2593 @example
2594 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
2595 @end example
2596 @end itemize
2597
2598 @section compensationdelay
2599
2600 Compensation Delay Line is a metric based delay to compensate differing
2601 positions of microphones or speakers.
2602
2603 For example, you have recorded guitar with two microphones placed in
2604 different location. Because the front of sound wave has fixed speed in
2605 normal conditions, the phasing of microphones can vary and depends on
2606 their location and interposition. The best sound mix can be achieved when
2607 these microphones are in phase (synchronized). Note that distance of
2608 ~30 cm between microphones makes one microphone to capture signal in
2609 antiphase to another microphone. That makes the final mix sounding moody.
2610 This filter helps to solve phasing problems by adding different delays
2611 to each microphone track and make them synchronized.
2612
2613 The best result can be reached when you take one track as base and
2614 synchronize other tracks one by one with it.
2615 Remember that synchronization/delay tolerance depends on sample rate, too.
2616 Higher sample rates will give more tolerance.
2617
2618 It accepts the following parameters:
2619
2620 @table @option
2621 @item mm
2622 Set millimeters distance. This is compensation distance for fine tuning.
2623 Default is 0.
2624
2625 @item cm
2626 Set cm distance. This is compensation distance for tightening distance setup.
2627 Default is 0.
2628
2629 @item m
2630 Set meters distance. This is compensation distance for hard distance setup.
2631 Default is 0.
2632
2633 @item dry
2634 Set dry amount. Amount of unprocessed (dry) signal.
2635 Default is 0.
2636
2637 @item wet
2638 Set wet amount. Amount of processed (wet) signal.
2639 Default is 1.
2640
2641 @item temp
2642 Set temperature degree in Celsius. This is the temperature of the environment.
2643 Default is 20.
2644 @end table
2645
2646 @section crossfeed
2647 Apply headphone crossfeed filter.
2648
2649 Crossfeed is the process of blending the left and right channels of stereo
2650 audio recording.
2651 It is mainly used to reduce extreme stereo separation of low frequencies.
2652
2653 The intent is to produce more speaker like sound to the listener.
2654
2655 The filter accepts the following options:
2656
2657 @table @option
2658 @item strength
2659 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
2660 This sets gain of low shelf filter for side part of stereo image.
2661 Default is -6dB. Max allowed is -30db when strength is set to 1.
2662
2663 @item range
2664 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
2665 This sets cut off frequency of low shelf filter. Default is cut off near
2666 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
2667
2668 @item level_in
2669 Set input gain. Default is 0.9.
2670
2671 @item level_out
2672 Set output gain. Default is 1.
2673 @end table
2674
2675 @section crystalizer
2676 Simple algorithm to expand audio dynamic range.
2677
2678 The filter accepts the following options:
2679
2680 @table @option
2681 @item i
2682 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
2683 (unchanged sound) to 10.0 (maximum effect).
2684
2685 @item c
2686 Enable clipping. By default is enabled.
2687 @end table
2688
2689 @section dcshift
2690 Apply a DC shift to the audio.
2691
2692 This can be useful to remove a DC offset (caused perhaps by a hardware problem
2693 in the recording chain) from the audio. The effect of a DC offset is reduced
2694 headroom and hence volume. The @ref{astats} filter can be used to determine if
2695 a signal has a DC offset.
2696
2697 @table @option
2698 @item shift
2699 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
2700 the audio.
2701
2702 @item limitergain
2703 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
2704 used to prevent clipping.
2705 @end table
2706
2707 @section drmeter
2708 Measure audio dynamic range.
2709
2710 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
2711 is found in transition material. And anything less that 8 have very poor dynamics
2712 and is very compressed.
2713
2714 The filter accepts the following options:
2715
2716 @table @option
2717 @item length
2718 Set window length in seconds used to split audio into segments of equal length.
2719 Default is 3 seconds.
2720 @end table
2721
2722 @section dynaudnorm
2723 Dynamic Audio Normalizer.
2724
2725 This filter applies a certain amount of gain to the input audio in order
2726 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
2727 contrast to more "simple" normalization algorithms, the Dynamic Audio
2728 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
2729 This allows for applying extra gain to the "quiet" sections of the audio
2730 while avoiding distortions or clipping the "loud" sections. In other words:
2731 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
2732 sections, in the sense that the volume of each section is brought to the
2733 same target level. Note, however, that the Dynamic Audio Normalizer achieves
2734 this goal *without* applying "dynamic range compressing". It will retain 100%
2735 of the dynamic range *within* each section of the audio file.
2736
2737 @table @option
2738 @item f
2739 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
2740 Default is 500 milliseconds.
2741 The Dynamic Audio Normalizer processes the input audio in small chunks,
2742 referred to as frames. This is required, because a peak magnitude has no
2743 meaning for just a single sample value. Instead, we need to determine the
2744 peak magnitude for a contiguous sequence of sample values. While a "standard"
2745 normalizer would simply use the peak magnitude of the complete file, the
2746 Dynamic Audio Normalizer determines the peak magnitude individually for each
2747 frame. The length of a frame is specified in milliseconds. By default, the
2748 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
2749 been found to give good results with most files.
2750 Note that the exact frame length, in number of samples, will be determined
2751 automatically, based on the sampling rate of the individual input audio file.
2752
2753 @item g
2754 Set the Gaussian filter window size. In range from 3 to 301, must be odd
2755 number. Default is 31.
2756 Probably the most important parameter of the Dynamic Audio Normalizer is the
2757 @code{window size} of the Gaussian smoothing filter. The filter's window size
2758 is specified in frames, centered around the current frame. For the sake of
2759 simplicity, this must be an odd number. Consequently, the default value of 31
2760 takes into account the current frame, as well as the 15 preceding frames and
2761 the 15 subsequent frames. Using a larger window results in a stronger
2762 smoothing effect and thus in less gain variation, i.e. slower gain
2763 adaptation. Conversely, using a smaller window results in a weaker smoothing
2764 effect and thus in more gain variation, i.e. faster gain adaptation.
2765 In other words, the more you increase this value, the more the Dynamic Audio
2766 Normalizer will behave like a "traditional" normalization filter. On the
2767 contrary, the more you decrease this value, the more the Dynamic Audio
2768 Normalizer will behave like a dynamic range compressor.
2769
2770 @item p
2771 Set the target peak value. This specifies the highest permissible magnitude
2772 level for the normalized audio input. This filter will try to approach the
2773 target peak magnitude as closely as possible, but at the same time it also
2774 makes sure that the normalized signal will never exceed the peak magnitude.
2775 A frame's maximum local gain factor is imposed directly by the target peak
2776 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
2777 It is not recommended to go above this value.
2778
2779 @item m
2780 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
2781 The Dynamic Audio Normalizer determines the maximum possible (local) gain
2782 factor for each input frame, i.e. the maximum gain factor that does not
2783 result in clipping or distortion. The maximum gain factor is determined by
2784 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
2785 additionally bounds the frame's maximum gain factor by a predetermined
2786 (global) maximum gain factor. This is done in order to avoid excessive gain
2787 factors in "silent" or almost silent frames. By default, the maximum gain
2788 factor is 10.0, For most inputs the default value should be sufficient and
2789 it usually is not recommended to increase this value. Though, for input
2790 with an extremely low overall volume level, it may be necessary to allow even
2791 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
2792 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
2793 Instead, a "sigmoid" threshold function will be applied. This way, the
2794 gain factors will smoothly approach the threshold value, but never exceed that
2795 value.
2796
2797 @item r
2798 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
2799 By default, the Dynamic Audio Normalizer performs "peak" normalization.
2800 This means that the maximum local gain factor for each frame is defined
2801 (only) by the frame's highest magnitude sample. This way, the samples can
2802 be amplified as much as possible without exceeding the maximum signal
2803 level, i.e. without clipping. Optionally, however, the Dynamic Audio
2804 Normalizer can also take into account the frame's root mean square,
2805 abbreviated RMS. In electrical engineering, the RMS is commonly used to
2806 determine the power of a time-varying signal. It is therefore considered
2807 that the RMS is a better approximation of the "perceived loudness" than
2808 just looking at the signal's peak magnitude. Consequently, by adjusting all
2809 frames to a constant RMS value, a uniform "perceived loudness" can be
2810 established. If a target RMS value has been specified, a frame's local gain
2811 factor is defined as the factor that would result in exactly that RMS value.
2812 Note, however, that the maximum local gain factor is still restricted by the
2813 frame's highest magnitude sample, in order to prevent clipping.
2814
2815 @item n
2816 Enable channels coupling. By default is enabled.
2817 By default, the Dynamic Audio Normalizer will amplify all channels by the same
2818 amount. This means the same gain factor will be applied to all channels, i.e.
2819 the maximum possible gain factor is determined by the "loudest" channel.
2820 However, in some recordings, it may happen that the volume of the different
2821 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
2822 In this case, this option can be used to disable the channel coupling. This way,
2823 the gain factor will be determined independently for each channel, depending
2824 only on the individual channel's highest magnitude sample. This allows for
2825 harmonizing the volume of the different channels.
2826
2827 @item c
2828 Enable DC bias correction. By default is disabled.
2829 An audio signal (in the time domain) is a sequence of sample values.
2830 In the Dynamic Audio Normalizer these sample values are represented in the
2831 -1.0 to 1.0 range, regardless of the original input format. Normally, the
2832 audio signal, or "waveform", should be centered around the zero point.
2833 That means if we calculate the mean value of all samples in a file, or in a
2834 single frame, then the result should be 0.0 or at least very close to that
2835 value. If, however, there is a significant deviation of the mean value from
2836 0.0, in either positive or negative direction, this is referred to as a
2837 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
2838 Audio Normalizer provides optional DC bias correction.
2839 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
2840 the mean value, or "DC correction" offset, of each input frame and subtract
2841 that value from all of the frame's sample values which ensures those samples
2842 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
2843 boundaries, the DC correction offset values will be interpolated smoothly
2844 between neighbouring frames.
2845
2846 @item b
2847 Enable alternative boundary mode. By default is disabled.
2848 The Dynamic Audio Normalizer takes into account a certain neighbourhood
2849 around each frame. This includes the preceding frames as well as the
2850 subsequent frames. However, for the "boundary" frames, located at the very
2851 beginning and at the very end of the audio file, not all neighbouring
2852 frames are available. In particular, for the first few frames in the audio
2853 file, the preceding frames are not known. And, similarly, for the last few
2854 frames in the audio file, the subsequent frames are not known. Thus, the
2855 question arises which gain factors should be assumed for the missing frames
2856 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
2857 to deal with this situation. The default boundary mode assumes a gain factor
2858 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
2859 "fade out" at the beginning and at the end of the input, respectively.
2860
2861 @item s
2862 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
2863 By default, the Dynamic Audio Normalizer does not apply "traditional"
2864 compression. This means that signal peaks will not be pruned and thus the
2865 full dynamic range will be retained within each local neighbourhood. However,
2866 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
2867 normalization algorithm with a more "traditional" compression.
2868 For this purpose, the Dynamic Audio Normalizer provides an optional compression
2869 (thresholding) function. If (and only if) the compression feature is enabled,
2870 all input frames will be processed by a soft knee thresholding function prior
2871 to the actual normalization process. Put simply, the thresholding function is
2872 going to prune all samples whose magnitude exceeds a certain threshold value.
2873 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
2874 value. Instead, the threshold value will be adjusted for each individual
2875 frame.
2876 In general, smaller parameters result in stronger compression, and vice versa.
2877 Values below 3.0 are not recommended, because audible distortion may appear.
2878 @end table
2879
2880 @section earwax
2881
2882 Make audio easier to listen to on headphones.
2883
2884 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
2885 so that when listened to on headphones the stereo image is moved from
2886 inside your head (standard for headphones) to outside and in front of
2887 the listener (standard for speakers).
2888
2889 Ported from SoX.
2890
2891 @section equalizer
2892
2893 Apply a two-pole peaking equalisation (EQ) filter. With this
2894 filter, the signal-level at and around a selected frequency can
2895 be increased or decreased, whilst (unlike bandpass and bandreject
2896 filters) that at all other frequencies is unchanged.
2897
2898 In order to produce complex equalisation curves, this filter can
2899 be given several times, each with a different central frequency.
2900
2901 The filter accepts the following options:
2902
2903 @table @option
2904 @item frequency, f
2905 Set the filter's central frequency in Hz.
2906
2907 @item width_type, t
2908 Set method to specify band-width of filter.
2909 @table @option
2910 @item h
2911 Hz
2912 @item q
2913 Q-Factor
2914 @item o
2915 octave
2916 @item s
2917 slope
2918 @item k
2919 kHz
2920 @end table
2921
2922 @item width, w
2923 Specify the band-width of a filter in width_type units.
2924
2925 @item gain, g
2926 Set the required gain or attenuation in dB.
2927 Beware of clipping when using a positive gain.
2928
2929 @item channels, c
2930 Specify which channels to filter, by default all available are filtered.
2931 @end table
2932
2933 @subsection Examples
2934 @itemize
2935 @item
2936 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
2937 @example
2938 equalizer=f=1000:t=h:width=200:g=-10
2939 @end example
2940
2941 @item
2942 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
2943 @example
2944 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
2945 @end example
2946 @end itemize
2947
2948 @subsection Commands
2949
2950 This filter supports the following commands:
2951 @table @option
2952 @item frequency, f
2953 Change equalizer frequency.
2954 Syntax for the command is : "@var{frequency}"
2955
2956 @item width_type, t
2957 Change equalizer width_type.
2958 Syntax for the command is : "@var{width_type}"
2959
2960 @item width, w
2961 Change equalizer width.
2962 Syntax for the command is : "@var{width}"
2963
2964 @item gain, g
2965 Change equalizer gain.
2966 Syntax for the command is : "@var{gain}"
2967 @end table
2968
2969 @section extrastereo
2970
2971 Linearly increases the difference between left and right channels which
2972 adds some sort of "live" effect to playback.
2973
2974 The filter accepts the following options:
2975
2976 @table @option
2977 @item m
2978 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
2979 (average of both channels), with 1.0 sound will be unchanged, with
2980 -1.0 left and right channels will be swapped.
2981
2982 @item c
2983 Enable clipping. By default is enabled.
2984 @end table
2985
2986 @section firequalizer
2987 Apply FIR Equalization using arbitrary frequency response.
2988
2989 The filter accepts the following option:
2990
2991 @table @option
2992 @item gain
2993 Set gain curve equation (in dB). The expression can contain variables:
2994 @table @option
2995 @item f
2996 the evaluated frequency
2997 @item sr
2998 sample rate
2999 @item ch
3000 channel number, set to 0 when multichannels evaluation is disabled
3001 @item chid
3002 channel id, see libavutil/channel_layout.h, set to the first channel id when
3003 multichannels evaluation is disabled
3004 @item chs
3005 number of channels
3006 @item chlayout
3007 channel_layout, see libavutil/channel_layout.h
3008
3009 @end table
3010 and functions:
3011 @table @option
3012 @item gain_interpolate(f)
3013 interpolate gain on frequency f based on gain_entry
3014 @item cubic_interpolate(f)
3015 same as gain_interpolate, but smoother
3016 @end table
3017 This option is also available as command. Default is @code{gain_interpolate(f)}.
3018
3019 @item gain_entry
3020 Set gain entry for gain_interpolate function. The expression can
3021 contain functions:
3022 @table @option
3023 @item entry(f, g)
3024 store gain entry at frequency f with value g
3025 @end table
3026 This option is also available as command.
3027
3028 @item delay
3029 Set filter delay in seconds. Higher value means more accurate.
3030 Default is @code{0.01}.
3031
3032 @item accuracy
3033 Set filter accuracy in Hz. Lower value means more accurate.
3034 Default is @code{5}.
3035
3036 @item wfunc
3037 Set window function. Acceptable values are:
3038 @table @option
3039 @item rectangular
3040 rectangular window, useful when gain curve is already smooth
3041 @item hann
3042 hann window (default)
3043 @item hamming
3044 hamming window
3045 @item blackman
3046 blackman window
3047 @item nuttall3
3048 3-terms continuous 1st derivative nuttall window
3049 @item mnuttall3
3050 minimum 3-terms discontinuous nuttall window
3051 @item nuttall
3052 4-terms continuous 1st derivative nuttall window
3053 @item bnuttall
3054 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3055 @item bharris
3056 blackman-harris window
3057 @item tukey
3058 tukey window
3059 @end table
3060
3061 @item fixed
3062 If enabled, use fixed number of audio samples. This improves speed when
3063 filtering with large delay. Default is disabled.
3064
3065 @item multi
3066 Enable multichannels evaluation on gain. Default is disabled.
3067
3068 @item zero_phase
3069 Enable zero phase mode by subtracting timestamp to compensate delay.
3070 Default is disabled.
3071
3072 @item scale
3073 Set scale used by gain. Acceptable values are:
3074 @table @option
3075 @item linlin
3076 linear frequency, linear gain
3077 @item linlog
3078 linear frequency, logarithmic (in dB) gain (default)
3079 @item loglin
3080 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3081 @item loglog
3082 logarithmic frequency, logarithmic gain
3083 @end table
3084
3085 @item dumpfile
3086 Set file for dumping, suitable for gnuplot.
3087
3088 @item dumpscale
3089 Set scale for dumpfile. Acceptable values are same with scale option.
3090 Default is linlog.
3091
3092 @item fft2
3093 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3094 Default is disabled.
3095
3096 @item min_phase
3097 Enable minimum phase impulse response. Default is disabled.
3098 @end table
3099
3100 @subsection Examples
3101 @itemize
3102 @item
3103 lowpass at 1000 Hz:
3104 @example
3105 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3106 @end example
3107 @item
3108 lowpass at 1000 Hz with gain_entry:
3109 @example
3110 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3111 @end example
3112 @item
3113 custom equalization:
3114 @example
3115 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3116 @end example
3117 @item
3118 higher delay with zero phase to compensate delay:
3119 @example
3120 firequalizer=delay=0.1:fixed=on:zero_phase=on
3121 @end example
3122 @item
3123 lowpass on left channel, highpass on right channel:
3124 @example
3125 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3126 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3127 @end example
3128 @end itemize
3129
3130 @section flanger
3131 Apply a flanging effect to the audio.
3132
3133 The filter accepts the following options:
3134
3135 @table @option
3136 @item delay
3137 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3138
3139 @item depth
3140 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3141
3142 @item regen
3143 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3144 Default value is 0.
3145
3146 @item width
3147 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3148 Default value is 71.
3149
3150 @item speed
3151 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3152
3153 @item shape
3154 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3155 Default value is @var{sinusoidal}.
3156
3157 @item phase
3158 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3159 Default value is 25.
3160
3161 @item interp
3162 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3163 Default is @var{linear}.
3164 @end table
3165
3166 @section haas
3167 Apply Haas effect to audio.
3168
3169 Note that this makes most sense to apply on mono signals.
3170 With this filter applied to mono signals it give some directionality and
3171 stretches its stereo image.
3172
3173 The filter accepts the following options:
3174
3175 @table @option
3176 @item level_in
3177 Set input level. By default is @var{1}, or 0dB
3178
3179 @item level_out
3180 Set output level. By default is @var{1}, or 0dB.
3181
3182 @item side_gain
3183 Set gain applied to side part of signal. By default is @var{1}.
3184
3185 @item middle_source
3186 Set kind of middle source. Can be one of the following:
3187
3188 @table @samp
3189 @item left
3190 Pick left channel.
3191
3192 @item right
3193 Pick right channel.
3194
3195 @item mid
3196 Pick middle part signal of stereo image.
3197
3198 @item side
3199 Pick side part signal of stereo image.
3200 @end table
3201
3202 @item middle_phase
3203 Change middle phase. By default is disabled.
3204
3205 @item left_delay
3206 Set left channel delay. By default is @var{2.05} milliseconds.
3207
3208 @item left_balance
3209 Set left channel balance. By default is @var{-1}.
3210
3211 @item left_gain
3212 Set left channel gain. By default is @var{1}.
3213
3214 @item left_phase
3215 Change left phase. By default is disabled.
3216
3217 @item right_delay
3218 Set right channel delay. By defaults is @var{2.12} milliseconds.
3219
3220 @item right_balance
3221 Set right channel balance. By default is @var{1}.
3222
3223 @item right_gain
3224 Set right channel gain. By default is @var{1}.
3225
3226 @item right_phase
3227 Change right phase. By default is enabled.
3228 @end table
3229
3230 @section hdcd
3231
3232 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3233 embedded HDCD codes is expanded into a 20-bit PCM stream.
3234
3235 The filter supports the Peak Extend and Low-level Gain Adjustment features
3236 of HDCD, and detects the Transient Filter flag.
3237
3238 @example
3239 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3240 @end example
3241
3242 When using the filter with wav, note the default encoding for wav is 16-bit,
3243 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3244 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3245 @example
3246 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3247 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3248 @end example
3249
3250 The filter accepts the following options:
3251
3252 @table @option
3253 @item disable_autoconvert
3254 Disable any automatic format conversion or resampling in the filter graph.
3255
3256 @item process_stereo
3257 Process the stereo channels together. If target_gain does not match between
3258 channels, consider it invalid and use the last valid target_gain.
3259
3260 @item cdt_ms
3261 Set the code detect timer period in ms.
3262
3263 @item force_pe
3264 Always extend peaks above -3dBFS even if PE isn't signaled.
3265
3266 @item analyze_mode
3267 Replace audio with a solid tone and adjust the amplitude to signal some
3268 specific aspect of the decoding process. The output file can be loaded in
3269 an audio editor alongside the original to aid analysis.
3270
3271 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3272
3273 Modes are:
3274 @table @samp
3275 @item 0, off
3276 Disabled
3277 @item 1, lle
3278 Gain adjustment level at each sample
3279 @item 2, pe
3280 Samples where peak extend occurs
3281 @item 3, cdt
3282 Samples where the code detect timer is active
3283 @item 4, tgm
3284 Samples where the target gain does not match between channels
3285 @end table
3286 @end table
3287
3288 @section headphone
3289
3290 Apply head-related transfer functions (HRTFs) to create virtual
3291 loudspeakers around the user for binaural listening via headphones.
3292 The HRIRs are provided via additional streams, for each channel
3293 one stereo input stream is needed.
3294
3295 The filter accepts the following options:
3296
3297 @table @option
3298 @item map
3299 Set mapping of input streams for convolution.
3300 The argument is a '|'-separated list of channel names in order as they
3301 are given as additional stream inputs for filter.
3302 This also specify number of input streams. Number of input streams
3303 must be not less than number of channels in first stream plus one.
3304
3305 @item gain
3306 Set gain applied to audio. Value is in dB. Default is 0.
3307
3308 @item type
3309 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3310 processing audio in time domain which is slow.
3311 @var{freq} is processing audio in frequency domain which is fast.
3312 Default is @var{freq}.
3313
3314 @item lfe
3315 Set custom gain for LFE channels. Value is in dB. Default is 0.
3316
3317 @item size
3318 Set size of frame in number of samples which will be processed at once.
3319 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3320
3321 @item hrir
3322 Set format of hrir stream.
3323 Default value is @var{stereo}. Alternative value is @var{multich}.
3324 If value is set to @var{stereo}, number of additional streams should
3325 be greater or equal to number of input channels in first input stream.
3326 Also each additional stream should have stereo number of channels.
3327 If value is set to @var{multich}, number of additional streams should
3328 be exactly one. Also number of input channels of additional stream
3329 should be equal or greater than twice number of channels of first input
3330 stream.
3331 @end table
3332
3333 @subsection Examples
3334
3335 @itemize
3336 @item
3337 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3338 each amovie filter use stereo file with IR coefficients as input.
3339 The files give coefficients for each position of virtual loudspeaker:
3340 @example
3341 ffmpeg -i input.wav -lavfi-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],[a:0][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
3342 output.wav
3343 @end example
3344
3345 @item
3346 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3347 but now in @var{multich} @var{hrir} format.
3348 @example
3349 ffmpeg -i input.wav -lavfi-complex "amovie=minp.wav[hrirs],[a:0][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich"
3350 output.wav
3351 @end example
3352 @end itemize
3353
3354 @section highpass
3355
3356 Apply a high-pass filter with 3dB point frequency.
3357 The filter can be either single-pole, or double-pole (the default).
3358 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3359
3360 The filter accepts the following options:
3361
3362 @table @option
3363 @item frequency, f
3364 Set frequency in Hz. Default is 3000.
3365
3366 @item poles, p
3367 Set number of poles. Default is 2.
3368
3369 @item width_type, t
3370 Set method to specify band-width of filter.
3371 @table @option
3372 @item h
3373 Hz
3374 @item q
3375 Q-Factor
3376 @item o
3377 octave
3378 @item s
3379 slope
3380 @item k
3381 kHz
3382 @end table
3383
3384 @item width, w
3385 Specify the band-width of a filter in width_type units.
3386 Applies only to double-pole filter.
3387 The default is 0.707q and gives a Butterworth response.
3388
3389 @item channels, c
3390 Specify which channels to filter, by default all available are filtered.
3391 @end table
3392
3393 @subsection Commands
3394
3395 This filter supports the following commands:
3396 @table @option
3397 @item frequency, f
3398 Change highpass frequency.
3399 Syntax for the command is : "@var{frequency}"
3400
3401 @item width_type, t
3402 Change highpass width_type.
3403 Syntax for the command is : "@var{width_type}"
3404
3405 @item width, w
3406 Change highpass width.
3407 Syntax for the command is : "@var{width}"
3408 @end table
3409
3410 @section join
3411
3412 Join multiple input streams into one multi-channel stream.
3413
3414 It accepts the following parameters:
3415 @table @option
3416
3417 @item inputs
3418 The number of input streams. It defaults to 2.
3419
3420 @item channel_layout
3421 The desired output channel layout. It defaults to stereo.
3422
3423 @item map
3424 Map channels from inputs to output. The argument is a '|'-separated list of
3425 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3426 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3427 can be either the name of the input channel (e.g. FL for front left) or its
3428 index in the specified input stream. @var{out_channel} is the name of the output
3429 channel.
3430 @end table
3431
3432 The filter will attempt to guess the mappings when they are not specified
3433 explicitly. It does so by first trying to find an unused matching input channel
3434 and if that fails it picks the first unused input channel.
3435
3436 Join 3 inputs (with properly set channel layouts):
3437 @example
3438 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3439 @end example
3440
3441 Build a 5.1 output from 6 single-channel streams:
3442 @example
3443 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3444 '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'
3445 out
3446 @end example
3447
3448 @section ladspa
3449
3450 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3451
3452 To enable compilation of this filter you need to configure FFmpeg with
3453 @code{--enable-ladspa}.
3454
3455 @table @option
3456 @item file, f
3457 Specifies the name of LADSPA plugin library to load. If the environment
3458 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3459 each one of the directories specified by the colon separated list in
3460 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3461 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3462 @file{/usr/lib/ladspa/}.
3463
3464 @item plugin, p
3465 Specifies the plugin within the library. Some libraries contain only
3466 one plugin, but others contain many of them. If this is not set filter
3467 will list all available plugins within the specified library.
3468
3469 @item controls, c
3470 Set the '|' separated list of controls which are zero or more floating point
3471 values that determine the behavior of the loaded plugin (for example delay,
3472 threshold or gain).
3473 Controls need to be defined using the following syntax:
3474 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3475 @var{valuei} is the value set on the @var{i}-th control.
3476 Alternatively they can be also defined using the following syntax:
3477 @var{value0}|@var{value1}|@var{value2}|..., where
3478 @var{valuei} is the value set on the @var{i}-th control.
3479 If @option{controls} is set to @code{help}, all available controls and
3480 their valid ranges are printed.
3481
3482 @item sample_rate, s
3483 Specify the sample rate, default to 44100. Only used if plugin have
3484 zero inputs.
3485
3486 @item nb_samples, n
3487 Set the number of samples per channel per each output frame, default
3488 is 1024. Only used if plugin have zero inputs.
3489
3490 @item duration, d
3491 Set the minimum duration of the sourced audio. See
3492 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3493 for the accepted syntax.
3494 Note that the resulting duration may be greater than the specified duration,
3495 as the generated audio is always cut at the end of a complete frame.
3496 If not specified, or the expressed duration is negative, the audio is
3497 supposed to be generated forever.
3498 Only used if plugin have zero inputs.
3499
3500 @end table
3501
3502 @subsection Examples
3503
3504 @itemize
3505 @item
3506 List all available plugins within amp (LADSPA example plugin) library:
3507 @example
3508 ladspa=file=amp
3509 @end example
3510
3511 @item
3512 List all available controls and their valid ranges for @code{vcf_notch}
3513 plugin from @code{VCF} library:
3514 @example
3515 ladspa=f=vcf:p=vcf_notch:c=help
3516 @end example
3517
3518 @item
3519 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
3520 plugin library:
3521 @example
3522 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
3523 @end example
3524
3525 @item
3526 Add reverberation to the audio using TAP-plugins
3527 (Tom's Audio Processing plugins):
3528 @example
3529 ladspa=file=tap_reverb:tap_reverb
3530 @end example
3531
3532 @item
3533 Generate white noise, with 0.2 amplitude:
3534 @example
3535 ladspa=file=cmt:noise_source_white:c=c0=.2
3536 @end example
3537
3538 @item
3539 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
3540 @code{C* Audio Plugin Suite} (CAPS) library:
3541 @example
3542 ladspa=file=caps:Click:c=c1=20'
3543 @end example
3544
3545 @item
3546 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
3547 @example
3548 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
3549 @end example
3550
3551 @item
3552 Increase volume by 20dB using fast lookahead limiter from Steve Harris
3553 @code{SWH Plugins} collection:
3554 @example
3555 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
3556 @end example
3557
3558 @item
3559 Attenuate low frequencies using Multiband EQ from Steve Harris
3560 @code{SWH Plugins} collection:
3561 @example
3562 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
3563 @end example
3564
3565 @item
3566 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
3567 (CAPS) library:
3568 @example
3569 ladspa=caps:Narrower
3570 @end example
3571
3572 @item
3573 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
3574 @example
3575 ladspa=caps:White:.2
3576 @end example
3577
3578 @item
3579 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
3580 @example
3581 ladspa=caps:Fractal:c=c1=1
3582 @end example
3583
3584 @item
3585 Dynamic volume normalization using @code{VLevel} plugin:
3586 @example
3587 ladspa=vlevel-ladspa:vlevel_mono
3588 @end example
3589 @end itemize
3590
3591 @subsection Commands
3592
3593 This filter supports the following commands:
3594 @table @option
3595 @item cN
3596 Modify the @var{N}-th control value.
3597
3598 If the specified value is not valid, it is ignored and prior one is kept.
3599 @end table
3600
3601 @section loudnorm
3602
3603 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
3604 Support for both single pass (livestreams, files) and double pass (files) modes.
3605 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
3606 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
3607 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
3608
3609 The filter accepts the following options:
3610
3611 @table @option
3612 @item I, i
3613 Set integrated loudness target.
3614 Range is -70.0 - -5.0. Default value is -24.0.
3615
3616 @item LRA, lra
3617 Set loudness range target.
3618 Range is 1.0 - 20.0. Default value is 7.0.
3619
3620 @item TP, tp
3621 Set maximum true peak.
3622 Range is -9.0 - +0.0. Default value is -2.0.
3623
3624 @item measured_I, measured_i
3625 Measured IL of input file.
3626 Range is -99.0 - +0.0.
3627
3628 @item measured_LRA, measured_lra
3629 Measured LRA of input file.
3630 Range is  0.0 - 99.0.
3631
3632 @item measured_TP, measured_tp
3633 Measured true peak of input file.
3634 Range is  -99.0 - +99.0.
3635
3636 @item measured_thresh
3637 Measured threshold of input file.
3638 Range is -99.0 - +0.0.
3639
3640 @item offset
3641 Set offset gain. Gain is applied before the true-peak limiter.
3642 Range is  -99.0 - +99.0. Default is +0.0.
3643
3644 @item linear
3645 Normalize linearly if possible.
3646 measured_I, measured_LRA, measured_TP, and measured_thresh must also
3647 to be specified in order to use this mode.
3648 Options are true or false. Default is true.
3649
3650 @item dual_mono
3651 Treat mono input files as "dual-mono". If a mono file is intended for playback
3652 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
3653 If set to @code{true}, this option will compensate for this effect.
3654 Multi-channel input files are not affected by this option.
3655 Options are true or false. Default is false.
3656
3657 @item print_format
3658 Set print format for stats. Options are summary, json, or none.
3659 Default value is none.
3660 @end table
3661
3662 @section lowpass
3663
3664 Apply a low-pass filter with 3dB point frequency.
3665 The filter can be either single-pole or double-pole (the default).
3666 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3667
3668 The filter accepts the following options:
3669
3670 @table @option
3671 @item frequency, f
3672 Set frequency in Hz. Default is 500.
3673
3674 @item poles, p
3675 Set number of poles. Default is 2.
3676
3677 @item width_type, t
3678 Set method to specify band-width of filter.
3679 @table @option
3680 @item h
3681 Hz
3682 @item q
3683 Q-Factor
3684 @item o
3685 octave
3686 @item s
3687 slope
3688 @item k
3689 kHz
3690 @end table
3691
3692 @item width, w
3693 Specify the band-width of a filter in width_type units.
3694 Applies only to double-pole filter.
3695 The default is 0.707q and gives a Butterworth response.
3696
3697 @item channels, c
3698 Specify which channels to filter, by default all available are filtered.
3699 @end table
3700
3701 @subsection Examples
3702 @itemize
3703 @item
3704 Lowpass only LFE channel, it LFE is not present it does nothing:
3705 @example
3706 lowpass=c=LFE
3707 @end example
3708 @end itemize
3709
3710 @subsection Commands
3711
3712 This filter supports the following commands:
3713 @table @option
3714 @item frequency, f
3715 Change lowpass frequency.
3716 Syntax for the command is : "@var{frequency}"
3717
3718 @item width_type, t
3719 Change lowpass width_type.
3720 Syntax for the command is : "@var{width_type}"
3721
3722 @item width, w
3723 Change lowpass width.
3724 Syntax for the command is : "@var{width}"
3725 @end table
3726
3727 @section lv2
3728
3729 Load a LV2 (LADSPA Version 2) plugin.
3730
3731 To enable compilation of this filter you need to configure FFmpeg with
3732 @code{--enable-lv2}.
3733
3734 @table @option
3735 @item plugin, p
3736 Specifies the plugin URI. You may need to escape ':'.
3737
3738 @item controls, c
3739 Set the '|' separated list of controls which are zero or more floating point
3740 values that determine the behavior of the loaded plugin (for example delay,
3741 threshold or gain).
3742 If @option{controls} is set to @code{help}, all available controls and
3743 their valid ranges are printed.
3744
3745 @item sample_rate, s
3746 Specify the sample rate, default to 44100. Only used if plugin have
3747 zero inputs.
3748
3749 @item nb_samples, n
3750 Set the number of samples per channel per each output frame, default
3751 is 1024. Only used if plugin have zero inputs.
3752
3753 @item duration, d
3754 Set the minimum duration of the sourced audio. See
3755 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3756 for the accepted syntax.
3757 Note that the resulting duration may be greater than the specified duration,
3758 as the generated audio is always cut at the end of a complete frame.
3759 If not specified, or the expressed duration is negative, the audio is
3760 supposed to be generated forever.
3761 Only used if plugin have zero inputs.
3762 @end table
3763
3764 @subsection Examples
3765
3766 @itemize
3767 @item
3768 Apply bass enhancer plugin from Calf:
3769 @example
3770 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
3771 @end example
3772
3773 @item
3774 Apply vinyl plugin from Calf:
3775 @example
3776 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
3777 @end example
3778
3779 @item
3780 Apply bit crusher plugin from ArtyFX:
3781 @example
3782 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
3783 @end example
3784 @end itemize
3785
3786 @section mcompand
3787 Multiband Compress or expand the audio's dynamic range.
3788
3789 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
3790 This is akin to the crossover of a loudspeaker, and results in flat frequency
3791 response when absent compander action.
3792
3793 It accepts the following parameters:
3794
3795 @table @option
3796 @item args
3797 This option syntax is:
3798 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
3799 For explanation of each item refer to compand filter documentation.
3800 @end table
3801
3802 @anchor{pan}
3803 @section pan
3804
3805 Mix channels with specific gain levels. The filter accepts the output
3806 channel layout followed by a set of channels definitions.
3807
3808 This filter is also designed to efficiently remap the channels of an audio
3809 stream.
3810
3811 The filter accepts parameters of the form:
3812 "@var{l}|@var{outdef}|@var{outdef}|..."
3813
3814 @table @option
3815 @item l
3816 output channel layout or number of channels
3817
3818 @item outdef
3819 output channel specification, of the form:
3820 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
3821
3822 @item out_name
3823 output channel to define, either a channel name (FL, FR, etc.) or a channel
3824 number (c0, c1, etc.)
3825
3826 @item gain
3827 multiplicative coefficient for the channel, 1 leaving the volume unchanged
3828
3829 @item in_name
3830 input channel to use, see out_name for details; it is not possible to mix
3831 named and numbered input channels
3832 @end table
3833
3834 If the `=' in a channel specification is replaced by `<', then the gains for
3835 that specification will be renormalized so that the total is 1, thus
3836 avoiding clipping noise.
3837
3838 @subsection Mixing examples
3839
3840 For example, if you want to down-mix from stereo to mono, but with a bigger
3841 factor for the left channel:
3842 @example
3843 pan=1c|c0=0.9*c0+0.1*c1
3844 @end example
3845
3846 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
3847 7-channels surround:
3848 @example
3849 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
3850 @end example
3851
3852 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
3853 that should be preferred (see "-ac" option) unless you have very specific
3854 needs.
3855
3856 @subsection Remapping examples
3857
3858 The channel remapping will be effective if, and only if:
3859
3860 @itemize
3861 @item gain coefficients are zeroes or ones,
3862 @item only one input per channel output,
3863 @end itemize
3864
3865 If all these conditions are satisfied, the filter will notify the user ("Pure
3866 channel mapping detected"), and use an optimized and lossless method to do the
3867 remapping.
3868
3869 For example, if you have a 5.1 source and want a stereo audio stream by
3870 dropping the extra channels:
3871 @example
3872 pan="stereo| c0=FL | c1=FR"
3873 @end example
3874
3875 Given the same source, you can also switch front left and front right channels
3876 and keep the input channel layout:
3877 @example
3878 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
3879 @end example
3880
3881 If the input is a stereo audio stream, you can mute the front left channel (and
3882 still keep the stereo channel layout) with:
3883 @example
3884 pan="stereo|c1=c1"
3885 @end example
3886
3887 Still with a stereo audio stream input, you can copy the right channel in both
3888 front left and right:
3889 @example
3890 pan="stereo| c0=FR | c1=FR"
3891 @end example
3892
3893 @section replaygain
3894
3895 ReplayGain scanner filter. This filter takes an audio stream as an input and
3896 outputs it unchanged.
3897 At end of filtering it displays @code{track_gain} and @code{track_peak}.
3898
3899 @section resample
3900
3901 Convert the audio sample format, sample rate and channel layout. It is
3902 not meant to be used directly.
3903
3904 @section rubberband
3905 Apply time-stretching and pitch-shifting with librubberband.
3906
3907 To enable compilation of this filter, you need to configure FFmpeg with
3908 @code{--enable-librubberband}.
3909
3910 The filter accepts the following options:
3911
3912 @table @option
3913 @item tempo
3914 Set tempo scale factor.
3915
3916 @item pitch
3917 Set pitch scale factor.
3918
3919 @item transients
3920 Set transients detector.
3921 Possible values are:
3922 @table @var
3923 @item crisp
3924 @item mixed
3925 @item smooth
3926 @end table
3927
3928 @item detector
3929 Set detector.
3930 Possible values are:
3931 @table @var
3932 @item compound
3933 @item percussive
3934 @item soft
3935 @end table
3936
3937 @item phase
3938 Set phase.
3939 Possible values are:
3940 @table @var
3941 @item laminar
3942 @item independent
3943 @end table
3944
3945 @item window
3946 Set processing window size.
3947 Possible values are:
3948 @table @var
3949 @item standard
3950 @item short
3951 @item long
3952 @end table
3953
3954 @item smoothing
3955 Set smoothing.
3956 Possible values are:
3957 @table @var
3958 @item off
3959 @item on
3960 @end table
3961
3962 @item formant
3963 Enable formant preservation when shift pitching.
3964 Possible values are:
3965 @table @var
3966 @item shifted
3967 @item preserved
3968 @end table
3969
3970 @item pitchq
3971 Set pitch quality.
3972 Possible values are:
3973 @table @var
3974 @item quality
3975 @item speed
3976 @item consistency
3977 @end table
3978
3979 @item channels
3980 Set channels.
3981 Possible values are:
3982 @table @var
3983 @item apart
3984 @item together
3985 @end table
3986 @end table
3987
3988 @section sidechaincompress
3989
3990 This filter acts like normal compressor but has the ability to compress
3991 detected signal using second input signal.
3992 It needs two input streams and returns one output stream.
3993 First input stream will be processed depending on second stream signal.
3994 The filtered signal then can be filtered with other filters in later stages of
3995 processing. See @ref{pan} and @ref{amerge} filter.
3996
3997 The filter accepts the following options:
3998
3999 @table @option
4000 @item level_in
4001 Set input gain. Default is 1. Range is between 0.015625 and 64.
4002
4003 @item threshold
4004 If a signal of second stream raises above this level it will affect the gain
4005 reduction of first stream.
4006 By default is 0.125. Range is between 0.00097563 and 1.
4007
4008 @item ratio
4009 Set a ratio about which the signal is reduced. 1:2 means that if the level
4010 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4011 Default is 2. Range is between 1 and 20.
4012
4013 @item attack
4014 Amount of milliseconds the signal has to rise above the threshold before gain
4015 reduction starts. Default is 20. Range is between 0.01 and 2000.
4016
4017 @item release
4018 Amount of milliseconds the signal has to fall below the threshold before
4019 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4020
4021 @item makeup
4022 Set the amount by how much signal will be amplified after processing.
4023 Default is 1. Range is from 1 to 64.
4024
4025 @item knee
4026 Curve the sharp knee around the threshold to enter gain reduction more softly.
4027 Default is 2.82843. Range is between 1 and 8.
4028
4029 @item link
4030 Choose if the @code{average} level between all channels of side-chain stream
4031 or the louder(@code{maximum}) channel of side-chain stream affects the
4032 reduction. Default is @code{average}.
4033
4034 @item detection
4035 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4036 of @code{rms}. Default is @code{rms} which is mainly smoother.
4037
4038 @item level_sc
4039 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4040
4041 @item mix
4042 How much to use compressed signal in output. Default is 1.
4043 Range is between 0 and 1.
4044 @end table
4045
4046 @subsection Examples
4047
4048 @itemize
4049 @item
4050 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4051 depending on the signal of 2nd input and later compressed signal to be
4052 merged with 2nd input:
4053 @example
4054 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4055 @end example
4056 @end itemize
4057
4058 @section sidechaingate
4059
4060 A sidechain gate acts like a normal (wideband) gate but has the ability to
4061 filter the detected signal before sending it to the gain reduction stage.
4062 Normally a gate uses the full range signal to detect a level above the
4063 threshold.
4064 For example: If you cut all lower frequencies from your sidechain signal
4065 the gate will decrease the volume of your track only if not enough highs
4066 appear. With this technique you are able to reduce the resonation of a
4067 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4068 guitar.
4069 It needs two input streams and returns one output stream.
4070 First input stream will be processed depending on second stream signal.
4071
4072 The filter accepts the following options:
4073
4074 @table @option
4075 @item level_in
4076 Set input level before filtering.
4077 Default is 1. Allowed range is from 0.015625 to 64.
4078
4079 @item range
4080 Set the level of gain reduction when the signal is below the threshold.
4081 Default is 0.06125. Allowed range is from 0 to 1.
4082
4083 @item threshold
4084 If a signal rises above this level the gain reduction is released.
4085 Default is 0.125. Allowed range is from 0 to 1.
4086
4087 @item ratio
4088 Set a ratio about which the signal is reduced.
4089 Default is 2. Allowed range is from 1 to 9000.
4090
4091 @item attack
4092 Amount of milliseconds the signal has to rise above the threshold before gain
4093 reduction stops.
4094 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4095
4096 @item release
4097 Amount of milliseconds the signal has to fall below the threshold before the
4098 reduction is increased again. Default is 250 milliseconds.
4099 Allowed range is from 0.01 to 9000.
4100
4101 @item makeup
4102 Set amount of amplification of signal after processing.
4103 Default is 1. Allowed range is from 1 to 64.
4104
4105 @item knee
4106 Curve the sharp knee around the threshold to enter gain reduction more softly.
4107 Default is 2.828427125. Allowed range is from 1 to 8.
4108
4109 @item detection
4110 Choose if exact signal should be taken for detection or an RMS like one.
4111 Default is rms. Can be peak or rms.
4112
4113 @item link
4114 Choose if the average level between all channels or the louder channel affects
4115 the reduction.
4116 Default is average. Can be average or maximum.
4117
4118 @item level_sc
4119 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4120 @end table
4121
4122 @section silencedetect
4123
4124 Detect silence in an audio stream.
4125
4126 This filter logs a message when it detects that the input audio volume is less
4127 or equal to a noise tolerance value for a duration greater or equal to the
4128 minimum detected noise duration.
4129
4130 The printed times and duration are expressed in seconds.
4131
4132 The filter accepts the following options:
4133
4134 @table @option
4135 @item duration, d
4136 Set silence duration until notification (default is 2 seconds).
4137
4138 @item noise, n
4139 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4140 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4141 @end table
4142
4143 @subsection Examples
4144
4145 @itemize
4146 @item
4147 Detect 5 seconds of silence with -50dB noise tolerance:
4148 @example
4149 silencedetect=n=-50dB:d=5
4150 @end example
4151
4152 @item
4153 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4154 tolerance in @file{silence.mp3}:
4155 @example
4156 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4157 @end example
4158 @end itemize
4159
4160 @section silenceremove
4161
4162 Remove silence from the beginning, middle or end of the audio.
4163
4164 The filter accepts the following options:
4165
4166 @table @option
4167 @item start_periods
4168 This value is used to indicate if audio should be trimmed at beginning of
4169 the audio. A value of zero indicates no silence should be trimmed from the
4170 beginning. When specifying a non-zero value, it trims audio up until it
4171 finds non-silence. Normally, when trimming silence from beginning of audio
4172 the @var{start_periods} will be @code{1} but it can be increased to higher
4173 values to trim all audio up to specific count of non-silence periods.
4174 Default value is @code{0}.
4175
4176 @item start_duration
4177 Specify the amount of time that non-silence must be detected before it stops
4178 trimming audio. By increasing the duration, bursts of noises can be treated
4179 as silence and trimmed off. Default value is @code{0}.
4180
4181 @item start_threshold
4182 This indicates what sample value should be treated as silence. For digital
4183 audio, a value of @code{0} may be fine but for audio recorded from analog,
4184 you may wish to increase the value to account for background noise.
4185 Can be specified in dB (in case "dB" is appended to the specified value)
4186 or amplitude ratio. Default value is @code{0}.
4187
4188 @item stop_periods
4189 Set the count for trimming silence from the end of audio.
4190 To remove silence from the middle of a file, specify a @var{stop_periods}
4191 that is negative. This value is then treated as a positive value and is
4192 used to indicate the effect should restart processing as specified by
4193 @var{start_periods}, making it suitable for removing periods of silence
4194 in the middle of the audio.
4195 Default value is @code{0}.
4196
4197 @item stop_duration
4198 Specify a duration of silence that must exist before audio is not copied any
4199 more. By specifying a higher duration, silence that is wanted can be left in
4200 the audio.
4201 Default value is @code{0}.
4202
4203 @item stop_threshold
4204 This is the same as @option{start_threshold} but for trimming silence from
4205 the end of audio.
4206 Can be specified in dB (in case "dB" is appended to the specified value)
4207 or amplitude ratio. Default value is @code{0}.
4208
4209 @item leave_silence
4210 This indicates that @var{stop_duration} length of audio should be left intact
4211 at the beginning of each period of silence.
4212 For example, if you want to remove long pauses between words but do not want
4213 to remove the pauses completely. Default value is @code{0}.
4214
4215 @item detection
4216 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4217 and works better with digital silence which is exactly 0.
4218 Default value is @code{rms}.
4219
4220 @item window
4221 Set ratio used to calculate size of window for detecting silence.
4222 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4223 @end table
4224
4225 @subsection Examples
4226
4227 @itemize
4228 @item
4229 The following example shows how this filter can be used to start a recording
4230 that does not contain the delay at the start which usually occurs between
4231 pressing the record button and the start of the performance:
4232 @example
4233 silenceremove=1:5:0.02
4234 @end example
4235
4236 @item
4237 Trim all silence encountered from beginning to end where there is more than 1
4238 second of silence in audio:
4239 @example
4240 silenceremove=0:0:0:-1:1:-90dB
4241 @end example
4242 @end itemize
4243
4244 @section sofalizer
4245
4246 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4247 loudspeakers around the user for binaural listening via headphones (audio
4248 formats up to 9 channels supported).
4249 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4250 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4251 Austrian Academy of Sciences.
4252
4253 To enable compilation of this filter you need to configure FFmpeg with
4254 @code{--enable-libmysofa}.
4255
4256 The filter accepts the following options:
4257
4258 @table @option
4259 @item sofa
4260 Set the SOFA file used for rendering.
4261
4262 @item gain
4263 Set gain applied to audio. Value is in dB. Default is 0.
4264
4265 @item rotation
4266 Set rotation of virtual loudspeakers in deg. Default is 0.
4267
4268 @item elevation
4269 Set elevation of virtual speakers in deg. Default is 0.
4270
4271 @item radius
4272 Set distance in meters between loudspeakers and the listener with near-field
4273 HRTFs. Default is 1.
4274
4275 @item type
4276 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4277 processing audio in time domain which is slow.
4278 @var{freq} is processing audio in frequency domain which is fast.
4279 Default is @var{freq}.
4280
4281 @item speakers
4282 Set custom positions of virtual loudspeakers. Syntax for this option is:
4283 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4284 Each virtual loudspeaker is described with short channel name following with
4285 azimuth and elevation in degrees.
4286 Each virtual loudspeaker description is separated by '|'.
4287 For example to override front left and front right channel positions use:
4288 'speakers=FL 45 15|FR 345 15'.
4289 Descriptions with unrecognised channel names are ignored.
4290
4291 @item lfegain
4292 Set custom gain for LFE channels. Value is in dB. Default is 0.
4293 @end table
4294
4295 @subsection Examples
4296
4297 @itemize
4298 @item
4299 Using ClubFritz6 sofa file:
4300 @example
4301 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4302 @end example
4303
4304 @item
4305 Using ClubFritz12 sofa file and bigger radius with small rotation:
4306 @example
4307 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4308 @end example
4309
4310 @item
4311 Similar as above but with custom speaker positions for front left, front right, back left and back right
4312 and also with custom gain:
4313 @example
4314 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4315 @end example
4316 @end itemize
4317
4318 @section stereotools
4319
4320 This filter has some handy utilities to manage stereo signals, for converting
4321 M/S stereo recordings to L/R signal while having control over the parameters
4322 or spreading the stereo image of master track.
4323
4324 The filter accepts the following options:
4325
4326 @table @option
4327 @item level_in
4328 Set input level before filtering for both channels. Defaults is 1.
4329 Allowed range is from 0.015625 to 64.
4330
4331 @item level_out
4332 Set output level after filtering for both channels. Defaults is 1.
4333 Allowed range is from 0.015625 to 64.
4334
4335 @item balance_in
4336 Set input balance between both channels. Default is 0.
4337 Allowed range is from -1 to 1.
4338
4339 @item balance_out
4340 Set output balance between both channels. Default is 0.
4341 Allowed range is from -1 to 1.
4342
4343 @item softclip
4344 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4345 clipping. Disabled by default.
4346
4347 @item mutel
4348 Mute the left channel. Disabled by default.
4349
4350 @item muter
4351 Mute the right channel. Disabled by default.
4352
4353 @item phasel
4354 Change the phase of the left channel. Disabled by default.
4355
4356 @item phaser
4357 Change the phase of the right channel. Disabled by default.
4358
4359 @item mode
4360 Set stereo mode. Available values are:
4361
4362 @table @samp
4363 @item lr>lr
4364 Left/Right to Left/Right, this is default.
4365
4366 @item lr>ms
4367 Left/Right to Mid/Side.
4368
4369 @item ms>lr
4370 Mid/Side to Left/Right.
4371
4372 @item lr>ll
4373 Left/Right to Left/Left.
4374
4375 @item lr>rr
4376 Left/Right to Right/Right.
4377
4378 @item lr>l+r
4379 Left/Right to Left + Right.
4380
4381 @item lr>rl
4382 Left/Right to Right/Left.
4383
4384 @item ms>ll
4385 Mid/Side to Left/Left.
4386
4387 @item ms>rr
4388 Mid/Side to Right/Right.
4389 @end table
4390
4391 @item slev
4392 Set level of side signal. Default is 1.
4393 Allowed range is from 0.015625 to 64.
4394
4395 @item sbal
4396 Set balance of side signal. Default is 0.
4397 Allowed range is from -1 to 1.
4398
4399 @item mlev
4400 Set level of the middle signal. Default is 1.
4401 Allowed range is from 0.015625 to 64.
4402
4403 @item mpan
4404 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
4405
4406 @item base
4407 Set stereo base between mono and inversed channels. Default is 0.
4408 Allowed range is from -1 to 1.
4409
4410 @item delay
4411 Set delay in milliseconds how much to delay left from right channel and
4412 vice versa. Default is 0. Allowed range is from -20 to 20.
4413
4414 @item sclevel
4415 Set S/C level. Default is 1. Allowed range is from 1 to 100.
4416
4417 @item phase
4418 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
4419
4420 @item bmode_in, bmode_out
4421 Set balance mode for balance_in/balance_out option.
4422
4423 Can be one of the following:
4424
4425 @table @samp
4426 @item balance
4427 Classic balance mode. Attenuate one channel at time.
4428 Gain is raised up to 1.
4429
4430 @item amplitude
4431 Similar as classic mode above but gain is raised up to 2.
4432
4433 @item power
4434 Equal power distribution, from -6dB to +6dB range.
4435 @end table
4436 @end table
4437
4438 @subsection Examples
4439
4440 @itemize
4441 @item
4442 Apply karaoke like effect:
4443 @example
4444 stereotools=mlev=0.015625
4445 @end example
4446
4447 @item
4448 Convert M/S signal to L/R:
4449 @example
4450 "stereotools=mode=ms>lr"
4451 @end example
4452 @end itemize
4453
4454 @section stereowiden
4455
4456 This filter enhance the stereo effect by suppressing signal common to both
4457 channels and by delaying the signal of left into right and vice versa,
4458 thereby widening the stereo effect.
4459
4460 The filter accepts the following options:
4461
4462 @table @option
4463 @item delay
4464 Time in milliseconds of the delay of left signal into right and vice versa.
4465 Default is 20 milliseconds.
4466
4467 @item feedback
4468 Amount of gain in delayed signal into right and vice versa. Gives a delay
4469 effect of left signal in right output and vice versa which gives widening
4470 effect. Default is 0.3.
4471
4472 @item crossfeed
4473 Cross feed of left into right with inverted phase. This helps in suppressing
4474 the mono. If the value is 1 it will cancel all the signal common to both
4475 channels. Default is 0.3.
4476
4477 @item drymix
4478 Set level of input signal of original channel. Default is 0.8.
4479 @end table
4480
4481 @section superequalizer
4482 Apply 18 band equalizer.
4483
4484 The filter accepts the following options:
4485 @table @option
4486 @item 1b
4487 Set 65Hz band gain.
4488 @item 2b
4489 Set 92Hz band gain.
4490 @item 3b
4491 Set 131Hz band gain.
4492 @item 4b
4493 Set 185Hz band gain.
4494 @item 5b
4495 Set 262Hz band gain.
4496 @item 6b
4497 Set 370Hz band gain.
4498 @item 7b
4499 Set 523Hz band gain.
4500 @item 8b
4501 Set 740Hz band gain.
4502 @item 9b
4503 Set 1047Hz band gain.
4504 @item 10b
4505 Set 1480Hz band gain.
4506 @item 11b
4507 Set 2093Hz band gain.
4508 @item 12b
4509 Set 2960Hz band gain.
4510 @item 13b
4511 Set 4186Hz band gain.
4512 @item 14b
4513 Set 5920Hz band gain.
4514 @item 15b
4515 Set 8372Hz band gain.
4516 @item 16b
4517 Set 11840Hz band gain.
4518 @item 17b
4519 Set 16744Hz band gain.
4520 @item 18b
4521 Set 20000Hz band gain.
4522 @end table
4523
4524 @section surround
4525 Apply audio surround upmix filter.
4526
4527 This filter allows to produce multichannel output from audio stream.
4528
4529 The filter accepts the following options:
4530
4531 @table @option
4532 @item chl_out
4533 Set output channel layout. By default, this is @var{5.1}.
4534
4535 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4536 for the required syntax.
4537
4538 @item chl_in
4539 Set input channel layout. By default, this is @var{stereo}.
4540
4541 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4542 for the required syntax.
4543
4544 @item level_in
4545 Set input volume level. By default, this is @var{1}.
4546
4547 @item level_out
4548 Set output volume level. By default, this is @var{1}.
4549
4550 @item lfe
4551 Enable LFE channel output if output channel layout has it. By default, this is enabled.
4552
4553 @item lfe_low
4554 Set LFE low cut off frequency. By default, this is @var{128} Hz.
4555
4556 @item lfe_high
4557 Set LFE high cut off frequency. By default, this is @var{256} Hz.
4558
4559 @item fc_in
4560 Set front center input volume. By default, this is @var{1}.
4561
4562 @item fc_out
4563 Set front center output volume. By default, this is @var{1}.
4564
4565 @item lfe_in
4566 Set LFE input volume. By default, this is @var{1}.
4567
4568 @item lfe_out
4569 Set LFE output volume. By default, this is @var{1}.
4570 @end table
4571
4572 @section treble, highshelf
4573
4574 Boost or cut treble (upper) frequencies of the audio using a two-pole
4575 shelving filter with a response similar to that of a standard
4576 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
4577
4578 The filter accepts the following options:
4579
4580 @table @option
4581 @item gain, g
4582 Give the gain at whichever is the lower of ~22 kHz and the
4583 Nyquist frequency. Its useful range is about -20 (for a large cut)
4584 to +20 (for a large boost). Beware of clipping when using a positive gain.
4585
4586 @item frequency, f
4587 Set the filter's central frequency and so can be used
4588 to extend or reduce the frequency range to be boosted or cut.
4589 The default value is @code{3000} Hz.
4590
4591 @item width_type, t
4592 Set method to specify band-width of filter.
4593 @table @option
4594 @item h
4595 Hz
4596 @item q
4597 Q-Factor
4598 @item o
4599 octave
4600 @item s
4601 slope
4602 @item k
4603 kHz
4604 @end table
4605
4606 @item width, w
4607 Determine how steep is the filter's shelf transition.
4608
4609 @item channels, c
4610 Specify which channels to filter, by default all available are filtered.
4611 @end table
4612
4613 @subsection Commands
4614
4615 This filter supports the following commands:
4616 @table @option
4617 @item frequency, f
4618 Change treble frequency.
4619 Syntax for the command is : "@var{frequency}"
4620
4621 @item width_type, t
4622 Change treble width_type.
4623 Syntax for the command is : "@var{width_type}"
4624
4625 @item width, w
4626 Change treble width.
4627 Syntax for the command is : "@var{width}"
4628
4629 @item gain, g
4630 Change treble gain.
4631 Syntax for the command is : "@var{gain}"
4632 @end table
4633
4634 @section tremolo
4635
4636 Sinusoidal amplitude modulation.
4637
4638 The filter accepts the following options:
4639
4640 @table @option
4641 @item f
4642 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
4643 (20 Hz or lower) will result in a tremolo effect.
4644 This filter may also be used as a ring modulator by specifying
4645 a modulation frequency higher than 20 Hz.
4646 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4647
4648 @item d
4649 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4650 Default value is 0.5.
4651 @end table
4652
4653 @section vibrato
4654
4655 Sinusoidal phase modulation.
4656
4657 The filter accepts the following options:
4658
4659 @table @option
4660 @item f
4661 Modulation frequency in Hertz.
4662 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4663
4664 @item d
4665 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4666 Default value is 0.5.
4667 @end table
4668
4669 @section volume
4670
4671 Adjust the input audio volume.
4672
4673 It accepts the following parameters:
4674 @table @option
4675
4676 @item volume
4677 Set audio volume expression.
4678
4679 Output values are clipped to the maximum value.
4680
4681 The output audio volume is given by the relation:
4682 @example
4683 @var{output_volume} = @var{volume} * @var{input_volume}
4684 @end example
4685
4686 The default value for @var{volume} is "1.0".
4687
4688 @item precision
4689 This parameter represents the mathematical precision.
4690
4691 It determines which input sample formats will be allowed, which affects the
4692 precision of the volume scaling.
4693
4694 @table @option
4695 @item fixed
4696 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
4697 @item float
4698 32-bit floating-point; this limits input sample format to FLT. (default)
4699 @item double
4700 64-bit floating-point; this limits input sample format to DBL.
4701 @end table
4702
4703 @item replaygain
4704 Choose the behaviour on encountering ReplayGain side data in input frames.
4705
4706 @table @option
4707 @item drop
4708 Remove ReplayGain side data, ignoring its contents (the default).
4709
4710 @item ignore
4711 Ignore ReplayGain side data, but leave it in the frame.
4712
4713 @item track
4714 Prefer the track gain, if present.
4715
4716 @item album
4717 Prefer the album gain, if present.
4718 @end table
4719
4720 @item replaygain_preamp
4721 Pre-amplification gain in dB to apply to the selected replaygain gain.
4722
4723 Default value for @var{replaygain_preamp} is 0.0.
4724
4725 @item eval
4726 Set when the volume expression is evaluated.
4727
4728 It accepts the following values:
4729 @table @samp
4730 @item once
4731 only evaluate expression once during the filter initialization, or
4732 when the @samp{volume} command is sent
4733
4734 @item frame
4735 evaluate expression for each incoming frame
4736 @end table
4737
4738 Default value is @samp{once}.
4739 @end table
4740
4741 The volume expression can contain the following parameters.
4742
4743 @table @option
4744 @item n
4745 frame number (starting at zero)
4746 @item nb_channels
4747 number of channels
4748 @item nb_consumed_samples
4749 number of samples consumed by the filter
4750 @item nb_samples
4751 number of samples in the current frame
4752 @item pos
4753 original frame position in the file
4754 @item pts
4755 frame PTS
4756 @item sample_rate
4757 sample rate
4758 @item startpts
4759 PTS at start of stream
4760 @item startt
4761 time at start of stream
4762 @item t
4763 frame time
4764 @item tb
4765 timestamp timebase
4766 @item volume
4767 last set volume value
4768 @end table
4769
4770 Note that when @option{eval} is set to @samp{once} only the
4771 @var{sample_rate} and @var{tb} variables are available, all other
4772 variables will evaluate to NAN.
4773
4774 @subsection Commands
4775
4776 This filter supports the following commands:
4777 @table @option
4778 @item volume
4779 Modify the volume expression.
4780 The command accepts the same syntax of the corresponding option.
4781
4782 If the specified expression is not valid, it is kept at its current
4783 value.
4784 @item replaygain_noclip
4785 Prevent clipping by limiting the gain applied.
4786
4787 Default value for @var{replaygain_noclip} is 1.
4788
4789 @end table
4790
4791 @subsection Examples
4792
4793 @itemize
4794 @item
4795 Halve the input audio volume:
4796 @example
4797 volume=volume=0.5
4798 volume=volume=1/2
4799 volume=volume=-6.0206dB
4800 @end example
4801
4802 In all the above example the named key for @option{volume} can be
4803 omitted, for example like in:
4804 @example
4805 volume=0.5
4806 @end example
4807
4808 @item
4809 Increase input audio power by 6 decibels using fixed-point precision:
4810 @example
4811 volume=volume=6dB:precision=fixed
4812 @end example
4813
4814 @item
4815 Fade volume after time 10 with an annihilation period of 5 seconds:
4816 @example
4817 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
4818 @end example
4819 @end itemize
4820
4821 @section volumedetect
4822
4823 Detect the volume of the input video.
4824
4825 The filter has no parameters. The input is not modified. Statistics about
4826 the volume will be printed in the log when the input stream end is reached.
4827
4828 In particular it will show the mean volume (root mean square), maximum
4829 volume (on a per-sample basis), and the beginning of a histogram of the
4830 registered volume values (from the maximum value to a cumulated 1/1000 of
4831 the samples).
4832
4833 All volumes are in decibels relative to the maximum PCM value.
4834
4835 @subsection Examples
4836
4837 Here is an excerpt of the output:
4838 @example
4839 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
4840 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
4841 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
4842 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
4843 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
4844 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
4845 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
4846 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
4847 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
4848 @end example
4849
4850 It means that:
4851 @itemize
4852 @item
4853 The mean square energy is approximately -27 dB, or 10^-2.7.
4854 @item
4855 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
4856 @item
4857 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
4858 @end itemize
4859
4860 In other words, raising the volume by +4 dB does not cause any clipping,
4861 raising it by +5 dB causes clipping for 6 samples, etc.
4862
4863 @c man end AUDIO FILTERS
4864
4865 @chapter Audio Sources
4866 @c man begin AUDIO SOURCES
4867
4868 Below is a description of the currently available audio sources.
4869
4870 @section abuffer
4871
4872 Buffer audio frames, and make them available to the filter chain.
4873
4874 This source is mainly intended for a programmatic use, in particular
4875 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
4876
4877 It accepts the following parameters:
4878 @table @option
4879
4880 @item time_base
4881 The timebase which will be used for timestamps of submitted frames. It must be
4882 either a floating-point number or in @var{numerator}/@var{denominator} form.
4883
4884 @item sample_rate
4885 The sample rate of the incoming audio buffers.
4886
4887 @item sample_fmt
4888 The sample format of the incoming audio buffers.
4889 Either a sample format name or its corresponding integer representation from
4890 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
4891
4892 @item channel_layout
4893 The channel layout of the incoming audio buffers.
4894 Either a channel layout name from channel_layout_map in
4895 @file{libavutil/channel_layout.c} or its corresponding integer representation
4896 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
4897
4898 @item channels
4899 The number of channels of the incoming audio buffers.
4900 If both @var{channels} and @var{channel_layout} are specified, then they
4901 must be consistent.
4902
4903 @end table
4904
4905 @subsection Examples
4906
4907 @example
4908 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
4909 @end example
4910
4911 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
4912 Since the sample format with name "s16p" corresponds to the number
4913 6 and the "stereo" channel layout corresponds to the value 0x3, this is
4914 equivalent to:
4915 @example
4916 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
4917 @end example
4918
4919 @section aevalsrc
4920
4921 Generate an audio signal specified by an expression.
4922
4923 This source accepts in input one or more expressions (one for each
4924 channel), which are evaluated and used to generate a corresponding
4925 audio signal.
4926
4927 This source accepts the following options:
4928
4929 @table @option
4930 @item exprs
4931 Set the '|'-separated expressions list for each separate channel. In case the
4932 @option{channel_layout} option is not specified, the selected channel layout
4933 depends on the number of provided expressions. Otherwise the last
4934 specified expression is applied to the remaining output channels.
4935
4936 @item channel_layout, c
4937 Set the channel layout. The number of channels in the specified layout
4938 must be equal to the number of specified expressions.
4939
4940 @item duration, d
4941 Set the minimum duration of the sourced audio. See
4942 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4943 for the accepted syntax.
4944 Note that the resulting duration may be greater than the specified
4945 duration, as the generated audio is always cut at the end of a
4946 complete frame.
4947
4948 If not specified, or the expressed duration is negative, the audio is
4949 supposed to be generated forever.
4950
4951 @item nb_samples, n
4952 Set the number of samples per channel per each output frame,
4953 default to 1024.
4954
4955 @item sample_rate, s
4956 Specify the sample rate, default to 44100.
4957 @end table
4958
4959 Each expression in @var{exprs} can contain the following constants:
4960
4961 @table @option
4962 @item n
4963 number of the evaluated sample, starting from 0
4964
4965 @item t
4966 time of the evaluated sample expressed in seconds, starting from 0
4967
4968 @item s
4969 sample rate
4970
4971 @end table
4972
4973 @subsection Examples
4974
4975 @itemize
4976 @item
4977 Generate silence:
4978 @example
4979 aevalsrc=0
4980 @end example
4981
4982 @item
4983 Generate a sin signal with frequency of 440 Hz, set sample rate to
4984 8000 Hz:
4985 @example
4986 aevalsrc="sin(440*2*PI*t):s=8000"
4987 @end example
4988
4989 @item
4990 Generate a two channels signal, specify the channel layout (Front
4991 Center + Back Center) explicitly:
4992 @example
4993 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
4994 @end example
4995
4996 @item
4997 Generate white noise:
4998 @example
4999 aevalsrc="-2+random(0)"
5000 @end example
5001
5002 @item
5003 Generate an amplitude modulated signal:
5004 @example
5005 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5006 @end example
5007
5008 @item
5009 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5010 @example
5011 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5012 @end example
5013
5014 @end itemize
5015
5016 @section anullsrc
5017
5018 The null audio source, return unprocessed audio frames. It is mainly useful
5019 as a template and to be employed in analysis / debugging tools, or as
5020 the source for filters which ignore the input data (for example the sox
5021 synth filter).
5022
5023 This source accepts the following options:
5024
5025 @table @option
5026
5027 @item channel_layout, cl
5028
5029 Specifies the channel layout, and can be either an integer or a string
5030 representing a channel layout. The default value of @var{channel_layout}
5031 is "stereo".
5032
5033 Check the channel_layout_map definition in
5034 @file{libavutil/channel_layout.c} for the mapping between strings and
5035 channel layout values.
5036
5037 @item sample_rate, r
5038 Specifies the sample rate, and defaults to 44100.
5039
5040 @item nb_samples, n
5041 Set the number of samples per requested frames.
5042
5043 @end table
5044
5045 @subsection Examples
5046
5047 @itemize
5048 @item
5049 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
5050 @example
5051 anullsrc=r=48000:cl=4
5052 @end example
5053
5054 @item
5055 Do the same operation with a more obvious syntax:
5056 @example
5057 anullsrc=r=48000:cl=mono
5058 @end example
5059 @end itemize
5060
5061 All the parameters need to be explicitly defined.
5062
5063 @section flite
5064
5065 Synthesize a voice utterance using the libflite library.
5066
5067 To enable compilation of this filter you need to configure FFmpeg with
5068 @code{--enable-libflite}.
5069
5070 Note that versions of the flite library prior to 2.0 are not thread-safe.
5071
5072 The filter accepts the following options:
5073
5074 @table @option
5075
5076 @item list_voices
5077 If set to 1, list the names of the available voices and exit
5078 immediately. Default value is 0.
5079
5080 @item nb_samples, n
5081 Set the maximum number of samples per frame. Default value is 512.
5082
5083 @item textfile
5084 Set the filename containing the text to speak.
5085
5086 @item text
5087 Set the text to speak.
5088
5089 @item voice, v
5090 Set the voice to use for the speech synthesis. Default value is
5091 @code{kal}. See also the @var{list_voices} option.
5092 @end table
5093
5094 @subsection Examples
5095
5096 @itemize
5097 @item
5098 Read from file @file{speech.txt}, and synthesize the text using the
5099 standard flite voice:
5100 @example
5101 flite=textfile=speech.txt
5102 @end example
5103
5104 @item
5105 Read the specified text selecting the @code{slt} voice:
5106 @example
5107 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5108 @end example
5109
5110 @item
5111 Input text to ffmpeg:
5112 @example
5113 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5114 @end example
5115
5116 @item
5117 Make @file{ffplay} speak the specified text, using @code{flite} and
5118 the @code{lavfi} device:
5119 @example
5120 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
5121 @end example
5122 @end itemize
5123
5124 For more information about libflite, check:
5125 @url{http://www.festvox.org/flite/}
5126
5127 @section anoisesrc
5128
5129 Generate a noise audio signal.
5130
5131 The filter accepts the following options:
5132
5133 @table @option
5134 @item sample_rate, r
5135 Specify the sample rate. Default value is 48000 Hz.
5136
5137 @item amplitude, a
5138 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
5139 is 1.0.
5140
5141 @item duration, d
5142 Specify the duration of the generated audio stream. Not specifying this option
5143 results in noise with an infinite length.
5144
5145 @item color, colour, c
5146 Specify the color of noise. Available noise colors are white, pink, brown,
5147 blue and violet. Default color is white.
5148
5149 @item seed, s
5150 Specify a value used to seed the PRNG.
5151
5152 @item nb_samples, n
5153 Set the number of samples per each output frame, default is 1024.
5154 @end table
5155
5156 @subsection Examples
5157
5158 @itemize
5159
5160 @item
5161 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
5162 @example
5163 anoisesrc=d=60:c=pink:r=44100:a=0.5
5164 @end example
5165 @end itemize
5166
5167 @section hilbert
5168
5169 Generate odd-tap Hilbert transform FIR coefficients.
5170
5171 The resulting stream can be used with @ref{afir} filter for phase-shifting
5172 the signal by 90 degrees.
5173
5174 This is used in many matrix coding schemes and for analytic signal generation.
5175 The process is often written as a multiplication by i (or j), the imaginary unit.
5176
5177 The filter accepts the following options:
5178
5179 @table @option
5180
5181 @item sample_rate, s
5182 Set sample rate, default is 44100.
5183
5184 @item taps, t
5185 Set length of FIR filter, default is 22051.
5186
5187 @item nb_samples, n
5188 Set number of samples per each frame.
5189
5190 @item win_func, w
5191 Set window function to be used when generating FIR coefficients.
5192 @end table
5193
5194 @section sine
5195
5196 Generate an audio signal made of a sine wave with amplitude 1/8.
5197
5198 The audio signal is bit-exact.
5199
5200 The filter accepts the following options:
5201
5202 @table @option
5203
5204 @item frequency, f
5205 Set the carrier frequency. Default is 440 Hz.
5206
5207 @item beep_factor, b
5208 Enable a periodic beep every second with frequency @var{beep_factor} times
5209 the carrier frequency. Default is 0, meaning the beep is disabled.
5210
5211 @item sample_rate, r
5212 Specify the sample rate, default is 44100.
5213
5214 @item duration, d
5215 Specify the duration of the generated audio stream.
5216
5217 @item samples_per_frame
5218 Set the number of samples per output frame.
5219
5220 The expression can contain the following constants:
5221
5222 @table @option
5223 @item n
5224 The (sequential) number of the output audio frame, starting from 0.
5225
5226 @item pts
5227 The PTS (Presentation TimeStamp) of the output audio frame,
5228 expressed in @var{TB} units.
5229
5230 @item t
5231 The PTS of the output audio frame, expressed in seconds.
5232
5233 @item TB
5234 The timebase of the output audio frames.
5235 @end table
5236
5237 Default is @code{1024}.
5238 @end table
5239
5240 @subsection Examples
5241
5242 @itemize
5243
5244 @item
5245 Generate a simple 440 Hz sine wave:
5246 @example
5247 sine
5248 @end example
5249
5250 @item
5251 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
5252 @example
5253 sine=220:4:d=5
5254 sine=f=220:b=4:d=5
5255 sine=frequency=220:beep_factor=4:duration=5
5256 @end example
5257
5258 @item
5259 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
5260 pattern:
5261 @example
5262 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
5263 @end example
5264 @end itemize
5265
5266 @c man end AUDIO SOURCES
5267
5268 @chapter Audio Sinks
5269 @c man begin AUDIO SINKS
5270
5271 Below is a description of the currently available audio sinks.
5272
5273 @section abuffersink
5274
5275 Buffer audio frames, and make them available to the end of filter chain.
5276
5277 This sink is mainly intended for programmatic use, in particular
5278 through the interface defined in @file{libavfilter/buffersink.h}
5279 or the options system.
5280
5281 It accepts a pointer to an AVABufferSinkContext structure, which
5282 defines the incoming buffers' formats, to be passed as the opaque
5283 parameter to @code{avfilter_init_filter} for initialization.
5284 @section anullsink
5285
5286 Null audio sink; do absolutely nothing with the input audio. It is
5287 mainly useful as a template and for use in analysis / debugging
5288 tools.
5289
5290 @c man end AUDIO SINKS
5291
5292 @chapter Video Filters
5293 @c man begin VIDEO FILTERS
5294
5295 When you configure your FFmpeg build, you can disable any of the
5296 existing filters using @code{--disable-filters}.
5297 The configure output will show the video filters included in your
5298 build.
5299
5300 Below is a description of the currently available video filters.
5301
5302 @section alphaextract
5303
5304 Extract the alpha component from the input as a grayscale video. This
5305 is especially useful with the @var{alphamerge} filter.
5306
5307 @section alphamerge
5308
5309 Add or replace the alpha component of the primary input with the
5310 grayscale value of a second input. This is intended for use with
5311 @var{alphaextract} to allow the transmission or storage of frame
5312 sequences that have alpha in a format that doesn't support an alpha
5313 channel.
5314
5315 For example, to reconstruct full frames from a normal YUV-encoded video
5316 and a separate video created with @var{alphaextract}, you might use:
5317 @example
5318 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
5319 @end example
5320
5321 Since this filter is designed for reconstruction, it operates on frame
5322 sequences without considering timestamps, and terminates when either
5323 input reaches end of stream. This will cause problems if your encoding
5324 pipeline drops frames. If you're trying to apply an image as an
5325 overlay to a video stream, consider the @var{overlay} filter instead.
5326
5327 @section amplify
5328
5329 Amplify differences between current pixel and pixels of adjacent frames in
5330 same pixel location.
5331
5332 This filter accepts the following options:
5333
5334 @table @option
5335 @item radius
5336 Set frame radius. Default is 2. Allowed range is from 1 to 63.
5337 For example radius of 3 will instruct filter to calculate average of 7 frames.
5338
5339 @item factor
5340 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
5341
5342 @item threshold
5343 Set threshold for difference amplification. Any differrence greater or equal to
5344 this value will not alter source pixel. Default is 10.
5345 Allowed range is from 0 to 65535.
5346
5347 @item low
5348 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5349 This option controls maximum possible value that will decrease source pixel value.
5350
5351 @item high
5352 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5353 This option controls maximum possible value that will increase source pixel value.
5354
5355 @item planes
5356 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
5357 @end table
5358
5359 @section ass
5360
5361 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
5362 and libavformat to work. On the other hand, it is limited to ASS (Advanced
5363 Substation Alpha) subtitles files.
5364
5365 This filter accepts the following option in addition to the common options from
5366 the @ref{subtitles} filter:
5367
5368 @table @option
5369 @item shaping
5370 Set the shaping engine
5371
5372 Available values are:
5373 @table @samp
5374 @item auto
5375 The default libass shaping engine, which is the best available.
5376 @item simple
5377 Fast, font-agnostic shaper that can do only substitutions
5378 @item complex
5379 Slower shaper using OpenType for substitutions and positioning
5380 @end table
5381
5382 The default is @code{auto}.
5383 @end table
5384
5385 @section atadenoise
5386 Apply an Adaptive Temporal Averaging Denoiser to the video input.
5387
5388 The filter accepts the following options:
5389
5390 @table @option
5391 @item 0a
5392 Set threshold A for 1st plane. Default is 0.02.
5393 Valid range is 0 to 0.3.
5394
5395 @item 0b
5396 Set threshold B for 1st plane. Default is 0.04.
5397 Valid range is 0 to 5.
5398
5399 @item 1a
5400 Set threshold A for 2nd plane. Default is 0.02.
5401 Valid range is 0 to 0.3.
5402
5403 @item 1b
5404 Set threshold B for 2nd plane. Default is 0.04.
5405 Valid range is 0 to 5.
5406
5407 @item 2a
5408 Set threshold A for 3rd plane. Default is 0.02.
5409 Valid range is 0 to 0.3.
5410
5411 @item 2b
5412 Set threshold B for 3rd plane. Default is 0.04.
5413 Valid range is 0 to 5.
5414
5415 Threshold A is designed to react on abrupt changes in the input signal and
5416 threshold B is designed to react on continuous changes in the input signal.
5417
5418 @item s
5419 Set number of frames filter will use for averaging. Default is 9. Must be odd
5420 number in range [5, 129].
5421
5422 @item p
5423 Set what planes of frame filter will use for averaging. Default is all.
5424 @end table
5425
5426 @section avgblur
5427
5428 Apply average blur filter.
5429
5430 The filter accepts the following options:
5431
5432 @table @option
5433 @item sizeX
5434 Set horizontal radius size.
5435
5436 @item planes
5437 Set which planes to filter. By default all planes are filtered.
5438
5439 @item sizeY
5440 Set vertical radius size, if zero it will be same as @code{sizeX}.
5441 Default is @code{0}.
5442 @end table
5443
5444 @section bbox
5445
5446 Compute the bounding box for the non-black pixels in the input frame
5447 luminance plane.
5448
5449 This filter computes the bounding box containing all the pixels with a
5450 luminance value greater than the minimum allowed value.
5451 The parameters describing the bounding box are printed on the filter
5452 log.
5453
5454 The filter accepts the following option:
5455
5456 @table @option
5457 @item min_val
5458 Set the minimal luminance value. Default is @code{16}.
5459 @end table
5460
5461 @section bitplanenoise
5462
5463 Show and measure bit plane noise.
5464
5465 The filter accepts the following options:
5466
5467 @table @option
5468 @item bitplane
5469 Set which plane to analyze. Default is @code{1}.
5470
5471 @item filter
5472 Filter out noisy pixels from @code{bitplane} set above.
5473 Default is disabled.
5474 @end table
5475
5476 @section blackdetect
5477
5478 Detect video intervals that are (almost) completely black. Can be
5479 useful to detect chapter transitions, commercials, or invalid
5480 recordings. Output lines contains the time for the start, end and
5481 duration of the detected black interval expressed in seconds.
5482
5483 In order to display the output lines, you need to set the loglevel at
5484 least to the AV_LOG_INFO value.
5485
5486 The filter accepts the following options:
5487
5488 @table @option
5489 @item black_min_duration, d
5490 Set the minimum detected black duration expressed in seconds. It must
5491 be a non-negative floating point number.
5492
5493 Default value is 2.0.
5494
5495 @item picture_black_ratio_th, pic_th
5496 Set the threshold for considering a picture "black".
5497 Express the minimum value for the ratio:
5498 @example
5499 @var{nb_black_pixels} / @var{nb_pixels}
5500 @end example
5501
5502 for which a picture is considered black.
5503 Default value is 0.98.
5504
5505 @item pixel_black_th, pix_th
5506 Set the threshold for considering a pixel "black".
5507
5508 The threshold expresses the maximum pixel luminance value for which a
5509 pixel is considered "black". The provided value is scaled according to
5510 the following equation:
5511 @example
5512 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
5513 @end example
5514
5515 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
5516 the input video format, the range is [0-255] for YUV full-range
5517 formats and [16-235] for YUV non full-range formats.
5518
5519 Default value is 0.10.
5520 @end table
5521
5522 The following example sets the maximum pixel threshold to the minimum
5523 value, and detects only black intervals of 2 or more seconds:
5524 @example
5525 blackdetect=d=2:pix_th=0.00
5526 @end example
5527
5528 @section blackframe
5529
5530 Detect frames that are (almost) completely black. Can be useful to
5531 detect chapter transitions or commercials. Output lines consist of
5532 the frame number of the detected frame, the percentage of blackness,
5533 the position in the file if known or -1 and the timestamp in seconds.
5534
5535 In order to display the output lines, you need to set the loglevel at
5536 least to the AV_LOG_INFO value.
5537
5538 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
5539 The value represents the percentage of pixels in the picture that
5540 are below the threshold value.
5541
5542 It accepts the following parameters:
5543
5544 @table @option
5545
5546 @item amount
5547 The percentage of the pixels that have to be below the threshold; it defaults to
5548 @code{98}.
5549
5550 @item threshold, thresh
5551 The threshold below which a pixel value is considered black; it defaults to
5552 @code{32}.
5553
5554 @end table
5555
5556 @section blend, tblend
5557
5558 Blend two video frames into each other.
5559
5560 The @code{blend} filter takes two input streams and outputs one
5561 stream, the first input is the "top" layer and second input is
5562 "bottom" layer.  By default, the output terminates when the longest input terminates.
5563
5564 The @code{tblend} (time blend) filter takes two consecutive frames
5565 from one single stream, and outputs the result obtained by blending
5566 the new frame on top of the old frame.
5567
5568 A description of the accepted options follows.
5569
5570 @table @option
5571 @item c0_mode
5572 @item c1_mode
5573 @item c2_mode
5574 @item c3_mode
5575 @item all_mode
5576 Set blend mode for specific pixel component or all pixel components in case
5577 of @var{all_mode}. Default value is @code{normal}.
5578
5579 Available values for component modes are:
5580 @table @samp
5581 @item addition
5582 @item grainmerge
5583 @item and
5584 @item average
5585 @item burn
5586 @item darken
5587 @item difference
5588 @item grainextract
5589 @item divide
5590 @item dodge
5591 @item freeze
5592 @item exclusion
5593 @item extremity
5594 @item glow
5595 @item hardlight
5596 @item hardmix
5597 @item heat
5598 @item lighten
5599 @item linearlight
5600 @item multiply
5601 @item multiply128
5602 @item negation
5603 @item normal
5604 @item or
5605 @item overlay
5606 @item phoenix
5607 @item pinlight
5608 @item reflect
5609 @item screen
5610 @item softlight
5611 @item subtract
5612 @item vividlight
5613 @item xor
5614 @end table
5615
5616 @item c0_opacity
5617 @item c1_opacity
5618 @item c2_opacity
5619 @item c3_opacity
5620 @item all_opacity
5621 Set blend opacity for specific pixel component or all pixel components in case
5622 of @var{all_opacity}. Only used in combination with pixel component blend modes.
5623
5624 @item c0_expr
5625 @item c1_expr
5626 @item c2_expr
5627 @item c3_expr
5628 @item all_expr
5629 Set blend expression for specific pixel component or all pixel components in case
5630 of @var{all_expr}. Note that related mode options will be ignored if those are set.
5631
5632 The expressions can use the following variables:
5633
5634 @table @option
5635 @item N
5636 The sequential number of the filtered frame, starting from @code{0}.
5637
5638 @item X
5639 @item Y
5640 the coordinates of the current sample
5641
5642 @item W
5643 @item H
5644 the width and height of currently filtered plane
5645
5646 @item SW
5647 @item SH
5648 Width and height scale for the plane being filtered. It is the
5649 ratio between the dimensions of the current plane to the luma plane,
5650 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
5651 the luma plane and @code{0.5,0.5} for the chroma planes.
5652
5653 @item T
5654 Time of the current frame, expressed in seconds.
5655
5656 @item TOP, A
5657 Value of pixel component at current location for first video frame (top layer).
5658
5659 @item BOTTOM, B
5660 Value of pixel component at current location for second video frame (bottom layer).
5661 @end table
5662 @end table
5663
5664 The @code{blend} filter also supports the @ref{framesync} options.
5665
5666 @subsection Examples
5667
5668 @itemize
5669 @item
5670 Apply transition from bottom layer to top layer in first 10 seconds:
5671 @example
5672 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
5673 @end example
5674
5675 @item
5676 Apply linear horizontal transition from top layer to bottom layer:
5677 @example
5678 blend=all_expr='A*(X/W)+B*(1-X/W)'
5679 @end example
5680
5681 @item
5682 Apply 1x1 checkerboard effect:
5683 @example
5684 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
5685 @end example
5686
5687 @item
5688 Apply uncover left effect:
5689 @example
5690 blend=all_expr='if(gte(N*SW+X,W),A,B)'
5691 @end example
5692
5693 @item
5694 Apply uncover down effect:
5695 @example
5696 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
5697 @end example
5698
5699 @item
5700 Apply uncover up-left effect:
5701 @example
5702 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
5703 @end example
5704
5705 @item
5706 Split diagonally video and shows top and bottom layer on each side:
5707 @example
5708 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
5709 @end example
5710
5711 @item
5712 Display differences between the current and the previous frame:
5713 @example
5714 tblend=all_mode=grainextract
5715 @end example
5716 @end itemize
5717
5718 @section boxblur
5719
5720 Apply a boxblur algorithm to the input video.
5721
5722 It accepts the following parameters:
5723
5724 @table @option
5725
5726 @item luma_radius, lr
5727 @item luma_power, lp
5728 @item chroma_radius, cr
5729 @item chroma_power, cp
5730 @item alpha_radius, ar
5731 @item alpha_power, ap
5732
5733 @end table
5734
5735 A description of the accepted options follows.
5736
5737 @table @option
5738 @item luma_radius, lr
5739 @item chroma_radius, cr
5740 @item alpha_radius, ar
5741 Set an expression for the box radius in pixels used for blurring the
5742 corresponding input plane.
5743
5744 The radius value must be a non-negative number, and must not be
5745 greater than the value of the expression @code{min(w,h)/2} for the
5746 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
5747 planes.
5748
5749 Default value for @option{luma_radius} is "2". If not specified,
5750 @option{chroma_radius} and @option{alpha_radius} default to the
5751 corresponding value set for @option{luma_radius}.
5752
5753 The expressions can contain the following constants:
5754 @table @option
5755 @item w
5756 @item h
5757 The input width and height in pixels.
5758
5759 @item cw
5760 @item ch
5761 The input chroma image width and height in pixels.
5762
5763 @item hsub
5764 @item vsub
5765 The horizontal and vertical chroma subsample values. For example, for the
5766 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
5767 @end table
5768
5769 @item luma_power, lp
5770 @item chroma_power, cp
5771 @item alpha_power, ap
5772 Specify how many times the boxblur filter is applied to the
5773 corresponding plane.
5774
5775 Default value for @option{luma_power} is 2. If not specified,
5776 @option{chroma_power} and @option{alpha_power} default to the
5777 corresponding value set for @option{luma_power}.
5778
5779 A value of 0 will disable the effect.
5780 @end table
5781
5782 @subsection Examples
5783
5784 @itemize
5785 @item
5786 Apply a boxblur filter with the luma, chroma, and alpha radii
5787 set to 2:
5788 @example
5789 boxblur=luma_radius=2:luma_power=1
5790 boxblur=2:1
5791 @end example
5792
5793 @item
5794 Set the luma radius to 2, and alpha and chroma radius to 0:
5795 @example
5796 boxblur=2:1:cr=0:ar=0
5797 @end example
5798
5799 @item
5800 Set the luma and chroma radii to a fraction of the video dimension:
5801 @example
5802 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
5803 @end example
5804 @end itemize
5805
5806 @section bwdif
5807
5808 Deinterlace the input video ("bwdif" stands for "Bob Weaver
5809 Deinterlacing Filter").
5810
5811 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
5812 interpolation algorithms.
5813 It accepts the following parameters:
5814
5815 @table @option
5816 @item mode
5817 The interlacing mode to adopt. It accepts one of the following values:
5818
5819 @table @option
5820 @item 0, send_frame
5821 Output one frame for each frame.
5822 @item 1, send_field
5823 Output one frame for each field.
5824 @end table
5825
5826 The default value is @code{send_field}.
5827
5828 @item parity
5829 The picture field parity assumed for the input interlaced video. It accepts one
5830 of the following values:
5831
5832 @table @option
5833 @item 0, tff
5834 Assume the top field is first.
5835 @item 1, bff
5836 Assume the bottom field is first.
5837 @item -1, auto
5838 Enable automatic detection of field parity.
5839 @end table
5840
5841 The default value is @code{auto}.
5842 If the interlacing is unknown or the decoder does not export this information,
5843 top field first will be assumed.
5844
5845 @item deint
5846 Specify which frames to deinterlace. Accept one of the following
5847 values:
5848
5849 @table @option
5850 @item 0, all
5851 Deinterlace all frames.
5852 @item 1, interlaced
5853 Only deinterlace frames marked as interlaced.
5854 @end table
5855
5856 The default value is @code{all}.
5857 @end table
5858
5859 @section chromakey
5860 YUV colorspace color/chroma keying.
5861
5862 The filter accepts the following options:
5863
5864 @table @option
5865 @item color
5866 The color which will be replaced with transparency.
5867
5868 @item similarity
5869 Similarity percentage with the key color.
5870
5871 0.01 matches only the exact key color, while 1.0 matches everything.
5872
5873 @item blend
5874 Blend percentage.
5875
5876 0.0 makes pixels either fully transparent, or not transparent at all.
5877
5878 Higher values result in semi-transparent pixels, with a higher transparency
5879 the more similar the pixels color is to the key color.
5880
5881 @item yuv
5882 Signals that the color passed is already in YUV instead of RGB.
5883
5884 Literal colors like "green" or "red" don't make sense with this enabled anymore.
5885 This can be used to pass exact YUV values as hexadecimal numbers.
5886 @end table
5887
5888 @subsection Examples
5889
5890 @itemize
5891 @item
5892 Make every green pixel in the input image transparent:
5893 @example
5894 ffmpeg -i input.png -vf chromakey=green out.png
5895 @end example
5896
5897 @item
5898 Overlay a greenscreen-video on top of a static black background.
5899 @example
5900 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
5901 @end example
5902 @end itemize
5903
5904 @section ciescope
5905
5906 Display CIE color diagram with pixels overlaid onto it.
5907
5908 The filter accepts the following options:
5909
5910 @table @option
5911 @item system
5912 Set color system.
5913
5914 @table @samp
5915 @item ntsc, 470m
5916 @item ebu, 470bg
5917 @item smpte
5918 @item 240m
5919 @item apple
5920 @item widergb
5921 @item cie1931
5922 @item rec709, hdtv
5923 @item uhdtv, rec2020
5924 @end table
5925
5926 @item cie
5927 Set CIE system.
5928
5929 @table @samp
5930 @item xyy
5931 @item ucs
5932 @item luv
5933 @end table
5934
5935 @item gamuts
5936 Set what gamuts to draw.
5937
5938 See @code{system} option for available values.
5939
5940 @item size, s
5941 Set ciescope size, by default set to 512.
5942
5943 @item intensity, i
5944 Set intensity used to map input pixel values to CIE diagram.
5945
5946 @item contrast
5947 Set contrast used to draw tongue colors that are out of active color system gamut.
5948
5949 @item corrgamma
5950 Correct gamma displayed on scope, by default enabled.
5951
5952 @item showwhite
5953 Show white point on CIE diagram, by default disabled.
5954
5955 @item gamma
5956 Set input gamma. Used only with XYZ input color space.
5957 @end table
5958
5959 @section codecview
5960
5961 Visualize information exported by some codecs.
5962
5963 Some codecs can export information through frames using side-data or other
5964 means. For example, some MPEG based codecs export motion vectors through the
5965 @var{export_mvs} flag in the codec @option{flags2} option.
5966
5967 The filter accepts the following option:
5968
5969 @table @option
5970 @item mv
5971 Set motion vectors to visualize.
5972
5973 Available flags for @var{mv} are:
5974
5975 @table @samp
5976 @item pf
5977 forward predicted MVs of P-frames
5978 @item bf
5979 forward predicted MVs of B-frames
5980 @item bb
5981 backward predicted MVs of B-frames
5982 @end table
5983
5984 @item qp
5985 Display quantization parameters using the chroma planes.
5986
5987 @item mv_type, mvt
5988 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
5989
5990 Available flags for @var{mv_type} are:
5991
5992 @table @samp
5993 @item fp
5994 forward predicted MVs
5995 @item bp
5996 backward predicted MVs
5997 @end table
5998
5999 @item frame_type, ft
6000 Set frame type to visualize motion vectors of.
6001
6002 Available flags for @var{frame_type} are:
6003
6004 @table @samp
6005 @item if
6006 intra-coded frames (I-frames)
6007 @item pf
6008 predicted frames (P-frames)
6009 @item bf
6010 bi-directionally predicted frames (B-frames)
6011 @end table
6012 @end table
6013
6014 @subsection Examples
6015
6016 @itemize
6017 @item
6018 Visualize forward predicted MVs of all frames using @command{ffplay}:
6019 @example
6020 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
6021 @end example
6022
6023 @item
6024 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
6025 @example
6026 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
6027 @end example
6028 @end itemize
6029
6030 @section colorbalance
6031 Modify intensity of primary colors (red, green and blue) of input frames.
6032
6033 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
6034 regions for the red-cyan, green-magenta or blue-yellow balance.
6035
6036 A positive adjustment value shifts the balance towards the primary color, a negative
6037 value towards the complementary color.
6038
6039 The filter accepts the following options:
6040
6041 @table @option
6042 @item rs
6043 @item gs
6044 @item bs
6045 Adjust red, green and blue shadows (darkest pixels).
6046
6047 @item rm
6048 @item gm
6049 @item bm
6050 Adjust red, green and blue midtones (medium pixels).
6051
6052 @item rh
6053 @item gh
6054 @item bh
6055 Adjust red, green and blue highlights (brightest pixels).
6056
6057 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6058 @end table
6059
6060 @subsection Examples
6061
6062 @itemize
6063 @item
6064 Add red color cast to shadows:
6065 @example
6066 colorbalance=rs=.3
6067 @end example
6068 @end itemize
6069
6070 @section colorkey
6071 RGB colorspace color keying.
6072
6073 The filter accepts the following options:
6074
6075 @table @option
6076 @item color
6077 The color which will be replaced with transparency.
6078
6079 @item similarity
6080 Similarity percentage with the key color.
6081
6082 0.01 matches only the exact key color, while 1.0 matches everything.
6083
6084 @item blend
6085 Blend percentage.
6086
6087 0.0 makes pixels either fully transparent, or not transparent at all.
6088
6089 Higher values result in semi-transparent pixels, with a higher transparency
6090 the more similar the pixels color is to the key color.
6091 @end table
6092
6093 @subsection Examples
6094
6095 @itemize
6096 @item
6097 Make every green pixel in the input image transparent:
6098 @example
6099 ffmpeg -i input.png -vf colorkey=green out.png
6100 @end example
6101
6102 @item
6103 Overlay a greenscreen-video on top of a static background image.
6104 @example
6105 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
6106 @end example
6107 @end itemize
6108
6109 @section colorlevels
6110
6111 Adjust video input frames using levels.
6112
6113 The filter accepts the following options:
6114
6115 @table @option
6116 @item rimin
6117 @item gimin
6118 @item bimin
6119 @item aimin
6120 Adjust red, green, blue and alpha input black point.
6121 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6122
6123 @item rimax
6124 @item gimax
6125 @item bimax
6126 @item aimax
6127 Adjust red, green, blue and alpha input white point.
6128 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
6129
6130 Input levels are used to lighten highlights (bright tones), darken shadows
6131 (dark tones), change the balance of bright and dark tones.
6132
6133 @item romin
6134 @item gomin
6135 @item bomin
6136 @item aomin
6137 Adjust red, green, blue and alpha output black point.
6138 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
6139
6140 @item romax
6141 @item gomax
6142 @item bomax
6143 @item aomax
6144 Adjust red, green, blue and alpha output white point.
6145 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
6146
6147 Output levels allows manual selection of a constrained output level range.
6148 @end table
6149
6150 @subsection Examples
6151
6152 @itemize
6153 @item
6154 Make video output darker:
6155 @example
6156 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
6157 @end example
6158
6159 @item
6160 Increase contrast:
6161 @example
6162 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
6163 @end example
6164
6165 @item
6166 Make video output lighter:
6167 @example
6168 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
6169 @end example
6170
6171 @item
6172 Increase brightness:
6173 @example
6174 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
6175 @end example
6176 @end itemize
6177
6178 @section colorchannelmixer
6179
6180 Adjust video input frames by re-mixing color channels.
6181
6182 This filter modifies a color channel by adding the values associated to
6183 the other channels of the same pixels. For example if the value to
6184 modify is red, the output value will be:
6185 @example
6186 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
6187 @end example
6188
6189 The filter accepts the following options:
6190
6191 @table @option
6192 @item rr
6193 @item rg
6194 @item rb
6195 @item ra
6196 Adjust contribution of input red, green, blue and alpha channels for output red channel.
6197 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
6198
6199 @item gr
6200 @item gg
6201 @item gb
6202 @item ga
6203 Adjust contribution of input red, green, blue and alpha channels for output green channel.
6204 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
6205
6206 @item br
6207 @item bg
6208 @item bb
6209 @item ba
6210 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
6211 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
6212
6213 @item ar
6214 @item ag
6215 @item ab
6216 @item aa
6217 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
6218 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
6219
6220 Allowed ranges for options are @code{[-2.0, 2.0]}.
6221 @end table
6222
6223 @subsection Examples
6224
6225 @itemize
6226 @item
6227 Convert source to grayscale:
6228 @example
6229 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
6230 @end example
6231 @item
6232 Simulate sepia tones:
6233 @example
6234 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
6235 @end example
6236 @end itemize
6237
6238 @section colormatrix
6239
6240 Convert color matrix.
6241
6242 The filter accepts the following options:
6243
6244 @table @option
6245 @item src
6246 @item dst
6247 Specify the source and destination color matrix. Both values must be
6248 specified.
6249
6250 The accepted values are:
6251 @table @samp
6252 @item bt709
6253 BT.709
6254
6255 @item fcc
6256 FCC
6257
6258 @item bt601
6259 BT.601
6260
6261 @item bt470
6262 BT.470
6263
6264 @item bt470bg
6265 BT.470BG
6266
6267 @item smpte170m
6268 SMPTE-170M
6269
6270 @item smpte240m
6271 SMPTE-240M
6272
6273 @item bt2020
6274 BT.2020
6275 @end table
6276 @end table
6277
6278 For example to convert from BT.601 to SMPTE-240M, use the command:
6279 @example
6280 colormatrix=bt601:smpte240m
6281 @end example
6282
6283 @section colorspace
6284
6285 Convert colorspace, transfer characteristics or color primaries.
6286 Input video needs to have an even size.
6287
6288 The filter accepts the following options:
6289
6290 @table @option
6291 @anchor{all}
6292 @item all
6293 Specify all color properties at once.
6294
6295 The accepted values are:
6296 @table @samp
6297 @item bt470m
6298 BT.470M
6299
6300 @item bt470bg
6301 BT.470BG
6302
6303 @item bt601-6-525
6304 BT.601-6 525
6305
6306 @item bt601-6-625
6307 BT.601-6 625
6308
6309 @item bt709
6310 BT.709
6311
6312 @item smpte170m
6313 SMPTE-170M
6314
6315 @item smpte240m
6316 SMPTE-240M
6317
6318 @item bt2020
6319 BT.2020
6320
6321 @end table
6322
6323 @anchor{space}
6324 @item space
6325 Specify output colorspace.
6326
6327 The accepted values are:
6328 @table @samp
6329 @item bt709
6330 BT.709
6331
6332 @item fcc
6333 FCC
6334
6335 @item bt470bg
6336 BT.470BG or BT.601-6 625
6337
6338 @item smpte170m
6339 SMPTE-170M or BT.601-6 525
6340
6341 @item smpte240m
6342 SMPTE-240M
6343
6344 @item ycgco
6345 YCgCo
6346
6347 @item bt2020ncl
6348 BT.2020 with non-constant luminance
6349
6350 @end table
6351
6352 @anchor{trc}
6353 @item trc
6354 Specify output transfer characteristics.
6355
6356 The accepted values are:
6357 @table @samp
6358 @item bt709
6359 BT.709
6360
6361 @item bt470m
6362 BT.470M
6363
6364 @item bt470bg
6365 BT.470BG
6366
6367 @item gamma22
6368 Constant gamma of 2.2
6369
6370 @item gamma28
6371 Constant gamma of 2.8
6372
6373 @item smpte170m
6374 SMPTE-170M, BT.601-6 625 or BT.601-6 525
6375
6376 @item smpte240m
6377 SMPTE-240M
6378
6379 @item srgb
6380 SRGB
6381
6382 @item iec61966-2-1
6383 iec61966-2-1
6384
6385 @item iec61966-2-4
6386 iec61966-2-4
6387
6388 @item xvycc
6389 xvycc
6390
6391 @item bt2020-10
6392 BT.2020 for 10-bits content
6393
6394 @item bt2020-12
6395 BT.2020 for 12-bits content
6396
6397 @end table
6398
6399 @anchor{primaries}
6400 @item primaries
6401 Specify output color primaries.
6402
6403 The accepted values are:
6404 @table @samp
6405 @item bt709
6406 BT.709
6407
6408 @item bt470m
6409 BT.470M
6410
6411 @item bt470bg
6412 BT.470BG or BT.601-6 625
6413
6414 @item smpte170m
6415 SMPTE-170M or BT.601-6 525
6416
6417 @item smpte240m
6418 SMPTE-240M
6419
6420 @item film
6421 film
6422
6423 @item smpte431
6424 SMPTE-431
6425
6426 @item smpte432
6427 SMPTE-432
6428
6429 @item bt2020
6430 BT.2020
6431
6432 @item jedec-p22
6433 JEDEC P22 phosphors
6434
6435 @end table
6436
6437 @anchor{range}
6438 @item range
6439 Specify output color range.
6440
6441 The accepted values are:
6442 @table @samp
6443 @item tv
6444 TV (restricted) range
6445
6446 @item mpeg
6447 MPEG (restricted) range
6448
6449 @item pc
6450 PC (full) range
6451
6452 @item jpeg
6453 JPEG (full) range
6454
6455 @end table
6456
6457 @item format
6458 Specify output color format.
6459
6460 The accepted values are:
6461 @table @samp
6462 @item yuv420p
6463 YUV 4:2:0 planar 8-bits
6464
6465 @item yuv420p10
6466 YUV 4:2:0 planar 10-bits
6467
6468 @item yuv420p12
6469 YUV 4:2:0 planar 12-bits
6470
6471 @item yuv422p
6472 YUV 4:2:2 planar 8-bits
6473
6474 @item yuv422p10
6475 YUV 4:2:2 planar 10-bits
6476
6477 @item yuv422p12
6478 YUV 4:2:2 planar 12-bits
6479
6480 @item yuv444p
6481 YUV 4:4:4 planar 8-bits
6482
6483 @item yuv444p10
6484 YUV 4:4:4 planar 10-bits
6485
6486 @item yuv444p12
6487 YUV 4:4:4 planar 12-bits
6488
6489 @end table
6490
6491 @item fast
6492 Do a fast conversion, which skips gamma/primary correction. This will take
6493 significantly less CPU, but will be mathematically incorrect. To get output
6494 compatible with that produced by the colormatrix filter, use fast=1.
6495
6496 @item dither
6497 Specify dithering mode.
6498
6499 The accepted values are:
6500 @table @samp
6501 @item none
6502 No dithering
6503
6504 @item fsb
6505 Floyd-Steinberg dithering
6506 @end table
6507
6508 @item wpadapt
6509 Whitepoint adaptation mode.
6510
6511 The accepted values are:
6512 @table @samp
6513 @item bradford
6514 Bradford whitepoint adaptation
6515
6516 @item vonkries
6517 von Kries whitepoint adaptation
6518
6519 @item identity
6520 identity whitepoint adaptation (i.e. no whitepoint adaptation)
6521 @end table
6522
6523 @item iall
6524 Override all input properties at once. Same accepted values as @ref{all}.
6525
6526 @item ispace
6527 Override input colorspace. Same accepted values as @ref{space}.
6528
6529 @item iprimaries
6530 Override input color primaries. Same accepted values as @ref{primaries}.
6531
6532 @item itrc
6533 Override input transfer characteristics. Same accepted values as @ref{trc}.
6534
6535 @item irange
6536 Override input color range. Same accepted values as @ref{range}.
6537
6538 @end table
6539
6540 The filter converts the transfer characteristics, color space and color
6541 primaries to the specified user values. The output value, if not specified,
6542 is set to a default value based on the "all" property. If that property is
6543 also not specified, the filter will log an error. The output color range and
6544 format default to the same value as the input color range and format. The
6545 input transfer characteristics, color space, color primaries and color range
6546 should be set on the input data. If any of these are missing, the filter will
6547 log an error and no conversion will take place.
6548
6549 For example to convert the input to SMPTE-240M, use the command:
6550 @example
6551 colorspace=smpte240m
6552 @end example
6553
6554 @section convolution
6555
6556 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
6557
6558 The filter accepts the following options:
6559
6560 @table @option
6561 @item 0m
6562 @item 1m
6563 @item 2m
6564 @item 3m
6565 Set matrix for each plane.
6566 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
6567 and from 1 to 49 odd number of signed integers in @var{row} mode.
6568
6569 @item 0rdiv
6570 @item 1rdiv
6571 @item 2rdiv
6572 @item 3rdiv
6573 Set multiplier for calculated value for each plane.
6574 If unset or 0, it will be sum of all matrix elements.
6575
6576 @item 0bias
6577 @item 1bias
6578 @item 2bias
6579 @item 3bias
6580 Set bias for each plane. This value is added to the result of the multiplication.
6581 Useful for making the overall image brighter or darker. Default is 0.0.
6582
6583 @item 0mode
6584 @item 1mode
6585 @item 2mode
6586 @item 3mode
6587 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
6588 Default is @var{square}.
6589 @end table
6590
6591 @subsection Examples
6592
6593 @itemize
6594 @item
6595 Apply sharpen:
6596 @example
6597 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"
6598 @end example
6599
6600 @item
6601 Apply blur:
6602 @example
6603 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"
6604 @end example
6605
6606 @item
6607 Apply edge enhance:
6608 @example
6609 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"
6610 @end example
6611
6612 @item
6613 Apply edge detect:
6614 @example
6615 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"
6616 @end example
6617
6618 @item
6619 Apply laplacian edge detector which includes diagonals:
6620 @example
6621 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"
6622 @end example
6623
6624 @item
6625 Apply emboss:
6626 @example
6627 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"
6628 @end example
6629 @end itemize
6630
6631 @section convolve
6632
6633 Apply 2D convolution of video stream in frequency domain using second stream
6634 as impulse.
6635
6636 The filter accepts the following options:
6637
6638 @table @option
6639 @item planes
6640 Set which planes to process.
6641
6642 @item impulse
6643 Set which impulse video frames will be processed, can be @var{first}
6644 or @var{all}. Default is @var{all}.
6645 @end table
6646
6647 The @code{convolve} filter also supports the @ref{framesync} options.
6648
6649 @section copy
6650
6651 Copy the input video source unchanged to the output. This is mainly useful for
6652 testing purposes.
6653
6654 @anchor{coreimage}
6655 @section coreimage
6656 Video filtering on GPU using Apple's CoreImage API on OSX.
6657
6658 Hardware acceleration is based on an OpenGL context. Usually, this means it is
6659 processed by video hardware. However, software-based OpenGL implementations
6660 exist which means there is no guarantee for hardware processing. It depends on
6661 the respective OSX.
6662
6663 There are many filters and image generators provided by Apple that come with a
6664 large variety of options. The filter has to be referenced by its name along
6665 with its options.
6666
6667 The coreimage filter accepts the following options:
6668 @table @option
6669 @item list_filters
6670 List all available filters and generators along with all their respective
6671 options as well as possible minimum and maximum values along with the default
6672 values.
6673 @example
6674 list_filters=true
6675 @end example
6676
6677 @item filter
6678 Specify all filters by their respective name and options.
6679 Use @var{list_filters} to determine all valid filter names and options.
6680 Numerical options are specified by a float value and are automatically clamped
6681 to their respective value range.  Vector and color options have to be specified
6682 by a list of space separated float values. Character escaping has to be done.
6683 A special option name @code{default} is available to use default options for a
6684 filter.
6685
6686 It is required to specify either @code{default} or at least one of the filter options.
6687 All omitted options are used with their default values.
6688 The syntax of the filter string is as follows:
6689 @example
6690 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
6691 @end example
6692
6693 @item output_rect
6694 Specify a rectangle where the output of the filter chain is copied into the
6695 input image. It is given by a list of space separated float values:
6696 @example
6697 output_rect=x\ y\ width\ height
6698 @end example
6699 If not given, the output rectangle equals the dimensions of the input image.
6700 The output rectangle is automatically cropped at the borders of the input
6701 image. Negative values are valid for each component.
6702 @example
6703 output_rect=25\ 25\ 100\ 100
6704 @end example
6705 @end table
6706
6707 Several filters can be chained for successive processing without GPU-HOST
6708 transfers allowing for fast processing of complex filter chains.
6709 Currently, only filters with zero (generators) or exactly one (filters) input
6710 image and one output image are supported. Also, transition filters are not yet
6711 usable as intended.
6712
6713 Some filters generate output images with additional padding depending on the
6714 respective filter kernel. The padding is automatically removed to ensure the
6715 filter output has the same size as the input image.
6716
6717 For image generators, the size of the output image is determined by the
6718 previous output image of the filter chain or the input image of the whole
6719 filterchain, respectively. The generators do not use the pixel information of
6720 this image to generate their output. However, the generated output is
6721 blended onto this image, resulting in partial or complete coverage of the
6722 output image.
6723
6724 The @ref{coreimagesrc} video source can be used for generating input images
6725 which are directly fed into the filter chain. By using it, providing input
6726 images by another video source or an input video is not required.
6727
6728 @subsection Examples
6729
6730 @itemize
6731
6732 @item
6733 List all filters available:
6734 @example
6735 coreimage=list_filters=true
6736 @end example
6737
6738 @item
6739 Use the CIBoxBlur filter with default options to blur an image:
6740 @example
6741 coreimage=filter=CIBoxBlur@@default
6742 @end example
6743
6744 @item
6745 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
6746 its center at 100x100 and a radius of 50 pixels:
6747 @example
6748 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
6749 @end example
6750
6751 @item
6752 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
6753 given as complete and escaped command-line for Apple's standard bash shell:
6754 @example
6755 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
6756 @end example
6757 @end itemize
6758
6759 @section crop
6760
6761 Crop the input video to given dimensions.
6762
6763 It accepts the following parameters:
6764
6765 @table @option
6766 @item w, out_w
6767 The width of the output video. It defaults to @code{iw}.
6768 This expression is evaluated only once during the filter
6769 configuration, or when the @samp{w} or @samp{out_w} command is sent.
6770
6771 @item h, out_h
6772 The height of the output video. It defaults to @code{ih}.
6773 This expression is evaluated only once during the filter
6774 configuration, or when the @samp{h} or @samp{out_h} command is sent.
6775
6776 @item x
6777 The horizontal position, in the input video, of the left edge of the output
6778 video. It defaults to @code{(in_w-out_w)/2}.
6779 This expression is evaluated per-frame.
6780
6781 @item y
6782 The vertical position, in the input video, of the top edge of the output video.
6783 It defaults to @code{(in_h-out_h)/2}.
6784 This expression is evaluated per-frame.
6785
6786 @item keep_aspect
6787 If set to 1 will force the output display aspect ratio
6788 to be the same of the input, by changing the output sample aspect
6789 ratio. It defaults to 0.
6790
6791 @item exact
6792 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
6793 width/height/x/y as specified and will not be rounded to nearest smaller value.
6794 It defaults to 0.
6795 @end table
6796
6797 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
6798 expressions containing the following constants:
6799
6800 @table @option
6801 @item x
6802 @item y
6803 The computed values for @var{x} and @var{y}. They are evaluated for
6804 each new frame.
6805
6806 @item in_w
6807 @item in_h
6808 The input width and height.
6809
6810 @item iw
6811 @item ih
6812 These are the same as @var{in_w} and @var{in_h}.
6813
6814 @item out_w
6815 @item out_h
6816 The output (cropped) width and height.
6817
6818 @item ow
6819 @item oh
6820 These are the same as @var{out_w} and @var{out_h}.
6821
6822 @item a
6823 same as @var{iw} / @var{ih}
6824
6825 @item sar
6826 input sample aspect ratio
6827
6828 @item dar
6829 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
6830
6831 @item hsub
6832 @item vsub
6833 horizontal and vertical chroma subsample values. For example for the
6834 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6835
6836 @item n
6837 The number of the input frame, starting from 0.
6838
6839 @item pos
6840 the position in the file of the input frame, NAN if unknown
6841
6842 @item t
6843 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
6844
6845 @end table
6846
6847 The expression for @var{out_w} may depend on the value of @var{out_h},
6848 and the expression for @var{out_h} may depend on @var{out_w}, but they
6849 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
6850 evaluated after @var{out_w} and @var{out_h}.
6851
6852 The @var{x} and @var{y} parameters specify the expressions for the
6853 position of the top-left corner of the output (non-cropped) area. They
6854 are evaluated for each frame. If the evaluated value is not valid, it
6855 is approximated to the nearest valid value.
6856
6857 The expression for @var{x} may depend on @var{y}, and the expression
6858 for @var{y} may depend on @var{x}.
6859
6860 @subsection Examples
6861
6862 @itemize
6863 @item
6864 Crop area with size 100x100 at position (12,34).
6865 @example
6866 crop=100:100:12:34
6867 @end example
6868
6869 Using named options, the example above becomes:
6870 @example
6871 crop=w=100:h=100:x=12:y=34
6872 @end example
6873
6874 @item
6875 Crop the central input area with size 100x100:
6876 @example
6877 crop=100:100
6878 @end example
6879
6880 @item
6881 Crop the central input area with size 2/3 of the input video:
6882 @example
6883 crop=2/3*in_w:2/3*in_h
6884 @end example
6885
6886 @item
6887 Crop the input video central square:
6888 @example
6889 crop=out_w=in_h
6890 crop=in_h
6891 @end example
6892
6893 @item
6894 Delimit the rectangle with the top-left corner placed at position
6895 100:100 and the right-bottom corner corresponding to the right-bottom
6896 corner of the input image.
6897 @example
6898 crop=in_w-100:in_h-100:100:100
6899 @end example
6900
6901 @item
6902 Crop 10 pixels from the left and right borders, and 20 pixels from
6903 the top and bottom borders
6904 @example
6905 crop=in_w-2*10:in_h-2*20
6906 @end example
6907
6908 @item
6909 Keep only the bottom right quarter of the input image:
6910 @example
6911 crop=in_w/2:in_h/2:in_w/2:in_h/2
6912 @end example
6913
6914 @item
6915 Crop height for getting Greek harmony:
6916 @example
6917 crop=in_w:1/PHI*in_w
6918 @end example
6919
6920 @item
6921 Apply trembling effect:
6922 @example
6923 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)
6924 @end example
6925
6926 @item
6927 Apply erratic camera effect depending on timestamp:
6928 @example
6929 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)"
6930 @end example
6931
6932 @item
6933 Set x depending on the value of y:
6934 @example
6935 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
6936 @end example
6937 @end itemize
6938
6939 @subsection Commands
6940
6941 This filter supports the following commands:
6942 @table @option
6943 @item w, out_w
6944 @item h, out_h
6945 @item x
6946 @item y
6947 Set width/height of the output video and the horizontal/vertical position
6948 in the input video.
6949 The command accepts the same syntax of the corresponding option.
6950
6951 If the specified expression is not valid, it is kept at its current
6952 value.
6953 @end table
6954
6955 @section cropdetect
6956
6957 Auto-detect the crop size.
6958
6959 It calculates the necessary cropping parameters and prints the
6960 recommended parameters via the logging system. The detected dimensions
6961 correspond to the non-black area of the input video.
6962
6963 It accepts the following parameters:
6964
6965 @table @option
6966
6967 @item limit
6968 Set higher black value threshold, which can be optionally specified
6969 from nothing (0) to everything (255 for 8-bit based formats). An intensity
6970 value greater to the set value is considered non-black. It defaults to 24.
6971 You can also specify a value between 0.0 and 1.0 which will be scaled depending
6972 on the bitdepth of the pixel format.
6973
6974 @item round
6975 The value which the width/height should be divisible by. It defaults to
6976 16. The offset is automatically adjusted to center the video. Use 2 to
6977 get only even dimensions (needed for 4:2:2 video). 16 is best when
6978 encoding to most video codecs.
6979
6980 @item reset_count, reset
6981 Set the counter that determines after how many frames cropdetect will
6982 reset the previously detected largest video area and start over to
6983 detect the current optimal crop area. Default value is 0.
6984
6985 This can be useful when channel logos distort the video area. 0
6986 indicates 'never reset', and returns the largest area encountered during
6987 playback.
6988 @end table
6989
6990 @anchor{curves}
6991 @section curves
6992
6993 Apply color adjustments using curves.
6994
6995 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
6996 component (red, green and blue) has its values defined by @var{N} key points
6997 tied from each other using a smooth curve. The x-axis represents the pixel
6998 values from the input frame, and the y-axis the new pixel values to be set for
6999 the output frame.
7000
7001 By default, a component curve is defined by the two points @var{(0;0)} and
7002 @var{(1;1)}. This creates a straight line where each original pixel value is
7003 "adjusted" to its own value, which means no change to the image.
7004
7005 The filter allows you to redefine these two points and add some more. A new
7006 curve (using a natural cubic spline interpolation) will be define to pass
7007 smoothly through all these new coordinates. The new defined points needs to be
7008 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
7009 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
7010 the vector spaces, the values will be clipped accordingly.
7011
7012 The filter accepts the following options:
7013
7014 @table @option
7015 @item preset
7016 Select one of the available color presets. This option can be used in addition
7017 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
7018 options takes priority on the preset values.
7019 Available presets are:
7020 @table @samp
7021 @item none
7022 @item color_negative
7023 @item cross_process
7024 @item darker
7025 @item increase_contrast
7026 @item lighter
7027 @item linear_contrast
7028 @item medium_contrast
7029 @item negative
7030 @item strong_contrast
7031 @item vintage
7032 @end table
7033 Default is @code{none}.
7034 @item master, m
7035 Set the master key points. These points will define a second pass mapping. It
7036 is sometimes called a "luminance" or "value" mapping. It can be used with
7037 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
7038 post-processing LUT.
7039 @item red, r
7040 Set the key points for the red component.
7041 @item green, g
7042 Set the key points for the green component.
7043 @item blue, b
7044 Set the key points for the blue component.
7045 @item all
7046 Set the key points for all components (not including master).
7047 Can be used in addition to the other key points component
7048 options. In this case, the unset component(s) will fallback on this
7049 @option{all} setting.
7050 @item psfile
7051 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
7052 @item plot
7053 Save Gnuplot script of the curves in specified file.
7054 @end table
7055
7056 To avoid some filtergraph syntax conflicts, each key points list need to be
7057 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
7058
7059 @subsection Examples
7060
7061 @itemize
7062 @item
7063 Increase slightly the middle level of blue:
7064 @example
7065 curves=blue='0/0 0.5/0.58 1/1'
7066 @end example
7067
7068 @item
7069 Vintage effect:
7070 @example
7071 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'
7072 @end example
7073 Here we obtain the following coordinates for each components:
7074 @table @var
7075 @item red
7076 @code{(0;0.11) (0.42;0.51) (1;0.95)}
7077 @item green
7078 @code{(0;0) (0.50;0.48) (1;1)}
7079 @item blue
7080 @code{(0;0.22) (0.49;0.44) (1;0.80)}
7081 @end table
7082
7083 @item
7084 The previous example can also be achieved with the associated built-in preset:
7085 @example
7086 curves=preset=vintage
7087 @end example
7088
7089 @item
7090 Or simply:
7091 @example
7092 curves=vintage
7093 @end example
7094
7095 @item
7096 Use a Photoshop preset and redefine the points of the green component:
7097 @example
7098 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
7099 @end example
7100
7101 @item
7102 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
7103 and @command{gnuplot}:
7104 @example
7105 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
7106 gnuplot -p /tmp/curves.plt
7107 @end example
7108 @end itemize
7109
7110 @section datascope
7111
7112 Video data analysis filter.
7113
7114 This filter shows hexadecimal pixel values of part of video.
7115
7116 The filter accepts the following options:
7117
7118 @table @option
7119 @item size, s
7120 Set output video size.
7121
7122 @item x
7123 Set x offset from where to pick pixels.
7124
7125 @item y
7126 Set y offset from where to pick pixels.
7127
7128 @item mode
7129 Set scope mode, can be one of the following:
7130 @table @samp
7131 @item mono
7132 Draw hexadecimal pixel values with white color on black background.
7133
7134 @item color
7135 Draw hexadecimal pixel values with input video pixel color on black
7136 background.
7137
7138 @item color2
7139 Draw hexadecimal pixel values on color background picked from input video,
7140 the text color is picked in such way so its always visible.
7141 @end table
7142
7143 @item axis
7144 Draw rows and columns numbers on left and top of video.
7145
7146 @item opacity
7147 Set background opacity.
7148 @end table
7149
7150 @section dctdnoiz
7151
7152 Denoise frames using 2D DCT (frequency domain filtering).
7153
7154 This filter is not designed for real time.
7155
7156 The filter accepts the following options:
7157
7158 @table @option
7159 @item sigma, s
7160 Set the noise sigma constant.
7161
7162 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
7163 coefficient (absolute value) below this threshold with be dropped.
7164
7165 If you need a more advanced filtering, see @option{expr}.
7166
7167 Default is @code{0}.
7168
7169 @item overlap
7170 Set number overlapping pixels for each block. Since the filter can be slow, you
7171 may want to reduce this value, at the cost of a less effective filter and the
7172 risk of various artefacts.
7173
7174 If the overlapping value doesn't permit processing the whole input width or
7175 height, a warning will be displayed and according borders won't be denoised.
7176
7177 Default value is @var{blocksize}-1, which is the best possible setting.
7178
7179 @item expr, e
7180 Set the coefficient factor expression.
7181
7182 For each coefficient of a DCT block, this expression will be evaluated as a
7183 multiplier value for the coefficient.
7184
7185 If this is option is set, the @option{sigma} option will be ignored.
7186
7187 The absolute value of the coefficient can be accessed through the @var{c}
7188 variable.
7189
7190 @item n
7191 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
7192 @var{blocksize}, which is the width and height of the processed blocks.
7193
7194 The default value is @var{3} (8x8) and can be raised to @var{4} for a
7195 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
7196 on the speed processing. Also, a larger block size does not necessarily means a
7197 better de-noising.
7198 @end table
7199
7200 @subsection Examples
7201
7202 Apply a denoise with a @option{sigma} of @code{4.5}:
7203 @example
7204 dctdnoiz=4.5
7205 @end example
7206
7207 The same operation can be achieved using the expression system:
7208 @example
7209 dctdnoiz=e='gte(c, 4.5*3)'
7210 @end example
7211
7212 Violent denoise using a block size of @code{16x16}:
7213 @example
7214 dctdnoiz=15:n=4
7215 @end example
7216
7217 @section deband
7218
7219 Remove banding artifacts from input video.
7220 It works by replacing banded pixels with average value of referenced pixels.
7221
7222 The filter accepts the following options:
7223
7224 @table @option
7225 @item 1thr
7226 @item 2thr
7227 @item 3thr
7228 @item 4thr
7229 Set banding detection threshold for each plane. Default is 0.02.
7230 Valid range is 0.00003 to 0.5.
7231 If difference between current pixel and reference pixel is less than threshold,
7232 it will be considered as banded.
7233
7234 @item range, r
7235 Banding detection range in pixels. Default is 16. If positive, random number
7236 in range 0 to set value will be used. If negative, exact absolute value
7237 will be used.
7238 The range defines square of four pixels around current pixel.
7239
7240 @item direction, d
7241 Set direction in radians from which four pixel will be compared. If positive,
7242 random direction from 0 to set direction will be picked. If negative, exact of
7243 absolute value will be picked. For example direction 0, -PI or -2*PI radians
7244 will pick only pixels on same row and -PI/2 will pick only pixels on same
7245 column.
7246
7247 @item blur, b
7248 If enabled, current pixel is compared with average value of all four
7249 surrounding pixels. The default is enabled. If disabled current pixel is
7250 compared with all four surrounding pixels. The pixel is considered banded
7251 if only all four differences with surrounding pixels are less than threshold.
7252
7253 @item coupling, c
7254 If enabled, current pixel is changed if and only if all pixel components are banded,
7255 e.g. banding detection threshold is triggered for all color components.
7256 The default is disabled.
7257 @end table
7258
7259 @section deblock
7260
7261 Remove blocking artifacts from input video.
7262
7263 The filter accepts the following options:
7264
7265 @table @option
7266 @item filter
7267 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
7268 This controls what kind of deblocking is applied.
7269
7270 @item block
7271 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
7272
7273 @item alpha
7274 @item beta
7275 @item gamma
7276 @item delta
7277 Set blocking detection thresholds. Allowed range is 0 to 1.
7278 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
7279 Using higher threshold gives more deblocking strength.
7280 Setting @var{alpha} controls threshold detection at exact edge of block.
7281 Remaining options controls threshold detection near the edge. Each one for
7282 below/above or left/right. Setting any of those to @var{0} disables
7283 deblocking.
7284
7285 @item planes
7286 Set planes to filter. Default is to filter all available planes.
7287 @end table
7288
7289 @subsection Examples
7290
7291 @itemize
7292 @item
7293 Deblock using weak filter and block size of 4 pixels.
7294 @example
7295 deblock=filter=weak:block=4
7296 @end example
7297
7298 @item
7299 Deblock using strong filter, block size of 4 pixels and custom thresholds for
7300 deblocking more edges.
7301 @example
7302 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
7303 @end example
7304
7305 @item
7306 Similar as above, but filter only first plane.
7307 @example
7308 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
7309 @end example
7310
7311 @item
7312 Similar as above, but filter only second and third plane.
7313 @example
7314 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
7315 @end example
7316 @end itemize
7317
7318 @anchor{decimate}
7319 @section decimate
7320
7321 Drop duplicated frames at regular intervals.
7322
7323 The filter accepts the following options:
7324
7325 @table @option
7326 @item cycle
7327 Set the number of frames from which one will be dropped. Setting this to
7328 @var{N} means one frame in every batch of @var{N} frames will be dropped.
7329 Default is @code{5}.
7330
7331 @item dupthresh
7332 Set the threshold for duplicate detection. If the difference metric for a frame
7333 is less than or equal to this value, then it is declared as duplicate. Default
7334 is @code{1.1}
7335
7336 @item scthresh
7337 Set scene change threshold. Default is @code{15}.
7338
7339 @item blockx
7340 @item blocky
7341 Set the size of the x and y-axis blocks used during metric calculations.
7342 Larger blocks give better noise suppression, but also give worse detection of
7343 small movements. Must be a power of two. Default is @code{32}.
7344
7345 @item ppsrc
7346 Mark main input as a pre-processed input and activate clean source input
7347 stream. This allows the input to be pre-processed with various filters to help
7348 the metrics calculation while keeping the frame selection lossless. When set to
7349 @code{1}, the first stream is for the pre-processed input, and the second
7350 stream is the clean source from where the kept frames are chosen. Default is
7351 @code{0}.
7352
7353 @item chroma
7354 Set whether or not chroma is considered in the metric calculations. Default is
7355 @code{1}.
7356 @end table
7357
7358 @section deconvolve
7359
7360 Apply 2D deconvolution of video stream in frequency domain using second stream
7361 as impulse.
7362
7363 The filter accepts the following options:
7364
7365 @table @option
7366 @item planes
7367 Set which planes to process.
7368
7369 @item impulse
7370 Set which impulse video frames will be processed, can be @var{first}
7371 or @var{all}. Default is @var{all}.
7372
7373 @item noise
7374 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
7375 and height are not same and not power of 2 or if stream prior to convolving
7376 had noise.
7377 @end table
7378
7379 The @code{deconvolve} filter also supports the @ref{framesync} options.
7380
7381 @section deflate
7382
7383 Apply deflate effect to the video.
7384
7385 This filter replaces the pixel by the local(3x3) average by taking into account
7386 only values lower than the pixel.
7387
7388 It accepts the following options:
7389
7390 @table @option
7391 @item threshold0
7392 @item threshold1
7393 @item threshold2
7394 @item threshold3
7395 Limit the maximum change for each plane, default is 65535.
7396 If 0, plane will remain unchanged.
7397 @end table
7398
7399 @section deflicker
7400
7401 Remove temporal frame luminance variations.
7402
7403 It accepts the following options:
7404
7405 @table @option
7406 @item size, s
7407 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
7408
7409 @item mode, m
7410 Set averaging mode to smooth temporal luminance variations.
7411
7412 Available values are:
7413 @table @samp
7414 @item am
7415 Arithmetic mean
7416
7417 @item gm
7418 Geometric mean
7419
7420 @item hm
7421 Harmonic mean
7422
7423 @item qm
7424 Quadratic mean
7425
7426 @item cm
7427 Cubic mean
7428
7429 @item pm
7430 Power mean
7431
7432 @item median
7433 Median
7434 @end table
7435
7436 @item bypass
7437 Do not actually modify frame. Useful when one only wants metadata.
7438 @end table
7439
7440 @section dejudder
7441
7442 Remove judder produced by partially interlaced telecined content.
7443
7444 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
7445 source was partially telecined content then the output of @code{pullup,dejudder}
7446 will have a variable frame rate. May change the recorded frame rate of the
7447 container. Aside from that change, this filter will not affect constant frame
7448 rate video.
7449
7450 The option available in this filter is:
7451 @table @option
7452
7453 @item cycle
7454 Specify the length of the window over which the judder repeats.
7455
7456 Accepts any integer greater than 1. Useful values are:
7457 @table @samp
7458
7459 @item 4
7460 If the original was telecined from 24 to 30 fps (Film to NTSC).
7461
7462 @item 5
7463 If the original was telecined from 25 to 30 fps (PAL to NTSC).
7464
7465 @item 20
7466 If a mixture of the two.
7467 @end table
7468
7469 The default is @samp{4}.
7470 @end table
7471
7472 @section delogo
7473
7474 Suppress a TV station logo by a simple interpolation of the surrounding
7475 pixels. Just set a rectangle covering the logo and watch it disappear
7476 (and sometimes something even uglier appear - your mileage may vary).
7477
7478 It accepts the following parameters:
7479 @table @option
7480
7481 @item x
7482 @item y
7483 Specify the top left corner coordinates of the logo. They must be
7484 specified.
7485
7486 @item w
7487 @item h
7488 Specify the width and height of the logo to clear. They must be
7489 specified.
7490
7491 @item band, t
7492 Specify the thickness of the fuzzy edge of the rectangle (added to
7493 @var{w} and @var{h}). The default value is 1. This option is
7494 deprecated, setting higher values should no longer be necessary and
7495 is not recommended.
7496
7497 @item show
7498 When set to 1, a green rectangle is drawn on the screen to simplify
7499 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
7500 The default value is 0.
7501
7502 The rectangle is drawn on the outermost pixels which will be (partly)
7503 replaced with interpolated values. The values of the next pixels
7504 immediately outside this rectangle in each direction will be used to
7505 compute the interpolated pixel values inside the rectangle.
7506
7507 @end table
7508
7509 @subsection Examples
7510
7511 @itemize
7512 @item
7513 Set a rectangle covering the area with top left corner coordinates 0,0
7514 and size 100x77, and a band of size 10:
7515 @example
7516 delogo=x=0:y=0:w=100:h=77:band=10
7517 @end example
7518
7519 @end itemize
7520
7521 @section deshake
7522
7523 Attempt to fix small changes in horizontal and/or vertical shift. This
7524 filter helps remove camera shake from hand-holding a camera, bumping a
7525 tripod, moving on a vehicle, etc.
7526
7527 The filter accepts the following options:
7528
7529 @table @option
7530
7531 @item x
7532 @item y
7533 @item w
7534 @item h
7535 Specify a rectangular area where to limit the search for motion
7536 vectors.
7537 If desired the search for motion vectors can be limited to a
7538 rectangular area of the frame defined by its top left corner, width
7539 and height. These parameters have the same meaning as the drawbox
7540 filter which can be used to visualise the position of the bounding
7541 box.
7542
7543 This is useful when simultaneous movement of subjects within the frame
7544 might be confused for camera motion by the motion vector search.
7545
7546 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
7547 then the full frame is used. This allows later options to be set
7548 without specifying the bounding box for the motion vector search.
7549
7550 Default - search the whole frame.
7551
7552 @item rx
7553 @item ry
7554 Specify the maximum extent of movement in x and y directions in the
7555 range 0-64 pixels. Default 16.
7556
7557 @item edge
7558 Specify how to generate pixels to fill blanks at the edge of the
7559 frame. Available values are:
7560 @table @samp
7561 @item blank, 0
7562 Fill zeroes at blank locations
7563 @item original, 1
7564 Original image at blank locations
7565 @item clamp, 2
7566 Extruded edge value at blank locations
7567 @item mirror, 3
7568 Mirrored edge at blank locations
7569 @end table
7570 Default value is @samp{mirror}.
7571
7572 @item blocksize
7573 Specify the blocksize to use for motion search. Range 4-128 pixels,
7574 default 8.
7575
7576 @item contrast
7577 Specify the contrast threshold for blocks. Only blocks with more than
7578 the specified contrast (difference between darkest and lightest
7579 pixels) will be considered. Range 1-255, default 125.
7580
7581 @item search
7582 Specify the search strategy. Available values are:
7583 @table @samp
7584 @item exhaustive, 0
7585 Set exhaustive search
7586 @item less, 1
7587 Set less exhaustive search.
7588 @end table
7589 Default value is @samp{exhaustive}.
7590
7591 @item filename
7592 If set then a detailed log of the motion search is written to the
7593 specified file.
7594
7595 @end table
7596
7597 @section despill
7598
7599 Remove unwanted contamination of foreground colors, caused by reflected color of
7600 greenscreen or bluescreen.
7601
7602 This filter accepts the following options:
7603
7604 @table @option
7605 @item type
7606 Set what type of despill to use.
7607
7608 @item mix
7609 Set how spillmap will be generated.
7610
7611 @item expand
7612 Set how much to get rid of still remaining spill.
7613
7614 @item red
7615 Controls amount of red in spill area.
7616
7617 @item green
7618 Controls amount of green in spill area.
7619 Should be -1 for greenscreen.
7620
7621 @item blue
7622 Controls amount of blue in spill area.
7623 Should be -1 for bluescreen.
7624
7625 @item brightness
7626 Controls brightness of spill area, preserving colors.
7627
7628 @item alpha
7629 Modify alpha from generated spillmap.
7630 @end table
7631
7632 @section detelecine
7633
7634 Apply an exact inverse of the telecine operation. It requires a predefined
7635 pattern specified using the pattern option which must be the same as that passed
7636 to the telecine filter.
7637
7638 This filter accepts the following options:
7639
7640 @table @option
7641 @item first_field
7642 @table @samp
7643 @item top, t
7644 top field first
7645 @item bottom, b
7646 bottom field first
7647 The default value is @code{top}.
7648 @end table
7649
7650 @item pattern
7651 A string of numbers representing the pulldown pattern you wish to apply.
7652 The default value is @code{23}.
7653
7654 @item start_frame
7655 A number representing position of the first frame with respect to the telecine
7656 pattern. This is to be used if the stream is cut. The default value is @code{0}.
7657 @end table
7658
7659 @section dilation
7660
7661 Apply dilation effect to the video.
7662
7663 This filter replaces the pixel by the local(3x3) maximum.
7664
7665 It accepts the following options:
7666
7667 @table @option
7668 @item threshold0
7669 @item threshold1
7670 @item threshold2
7671 @item threshold3
7672 Limit the maximum change for each plane, default is 65535.
7673 If 0, plane will remain unchanged.
7674
7675 @item coordinates
7676 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
7677 pixels are used.
7678
7679 Flags to local 3x3 coordinates maps like this:
7680
7681     1 2 3
7682     4   5
7683     6 7 8
7684 @end table
7685
7686 @section displace
7687
7688 Displace pixels as indicated by second and third input stream.
7689
7690 It takes three input streams and outputs one stream, the first input is the
7691 source, and second and third input are displacement maps.
7692
7693 The second input specifies how much to displace pixels along the
7694 x-axis, while the third input specifies how much to displace pixels
7695 along the y-axis.
7696 If one of displacement map streams terminates, last frame from that
7697 displacement map will be used.
7698
7699 Note that once generated, displacements maps can be reused over and over again.
7700
7701 A description of the accepted options follows.
7702
7703 @table @option
7704 @item edge
7705 Set displace behavior for pixels that are out of range.
7706
7707 Available values are:
7708 @table @samp
7709 @item blank
7710 Missing pixels are replaced by black pixels.
7711
7712 @item smear
7713 Adjacent pixels will spread out to replace missing pixels.
7714
7715 @item wrap
7716 Out of range pixels are wrapped so they point to pixels of other side.
7717
7718 @item mirror
7719 Out of range pixels will be replaced with mirrored pixels.
7720 @end table
7721 Default is @samp{smear}.
7722
7723 @end table
7724
7725 @subsection Examples
7726
7727 @itemize
7728 @item
7729 Add ripple effect to rgb input of video size hd720:
7730 @example
7731 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
7732 @end example
7733
7734 @item
7735 Add wave effect to rgb input of video size hd720:
7736 @example
7737 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
7738 @end example
7739 @end itemize
7740
7741 @section drawbox
7742
7743 Draw a colored box on the input image.
7744
7745 It accepts the following parameters:
7746
7747 @table @option
7748 @item x
7749 @item y
7750 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
7751
7752 @item width, w
7753 @item height, h
7754 The expressions which specify the width and height of the box; if 0 they are interpreted as
7755 the input width and height. It defaults to 0.
7756
7757 @item color, c
7758 Specify the color of the box to write. For the general syntax of this option,
7759 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
7760 value @code{invert} is used, the box edge color is the same as the
7761 video with inverted luma.
7762
7763 @item thickness, t
7764 The expression which sets the thickness of the box edge.
7765 A value of @code{fill} will create a filled box. Default value is @code{3}.
7766
7767 See below for the list of accepted constants.
7768
7769 @item replace
7770 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
7771 will overwrite the video's color and alpha pixels.
7772 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
7773 @end table
7774
7775 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
7776 following constants:
7777
7778 @table @option
7779 @item dar
7780 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
7781
7782 @item hsub
7783 @item vsub
7784 horizontal and vertical chroma subsample values. For example for the
7785 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7786
7787 @item in_h, ih
7788 @item in_w, iw
7789 The input width and height.
7790
7791 @item sar
7792 The input sample aspect ratio.
7793
7794 @item x
7795 @item y
7796 The x and y offset coordinates where the box is drawn.
7797
7798 @item w
7799 @item h
7800 The width and height of the drawn box.
7801
7802 @item t
7803 The thickness of the drawn box.
7804
7805 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
7806 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
7807
7808 @end table
7809
7810 @subsection Examples
7811
7812 @itemize
7813 @item
7814 Draw a black box around the edge of the input image:
7815 @example
7816 drawbox
7817 @end example
7818
7819 @item
7820 Draw a box with color red and an opacity of 50%:
7821 @example
7822 drawbox=10:20:200:60:red@@0.5
7823 @end example
7824
7825 The previous example can be specified as:
7826 @example
7827 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
7828 @end example
7829
7830 @item
7831 Fill the box with pink color:
7832 @example
7833 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
7834 @end example
7835
7836 @item
7837 Draw a 2-pixel red 2.40:1 mask:
7838 @example
7839 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
7840 @end example
7841 @end itemize
7842
7843 @section drawgrid
7844
7845 Draw a grid on the input image.
7846
7847 It accepts the following parameters:
7848
7849 @table @option
7850 @item x
7851 @item y
7852 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
7853
7854 @item width, w
7855 @item height, h
7856 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
7857 input width and height, respectively, minus @code{thickness}, so image gets
7858 framed. Default to 0.
7859
7860 @item color, c
7861 Specify the color of the grid. For the general syntax of this option,
7862 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
7863 value @code{invert} is used, the grid color is the same as the
7864 video with inverted luma.
7865
7866 @item thickness, t
7867 The expression which sets the thickness of the grid line. Default value is @code{1}.
7868
7869 See below for the list of accepted constants.
7870
7871 @item replace
7872 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
7873 will overwrite the video's color and alpha pixels.
7874 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
7875 @end table
7876
7877 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
7878 following constants:
7879
7880 @table @option
7881 @item dar
7882 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
7883
7884 @item hsub
7885 @item vsub
7886 horizontal and vertical chroma subsample values. For example for the
7887 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7888
7889 @item in_h, ih
7890 @item in_w, iw
7891 The input grid cell width and height.
7892
7893 @item sar
7894 The input sample aspect ratio.
7895
7896 @item x
7897 @item y
7898 The x and y coordinates of some point of grid intersection (meant to configure offset).
7899
7900 @item w
7901 @item h
7902 The width and height of the drawn cell.
7903
7904 @item t
7905 The thickness of the drawn cell.
7906
7907 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
7908 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
7909
7910 @end table
7911
7912 @subsection Examples
7913
7914 @itemize
7915 @item
7916 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
7917 @example
7918 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
7919 @end example
7920
7921 @item
7922 Draw a white 3x3 grid with an opacity of 50%:
7923 @example
7924 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
7925 @end example
7926 @end itemize
7927
7928 @anchor{drawtext}
7929 @section drawtext
7930
7931 Draw a text string or text from a specified file on top of a video, using the
7932 libfreetype library.
7933
7934 To enable compilation of this filter, you need to configure FFmpeg with
7935 @code{--enable-libfreetype}.
7936 To enable default font fallback and the @var{font} option you need to
7937 configure FFmpeg with @code{--enable-libfontconfig}.
7938 To enable the @var{text_shaping} option, you need to configure FFmpeg with
7939 @code{--enable-libfribidi}.
7940
7941 @subsection Syntax
7942
7943 It accepts the following parameters:
7944
7945 @table @option
7946
7947 @item box
7948 Used to draw a box around text using the background color.
7949 The value must be either 1 (enable) or 0 (disable).
7950 The default value of @var{box} is 0.
7951
7952 @item boxborderw
7953 Set the width of the border to be drawn around the box using @var{boxcolor}.
7954 The default value of @var{boxborderw} is 0.
7955
7956 @item boxcolor
7957 The color to be used for drawing box around text. For the syntax of this
7958 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
7959
7960 The default value of @var{boxcolor} is "white".
7961
7962 @item line_spacing
7963 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
7964 The default value of @var{line_spacing} is 0.
7965
7966 @item borderw
7967 Set the width of the border to be drawn around the text using @var{bordercolor}.
7968 The default value of @var{borderw} is 0.
7969
7970 @item bordercolor
7971 Set the color to be used for drawing border around text. For the syntax of this
7972 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
7973
7974 The default value of @var{bordercolor} is "black".
7975
7976 @item expansion
7977 Select how the @var{text} is expanded. Can be either @code{none},
7978 @code{strftime} (deprecated) or
7979 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
7980 below for details.
7981
7982 @item basetime
7983 Set a start time for the count. Value is in microseconds. Only applied
7984 in the deprecated strftime expansion mode. To emulate in normal expansion
7985 mode use the @code{pts} function, supplying the start time (in seconds)
7986 as the second argument.
7987
7988 @item fix_bounds
7989 If true, check and fix text coords to avoid clipping.
7990
7991 @item fontcolor
7992 The color to be used for drawing fonts. For the syntax of this option, check
7993 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
7994
7995 The default value of @var{fontcolor} is "black".
7996
7997 @item fontcolor_expr
7998 String which is expanded the same way as @var{text} to obtain dynamic
7999 @var{fontcolor} value. By default this option has empty value and is not
8000 processed. When this option is set, it overrides @var{fontcolor} option.
8001
8002 @item font
8003 The font family to be used for drawing text. By default Sans.
8004
8005 @item fontfile
8006 The font file to be used for drawing text. The path must be included.
8007 This parameter is mandatory if the fontconfig support is disabled.
8008
8009 @item alpha
8010 Draw the text applying alpha blending. The value can
8011 be a number between 0.0 and 1.0.
8012 The expression accepts the same variables @var{x, y} as well.
8013 The default value is 1.
8014 Please see @var{fontcolor_expr}.
8015
8016 @item fontsize
8017 The font size to be used for drawing text.
8018 The default value of @var{fontsize} is 16.
8019
8020 @item text_shaping
8021 If set to 1, attempt to shape the text (for example, reverse the order of
8022 right-to-left text and join Arabic characters) before drawing it.
8023 Otherwise, just draw the text exactly as given.
8024 By default 1 (if supported).
8025
8026 @item ft_load_flags
8027 The flags to be used for loading the fonts.
8028
8029 The flags map the corresponding flags supported by libfreetype, and are
8030 a combination of the following values:
8031 @table @var
8032 @item default
8033 @item no_scale
8034 @item no_hinting
8035 @item render
8036 @item no_bitmap
8037 @item vertical_layout
8038 @item force_autohint
8039 @item crop_bitmap
8040 @item pedantic
8041 @item ignore_global_advance_width
8042 @item no_recurse
8043 @item ignore_transform
8044 @item monochrome
8045 @item linear_design
8046 @item no_autohint
8047 @end table
8048
8049 Default value is "default".
8050
8051 For more information consult the documentation for the FT_LOAD_*
8052 libfreetype flags.
8053
8054 @item shadowcolor
8055 The color to be used for drawing a shadow behind the drawn text. For the
8056 syntax of this option, check the @ref{color syntax,,"Color" section in the
8057 ffmpeg-utils manual,ffmpeg-utils}.
8058
8059 The default value of @var{shadowcolor} is "black".
8060
8061 @item shadowx
8062 @item shadowy
8063 The x and y offsets for the text shadow position with respect to the
8064 position of the text. They can be either positive or negative
8065 values. The default value for both is "0".
8066
8067 @item start_number
8068 The starting frame number for the n/frame_num variable. The default value
8069 is "0".
8070
8071 @item tabsize
8072 The size in number of spaces to use for rendering the tab.
8073 Default value is 4.
8074
8075 @item timecode
8076 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
8077 format. It can be used with or without text parameter. @var{timecode_rate}
8078 option must be specified.
8079
8080 @item timecode_rate, rate, r
8081 Set the timecode frame rate (timecode only). Value will be rounded to nearest
8082 integer. Minimum value is "1".
8083 Drop-frame timecode is supported for frame rates 30 & 60.
8084
8085 @item tc24hmax
8086 If set to 1, the output of the timecode option will wrap around at 24 hours.
8087 Default is 0 (disabled).
8088
8089 @item text
8090 The text string to be drawn. The text must be a sequence of UTF-8
8091 encoded characters.
8092 This parameter is mandatory if no file is specified with the parameter
8093 @var{textfile}.
8094
8095 @item textfile
8096 A text file containing text to be drawn. The text must be a sequence
8097 of UTF-8 encoded characters.
8098
8099 This parameter is mandatory if no text string is specified with the
8100 parameter @var{text}.
8101
8102 If both @var{text} and @var{textfile} are specified, an error is thrown.
8103
8104 @item reload
8105 If set to 1, the @var{textfile} will be reloaded before each frame.
8106 Be sure to update it atomically, or it may be read partially, or even fail.
8107
8108 @item x
8109 @item y
8110 The expressions which specify the offsets where text will be drawn
8111 within the video frame. They are relative to the top/left border of the
8112 output image.
8113
8114 The default value of @var{x} and @var{y} is "0".
8115
8116 See below for the list of accepted constants and functions.
8117 @end table
8118
8119 The parameters for @var{x} and @var{y} are expressions containing the
8120 following constants and functions:
8121
8122 @table @option
8123 @item dar
8124 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
8125
8126 @item hsub
8127 @item vsub
8128 horizontal and vertical chroma subsample values. For example for the
8129 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8130
8131 @item line_h, lh
8132 the height of each text line
8133
8134 @item main_h, h, H
8135 the input height
8136
8137 @item main_w, w, W
8138 the input width
8139
8140 @item max_glyph_a, ascent
8141 the maximum distance from the baseline to the highest/upper grid
8142 coordinate used to place a glyph outline point, for all the rendered
8143 glyphs.
8144 It is a positive value, due to the grid's orientation with the Y axis
8145 upwards.
8146
8147 @item max_glyph_d, descent
8148 the maximum distance from the baseline to the lowest grid coordinate
8149 used to place a glyph outline point, for all the rendered glyphs.
8150 This is a negative value, due to the grid's orientation, with the Y axis
8151 upwards.
8152
8153 @item max_glyph_h
8154 maximum glyph height, that is the maximum height for all the glyphs
8155 contained in the rendered text, it is equivalent to @var{ascent} -
8156 @var{descent}.
8157
8158 @item max_glyph_w
8159 maximum glyph width, that is the maximum width for all the glyphs
8160 contained in the rendered text
8161
8162 @item n
8163 the number of input frame, starting from 0
8164
8165 @item rand(min, max)
8166 return a random number included between @var{min} and @var{max}
8167
8168 @item sar
8169 The input sample aspect ratio.
8170
8171 @item t
8172 timestamp expressed in seconds, NAN if the input timestamp is unknown
8173
8174 @item text_h, th
8175 the height of the rendered text
8176
8177 @item text_w, tw
8178 the width of the rendered text
8179
8180 @item x
8181 @item y
8182 the x and y offset coordinates where the text is drawn.
8183
8184 These parameters allow the @var{x} and @var{y} expressions to refer
8185 each other, so you can for example specify @code{y=x/dar}.
8186 @end table
8187
8188 @anchor{drawtext_expansion}
8189 @subsection Text expansion
8190
8191 If @option{expansion} is set to @code{strftime},
8192 the filter recognizes strftime() sequences in the provided text and
8193 expands them accordingly. Check the documentation of strftime(). This
8194 feature is deprecated.
8195
8196 If @option{expansion} is set to @code{none}, the text is printed verbatim.
8197
8198 If @option{expansion} is set to @code{normal} (which is the default),
8199 the following expansion mechanism is used.
8200
8201 The backslash character @samp{\}, followed by any character, always expands to
8202 the second character.
8203
8204 Sequences of the form @code{%@{...@}} are expanded. The text between the
8205 braces is a function name, possibly followed by arguments separated by ':'.
8206 If the arguments contain special characters or delimiters (':' or '@}'),
8207 they should be escaped.
8208
8209 Note that they probably must also be escaped as the value for the
8210 @option{text} option in the filter argument string and as the filter
8211 argument in the filtergraph description, and possibly also for the shell,
8212 that makes up to four levels of escaping; using a text file avoids these
8213 problems.
8214
8215 The following functions are available:
8216
8217 @table @command
8218
8219 @item expr, e
8220 The expression evaluation result.
8221
8222 It must take one argument specifying the expression to be evaluated,
8223 which accepts the same constants and functions as the @var{x} and
8224 @var{y} values. Note that not all constants should be used, for
8225 example the text size is not known when evaluating the expression, so
8226 the constants @var{text_w} and @var{text_h} will have an undefined
8227 value.
8228
8229 @item expr_int_format, eif
8230 Evaluate the expression's value and output as formatted integer.
8231
8232 The first argument is the expression to be evaluated, just as for the @var{expr} function.
8233 The second argument specifies the output format. Allowed values are @samp{x},
8234 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
8235 @code{printf} function.
8236 The third parameter is optional and sets the number of positions taken by the output.
8237 It can be used to add padding with zeros from the left.
8238
8239 @item gmtime
8240 The time at which the filter is running, expressed in UTC.
8241 It can accept an argument: a strftime() format string.
8242
8243 @item localtime
8244 The time at which the filter is running, expressed in the local time zone.
8245 It can accept an argument: a strftime() format string.
8246
8247 @item metadata
8248 Frame metadata. Takes one or two arguments.
8249
8250 The first argument is mandatory and specifies the metadata key.
8251
8252 The second argument is optional and specifies a default value, used when the
8253 metadata key is not found or empty.
8254
8255 @item n, frame_num
8256 The frame number, starting from 0.
8257
8258 @item pict_type
8259 A 1 character description of the current picture type.
8260
8261 @item pts
8262 The timestamp of the current frame.
8263 It can take up to three arguments.
8264
8265 The first argument is the format of the timestamp; it defaults to @code{flt}
8266 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
8267 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
8268 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
8269 @code{localtime} stands for the timestamp of the frame formatted as
8270 local time zone time.
8271
8272 The second argument is an offset added to the timestamp.
8273
8274 If the format is set to @code{hms}, a third argument @code{24HH} may be
8275 supplied to present the hour part of the formatted timestamp in 24h format
8276 (00-23).
8277
8278 If the format is set to @code{localtime} or @code{gmtime},
8279 a third argument may be supplied: a strftime() format string.
8280 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
8281 @end table
8282
8283 @subsection Examples
8284
8285 @itemize
8286 @item
8287 Draw "Test Text" with font FreeSerif, using the default values for the
8288 optional parameters.
8289
8290 @example
8291 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
8292 @end example
8293
8294 @item
8295 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
8296 and y=50 (counting from the top-left corner of the screen), text is
8297 yellow with a red box around it. Both the text and the box have an
8298 opacity of 20%.
8299
8300 @example
8301 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
8302           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
8303 @end example
8304
8305 Note that the double quotes are not necessary if spaces are not used
8306 within the parameter list.
8307
8308 @item
8309 Show the text at the center of the video frame:
8310 @example
8311 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
8312 @end example
8313
8314 @item
8315 Show the text at a random position, switching to a new position every 30 seconds:
8316 @example
8317 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)"
8318 @end example
8319
8320 @item
8321 Show a text line sliding from right to left in the last row of the video
8322 frame. The file @file{LONG_LINE} is assumed to contain a single line
8323 with no newlines.
8324 @example
8325 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
8326 @end example
8327
8328 @item
8329 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
8330 @example
8331 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
8332 @end example
8333
8334 @item
8335 Draw a single green letter "g", at the center of the input video.
8336 The glyph baseline is placed at half screen height.
8337 @example
8338 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
8339 @end example
8340
8341 @item
8342 Show text for 1 second every 3 seconds:
8343 @example
8344 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
8345 @end example
8346
8347 @item
8348 Use fontconfig to set the font. Note that the colons need to be escaped.
8349 @example
8350 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
8351 @end example
8352
8353 @item
8354 Print the date of a real-time encoding (see strftime(3)):
8355 @example
8356 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
8357 @end example
8358
8359 @item
8360 Show text fading in and out (appearing/disappearing):
8361 @example
8362 #!/bin/sh
8363 DS=1.0 # display start
8364 DE=10.0 # display end
8365 FID=1.5 # fade in duration
8366 FOD=5 # fade out duration
8367 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 @}"
8368 @end example
8369
8370 @item
8371 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
8372 and the @option{fontsize} value are included in the @option{y} offset.
8373 @example
8374 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
8375 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
8376 @end example
8377
8378 @end itemize
8379
8380 For more information about libfreetype, check:
8381 @url{http://www.freetype.org/}.
8382
8383 For more information about fontconfig, check:
8384 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
8385
8386 For more information about libfribidi, check:
8387 @url{http://fribidi.org/}.
8388
8389 @section edgedetect
8390
8391 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
8392
8393 The filter accepts the following options:
8394
8395 @table @option
8396 @item low
8397 @item high
8398 Set low and high threshold values used by the Canny thresholding
8399 algorithm.
8400
8401 The high threshold selects the "strong" edge pixels, which are then
8402 connected through 8-connectivity with the "weak" edge pixels selected
8403 by the low threshold.
8404
8405 @var{low} and @var{high} threshold values must be chosen in the range
8406 [0,1], and @var{low} should be lesser or equal to @var{high}.
8407
8408 Default value for @var{low} is @code{20/255}, and default value for @var{high}
8409 is @code{50/255}.
8410
8411 @item mode
8412 Define the drawing mode.
8413
8414 @table @samp
8415 @item wires
8416 Draw white/gray wires on black background.
8417
8418 @item colormix
8419 Mix the colors to create a paint/cartoon effect.
8420
8421 @item canny
8422 Apply Canny edge detector on all selected planes.
8423 @end table
8424 Default value is @var{wires}.
8425
8426 @item planes
8427 Select planes for filtering. By default all available planes are filtered.
8428 @end table
8429
8430 @subsection Examples
8431
8432 @itemize
8433 @item
8434 Standard edge detection with custom values for the hysteresis thresholding:
8435 @example
8436 edgedetect=low=0.1:high=0.4
8437 @end example
8438
8439 @item
8440 Painting effect without thresholding:
8441 @example
8442 edgedetect=mode=colormix:high=0
8443 @end example
8444 @end itemize
8445
8446 @section eq
8447 Set brightness, contrast, saturation and approximate gamma adjustment.
8448
8449 The filter accepts the following options:
8450
8451 @table @option
8452 @item contrast
8453 Set the contrast expression. The value must be a float value in range
8454 @code{-2.0} to @code{2.0}. The default value is "1".
8455
8456 @item brightness
8457 Set the brightness expression. The value must be a float value in
8458 range @code{-1.0} to @code{1.0}. The default value is "0".
8459
8460 @item saturation
8461 Set the saturation expression. The value must be a float in
8462 range @code{0.0} to @code{3.0}. The default value is "1".
8463
8464 @item gamma
8465 Set the gamma expression. The value must be a float in range
8466 @code{0.1} to @code{10.0}.  The default value is "1".
8467
8468 @item gamma_r
8469 Set the gamma expression for red. The value must be a float in
8470 range @code{0.1} to @code{10.0}. The default value is "1".
8471
8472 @item gamma_g
8473 Set the gamma expression for green. The value must be a float in range
8474 @code{0.1} to @code{10.0}. The default value is "1".
8475
8476 @item gamma_b
8477 Set the gamma expression for blue. The value must be a float in range
8478 @code{0.1} to @code{10.0}. The default value is "1".
8479
8480 @item gamma_weight
8481 Set the gamma weight expression. It can be used to reduce the effect
8482 of a high gamma value on bright image areas, e.g. keep them from
8483 getting overamplified and just plain white. The value must be a float
8484 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
8485 gamma correction all the way down while @code{1.0} leaves it at its
8486 full strength. Default is "1".
8487
8488 @item eval
8489 Set when the expressions for brightness, contrast, saturation and
8490 gamma expressions are evaluated.
8491
8492 It accepts the following values:
8493 @table @samp
8494 @item init
8495 only evaluate expressions once during the filter initialization or
8496 when a command is processed
8497
8498 @item frame
8499 evaluate expressions for each incoming frame
8500 @end table
8501
8502 Default value is @samp{init}.
8503 @end table
8504
8505 The expressions accept the following parameters:
8506 @table @option
8507 @item n
8508 frame count of the input frame starting from 0
8509
8510 @item pos
8511 byte position of the corresponding packet in the input file, NAN if
8512 unspecified
8513
8514 @item r
8515 frame rate of the input video, NAN if the input frame rate is unknown
8516
8517 @item t
8518 timestamp expressed in seconds, NAN if the input timestamp is unknown
8519 @end table
8520
8521 @subsection Commands
8522 The filter supports the following commands:
8523
8524 @table @option
8525 @item contrast
8526 Set the contrast expression.
8527
8528 @item brightness
8529 Set the brightness expression.
8530
8531 @item saturation
8532 Set the saturation expression.
8533
8534 @item gamma
8535 Set the gamma expression.
8536
8537 @item gamma_r
8538 Set the gamma_r expression.
8539
8540 @item gamma_g
8541 Set gamma_g expression.
8542
8543 @item gamma_b
8544 Set gamma_b expression.
8545
8546 @item gamma_weight
8547 Set gamma_weight expression.
8548
8549 The command accepts the same syntax of the corresponding option.
8550
8551 If the specified expression is not valid, it is kept at its current
8552 value.
8553
8554 @end table
8555
8556 @section erosion
8557
8558 Apply erosion effect to the video.
8559
8560 This filter replaces the pixel by the local(3x3) minimum.
8561
8562 It accepts the following options:
8563
8564 @table @option
8565 @item threshold0
8566 @item threshold1
8567 @item threshold2
8568 @item threshold3
8569 Limit the maximum change for each plane, default is 65535.
8570 If 0, plane will remain unchanged.
8571
8572 @item coordinates
8573 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8574 pixels are used.
8575
8576 Flags to local 3x3 coordinates maps like this:
8577
8578     1 2 3
8579     4   5
8580     6 7 8
8581 @end table
8582
8583 @section extractplanes
8584
8585 Extract color channel components from input video stream into
8586 separate grayscale video streams.
8587
8588 The filter accepts the following option:
8589
8590 @table @option
8591 @item planes
8592 Set plane(s) to extract.
8593
8594 Available values for planes are:
8595 @table @samp
8596 @item y
8597 @item u
8598 @item v
8599 @item a
8600 @item r
8601 @item g
8602 @item b
8603 @end table
8604
8605 Choosing planes not available in the input will result in an error.
8606 That means you cannot select @code{r}, @code{g}, @code{b} planes
8607 with @code{y}, @code{u}, @code{v} planes at same time.
8608 @end table
8609
8610 @subsection Examples
8611
8612 @itemize
8613 @item
8614 Extract luma, u and v color channel component from input video frame
8615 into 3 grayscale outputs:
8616 @example
8617 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
8618 @end example
8619 @end itemize
8620
8621 @section elbg
8622
8623 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
8624
8625 For each input image, the filter will compute the optimal mapping from
8626 the input to the output given the codebook length, that is the number
8627 of distinct output colors.
8628
8629 This filter accepts the following options.
8630
8631 @table @option
8632 @item codebook_length, l
8633 Set codebook length. The value must be a positive integer, and
8634 represents the number of distinct output colors. Default value is 256.
8635
8636 @item nb_steps, n
8637 Set the maximum number of iterations to apply for computing the optimal
8638 mapping. The higher the value the better the result and the higher the
8639 computation time. Default value is 1.
8640
8641 @item seed, s
8642 Set a random seed, must be an integer included between 0 and
8643 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
8644 will try to use a good random seed on a best effort basis.
8645
8646 @item pal8
8647 Set pal8 output pixel format. This option does not work with codebook
8648 length greater than 256.
8649 @end table
8650
8651 @section entropy
8652
8653 Measure graylevel entropy in histogram of color channels of video frames.
8654
8655 It accepts the following parameters:
8656
8657 @table @option
8658 @item mode
8659 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
8660
8661 @var{diff} mode measures entropy of histogram delta values, absolute differences
8662 between neighbour histogram values.
8663 @end table
8664
8665 @section fade
8666
8667 Apply a fade-in/out effect to the input video.
8668
8669 It accepts the following parameters:
8670
8671 @table @option
8672 @item type, t
8673 The effect type can be either "in" for a fade-in, or "out" for a fade-out
8674 effect.
8675 Default is @code{in}.
8676
8677 @item start_frame, s
8678 Specify the number of the frame to start applying the fade
8679 effect at. Default is 0.
8680
8681 @item nb_frames, n
8682 The number of frames that the fade effect lasts. At the end of the
8683 fade-in effect, the output video will have the same intensity as the input video.
8684 At the end of the fade-out transition, the output video will be filled with the
8685 selected @option{color}.
8686 Default is 25.
8687
8688 @item alpha
8689 If set to 1, fade only alpha channel, if one exists on the input.
8690 Default value is 0.
8691
8692 @item start_time, st
8693 Specify the timestamp (in seconds) of the frame to start to apply the fade
8694 effect. If both start_frame and start_time are specified, the fade will start at
8695 whichever comes last.  Default is 0.
8696
8697 @item duration, d
8698 The number of seconds for which the fade effect has to last. At the end of the
8699 fade-in effect the output video will have the same intensity as the input video,
8700 at the end of the fade-out transition the output video will be filled with the
8701 selected @option{color}.
8702 If both duration and nb_frames are specified, duration is used. Default is 0
8703 (nb_frames is used by default).
8704
8705 @item color, c
8706 Specify the color of the fade. Default is "black".
8707 @end table
8708
8709 @subsection Examples
8710
8711 @itemize
8712 @item
8713 Fade in the first 30 frames of video:
8714 @example
8715 fade=in:0:30
8716 @end example
8717
8718 The command above is equivalent to:
8719 @example
8720 fade=t=in:s=0:n=30
8721 @end example
8722
8723 @item
8724 Fade out the last 45 frames of a 200-frame video:
8725 @example
8726 fade=out:155:45
8727 fade=type=out:start_frame=155:nb_frames=45
8728 @end example
8729
8730 @item
8731 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
8732 @example
8733 fade=in:0:25, fade=out:975:25
8734 @end example
8735
8736 @item
8737 Make the first 5 frames yellow, then fade in from frame 5-24:
8738 @example
8739 fade=in:5:20:color=yellow
8740 @end example
8741
8742 @item
8743 Fade in alpha over first 25 frames of video:
8744 @example
8745 fade=in:0:25:alpha=1
8746 @end example
8747
8748 @item
8749 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
8750 @example
8751 fade=t=in:st=5.5:d=0.5
8752 @end example
8753
8754 @end itemize
8755
8756 @section fftfilt
8757 Apply arbitrary expressions to samples in frequency domain
8758
8759 @table @option
8760 @item dc_Y
8761 Adjust the dc value (gain) of the luma plane of the image. The filter
8762 accepts an integer value in range @code{0} to @code{1000}. The default
8763 value is set to @code{0}.
8764
8765 @item dc_U
8766 Adjust the dc value (gain) of the 1st chroma plane of the image. The
8767 filter accepts an integer value in range @code{0} to @code{1000}. The
8768 default value is set to @code{0}.
8769
8770 @item dc_V
8771 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
8772 filter accepts an integer value in range @code{0} to @code{1000}. The
8773 default value is set to @code{0}.
8774
8775 @item weight_Y
8776 Set the frequency domain weight expression for the luma plane.
8777
8778 @item weight_U
8779 Set the frequency domain weight expression for the 1st chroma plane.
8780
8781 @item weight_V
8782 Set the frequency domain weight expression for the 2nd chroma plane.
8783
8784 @item eval
8785 Set when the expressions are evaluated.
8786
8787 It accepts the following values:
8788 @table @samp
8789 @item init
8790 Only evaluate expressions once during the filter initialization.
8791
8792 @item frame
8793 Evaluate expressions for each incoming frame.
8794 @end table
8795
8796 Default value is @samp{init}.
8797
8798 The filter accepts the following variables:
8799 @item X
8800 @item Y
8801 The coordinates of the current sample.
8802
8803 @item W
8804 @item H
8805 The width and height of the image.
8806
8807 @item N
8808 The number of input frame, starting from 0.
8809 @end table
8810
8811 @subsection Examples
8812
8813 @itemize
8814 @item
8815 High-pass:
8816 @example
8817 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
8818 @end example
8819
8820 @item
8821 Low-pass:
8822 @example
8823 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
8824 @end example
8825
8826 @item
8827 Sharpen:
8828 @example
8829 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
8830 @end example
8831
8832 @item
8833 Blur:
8834 @example
8835 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
8836 @end example
8837
8838 @end itemize
8839
8840 @section fftdnoiz
8841 Denoise frames using 3D FFT (frequency domain filtering).
8842
8843 The filter accepts the following options:
8844
8845 @table @option
8846 @item sigma
8847 Set the noise sigma constant. This sets denoising strength.
8848 Default value is 1. Allowed range is from 0 to 30.
8849 Using very high sigma with low overlap may give blocking artifacts.
8850
8851 @item amount
8852 Set amount of denoising. By default all detected noise is reduced.
8853 Default value is 1. Allowed range is from 0 to 1.
8854
8855 @item block
8856 Set size of block, Default is 4, can be 3, 4, 5 or 6.
8857 Actual size of block in pixels is 2 to power of @var{block}, so by default
8858 block size in pixels is 2^4 which is 16.
8859
8860 @item overlap
8861 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
8862
8863 @item prev
8864 Set number of previous frames to use for denoising. By default is set to 0.
8865
8866 @item next
8867 Set number of next frames to to use for denoising. By default is set to 0.
8868
8869 @item planes
8870 Set planes which will be filtered, by default are all available filtered
8871 except alpha.
8872 @end table
8873
8874 @section field
8875
8876 Extract a single field from an interlaced image using stride
8877 arithmetic to avoid wasting CPU time. The output frames are marked as
8878 non-interlaced.
8879
8880 The filter accepts the following options:
8881
8882 @table @option
8883 @item type
8884 Specify whether to extract the top (if the value is @code{0} or
8885 @code{top}) or the bottom field (if the value is @code{1} or
8886 @code{bottom}).
8887 @end table
8888
8889 @section fieldhint
8890
8891 Create new frames by copying the top and bottom fields from surrounding frames
8892 supplied as numbers by the hint file.
8893
8894 @table @option
8895 @item hint
8896 Set file containing hints: absolute/relative frame numbers.
8897
8898 There must be one line for each frame in a clip. Each line must contain two
8899 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
8900 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
8901 is current frame number for @code{absolute} mode or out of [-1, 1] range
8902 for @code{relative} mode. First number tells from which frame to pick up top
8903 field and second number tells from which frame to pick up bottom field.
8904
8905 If optionally followed by @code{+} output frame will be marked as interlaced,
8906 else if followed by @code{-} output frame will be marked as progressive, else
8907 it will be marked same as input frame.
8908 If line starts with @code{#} or @code{;} that line is skipped.
8909
8910 @item mode
8911 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
8912 @end table
8913
8914 Example of first several lines of @code{hint} file for @code{relative} mode:
8915 @example
8916 0,0 - # first frame
8917 1,0 - # second frame, use third's frame top field and second's frame bottom field
8918 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
8919 1,0 -
8920 0,0 -
8921 0,0 -
8922 1,0 -
8923 1,0 -
8924 1,0 -
8925 0,0 -
8926 0,0 -
8927 1,0 -
8928 1,0 -
8929 1,0 -
8930 0,0 -
8931 @end example
8932
8933 @section fieldmatch
8934
8935 Field matching filter for inverse telecine. It is meant to reconstruct the
8936 progressive frames from a telecined stream. The filter does not drop duplicated
8937 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
8938 followed by a decimation filter such as @ref{decimate} in the filtergraph.
8939
8940 The separation of the field matching and the decimation is notably motivated by
8941 the possibility of inserting a de-interlacing filter fallback between the two.
8942 If the source has mixed telecined and real interlaced content,
8943 @code{fieldmatch} will not be able to match fields for the interlaced parts.
8944 But these remaining combed frames will be marked as interlaced, and thus can be
8945 de-interlaced by a later filter such as @ref{yadif} before decimation.
8946
8947 In addition to the various configuration options, @code{fieldmatch} can take an
8948 optional second stream, activated through the @option{ppsrc} option. If
8949 enabled, the frames reconstruction will be based on the fields and frames from
8950 this second stream. This allows the first input to be pre-processed in order to
8951 help the various algorithms of the filter, while keeping the output lossless
8952 (assuming the fields are matched properly). Typically, a field-aware denoiser,
8953 or brightness/contrast adjustments can help.
8954
8955 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
8956 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
8957 which @code{fieldmatch} is based on. While the semantic and usage are very
8958 close, some behaviour and options names can differ.
8959
8960 The @ref{decimate} filter currently only works for constant frame rate input.
8961 If your input has mixed telecined (30fps) and progressive content with a lower
8962 framerate like 24fps use the following filterchain to produce the necessary cfr
8963 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
8964
8965 The filter accepts the following options:
8966
8967 @table @option
8968 @item order
8969 Specify the assumed field order of the input stream. Available values are:
8970
8971 @table @samp
8972 @item auto
8973 Auto detect parity (use FFmpeg's internal parity value).
8974 @item bff
8975 Assume bottom field first.
8976 @item tff
8977 Assume top field first.
8978 @end table
8979
8980 Note that it is sometimes recommended not to trust the parity announced by the
8981 stream.
8982
8983 Default value is @var{auto}.
8984
8985 @item mode
8986 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
8987 sense that it won't risk creating jerkiness due to duplicate frames when
8988 possible, but if there are bad edits or blended fields it will end up
8989 outputting combed frames when a good match might actually exist. On the other
8990 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
8991 but will almost always find a good frame if there is one. The other values are
8992 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
8993 jerkiness and creating duplicate frames versus finding good matches in sections
8994 with bad edits, orphaned fields, blended fields, etc.
8995
8996 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
8997
8998 Available values are:
8999
9000 @table @samp
9001 @item pc
9002 2-way matching (p/c)
9003 @item pc_n
9004 2-way matching, and trying 3rd match if still combed (p/c + n)
9005 @item pc_u
9006 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
9007 @item pc_n_ub
9008 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
9009 still combed (p/c + n + u/b)
9010 @item pcn
9011 3-way matching (p/c/n)
9012 @item pcn_ub
9013 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
9014 detected as combed (p/c/n + u/b)
9015 @end table
9016
9017 The parenthesis at the end indicate the matches that would be used for that
9018 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
9019 @var{top}).
9020
9021 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
9022 the slowest.
9023
9024 Default value is @var{pc_n}.
9025
9026 @item ppsrc
9027 Mark the main input stream as a pre-processed input, and enable the secondary
9028 input stream as the clean source to pick the fields from. See the filter
9029 introduction for more details. It is similar to the @option{clip2} feature from
9030 VFM/TFM.
9031
9032 Default value is @code{0} (disabled).
9033
9034 @item field
9035 Set the field to match from. It is recommended to set this to the same value as
9036 @option{order} unless you experience matching failures with that setting. In
9037 certain circumstances changing the field that is used to match from can have a
9038 large impact on matching performance. Available values are:
9039
9040 @table @samp
9041 @item auto
9042 Automatic (same value as @option{order}).
9043 @item bottom
9044 Match from the bottom field.
9045 @item top
9046 Match from the top field.
9047 @end table
9048
9049 Default value is @var{auto}.
9050
9051 @item mchroma
9052 Set whether or not chroma is included during the match comparisons. In most
9053 cases it is recommended to leave this enabled. You should set this to @code{0}
9054 only if your clip has bad chroma problems such as heavy rainbowing or other
9055 artifacts. Setting this to @code{0} could also be used to speed things up at
9056 the cost of some accuracy.
9057
9058 Default value is @code{1}.
9059
9060 @item y0
9061 @item y1
9062 These define an exclusion band which excludes the lines between @option{y0} and
9063 @option{y1} from being included in the field matching decision. An exclusion
9064 band can be used to ignore subtitles, a logo, or other things that may
9065 interfere with the matching. @option{y0} sets the starting scan line and
9066 @option{y1} sets the ending line; all lines in between @option{y0} and
9067 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
9068 @option{y0} and @option{y1} to the same value will disable the feature.
9069 @option{y0} and @option{y1} defaults to @code{0}.
9070
9071 @item scthresh
9072 Set the scene change detection threshold as a percentage of maximum change on
9073 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
9074 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
9075 @option{scthresh} is @code{[0.0, 100.0]}.
9076
9077 Default value is @code{12.0}.
9078
9079 @item combmatch
9080 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
9081 account the combed scores of matches when deciding what match to use as the
9082 final match. Available values are:
9083
9084 @table @samp
9085 @item none
9086 No final matching based on combed scores.
9087 @item sc
9088 Combed scores are only used when a scene change is detected.
9089 @item full
9090 Use combed scores all the time.
9091 @end table
9092
9093 Default is @var{sc}.
9094
9095 @item combdbg
9096 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
9097 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
9098 Available values are:
9099
9100 @table @samp
9101 @item none
9102 No forced calculation.
9103 @item pcn
9104 Force p/c/n calculations.
9105 @item pcnub
9106 Force p/c/n/u/b calculations.
9107 @end table
9108
9109 Default value is @var{none}.
9110
9111 @item cthresh
9112 This is the area combing threshold used for combed frame detection. This
9113 essentially controls how "strong" or "visible" combing must be to be detected.
9114 Larger values mean combing must be more visible and smaller values mean combing
9115 can be less visible or strong and still be detected. Valid settings are from
9116 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
9117 be detected as combed). This is basically a pixel difference value. A good
9118 range is @code{[8, 12]}.
9119
9120 Default value is @code{9}.
9121
9122 @item chroma
9123 Sets whether or not chroma is considered in the combed frame decision.  Only
9124 disable this if your source has chroma problems (rainbowing, etc.) that are
9125 causing problems for the combed frame detection with chroma enabled. Actually,
9126 using @option{chroma}=@var{0} is usually more reliable, except for the case
9127 where there is chroma only combing in the source.
9128
9129 Default value is @code{0}.
9130
9131 @item blockx
9132 @item blocky
9133 Respectively set the x-axis and y-axis size of the window used during combed
9134 frame detection. This has to do with the size of the area in which
9135 @option{combpel} pixels are required to be detected as combed for a frame to be
9136 declared combed. See the @option{combpel} parameter description for more info.
9137 Possible values are any number that is a power of 2 starting at 4 and going up
9138 to 512.
9139
9140 Default value is @code{16}.
9141
9142 @item combpel
9143 The number of combed pixels inside any of the @option{blocky} by
9144 @option{blockx} size blocks on the frame for the frame to be detected as
9145 combed. While @option{cthresh} controls how "visible" the combing must be, this
9146 setting controls "how much" combing there must be in any localized area (a
9147 window defined by the @option{blockx} and @option{blocky} settings) on the
9148 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
9149 which point no frames will ever be detected as combed). This setting is known
9150 as @option{MI} in TFM/VFM vocabulary.
9151
9152 Default value is @code{80}.
9153 @end table
9154
9155 @anchor{p/c/n/u/b meaning}
9156 @subsection p/c/n/u/b meaning
9157
9158 @subsubsection p/c/n
9159
9160 We assume the following telecined stream:
9161
9162 @example
9163 Top fields:     1 2 2 3 4
9164 Bottom fields:  1 2 3 4 4
9165 @end example
9166
9167 The numbers correspond to the progressive frame the fields relate to. Here, the
9168 first two frames are progressive, the 3rd and 4th are combed, and so on.
9169
9170 When @code{fieldmatch} is configured to run a matching from bottom
9171 (@option{field}=@var{bottom}) this is how this input stream get transformed:
9172
9173 @example
9174 Input stream:
9175                 T     1 2 2 3 4
9176                 B     1 2 3 4 4   <-- matching reference
9177
9178 Matches:              c c n n c
9179
9180 Output stream:
9181                 T     1 2 3 4 4
9182                 B     1 2 3 4 4
9183 @end example
9184
9185 As a result of the field matching, we can see that some frames get duplicated.
9186 To perform a complete inverse telecine, you need to rely on a decimation filter
9187 after this operation. See for instance the @ref{decimate} filter.
9188
9189 The same operation now matching from top fields (@option{field}=@var{top})
9190 looks like this:
9191
9192 @example
9193 Input stream:
9194                 T     1 2 2 3 4   <-- matching reference
9195                 B     1 2 3 4 4
9196
9197 Matches:              c c p p c
9198
9199 Output stream:
9200                 T     1 2 2 3 4
9201                 B     1 2 2 3 4
9202 @end example
9203
9204 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
9205 basically, they refer to the frame and field of the opposite parity:
9206
9207 @itemize
9208 @item @var{p} matches the field of the opposite parity in the previous frame
9209 @item @var{c} matches the field of the opposite parity in the current frame
9210 @item @var{n} matches the field of the opposite parity in the next frame
9211 @end itemize
9212
9213 @subsubsection u/b
9214
9215 The @var{u} and @var{b} matching are a bit special in the sense that they match
9216 from the opposite parity flag. In the following examples, we assume that we are
9217 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
9218 'x' is placed above and below each matched fields.
9219
9220 With bottom matching (@option{field}=@var{bottom}):
9221 @example
9222 Match:           c         p           n          b          u
9223
9224                  x       x               x        x          x
9225   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9226   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9227                  x         x           x        x              x
9228
9229 Output frames:
9230                  2          1          2          2          2
9231                  2          2          2          1          3
9232 @end example
9233
9234 With top matching (@option{field}=@var{top}):
9235 @example
9236 Match:           c         p           n          b          u
9237
9238                  x         x           x        x              x
9239   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9240   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9241                  x       x               x        x          x
9242
9243 Output frames:
9244                  2          2          2          1          2
9245                  2          1          3          2          2
9246 @end example
9247
9248 @subsection Examples
9249
9250 Simple IVTC of a top field first telecined stream:
9251 @example
9252 fieldmatch=order=tff:combmatch=none, decimate
9253 @end example
9254
9255 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
9256 @example
9257 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
9258 @end example
9259
9260 @section fieldorder
9261
9262 Transform the field order of the input video.
9263
9264 It accepts the following parameters:
9265
9266 @table @option
9267
9268 @item order
9269 The output field order. Valid values are @var{tff} for top field first or @var{bff}
9270 for bottom field first.
9271 @end table
9272
9273 The default value is @samp{tff}.
9274
9275 The transformation is done by shifting the picture content up or down
9276 by one line, and filling the remaining line with appropriate picture content.
9277 This method is consistent with most broadcast field order converters.
9278
9279 If the input video is not flagged as being interlaced, or it is already
9280 flagged as being of the required output field order, then this filter does
9281 not alter the incoming video.
9282
9283 It is very useful when converting to or from PAL DV material,
9284 which is bottom field first.
9285
9286 For example:
9287 @example
9288 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
9289 @end example
9290
9291 @section fifo, afifo
9292
9293 Buffer input images and send them when they are requested.
9294
9295 It is mainly useful when auto-inserted by the libavfilter
9296 framework.
9297
9298 It does not take parameters.
9299
9300 @section fillborders
9301
9302 Fill borders of the input video, without changing video stream dimensions.
9303 Sometimes video can have garbage at the four edges and you may not want to
9304 crop video input to keep size multiple of some number.
9305
9306 This filter accepts the following options:
9307
9308 @table @option
9309 @item left
9310 Number of pixels to fill from left border.
9311
9312 @item right
9313 Number of pixels to fill from right border.
9314
9315 @item top
9316 Number of pixels to fill from top border.
9317
9318 @item bottom
9319 Number of pixels to fill from bottom border.
9320
9321 @item mode
9322 Set fill mode.
9323
9324 It accepts the following values:
9325 @table @samp
9326 @item smear
9327 fill pixels using outermost pixels
9328
9329 @item mirror
9330 fill pixels using mirroring
9331
9332 @item fixed
9333 fill pixels with constant value
9334 @end table
9335
9336 Default is @var{smear}.
9337
9338 @item color
9339 Set color for pixels in fixed mode. Default is @var{black}.
9340 @end table
9341
9342 @section find_rect
9343
9344 Find a rectangular object
9345
9346 It accepts the following options:
9347
9348 @table @option
9349 @item object
9350 Filepath of the object image, needs to be in gray8.
9351
9352 @item threshold
9353 Detection threshold, default is 0.5.
9354
9355 @item mipmaps
9356 Number of mipmaps, default is 3.
9357
9358 @item xmin, ymin, xmax, ymax
9359 Specifies the rectangle in which to search.
9360 @end table
9361
9362 @subsection Examples
9363
9364 @itemize
9365 @item
9366 Generate a representative palette of a given video using @command{ffmpeg}:
9367 @example
9368 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9369 @end example
9370 @end itemize
9371
9372 @section cover_rect
9373
9374 Cover a rectangular object
9375
9376 It accepts the following options:
9377
9378 @table @option
9379 @item cover
9380 Filepath of the optional cover image, needs to be in yuv420.
9381
9382 @item mode
9383 Set covering mode.
9384
9385 It accepts the following values:
9386 @table @samp
9387 @item cover
9388 cover it by the supplied image
9389 @item blur
9390 cover it by interpolating the surrounding pixels
9391 @end table
9392
9393 Default value is @var{blur}.
9394 @end table
9395
9396 @subsection Examples
9397
9398 @itemize
9399 @item
9400 Generate a representative palette of a given video using @command{ffmpeg}:
9401 @example
9402 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9403 @end example
9404 @end itemize
9405
9406 @section floodfill
9407
9408 Flood area with values of same pixel components with another values.
9409
9410 It accepts the following options:
9411 @table @option
9412 @item x
9413 Set pixel x coordinate.
9414
9415 @item y
9416 Set pixel y coordinate.
9417
9418 @item s0
9419 Set source #0 component value.
9420
9421 @item s1
9422 Set source #1 component value.
9423
9424 @item s2
9425 Set source #2 component value.
9426
9427 @item s3
9428 Set source #3 component value.
9429
9430 @item d0
9431 Set destination #0 component value.
9432
9433 @item d1
9434 Set destination #1 component value.
9435
9436 @item d2
9437 Set destination #2 component value.
9438
9439 @item d3
9440 Set destination #3 component value.
9441 @end table
9442
9443 @anchor{format}
9444 @section format
9445
9446 Convert the input video to one of the specified pixel formats.
9447 Libavfilter will try to pick one that is suitable as input to
9448 the next filter.
9449
9450 It accepts the following parameters:
9451 @table @option
9452
9453 @item pix_fmts
9454 A '|'-separated list of pixel format names, such as
9455 "pix_fmts=yuv420p|monow|rgb24".
9456
9457 @end table
9458
9459 @subsection Examples
9460
9461 @itemize
9462 @item
9463 Convert the input video to the @var{yuv420p} format
9464 @example
9465 format=pix_fmts=yuv420p
9466 @end example
9467
9468 Convert the input video to any of the formats in the list
9469 @example
9470 format=pix_fmts=yuv420p|yuv444p|yuv410p
9471 @end example
9472 @end itemize
9473
9474 @anchor{fps}
9475 @section fps
9476
9477 Convert the video to specified constant frame rate by duplicating or dropping
9478 frames as necessary.
9479
9480 It accepts the following parameters:
9481 @table @option
9482
9483 @item fps
9484 The desired output frame rate. The default is @code{25}.
9485
9486 @item start_time
9487 Assume the first PTS should be the given value, in seconds. This allows for
9488 padding/trimming at the start of stream. By default, no assumption is made
9489 about the first frame's expected PTS, so no padding or trimming is done.
9490 For example, this could be set to 0 to pad the beginning with duplicates of
9491 the first frame if a video stream starts after the audio stream or to trim any
9492 frames with a negative PTS.
9493
9494 @item round
9495 Timestamp (PTS) rounding method.
9496
9497 Possible values are:
9498 @table @option
9499 @item zero
9500 round towards 0
9501 @item inf
9502 round away from 0
9503 @item down
9504 round towards -infinity
9505 @item up
9506 round towards +infinity
9507 @item near
9508 round to nearest
9509 @end table
9510 The default is @code{near}.
9511
9512 @item eof_action
9513 Action performed when reading the last frame.
9514
9515 Possible values are:
9516 @table @option
9517 @item round
9518 Use same timestamp rounding method as used for other frames.
9519 @item pass
9520 Pass through last frame if input duration has not been reached yet.
9521 @end table
9522 The default is @code{round}.
9523
9524 @end table
9525
9526 Alternatively, the options can be specified as a flat string:
9527 @var{fps}[:@var{start_time}[:@var{round}]].
9528
9529 See also the @ref{setpts} filter.
9530
9531 @subsection Examples
9532
9533 @itemize
9534 @item
9535 A typical usage in order to set the fps to 25:
9536 @example
9537 fps=fps=25
9538 @end example
9539
9540 @item
9541 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
9542 @example
9543 fps=fps=film:round=near
9544 @end example
9545 @end itemize
9546
9547 @section framepack
9548
9549 Pack two different video streams into a stereoscopic video, setting proper
9550 metadata on supported codecs. The two views should have the same size and
9551 framerate and processing will stop when the shorter video ends. Please note
9552 that you may conveniently adjust view properties with the @ref{scale} and
9553 @ref{fps} filters.
9554
9555 It accepts the following parameters:
9556 @table @option
9557
9558 @item format
9559 The desired packing format. Supported values are:
9560
9561 @table @option
9562
9563 @item sbs
9564 The views are next to each other (default).
9565
9566 @item tab
9567 The views are on top of each other.
9568
9569 @item lines
9570 The views are packed by line.
9571
9572 @item columns
9573 The views are packed by column.
9574
9575 @item frameseq
9576 The views are temporally interleaved.
9577
9578 @end table
9579
9580 @end table
9581
9582 Some examples:
9583
9584 @example
9585 # Convert left and right views into a frame-sequential video
9586 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
9587
9588 # Convert views into a side-by-side video with the same output resolution as the input
9589 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
9590 @end example
9591
9592 @section framerate
9593
9594 Change the frame rate by interpolating new video output frames from the source
9595 frames.
9596
9597 This filter is not designed to function correctly with interlaced media. If
9598 you wish to change the frame rate of interlaced media then you are required
9599 to deinterlace before this filter and re-interlace after this filter.
9600
9601 A description of the accepted options follows.
9602
9603 @table @option
9604 @item fps
9605 Specify the output frames per second. This option can also be specified
9606 as a value alone. The default is @code{50}.
9607
9608 @item interp_start
9609 Specify the start of a range where the output frame will be created as a
9610 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9611 the default is @code{15}.
9612
9613 @item interp_end
9614 Specify the end of a range where the output frame will be created as a
9615 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9616 the default is @code{240}.
9617
9618 @item scene
9619 Specify the level at which a scene change is detected as a value between
9620 0 and 100 to indicate a new scene; a low value reflects a low
9621 probability for the current frame to introduce a new scene, while a higher
9622 value means the current frame is more likely to be one.
9623 The default is @code{8.2}.
9624
9625 @item flags
9626 Specify flags influencing the filter process.
9627
9628 Available value for @var{flags} is:
9629
9630 @table @option
9631 @item scene_change_detect, scd
9632 Enable scene change detection using the value of the option @var{scene}.
9633 This flag is enabled by default.
9634 @end table
9635 @end table
9636
9637 @section framestep
9638
9639 Select one frame every N-th frame.
9640
9641 This filter accepts the following option:
9642 @table @option
9643 @item step
9644 Select frame after every @code{step} frames.
9645 Allowed values are positive integers higher than 0. Default value is @code{1}.
9646 @end table
9647
9648 @anchor{frei0r}
9649 @section frei0r
9650
9651 Apply a frei0r effect to the input video.
9652
9653 To enable the compilation of this filter, you need to install the frei0r
9654 header and configure FFmpeg with @code{--enable-frei0r}.
9655
9656 It accepts the following parameters:
9657
9658 @table @option
9659
9660 @item filter_name
9661 The name of the frei0r effect to load. If the environment variable
9662 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
9663 directories specified by the colon-separated list in @env{FREI0R_PATH}.
9664 Otherwise, the standard frei0r paths are searched, in this order:
9665 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
9666 @file{/usr/lib/frei0r-1/}.
9667
9668 @item filter_params
9669 A '|'-separated list of parameters to pass to the frei0r effect.
9670
9671 @end table
9672
9673 A frei0r effect parameter can be a boolean (its value is either
9674 "y" or "n"), a double, a color (specified as
9675 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
9676 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
9677 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
9678 a position (specified as @var{X}/@var{Y}, where
9679 @var{X} and @var{Y} are floating point numbers) and/or a string.
9680
9681 The number and types of parameters depend on the loaded effect. If an
9682 effect parameter is not specified, the default value is set.
9683
9684 @subsection Examples
9685
9686 @itemize
9687 @item
9688 Apply the distort0r effect, setting the first two double parameters:
9689 @example
9690 frei0r=filter_name=distort0r:filter_params=0.5|0.01
9691 @end example
9692
9693 @item
9694 Apply the colordistance effect, taking a color as the first parameter:
9695 @example
9696 frei0r=colordistance:0.2/0.3/0.4
9697 frei0r=colordistance:violet
9698 frei0r=colordistance:0x112233
9699 @end example
9700
9701 @item
9702 Apply the perspective effect, specifying the top left and top right image
9703 positions:
9704 @example
9705 frei0r=perspective:0.2/0.2|0.8/0.2
9706 @end example
9707 @end itemize
9708
9709 For more information, see
9710 @url{http://frei0r.dyne.org}
9711
9712 @section fspp
9713
9714 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
9715
9716 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
9717 processing filter, one of them is performed once per block, not per pixel.
9718 This allows for much higher speed.
9719
9720 The filter accepts the following options:
9721
9722 @table @option
9723 @item quality
9724 Set quality. This option defines the number of levels for averaging. It accepts
9725 an integer in the range 4-5. Default value is @code{4}.
9726
9727 @item qp
9728 Force a constant quantization parameter. It accepts an integer in range 0-63.
9729 If not set, the filter will use the QP from the video stream (if available).
9730
9731 @item strength
9732 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
9733 more details but also more artifacts, while higher values make the image smoother
9734 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
9735
9736 @item use_bframe_qp
9737 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
9738 option may cause flicker since the B-Frames have often larger QP. Default is
9739 @code{0} (not enabled).
9740
9741 @end table
9742
9743 @section gblur
9744
9745 Apply Gaussian blur filter.
9746
9747 The filter accepts the following options:
9748
9749 @table @option
9750 @item sigma
9751 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
9752
9753 @item steps
9754 Set number of steps for Gaussian approximation. Defauls is @code{1}.
9755
9756 @item planes
9757 Set which planes to filter. By default all planes are filtered.
9758
9759 @item sigmaV
9760 Set vertical sigma, if negative it will be same as @code{sigma}.
9761 Default is @code{-1}.
9762 @end table
9763
9764 @section geq
9765
9766 The filter accepts the following options:
9767
9768 @table @option
9769 @item lum_expr, lum
9770 Set the luminance expression.
9771 @item cb_expr, cb
9772 Set the chrominance blue expression.
9773 @item cr_expr, cr
9774 Set the chrominance red expression.
9775 @item alpha_expr, a
9776 Set the alpha expression.
9777 @item red_expr, r
9778 Set the red expression.
9779 @item green_expr, g
9780 Set the green expression.
9781 @item blue_expr, b
9782 Set the blue expression.
9783 @end table
9784
9785 The colorspace is selected according to the specified options. If one
9786 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
9787 options is specified, the filter will automatically select a YCbCr
9788 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
9789 @option{blue_expr} options is specified, it will select an RGB
9790 colorspace.
9791
9792 If one of the chrominance expression is not defined, it falls back on the other
9793 one. If no alpha expression is specified it will evaluate to opaque value.
9794 If none of chrominance expressions are specified, they will evaluate
9795 to the luminance expression.
9796
9797 The expressions can use the following variables and functions:
9798
9799 @table @option
9800 @item N
9801 The sequential number of the filtered frame, starting from @code{0}.
9802
9803 @item X
9804 @item Y
9805 The coordinates of the current sample.
9806
9807 @item W
9808 @item H
9809 The width and height of the image.
9810
9811 @item SW
9812 @item SH
9813 Width and height scale depending on the currently filtered plane. It is the
9814 ratio between the corresponding luma plane number of pixels and the current
9815 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
9816 @code{0.5,0.5} for chroma planes.
9817
9818 @item T
9819 Time of the current frame, expressed in seconds.
9820
9821 @item p(x, y)
9822 Return the value of the pixel at location (@var{x},@var{y}) of the current
9823 plane.
9824
9825 @item lum(x, y)
9826 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
9827 plane.
9828
9829 @item cb(x, y)
9830 Return the value of the pixel at location (@var{x},@var{y}) of the
9831 blue-difference chroma plane. Return 0 if there is no such plane.
9832
9833 @item cr(x, y)
9834 Return the value of the pixel at location (@var{x},@var{y}) of the
9835 red-difference chroma plane. Return 0 if there is no such plane.
9836
9837 @item r(x, y)
9838 @item g(x, y)
9839 @item b(x, y)
9840 Return the value of the pixel at location (@var{x},@var{y}) of the
9841 red/green/blue component. Return 0 if there is no such component.
9842
9843 @item alpha(x, y)
9844 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
9845 plane. Return 0 if there is no such plane.
9846 @end table
9847
9848 For functions, if @var{x} and @var{y} are outside the area, the value will be
9849 automatically clipped to the closer edge.
9850
9851 @subsection Examples
9852
9853 @itemize
9854 @item
9855 Flip the image horizontally:
9856 @example
9857 geq=p(W-X\,Y)
9858 @end example
9859
9860 @item
9861 Generate a bidimensional sine wave, with angle @code{PI/3} and a
9862 wavelength of 100 pixels:
9863 @example
9864 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
9865 @end example
9866
9867 @item
9868 Generate a fancy enigmatic moving light:
9869 @example
9870 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
9871 @end example
9872
9873 @item
9874 Generate a quick emboss effect:
9875 @example
9876 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
9877 @end example
9878
9879 @item
9880 Modify RGB components depending on pixel position:
9881 @example
9882 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
9883 @end example
9884
9885 @item
9886 Create a radial gradient that is the same size as the input (also see
9887 the @ref{vignette} filter):
9888 @example
9889 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
9890 @end example
9891 @end itemize
9892
9893 @section gradfun
9894
9895 Fix the banding artifacts that are sometimes introduced into nearly flat
9896 regions by truncation to 8-bit color depth.
9897 Interpolate the gradients that should go where the bands are, and
9898 dither them.
9899
9900 It is designed for playback only.  Do not use it prior to
9901 lossy compression, because compression tends to lose the dither and
9902 bring back the bands.
9903
9904 It accepts the following parameters:
9905
9906 @table @option
9907
9908 @item strength
9909 The maximum amount by which the filter will change any one pixel. This is also
9910 the threshold for detecting nearly flat regions. Acceptable values range from
9911 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
9912 valid range.
9913
9914 @item radius
9915 The neighborhood to fit the gradient to. A larger radius makes for smoother
9916 gradients, but also prevents the filter from modifying the pixels near detailed
9917 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
9918 values will be clipped to the valid range.
9919
9920 @end table
9921
9922 Alternatively, the options can be specified as a flat string:
9923 @var{strength}[:@var{radius}]
9924
9925 @subsection Examples
9926
9927 @itemize
9928 @item
9929 Apply the filter with a @code{3.5} strength and radius of @code{8}:
9930 @example
9931 gradfun=3.5:8
9932 @end example
9933
9934 @item
9935 Specify radius, omitting the strength (which will fall-back to the default
9936 value):
9937 @example
9938 gradfun=radius=8
9939 @end example
9940
9941 @end itemize
9942
9943 @section greyedge
9944 A color constancy variation filter which estimates scene illumination via grey edge algorithm
9945 and corrects the scene colors accordingly.
9946
9947 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
9948
9949 The filter accepts the following options:
9950
9951 @table @option
9952 @item difford
9953 The order of differentiation to be applied on the scene. Must be chosen in the range
9954 [0,2] and default value is 1.
9955
9956 @item minknorm
9957 The Minkowski parameter to be used for calculating the Minkowski distance. Must
9958 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
9959 max value instead of calculating Minkowski distance.
9960
9961 @item sigma
9962 The standard deviation of Gaussian blur to be applied on the scene. Must be
9963 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
9964 can't be euqal to 0 if @var{difford} is greater than 0.
9965 @end table
9966
9967 @subsection Examples
9968 @itemize
9969
9970 @item
9971 Grey Edge:
9972 @example
9973 greyedge=difford=1:minknorm=5:sigma=2
9974 @end example
9975
9976 @item
9977 Max Edge:
9978 @example
9979 greyedge=difford=1:minknorm=0:sigma=2
9980 @end example
9981
9982 @end itemize
9983
9984 @anchor{haldclut}
9985 @section haldclut
9986
9987 Apply a Hald CLUT to a video stream.
9988
9989 First input is the video stream to process, and second one is the Hald CLUT.
9990 The Hald CLUT input can be a simple picture or a complete video stream.
9991
9992 The filter accepts the following options:
9993
9994 @table @option
9995 @item shortest
9996 Force termination when the shortest input terminates. Default is @code{0}.
9997 @item repeatlast
9998 Continue applying the last CLUT after the end of the stream. A value of
9999 @code{0} disable the filter after the last frame of the CLUT is reached.
10000 Default is @code{1}.
10001 @end table
10002
10003 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
10004 filters share the same internals).
10005
10006 More information about the Hald CLUT can be found on Eskil Steenberg's website
10007 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
10008
10009 @subsection Workflow examples
10010
10011 @subsubsection Hald CLUT video stream
10012
10013 Generate an identity Hald CLUT stream altered with various effects:
10014 @example
10015 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
10016 @end example
10017
10018 Note: make sure you use a lossless codec.
10019
10020 Then use it with @code{haldclut} to apply it on some random stream:
10021 @example
10022 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
10023 @end example
10024
10025 The Hald CLUT will be applied to the 10 first seconds (duration of
10026 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
10027 to the remaining frames of the @code{mandelbrot} stream.
10028
10029 @subsubsection Hald CLUT with preview
10030
10031 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
10032 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
10033 biggest possible square starting at the top left of the picture. The remaining
10034 padding pixels (bottom or right) will be ignored. This area can be used to add
10035 a preview of the Hald CLUT.
10036
10037 Typically, the following generated Hald CLUT will be supported by the
10038 @code{haldclut} filter:
10039
10040 @example
10041 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
10042    pad=iw+320 [padded_clut];
10043    smptebars=s=320x256, split [a][b];
10044    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
10045    [main][b] overlay=W-320" -frames:v 1 clut.png
10046 @end example
10047
10048 It contains the original and a preview of the effect of the CLUT: SMPTE color
10049 bars are displayed on the right-top, and below the same color bars processed by
10050 the color changes.
10051
10052 Then, the effect of this Hald CLUT can be visualized with:
10053 @example
10054 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
10055 @end example
10056
10057 @section hflip
10058
10059 Flip the input video horizontally.
10060
10061 For example, to horizontally flip the input video with @command{ffmpeg}:
10062 @example
10063 ffmpeg -i in.avi -vf "hflip" out.avi
10064 @end example
10065
10066 @section histeq
10067 This filter applies a global color histogram equalization on a
10068 per-frame basis.
10069
10070 It can be used to correct video that has a compressed range of pixel
10071 intensities.  The filter redistributes the pixel intensities to
10072 equalize their distribution across the intensity range. It may be
10073 viewed as an "automatically adjusting contrast filter". This filter is
10074 useful only for correcting degraded or poorly captured source
10075 video.
10076
10077 The filter accepts the following options:
10078
10079 @table @option
10080 @item strength
10081 Determine the amount of equalization to be applied.  As the strength
10082 is reduced, the distribution of pixel intensities more-and-more
10083 approaches that of the input frame. The value must be a float number
10084 in the range [0,1] and defaults to 0.200.
10085
10086 @item intensity
10087 Set the maximum intensity that can generated and scale the output
10088 values appropriately.  The strength should be set as desired and then
10089 the intensity can be limited if needed to avoid washing-out. The value
10090 must be a float number in the range [0,1] and defaults to 0.210.
10091
10092 @item antibanding
10093 Set the antibanding level. If enabled the filter will randomly vary
10094 the luminance of output pixels by a small amount to avoid banding of
10095 the histogram. Possible values are @code{none}, @code{weak} or
10096 @code{strong}. It defaults to @code{none}.
10097 @end table
10098
10099 @section histogram
10100
10101 Compute and draw a color distribution histogram for the input video.
10102
10103 The computed histogram is a representation of the color component
10104 distribution in an image.
10105
10106 Standard histogram displays the color components distribution in an image.
10107 Displays color graph for each color component. Shows distribution of
10108 the Y, U, V, A or R, G, B components, depending on input format, in the
10109 current frame. Below each graph a color component scale meter is shown.
10110
10111 The filter accepts the following options:
10112
10113 @table @option
10114 @item level_height
10115 Set height of level. Default value is @code{200}.
10116 Allowed range is [50, 2048].
10117
10118 @item scale_height
10119 Set height of color scale. Default value is @code{12}.
10120 Allowed range is [0, 40].
10121
10122 @item display_mode
10123 Set display mode.
10124 It accepts the following values:
10125 @table @samp
10126 @item stack
10127 Per color component graphs are placed below each other.
10128
10129 @item parade
10130 Per color component graphs are placed side by side.
10131
10132 @item overlay
10133 Presents information identical to that in the @code{parade}, except
10134 that the graphs representing color components are superimposed directly
10135 over one another.
10136 @end table
10137 Default is @code{stack}.
10138
10139 @item levels_mode
10140 Set mode. Can be either @code{linear}, or @code{logarithmic}.
10141 Default is @code{linear}.
10142
10143 @item components
10144 Set what color components to display.
10145 Default is @code{7}.
10146
10147 @item fgopacity
10148 Set foreground opacity. Default is @code{0.7}.
10149
10150 @item bgopacity
10151 Set background opacity. Default is @code{0.5}.
10152 @end table
10153
10154 @subsection Examples
10155
10156 @itemize
10157
10158 @item
10159 Calculate and draw histogram:
10160 @example
10161 ffplay -i input -vf histogram
10162 @end example
10163
10164 @end itemize
10165
10166 @anchor{hqdn3d}
10167 @section hqdn3d
10168
10169 This is a high precision/quality 3d denoise filter. It aims to reduce
10170 image noise, producing smooth images and making still images really
10171 still. It should enhance compressibility.
10172
10173 It accepts the following optional parameters:
10174
10175 @table @option
10176 @item luma_spatial
10177 A non-negative floating point number which specifies spatial luma strength.
10178 It defaults to 4.0.
10179
10180 @item chroma_spatial
10181 A non-negative floating point number which specifies spatial chroma strength.
10182 It defaults to 3.0*@var{luma_spatial}/4.0.
10183
10184 @item luma_tmp
10185 A floating point number which specifies luma temporal strength. It defaults to
10186 6.0*@var{luma_spatial}/4.0.
10187
10188 @item chroma_tmp
10189 A floating point number which specifies chroma temporal strength. It defaults to
10190 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
10191 @end table
10192
10193 @section hwdownload
10194
10195 Download hardware frames to system memory.
10196
10197 The input must be in hardware frames, and the output a non-hardware format.
10198 Not all formats will be supported on the output - it may be necessary to insert
10199 an additional @option{format} filter immediately following in the graph to get
10200 the output in a supported format.
10201
10202 @section hwmap
10203
10204 Map hardware frames to system memory or to another device.
10205
10206 This filter has several different modes of operation; which one is used depends
10207 on the input and output formats:
10208 @itemize
10209 @item
10210 Hardware frame input, normal frame output
10211
10212 Map the input frames to system memory and pass them to the output.  If the
10213 original hardware frame is later required (for example, after overlaying
10214 something else on part of it), the @option{hwmap} filter can be used again
10215 in the next mode to retrieve it.
10216 @item
10217 Normal frame input, hardware frame output
10218
10219 If the input is actually a software-mapped hardware frame, then unmap it -
10220 that is, return the original hardware frame.
10221
10222 Otherwise, a device must be provided.  Create new hardware surfaces on that
10223 device for the output, then map them back to the software format at the input
10224 and give those frames to the preceding filter.  This will then act like the
10225 @option{hwupload} filter, but may be able to avoid an additional copy when
10226 the input is already in a compatible format.
10227 @item
10228 Hardware frame input and output
10229
10230 A device must be supplied for the output, either directly or with the
10231 @option{derive_device} option.  The input and output devices must be of
10232 different types and compatible - the exact meaning of this is
10233 system-dependent, but typically it means that they must refer to the same
10234 underlying hardware context (for example, refer to the same graphics card).
10235
10236 If the input frames were originally created on the output device, then unmap
10237 to retrieve the original frames.
10238
10239 Otherwise, map the frames to the output device - create new hardware frames
10240 on the output corresponding to the frames on the input.
10241 @end itemize
10242
10243 The following additional parameters are accepted:
10244
10245 @table @option
10246 @item mode
10247 Set the frame mapping mode.  Some combination of:
10248 @table @var
10249 @item read
10250 The mapped frame should be readable.
10251 @item write
10252 The mapped frame should be writeable.
10253 @item overwrite
10254 The mapping will always overwrite the entire frame.
10255
10256 This may improve performance in some cases, as the original contents of the
10257 frame need not be loaded.
10258 @item direct
10259 The mapping must not involve any copying.
10260
10261 Indirect mappings to copies of frames are created in some cases where either
10262 direct mapping is not possible or it would have unexpected properties.
10263 Setting this flag ensures that the mapping is direct and will fail if that is
10264 not possible.
10265 @end table
10266 Defaults to @var{read+write} if not specified.
10267
10268 @item derive_device @var{type}
10269 Rather than using the device supplied at initialisation, instead derive a new
10270 device of type @var{type} from the device the input frames exist on.
10271
10272 @item reverse
10273 In a hardware to hardware mapping, map in reverse - create frames in the sink
10274 and map them back to the source.  This may be necessary in some cases where
10275 a mapping in one direction is required but only the opposite direction is
10276 supported by the devices being used.
10277
10278 This option is dangerous - it may break the preceding filter in undefined
10279 ways if there are any additional constraints on that filter's output.
10280 Do not use it without fully understanding the implications of its use.
10281 @end table
10282
10283 @section hwupload
10284
10285 Upload system memory frames to hardware surfaces.
10286
10287 The device to upload to must be supplied when the filter is initialised.  If
10288 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
10289 option.
10290
10291 @anchor{hwupload_cuda}
10292 @section hwupload_cuda
10293
10294 Upload system memory frames to a CUDA device.
10295
10296 It accepts the following optional parameters:
10297
10298 @table @option
10299 @item device
10300 The number of the CUDA device to use
10301 @end table
10302
10303 @section hqx
10304
10305 Apply a high-quality magnification filter designed for pixel art. This filter
10306 was originally created by Maxim Stepin.
10307
10308 It accepts the following option:
10309
10310 @table @option
10311 @item n
10312 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
10313 @code{hq3x} and @code{4} for @code{hq4x}.
10314 Default is @code{3}.
10315 @end table
10316
10317 @section hstack
10318 Stack input videos horizontally.
10319
10320 All streams must be of same pixel format and of same height.
10321
10322 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
10323 to create same output.
10324
10325 The filter accept the following option:
10326
10327 @table @option
10328 @item inputs
10329 Set number of input streams. Default is 2.
10330
10331 @item shortest
10332 If set to 1, force the output to terminate when the shortest input
10333 terminates. Default value is 0.
10334 @end table
10335
10336 @section hue
10337
10338 Modify the hue and/or the saturation of the input.
10339
10340 It accepts the following parameters:
10341
10342 @table @option
10343 @item h
10344 Specify the hue angle as a number of degrees. It accepts an expression,
10345 and defaults to "0".
10346
10347 @item s
10348 Specify the saturation in the [-10,10] range. It accepts an expression and
10349 defaults to "1".
10350
10351 @item H
10352 Specify the hue angle as a number of radians. It accepts an
10353 expression, and defaults to "0".
10354
10355 @item b
10356 Specify the brightness in the [-10,10] range. It accepts an expression and
10357 defaults to "0".
10358 @end table
10359
10360 @option{h} and @option{H} are mutually exclusive, and can't be
10361 specified at the same time.
10362
10363 The @option{b}, @option{h}, @option{H} and @option{s} option values are
10364 expressions containing the following constants:
10365
10366 @table @option
10367 @item n
10368 frame count of the input frame starting from 0
10369
10370 @item pts
10371 presentation timestamp of the input frame expressed in time base units
10372
10373 @item r
10374 frame rate of the input video, NAN if the input frame rate is unknown
10375
10376 @item t
10377 timestamp expressed in seconds, NAN if the input timestamp is unknown
10378
10379 @item tb
10380 time base of the input video
10381 @end table
10382
10383 @subsection Examples
10384
10385 @itemize
10386 @item
10387 Set the hue to 90 degrees and the saturation to 1.0:
10388 @example
10389 hue=h=90:s=1
10390 @end example
10391
10392 @item
10393 Same command but expressing the hue in radians:
10394 @example
10395 hue=H=PI/2:s=1
10396 @end example
10397
10398 @item
10399 Rotate hue and make the saturation swing between 0
10400 and 2 over a period of 1 second:
10401 @example
10402 hue="H=2*PI*t: s=sin(2*PI*t)+1"
10403 @end example
10404
10405 @item
10406 Apply a 3 seconds saturation fade-in effect starting at 0:
10407 @example
10408 hue="s=min(t/3\,1)"
10409 @end example
10410
10411 The general fade-in expression can be written as:
10412 @example
10413 hue="s=min(0\, max((t-START)/DURATION\, 1))"
10414 @end example
10415
10416 @item
10417 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
10418 @example
10419 hue="s=max(0\, min(1\, (8-t)/3))"
10420 @end example
10421
10422 The general fade-out expression can be written as:
10423 @example
10424 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
10425 @end example
10426
10427 @end itemize
10428
10429 @subsection Commands
10430
10431 This filter supports the following commands:
10432 @table @option
10433 @item b
10434 @item s
10435 @item h
10436 @item H
10437 Modify the hue and/or the saturation and/or brightness of the input video.
10438 The command accepts the same syntax of the corresponding option.
10439
10440 If the specified expression is not valid, it is kept at its current
10441 value.
10442 @end table
10443
10444 @section hysteresis
10445
10446 Grow first stream into second stream by connecting components.
10447 This makes it possible to build more robust edge masks.
10448
10449 This filter accepts the following options:
10450
10451 @table @option
10452 @item planes
10453 Set which planes will be processed as bitmap, unprocessed planes will be
10454 copied from first stream.
10455 By default value 0xf, all planes will be processed.
10456
10457 @item threshold
10458 Set threshold which is used in filtering. If pixel component value is higher than
10459 this value filter algorithm for connecting components is activated.
10460 By default value is 0.
10461 @end table
10462
10463 @section idet
10464
10465 Detect video interlacing type.
10466
10467 This filter tries to detect if the input frames are interlaced, progressive,
10468 top or bottom field first. It will also try to detect fields that are
10469 repeated between adjacent frames (a sign of telecine).
10470
10471 Single frame detection considers only immediately adjacent frames when classifying each frame.
10472 Multiple frame detection incorporates the classification history of previous frames.
10473
10474 The filter will log these metadata values:
10475
10476 @table @option
10477 @item single.current_frame
10478 Detected type of current frame using single-frame detection. One of:
10479 ``tff'' (top field first), ``bff'' (bottom field first),
10480 ``progressive'', or ``undetermined''
10481
10482 @item single.tff
10483 Cumulative number of frames detected as top field first using single-frame detection.
10484
10485 @item multiple.tff
10486 Cumulative number of frames detected as top field first using multiple-frame detection.
10487
10488 @item single.bff
10489 Cumulative number of frames detected as bottom field first using single-frame detection.
10490
10491 @item multiple.current_frame
10492 Detected type of current frame using multiple-frame detection. One of:
10493 ``tff'' (top field first), ``bff'' (bottom field first),
10494 ``progressive'', or ``undetermined''
10495
10496 @item multiple.bff
10497 Cumulative number of frames detected as bottom field first using multiple-frame detection.
10498
10499 @item single.progressive
10500 Cumulative number of frames detected as progressive using single-frame detection.
10501
10502 @item multiple.progressive
10503 Cumulative number of frames detected as progressive using multiple-frame detection.
10504
10505 @item single.undetermined
10506 Cumulative number of frames that could not be classified using single-frame detection.
10507
10508 @item multiple.undetermined
10509 Cumulative number of frames that could not be classified using multiple-frame detection.
10510
10511 @item repeated.current_frame
10512 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
10513
10514 @item repeated.neither
10515 Cumulative number of frames with no repeated field.
10516
10517 @item repeated.top
10518 Cumulative number of frames with the top field repeated from the previous frame's top field.
10519
10520 @item repeated.bottom
10521 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
10522 @end table
10523
10524 The filter accepts the following options:
10525
10526 @table @option
10527 @item intl_thres
10528 Set interlacing threshold.
10529 @item prog_thres
10530 Set progressive threshold.
10531 @item rep_thres
10532 Threshold for repeated field detection.
10533 @item half_life
10534 Number of frames after which a given frame's contribution to the
10535 statistics is halved (i.e., it contributes only 0.5 to its
10536 classification). The default of 0 means that all frames seen are given
10537 full weight of 1.0 forever.
10538 @item analyze_interlaced_flag
10539 When this is not 0 then idet will use the specified number of frames to determine
10540 if the interlaced flag is accurate, it will not count undetermined frames.
10541 If the flag is found to be accurate it will be used without any further
10542 computations, if it is found to be inaccurate it will be cleared without any
10543 further computations. This allows inserting the idet filter as a low computational
10544 method to clean up the interlaced flag
10545 @end table
10546
10547 @section il
10548
10549 Deinterleave or interleave fields.
10550
10551 This filter allows one to process interlaced images fields without
10552 deinterlacing them. Deinterleaving splits the input frame into 2
10553 fields (so called half pictures). Odd lines are moved to the top
10554 half of the output image, even lines to the bottom half.
10555 You can process (filter) them independently and then re-interleave them.
10556
10557 The filter accepts the following options:
10558
10559 @table @option
10560 @item luma_mode, l
10561 @item chroma_mode, c
10562 @item alpha_mode, a
10563 Available values for @var{luma_mode}, @var{chroma_mode} and
10564 @var{alpha_mode} are:
10565
10566 @table @samp
10567 @item none
10568 Do nothing.
10569
10570 @item deinterleave, d
10571 Deinterleave fields, placing one above the other.
10572
10573 @item interleave, i
10574 Interleave fields. Reverse the effect of deinterleaving.
10575 @end table
10576 Default value is @code{none}.
10577
10578 @item luma_swap, ls
10579 @item chroma_swap, cs
10580 @item alpha_swap, as
10581 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
10582 @end table
10583
10584 @section inflate
10585
10586 Apply inflate effect to the video.
10587
10588 This filter replaces the pixel by the local(3x3) average by taking into account
10589 only values higher than the pixel.
10590
10591 It accepts the following options:
10592
10593 @table @option
10594 @item threshold0
10595 @item threshold1
10596 @item threshold2
10597 @item threshold3
10598 Limit the maximum change for each plane, default is 65535.
10599 If 0, plane will remain unchanged.
10600 @end table
10601
10602 @section interlace
10603
10604 Simple interlacing filter from progressive contents. This interleaves upper (or
10605 lower) lines from odd frames with lower (or upper) lines from even frames,
10606 halving the frame rate and preserving image height.
10607
10608 @example
10609    Original        Original             New Frame
10610    Frame 'j'      Frame 'j+1'             (tff)
10611   ==========      ===========       ==================
10612     Line 0  -------------------->    Frame 'j' Line 0
10613     Line 1          Line 1  ---->   Frame 'j+1' Line 1
10614     Line 2 --------------------->    Frame 'j' Line 2
10615     Line 3          Line 3  ---->   Frame 'j+1' Line 3
10616      ...             ...                   ...
10617 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
10618 @end example
10619
10620 It accepts the following optional parameters:
10621
10622 @table @option
10623 @item scan
10624 This determines whether the interlaced frame is taken from the even
10625 (tff - default) or odd (bff) lines of the progressive frame.
10626
10627 @item lowpass
10628 Vertical lowpass filter to avoid twitter interlacing and
10629 reduce moire patterns.
10630
10631 @table @samp
10632 @item 0, off
10633 Disable vertical lowpass filter
10634
10635 @item 1, linear
10636 Enable linear filter (default)
10637
10638 @item 2, complex
10639 Enable complex filter. This will slightly less reduce twitter and moire
10640 but better retain detail and subjective sharpness impression.
10641
10642 @end table
10643 @end table
10644
10645 @section kerndeint
10646
10647 Deinterlace input video by applying Donald Graft's adaptive kernel
10648 deinterling. Work on interlaced parts of a video to produce
10649 progressive frames.
10650
10651 The description of the accepted parameters follows.
10652
10653 @table @option
10654 @item thresh
10655 Set the threshold which affects the filter's tolerance when
10656 determining if a pixel line must be processed. It must be an integer
10657 in the range [0,255] and defaults to 10. A value of 0 will result in
10658 applying the process on every pixels.
10659
10660 @item map
10661 Paint pixels exceeding the threshold value to white if set to 1.
10662 Default is 0.
10663
10664 @item order
10665 Set the fields order. Swap fields if set to 1, leave fields alone if
10666 0. Default is 0.
10667
10668 @item sharp
10669 Enable additional sharpening if set to 1. Default is 0.
10670
10671 @item twoway
10672 Enable twoway sharpening if set to 1. Default is 0.
10673 @end table
10674
10675 @subsection Examples
10676
10677 @itemize
10678 @item
10679 Apply default values:
10680 @example
10681 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
10682 @end example
10683
10684 @item
10685 Enable additional sharpening:
10686 @example
10687 kerndeint=sharp=1
10688 @end example
10689
10690 @item
10691 Paint processed pixels in white:
10692 @example
10693 kerndeint=map=1
10694 @end example
10695 @end itemize
10696
10697 @section lenscorrection
10698
10699 Correct radial lens distortion
10700
10701 This filter can be used to correct for radial distortion as can result from the use
10702 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
10703 one can use tools available for example as part of opencv or simply trial-and-error.
10704 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
10705 and extract the k1 and k2 coefficients from the resulting matrix.
10706
10707 Note that effectively the same filter is available in the open-source tools Krita and
10708 Digikam from the KDE project.
10709
10710 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
10711 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
10712 brightness distribution, so you may want to use both filters together in certain
10713 cases, though you will have to take care of ordering, i.e. whether vignetting should
10714 be applied before or after lens correction.
10715
10716 @subsection Options
10717
10718 The filter accepts the following options:
10719
10720 @table @option
10721 @item cx
10722 Relative x-coordinate of the focal point of the image, and thereby the center of the
10723 distortion. This value has a range [0,1] and is expressed as fractions of the image
10724 width. Default is 0.5.
10725 @item cy
10726 Relative y-coordinate of the focal point of the image, and thereby the center of the
10727 distortion. This value has a range [0,1] and is expressed as fractions of the image
10728 height. Default is 0.5.
10729 @item k1
10730 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
10731 no correction. Default is 0.
10732 @item k2
10733 Coefficient of the double quadratic correction term. This value has a range [-1,1].
10734 0 means no correction. Default is 0.
10735 @end table
10736
10737 The formula that generates the correction is:
10738
10739 @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)
10740
10741 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
10742 distances from the focal point in the source and target images, respectively.
10743
10744 @section lensfun
10745
10746 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
10747
10748 The @code{lensfun} filter requires the camera make, camera model, and lens model
10749 to apply the lens correction. The filter will load the lensfun database and
10750 query it to find the corresponding camera and lens entries in the database. As
10751 long as these entries can be found with the given options, the filter can
10752 perform corrections on frames. Note that incomplete strings will result in the
10753 filter choosing the best match with the given options, and the filter will
10754 output the chosen camera and lens models (logged with level "info"). You must
10755 provide the make, camera model, and lens model as they are required.
10756
10757 The filter accepts the following options:
10758
10759 @table @option
10760 @item make
10761 The make of the camera (for example, "Canon"). This option is required.
10762
10763 @item model
10764 The model of the camera (for example, "Canon EOS 100D"). This option is
10765 required.
10766
10767 @item lens_model
10768 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
10769 option is required.
10770
10771 @item mode
10772 The type of correction to apply. The following values are valid options:
10773
10774 @table @samp
10775 @item vignetting
10776 Enables fixing lens vignetting.
10777
10778 @item geometry
10779 Enables fixing lens geometry. This is the default.
10780
10781 @item subpixel
10782 Enables fixing chromatic aberrations.
10783
10784 @item vig_geo
10785 Enables fixing lens vignetting and lens geometry.
10786
10787 @item vig_subpixel
10788 Enables fixing lens vignetting and chromatic aberrations.
10789
10790 @item distortion
10791 Enables fixing both lens geometry and chromatic aberrations.
10792
10793 @item all
10794 Enables all possible corrections.
10795
10796 @end table
10797 @item focal_length
10798 The focal length of the image/video (zoom; expected constant for video). For
10799 example, a 18--55mm lens has focal length range of [18--55], so a value in that
10800 range should be chosen when using that lens. Default 18.
10801
10802 @item aperture
10803 The aperture of the image/video (expected constant for video). Note that
10804 aperture is only used for vignetting correction. Default 3.5.
10805
10806 @item focus_distance
10807 The focus distance of the image/video (expected constant for video). Note that
10808 focus distance is only used for vignetting and only slightly affects the
10809 vignetting correction process. If unknown, leave it at the default value (which
10810 is 1000).
10811
10812 @item target_geometry
10813 The target geometry of the output image/video. The following values are valid
10814 options:
10815
10816 @table @samp
10817 @item rectilinear (default)
10818 @item fisheye
10819 @item panoramic
10820 @item equirectangular
10821 @item fisheye_orthographic
10822 @item fisheye_stereographic
10823 @item fisheye_equisolid
10824 @item fisheye_thoby
10825 @end table
10826 @item reverse
10827 Apply the reverse of image correction (instead of correcting distortion, apply
10828 it).
10829
10830 @item interpolation
10831 The type of interpolation used when correcting distortion. The following values
10832 are valid options:
10833
10834 @table @samp
10835 @item nearest
10836 @item linear (default)
10837 @item lanczos
10838 @end table
10839 @end table
10840
10841 @subsection Examples
10842
10843 @itemize
10844 @item
10845 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
10846 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
10847 aperture of "8.0".
10848
10849 @example
10850 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
10851 @end example
10852
10853 @item
10854 Apply the same as before, but only for the first 5 seconds of video.
10855
10856 @example
10857 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
10858 @end example
10859
10860 @end itemize
10861
10862 @section libvmaf
10863
10864 Obtain the VMAF (Video Multi-Method Assessment Fusion)
10865 score between two input videos.
10866
10867 The obtained VMAF score is printed through the logging system.
10868
10869 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
10870 After installing the library it can be enabled using:
10871 @code{./configure --enable-libvmaf --enable-version3}.
10872 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
10873
10874 The filter has following options:
10875
10876 @table @option
10877 @item model_path
10878 Set the model path which is to be used for SVM.
10879 Default value: @code{"vmaf_v0.6.1.pkl"}
10880
10881 @item log_path
10882 Set the file path to be used to store logs.
10883
10884 @item log_fmt
10885 Set the format of the log file (xml or json).
10886
10887 @item enable_transform
10888 Enables transform for computing vmaf.
10889
10890 @item phone_model
10891 Invokes the phone model which will generate VMAF scores higher than in the
10892 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
10893
10894 @item psnr
10895 Enables computing psnr along with vmaf.
10896
10897 @item ssim
10898 Enables computing ssim along with vmaf.
10899
10900 @item ms_ssim
10901 Enables computing ms_ssim along with vmaf.
10902
10903 @item pool
10904 Set the pool method (mean, min or harmonic mean) to be used for computing vmaf.
10905
10906 @item n_threads
10907 Set number of threads to be used when computing vmaf.
10908
10909 @item n_subsample
10910 Set interval for frame subsampling used when computing vmaf.
10911
10912 @item enable_conf_interval
10913 Enables confidence interval.
10914 @end table
10915
10916 This filter also supports the @ref{framesync} options.
10917
10918 On the below examples the input file @file{main.mpg} being processed is
10919 compared with the reference file @file{ref.mpg}.
10920
10921 @example
10922 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
10923 @end example
10924
10925 Example with options:
10926 @example
10927 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:enable-transform=1" -f null -
10928 @end example
10929
10930 @section limiter
10931
10932 Limits the pixel components values to the specified range [min, max].
10933
10934 The filter accepts the following options:
10935
10936 @table @option
10937 @item min
10938 Lower bound. Defaults to the lowest allowed value for the input.
10939
10940 @item max
10941 Upper bound. Defaults to the highest allowed value for the input.
10942
10943 @item planes
10944 Specify which planes will be processed. Defaults to all available.
10945 @end table
10946
10947 @section loop
10948
10949 Loop video frames.
10950
10951 The filter accepts the following options:
10952
10953 @table @option
10954 @item loop
10955 Set the number of loops. Setting this value to -1 will result in infinite loops.
10956 Default is 0.
10957
10958 @item size
10959 Set maximal size in number of frames. Default is 0.
10960
10961 @item start
10962 Set first frame of loop. Default is 0.
10963 @end table
10964
10965 @anchor{lut3d}
10966 @section lut3d
10967
10968 Apply a 3D LUT to an input video.
10969
10970 The filter accepts the following options:
10971
10972 @table @option
10973 @item file
10974 Set the 3D LUT file name.
10975
10976 Currently supported formats:
10977 @table @samp
10978 @item 3dl
10979 AfterEffects
10980 @item cube
10981 Iridas
10982 @item dat
10983 DaVinci
10984 @item m3d
10985 Pandora
10986 @end table
10987 @item interp
10988 Select interpolation mode.
10989
10990 Available values are:
10991
10992 @table @samp
10993 @item nearest
10994 Use values from the nearest defined point.
10995 @item trilinear
10996 Interpolate values using the 8 points defining a cube.
10997 @item tetrahedral
10998 Interpolate values using a tetrahedron.
10999 @end table
11000 @end table
11001
11002 This filter also supports the @ref{framesync} options.
11003
11004 @section lumakey
11005
11006 Turn certain luma values into transparency.
11007
11008 The filter accepts the following options:
11009
11010 @table @option
11011 @item threshold
11012 Set the luma which will be used as base for transparency.
11013 Default value is @code{0}.
11014
11015 @item tolerance
11016 Set the range of luma values to be keyed out.
11017 Default value is @code{0}.
11018
11019 @item softness
11020 Set the range of softness. Default value is @code{0}.
11021 Use this to control gradual transition from zero to full transparency.
11022 @end table
11023
11024 @section lut, lutrgb, lutyuv
11025
11026 Compute a look-up table for binding each pixel component input value
11027 to an output value, and apply it to the input video.
11028
11029 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
11030 to an RGB input video.
11031
11032 These filters accept the following parameters:
11033 @table @option
11034 @item c0
11035 set first pixel component expression
11036 @item c1
11037 set second pixel component expression
11038 @item c2
11039 set third pixel component expression
11040 @item c3
11041 set fourth pixel component expression, corresponds to the alpha component
11042
11043 @item r
11044 set red component expression
11045 @item g
11046 set green component expression
11047 @item b
11048 set blue component expression
11049 @item a
11050 alpha component expression
11051
11052 @item y
11053 set Y/luminance component expression
11054 @item u
11055 set U/Cb component expression
11056 @item v
11057 set V/Cr component expression
11058 @end table
11059
11060 Each of them specifies the expression to use for computing the lookup table for
11061 the corresponding pixel component values.
11062
11063 The exact component associated to each of the @var{c*} options depends on the
11064 format in input.
11065
11066 The @var{lut} filter requires either YUV or RGB pixel formats in input,
11067 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
11068
11069 The expressions can contain the following constants and functions:
11070
11071 @table @option
11072 @item w
11073 @item h
11074 The input width and height.
11075
11076 @item val
11077 The input value for the pixel component.
11078
11079 @item clipval
11080 The input value, clipped to the @var{minval}-@var{maxval} range.
11081
11082 @item maxval
11083 The maximum value for the pixel component.
11084
11085 @item minval
11086 The minimum value for the pixel component.
11087
11088 @item negval
11089 The negated value for the pixel component value, clipped to the
11090 @var{minval}-@var{maxval} range; it corresponds to the expression
11091 "maxval-clipval+minval".
11092
11093 @item clip(val)
11094 The computed value in @var{val}, clipped to the
11095 @var{minval}-@var{maxval} range.
11096
11097 @item gammaval(gamma)
11098 The computed gamma correction value of the pixel component value,
11099 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
11100 expression
11101 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
11102
11103 @end table
11104
11105 All expressions default to "val".
11106
11107 @subsection Examples
11108
11109 @itemize
11110 @item
11111 Negate input video:
11112 @example
11113 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
11114 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
11115 @end example
11116
11117 The above is the same as:
11118 @example
11119 lutrgb="r=negval:g=negval:b=negval"
11120 lutyuv="y=negval:u=negval:v=negval"
11121 @end example
11122
11123 @item
11124 Negate luminance:
11125 @example
11126 lutyuv=y=negval
11127 @end example
11128
11129 @item
11130 Remove chroma components, turning the video into a graytone image:
11131 @example
11132 lutyuv="u=128:v=128"
11133 @end example
11134
11135 @item
11136 Apply a luma burning effect:
11137 @example
11138 lutyuv="y=2*val"
11139 @end example
11140
11141 @item
11142 Remove green and blue components:
11143 @example
11144 lutrgb="g=0:b=0"
11145 @end example
11146
11147 @item
11148 Set a constant alpha channel value on input:
11149 @example
11150 format=rgba,lutrgb=a="maxval-minval/2"
11151 @end example
11152
11153 @item
11154 Correct luminance gamma by a factor of 0.5:
11155 @example
11156 lutyuv=y=gammaval(0.5)
11157 @end example
11158
11159 @item
11160 Discard least significant bits of luma:
11161 @example
11162 lutyuv=y='bitand(val, 128+64+32)'
11163 @end example
11164
11165 @item
11166 Technicolor like effect:
11167 @example
11168 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
11169 @end example
11170 @end itemize
11171
11172 @section lut2, tlut2
11173
11174 The @code{lut2} filter takes two input streams and outputs one
11175 stream.
11176
11177 The @code{tlut2} (time lut2) filter takes two consecutive frames
11178 from one single stream.
11179
11180 This filter accepts the following parameters:
11181 @table @option
11182 @item c0
11183 set first pixel component expression
11184 @item c1
11185 set second pixel component expression
11186 @item c2
11187 set third pixel component expression
11188 @item c3
11189 set fourth pixel component expression, corresponds to the alpha component
11190 @end table
11191
11192 Each of them specifies the expression to use for computing the lookup table for
11193 the corresponding pixel component values.
11194
11195 The exact component associated to each of the @var{c*} options depends on the
11196 format in inputs.
11197
11198 The expressions can contain the following constants:
11199
11200 @table @option
11201 @item w
11202 @item h
11203 The input width and height.
11204
11205 @item x
11206 The first input value for the pixel component.
11207
11208 @item y
11209 The second input value for the pixel component.
11210
11211 @item bdx
11212 The first input video bit depth.
11213
11214 @item bdy
11215 The second input video bit depth.
11216 @end table
11217
11218 All expressions default to "x".
11219
11220 @subsection Examples
11221
11222 @itemize
11223 @item
11224 Highlight differences between two RGB video streams:
11225 @example
11226 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)'
11227 @end example
11228
11229 @item
11230 Highlight differences between two YUV video streams:
11231 @example
11232 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)'
11233 @end example
11234
11235 @item
11236 Show max difference between two video streams:
11237 @example
11238 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)))'
11239 @end example
11240 @end itemize
11241
11242 @section maskedclamp
11243
11244 Clamp the first input stream with the second input and third input stream.
11245
11246 Returns the value of first stream to be between second input
11247 stream - @code{undershoot} and third input stream + @code{overshoot}.
11248
11249 This filter accepts the following options:
11250 @table @option
11251 @item undershoot
11252 Default value is @code{0}.
11253
11254 @item overshoot
11255 Default value is @code{0}.
11256
11257 @item planes
11258 Set which planes will be processed as bitmap, unprocessed planes will be
11259 copied from first stream.
11260 By default value 0xf, all planes will be processed.
11261 @end table
11262
11263 @section maskedmerge
11264
11265 Merge the first input stream with the second input stream using per pixel
11266 weights in the third input stream.
11267
11268 A value of 0 in the third stream pixel component means that pixel component
11269 from first stream is returned unchanged, while maximum value (eg. 255 for
11270 8-bit videos) means that pixel component from second stream is returned
11271 unchanged. Intermediate values define the amount of merging between both
11272 input stream's pixel components.
11273
11274 This filter accepts the following options:
11275 @table @option
11276 @item planes
11277 Set which planes will be processed as bitmap, unprocessed planes will be
11278 copied from first stream.
11279 By default value 0xf, all planes will be processed.
11280 @end table
11281
11282 @section mcdeint
11283
11284 Apply motion-compensation deinterlacing.
11285
11286 It needs one field per frame as input and must thus be used together
11287 with yadif=1/3 or equivalent.
11288
11289 This filter accepts the following options:
11290 @table @option
11291 @item mode
11292 Set the deinterlacing mode.
11293
11294 It accepts one of the following values:
11295 @table @samp
11296 @item fast
11297 @item medium
11298 @item slow
11299 use iterative motion estimation
11300 @item extra_slow
11301 like @samp{slow}, but use multiple reference frames.
11302 @end table
11303 Default value is @samp{fast}.
11304
11305 @item parity
11306 Set the picture field parity assumed for the input video. It must be
11307 one of the following values:
11308
11309 @table @samp
11310 @item 0, tff
11311 assume top field first
11312 @item 1, bff
11313 assume bottom field first
11314 @end table
11315
11316 Default value is @samp{bff}.
11317
11318 @item qp
11319 Set per-block quantization parameter (QP) used by the internal
11320 encoder.
11321
11322 Higher values should result in a smoother motion vector field but less
11323 optimal individual vectors. Default value is 1.
11324 @end table
11325
11326 @section mergeplanes
11327
11328 Merge color channel components from several video streams.
11329
11330 The filter accepts up to 4 input streams, and merge selected input
11331 planes to the output video.
11332
11333 This filter accepts the following options:
11334 @table @option
11335 @item mapping
11336 Set input to output plane mapping. Default is @code{0}.
11337
11338 The mappings is specified as a bitmap. It should be specified as a
11339 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
11340 mapping for the first plane of the output stream. 'A' sets the number of
11341 the input stream to use (from 0 to 3), and 'a' the plane number of the
11342 corresponding input to use (from 0 to 3). The rest of the mappings is
11343 similar, 'Bb' describes the mapping for the output stream second
11344 plane, 'Cc' describes the mapping for the output stream third plane and
11345 'Dd' describes the mapping for the output stream fourth plane.
11346
11347 @item format
11348 Set output pixel format. Default is @code{yuva444p}.
11349 @end table
11350
11351 @subsection Examples
11352
11353 @itemize
11354 @item
11355 Merge three gray video streams of same width and height into single video stream:
11356 @example
11357 [a0][a1][a2]mergeplanes=0x001020:yuv444p
11358 @end example
11359
11360 @item
11361 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
11362 @example
11363 [a0][a1]mergeplanes=0x00010210:yuva444p
11364 @end example
11365
11366 @item
11367 Swap Y and A plane in yuva444p stream:
11368 @example
11369 format=yuva444p,mergeplanes=0x03010200:yuva444p
11370 @end example
11371
11372 @item
11373 Swap U and V plane in yuv420p stream:
11374 @example
11375 format=yuv420p,mergeplanes=0x000201:yuv420p
11376 @end example
11377
11378 @item
11379 Cast a rgb24 clip to yuv444p:
11380 @example
11381 format=rgb24,mergeplanes=0x000102:yuv444p
11382 @end example
11383 @end itemize
11384
11385 @section mestimate
11386
11387 Estimate and export motion vectors using block matching algorithms.
11388 Motion vectors are stored in frame side data to be used by other filters.
11389
11390 This filter accepts the following options:
11391 @table @option
11392 @item method
11393 Specify the motion estimation method. Accepts one of the following values:
11394
11395 @table @samp
11396 @item esa
11397 Exhaustive search algorithm.
11398 @item tss
11399 Three step search algorithm.
11400 @item tdls
11401 Two dimensional logarithmic search algorithm.
11402 @item ntss
11403 New three step search algorithm.
11404 @item fss
11405 Four step search algorithm.
11406 @item ds
11407 Diamond search algorithm.
11408 @item hexbs
11409 Hexagon-based search algorithm.
11410 @item epzs
11411 Enhanced predictive zonal search algorithm.
11412 @item umh
11413 Uneven multi-hexagon search algorithm.
11414 @end table
11415 Default value is @samp{esa}.
11416
11417 @item mb_size
11418 Macroblock size. Default @code{16}.
11419
11420 @item search_param
11421 Search parameter. Default @code{7}.
11422 @end table
11423
11424 @section midequalizer
11425
11426 Apply Midway Image Equalization effect using two video streams.
11427
11428 Midway Image Equalization adjusts a pair of images to have the same
11429 histogram, while maintaining their dynamics as much as possible. It's
11430 useful for e.g. matching exposures from a pair of stereo cameras.
11431
11432 This filter has two inputs and one output, which must be of same pixel format, but
11433 may be of different sizes. The output of filter is first input adjusted with
11434 midway histogram of both inputs.
11435
11436 This filter accepts the following option:
11437
11438 @table @option
11439 @item planes
11440 Set which planes to process. Default is @code{15}, which is all available planes.
11441 @end table
11442
11443 @section minterpolate
11444
11445 Convert the video to specified frame rate using motion interpolation.
11446
11447 This filter accepts the following options:
11448 @table @option
11449 @item fps
11450 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}.
11451
11452 @item mi_mode
11453 Motion interpolation mode. Following values are accepted:
11454 @table @samp
11455 @item dup
11456 Duplicate previous or next frame for interpolating new ones.
11457 @item blend
11458 Blend source frames. Interpolated frame is mean of previous and next frames.
11459 @item mci
11460 Motion compensated interpolation. Following options are effective when this mode is selected:
11461
11462 @table @samp
11463 @item mc_mode
11464 Motion compensation mode. Following values are accepted:
11465 @table @samp
11466 @item obmc
11467 Overlapped block motion compensation.
11468 @item aobmc
11469 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
11470 @end table
11471 Default mode is @samp{obmc}.
11472
11473 @item me_mode
11474 Motion estimation mode. Following values are accepted:
11475 @table @samp
11476 @item bidir
11477 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
11478 @item bilat
11479 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
11480 @end table
11481 Default mode is @samp{bilat}.
11482
11483 @item me
11484 The algorithm to be used for motion estimation. Following values are accepted:
11485 @table @samp
11486 @item esa
11487 Exhaustive search algorithm.
11488 @item tss
11489 Three step search algorithm.
11490 @item tdls
11491 Two dimensional logarithmic search algorithm.
11492 @item ntss
11493 New three step search algorithm.
11494 @item fss
11495 Four step search algorithm.
11496 @item ds
11497 Diamond search algorithm.
11498 @item hexbs
11499 Hexagon-based search algorithm.
11500 @item epzs
11501 Enhanced predictive zonal search algorithm.
11502 @item umh
11503 Uneven multi-hexagon search algorithm.
11504 @end table
11505 Default algorithm is @samp{epzs}.
11506
11507 @item mb_size
11508 Macroblock size. Default @code{16}.
11509
11510 @item search_param
11511 Motion estimation search parameter. Default @code{32}.
11512
11513 @item vsbmc
11514 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).
11515 @end table
11516 @end table
11517
11518 @item scd
11519 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:
11520 @table @samp
11521 @item none
11522 Disable scene change detection.
11523 @item fdiff
11524 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
11525 @end table
11526 Default method is @samp{fdiff}.
11527
11528 @item scd_threshold
11529 Scene change detection threshold. Default is @code{5.0}.
11530 @end table
11531
11532 @section mix
11533
11534 Mix several video input streams into one video stream.
11535
11536 A description of the accepted options follows.
11537
11538 @table @option
11539 @item nb_inputs
11540 The number of inputs. If unspecified, it defaults to 2.
11541
11542 @item weights
11543 Specify weight of each input video stream as sequence.
11544 Each weight is separated by space. If number of weights
11545 is smaller than number of @var{frames} last specified
11546 weight will be used for all remaining unset weights.
11547
11548 @item scale
11549 Specify scale, if it is set it will be multiplied with sum
11550 of each weight multiplied with pixel values to give final destination
11551 pixel value. By default @var{scale} is auto scaled to sum of weights.
11552
11553 @item duration
11554 Specify how end of stream is determined.
11555 @table @samp
11556 @item longest
11557 The duration of the longest input. (default)
11558
11559 @item shortest
11560 The duration of the shortest input.
11561
11562 @item first
11563 The duration of the first input.
11564 @end table
11565 @end table
11566
11567 @section mpdecimate
11568
11569 Drop frames that do not differ greatly from the previous frame in
11570 order to reduce frame rate.
11571
11572 The main use of this filter is for very-low-bitrate encoding
11573 (e.g. streaming over dialup modem), but it could in theory be used for
11574 fixing movies that were inverse-telecined incorrectly.
11575
11576 A description of the accepted options follows.
11577
11578 @table @option
11579 @item max
11580 Set the maximum number of consecutive frames which can be dropped (if
11581 positive), or the minimum interval between dropped frames (if
11582 negative). If the value is 0, the frame is dropped disregarding the
11583 number of previous sequentially dropped frames.
11584
11585 Default value is 0.
11586
11587 @item hi
11588 @item lo
11589 @item frac
11590 Set the dropping threshold values.
11591
11592 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
11593 represent actual pixel value differences, so a threshold of 64
11594 corresponds to 1 unit of difference for each pixel, or the same spread
11595 out differently over the block.
11596
11597 A frame is a candidate for dropping if no 8x8 blocks differ by more
11598 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
11599 meaning the whole image) differ by more than a threshold of @option{lo}.
11600
11601 Default value for @option{hi} is 64*12, default value for @option{lo} is
11602 64*5, and default value for @option{frac} is 0.33.
11603 @end table
11604
11605
11606 @section negate
11607
11608 Negate (invert) the input video.
11609
11610 It accepts the following option:
11611
11612 @table @option
11613
11614 @item negate_alpha
11615 With value 1, it negates the alpha component, if present. Default value is 0.
11616 @end table
11617
11618 @section nlmeans
11619
11620 Denoise frames using Non-Local Means algorithm.
11621
11622 Each pixel is adjusted by looking for other pixels with similar contexts. This
11623 context similarity is defined by comparing their surrounding patches of size
11624 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
11625 around the pixel.
11626
11627 Note that the research area defines centers for patches, which means some
11628 patches will be made of pixels outside that research area.
11629
11630 The filter accepts the following options.
11631
11632 @table @option
11633 @item s
11634 Set denoising strength.
11635
11636 @item p
11637 Set patch size.
11638
11639 @item pc
11640 Same as @option{p} but for chroma planes.
11641
11642 The default value is @var{0} and means automatic.
11643
11644 @item r
11645 Set research size.
11646
11647 @item rc
11648 Same as @option{r} but for chroma planes.
11649
11650 The default value is @var{0} and means automatic.
11651 @end table
11652
11653 @section nnedi
11654
11655 Deinterlace video using neural network edge directed interpolation.
11656
11657 This filter accepts the following options:
11658
11659 @table @option
11660 @item weights
11661 Mandatory option, without binary file filter can not work.
11662 Currently file can be found here:
11663 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
11664
11665 @item deint
11666 Set which frames to deinterlace, by default it is @code{all}.
11667 Can be @code{all} or @code{interlaced}.
11668
11669 @item field
11670 Set mode of operation.
11671
11672 Can be one of the following:
11673
11674 @table @samp
11675 @item af
11676 Use frame flags, both fields.
11677 @item a
11678 Use frame flags, single field.
11679 @item t
11680 Use top field only.
11681 @item b
11682 Use bottom field only.
11683 @item tf
11684 Use both fields, top first.
11685 @item bf
11686 Use both fields, bottom first.
11687 @end table
11688
11689 @item planes
11690 Set which planes to process, by default filter process all frames.
11691
11692 @item nsize
11693 Set size of local neighborhood around each pixel, used by the predictor neural
11694 network.
11695
11696 Can be one of the following:
11697
11698 @table @samp
11699 @item s8x6
11700 @item s16x6
11701 @item s32x6
11702 @item s48x6
11703 @item s8x4
11704 @item s16x4
11705 @item s32x4
11706 @end table
11707
11708 @item nns
11709 Set the number of neurons in predictor neural network.
11710 Can be one of the following:
11711
11712 @table @samp
11713 @item n16
11714 @item n32
11715 @item n64
11716 @item n128
11717 @item n256
11718 @end table
11719
11720 @item qual
11721 Controls the number of different neural network predictions that are blended
11722 together to compute the final output value. Can be @code{fast}, default or
11723 @code{slow}.
11724
11725 @item etype
11726 Set which set of weights to use in the predictor.
11727 Can be one of the following:
11728
11729 @table @samp
11730 @item a
11731 weights trained to minimize absolute error
11732 @item s
11733 weights trained to minimize squared error
11734 @end table
11735
11736 @item pscrn
11737 Controls whether or not the prescreener neural network is used to decide
11738 which pixels should be processed by the predictor neural network and which
11739 can be handled by simple cubic interpolation.
11740 The prescreener is trained to know whether cubic interpolation will be
11741 sufficient for a pixel or whether it should be predicted by the predictor nn.
11742 The computational complexity of the prescreener nn is much less than that of
11743 the predictor nn. Since most pixels can be handled by cubic interpolation,
11744 using the prescreener generally results in much faster processing.
11745 The prescreener is pretty accurate, so the difference between using it and not
11746 using it is almost always unnoticeable.
11747
11748 Can be one of the following:
11749
11750 @table @samp
11751 @item none
11752 @item original
11753 @item new
11754 @end table
11755
11756 Default is @code{new}.
11757
11758 @item fapprox
11759 Set various debugging flags.
11760 @end table
11761
11762 @section noformat
11763
11764 Force libavfilter not to use any of the specified pixel formats for the
11765 input to the next filter.
11766
11767 It accepts the following parameters:
11768 @table @option
11769
11770 @item pix_fmts
11771 A '|'-separated list of pixel format names, such as
11772 pix_fmts=yuv420p|monow|rgb24".
11773
11774 @end table
11775
11776 @subsection Examples
11777
11778 @itemize
11779 @item
11780 Force libavfilter to use a format different from @var{yuv420p} for the
11781 input to the vflip filter:
11782 @example
11783 noformat=pix_fmts=yuv420p,vflip
11784 @end example
11785
11786 @item
11787 Convert the input video to any of the formats not contained in the list:
11788 @example
11789 noformat=yuv420p|yuv444p|yuv410p
11790 @end example
11791 @end itemize
11792
11793 @section noise
11794
11795 Add noise on video input frame.
11796
11797 The filter accepts the following options:
11798
11799 @table @option
11800 @item all_seed
11801 @item c0_seed
11802 @item c1_seed
11803 @item c2_seed
11804 @item c3_seed
11805 Set noise seed for specific pixel component or all pixel components in case
11806 of @var{all_seed}. Default value is @code{123457}.
11807
11808 @item all_strength, alls
11809 @item c0_strength, c0s
11810 @item c1_strength, c1s
11811 @item c2_strength, c2s
11812 @item c3_strength, c3s
11813 Set noise strength for specific pixel component or all pixel components in case
11814 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
11815
11816 @item all_flags, allf
11817 @item c0_flags, c0f
11818 @item c1_flags, c1f
11819 @item c2_flags, c2f
11820 @item c3_flags, c3f
11821 Set pixel component flags or set flags for all components if @var{all_flags}.
11822 Available values for component flags are:
11823 @table @samp
11824 @item a
11825 averaged temporal noise (smoother)
11826 @item p
11827 mix random noise with a (semi)regular pattern
11828 @item t
11829 temporal noise (noise pattern changes between frames)
11830 @item u
11831 uniform noise (gaussian otherwise)
11832 @end table
11833 @end table
11834
11835 @subsection Examples
11836
11837 Add temporal and uniform noise to input video:
11838 @example
11839 noise=alls=20:allf=t+u
11840 @end example
11841
11842 @section normalize
11843
11844 Normalize RGB video (aka histogram stretching, contrast stretching).
11845 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
11846
11847 For each channel of each frame, the filter computes the input range and maps
11848 it linearly to the user-specified output range. The output range defaults
11849 to the full dynamic range from pure black to pure white.
11850
11851 Temporal smoothing can be used on the input range to reduce flickering (rapid
11852 changes in brightness) caused when small dark or bright objects enter or leave
11853 the scene. This is similar to the auto-exposure (automatic gain control) on a
11854 video camera, and, like a video camera, it may cause a period of over- or
11855 under-exposure of the video.
11856
11857 The R,G,B channels can be normalized independently, which may cause some
11858 color shifting, or linked together as a single channel, which prevents
11859 color shifting. Linked normalization preserves hue. Independent normalization
11860 does not, so it can be used to remove some color casts. Independent and linked
11861 normalization can be combined in any ratio.
11862
11863 The normalize filter accepts the following options:
11864
11865 @table @option
11866 @item blackpt
11867 @item whitept
11868 Colors which define the output range. The minimum input value is mapped to
11869 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
11870 The defaults are black and white respectively. Specifying white for
11871 @var{blackpt} and black for @var{whitept} will give color-inverted,
11872 normalized video. Shades of grey can be used to reduce the dynamic range
11873 (contrast). Specifying saturated colors here can create some interesting
11874 effects.
11875
11876 @item smoothing
11877 The number of previous frames to use for temporal smoothing. The input range
11878 of each channel is smoothed using a rolling average over the current frame
11879 and the @var{smoothing} previous frames. The default is 0 (no temporal
11880 smoothing).
11881
11882 @item independence
11883 Controls the ratio of independent (color shifting) channel normalization to
11884 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
11885 independent. Defaults to 1.0 (fully independent).
11886
11887 @item strength
11888 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
11889 expensive no-op. Defaults to 1.0 (full strength).
11890
11891 @end table
11892
11893 @subsection Examples
11894
11895 Stretch video contrast to use the full dynamic range, with no temporal
11896 smoothing; may flicker depending on the source content:
11897 @example
11898 normalize=blackpt=black:whitept=white:smoothing=0
11899 @end example
11900
11901 As above, but with 50 frames of temporal smoothing; flicker should be
11902 reduced, depending on the source content:
11903 @example
11904 normalize=blackpt=black:whitept=white:smoothing=50
11905 @end example
11906
11907 As above, but with hue-preserving linked channel normalization:
11908 @example
11909 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
11910 @end example
11911
11912 As above, but with half strength:
11913 @example
11914 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
11915 @end example
11916
11917 Map the darkest input color to red, the brightest input color to cyan:
11918 @example
11919 normalize=blackpt=red:whitept=cyan
11920 @end example
11921
11922 @section null
11923
11924 Pass the video source unchanged to the output.
11925
11926 @section ocr
11927 Optical Character Recognition
11928
11929 This filter uses Tesseract for optical character recognition. To enable
11930 compilation of this filter, you need to configure FFmpeg with
11931 @code{--enable-libtesseract}.
11932
11933 It accepts the following options:
11934
11935 @table @option
11936 @item datapath
11937 Set datapath to tesseract data. Default is to use whatever was
11938 set at installation.
11939
11940 @item language
11941 Set language, default is "eng".
11942
11943 @item whitelist
11944 Set character whitelist.
11945
11946 @item blacklist
11947 Set character blacklist.
11948 @end table
11949
11950 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
11951
11952 @section ocv
11953
11954 Apply a video transform using libopencv.
11955
11956 To enable this filter, install the libopencv library and headers and
11957 configure FFmpeg with @code{--enable-libopencv}.
11958
11959 It accepts the following parameters:
11960
11961 @table @option
11962
11963 @item filter_name
11964 The name of the libopencv filter to apply.
11965
11966 @item filter_params
11967 The parameters to pass to the libopencv filter. If not specified, the default
11968 values are assumed.
11969
11970 @end table
11971
11972 Refer to the official libopencv documentation for more precise
11973 information:
11974 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
11975
11976 Several libopencv filters are supported; see the following subsections.
11977
11978 @anchor{dilate}
11979 @subsection dilate
11980
11981 Dilate an image by using a specific structuring element.
11982 It corresponds to the libopencv function @code{cvDilate}.
11983
11984 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
11985
11986 @var{struct_el} represents a structuring element, and has the syntax:
11987 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
11988
11989 @var{cols} and @var{rows} represent the number of columns and rows of
11990 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
11991 point, and @var{shape} the shape for the structuring element. @var{shape}
11992 must be "rect", "cross", "ellipse", or "custom".
11993
11994 If the value for @var{shape} is "custom", it must be followed by a
11995 string of the form "=@var{filename}". The file with name
11996 @var{filename} is assumed to represent a binary image, with each
11997 printable character corresponding to a bright pixel. When a custom
11998 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
11999 or columns and rows of the read file are assumed instead.
12000
12001 The default value for @var{struct_el} is "3x3+0x0/rect".
12002
12003 @var{nb_iterations} specifies the number of times the transform is
12004 applied to the image, and defaults to 1.
12005
12006 Some examples:
12007 @example
12008 # Use the default values
12009 ocv=dilate
12010
12011 # Dilate using a structuring element with a 5x5 cross, iterating two times
12012 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
12013
12014 # Read the shape from the file diamond.shape, iterating two times.
12015 # The file diamond.shape may contain a pattern of characters like this
12016 #   *
12017 #  ***
12018 # *****
12019 #  ***
12020 #   *
12021 # The specified columns and rows are ignored
12022 # but the anchor point coordinates are not
12023 ocv=dilate:0x0+2x2/custom=diamond.shape|2
12024 @end example
12025
12026 @subsection erode
12027
12028 Erode an image by using a specific structuring element.
12029 It corresponds to the libopencv function @code{cvErode}.
12030
12031 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
12032 with the same syntax and semantics as the @ref{dilate} filter.
12033
12034 @subsection smooth
12035
12036 Smooth the input video.
12037
12038 The filter takes the following parameters:
12039 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
12040
12041 @var{type} is the type of smooth filter to apply, and must be one of
12042 the following values: "blur", "blur_no_scale", "median", "gaussian",
12043 or "bilateral". The default value is "gaussian".
12044
12045 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
12046 depend on the smooth type. @var{param1} and
12047 @var{param2} accept integer positive values or 0. @var{param3} and
12048 @var{param4} accept floating point values.
12049
12050 The default value for @var{param1} is 3. The default value for the
12051 other parameters is 0.
12052
12053 These parameters correspond to the parameters assigned to the
12054 libopencv function @code{cvSmooth}.
12055
12056 @section oscilloscope
12057
12058 2D Video Oscilloscope.
12059
12060 Useful to measure spatial impulse, step responses, chroma delays, etc.
12061
12062 It accepts the following parameters:
12063
12064 @table @option
12065 @item x
12066 Set scope center x position.
12067
12068 @item y
12069 Set scope center y position.
12070
12071 @item s
12072 Set scope size, relative to frame diagonal.
12073
12074 @item t
12075 Set scope tilt/rotation.
12076
12077 @item o
12078 Set trace opacity.
12079
12080 @item tx
12081 Set trace center x position.
12082
12083 @item ty
12084 Set trace center y position.
12085
12086 @item tw
12087 Set trace width, relative to width of frame.
12088
12089 @item th
12090 Set trace height, relative to height of frame.
12091
12092 @item c
12093 Set which components to trace. By default it traces first three components.
12094
12095 @item g
12096 Draw trace grid. By default is enabled.
12097
12098 @item st
12099 Draw some statistics. By default is enabled.
12100
12101 @item sc
12102 Draw scope. By default is enabled.
12103 @end table
12104
12105 @subsection Examples
12106
12107 @itemize
12108 @item
12109 Inspect full first row of video frame.
12110 @example
12111 oscilloscope=x=0.5:y=0:s=1
12112 @end example
12113
12114 @item
12115 Inspect full last row of video frame.
12116 @example
12117 oscilloscope=x=0.5:y=1:s=1
12118 @end example
12119
12120 @item
12121 Inspect full 5th line of video frame of height 1080.
12122 @example
12123 oscilloscope=x=0.5:y=5/1080:s=1
12124 @end example
12125
12126 @item
12127 Inspect full last column of video frame.
12128 @example
12129 oscilloscope=x=1:y=0.5:s=1:t=1
12130 @end example
12131
12132 @end itemize
12133
12134 @anchor{overlay}
12135 @section overlay
12136
12137 Overlay one video on top of another.
12138
12139 It takes two inputs and has one output. The first input is the "main"
12140 video on which the second input is overlaid.
12141
12142 It accepts the following parameters:
12143
12144 A description of the accepted options follows.
12145
12146 @table @option
12147 @item x
12148 @item y
12149 Set the expression for the x and y coordinates of the overlaid video
12150 on the main video. Default value is "0" for both expressions. In case
12151 the expression is invalid, it is set to a huge value (meaning that the
12152 overlay will not be displayed within the output visible area).
12153
12154 @item eof_action
12155 See @ref{framesync}.
12156
12157 @item eval
12158 Set when the expressions for @option{x}, and @option{y} are evaluated.
12159
12160 It accepts the following values:
12161 @table @samp
12162 @item init
12163 only evaluate expressions once during the filter initialization or
12164 when a command is processed
12165
12166 @item frame
12167 evaluate expressions for each incoming frame
12168 @end table
12169
12170 Default value is @samp{frame}.
12171
12172 @item shortest
12173 See @ref{framesync}.
12174
12175 @item format
12176 Set the format for the output video.
12177
12178 It accepts the following values:
12179 @table @samp
12180 @item yuv420
12181 force YUV420 output
12182
12183 @item yuv422
12184 force YUV422 output
12185
12186 @item yuv444
12187 force YUV444 output
12188
12189 @item rgb
12190 force packed RGB output
12191
12192 @item gbrp
12193 force planar RGB output
12194
12195 @item auto
12196 automatically pick format
12197 @end table
12198
12199 Default value is @samp{yuv420}.
12200
12201 @item repeatlast
12202 See @ref{framesync}.
12203
12204 @item alpha
12205 Set format of alpha of the overlaid video, it can be @var{straight} or
12206 @var{premultiplied}. Default is @var{straight}.
12207 @end table
12208
12209 The @option{x}, and @option{y} expressions can contain the following
12210 parameters.
12211
12212 @table @option
12213 @item main_w, W
12214 @item main_h, H
12215 The main input width and height.
12216
12217 @item overlay_w, w
12218 @item overlay_h, h
12219 The overlay input width and height.
12220
12221 @item x
12222 @item y
12223 The computed values for @var{x} and @var{y}. They are evaluated for
12224 each new frame.
12225
12226 @item hsub
12227 @item vsub
12228 horizontal and vertical chroma subsample values of the output
12229 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
12230 @var{vsub} is 1.
12231
12232 @item n
12233 the number of input frame, starting from 0
12234
12235 @item pos
12236 the position in the file of the input frame, NAN if unknown
12237
12238 @item t
12239 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
12240
12241 @end table
12242
12243 This filter also supports the @ref{framesync} options.
12244
12245 Note that the @var{n}, @var{pos}, @var{t} variables are available only
12246 when evaluation is done @emph{per frame}, and will evaluate to NAN
12247 when @option{eval} is set to @samp{init}.
12248
12249 Be aware that frames are taken from each input video in timestamp
12250 order, hence, if their initial timestamps differ, it is a good idea
12251 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
12252 have them begin in the same zero timestamp, as the example for
12253 the @var{movie} filter does.
12254
12255 You can chain together more overlays but you should test the
12256 efficiency of such approach.
12257
12258 @subsection Commands
12259
12260 This filter supports the following commands:
12261 @table @option
12262 @item x
12263 @item y
12264 Modify the x and y of the overlay input.
12265 The command accepts the same syntax of the corresponding option.
12266
12267 If the specified expression is not valid, it is kept at its current
12268 value.
12269 @end table
12270
12271 @subsection Examples
12272
12273 @itemize
12274 @item
12275 Draw the overlay at 10 pixels from the bottom right corner of the main
12276 video:
12277 @example
12278 overlay=main_w-overlay_w-10:main_h-overlay_h-10
12279 @end example
12280
12281 Using named options the example above becomes:
12282 @example
12283 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
12284 @end example
12285
12286 @item
12287 Insert a transparent PNG logo in the bottom left corner of the input,
12288 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
12289 @example
12290 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
12291 @end example
12292
12293 @item
12294 Insert 2 different transparent PNG logos (second logo on bottom
12295 right corner) using the @command{ffmpeg} tool:
12296 @example
12297 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
12298 @end example
12299
12300 @item
12301 Add a transparent color layer on top of the main video; @code{WxH}
12302 must specify the size of the main input to the overlay filter:
12303 @example
12304 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
12305 @end example
12306
12307 @item
12308 Play an original video and a filtered version (here with the deshake
12309 filter) side by side using the @command{ffplay} tool:
12310 @example
12311 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
12312 @end example
12313
12314 The above command is the same as:
12315 @example
12316 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
12317 @end example
12318
12319 @item
12320 Make a sliding overlay appearing from the left to the right top part of the
12321 screen starting since time 2:
12322 @example
12323 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
12324 @end example
12325
12326 @item
12327 Compose output by putting two input videos side to side:
12328 @example
12329 ffmpeg -i left.avi -i right.avi -filter_complex "
12330 nullsrc=size=200x100 [background];
12331 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
12332 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
12333 [background][left]       overlay=shortest=1       [background+left];
12334 [background+left][right] overlay=shortest=1:x=100 [left+right]
12335 "
12336 @end example
12337
12338 @item
12339 Mask 10-20 seconds of a video by applying the delogo filter to a section
12340 @example
12341 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
12342 -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]'
12343 masked.avi
12344 @end example
12345
12346 @item
12347 Chain several overlays in cascade:
12348 @example
12349 nullsrc=s=200x200 [bg];
12350 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
12351 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
12352 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
12353 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
12354 [in3] null,       [mid2] overlay=100:100 [out0]
12355 @end example
12356
12357 @end itemize
12358
12359 @section owdenoise
12360
12361 Apply Overcomplete Wavelet denoiser.
12362
12363 The filter accepts the following options:
12364
12365 @table @option
12366 @item depth
12367 Set depth.
12368
12369 Larger depth values will denoise lower frequency components more, but
12370 slow down filtering.
12371
12372 Must be an int in the range 8-16, default is @code{8}.
12373
12374 @item luma_strength, ls
12375 Set luma strength.
12376
12377 Must be a double value in the range 0-1000, default is @code{1.0}.
12378
12379 @item chroma_strength, cs
12380 Set chroma strength.
12381
12382 Must be a double value in the range 0-1000, default is @code{1.0}.
12383 @end table
12384
12385 @anchor{pad}
12386 @section pad
12387
12388 Add paddings to the input image, and place the original input at the
12389 provided @var{x}, @var{y} coordinates.
12390
12391 It accepts the following parameters:
12392
12393 @table @option
12394 @item width, w
12395 @item height, h
12396 Specify an expression for the size of the output image with the
12397 paddings added. If the value for @var{width} or @var{height} is 0, the
12398 corresponding input size is used for the output.
12399
12400 The @var{width} expression can reference the value set by the
12401 @var{height} expression, and vice versa.
12402
12403 The default value of @var{width} and @var{height} is 0.
12404
12405 @item x
12406 @item y
12407 Specify the offsets to place the input image at within the padded area,
12408 with respect to the top/left border of the output image.
12409
12410 The @var{x} expression can reference the value set by the @var{y}
12411 expression, and vice versa.
12412
12413 The default value of @var{x} and @var{y} is 0.
12414
12415 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
12416 so the input image is centered on the padded area.
12417
12418 @item color
12419 Specify the color of the padded area. For the syntax of this option,
12420 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
12421 manual,ffmpeg-utils}.
12422
12423 The default value of @var{color} is "black".
12424
12425 @item eval
12426 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
12427
12428 It accepts the following values:
12429
12430 @table @samp
12431 @item init
12432 Only evaluate expressions once during the filter initialization or when
12433 a command is processed.
12434
12435 @item frame
12436 Evaluate expressions for each incoming frame.
12437
12438 @end table
12439
12440 Default value is @samp{init}.
12441
12442 @item aspect
12443 Pad to aspect instead to a resolution.
12444
12445 @end table
12446
12447 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
12448 options are expressions containing the following constants:
12449
12450 @table @option
12451 @item in_w
12452 @item in_h
12453 The input video width and height.
12454
12455 @item iw
12456 @item ih
12457 These are the same as @var{in_w} and @var{in_h}.
12458
12459 @item out_w
12460 @item out_h
12461 The output width and height (the size of the padded area), as
12462 specified by the @var{width} and @var{height} expressions.
12463
12464 @item ow
12465 @item oh
12466 These are the same as @var{out_w} and @var{out_h}.
12467
12468 @item x
12469 @item y
12470 The x and y offsets as specified by the @var{x} and @var{y}
12471 expressions, or NAN if not yet specified.
12472
12473 @item a
12474 same as @var{iw} / @var{ih}
12475
12476 @item sar
12477 input sample aspect ratio
12478
12479 @item dar
12480 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
12481
12482 @item hsub
12483 @item vsub
12484 The horizontal and vertical chroma subsample values. For example for the
12485 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
12486 @end table
12487
12488 @subsection Examples
12489
12490 @itemize
12491 @item
12492 Add paddings with the color "violet" to the input video. The output video
12493 size is 640x480, and the top-left corner of the input video is placed at
12494 column 0, row 40
12495 @example
12496 pad=640:480:0:40:violet
12497 @end example
12498
12499 The example above is equivalent to the following command:
12500 @example
12501 pad=width=640:height=480:x=0:y=40:color=violet
12502 @end example
12503
12504 @item
12505 Pad the input to get an output with dimensions increased by 3/2,
12506 and put the input video at the center of the padded area:
12507 @example
12508 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
12509 @end example
12510
12511 @item
12512 Pad the input to get a squared output with size equal to the maximum
12513 value between the input width and height, and put the input video at
12514 the center of the padded area:
12515 @example
12516 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
12517 @end example
12518
12519 @item
12520 Pad the input to get a final w/h ratio of 16:9:
12521 @example
12522 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
12523 @end example
12524
12525 @item
12526 In case of anamorphic video, in order to set the output display aspect
12527 correctly, it is necessary to use @var{sar} in the expression,
12528 according to the relation:
12529 @example
12530 (ih * X / ih) * sar = output_dar
12531 X = output_dar / sar
12532 @end example
12533
12534 Thus the previous example needs to be modified to:
12535 @example
12536 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
12537 @end example
12538
12539 @item
12540 Double the output size and put the input video in the bottom-right
12541 corner of the output padded area:
12542 @example
12543 pad="2*iw:2*ih:ow-iw:oh-ih"
12544 @end example
12545 @end itemize
12546
12547 @anchor{palettegen}
12548 @section palettegen
12549
12550 Generate one palette for a whole video stream.
12551
12552 It accepts the following options:
12553
12554 @table @option
12555 @item max_colors
12556 Set the maximum number of colors to quantize in the palette.
12557 Note: the palette will still contain 256 colors; the unused palette entries
12558 will be black.
12559
12560 @item reserve_transparent
12561 Create a palette of 255 colors maximum and reserve the last one for
12562 transparency. Reserving the transparency color is useful for GIF optimization.
12563 If not set, the maximum of colors in the palette will be 256. You probably want
12564 to disable this option for a standalone image.
12565 Set by default.
12566
12567 @item transparency_color
12568 Set the color that will be used as background for transparency.
12569
12570 @item stats_mode
12571 Set statistics mode.
12572
12573 It accepts the following values:
12574 @table @samp
12575 @item full
12576 Compute full frame histograms.
12577 @item diff
12578 Compute histograms only for the part that differs from previous frame. This
12579 might be relevant to give more importance to the moving part of your input if
12580 the background is static.
12581 @item single
12582 Compute new histogram for each frame.
12583 @end table
12584
12585 Default value is @var{full}.
12586 @end table
12587
12588 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
12589 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
12590 color quantization of the palette. This information is also visible at
12591 @var{info} logging level.
12592
12593 @subsection Examples
12594
12595 @itemize
12596 @item
12597 Generate a representative palette of a given video using @command{ffmpeg}:
12598 @example
12599 ffmpeg -i input.mkv -vf palettegen palette.png
12600 @end example
12601 @end itemize
12602
12603 @section paletteuse
12604
12605 Use a palette to downsample an input video stream.
12606
12607 The filter takes two inputs: one video stream and a palette. The palette must
12608 be a 256 pixels image.
12609
12610 It accepts the following options:
12611
12612 @table @option
12613 @item dither
12614 Select dithering mode. Available algorithms are:
12615 @table @samp
12616 @item bayer
12617 Ordered 8x8 bayer dithering (deterministic)
12618 @item heckbert
12619 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
12620 Note: this dithering is sometimes considered "wrong" and is included as a
12621 reference.
12622 @item floyd_steinberg
12623 Floyd and Steingberg dithering (error diffusion)
12624 @item sierra2
12625 Frankie Sierra dithering v2 (error diffusion)
12626 @item sierra2_4a
12627 Frankie Sierra dithering v2 "Lite" (error diffusion)
12628 @end table
12629
12630 Default is @var{sierra2_4a}.
12631
12632 @item bayer_scale
12633 When @var{bayer} dithering is selected, this option defines the scale of the
12634 pattern (how much the crosshatch pattern is visible). A low value means more
12635 visible pattern for less banding, and higher value means less visible pattern
12636 at the cost of more banding.
12637
12638 The option must be an integer value in the range [0,5]. Default is @var{2}.
12639
12640 @item diff_mode
12641 If set, define the zone to process
12642
12643 @table @samp
12644 @item rectangle
12645 Only the changing rectangle will be reprocessed. This is similar to GIF
12646 cropping/offsetting compression mechanism. This option can be useful for speed
12647 if only a part of the image is changing, and has use cases such as limiting the
12648 scope of the error diffusal @option{dither} to the rectangle that bounds the
12649 moving scene (it leads to more deterministic output if the scene doesn't change
12650 much, and as a result less moving noise and better GIF compression).
12651 @end table
12652
12653 Default is @var{none}.
12654
12655 @item new
12656 Take new palette for each output frame.
12657
12658 @item alpha_threshold
12659 Sets the alpha threshold for transparency. Alpha values above this threshold
12660 will be treated as completely opaque, and values below this threshold will be
12661 treated as completely transparent.
12662
12663 The option must be an integer value in the range [0,255]. Default is @var{128}.
12664 @end table
12665
12666 @subsection Examples
12667
12668 @itemize
12669 @item
12670 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
12671 using @command{ffmpeg}:
12672 @example
12673 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
12674 @end example
12675 @end itemize
12676
12677 @section perspective
12678
12679 Correct perspective of video not recorded perpendicular to the screen.
12680
12681 A description of the accepted parameters follows.
12682
12683 @table @option
12684 @item x0
12685 @item y0
12686 @item x1
12687 @item y1
12688 @item x2
12689 @item y2
12690 @item x3
12691 @item y3
12692 Set coordinates expression for top left, top right, bottom left and bottom right corners.
12693 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
12694 If the @code{sense} option is set to @code{source}, then the specified points will be sent
12695 to the corners of the destination. If the @code{sense} option is set to @code{destination},
12696 then the corners of the source will be sent to the specified coordinates.
12697
12698 The expressions can use the following variables:
12699
12700 @table @option
12701 @item W
12702 @item H
12703 the width and height of video frame.
12704 @item in
12705 Input frame count.
12706 @item on
12707 Output frame count.
12708 @end table
12709
12710 @item interpolation
12711 Set interpolation for perspective correction.
12712
12713 It accepts the following values:
12714 @table @samp
12715 @item linear
12716 @item cubic
12717 @end table
12718
12719 Default value is @samp{linear}.
12720
12721 @item sense
12722 Set interpretation of coordinate options.
12723
12724 It accepts the following values:
12725 @table @samp
12726 @item 0, source
12727
12728 Send point in the source specified by the given coordinates to
12729 the corners of the destination.
12730
12731 @item 1, destination
12732
12733 Send the corners of the source to the point in the destination specified
12734 by the given coordinates.
12735
12736 Default value is @samp{source}.
12737 @end table
12738
12739 @item eval
12740 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
12741
12742 It accepts the following values:
12743 @table @samp
12744 @item init
12745 only evaluate expressions once during the filter initialization or
12746 when a command is processed
12747
12748 @item frame
12749 evaluate expressions for each incoming frame
12750 @end table
12751
12752 Default value is @samp{init}.
12753 @end table
12754
12755 @section phase
12756
12757 Delay interlaced video by one field time so that the field order changes.
12758
12759 The intended use is to fix PAL movies that have been captured with the
12760 opposite field order to the film-to-video transfer.
12761
12762 A description of the accepted parameters follows.
12763
12764 @table @option
12765 @item mode
12766 Set phase mode.
12767
12768 It accepts the following values:
12769 @table @samp
12770 @item t
12771 Capture field order top-first, transfer bottom-first.
12772 Filter will delay the bottom field.
12773
12774 @item b
12775 Capture field order bottom-first, transfer top-first.
12776 Filter will delay the top field.
12777
12778 @item p
12779 Capture and transfer with the same field order. This mode only exists
12780 for the documentation of the other options to refer to, but if you
12781 actually select it, the filter will faithfully do nothing.
12782
12783 @item a
12784 Capture field order determined automatically by field flags, transfer
12785 opposite.
12786 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
12787 basis using field flags. If no field information is available,
12788 then this works just like @samp{u}.
12789
12790 @item u
12791 Capture unknown or varying, transfer opposite.
12792 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
12793 analyzing the images and selecting the alternative that produces best
12794 match between the fields.
12795
12796 @item T
12797 Capture top-first, transfer unknown or varying.
12798 Filter selects among @samp{t} and @samp{p} using image analysis.
12799
12800 @item B
12801 Capture bottom-first, transfer unknown or varying.
12802 Filter selects among @samp{b} and @samp{p} using image analysis.
12803
12804 @item A
12805 Capture determined by field flags, transfer unknown or varying.
12806 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
12807 image analysis. If no field information is available, then this works just
12808 like @samp{U}. This is the default mode.
12809
12810 @item U
12811 Both capture and transfer unknown or varying.
12812 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
12813 @end table
12814 @end table
12815
12816 @section pixdesctest
12817
12818 Pixel format descriptor test filter, mainly useful for internal
12819 testing. The output video should be equal to the input video.
12820
12821 For example:
12822 @example
12823 format=monow, pixdesctest
12824 @end example
12825
12826 can be used to test the monowhite pixel format descriptor definition.
12827
12828 @section pixscope
12829
12830 Display sample values of color channels. Mainly useful for checking color
12831 and levels. Minimum supported resolution is 640x480.
12832
12833 The filters accept the following options:
12834
12835 @table @option
12836 @item x
12837 Set scope X position, relative offset on X axis.
12838
12839 @item y
12840 Set scope Y position, relative offset on Y axis.
12841
12842 @item w
12843 Set scope width.
12844
12845 @item h
12846 Set scope height.
12847
12848 @item o
12849 Set window opacity. This window also holds statistics about pixel area.
12850
12851 @item wx
12852 Set window X position, relative offset on X axis.
12853
12854 @item wy
12855 Set window Y position, relative offset on Y axis.
12856 @end table
12857
12858 @section pp
12859
12860 Enable the specified chain of postprocessing subfilters using libpostproc. This
12861 library should be automatically selected with a GPL build (@code{--enable-gpl}).
12862 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
12863 Each subfilter and some options have a short and a long name that can be used
12864 interchangeably, i.e. dr/dering are the same.
12865
12866 The filters accept the following options:
12867
12868 @table @option
12869 @item subfilters
12870 Set postprocessing subfilters string.
12871 @end table
12872
12873 All subfilters share common options to determine their scope:
12874
12875 @table @option
12876 @item a/autoq
12877 Honor the quality commands for this subfilter.
12878
12879 @item c/chrom
12880 Do chrominance filtering, too (default).
12881
12882 @item y/nochrom
12883 Do luminance filtering only (no chrominance).
12884
12885 @item n/noluma
12886 Do chrominance filtering only (no luminance).
12887 @end table
12888
12889 These options can be appended after the subfilter name, separated by a '|'.
12890
12891 Available subfilters are:
12892
12893 @table @option
12894 @item hb/hdeblock[|difference[|flatness]]
12895 Horizontal deblocking filter
12896 @table @option
12897 @item difference
12898 Difference factor where higher values mean more deblocking (default: @code{32}).
12899 @item flatness
12900 Flatness threshold where lower values mean more deblocking (default: @code{39}).
12901 @end table
12902
12903 @item vb/vdeblock[|difference[|flatness]]
12904 Vertical deblocking filter
12905 @table @option
12906 @item difference
12907 Difference factor where higher values mean more deblocking (default: @code{32}).
12908 @item flatness
12909 Flatness threshold where lower values mean more deblocking (default: @code{39}).
12910 @end table
12911
12912 @item ha/hadeblock[|difference[|flatness]]
12913 Accurate horizontal deblocking filter
12914 @table @option
12915 @item difference
12916 Difference factor where higher values mean more deblocking (default: @code{32}).
12917 @item flatness
12918 Flatness threshold where lower values mean more deblocking (default: @code{39}).
12919 @end table
12920
12921 @item va/vadeblock[|difference[|flatness]]
12922 Accurate vertical deblocking filter
12923 @table @option
12924 @item difference
12925 Difference factor where higher values mean more deblocking (default: @code{32}).
12926 @item flatness
12927 Flatness threshold where lower values mean more deblocking (default: @code{39}).
12928 @end table
12929 @end table
12930
12931 The horizontal and vertical deblocking filters share the difference and
12932 flatness values so you cannot set different horizontal and vertical
12933 thresholds.
12934
12935 @table @option
12936 @item h1/x1hdeblock
12937 Experimental horizontal deblocking filter
12938
12939 @item v1/x1vdeblock
12940 Experimental vertical deblocking filter
12941
12942 @item dr/dering
12943 Deringing filter
12944
12945 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
12946 @table @option
12947 @item threshold1
12948 larger -> stronger filtering
12949 @item threshold2
12950 larger -> stronger filtering
12951 @item threshold3
12952 larger -> stronger filtering
12953 @end table
12954
12955 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
12956 @table @option
12957 @item f/fullyrange
12958 Stretch luminance to @code{0-255}.
12959 @end table
12960
12961 @item lb/linblenddeint
12962 Linear blend deinterlacing filter that deinterlaces the given block by
12963 filtering all lines with a @code{(1 2 1)} filter.
12964
12965 @item li/linipoldeint
12966 Linear interpolating deinterlacing filter that deinterlaces the given block by
12967 linearly interpolating every second line.
12968
12969 @item ci/cubicipoldeint
12970 Cubic interpolating deinterlacing filter deinterlaces the given block by
12971 cubically interpolating every second line.
12972
12973 @item md/mediandeint
12974 Median deinterlacing filter that deinterlaces the given block by applying a
12975 median filter to every second line.
12976
12977 @item fd/ffmpegdeint
12978 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
12979 second line with a @code{(-1 4 2 4 -1)} filter.
12980
12981 @item l5/lowpass5
12982 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
12983 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
12984
12985 @item fq/forceQuant[|quantizer]
12986 Overrides the quantizer table from the input with the constant quantizer you
12987 specify.
12988 @table @option
12989 @item quantizer
12990 Quantizer to use
12991 @end table
12992
12993 @item de/default
12994 Default pp filter combination (@code{hb|a,vb|a,dr|a})
12995
12996 @item fa/fast
12997 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
12998
12999 @item ac
13000 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
13001 @end table
13002
13003 @subsection Examples
13004
13005 @itemize
13006 @item
13007 Apply horizontal and vertical deblocking, deringing and automatic
13008 brightness/contrast:
13009 @example
13010 pp=hb/vb/dr/al
13011 @end example
13012
13013 @item
13014 Apply default filters without brightness/contrast correction:
13015 @example
13016 pp=de/-al
13017 @end example
13018
13019 @item
13020 Apply default filters and temporal denoiser:
13021 @example
13022 pp=default/tmpnoise|1|2|3
13023 @end example
13024
13025 @item
13026 Apply deblocking on luminance only, and switch vertical deblocking on or off
13027 automatically depending on available CPU time:
13028 @example
13029 pp=hb|y/vb|a
13030 @end example
13031 @end itemize
13032
13033 @section pp7
13034 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
13035 similar to spp = 6 with 7 point DCT, where only the center sample is
13036 used after IDCT.
13037
13038 The filter accepts the following options:
13039
13040 @table @option
13041 @item qp
13042 Force a constant quantization parameter. It accepts an integer in range
13043 0 to 63. If not set, the filter will use the QP from the video stream
13044 (if available).
13045
13046 @item mode
13047 Set thresholding mode. Available modes are:
13048
13049 @table @samp
13050 @item hard
13051 Set hard thresholding.
13052 @item soft
13053 Set soft thresholding (better de-ringing effect, but likely blurrier).
13054 @item medium
13055 Set medium thresholding (good results, default).
13056 @end table
13057 @end table
13058
13059 @section premultiply
13060 Apply alpha premultiply effect to input video stream using first plane
13061 of second stream as alpha.
13062
13063 Both streams must have same dimensions and same pixel format.
13064
13065 The filter accepts the following option:
13066
13067 @table @option
13068 @item planes
13069 Set which planes will be processed, unprocessed planes will be copied.
13070 By default value 0xf, all planes will be processed.
13071
13072 @item inplace
13073 Do not require 2nd input for processing, instead use alpha plane from input stream.
13074 @end table
13075
13076 @section prewitt
13077 Apply prewitt operator to input video stream.
13078
13079 The filter accepts the following option:
13080
13081 @table @option
13082 @item planes
13083 Set which planes will be processed, unprocessed planes will be copied.
13084 By default value 0xf, all planes will be processed.
13085
13086 @item scale
13087 Set value which will be multiplied with filtered result.
13088
13089 @item delta
13090 Set value which will be added to filtered result.
13091 @end table
13092
13093 @anchor{program_opencl}
13094 @section program_opencl
13095
13096 Filter video using an OpenCL program.
13097
13098 @table @option
13099
13100 @item source
13101 OpenCL program source file.
13102
13103 @item kernel
13104 Kernel name in program.
13105
13106 @item inputs
13107 Number of inputs to the filter.  Defaults to 1.
13108
13109 @item size, s
13110 Size of output frames.  Defaults to the same as the first input.
13111
13112 @end table
13113
13114 The program source file must contain a kernel function with the given name,
13115 which will be run once for each plane of the output.  Each run on a plane
13116 gets enqueued as a separate 2D global NDRange with one work-item for each
13117 pixel to be generated.  The global ID offset for each work-item is therefore
13118 the coordinates of a pixel in the destination image.
13119
13120 The kernel function needs to take the following arguments:
13121 @itemize
13122 @item
13123 Destination image, @var{__write_only image2d_t}.
13124
13125 This image will become the output; the kernel should write all of it.
13126 @item
13127 Frame index, @var{unsigned int}.
13128
13129 This is a counter starting from zero and increasing by one for each frame.
13130 @item
13131 Source images, @var{__read_only image2d_t}.
13132
13133 These are the most recent images on each input.  The kernel may read from
13134 them to generate the output, but they can't be written to.
13135 @end itemize
13136
13137 Example programs:
13138
13139 @itemize
13140 @item
13141 Copy the input to the output (output must be the same size as the input).
13142 @verbatim
13143 __kernel void copy(__write_only image2d_t destination,
13144                    unsigned int index,
13145                    __read_only  image2d_t source)
13146 {
13147     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
13148
13149     int2 location = (int2)(get_global_id(0), get_global_id(1));
13150
13151     float4 value = read_imagef(source, sampler, location);
13152
13153     write_imagef(destination, location, value);
13154 }
13155 @end verbatim
13156
13157 @item
13158 Apply a simple transformation, rotating the input by an amount increasing
13159 with the index counter.  Pixel values are linearly interpolated by the
13160 sampler, and the output need not have the same dimensions as the input.
13161 @verbatim
13162 __kernel void rotate_image(__write_only image2d_t dst,
13163                            unsigned int index,
13164                            __read_only  image2d_t src)
13165 {
13166     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13167                                CLK_FILTER_LINEAR);
13168
13169     float angle = (float)index / 100.0f;
13170
13171     float2 dst_dim = convert_float2(get_image_dim(dst));
13172     float2 src_dim = convert_float2(get_image_dim(src));
13173
13174     float2 dst_cen = dst_dim / 2.0f;
13175     float2 src_cen = src_dim / 2.0f;
13176
13177     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
13178
13179     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
13180     float2 src_pos = {
13181         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
13182         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
13183     };
13184     src_pos = src_pos * src_dim / dst_dim;
13185
13186     float2 src_loc = src_pos + src_cen;
13187
13188     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
13189         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
13190         write_imagef(dst, dst_loc, 0.5f);
13191     else
13192         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
13193 }
13194 @end verbatim
13195
13196 @item
13197 Blend two inputs together, with the amount of each input used varying
13198 with the index counter.
13199 @verbatim
13200 __kernel void blend_images(__write_only image2d_t dst,
13201                            unsigned int index,
13202                            __read_only  image2d_t src1,
13203                            __read_only  image2d_t src2)
13204 {
13205     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13206                                CLK_FILTER_LINEAR);
13207
13208     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
13209
13210     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
13211     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
13212     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
13213
13214     float4 val1 = read_imagef(src1, sampler, src1_loc);
13215     float4 val2 = read_imagef(src2, sampler, src2_loc);
13216
13217     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
13218 }
13219 @end verbatim
13220
13221 @end itemize
13222
13223 @section pseudocolor
13224
13225 Alter frame colors in video with pseudocolors.
13226
13227 This filter accept the following options:
13228
13229 @table @option
13230 @item c0
13231 set pixel first component expression
13232
13233 @item c1
13234 set pixel second component expression
13235
13236 @item c2
13237 set pixel third component expression
13238
13239 @item c3
13240 set pixel fourth component expression, corresponds to the alpha component
13241
13242 @item i
13243 set component to use as base for altering colors
13244 @end table
13245
13246 Each of them specifies the expression to use for computing the lookup table for
13247 the corresponding pixel component values.
13248
13249 The expressions can contain the following constants and functions:
13250
13251 @table @option
13252 @item w
13253 @item h
13254 The input width and height.
13255
13256 @item val
13257 The input value for the pixel component.
13258
13259 @item ymin, umin, vmin, amin
13260 The minimum allowed component value.
13261
13262 @item ymax, umax, vmax, amax
13263 The maximum allowed component value.
13264 @end table
13265
13266 All expressions default to "val".
13267
13268 @subsection Examples
13269
13270 @itemize
13271 @item
13272 Change too high luma values to gradient:
13273 @example
13274 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'"
13275 @end example
13276 @end itemize
13277
13278 @section psnr
13279
13280 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
13281 Ratio) between two input videos.
13282
13283 This filter takes in input two input videos, the first input is
13284 considered the "main" source and is passed unchanged to the
13285 output. The second input is used as a "reference" video for computing
13286 the PSNR.
13287
13288 Both video inputs must have the same resolution and pixel format for
13289 this filter to work correctly. Also it assumes that both inputs
13290 have the same number of frames, which are compared one by one.
13291
13292 The obtained average PSNR is printed through the logging system.
13293
13294 The filter stores the accumulated MSE (mean squared error) of each
13295 frame, and at the end of the processing it is averaged across all frames
13296 equally, and the following formula is applied to obtain the PSNR:
13297
13298 @example
13299 PSNR = 10*log10(MAX^2/MSE)
13300 @end example
13301
13302 Where MAX is the average of the maximum values of each component of the
13303 image.
13304
13305 The description of the accepted parameters follows.
13306
13307 @table @option
13308 @item stats_file, f
13309 If specified the filter will use the named file to save the PSNR of
13310 each individual frame. When filename equals "-" the data is sent to
13311 standard output.
13312
13313 @item stats_version
13314 Specifies which version of the stats file format to use. Details of
13315 each format are written below.
13316 Default value is 1.
13317
13318 @item stats_add_max
13319 Determines whether the max value is output to the stats log.
13320 Default value is 0.
13321 Requires stats_version >= 2. If this is set and stats_version < 2,
13322 the filter will return an error.
13323 @end table
13324
13325 This filter also supports the @ref{framesync} options.
13326
13327 The file printed if @var{stats_file} is selected, contains a sequence of
13328 key/value pairs of the form @var{key}:@var{value} for each compared
13329 couple of frames.
13330
13331 If a @var{stats_version} greater than 1 is specified, a header line precedes
13332 the list of per-frame-pair stats, with key value pairs following the frame
13333 format with the following parameters:
13334
13335 @table @option
13336 @item psnr_log_version
13337 The version of the log file format. Will match @var{stats_version}.
13338
13339 @item fields
13340 A comma separated list of the per-frame-pair parameters included in
13341 the log.
13342 @end table
13343
13344 A description of each shown per-frame-pair parameter follows:
13345
13346 @table @option
13347 @item n
13348 sequential number of the input frame, starting from 1
13349
13350 @item mse_avg
13351 Mean Square Error pixel-by-pixel average difference of the compared
13352 frames, averaged over all the image components.
13353
13354 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
13355 Mean Square Error pixel-by-pixel average difference of the compared
13356 frames for the component specified by the suffix.
13357
13358 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
13359 Peak Signal to Noise ratio of the compared frames for the component
13360 specified by the suffix.
13361
13362 @item max_avg, max_y, max_u, max_v
13363 Maximum allowed value for each channel, and average over all
13364 channels.
13365 @end table
13366
13367 For example:
13368 @example
13369 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
13370 [main][ref] psnr="stats_file=stats.log" [out]
13371 @end example
13372
13373 On this example the input file being processed is compared with the
13374 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
13375 is stored in @file{stats.log}.
13376
13377 @anchor{pullup}
13378 @section pullup
13379
13380 Pulldown reversal (inverse telecine) filter, capable of handling mixed
13381 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
13382 content.
13383
13384 The pullup filter is designed to take advantage of future context in making
13385 its decisions. This filter is stateless in the sense that it does not lock
13386 onto a pattern to follow, but it instead looks forward to the following
13387 fields in order to identify matches and rebuild progressive frames.
13388
13389 To produce content with an even framerate, insert the fps filter after
13390 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
13391 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
13392
13393 The filter accepts the following options:
13394
13395 @table @option
13396 @item jl
13397 @item jr
13398 @item jt
13399 @item jb
13400 These options set the amount of "junk" to ignore at the left, right, top, and
13401 bottom of the image, respectively. Left and right are in units of 8 pixels,
13402 while top and bottom are in units of 2 lines.
13403 The default is 8 pixels on each side.
13404
13405 @item sb
13406 Set the strict breaks. Setting this option to 1 will reduce the chances of
13407 filter generating an occasional mismatched frame, but it may also cause an
13408 excessive number of frames to be dropped during high motion sequences.
13409 Conversely, setting it to -1 will make filter match fields more easily.
13410 This may help processing of video where there is slight blurring between
13411 the fields, but may also cause there to be interlaced frames in the output.
13412 Default value is @code{0}.
13413
13414 @item mp
13415 Set the metric plane to use. It accepts the following values:
13416 @table @samp
13417 @item l
13418 Use luma plane.
13419
13420 @item u
13421 Use chroma blue plane.
13422
13423 @item v
13424 Use chroma red plane.
13425 @end table
13426
13427 This option may be set to use chroma plane instead of the default luma plane
13428 for doing filter's computations. This may improve accuracy on very clean
13429 source material, but more likely will decrease accuracy, especially if there
13430 is chroma noise (rainbow effect) or any grayscale video.
13431 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
13432 load and make pullup usable in realtime on slow machines.
13433 @end table
13434
13435 For best results (without duplicated frames in the output file) it is
13436 necessary to change the output frame rate. For example, to inverse
13437 telecine NTSC input:
13438 @example
13439 ffmpeg -i input -vf pullup -r 24000/1001 ...
13440 @end example
13441
13442 @section qp
13443
13444 Change video quantization parameters (QP).
13445
13446 The filter accepts the following option:
13447
13448 @table @option
13449 @item qp
13450 Set expression for quantization parameter.
13451 @end table
13452
13453 The expression is evaluated through the eval API and can contain, among others,
13454 the following constants:
13455
13456 @table @var
13457 @item known
13458 1 if index is not 129, 0 otherwise.
13459
13460 @item qp
13461 Sequential index starting from -129 to 128.
13462 @end table
13463
13464 @subsection Examples
13465
13466 @itemize
13467 @item
13468 Some equation like:
13469 @example
13470 qp=2+2*sin(PI*qp)
13471 @end example
13472 @end itemize
13473
13474 @section random
13475
13476 Flush video frames from internal cache of frames into a random order.
13477 No frame is discarded.
13478 Inspired by @ref{frei0r} nervous filter.
13479
13480 @table @option
13481 @item frames
13482 Set size in number of frames of internal cache, in range from @code{2} to
13483 @code{512}. Default is @code{30}.
13484
13485 @item seed
13486 Set seed for random number generator, must be an integer included between
13487 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
13488 less than @code{0}, the filter will try to use a good random seed on a
13489 best effort basis.
13490 @end table
13491
13492 @section readeia608
13493
13494 Read closed captioning (EIA-608) information from the top lines of a video frame.
13495
13496 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
13497 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
13498 with EIA-608 data (starting from 0). A description of each metadata value follows:
13499
13500 @table @option
13501 @item lavfi.readeia608.X.cc
13502 The two bytes stored as EIA-608 data (printed in hexadecimal).
13503
13504 @item lavfi.readeia608.X.line
13505 The number of the line on which the EIA-608 data was identified and read.
13506 @end table
13507
13508 This filter accepts the following options:
13509
13510 @table @option
13511 @item scan_min
13512 Set the line to start scanning for EIA-608 data. Default is @code{0}.
13513
13514 @item scan_max
13515 Set the line to end scanning for EIA-608 data. Default is @code{29}.
13516
13517 @item mac
13518 Set minimal acceptable amplitude change for sync codes detection.
13519 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
13520
13521 @item spw
13522 Set the ratio of width reserved for sync code detection.
13523 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
13524
13525 @item mhd
13526 Set the max peaks height difference for sync code detection.
13527 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
13528
13529 @item mpd
13530 Set max peaks period difference for sync code detection.
13531 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
13532
13533 @item msd
13534 Set the first two max start code bits differences.
13535 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
13536
13537 @item bhd
13538 Set the minimum ratio of bits height compared to 3rd start code bit.
13539 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
13540
13541 @item th_w
13542 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
13543
13544 @item th_b
13545 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
13546
13547 @item chp
13548 Enable checking the parity bit. In the event of a parity error, the filter will output
13549 @code{0x00} for that character. Default is false.
13550 @end table
13551
13552 @subsection Examples
13553
13554 @itemize
13555 @item
13556 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
13557 @example
13558 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
13559 @end example
13560 @end itemize
13561
13562 @section readvitc
13563
13564 Read vertical interval timecode (VITC) information from the top lines of a
13565 video frame.
13566
13567 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
13568 timecode value, if a valid timecode has been detected. Further metadata key
13569 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
13570 timecode data has been found or not.
13571
13572 This filter accepts the following options:
13573
13574 @table @option
13575 @item scan_max
13576 Set the maximum number of lines to scan for VITC data. If the value is set to
13577 @code{-1} the full video frame is scanned. Default is @code{45}.
13578
13579 @item thr_b
13580 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
13581 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
13582
13583 @item thr_w
13584 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
13585 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
13586 @end table
13587
13588 @subsection Examples
13589
13590 @itemize
13591 @item
13592 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
13593 draw @code{--:--:--:--} as a placeholder:
13594 @example
13595 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
13596 @end example
13597 @end itemize
13598
13599 @section remap
13600
13601 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
13602
13603 Destination pixel at position (X, Y) will be picked from source (x, y) position
13604 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
13605 value for pixel will be used for destination pixel.
13606
13607 Xmap and Ymap input video streams must be of same dimensions. Output video stream
13608 will have Xmap/Ymap video stream dimensions.
13609 Xmap and Ymap input video streams are 16bit depth, single channel.
13610
13611 @section removegrain
13612
13613 The removegrain filter is a spatial denoiser for progressive video.
13614
13615 @table @option
13616 @item m0
13617 Set mode for the first plane.
13618
13619 @item m1
13620 Set mode for the second plane.
13621
13622 @item m2
13623 Set mode for the third plane.
13624
13625 @item m3
13626 Set mode for the fourth plane.
13627 @end table
13628
13629 Range of mode is from 0 to 24. Description of each mode follows:
13630
13631 @table @var
13632 @item 0
13633 Leave input plane unchanged. Default.
13634
13635 @item 1
13636 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
13637
13638 @item 2
13639 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
13640
13641 @item 3
13642 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
13643
13644 @item 4
13645 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
13646 This is equivalent to a median filter.
13647
13648 @item 5
13649 Line-sensitive clipping giving the minimal change.
13650
13651 @item 6
13652 Line-sensitive clipping, intermediate.
13653
13654 @item 7
13655 Line-sensitive clipping, intermediate.
13656
13657 @item 8
13658 Line-sensitive clipping, intermediate.
13659
13660 @item 9
13661 Line-sensitive clipping on a line where the neighbours pixels are the closest.
13662
13663 @item 10
13664 Replaces the target pixel with the closest neighbour.
13665
13666 @item 11
13667 [1 2 1] horizontal and vertical kernel blur.
13668
13669 @item 12
13670 Same as mode 11.
13671
13672 @item 13
13673 Bob mode, interpolates top field from the line where the neighbours
13674 pixels are the closest.
13675
13676 @item 14
13677 Bob mode, interpolates bottom field from the line where the neighbours
13678 pixels are the closest.
13679
13680 @item 15
13681 Bob mode, interpolates top field. Same as 13 but with a more complicated
13682 interpolation formula.
13683
13684 @item 16
13685 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
13686 interpolation formula.
13687
13688 @item 17
13689 Clips the pixel with the minimum and maximum of respectively the maximum and
13690 minimum of each pair of opposite neighbour pixels.
13691
13692 @item 18
13693 Line-sensitive clipping using opposite neighbours whose greatest distance from
13694 the current pixel is minimal.
13695
13696 @item 19
13697 Replaces the pixel with the average of its 8 neighbours.
13698
13699 @item 20
13700 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
13701
13702 @item 21
13703 Clips pixels using the averages of opposite neighbour.
13704
13705 @item 22
13706 Same as mode 21 but simpler and faster.
13707
13708 @item 23
13709 Small edge and halo removal, but reputed useless.
13710
13711 @item 24
13712 Similar as 23.
13713 @end table
13714
13715 @section removelogo
13716
13717 Suppress a TV station logo, using an image file to determine which
13718 pixels comprise the logo. It works by filling in the pixels that
13719 comprise the logo with neighboring pixels.
13720
13721 The filter accepts the following options:
13722
13723 @table @option
13724 @item filename, f
13725 Set the filter bitmap file, which can be any image format supported by
13726 libavformat. The width and height of the image file must match those of the
13727 video stream being processed.
13728 @end table
13729
13730 Pixels in the provided bitmap image with a value of zero are not
13731 considered part of the logo, non-zero pixels are considered part of
13732 the logo. If you use white (255) for the logo and black (0) for the
13733 rest, you will be safe. For making the filter bitmap, it is
13734 recommended to take a screen capture of a black frame with the logo
13735 visible, and then using a threshold filter followed by the erode
13736 filter once or twice.
13737
13738 If needed, little splotches can be fixed manually. Remember that if
13739 logo pixels are not covered, the filter quality will be much
13740 reduced. Marking too many pixels as part of the logo does not hurt as
13741 much, but it will increase the amount of blurring needed to cover over
13742 the image and will destroy more information than necessary, and extra
13743 pixels will slow things down on a large logo.
13744
13745 @section repeatfields
13746
13747 This filter uses the repeat_field flag from the Video ES headers and hard repeats
13748 fields based on its value.
13749
13750 @section reverse
13751
13752 Reverse a video clip.
13753
13754 Warning: This filter requires memory to buffer the entire clip, so trimming
13755 is suggested.
13756
13757 @subsection Examples
13758
13759 @itemize
13760 @item
13761 Take the first 5 seconds of a clip, and reverse it.
13762 @example
13763 trim=end=5,reverse
13764 @end example
13765 @end itemize
13766
13767 @section roberts
13768 Apply roberts cross operator to input video stream.
13769
13770 The filter accepts the following option:
13771
13772 @table @option
13773 @item planes
13774 Set which planes will be processed, unprocessed planes will be copied.
13775 By default value 0xf, all planes will be processed.
13776
13777 @item scale
13778 Set value which will be multiplied with filtered result.
13779
13780 @item delta
13781 Set value which will be added to filtered result.
13782 @end table
13783
13784 @section rotate
13785
13786 Rotate video by an arbitrary angle expressed in radians.
13787
13788 The filter accepts the following options:
13789
13790 A description of the optional parameters follows.
13791 @table @option
13792 @item angle, a
13793 Set an expression for the angle by which to rotate the input video
13794 clockwise, expressed as a number of radians. A negative value will
13795 result in a counter-clockwise rotation. By default it is set to "0".
13796
13797 This expression is evaluated for each frame.
13798
13799 @item out_w, ow
13800 Set the output width expression, default value is "iw".
13801 This expression is evaluated just once during configuration.
13802
13803 @item out_h, oh
13804 Set the output height expression, default value is "ih".
13805 This expression is evaluated just once during configuration.
13806
13807 @item bilinear
13808 Enable bilinear interpolation if set to 1, a value of 0 disables
13809 it. Default value is 1.
13810
13811 @item fillcolor, c
13812 Set the color used to fill the output area not covered by the rotated
13813 image. For the general syntax of this option, check the
13814 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
13815 If the special value "none" is selected then no
13816 background is printed (useful for example if the background is never shown).
13817
13818 Default value is "black".
13819 @end table
13820
13821 The expressions for the angle and the output size can contain the
13822 following constants and functions:
13823
13824 @table @option
13825 @item n
13826 sequential number of the input frame, starting from 0. It is always NAN
13827 before the first frame is filtered.
13828
13829 @item t
13830 time in seconds of the input frame, it is set to 0 when the filter is
13831 configured. It is always NAN before the first frame is filtered.
13832
13833 @item hsub
13834 @item vsub
13835 horizontal and vertical chroma subsample values. For example for the
13836 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13837
13838 @item in_w, iw
13839 @item in_h, ih
13840 the input video width and height
13841
13842 @item out_w, ow
13843 @item out_h, oh
13844 the output width and height, that is the size of the padded area as
13845 specified by the @var{width} and @var{height} expressions
13846
13847 @item rotw(a)
13848 @item roth(a)
13849 the minimal width/height required for completely containing the input
13850 video rotated by @var{a} radians.
13851
13852 These are only available when computing the @option{out_w} and
13853 @option{out_h} expressions.
13854 @end table
13855
13856 @subsection Examples
13857
13858 @itemize
13859 @item
13860 Rotate the input by PI/6 radians clockwise:
13861 @example
13862 rotate=PI/6
13863 @end example
13864
13865 @item
13866 Rotate the input by PI/6 radians counter-clockwise:
13867 @example
13868 rotate=-PI/6
13869 @end example
13870
13871 @item
13872 Rotate the input by 45 degrees clockwise:
13873 @example
13874 rotate=45*PI/180
13875 @end example
13876
13877 @item
13878 Apply a constant rotation with period T, starting from an angle of PI/3:
13879 @example
13880 rotate=PI/3+2*PI*t/T
13881 @end example
13882
13883 @item
13884 Make the input video rotation oscillating with a period of T
13885 seconds and an amplitude of A radians:
13886 @example
13887 rotate=A*sin(2*PI/T*t)
13888 @end example
13889
13890 @item
13891 Rotate the video, output size is chosen so that the whole rotating
13892 input video is always completely contained in the output:
13893 @example
13894 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
13895 @end example
13896
13897 @item
13898 Rotate the video, reduce the output size so that no background is ever
13899 shown:
13900 @example
13901 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
13902 @end example
13903 @end itemize
13904
13905 @subsection Commands
13906
13907 The filter supports the following commands:
13908
13909 @table @option
13910 @item a, angle
13911 Set the angle expression.
13912 The command accepts the same syntax of the corresponding option.
13913
13914 If the specified expression is not valid, it is kept at its current
13915 value.
13916 @end table
13917
13918 @section sab
13919
13920 Apply Shape Adaptive Blur.
13921
13922 The filter accepts the following options:
13923
13924 @table @option
13925 @item luma_radius, lr
13926 Set luma blur filter strength, must be a value in range 0.1-4.0, default
13927 value is 1.0. A greater value will result in a more blurred image, and
13928 in slower processing.
13929
13930 @item luma_pre_filter_radius, lpfr
13931 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
13932 value is 1.0.
13933
13934 @item luma_strength, ls
13935 Set luma maximum difference between pixels to still be considered, must
13936 be a value in the 0.1-100.0 range, default value is 1.0.
13937
13938 @item chroma_radius, cr
13939 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
13940 greater value will result in a more blurred image, and in slower
13941 processing.
13942
13943 @item chroma_pre_filter_radius, cpfr
13944 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
13945
13946 @item chroma_strength, cs
13947 Set chroma maximum difference between pixels to still be considered,
13948 must be a value in the -0.9-100.0 range.
13949 @end table
13950
13951 Each chroma option value, if not explicitly specified, is set to the
13952 corresponding luma option value.
13953
13954 @anchor{scale}
13955 @section scale
13956
13957 Scale (resize) the input video, using the libswscale library.
13958
13959 The scale filter forces the output display aspect ratio to be the same
13960 of the input, by changing the output sample aspect ratio.
13961
13962 If the input image format is different from the format requested by
13963 the next filter, the scale filter will convert the input to the
13964 requested format.
13965
13966 @subsection Options
13967 The filter accepts the following options, or any of the options
13968 supported by the libswscale scaler.
13969
13970 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
13971 the complete list of scaler options.
13972
13973 @table @option
13974 @item width, w
13975 @item height, h
13976 Set the output video dimension expression. Default value is the input
13977 dimension.
13978
13979 If the @var{width} or @var{w} value is 0, the input width is used for
13980 the output. If the @var{height} or @var{h} value is 0, the input height
13981 is used for the output.
13982
13983 If one and only one of the values is -n with n >= 1, the scale filter
13984 will use a value that maintains the aspect ratio of the input image,
13985 calculated from the other specified dimension. After that it will,
13986 however, make sure that the calculated dimension is divisible by n and
13987 adjust the value if necessary.
13988
13989 If both values are -n with n >= 1, the behavior will be identical to
13990 both values being set to 0 as previously detailed.
13991
13992 See below for the list of accepted constants for use in the dimension
13993 expression.
13994
13995 @item eval
13996 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
13997
13998 @table @samp
13999 @item init
14000 Only evaluate expressions once during the filter initialization or when a command is processed.
14001
14002 @item frame
14003 Evaluate expressions for each incoming frame.
14004
14005 @end table
14006
14007 Default value is @samp{init}.
14008
14009
14010 @item interl
14011 Set the interlacing mode. It accepts the following values:
14012
14013 @table @samp
14014 @item 1
14015 Force interlaced aware scaling.
14016
14017 @item 0
14018 Do not apply interlaced scaling.
14019
14020 @item -1
14021 Select interlaced aware scaling depending on whether the source frames
14022 are flagged as interlaced or not.
14023 @end table
14024
14025 Default value is @samp{0}.
14026
14027 @item flags
14028 Set libswscale scaling flags. See
14029 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14030 complete list of values. If not explicitly specified the filter applies
14031 the default flags.
14032
14033
14034 @item param0, param1
14035 Set libswscale input parameters for scaling algorithms that need them. See
14036 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14037 complete documentation. If not explicitly specified the filter applies
14038 empty parameters.
14039
14040
14041
14042 @item size, s
14043 Set the video size. For the syntax of this option, check the
14044 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14045
14046 @item in_color_matrix
14047 @item out_color_matrix
14048 Set in/output YCbCr color space type.
14049
14050 This allows the autodetected value to be overridden as well as allows forcing
14051 a specific value used for the output and encoder.
14052
14053 If not specified, the color space type depends on the pixel format.
14054
14055 Possible values:
14056
14057 @table @samp
14058 @item auto
14059 Choose automatically.
14060
14061 @item bt709
14062 Format conforming to International Telecommunication Union (ITU)
14063 Recommendation BT.709.
14064
14065 @item fcc
14066 Set color space conforming to the United States Federal Communications
14067 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
14068
14069 @item bt601
14070 Set color space conforming to:
14071
14072 @itemize
14073 @item
14074 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
14075
14076 @item
14077 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
14078
14079 @item
14080 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
14081
14082 @end itemize
14083
14084 @item smpte240m
14085 Set color space conforming to SMPTE ST 240:1999.
14086 @end table
14087
14088 @item in_range
14089 @item out_range
14090 Set in/output YCbCr sample range.
14091
14092 This allows the autodetected value to be overridden as well as allows forcing
14093 a specific value used for the output and encoder. If not specified, the
14094 range depends on the pixel format. Possible values:
14095
14096 @table @samp
14097 @item auto/unknown
14098 Choose automatically.
14099
14100 @item jpeg/full/pc
14101 Set full range (0-255 in case of 8-bit luma).
14102
14103 @item mpeg/limited/tv
14104 Set "MPEG" range (16-235 in case of 8-bit luma).
14105 @end table
14106
14107 @item force_original_aspect_ratio
14108 Enable decreasing or increasing output video width or height if necessary to
14109 keep the original aspect ratio. Possible values:
14110
14111 @table @samp
14112 @item disable
14113 Scale the video as specified and disable this feature.
14114
14115 @item decrease
14116 The output video dimensions will automatically be decreased if needed.
14117
14118 @item increase
14119 The output video dimensions will automatically be increased if needed.
14120
14121 @end table
14122
14123 One useful instance of this option is that when you know a specific device's
14124 maximum allowed resolution, you can use this to limit the output video to
14125 that, while retaining the aspect ratio. For example, device A allows
14126 1280x720 playback, and your video is 1920x800. Using this option (set it to
14127 decrease) and specifying 1280x720 to the command line makes the output
14128 1280x533.
14129
14130 Please note that this is a different thing than specifying -1 for @option{w}
14131 or @option{h}, you still need to specify the output resolution for this option
14132 to work.
14133
14134 @end table
14135
14136 The values of the @option{w} and @option{h} options are expressions
14137 containing the following constants:
14138
14139 @table @var
14140 @item in_w
14141 @item in_h
14142 The input width and height
14143
14144 @item iw
14145 @item ih
14146 These are the same as @var{in_w} and @var{in_h}.
14147
14148 @item out_w
14149 @item out_h
14150 The output (scaled) width and height
14151
14152 @item ow
14153 @item oh
14154 These are the same as @var{out_w} and @var{out_h}
14155
14156 @item a
14157 The same as @var{iw} / @var{ih}
14158
14159 @item sar
14160 input sample aspect ratio
14161
14162 @item dar
14163 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
14164
14165 @item hsub
14166 @item vsub
14167 horizontal and vertical input chroma subsample values. For example for the
14168 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14169
14170 @item ohsub
14171 @item ovsub
14172 horizontal and vertical output chroma subsample values. For example for the
14173 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14174 @end table
14175
14176 @subsection Examples
14177
14178 @itemize
14179 @item
14180 Scale the input video to a size of 200x100
14181 @example
14182 scale=w=200:h=100
14183 @end example
14184
14185 This is equivalent to:
14186 @example
14187 scale=200:100
14188 @end example
14189
14190 or:
14191 @example
14192 scale=200x100
14193 @end example
14194
14195 @item
14196 Specify a size abbreviation for the output size:
14197 @example
14198 scale=qcif
14199 @end example
14200
14201 which can also be written as:
14202 @example
14203 scale=size=qcif
14204 @end example
14205
14206 @item
14207 Scale the input to 2x:
14208 @example
14209 scale=w=2*iw:h=2*ih
14210 @end example
14211
14212 @item
14213 The above is the same as:
14214 @example
14215 scale=2*in_w:2*in_h
14216 @end example
14217
14218 @item
14219 Scale the input to 2x with forced interlaced scaling:
14220 @example
14221 scale=2*iw:2*ih:interl=1
14222 @end example
14223
14224 @item
14225 Scale the input to half size:
14226 @example
14227 scale=w=iw/2:h=ih/2
14228 @end example
14229
14230 @item
14231 Increase the width, and set the height to the same size:
14232 @example
14233 scale=3/2*iw:ow
14234 @end example
14235
14236 @item
14237 Seek Greek harmony:
14238 @example
14239 scale=iw:1/PHI*iw
14240 scale=ih*PHI:ih
14241 @end example
14242
14243 @item
14244 Increase the height, and set the width to 3/2 of the height:
14245 @example
14246 scale=w=3/2*oh:h=3/5*ih
14247 @end example
14248
14249 @item
14250 Increase the size, making the size a multiple of the chroma
14251 subsample values:
14252 @example
14253 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
14254 @end example
14255
14256 @item
14257 Increase the width to a maximum of 500 pixels,
14258 keeping the same aspect ratio as the input:
14259 @example
14260 scale=w='min(500\, iw*3/2):h=-1'
14261 @end example
14262
14263 @item
14264 Make pixels square by combining scale and setsar:
14265 @example
14266 scale='trunc(ih*dar):ih',setsar=1/1
14267 @end example
14268
14269 @item
14270 Make pixels square by combining scale and setsar,
14271 making sure the resulting resolution is even (required by some codecs):
14272 @example
14273 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
14274 @end example
14275 @end itemize
14276
14277 @subsection Commands
14278
14279 This filter supports the following commands:
14280 @table @option
14281 @item width, w
14282 @item height, h
14283 Set the output video dimension expression.
14284 The command accepts the same syntax of the corresponding option.
14285
14286 If the specified expression is not valid, it is kept at its current
14287 value.
14288 @end table
14289
14290 @section scale_npp
14291
14292 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
14293 format conversion on CUDA video frames. Setting the output width and height
14294 works in the same way as for the @var{scale} filter.
14295
14296 The following additional options are accepted:
14297 @table @option
14298 @item format
14299 The pixel format of the output CUDA frames. If set to the string "same" (the
14300 default), the input format will be kept. Note that automatic format negotiation
14301 and conversion is not yet supported for hardware frames
14302
14303 @item interp_algo
14304 The interpolation algorithm used for resizing. One of the following:
14305 @table @option
14306 @item nn
14307 Nearest neighbour.
14308
14309 @item linear
14310 @item cubic
14311 @item cubic2p_bspline
14312 2-parameter cubic (B=1, C=0)
14313
14314 @item cubic2p_catmullrom
14315 2-parameter cubic (B=0, C=1/2)
14316
14317 @item cubic2p_b05c03
14318 2-parameter cubic (B=1/2, C=3/10)
14319
14320 @item super
14321 Supersampling
14322
14323 @item lanczos
14324 @end table
14325
14326 @end table
14327
14328 @section scale2ref
14329
14330 Scale (resize) the input video, based on a reference video.
14331
14332 See the scale filter for available options, scale2ref supports the same but
14333 uses the reference video instead of the main input as basis. scale2ref also
14334 supports the following additional constants for the @option{w} and
14335 @option{h} options:
14336
14337 @table @var
14338 @item main_w
14339 @item main_h
14340 The main input video's width and height
14341
14342 @item main_a
14343 The same as @var{main_w} / @var{main_h}
14344
14345 @item main_sar
14346 The main input video's sample aspect ratio
14347
14348 @item main_dar, mdar
14349 The main input video's display aspect ratio. Calculated from
14350 @code{(main_w / main_h) * main_sar}.
14351
14352 @item main_hsub
14353 @item main_vsub
14354 The main input video's horizontal and vertical chroma subsample values.
14355 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
14356 is 1.
14357 @end table
14358
14359 @subsection Examples
14360
14361 @itemize
14362 @item
14363 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
14364 @example
14365 'scale2ref[b][a];[a][b]overlay'
14366 @end example
14367 @end itemize
14368
14369 @anchor{selectivecolor}
14370 @section selectivecolor
14371
14372 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
14373 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
14374 by the "purity" of the color (that is, how saturated it already is).
14375
14376 This filter is similar to the Adobe Photoshop Selective Color tool.
14377
14378 The filter accepts the following options:
14379
14380 @table @option
14381 @item correction_method
14382 Select color correction method.
14383
14384 Available values are:
14385 @table @samp
14386 @item absolute
14387 Specified adjustments are applied "as-is" (added/subtracted to original pixel
14388 component value).
14389 @item relative
14390 Specified adjustments are relative to the original component value.
14391 @end table
14392 Default is @code{absolute}.
14393 @item reds
14394 Adjustments for red pixels (pixels where the red component is the maximum)
14395 @item yellows
14396 Adjustments for yellow pixels (pixels where the blue component is the minimum)
14397 @item greens
14398 Adjustments for green pixels (pixels where the green component is the maximum)
14399 @item cyans
14400 Adjustments for cyan pixels (pixels where the red component is the minimum)
14401 @item blues
14402 Adjustments for blue pixels (pixels where the blue component is the maximum)
14403 @item magentas
14404 Adjustments for magenta pixels (pixels where the green component is the minimum)
14405 @item whites
14406 Adjustments for white pixels (pixels where all components are greater than 128)
14407 @item neutrals
14408 Adjustments for all pixels except pure black and pure white
14409 @item blacks
14410 Adjustments for black pixels (pixels where all components are lesser than 128)
14411 @item psfile
14412 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
14413 @end table
14414
14415 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
14416 4 space separated floating point adjustment values in the [-1,1] range,
14417 respectively to adjust the amount of cyan, magenta, yellow and black for the
14418 pixels of its range.
14419
14420 @subsection Examples
14421
14422 @itemize
14423 @item
14424 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
14425 increase magenta by 27% in blue areas:
14426 @example
14427 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
14428 @end example
14429
14430 @item
14431 Use a Photoshop selective color preset:
14432 @example
14433 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
14434 @end example
14435 @end itemize
14436
14437 @anchor{separatefields}
14438 @section separatefields
14439
14440 The @code{separatefields} takes a frame-based video input and splits
14441 each frame into its components fields, producing a new half height clip
14442 with twice the frame rate and twice the frame count.
14443
14444 This filter use field-dominance information in frame to decide which
14445 of each pair of fields to place first in the output.
14446 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
14447
14448 @section setdar, setsar
14449
14450 The @code{setdar} filter sets the Display Aspect Ratio for the filter
14451 output video.
14452
14453 This is done by changing the specified Sample (aka Pixel) Aspect
14454 Ratio, according to the following equation:
14455 @example
14456 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
14457 @end example
14458
14459 Keep in mind that the @code{setdar} filter does not modify the pixel
14460 dimensions of the video frame. Also, the display aspect ratio set by
14461 this filter may be changed by later filters in the filterchain,
14462 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
14463 applied.
14464
14465 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
14466 the filter output video.
14467
14468 Note that as a consequence of the application of this filter, the
14469 output display aspect ratio will change according to the equation
14470 above.
14471
14472 Keep in mind that the sample aspect ratio set by the @code{setsar}
14473 filter may be changed by later filters in the filterchain, e.g. if
14474 another "setsar" or a "setdar" filter is applied.
14475
14476 It accepts the following parameters:
14477
14478 @table @option
14479 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
14480 Set the aspect ratio used by the filter.
14481
14482 The parameter can be a floating point number string, an expression, or
14483 a string of the form @var{num}:@var{den}, where @var{num} and
14484 @var{den} are the numerator and denominator of the aspect ratio. If
14485 the parameter is not specified, it is assumed the value "0".
14486 In case the form "@var{num}:@var{den}" is used, the @code{:} character
14487 should be escaped.
14488
14489 @item max
14490 Set the maximum integer value to use for expressing numerator and
14491 denominator when reducing the expressed aspect ratio to a rational.
14492 Default value is @code{100}.
14493
14494 @end table
14495
14496 The parameter @var{sar} is an expression containing
14497 the following constants:
14498
14499 @table @option
14500 @item E, PI, PHI
14501 These are approximated values for the mathematical constants e
14502 (Euler's number), pi (Greek pi), and phi (the golden ratio).
14503
14504 @item w, h
14505 The input width and height.
14506
14507 @item a
14508 These are the same as @var{w} / @var{h}.
14509
14510 @item sar
14511 The input sample aspect ratio.
14512
14513 @item dar
14514 The input display aspect ratio. It is the same as
14515 (@var{w} / @var{h}) * @var{sar}.
14516
14517 @item hsub, vsub
14518 Horizontal and vertical chroma subsample values. For example, for the
14519 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14520 @end table
14521
14522 @subsection Examples
14523
14524 @itemize
14525
14526 @item
14527 To change the display aspect ratio to 16:9, specify one of the following:
14528 @example
14529 setdar=dar=1.77777
14530 setdar=dar=16/9
14531 @end example
14532
14533 @item
14534 To change the sample aspect ratio to 10:11, specify:
14535 @example
14536 setsar=sar=10/11
14537 @end example
14538
14539 @item
14540 To set a display aspect ratio of 16:9, and specify a maximum integer value of
14541 1000 in the aspect ratio reduction, use the command:
14542 @example
14543 setdar=ratio=16/9:max=1000
14544 @end example
14545
14546 @end itemize
14547
14548 @anchor{setfield}
14549 @section setfield
14550
14551 Force field for the output video frame.
14552
14553 The @code{setfield} filter marks the interlace type field for the
14554 output frames. It does not change the input frame, but only sets the
14555 corresponding property, which affects how the frame is treated by
14556 following filters (e.g. @code{fieldorder} or @code{yadif}).
14557
14558 The filter accepts the following options:
14559
14560 @table @option
14561
14562 @item mode
14563 Available values are:
14564
14565 @table @samp
14566 @item auto
14567 Keep the same field property.
14568
14569 @item bff
14570 Mark the frame as bottom-field-first.
14571
14572 @item tff
14573 Mark the frame as top-field-first.
14574
14575 @item prog
14576 Mark the frame as progressive.
14577 @end table
14578 @end table
14579
14580 @section showinfo
14581
14582 Show a line containing various information for each input video frame.
14583 The input video is not modified.
14584
14585 The shown line contains a sequence of key/value pairs of the form
14586 @var{key}:@var{value}.
14587
14588 The following values are shown in the output:
14589
14590 @table @option
14591 @item n
14592 The (sequential) number of the input frame, starting from 0.
14593
14594 @item pts
14595 The Presentation TimeStamp of the input frame, expressed as a number of
14596 time base units. The time base unit depends on the filter input pad.
14597
14598 @item pts_time
14599 The Presentation TimeStamp of the input frame, expressed as a number of
14600 seconds.
14601
14602 @item pos
14603 The position of the frame in the input stream, or -1 if this information is
14604 unavailable and/or meaningless (for example in case of synthetic video).
14605
14606 @item fmt
14607 The pixel format name.
14608
14609 @item sar
14610 The sample aspect ratio of the input frame, expressed in the form
14611 @var{num}/@var{den}.
14612
14613 @item s
14614 The size of the input frame. For the syntax of this option, check the
14615 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14616
14617 @item i
14618 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
14619 for bottom field first).
14620
14621 @item iskey
14622 This is 1 if the frame is a key frame, 0 otherwise.
14623
14624 @item type
14625 The picture type of the input frame ("I" for an I-frame, "P" for a
14626 P-frame, "B" for a B-frame, or "?" for an unknown type).
14627 Also refer to the documentation of the @code{AVPictureType} enum and of
14628 the @code{av_get_picture_type_char} function defined in
14629 @file{libavutil/avutil.h}.
14630
14631 @item checksum
14632 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
14633
14634 @item plane_checksum
14635 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
14636 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
14637 @end table
14638
14639 @section showpalette
14640
14641 Displays the 256 colors palette of each frame. This filter is only relevant for
14642 @var{pal8} pixel format frames.
14643
14644 It accepts the following option:
14645
14646 @table @option
14647 @item s
14648 Set the size of the box used to represent one palette color entry. Default is
14649 @code{30} (for a @code{30x30} pixel box).
14650 @end table
14651
14652 @section shuffleframes
14653
14654 Reorder and/or duplicate and/or drop video frames.
14655
14656 It accepts the following parameters:
14657
14658 @table @option
14659 @item mapping
14660 Set the destination indexes of input frames.
14661 This is space or '|' separated list of indexes that maps input frames to output
14662 frames. Number of indexes also sets maximal value that each index may have.
14663 '-1' index have special meaning and that is to drop frame.
14664 @end table
14665
14666 The first frame has the index 0. The default is to keep the input unchanged.
14667
14668 @subsection Examples
14669
14670 @itemize
14671 @item
14672 Swap second and third frame of every three frames of the input:
14673 @example
14674 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
14675 @end example
14676
14677 @item
14678 Swap 10th and 1st frame of every ten frames of the input:
14679 @example
14680 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
14681 @end example
14682 @end itemize
14683
14684 @section shuffleplanes
14685
14686 Reorder and/or duplicate video planes.
14687
14688 It accepts the following parameters:
14689
14690 @table @option
14691
14692 @item map0
14693 The index of the input plane to be used as the first output plane.
14694
14695 @item map1
14696 The index of the input plane to be used as the second output plane.
14697
14698 @item map2
14699 The index of the input plane to be used as the third output plane.
14700
14701 @item map3
14702 The index of the input plane to be used as the fourth output plane.
14703
14704 @end table
14705
14706 The first plane has the index 0. The default is to keep the input unchanged.
14707
14708 @subsection Examples
14709
14710 @itemize
14711 @item
14712 Swap the second and third planes of the input:
14713 @example
14714 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
14715 @end example
14716 @end itemize
14717
14718 @anchor{signalstats}
14719 @section signalstats
14720 Evaluate various visual metrics that assist in determining issues associated
14721 with the digitization of analog video media.
14722
14723 By default the filter will log these metadata values:
14724
14725 @table @option
14726 @item YMIN
14727 Display the minimal Y value contained within the input frame. Expressed in
14728 range of [0-255].
14729
14730 @item YLOW
14731 Display the Y value at the 10% percentile within the input frame. Expressed in
14732 range of [0-255].
14733
14734 @item YAVG
14735 Display the average Y value within the input frame. Expressed in range of
14736 [0-255].
14737
14738 @item YHIGH
14739 Display the Y value at the 90% percentile within the input frame. Expressed in
14740 range of [0-255].
14741
14742 @item YMAX
14743 Display the maximum Y value contained within the input frame. Expressed in
14744 range of [0-255].
14745
14746 @item UMIN
14747 Display the minimal U value contained within the input frame. Expressed in
14748 range of [0-255].
14749
14750 @item ULOW
14751 Display the U value at the 10% percentile within the input frame. Expressed in
14752 range of [0-255].
14753
14754 @item UAVG
14755 Display the average U value within the input frame. Expressed in range of
14756 [0-255].
14757
14758 @item UHIGH
14759 Display the U value at the 90% percentile within the input frame. Expressed in
14760 range of [0-255].
14761
14762 @item UMAX
14763 Display the maximum U value contained within the input frame. Expressed in
14764 range of [0-255].
14765
14766 @item VMIN
14767 Display the minimal V value contained within the input frame. Expressed in
14768 range of [0-255].
14769
14770 @item VLOW
14771 Display the V value at the 10% percentile within the input frame. Expressed in
14772 range of [0-255].
14773
14774 @item VAVG
14775 Display the average V value within the input frame. Expressed in range of
14776 [0-255].
14777
14778 @item VHIGH
14779 Display the V value at the 90% percentile within the input frame. Expressed in
14780 range of [0-255].
14781
14782 @item VMAX
14783 Display the maximum V value contained within the input frame. Expressed in
14784 range of [0-255].
14785
14786 @item SATMIN
14787 Display the minimal saturation value contained within the input frame.
14788 Expressed in range of [0-~181.02].
14789
14790 @item SATLOW
14791 Display the saturation value at the 10% percentile within the input frame.
14792 Expressed in range of [0-~181.02].
14793
14794 @item SATAVG
14795 Display the average saturation value within the input frame. Expressed in range
14796 of [0-~181.02].
14797
14798 @item SATHIGH
14799 Display the saturation value at the 90% percentile within the input frame.
14800 Expressed in range of [0-~181.02].
14801
14802 @item SATMAX
14803 Display the maximum saturation value contained within the input frame.
14804 Expressed in range of [0-~181.02].
14805
14806 @item HUEMED
14807 Display the median value for hue within the input frame. Expressed in range of
14808 [0-360].
14809
14810 @item HUEAVG
14811 Display the average value for hue within the input frame. Expressed in range of
14812 [0-360].
14813
14814 @item YDIF
14815 Display the average of sample value difference between all values of the Y
14816 plane in the current frame and corresponding values of the previous input frame.
14817 Expressed in range of [0-255].
14818
14819 @item UDIF
14820 Display the average of sample value difference between all values of the U
14821 plane in the current frame and corresponding values of the previous input frame.
14822 Expressed in range of [0-255].
14823
14824 @item VDIF
14825 Display the average of sample value difference between all values of the V
14826 plane in the current frame and corresponding values of the previous input frame.
14827 Expressed in range of [0-255].
14828
14829 @item YBITDEPTH
14830 Display bit depth of Y plane in current frame.
14831 Expressed in range of [0-16].
14832
14833 @item UBITDEPTH
14834 Display bit depth of U plane in current frame.
14835 Expressed in range of [0-16].
14836
14837 @item VBITDEPTH
14838 Display bit depth of V plane in current frame.
14839 Expressed in range of [0-16].
14840 @end table
14841
14842 The filter accepts the following options:
14843
14844 @table @option
14845 @item stat
14846 @item out
14847
14848 @option{stat} specify an additional form of image analysis.
14849 @option{out} output video with the specified type of pixel highlighted.
14850
14851 Both options accept the following values:
14852
14853 @table @samp
14854 @item tout
14855 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
14856 unlike the neighboring pixels of the same field. Examples of temporal outliers
14857 include the results of video dropouts, head clogs, or tape tracking issues.
14858
14859 @item vrep
14860 Identify @var{vertical line repetition}. Vertical line repetition includes
14861 similar rows of pixels within a frame. In born-digital video vertical line
14862 repetition is common, but this pattern is uncommon in video digitized from an
14863 analog source. When it occurs in video that results from the digitization of an
14864 analog source it can indicate concealment from a dropout compensator.
14865
14866 @item brng
14867 Identify pixels that fall outside of legal broadcast range.
14868 @end table
14869
14870 @item color, c
14871 Set the highlight color for the @option{out} option. The default color is
14872 yellow.
14873 @end table
14874
14875 @subsection Examples
14876
14877 @itemize
14878 @item
14879 Output data of various video metrics:
14880 @example
14881 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
14882 @end example
14883
14884 @item
14885 Output specific data about the minimum and maximum values of the Y plane per frame:
14886 @example
14887 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
14888 @end example
14889
14890 @item
14891 Playback video while highlighting pixels that are outside of broadcast range in red.
14892 @example
14893 ffplay example.mov -vf signalstats="out=brng:color=red"
14894 @end example
14895
14896 @item
14897 Playback video with signalstats metadata drawn over the frame.
14898 @example
14899 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
14900 @end example
14901
14902 The contents of signalstat_drawtext.txt used in the command are:
14903 @example
14904 time %@{pts:hms@}
14905 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
14906 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
14907 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
14908 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
14909
14910 @end example
14911 @end itemize
14912
14913 @anchor{signature}
14914 @section signature
14915
14916 Calculates the MPEG-7 Video Signature. The filter can handle more than one
14917 input. In this case the matching between the inputs can be calculated additionally.
14918 The filter always passes through the first input. The signature of each stream can
14919 be written into a file.
14920
14921 It accepts the following options:
14922
14923 @table @option
14924 @item detectmode
14925 Enable or disable the matching process.
14926
14927 Available values are:
14928
14929 @table @samp
14930 @item off
14931 Disable the calculation of a matching (default).
14932 @item full
14933 Calculate the matching for the whole video and output whether the whole video
14934 matches or only parts.
14935 @item fast
14936 Calculate only until a matching is found or the video ends. Should be faster in
14937 some cases.
14938 @end table
14939
14940 @item nb_inputs
14941 Set the number of inputs. The option value must be a non negative integer.
14942 Default value is 1.
14943
14944 @item filename
14945 Set the path to which the output is written. If there is more than one input,
14946 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
14947 integer), that will be replaced with the input number. If no filename is
14948 specified, no output will be written. This is the default.
14949
14950 @item format
14951 Choose the output format.
14952
14953 Available values are:
14954
14955 @table @samp
14956 @item binary
14957 Use the specified binary representation (default).
14958 @item xml
14959 Use the specified xml representation.
14960 @end table
14961
14962 @item th_d
14963 Set threshold to detect one word as similar. The option value must be an integer
14964 greater than zero. The default value is 9000.
14965
14966 @item th_dc
14967 Set threshold to detect all words as similar. The option value must be an integer
14968 greater than zero. The default value is 60000.
14969
14970 @item th_xh
14971 Set threshold to detect frames as similar. The option value must be an integer
14972 greater than zero. The default value is 116.
14973
14974 @item th_di
14975 Set the minimum length of a sequence in frames to recognize it as matching
14976 sequence. The option value must be a non negative integer value.
14977 The default value is 0.
14978
14979 @item th_it
14980 Set the minimum relation, that matching frames to all frames must have.
14981 The option value must be a double value between 0 and 1. The default value is 0.5.
14982 @end table
14983
14984 @subsection Examples
14985
14986 @itemize
14987 @item
14988 To calculate the signature of an input video and store it in signature.bin:
14989 @example
14990 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
14991 @end example
14992
14993 @item
14994 To detect whether two videos match and store the signatures in XML format in
14995 signature0.xml and signature1.xml:
14996 @example
14997 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 -
14998 @end example
14999
15000 @end itemize
15001
15002 @anchor{smartblur}
15003 @section smartblur
15004
15005 Blur the input video without impacting the outlines.
15006
15007 It accepts the following options:
15008
15009 @table @option
15010 @item luma_radius, lr
15011 Set the luma radius. The option value must be a float number in
15012 the range [0.1,5.0] that specifies the variance of the gaussian filter
15013 used to blur the image (slower if larger). Default value is 1.0.
15014
15015 @item luma_strength, ls
15016 Set the luma strength. The option value must be a float number
15017 in the range [-1.0,1.0] that configures the blurring. A value included
15018 in [0.0,1.0] will blur the image whereas a value included in
15019 [-1.0,0.0] will sharpen the image. Default value is 1.0.
15020
15021 @item luma_threshold, lt
15022 Set the luma threshold used as a coefficient to determine
15023 whether a pixel should be blurred or not. The option value must be an
15024 integer in the range [-30,30]. A value of 0 will filter all the image,
15025 a value included in [0,30] will filter flat areas and a value included
15026 in [-30,0] will filter edges. Default value is 0.
15027
15028 @item chroma_radius, cr
15029 Set the chroma radius. The option value must be a float number in
15030 the range [0.1,5.0] that specifies the variance of the gaussian filter
15031 used to blur the image (slower if larger). Default value is @option{luma_radius}.
15032
15033 @item chroma_strength, cs
15034 Set the chroma strength. The option value must be a float number
15035 in the range [-1.0,1.0] that configures the blurring. A value included
15036 in [0.0,1.0] will blur the image whereas a value included in
15037 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
15038
15039 @item chroma_threshold, ct
15040 Set the chroma threshold used as a coefficient to determine
15041 whether a pixel should be blurred or not. The option value must be an
15042 integer in the range [-30,30]. A value of 0 will filter all the image,
15043 a value included in [0,30] will filter flat areas and a value included
15044 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
15045 @end table
15046
15047 If a chroma option is not explicitly set, the corresponding luma value
15048 is set.
15049
15050 @section ssim
15051
15052 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
15053
15054 This filter takes in input two input videos, the first input is
15055 considered the "main" source and is passed unchanged to the
15056 output. The second input is used as a "reference" video for computing
15057 the SSIM.
15058
15059 Both video inputs must have the same resolution and pixel format for
15060 this filter to work correctly. Also it assumes that both inputs
15061 have the same number of frames, which are compared one by one.
15062
15063 The filter stores the calculated SSIM of each frame.
15064
15065 The description of the accepted parameters follows.
15066
15067 @table @option
15068 @item stats_file, f
15069 If specified the filter will use the named file to save the SSIM of
15070 each individual frame. When filename equals "-" the data is sent to
15071 standard output.
15072 @end table
15073
15074 The file printed if @var{stats_file} is selected, contains a sequence of
15075 key/value pairs of the form @var{key}:@var{value} for each compared
15076 couple of frames.
15077
15078 A description of each shown parameter follows:
15079
15080 @table @option
15081 @item n
15082 sequential number of the input frame, starting from 1
15083
15084 @item Y, U, V, R, G, B
15085 SSIM of the compared frames for the component specified by the suffix.
15086
15087 @item All
15088 SSIM of the compared frames for the whole frame.
15089
15090 @item dB
15091 Same as above but in dB representation.
15092 @end table
15093
15094 This filter also supports the @ref{framesync} options.
15095
15096 For example:
15097 @example
15098 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15099 [main][ref] ssim="stats_file=stats.log" [out]
15100 @end example
15101
15102 On this example the input file being processed is compared with the
15103 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
15104 is stored in @file{stats.log}.
15105
15106 Another example with both psnr and ssim at same time:
15107 @example
15108 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
15109 @end example
15110
15111 @section stereo3d
15112
15113 Convert between different stereoscopic image formats.
15114
15115 The filters accept the following options:
15116
15117 @table @option
15118 @item in
15119 Set stereoscopic image format of input.
15120
15121 Available values for input image formats are:
15122 @table @samp
15123 @item sbsl
15124 side by side parallel (left eye left, right eye right)
15125
15126 @item sbsr
15127 side by side crosseye (right eye left, left eye right)
15128
15129 @item sbs2l
15130 side by side parallel with half width resolution
15131 (left eye left, right eye right)
15132
15133 @item sbs2r
15134 side by side crosseye with half width resolution
15135 (right eye left, left eye right)
15136
15137 @item abl
15138 above-below (left eye above, right eye below)
15139
15140 @item abr
15141 above-below (right eye above, left eye below)
15142
15143 @item ab2l
15144 above-below with half height resolution
15145 (left eye above, right eye below)
15146
15147 @item ab2r
15148 above-below with half height resolution
15149 (right eye above, left eye below)
15150
15151 @item al
15152 alternating frames (left eye first, right eye second)
15153
15154 @item ar
15155 alternating frames (right eye first, left eye second)
15156
15157 @item irl
15158 interleaved rows (left eye has top row, right eye starts on next row)
15159
15160 @item irr
15161 interleaved rows (right eye has top row, left eye starts on next row)
15162
15163 @item icl
15164 interleaved columns, left eye first
15165
15166 @item icr
15167 interleaved columns, right eye first
15168
15169 Default value is @samp{sbsl}.
15170 @end table
15171
15172 @item out
15173 Set stereoscopic image format of output.
15174
15175 @table @samp
15176 @item sbsl
15177 side by side parallel (left eye left, right eye right)
15178
15179 @item sbsr
15180 side by side crosseye (right eye left, left eye right)
15181
15182 @item sbs2l
15183 side by side parallel with half width resolution
15184 (left eye left, right eye right)
15185
15186 @item sbs2r
15187 side by side crosseye with half width resolution
15188 (right eye left, left eye right)
15189
15190 @item abl
15191 above-below (left eye above, right eye below)
15192
15193 @item abr
15194 above-below (right eye above, left eye below)
15195
15196 @item ab2l
15197 above-below with half height resolution
15198 (left eye above, right eye below)
15199
15200 @item ab2r
15201 above-below with half height resolution
15202 (right eye above, left eye below)
15203
15204 @item al
15205 alternating frames (left eye first, right eye second)
15206
15207 @item ar
15208 alternating frames (right eye first, left eye second)
15209
15210 @item irl
15211 interleaved rows (left eye has top row, right eye starts on next row)
15212
15213 @item irr
15214 interleaved rows (right eye has top row, left eye starts on next row)
15215
15216 @item arbg
15217 anaglyph red/blue gray
15218 (red filter on left eye, blue filter on right eye)
15219
15220 @item argg
15221 anaglyph red/green gray
15222 (red filter on left eye, green filter on right eye)
15223
15224 @item arcg
15225 anaglyph red/cyan gray
15226 (red filter on left eye, cyan filter on right eye)
15227
15228 @item arch
15229 anaglyph red/cyan half colored
15230 (red filter on left eye, cyan filter on right eye)
15231
15232 @item arcc
15233 anaglyph red/cyan color
15234 (red filter on left eye, cyan filter on right eye)
15235
15236 @item arcd
15237 anaglyph red/cyan color optimized with the least squares projection of dubois
15238 (red filter on left eye, cyan filter on right eye)
15239
15240 @item agmg
15241 anaglyph green/magenta gray
15242 (green filter on left eye, magenta filter on right eye)
15243
15244 @item agmh
15245 anaglyph green/magenta half colored
15246 (green filter on left eye, magenta filter on right eye)
15247
15248 @item agmc
15249 anaglyph green/magenta colored
15250 (green filter on left eye, magenta filter on right eye)
15251
15252 @item agmd
15253 anaglyph green/magenta color optimized with the least squares projection of dubois
15254 (green filter on left eye, magenta filter on right eye)
15255
15256 @item aybg
15257 anaglyph yellow/blue gray
15258 (yellow filter on left eye, blue filter on right eye)
15259
15260 @item aybh
15261 anaglyph yellow/blue half colored
15262 (yellow filter on left eye, blue filter on right eye)
15263
15264 @item aybc
15265 anaglyph yellow/blue colored
15266 (yellow filter on left eye, blue filter on right eye)
15267
15268 @item aybd
15269 anaglyph yellow/blue color optimized with the least squares projection of dubois
15270 (yellow filter on left eye, blue filter on right eye)
15271
15272 @item ml
15273 mono output (left eye only)
15274
15275 @item mr
15276 mono output (right eye only)
15277
15278 @item chl
15279 checkerboard, left eye first
15280
15281 @item chr
15282 checkerboard, right eye first
15283
15284 @item icl
15285 interleaved columns, left eye first
15286
15287 @item icr
15288 interleaved columns, right eye first
15289
15290 @item hdmi
15291 HDMI frame pack
15292 @end table
15293
15294 Default value is @samp{arcd}.
15295 @end table
15296
15297 @subsection Examples
15298
15299 @itemize
15300 @item
15301 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
15302 @example
15303 stereo3d=sbsl:aybd
15304 @end example
15305
15306 @item
15307 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
15308 @example
15309 stereo3d=abl:sbsr
15310 @end example
15311 @end itemize
15312
15313 @section streamselect, astreamselect
15314 Select video or audio streams.
15315
15316 The filter accepts the following options:
15317
15318 @table @option
15319 @item inputs
15320 Set number of inputs. Default is 2.
15321
15322 @item map
15323 Set input indexes to remap to outputs.
15324 @end table
15325
15326 @subsection Commands
15327
15328 The @code{streamselect} and @code{astreamselect} filter supports the following
15329 commands:
15330
15331 @table @option
15332 @item map
15333 Set input indexes to remap to outputs.
15334 @end table
15335
15336 @subsection Examples
15337
15338 @itemize
15339 @item
15340 Select first 5 seconds 1st stream and rest of time 2nd stream:
15341 @example
15342 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
15343 @end example
15344
15345 @item
15346 Same as above, but for audio:
15347 @example
15348 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
15349 @end example
15350 @end itemize
15351
15352 @section sobel
15353 Apply sobel operator to input video stream.
15354
15355 The filter accepts the following option:
15356
15357 @table @option
15358 @item planes
15359 Set which planes will be processed, unprocessed planes will be copied.
15360 By default value 0xf, all planes will be processed.
15361
15362 @item scale
15363 Set value which will be multiplied with filtered result.
15364
15365 @item delta
15366 Set value which will be added to filtered result.
15367 @end table
15368
15369 @anchor{spp}
15370 @section spp
15371
15372 Apply a simple postprocessing filter that compresses and decompresses the image
15373 at several (or - in the case of @option{quality} level @code{6} - all) shifts
15374 and average the results.
15375
15376 The filter accepts the following options:
15377
15378 @table @option
15379 @item quality
15380 Set quality. This option defines the number of levels for averaging. It accepts
15381 an integer in the range 0-6. If set to @code{0}, the filter will have no
15382 effect. A value of @code{6} means the higher quality. For each increment of
15383 that value the speed drops by a factor of approximately 2.  Default value is
15384 @code{3}.
15385
15386 @item qp
15387 Force a constant quantization parameter. If not set, the filter will use the QP
15388 from the video stream (if available).
15389
15390 @item mode
15391 Set thresholding mode. Available modes are:
15392
15393 @table @samp
15394 @item hard
15395 Set hard thresholding (default).
15396 @item soft
15397 Set soft thresholding (better de-ringing effect, but likely blurrier).
15398 @end table
15399
15400 @item use_bframe_qp
15401 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
15402 option may cause flicker since the B-Frames have often larger QP. Default is
15403 @code{0} (not enabled).
15404 @end table
15405
15406 @section sr
15407
15408 Scale the input by applying one of the super-resolution methods based on
15409 convolutional neural networks.
15410
15411 Training scripts as well as scripts for model generation are provided in
15412 the repository at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
15413
15414 The filter accepts the following options:
15415
15416 @table @option
15417 @item model
15418 Specify which super-resolution model to use. This option accepts the following values:
15419
15420 @table @samp
15421 @item srcnn
15422 Super-Resolution Convolutional Neural Network model.
15423 See @url{https://arxiv.org/abs/1501.00092}.
15424
15425 @item espcn
15426 Efficient Sub-Pixel Convolutional Neural Network model.
15427 See @url{https://arxiv.org/abs/1609.05158}.
15428
15429 @end table
15430
15431 Default value is @samp{srcnn}.
15432
15433 @item dnn_backend
15434 Specify which DNN backend to use for model loading and execution. This option accepts
15435 the following values:
15436
15437 @table @samp
15438 @item native
15439 Native implementation of DNN loading and execution.
15440
15441 @item tensorflow
15442 TensorFlow backend. To enable this backend you
15443 need to install the TensorFlow for C library (see
15444 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
15445 @code{--enable-libtensorflow}
15446
15447 @end table
15448
15449 Default value is @samp{native}.
15450
15451 @item scale_factor
15452 Set scale factor for SRCNN model, for which custom model file was provided.
15453 Allowed values are @code{2}, @code{3} and @code{4}. Default value is @code{2}.
15454 Scale factor is necessary for SRCNN model, because it accepts input upscaled
15455 using bicubic upscaling with proper scale factor.
15456
15457 @item model_filename
15458 Set path to model file specifying network architecture and its parameters.
15459 Note that different backends use different file formats. TensorFlow backend
15460 can load files for both formats, while native backend can load files for only
15461 its format.
15462
15463 @end table
15464
15465 @anchor{subtitles}
15466 @section subtitles
15467
15468 Draw subtitles on top of input video using the libass library.
15469
15470 To enable compilation of this filter you need to configure FFmpeg with
15471 @code{--enable-libass}. This filter also requires a build with libavcodec and
15472 libavformat to convert the passed subtitles file to ASS (Advanced Substation
15473 Alpha) subtitles format.
15474
15475 The filter accepts the following options:
15476
15477 @table @option
15478 @item filename, f
15479 Set the filename of the subtitle file to read. It must be specified.
15480
15481 @item original_size
15482 Specify the size of the original video, the video for which the ASS file
15483 was composed. For the syntax of this option, check the
15484 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15485 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
15486 correctly scale the fonts if the aspect ratio has been changed.
15487
15488 @item fontsdir
15489 Set a directory path containing fonts that can be used by the filter.
15490 These fonts will be used in addition to whatever the font provider uses.
15491
15492 @item alpha
15493 Process alpha channel, by default alpha channel is untouched.
15494
15495 @item charenc
15496 Set subtitles input character encoding. @code{subtitles} filter only. Only
15497 useful if not UTF-8.
15498
15499 @item stream_index, si
15500 Set subtitles stream index. @code{subtitles} filter only.
15501
15502 @item force_style
15503 Override default style or script info parameters of the subtitles. It accepts a
15504 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
15505 @end table
15506
15507 If the first key is not specified, it is assumed that the first value
15508 specifies the @option{filename}.
15509
15510 For example, to render the file @file{sub.srt} on top of the input
15511 video, use the command:
15512 @example
15513 subtitles=sub.srt
15514 @end example
15515
15516 which is equivalent to:
15517 @example
15518 subtitles=filename=sub.srt
15519 @end example
15520
15521 To render the default subtitles stream from file @file{video.mkv}, use:
15522 @example
15523 subtitles=video.mkv
15524 @end example
15525
15526 To render the second subtitles stream from that file, use:
15527 @example
15528 subtitles=video.mkv:si=1
15529 @end example
15530
15531 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
15532 @code{DejaVu Serif}, use:
15533 @example
15534 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
15535 @end example
15536
15537 @section super2xsai
15538
15539 Scale the input by 2x and smooth using the Super2xSaI (Scale and
15540 Interpolate) pixel art scaling algorithm.
15541
15542 Useful for enlarging pixel art images without reducing sharpness.
15543
15544 @section swaprect
15545
15546 Swap two rectangular objects in video.
15547
15548 This filter accepts the following options:
15549
15550 @table @option
15551 @item w
15552 Set object width.
15553
15554 @item h
15555 Set object height.
15556
15557 @item x1
15558 Set 1st rect x coordinate.
15559
15560 @item y1
15561 Set 1st rect y coordinate.
15562
15563 @item x2
15564 Set 2nd rect x coordinate.
15565
15566 @item y2
15567 Set 2nd rect y coordinate.
15568
15569 All expressions are evaluated once for each frame.
15570 @end table
15571
15572 The all options are expressions containing the following constants:
15573
15574 @table @option
15575 @item w
15576 @item h
15577 The input width and height.
15578
15579 @item a
15580 same as @var{w} / @var{h}
15581
15582 @item sar
15583 input sample aspect ratio
15584
15585 @item dar
15586 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
15587
15588 @item n
15589 The number of the input frame, starting from 0.
15590
15591 @item t
15592 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
15593
15594 @item pos
15595 the position in the file of the input frame, NAN if unknown
15596 @end table
15597
15598 @section swapuv
15599 Swap U & V plane.
15600
15601 @section telecine
15602
15603 Apply telecine process to the video.
15604
15605 This filter accepts the following options:
15606
15607 @table @option
15608 @item first_field
15609 @table @samp
15610 @item top, t
15611 top field first
15612 @item bottom, b
15613 bottom field first
15614 The default value is @code{top}.
15615 @end table
15616
15617 @item pattern
15618 A string of numbers representing the pulldown pattern you wish to apply.
15619 The default value is @code{23}.
15620 @end table
15621
15622 @example
15623 Some typical patterns:
15624
15625 NTSC output (30i):
15626 27.5p: 32222
15627 24p: 23 (classic)
15628 24p: 2332 (preferred)
15629 20p: 33
15630 18p: 334
15631 16p: 3444
15632
15633 PAL output (25i):
15634 27.5p: 12222
15635 24p: 222222222223 ("Euro pulldown")
15636 16.67p: 33
15637 16p: 33333334
15638 @end example
15639
15640 @section threshold
15641
15642 Apply threshold effect to video stream.
15643
15644 This filter needs four video streams to perform thresholding.
15645 First stream is stream we are filtering.
15646 Second stream is holding threshold values, third stream is holding min values,
15647 and last, fourth stream is holding max values.
15648
15649 The filter accepts the following option:
15650
15651 @table @option
15652 @item planes
15653 Set which planes will be processed, unprocessed planes will be copied.
15654 By default value 0xf, all planes will be processed.
15655 @end table
15656
15657 For example if first stream pixel's component value is less then threshold value
15658 of pixel component from 2nd threshold stream, third stream value will picked,
15659 otherwise fourth stream pixel component value will be picked.
15660
15661 Using color source filter one can perform various types of thresholding:
15662
15663 @subsection Examples
15664
15665 @itemize
15666 @item
15667 Binary threshold, using gray color as threshold:
15668 @example
15669 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
15670 @end example
15671
15672 @item
15673 Inverted binary threshold, using gray color as threshold:
15674 @example
15675 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
15676 @end example
15677
15678 @item
15679 Truncate binary threshold, using gray color as threshold:
15680 @example
15681 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
15682 @end example
15683
15684 @item
15685 Threshold to zero, using gray color as threshold:
15686 @example
15687 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
15688 @end example
15689
15690 @item
15691 Inverted threshold to zero, using gray color as threshold:
15692 @example
15693 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
15694 @end example
15695 @end itemize
15696
15697 @section thumbnail
15698 Select the most representative frame in a given sequence of consecutive frames.
15699
15700 The filter accepts the following options:
15701
15702 @table @option
15703 @item n
15704 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
15705 will pick one of them, and then handle the next batch of @var{n} frames until
15706 the end. Default is @code{100}.
15707 @end table
15708
15709 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
15710 value will result in a higher memory usage, so a high value is not recommended.
15711
15712 @subsection Examples
15713
15714 @itemize
15715 @item
15716 Extract one picture each 50 frames:
15717 @example
15718 thumbnail=50
15719 @end example
15720
15721 @item
15722 Complete example of a thumbnail creation with @command{ffmpeg}:
15723 @example
15724 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
15725 @end example
15726 @end itemize
15727
15728 @section tile
15729
15730 Tile several successive frames together.
15731
15732 The filter accepts the following options:
15733
15734 @table @option
15735
15736 @item layout
15737 Set the grid size (i.e. the number of lines and columns). For the syntax of
15738 this option, check the
15739 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15740
15741 @item nb_frames
15742 Set the maximum number of frames to render in the given area. It must be less
15743 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
15744 the area will be used.
15745
15746 @item margin
15747 Set the outer border margin in pixels.
15748
15749 @item padding
15750 Set the inner border thickness (i.e. the number of pixels between frames). For
15751 more advanced padding options (such as having different values for the edges),
15752 refer to the pad video filter.
15753
15754 @item color
15755 Specify the color of the unused area. For the syntax of this option, check the
15756 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
15757 The default value of @var{color} is "black".
15758
15759 @item overlap
15760 Set the number of frames to overlap when tiling several successive frames together.
15761 The value must be between @code{0} and @var{nb_frames - 1}.
15762
15763 @item init_padding
15764 Set the number of frames to initially be empty before displaying first output frame.
15765 This controls how soon will one get first output frame.
15766 The value must be between @code{0} and @var{nb_frames - 1}.
15767 @end table
15768
15769 @subsection Examples
15770
15771 @itemize
15772 @item
15773 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
15774 @example
15775 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
15776 @end example
15777 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
15778 duplicating each output frame to accommodate the originally detected frame
15779 rate.
15780
15781 @item
15782 Display @code{5} pictures in an area of @code{3x2} frames,
15783 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
15784 mixed flat and named options:
15785 @example
15786 tile=3x2:nb_frames=5:padding=7:margin=2
15787 @end example
15788 @end itemize
15789
15790 @section tinterlace
15791
15792 Perform various types of temporal field interlacing.
15793
15794 Frames are counted starting from 1, so the first input frame is
15795 considered odd.
15796
15797 The filter accepts the following options:
15798
15799 @table @option
15800
15801 @item mode
15802 Specify the mode of the interlacing. This option can also be specified
15803 as a value alone. See below for a list of values for this option.
15804
15805 Available values are:
15806
15807 @table @samp
15808 @item merge, 0
15809 Move odd frames into the upper field, even into the lower field,
15810 generating a double height frame at half frame rate.
15811 @example
15812  ------> time
15813 Input:
15814 Frame 1         Frame 2         Frame 3         Frame 4
15815
15816 11111           22222           33333           44444
15817 11111           22222           33333           44444
15818 11111           22222           33333           44444
15819 11111           22222           33333           44444
15820
15821 Output:
15822 11111                           33333
15823 22222                           44444
15824 11111                           33333
15825 22222                           44444
15826 11111                           33333
15827 22222                           44444
15828 11111                           33333
15829 22222                           44444
15830 @end example
15831
15832 @item drop_even, 1
15833 Only output odd frames, even frames are dropped, generating a frame with
15834 unchanged height at half frame rate.
15835
15836 @example
15837  ------> time
15838 Input:
15839 Frame 1         Frame 2         Frame 3         Frame 4
15840
15841 11111           22222           33333           44444
15842 11111           22222           33333           44444
15843 11111           22222           33333           44444
15844 11111           22222           33333           44444
15845
15846 Output:
15847 11111                           33333
15848 11111                           33333
15849 11111                           33333
15850 11111                           33333
15851 @end example
15852
15853 @item drop_odd, 2
15854 Only output even frames, odd frames are dropped, generating a frame with
15855 unchanged height at half frame rate.
15856
15857 @example
15858  ------> time
15859 Input:
15860 Frame 1         Frame 2         Frame 3         Frame 4
15861
15862 11111           22222           33333           44444
15863 11111           22222           33333           44444
15864 11111           22222           33333           44444
15865 11111           22222           33333           44444
15866
15867 Output:
15868                 22222                           44444
15869                 22222                           44444
15870                 22222                           44444
15871                 22222                           44444
15872 @end example
15873
15874 @item pad, 3
15875 Expand each frame to full height, but pad alternate lines with black,
15876 generating a frame with double height at the same input frame rate.
15877
15878 @example
15879  ------> time
15880 Input:
15881 Frame 1         Frame 2         Frame 3         Frame 4
15882
15883 11111           22222           33333           44444
15884 11111           22222           33333           44444
15885 11111           22222           33333           44444
15886 11111           22222           33333           44444
15887
15888 Output:
15889 11111           .....           33333           .....
15890 .....           22222           .....           44444
15891 11111           .....           33333           .....
15892 .....           22222           .....           44444
15893 11111           .....           33333           .....
15894 .....           22222           .....           44444
15895 11111           .....           33333           .....
15896 .....           22222           .....           44444
15897 @end example
15898
15899
15900 @item interleave_top, 4
15901 Interleave the upper field from odd frames with the lower field from
15902 even frames, generating a frame with unchanged height at half frame rate.
15903
15904 @example
15905  ------> time
15906 Input:
15907 Frame 1         Frame 2         Frame 3         Frame 4
15908
15909 11111<-         22222           33333<-         44444
15910 11111           22222<-         33333           44444<-
15911 11111<-         22222           33333<-         44444
15912 11111           22222<-         33333           44444<-
15913
15914 Output:
15915 11111                           33333
15916 22222                           44444
15917 11111                           33333
15918 22222                           44444
15919 @end example
15920
15921
15922 @item interleave_bottom, 5
15923 Interleave the lower field from odd frames with the upper field from
15924 even frames, generating a frame with unchanged height at half frame rate.
15925
15926 @example
15927  ------> time
15928 Input:
15929 Frame 1         Frame 2         Frame 3         Frame 4
15930
15931 11111           22222<-         33333           44444<-
15932 11111<-         22222           33333<-         44444
15933 11111           22222<-         33333           44444<-
15934 11111<-         22222           33333<-         44444
15935
15936 Output:
15937 22222                           44444
15938 11111                           33333
15939 22222                           44444
15940 11111                           33333
15941 @end example
15942
15943
15944 @item interlacex2, 6
15945 Double frame rate with unchanged height. Frames are inserted each
15946 containing the second temporal field from the previous input frame and
15947 the first temporal field from the next input frame. This mode relies on
15948 the top_field_first flag. Useful for interlaced video displays with no
15949 field synchronisation.
15950
15951 @example
15952  ------> time
15953 Input:
15954 Frame 1         Frame 2         Frame 3         Frame 4
15955
15956 11111           22222           33333           44444
15957  11111           22222           33333           44444
15958 11111           22222           33333           44444
15959  11111           22222           33333           44444
15960
15961 Output:
15962 11111   22222   22222   33333   33333   44444   44444
15963  11111   11111   22222   22222   33333   33333   44444
15964 11111   22222   22222   33333   33333   44444   44444
15965  11111   11111   22222   22222   33333   33333   44444
15966 @end example
15967
15968
15969 @item mergex2, 7
15970 Move odd frames into the upper field, even into the lower field,
15971 generating a double height frame at same frame rate.
15972
15973 @example
15974  ------> time
15975 Input:
15976 Frame 1         Frame 2         Frame 3         Frame 4
15977
15978 11111           22222           33333           44444
15979 11111           22222           33333           44444
15980 11111           22222           33333           44444
15981 11111           22222           33333           44444
15982
15983 Output:
15984 11111           33333           33333           55555
15985 22222           22222           44444           44444
15986 11111           33333           33333           55555
15987 22222           22222           44444           44444
15988 11111           33333           33333           55555
15989 22222           22222           44444           44444
15990 11111           33333           33333           55555
15991 22222           22222           44444           44444
15992 @end example
15993
15994 @end table
15995
15996 Numeric values are deprecated but are accepted for backward
15997 compatibility reasons.
15998
15999 Default mode is @code{merge}.
16000
16001 @item flags
16002 Specify flags influencing the filter process.
16003
16004 Available value for @var{flags} is:
16005
16006 @table @option
16007 @item low_pass_filter, vlfp
16008 Enable linear vertical low-pass filtering in the filter.
16009 Vertical low-pass filtering is required when creating an interlaced
16010 destination from a progressive source which contains high-frequency
16011 vertical detail. Filtering will reduce interlace 'twitter' and Moire
16012 patterning.
16013
16014 @item complex_filter, cvlfp
16015 Enable complex vertical low-pass filtering.
16016 This will slightly less reduce interlace 'twitter' and Moire
16017 patterning but better retain detail and subjective sharpness impression.
16018
16019 @end table
16020
16021 Vertical low-pass filtering can only be enabled for @option{mode}
16022 @var{interleave_top} and @var{interleave_bottom}.
16023
16024 @end table
16025
16026 @section tmix
16027
16028 Mix successive video frames.
16029
16030 A description of the accepted options follows.
16031
16032 @table @option
16033 @item frames
16034 The number of successive frames to mix. If unspecified, it defaults to 3.
16035
16036 @item weights
16037 Specify weight of each input video frame.
16038 Each weight is separated by space. If number of weights is smaller than
16039 number of @var{frames} last specified weight will be used for all remaining
16040 unset weights.
16041
16042 @item scale
16043 Specify scale, if it is set it will be multiplied with sum
16044 of each weight multiplied with pixel values to give final destination
16045 pixel value. By default @var{scale} is auto scaled to sum of weights.
16046 @end table
16047
16048 @subsection Examples
16049
16050 @itemize
16051 @item
16052 Average 7 successive frames:
16053 @example
16054 tmix=frames=7:weights="1 1 1 1 1 1 1"
16055 @end example
16056
16057 @item
16058 Apply simple temporal convolution:
16059 @example
16060 tmix=frames=3:weights="-1 3 -1"
16061 @end example
16062
16063 @item
16064 Similar as above but only showing temporal differences:
16065 @example
16066 tmix=frames=3:weights="-1 2 -1":scale=1
16067 @end example
16068 @end itemize
16069
16070 @section tonemap
16071 Tone map colors from different dynamic ranges.
16072
16073 This filter expects data in single precision floating point, as it needs to
16074 operate on (and can output) out-of-range values. Another filter, such as
16075 @ref{zscale}, is needed to convert the resulting frame to a usable format.
16076
16077 The tonemapping algorithms implemented only work on linear light, so input
16078 data should be linearized beforehand (and possibly correctly tagged).
16079
16080 @example
16081 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
16082 @end example
16083
16084 @subsection Options
16085 The filter accepts the following options.
16086
16087 @table @option
16088 @item tonemap
16089 Set the tone map algorithm to use.
16090
16091 Possible values are:
16092 @table @var
16093 @item none
16094 Do not apply any tone map, only desaturate overbright pixels.
16095
16096 @item clip
16097 Hard-clip any out-of-range values. Use it for perfect color accuracy for
16098 in-range values, while distorting out-of-range values.
16099
16100 @item linear
16101 Stretch the entire reference gamut to a linear multiple of the display.
16102
16103 @item gamma
16104 Fit a logarithmic transfer between the tone curves.
16105
16106 @item reinhard
16107 Preserve overall image brightness with a simple curve, using nonlinear
16108 contrast, which results in flattening details and degrading color accuracy.
16109
16110 @item hable
16111 Preserve both dark and bright details better than @var{reinhard}, at the cost
16112 of slightly darkening everything. Use it when detail preservation is more
16113 important than color and brightness accuracy.
16114
16115 @item mobius
16116 Smoothly map out-of-range values, while retaining contrast and colors for
16117 in-range material as much as possible. Use it when color accuracy is more
16118 important than detail preservation.
16119 @end table
16120
16121 Default is none.
16122
16123 @item param
16124 Tune the tone mapping algorithm.
16125
16126 This affects the following algorithms:
16127 @table @var
16128 @item none
16129 Ignored.
16130
16131 @item linear
16132 Specifies the scale factor to use while stretching.
16133 Default to 1.0.
16134
16135 @item gamma
16136 Specifies the exponent of the function.
16137 Default to 1.8.
16138
16139 @item clip
16140 Specify an extra linear coefficient to multiply into the signal before clipping.
16141 Default to 1.0.
16142
16143 @item reinhard
16144 Specify the local contrast coefficient at the display peak.
16145 Default to 0.5, which means that in-gamut values will be about half as bright
16146 as when clipping.
16147
16148 @item hable
16149 Ignored.
16150
16151 @item mobius
16152 Specify the transition point from linear to mobius transform. Every value
16153 below this point is guaranteed to be mapped 1:1. The higher the value, the
16154 more accurate the result will be, at the cost of losing bright details.
16155 Default to 0.3, which due to the steep initial slope still preserves in-range
16156 colors fairly accurately.
16157 @end table
16158
16159 @item desat
16160 Apply desaturation for highlights that exceed this level of brightness. The
16161 higher the parameter, the more color information will be preserved. This
16162 setting helps prevent unnaturally blown-out colors for super-highlights, by
16163 (smoothly) turning into white instead. This makes images feel more natural,
16164 at the cost of reducing information about out-of-range colors.
16165
16166 The default of 2.0 is somewhat conservative and will mostly just apply to
16167 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
16168
16169 This option works only if the input frame has a supported color tag.
16170
16171 @item peak
16172 Override signal/nominal/reference peak with this value. Useful when the
16173 embedded peak information in display metadata is not reliable or when tone
16174 mapping from a lower range to a higher range.
16175 @end table
16176
16177 @section transpose
16178
16179 Transpose rows with columns in the input video and optionally flip it.
16180
16181 It accepts the following parameters:
16182
16183 @table @option
16184
16185 @item dir
16186 Specify the transposition direction.
16187
16188 Can assume the following values:
16189 @table @samp
16190 @item 0, 4, cclock_flip
16191 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
16192 @example
16193 L.R     L.l
16194 . . ->  . .
16195 l.r     R.r
16196 @end example
16197
16198 @item 1, 5, clock
16199 Rotate by 90 degrees clockwise, that is:
16200 @example
16201 L.R     l.L
16202 . . ->  . .
16203 l.r     r.R
16204 @end example
16205
16206 @item 2, 6, cclock
16207 Rotate by 90 degrees counterclockwise, that is:
16208 @example
16209 L.R     R.r
16210 . . ->  . .
16211 l.r     L.l
16212 @end example
16213
16214 @item 3, 7, clock_flip
16215 Rotate by 90 degrees clockwise and vertically flip, that is:
16216 @example
16217 L.R     r.R
16218 . . ->  . .
16219 l.r     l.L
16220 @end example
16221 @end table
16222
16223 For values between 4-7, the transposition is only done if the input
16224 video geometry is portrait and not landscape. These values are
16225 deprecated, the @code{passthrough} option should be used instead.
16226
16227 Numerical values are deprecated, and should be dropped in favor of
16228 symbolic constants.
16229
16230 @item passthrough
16231 Do not apply the transposition if the input geometry matches the one
16232 specified by the specified value. It accepts the following values:
16233 @table @samp
16234 @item none
16235 Always apply transposition.
16236 @item portrait
16237 Preserve portrait geometry (when @var{height} >= @var{width}).
16238 @item landscape
16239 Preserve landscape geometry (when @var{width} >= @var{height}).
16240 @end table
16241
16242 Default value is @code{none}.
16243 @end table
16244
16245 For example to rotate by 90 degrees clockwise and preserve portrait
16246 layout:
16247 @example
16248 transpose=dir=1:passthrough=portrait
16249 @end example
16250
16251 The command above can also be specified as:
16252 @example
16253 transpose=1:portrait
16254 @end example
16255
16256 @section trim
16257 Trim the input so that the output contains one continuous subpart of the input.
16258
16259 It accepts the following parameters:
16260 @table @option
16261 @item start
16262 Specify the time of the start of the kept section, i.e. the frame with the
16263 timestamp @var{start} will be the first frame in the output.
16264
16265 @item end
16266 Specify the time of the first frame that will be dropped, i.e. the frame
16267 immediately preceding the one with the timestamp @var{end} will be the last
16268 frame in the output.
16269
16270 @item start_pts
16271 This is the same as @var{start}, except this option sets the start timestamp
16272 in timebase units instead of seconds.
16273
16274 @item end_pts
16275 This is the same as @var{end}, except this option sets the end timestamp
16276 in timebase units instead of seconds.
16277
16278 @item duration
16279 The maximum duration of the output in seconds.
16280
16281 @item start_frame
16282 The number of the first frame that should be passed to the output.
16283
16284 @item end_frame
16285 The number of the first frame that should be dropped.
16286 @end table
16287
16288 @option{start}, @option{end}, and @option{duration} are expressed as time
16289 duration specifications; see
16290 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
16291 for the accepted syntax.
16292
16293 Note that the first two sets of the start/end options and the @option{duration}
16294 option look at the frame timestamp, while the _frame variants simply count the
16295 frames that pass through the filter. Also note that this filter does not modify
16296 the timestamps. If you wish for the output timestamps to start at zero, insert a
16297 setpts filter after the trim filter.
16298
16299 If multiple start or end options are set, this filter tries to be greedy and
16300 keep all the frames that match at least one of the specified constraints. To keep
16301 only the part that matches all the constraints at once, chain multiple trim
16302 filters.
16303
16304 The defaults are such that all the input is kept. So it is possible to set e.g.
16305 just the end values to keep everything before the specified time.
16306
16307 Examples:
16308 @itemize
16309 @item
16310 Drop everything except the second minute of input:
16311 @example
16312 ffmpeg -i INPUT -vf trim=60:120
16313 @end example
16314
16315 @item
16316 Keep only the first second:
16317 @example
16318 ffmpeg -i INPUT -vf trim=duration=1
16319 @end example
16320
16321 @end itemize
16322
16323 @section unpremultiply
16324 Apply alpha unpremultiply effect to input video stream using first plane
16325 of second stream as alpha.
16326
16327 Both streams must have same dimensions and same pixel format.
16328
16329 The filter accepts the following option:
16330
16331 @table @option
16332 @item planes
16333 Set which planes will be processed, unprocessed planes will be copied.
16334 By default value 0xf, all planes will be processed.
16335
16336 If the format has 1 or 2 components, then luma is bit 0.
16337 If the format has 3 or 4 components:
16338 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
16339 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
16340 If present, the alpha channel is always the last bit.
16341
16342 @item inplace
16343 Do not require 2nd input for processing, instead use alpha plane from input stream.
16344 @end table
16345
16346 @anchor{unsharp}
16347 @section unsharp
16348
16349 Sharpen or blur the input video.
16350
16351 It accepts the following parameters:
16352
16353 @table @option
16354 @item luma_msize_x, lx
16355 Set the luma matrix horizontal size. It must be an odd integer between
16356 3 and 23. The default value is 5.
16357
16358 @item luma_msize_y, ly
16359 Set the luma matrix vertical size. It must be an odd integer between 3
16360 and 23. The default value is 5.
16361
16362 @item luma_amount, la
16363 Set the luma effect strength. It must be a floating point number, reasonable
16364 values lay between -1.5 and 1.5.
16365
16366 Negative values will blur the input video, while positive values will
16367 sharpen it, a value of zero will disable the effect.
16368
16369 Default value is 1.0.
16370
16371 @item chroma_msize_x, cx
16372 Set the chroma matrix horizontal size. It must be an odd integer
16373 between 3 and 23. The default value is 5.
16374
16375 @item chroma_msize_y, cy
16376 Set the chroma matrix vertical size. It must be an odd integer
16377 between 3 and 23. The default value is 5.
16378
16379 @item chroma_amount, ca
16380 Set the chroma effect strength. It must be a floating point number, reasonable
16381 values lay between -1.5 and 1.5.
16382
16383 Negative values will blur the input video, while positive values will
16384 sharpen it, a value of zero will disable the effect.
16385
16386 Default value is 0.0.
16387
16388 @end table
16389
16390 All parameters are optional and default to the equivalent of the
16391 string '5:5:1.0:5:5:0.0'.
16392
16393 @subsection Examples
16394
16395 @itemize
16396 @item
16397 Apply strong luma sharpen effect:
16398 @example
16399 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
16400 @end example
16401
16402 @item
16403 Apply a strong blur of both luma and chroma parameters:
16404 @example
16405 unsharp=7:7:-2:7:7:-2
16406 @end example
16407 @end itemize
16408
16409 @section uspp
16410
16411 Apply ultra slow/simple postprocessing filter that compresses and decompresses
16412 the image at several (or - in the case of @option{quality} level @code{8} - all)
16413 shifts and average the results.
16414
16415 The way this differs from the behavior of spp is that uspp actually encodes &
16416 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
16417 DCT similar to MJPEG.
16418
16419 The filter accepts the following options:
16420
16421 @table @option
16422 @item quality
16423 Set quality. This option defines the number of levels for averaging. It accepts
16424 an integer in the range 0-8. If set to @code{0}, the filter will have no
16425 effect. A value of @code{8} means the higher quality. For each increment of
16426 that value the speed drops by a factor of approximately 2.  Default value is
16427 @code{3}.
16428
16429 @item qp
16430 Force a constant quantization parameter. If not set, the filter will use the QP
16431 from the video stream (if available).
16432 @end table
16433
16434 @section vaguedenoiser
16435
16436 Apply a wavelet based denoiser.
16437
16438 It transforms each frame from the video input into the wavelet domain,
16439 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
16440 the obtained coefficients. It does an inverse wavelet transform after.
16441 Due to wavelet properties, it should give a nice smoothed result, and
16442 reduced noise, without blurring picture features.
16443
16444 This filter accepts the following options:
16445
16446 @table @option
16447 @item threshold
16448 The filtering strength. The higher, the more filtered the video will be.
16449 Hard thresholding can use a higher threshold than soft thresholding
16450 before the video looks overfiltered. Default value is 2.
16451
16452 @item method
16453 The filtering method the filter will use.
16454
16455 It accepts the following values:
16456 @table @samp
16457 @item hard
16458 All values under the threshold will be zeroed.
16459
16460 @item soft
16461 All values under the threshold will be zeroed. All values above will be
16462 reduced by the threshold.
16463
16464 @item garrote
16465 Scales or nullifies coefficients - intermediary between (more) soft and
16466 (less) hard thresholding.
16467 @end table
16468
16469 Default is garrote.
16470
16471 @item nsteps
16472 Number of times, the wavelet will decompose the picture. Picture can't
16473 be decomposed beyond a particular point (typically, 8 for a 640x480
16474 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
16475
16476 @item percent
16477 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
16478
16479 @item planes
16480 A list of the planes to process. By default all planes are processed.
16481 @end table
16482
16483 @section vectorscope
16484
16485 Display 2 color component values in the two dimensional graph (which is called
16486 a vectorscope).
16487
16488 This filter accepts the following options:
16489
16490 @table @option
16491 @item mode, m
16492 Set vectorscope mode.
16493
16494 It accepts the following values:
16495 @table @samp
16496 @item gray
16497 Gray values are displayed on graph, higher brightness means more pixels have
16498 same component color value on location in graph. This is the default mode.
16499
16500 @item color
16501 Gray values are displayed on graph. Surrounding pixels values which are not
16502 present in video frame are drawn in gradient of 2 color components which are
16503 set by option @code{x} and @code{y}. The 3rd color component is static.
16504
16505 @item color2
16506 Actual color components values present in video frame are displayed on graph.
16507
16508 @item color3
16509 Similar as color2 but higher frequency of same values @code{x} and @code{y}
16510 on graph increases value of another color component, which is luminance by
16511 default values of @code{x} and @code{y}.
16512
16513 @item color4
16514 Actual colors present in video frame are displayed on graph. If two different
16515 colors map to same position on graph then color with higher value of component
16516 not present in graph is picked.
16517
16518 @item color5
16519 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
16520 component picked from radial gradient.
16521 @end table
16522
16523 @item x
16524 Set which color component will be represented on X-axis. Default is @code{1}.
16525
16526 @item y
16527 Set which color component will be represented on Y-axis. Default is @code{2}.
16528
16529 @item intensity, i
16530 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
16531 of color component which represents frequency of (X, Y) location in graph.
16532
16533 @item envelope, e
16534 @table @samp
16535 @item none
16536 No envelope, this is default.
16537
16538 @item instant
16539 Instant envelope, even darkest single pixel will be clearly highlighted.
16540
16541 @item peak
16542 Hold maximum and minimum values presented in graph over time. This way you
16543 can still spot out of range values without constantly looking at vectorscope.
16544
16545 @item peak+instant
16546 Peak and instant envelope combined together.
16547 @end table
16548
16549 @item graticule, g
16550 Set what kind of graticule to draw.
16551 @table @samp
16552 @item none
16553 @item green
16554 @item color
16555 @end table
16556
16557 @item opacity, o
16558 Set graticule opacity.
16559
16560 @item flags, f
16561 Set graticule flags.
16562
16563 @table @samp
16564 @item white
16565 Draw graticule for white point.
16566
16567 @item black
16568 Draw graticule for black point.
16569
16570 @item name
16571 Draw color points short names.
16572 @end table
16573
16574 @item bgopacity, b
16575 Set background opacity.
16576
16577 @item lthreshold, l
16578 Set low threshold for color component not represented on X or Y axis.
16579 Values lower than this value will be ignored. Default is 0.
16580 Note this value is multiplied with actual max possible value one pixel component
16581 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
16582 is 0.1 * 255 = 25.
16583
16584 @item hthreshold, h
16585 Set high threshold for color component not represented on X or Y axis.
16586 Values higher than this value will be ignored. Default is 1.
16587 Note this value is multiplied with actual max possible value one pixel component
16588 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
16589 is 0.9 * 255 = 230.
16590
16591 @item colorspace, c
16592 Set what kind of colorspace to use when drawing graticule.
16593 @table @samp
16594 @item auto
16595 @item 601
16596 @item 709
16597 @end table
16598 Default is auto.
16599 @end table
16600
16601 @anchor{vidstabdetect}
16602 @section vidstabdetect
16603
16604 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
16605 @ref{vidstabtransform} for pass 2.
16606
16607 This filter generates a file with relative translation and rotation
16608 transform information about subsequent frames, which is then used by
16609 the @ref{vidstabtransform} filter.
16610
16611 To enable compilation of this filter you need to configure FFmpeg with
16612 @code{--enable-libvidstab}.
16613
16614 This filter accepts the following options:
16615
16616 @table @option
16617 @item result
16618 Set the path to the file used to write the transforms information.
16619 Default value is @file{transforms.trf}.
16620
16621 @item shakiness
16622 Set how shaky the video is and how quick the camera is. It accepts an
16623 integer in the range 1-10, a value of 1 means little shakiness, a
16624 value of 10 means strong shakiness. Default value is 5.
16625
16626 @item accuracy
16627 Set the accuracy of the detection process. It must be a value in the
16628 range 1-15. A value of 1 means low accuracy, a value of 15 means high
16629 accuracy. Default value is 15.
16630
16631 @item stepsize
16632 Set stepsize of the search process. The region around minimum is
16633 scanned with 1 pixel resolution. Default value is 6.
16634
16635 @item mincontrast
16636 Set minimum contrast. Below this value a local measurement field is
16637 discarded. Must be a floating point value in the range 0-1. Default
16638 value is 0.3.
16639
16640 @item tripod
16641 Set reference frame number for tripod mode.
16642
16643 If enabled, the motion of the frames is compared to a reference frame
16644 in the filtered stream, identified by the specified number. The idea
16645 is to compensate all movements in a more-or-less static scene and keep
16646 the camera view absolutely still.
16647
16648 If set to 0, it is disabled. The frames are counted starting from 1.
16649
16650 @item show
16651 Show fields and transforms in the resulting frames. It accepts an
16652 integer in the range 0-2. Default value is 0, which disables any
16653 visualization.
16654 @end table
16655
16656 @subsection Examples
16657
16658 @itemize
16659 @item
16660 Use default values:
16661 @example
16662 vidstabdetect
16663 @end example
16664
16665 @item
16666 Analyze strongly shaky movie and put the results in file
16667 @file{mytransforms.trf}:
16668 @example
16669 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
16670 @end example
16671
16672 @item
16673 Visualize the result of internal transformations in the resulting
16674 video:
16675 @example
16676 vidstabdetect=show=1
16677 @end example
16678
16679 @item
16680 Analyze a video with medium shakiness using @command{ffmpeg}:
16681 @example
16682 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
16683 @end example
16684 @end itemize
16685
16686 @anchor{vidstabtransform}
16687 @section vidstabtransform
16688
16689 Video stabilization/deshaking: pass 2 of 2,
16690 see @ref{vidstabdetect} for pass 1.
16691
16692 Read a file with transform information for each frame and
16693 apply/compensate them. Together with the @ref{vidstabdetect}
16694 filter this can be used to deshake videos. See also
16695 @url{http://public.hronopik.de/vid.stab}. It is important to also use
16696 the @ref{unsharp} filter, see below.
16697
16698 To enable compilation of this filter you need to configure FFmpeg with
16699 @code{--enable-libvidstab}.
16700
16701 @subsection Options
16702
16703 @table @option
16704 @item input
16705 Set path to the file used to read the transforms. Default value is
16706 @file{transforms.trf}.
16707
16708 @item smoothing
16709 Set the number of frames (value*2 + 1) used for lowpass filtering the
16710 camera movements. Default value is 10.
16711
16712 For example a number of 10 means that 21 frames are used (10 in the
16713 past and 10 in the future) to smoothen the motion in the video. A
16714 larger value leads to a smoother video, but limits the acceleration of
16715 the camera (pan/tilt movements). 0 is a special case where a static
16716 camera is simulated.
16717
16718 @item optalgo
16719 Set the camera path optimization algorithm.
16720
16721 Accepted values are:
16722 @table @samp
16723 @item gauss
16724 gaussian kernel low-pass filter on camera motion (default)
16725 @item avg
16726 averaging on transformations
16727 @end table
16728
16729 @item maxshift
16730 Set maximal number of pixels to translate frames. Default value is -1,
16731 meaning no limit.
16732
16733 @item maxangle
16734 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
16735 value is -1, meaning no limit.
16736
16737 @item crop
16738 Specify how to deal with borders that may be visible due to movement
16739 compensation.
16740
16741 Available values are:
16742 @table @samp
16743 @item keep
16744 keep image information from previous frame (default)
16745 @item black
16746 fill the border black
16747 @end table
16748
16749 @item invert
16750 Invert transforms if set to 1. Default value is 0.
16751
16752 @item relative
16753 Consider transforms as relative to previous frame if set to 1,
16754 absolute if set to 0. Default value is 0.
16755
16756 @item zoom
16757 Set percentage to zoom. A positive value will result in a zoom-in
16758 effect, a negative value in a zoom-out effect. Default value is 0 (no
16759 zoom).
16760
16761 @item optzoom
16762 Set optimal zooming to avoid borders.
16763
16764 Accepted values are:
16765 @table @samp
16766 @item 0
16767 disabled
16768 @item 1
16769 optimal static zoom value is determined (only very strong movements
16770 will lead to visible borders) (default)
16771 @item 2
16772 optimal adaptive zoom value is determined (no borders will be
16773 visible), see @option{zoomspeed}
16774 @end table
16775
16776 Note that the value given at zoom is added to the one calculated here.
16777
16778 @item zoomspeed
16779 Set percent to zoom maximally each frame (enabled when
16780 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
16781 0.25.
16782
16783 @item interpol
16784 Specify type of interpolation.
16785
16786 Available values are:
16787 @table @samp
16788 @item no
16789 no interpolation
16790 @item linear
16791 linear only horizontal
16792 @item bilinear
16793 linear in both directions (default)
16794 @item bicubic
16795 cubic in both directions (slow)
16796 @end table
16797
16798 @item tripod
16799 Enable virtual tripod mode if set to 1, which is equivalent to
16800 @code{relative=0:smoothing=0}. Default value is 0.
16801
16802 Use also @code{tripod} option of @ref{vidstabdetect}.
16803
16804 @item debug
16805 Increase log verbosity if set to 1. Also the detected global motions
16806 are written to the temporary file @file{global_motions.trf}. Default
16807 value is 0.
16808 @end table
16809
16810 @subsection Examples
16811
16812 @itemize
16813 @item
16814 Use @command{ffmpeg} for a typical stabilization with default values:
16815 @example
16816 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
16817 @end example
16818
16819 Note the use of the @ref{unsharp} filter which is always recommended.
16820
16821 @item
16822 Zoom in a bit more and load transform data from a given file:
16823 @example
16824 vidstabtransform=zoom=5:input="mytransforms.trf"
16825 @end example
16826
16827 @item
16828 Smoothen the video even more:
16829 @example
16830 vidstabtransform=smoothing=30
16831 @end example
16832 @end itemize
16833
16834 @section vflip
16835
16836 Flip the input video vertically.
16837
16838 For example, to vertically flip a video with @command{ffmpeg}:
16839 @example
16840 ffmpeg -i in.avi -vf "vflip" out.avi
16841 @end example
16842
16843 @section vfrdet
16844
16845 Detect variable frame rate video.
16846
16847 This filter tries to detect if the input is variable or constant frame rate.
16848
16849 At end it will output number of frames detected as having variable delta pts,
16850 and ones with constant delta pts.
16851 If there was frames with variable delta, than it will also show min and max delta
16852 encountered.
16853
16854 @anchor{vignette}
16855 @section vignette
16856
16857 Make or reverse a natural vignetting effect.
16858
16859 The filter accepts the following options:
16860
16861 @table @option
16862 @item angle, a
16863 Set lens angle expression as a number of radians.
16864
16865 The value is clipped in the @code{[0,PI/2]} range.
16866
16867 Default value: @code{"PI/5"}
16868
16869 @item x0
16870 @item y0
16871 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
16872 by default.
16873
16874 @item mode
16875 Set forward/backward mode.
16876
16877 Available modes are:
16878 @table @samp
16879 @item forward
16880 The larger the distance from the central point, the darker the image becomes.
16881
16882 @item backward
16883 The larger the distance from the central point, the brighter the image becomes.
16884 This can be used to reverse a vignette effect, though there is no automatic
16885 detection to extract the lens @option{angle} and other settings (yet). It can
16886 also be used to create a burning effect.
16887 @end table
16888
16889 Default value is @samp{forward}.
16890
16891 @item eval
16892 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
16893
16894 It accepts the following values:
16895 @table @samp
16896 @item init
16897 Evaluate expressions only once during the filter initialization.
16898
16899 @item frame
16900 Evaluate expressions for each incoming frame. This is way slower than the
16901 @samp{init} mode since it requires all the scalers to be re-computed, but it
16902 allows advanced dynamic expressions.
16903 @end table
16904
16905 Default value is @samp{init}.
16906
16907 @item dither
16908 Set dithering to reduce the circular banding effects. Default is @code{1}
16909 (enabled).
16910
16911 @item aspect
16912 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
16913 Setting this value to the SAR of the input will make a rectangular vignetting
16914 following the dimensions of the video.
16915
16916 Default is @code{1/1}.
16917 @end table
16918
16919 @subsection Expressions
16920
16921 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
16922 following parameters.
16923
16924 @table @option
16925 @item w
16926 @item h
16927 input width and height
16928
16929 @item n
16930 the number of input frame, starting from 0
16931
16932 @item pts
16933 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
16934 @var{TB} units, NAN if undefined
16935
16936 @item r
16937 frame rate of the input video, NAN if the input frame rate is unknown
16938
16939 @item t
16940 the PTS (Presentation TimeStamp) of the filtered video frame,
16941 expressed in seconds, NAN if undefined
16942
16943 @item tb
16944 time base of the input video
16945 @end table
16946
16947
16948 @subsection Examples
16949
16950 @itemize
16951 @item
16952 Apply simple strong vignetting effect:
16953 @example
16954 vignette=PI/4
16955 @end example
16956
16957 @item
16958 Make a flickering vignetting:
16959 @example
16960 vignette='PI/4+random(1)*PI/50':eval=frame
16961 @end example
16962
16963 @end itemize
16964
16965 @section vmafmotion
16966
16967 Obtain the average vmaf motion score of a video.
16968 It is one of the component filters of VMAF.
16969
16970 The obtained average motion score is printed through the logging system.
16971
16972 In the below example the input file @file{ref.mpg} is being processed and score
16973 is computed.
16974
16975 @example
16976 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
16977 @end example
16978
16979 @section vstack
16980 Stack input videos vertically.
16981
16982 All streams must be of same pixel format and of same width.
16983
16984 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
16985 to create same output.
16986
16987 The filter accept the following option:
16988
16989 @table @option
16990 @item inputs
16991 Set number of input streams. Default is 2.
16992
16993 @item shortest
16994 If set to 1, force the output to terminate when the shortest input
16995 terminates. Default value is 0.
16996 @end table
16997
16998 @section w3fdif
16999
17000 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
17001 Deinterlacing Filter").
17002
17003 Based on the process described by Martin Weston for BBC R&D, and
17004 implemented based on the de-interlace algorithm written by Jim
17005 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
17006 uses filter coefficients calculated by BBC R&D.
17007
17008 There are two sets of filter coefficients, so called "simple":
17009 and "complex". Which set of filter coefficients is used can
17010 be set by passing an optional parameter:
17011
17012 @table @option
17013 @item filter
17014 Set the interlacing filter coefficients. Accepts one of the following values:
17015
17016 @table @samp
17017 @item simple
17018 Simple filter coefficient set.
17019 @item complex
17020 More-complex filter coefficient set.
17021 @end table
17022 Default value is @samp{complex}.
17023
17024 @item deint
17025 Specify which frames to deinterlace. Accept one of the following values:
17026
17027 @table @samp
17028 @item all
17029 Deinterlace all frames,
17030 @item interlaced
17031 Only deinterlace frames marked as interlaced.
17032 @end table
17033
17034 Default value is @samp{all}.
17035 @end table
17036
17037 @section waveform
17038 Video waveform monitor.
17039
17040 The waveform monitor plots color component intensity. By default luminance
17041 only. Each column of the waveform corresponds to a column of pixels in the
17042 source video.
17043
17044 It accepts the following options:
17045
17046 @table @option
17047 @item mode, m
17048 Can be either @code{row}, or @code{column}. Default is @code{column}.
17049 In row mode, the graph on the left side represents color component value 0 and
17050 the right side represents value = 255. In column mode, the top side represents
17051 color component value = 0 and bottom side represents value = 255.
17052
17053 @item intensity, i
17054 Set intensity. Smaller values are useful to find out how many values of the same
17055 luminance are distributed across input rows/columns.
17056 Default value is @code{0.04}. Allowed range is [0, 1].
17057
17058 @item mirror, r
17059 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
17060 In mirrored mode, higher values will be represented on the left
17061 side for @code{row} mode and at the top for @code{column} mode. Default is
17062 @code{1} (mirrored).
17063
17064 @item display, d
17065 Set display mode.
17066 It accepts the following values:
17067 @table @samp
17068 @item overlay
17069 Presents information identical to that in the @code{parade}, except
17070 that the graphs representing color components are superimposed directly
17071 over one another.
17072
17073 This display mode makes it easier to spot relative differences or similarities
17074 in overlapping areas of the color components that are supposed to be identical,
17075 such as neutral whites, grays, or blacks.
17076
17077 @item stack
17078 Display separate graph for the color components side by side in
17079 @code{row} mode or one below the other in @code{column} mode.
17080
17081 @item parade
17082 Display separate graph for the color components side by side in
17083 @code{column} mode or one below the other in @code{row} mode.
17084
17085 Using this display mode makes it easy to spot color casts in the highlights
17086 and shadows of an image, by comparing the contours of the top and the bottom
17087 graphs of each waveform. Since whites, grays, and blacks are characterized
17088 by exactly equal amounts of red, green, and blue, neutral areas of the picture
17089 should display three waveforms of roughly equal width/height. If not, the
17090 correction is easy to perform by making level adjustments the three waveforms.
17091 @end table
17092 Default is @code{stack}.
17093
17094 @item components, c
17095 Set which color components to display. Default is 1, which means only luminance
17096 or red color component if input is in RGB colorspace. If is set for example to
17097 7 it will display all 3 (if) available color components.
17098
17099 @item envelope, e
17100 @table @samp
17101 @item none
17102 No envelope, this is default.
17103
17104 @item instant
17105 Instant envelope, minimum and maximum values presented in graph will be easily
17106 visible even with small @code{step} value.
17107
17108 @item peak
17109 Hold minimum and maximum values presented in graph across time. This way you
17110 can still spot out of range values without constantly looking at waveforms.
17111
17112 @item peak+instant
17113 Peak and instant envelope combined together.
17114 @end table
17115
17116 @item filter, f
17117 @table @samp
17118 @item lowpass
17119 No filtering, this is default.
17120
17121 @item flat
17122 Luma and chroma combined together.
17123
17124 @item aflat
17125 Similar as above, but shows difference between blue and red chroma.
17126
17127 @item xflat
17128 Similar as above, but use different colors.
17129
17130 @item chroma
17131 Displays only chroma.
17132
17133 @item color
17134 Displays actual color value on waveform.
17135
17136 @item acolor
17137 Similar as above, but with luma showing frequency of chroma values.
17138 @end table
17139
17140 @item graticule, g
17141 Set which graticule to display.
17142
17143 @table @samp
17144 @item none
17145 Do not display graticule.
17146
17147 @item green
17148 Display green graticule showing legal broadcast ranges.
17149
17150 @item orange
17151 Display orange graticule showing legal broadcast ranges.
17152 @end table
17153
17154 @item opacity, o
17155 Set graticule opacity.
17156
17157 @item flags, fl
17158 Set graticule flags.
17159
17160 @table @samp
17161 @item numbers
17162 Draw numbers above lines. By default enabled.
17163
17164 @item dots
17165 Draw dots instead of lines.
17166 @end table
17167
17168 @item scale, s
17169 Set scale used for displaying graticule.
17170
17171 @table @samp
17172 @item digital
17173 @item millivolts
17174 @item ire
17175 @end table
17176 Default is digital.
17177
17178 @item bgopacity, b
17179 Set background opacity.
17180 @end table
17181
17182 @section weave, doubleweave
17183
17184 The @code{weave} takes a field-based video input and join
17185 each two sequential fields into single frame, producing a new double
17186 height clip with half the frame rate and half the frame count.
17187
17188 The @code{doubleweave} works same as @code{weave} but without
17189 halving frame rate and frame count.
17190
17191 It accepts the following option:
17192
17193 @table @option
17194 @item first_field
17195 Set first field. Available values are:
17196
17197 @table @samp
17198 @item top, t
17199 Set the frame as top-field-first.
17200
17201 @item bottom, b
17202 Set the frame as bottom-field-first.
17203 @end table
17204 @end table
17205
17206 @subsection Examples
17207
17208 @itemize
17209 @item
17210 Interlace video using @ref{select} and @ref{separatefields} filter:
17211 @example
17212 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
17213 @end example
17214 @end itemize
17215
17216 @section xbr
17217 Apply the xBR high-quality magnification filter which is designed for pixel
17218 art. It follows a set of edge-detection rules, see
17219 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
17220
17221 It accepts the following option:
17222
17223 @table @option
17224 @item n
17225 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
17226 @code{3xBR} and @code{4} for @code{4xBR}.
17227 Default is @code{3}.
17228 @end table
17229
17230 @anchor{yadif}
17231 @section yadif
17232
17233 Deinterlace the input video ("yadif" means "yet another deinterlacing
17234 filter").
17235
17236 It accepts the following parameters:
17237
17238
17239 @table @option
17240
17241 @item mode
17242 The interlacing mode to adopt. It accepts one of the following values:
17243
17244 @table @option
17245 @item 0, send_frame
17246 Output one frame for each frame.
17247 @item 1, send_field
17248 Output one frame for each field.
17249 @item 2, send_frame_nospatial
17250 Like @code{send_frame}, but it skips the spatial interlacing check.
17251 @item 3, send_field_nospatial
17252 Like @code{send_field}, but it skips the spatial interlacing check.
17253 @end table
17254
17255 The default value is @code{send_frame}.
17256
17257 @item parity
17258 The picture field parity assumed for the input interlaced video. It accepts one
17259 of the following values:
17260
17261 @table @option
17262 @item 0, tff
17263 Assume the top field is first.
17264 @item 1, bff
17265 Assume the bottom field is first.
17266 @item -1, auto
17267 Enable automatic detection of field parity.
17268 @end table
17269
17270 The default value is @code{auto}.
17271 If the interlacing is unknown or the decoder does not export this information,
17272 top field first will be assumed.
17273
17274 @item deint
17275 Specify which frames to deinterlace. Accept one of the following
17276 values:
17277
17278 @table @option
17279 @item 0, all
17280 Deinterlace all frames.
17281 @item 1, interlaced
17282 Only deinterlace frames marked as interlaced.
17283 @end table
17284
17285 The default value is @code{all}.
17286 @end table
17287
17288 @section zoompan
17289
17290 Apply Zoom & Pan effect.
17291
17292 This filter accepts the following options:
17293
17294 @table @option
17295 @item zoom, z
17296 Set the zoom expression. Default is 1.
17297
17298 @item x
17299 @item y
17300 Set the x and y expression. Default is 0.
17301
17302 @item d
17303 Set the duration expression in number of frames.
17304 This sets for how many number of frames effect will last for
17305 single input image.
17306
17307 @item s
17308 Set the output image size, default is 'hd720'.
17309
17310 @item fps
17311 Set the output frame rate, default is '25'.
17312 @end table
17313
17314 Each expression can contain the following constants:
17315
17316 @table @option
17317 @item in_w, iw
17318 Input width.
17319
17320 @item in_h, ih
17321 Input height.
17322
17323 @item out_w, ow
17324 Output width.
17325
17326 @item out_h, oh
17327 Output height.
17328
17329 @item in
17330 Input frame count.
17331
17332 @item on
17333 Output frame count.
17334
17335 @item x
17336 @item y
17337 Last calculated 'x' and 'y' position from 'x' and 'y' expression
17338 for current input frame.
17339
17340 @item px
17341 @item py
17342 'x' and 'y' of last output frame of previous input frame or 0 when there was
17343 not yet such frame (first input frame).
17344
17345 @item zoom
17346 Last calculated zoom from 'z' expression for current input frame.
17347
17348 @item pzoom
17349 Last calculated zoom of last output frame of previous input frame.
17350
17351 @item duration
17352 Number of output frames for current input frame. Calculated from 'd' expression
17353 for each input frame.
17354
17355 @item pduration
17356 number of output frames created for previous input frame
17357
17358 @item a
17359 Rational number: input width / input height
17360
17361 @item sar
17362 sample aspect ratio
17363
17364 @item dar
17365 display aspect ratio
17366
17367 @end table
17368
17369 @subsection Examples
17370
17371 @itemize
17372 @item
17373 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
17374 @example
17375 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
17376 @end example
17377
17378 @item
17379 Zoom-in up to 1.5 and pan always at center of picture:
17380 @example
17381 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
17382 @end example
17383
17384 @item
17385 Same as above but without pausing:
17386 @example
17387 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
17388 @end example
17389 @end itemize
17390
17391 @anchor{zscale}
17392 @section zscale
17393 Scale (resize) the input video, using the z.lib library:
17394 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
17395 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
17396
17397 The zscale filter forces the output display aspect ratio to be the same
17398 as the input, by changing the output sample aspect ratio.
17399
17400 If the input image format is different from the format requested by
17401 the next filter, the zscale filter will convert the input to the
17402 requested format.
17403
17404 @subsection Options
17405 The filter accepts the following options.
17406
17407 @table @option
17408 @item width, w
17409 @item height, h
17410 Set the output video dimension expression. Default value is the input
17411 dimension.
17412
17413 If the @var{width} or @var{w} value is 0, the input width is used for
17414 the output. If the @var{height} or @var{h} value is 0, the input height
17415 is used for the output.
17416
17417 If one and only one of the values is -n with n >= 1, the zscale filter
17418 will use a value that maintains the aspect ratio of the input image,
17419 calculated from the other specified dimension. After that it will,
17420 however, make sure that the calculated dimension is divisible by n and
17421 adjust the value if necessary.
17422
17423 If both values are -n with n >= 1, the behavior will be identical to
17424 both values being set to 0 as previously detailed.
17425
17426 See below for the list of accepted constants for use in the dimension
17427 expression.
17428
17429 @item size, s
17430 Set the video size. For the syntax of this option, check the
17431 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17432
17433 @item dither, d
17434 Set the dither type.
17435
17436 Possible values are:
17437 @table @var
17438 @item none
17439 @item ordered
17440 @item random
17441 @item error_diffusion
17442 @end table
17443
17444 Default is none.
17445
17446 @item filter, f
17447 Set the resize filter type.
17448
17449 Possible values are:
17450 @table @var
17451 @item point
17452 @item bilinear
17453 @item bicubic
17454 @item spline16
17455 @item spline36
17456 @item lanczos
17457 @end table
17458
17459 Default is bilinear.
17460
17461 @item range, r
17462 Set the color range.
17463
17464 Possible values are:
17465 @table @var
17466 @item input
17467 @item limited
17468 @item full
17469 @end table
17470
17471 Default is same as input.
17472
17473 @item primaries, p
17474 Set the color primaries.
17475
17476 Possible values are:
17477 @table @var
17478 @item input
17479 @item 709
17480 @item unspecified
17481 @item 170m
17482 @item 240m
17483 @item 2020
17484 @end table
17485
17486 Default is same as input.
17487
17488 @item transfer, t
17489 Set the transfer characteristics.
17490
17491 Possible values are:
17492 @table @var
17493 @item input
17494 @item 709
17495 @item unspecified
17496 @item 601
17497 @item linear
17498 @item 2020_10
17499 @item 2020_12
17500 @item smpte2084
17501 @item iec61966-2-1
17502 @item arib-std-b67
17503 @end table
17504
17505 Default is same as input.
17506
17507 @item matrix, m
17508 Set the colorspace matrix.
17509
17510 Possible value are:
17511 @table @var
17512 @item input
17513 @item 709
17514 @item unspecified
17515 @item 470bg
17516 @item 170m
17517 @item 2020_ncl
17518 @item 2020_cl
17519 @end table
17520
17521 Default is same as input.
17522
17523 @item rangein, rin
17524 Set the input color range.
17525
17526 Possible values are:
17527 @table @var
17528 @item input
17529 @item limited
17530 @item full
17531 @end table
17532
17533 Default is same as input.
17534
17535 @item primariesin, pin
17536 Set the input color primaries.
17537
17538 Possible values are:
17539 @table @var
17540 @item input
17541 @item 709
17542 @item unspecified
17543 @item 170m
17544 @item 240m
17545 @item 2020
17546 @end table
17547
17548 Default is same as input.
17549
17550 @item transferin, tin
17551 Set the input transfer characteristics.
17552
17553 Possible values are:
17554 @table @var
17555 @item input
17556 @item 709
17557 @item unspecified
17558 @item 601
17559 @item linear
17560 @item 2020_10
17561 @item 2020_12
17562 @end table
17563
17564 Default is same as input.
17565
17566 @item matrixin, min
17567 Set the input colorspace matrix.
17568
17569 Possible value are:
17570 @table @var
17571 @item input
17572 @item 709
17573 @item unspecified
17574 @item 470bg
17575 @item 170m
17576 @item 2020_ncl
17577 @item 2020_cl
17578 @end table
17579
17580 @item chromal, c
17581 Set the output chroma location.
17582
17583 Possible values are:
17584 @table @var
17585 @item input
17586 @item left
17587 @item center
17588 @item topleft
17589 @item top
17590 @item bottomleft
17591 @item bottom
17592 @end table
17593
17594 @item chromalin, cin
17595 Set the input chroma location.
17596
17597 Possible values are:
17598 @table @var
17599 @item input
17600 @item left
17601 @item center
17602 @item topleft
17603 @item top
17604 @item bottomleft
17605 @item bottom
17606 @end table
17607
17608 @item npl
17609 Set the nominal peak luminance.
17610 @end table
17611
17612 The values of the @option{w} and @option{h} options are expressions
17613 containing the following constants:
17614
17615 @table @var
17616 @item in_w
17617 @item in_h
17618 The input width and height
17619
17620 @item iw
17621 @item ih
17622 These are the same as @var{in_w} and @var{in_h}.
17623
17624 @item out_w
17625 @item out_h
17626 The output (scaled) width and height
17627
17628 @item ow
17629 @item oh
17630 These are the same as @var{out_w} and @var{out_h}
17631
17632 @item a
17633 The same as @var{iw} / @var{ih}
17634
17635 @item sar
17636 input sample aspect ratio
17637
17638 @item dar
17639 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
17640
17641 @item hsub
17642 @item vsub
17643 horizontal and vertical input chroma subsample values. For example for the
17644 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17645
17646 @item ohsub
17647 @item ovsub
17648 horizontal and vertical output chroma subsample values. For example for the
17649 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17650 @end table
17651
17652 @table @option
17653 @end table
17654
17655 @c man end VIDEO FILTERS
17656
17657 @chapter Video Sources
17658 @c man begin VIDEO SOURCES
17659
17660 Below is a description of the currently available video sources.
17661
17662 @section buffer
17663
17664 Buffer video frames, and make them available to the filter chain.
17665
17666 This source is mainly intended for a programmatic use, in particular
17667 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
17668
17669 It accepts the following parameters:
17670
17671 @table @option
17672
17673 @item video_size
17674 Specify the size (width and height) of the buffered video frames. For the
17675 syntax of this option, check the
17676 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17677
17678 @item width
17679 The input video width.
17680
17681 @item height
17682 The input video height.
17683
17684 @item pix_fmt
17685 A string representing the pixel format of the buffered video frames.
17686 It may be a number corresponding to a pixel format, or a pixel format
17687 name.
17688
17689 @item time_base
17690 Specify the timebase assumed by the timestamps of the buffered frames.
17691
17692 @item frame_rate
17693 Specify the frame rate expected for the video stream.
17694
17695 @item pixel_aspect, sar
17696 The sample (pixel) aspect ratio of the input video.
17697
17698 @item sws_param
17699 Specify the optional parameters to be used for the scale filter which
17700 is automatically inserted when an input change is detected in the
17701 input size or format.
17702
17703 @item hw_frames_ctx
17704 When using a hardware pixel format, this should be a reference to an
17705 AVHWFramesContext describing input frames.
17706 @end table
17707
17708 For example:
17709 @example
17710 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
17711 @end example
17712
17713 will instruct the source to accept video frames with size 320x240 and
17714 with format "yuv410p", assuming 1/24 as the timestamps timebase and
17715 square pixels (1:1 sample aspect ratio).
17716 Since the pixel format with name "yuv410p" corresponds to the number 6
17717 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
17718 this example corresponds to:
17719 @example
17720 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
17721 @end example
17722
17723 Alternatively, the options can be specified as a flat string, but this
17724 syntax is deprecated:
17725
17726 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}[:@var{sws_param}]
17727
17728 @section cellauto
17729
17730 Create a pattern generated by an elementary cellular automaton.
17731
17732 The initial state of the cellular automaton can be defined through the
17733 @option{filename} and @option{pattern} options. If such options are
17734 not specified an initial state is created randomly.
17735
17736 At each new frame a new row in the video is filled with the result of
17737 the cellular automaton next generation. The behavior when the whole
17738 frame is filled is defined by the @option{scroll} option.
17739
17740 This source accepts the following options:
17741
17742 @table @option
17743 @item filename, f
17744 Read the initial cellular automaton state, i.e. the starting row, from
17745 the specified file.
17746 In the file, each non-whitespace character is considered an alive
17747 cell, a newline will terminate the row, and further characters in the
17748 file will be ignored.
17749
17750 @item pattern, p
17751 Read the initial cellular automaton state, i.e. the starting row, from
17752 the specified string.
17753
17754 Each non-whitespace character in the string is considered an alive
17755 cell, a newline will terminate the row, and further characters in the
17756 string will be ignored.
17757
17758 @item rate, r
17759 Set the video rate, that is the number of frames generated per second.
17760 Default is 25.
17761
17762 @item random_fill_ratio, ratio
17763 Set the random fill ratio for the initial cellular automaton row. It
17764 is a floating point number value ranging from 0 to 1, defaults to
17765 1/PHI.
17766
17767 This option is ignored when a file or a pattern is specified.
17768
17769 @item random_seed, seed
17770 Set the seed for filling randomly the initial row, must be an integer
17771 included between 0 and UINT32_MAX. If not specified, or if explicitly
17772 set to -1, the filter will try to use a good random seed on a best
17773 effort basis.
17774
17775 @item rule
17776 Set the cellular automaton rule, it is a number ranging from 0 to 255.
17777 Default value is 110.
17778
17779 @item size, s
17780 Set the size of the output video. For the syntax of this option, check the
17781 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17782
17783 If @option{filename} or @option{pattern} is specified, the size is set
17784 by default to the width of the specified initial state row, and the
17785 height is set to @var{width} * PHI.
17786
17787 If @option{size} is set, it must contain the width of the specified
17788 pattern string, and the specified pattern will be centered in the
17789 larger row.
17790
17791 If a filename or a pattern string is not specified, the size value
17792 defaults to "320x518" (used for a randomly generated initial state).
17793
17794 @item scroll
17795 If set to 1, scroll the output upward when all the rows in the output
17796 have been already filled. If set to 0, the new generated row will be
17797 written over the top row just after the bottom row is filled.
17798 Defaults to 1.
17799
17800 @item start_full, full
17801 If set to 1, completely fill the output with generated rows before
17802 outputting the first frame.
17803 This is the default behavior, for disabling set the value to 0.
17804
17805 @item stitch
17806 If set to 1, stitch the left and right row edges together.
17807 This is the default behavior, for disabling set the value to 0.
17808 @end table
17809
17810 @subsection Examples
17811
17812 @itemize
17813 @item
17814 Read the initial state from @file{pattern}, and specify an output of
17815 size 200x400.
17816 @example
17817 cellauto=f=pattern:s=200x400
17818 @end example
17819
17820 @item
17821 Generate a random initial row with a width of 200 cells, with a fill
17822 ratio of 2/3:
17823 @example
17824 cellauto=ratio=2/3:s=200x200
17825 @end example
17826
17827 @item
17828 Create a pattern generated by rule 18 starting by a single alive cell
17829 centered on an initial row with width 100:
17830 @example
17831 cellauto=p=@@:s=100x400:full=0:rule=18
17832 @end example
17833
17834 @item
17835 Specify a more elaborated initial pattern:
17836 @example
17837 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
17838 @end example
17839
17840 @end itemize
17841
17842 @anchor{coreimagesrc}
17843 @section coreimagesrc
17844 Video source generated on GPU using Apple's CoreImage API on OSX.
17845
17846 This video source is a specialized version of the @ref{coreimage} video filter.
17847 Use a core image generator at the beginning of the applied filterchain to
17848 generate the content.
17849
17850 The coreimagesrc video source accepts the following options:
17851 @table @option
17852 @item list_generators
17853 List all available generators along with all their respective options as well as
17854 possible minimum and maximum values along with the default values.
17855 @example
17856 list_generators=true
17857 @end example
17858
17859 @item size, s
17860 Specify the size of the sourced video. For the syntax of this option, check the
17861 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17862 The default value is @code{320x240}.
17863
17864 @item rate, r
17865 Specify the frame rate of the sourced video, as the number of frames
17866 generated per second. It has to be a string in the format
17867 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
17868 number or a valid video frame rate abbreviation. The default value is
17869 "25".
17870
17871 @item sar
17872 Set the sample aspect ratio of the sourced video.
17873
17874 @item duration, d
17875 Set the duration of the sourced video. See
17876 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17877 for the accepted syntax.
17878
17879 If not specified, or the expressed duration is negative, the video is
17880 supposed to be generated forever.
17881 @end table
17882
17883 Additionally, all options of the @ref{coreimage} video filter are accepted.
17884 A complete filterchain can be used for further processing of the
17885 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
17886 and examples for details.
17887
17888 @subsection Examples
17889
17890 @itemize
17891
17892 @item
17893 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
17894 given as complete and escaped command-line for Apple's standard bash shell:
17895 @example
17896 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
17897 @end example
17898 This example is equivalent to the QRCode example of @ref{coreimage} without the
17899 need for a nullsrc video source.
17900 @end itemize
17901
17902
17903 @section mandelbrot
17904
17905 Generate a Mandelbrot set fractal, and progressively zoom towards the
17906 point specified with @var{start_x} and @var{start_y}.
17907
17908 This source accepts the following options:
17909
17910 @table @option
17911
17912 @item end_pts
17913 Set the terminal pts value. Default value is 400.
17914
17915 @item end_scale
17916 Set the terminal scale value.
17917 Must be a floating point value. Default value is 0.3.
17918
17919 @item inner
17920 Set the inner coloring mode, that is the algorithm used to draw the
17921 Mandelbrot fractal internal region.
17922
17923 It shall assume one of the following values:
17924 @table @option
17925 @item black
17926 Set black mode.
17927 @item convergence
17928 Show time until convergence.
17929 @item mincol
17930 Set color based on point closest to the origin of the iterations.
17931 @item period
17932 Set period mode.
17933 @end table
17934
17935 Default value is @var{mincol}.
17936
17937 @item bailout
17938 Set the bailout value. Default value is 10.0.
17939
17940 @item maxiter
17941 Set the maximum of iterations performed by the rendering
17942 algorithm. Default value is 7189.
17943
17944 @item outer
17945 Set outer coloring mode.
17946 It shall assume one of following values:
17947 @table @option
17948 @item iteration_count
17949 Set iteration cound mode.
17950 @item normalized_iteration_count
17951 set normalized iteration count mode.
17952 @end table
17953 Default value is @var{normalized_iteration_count}.
17954
17955 @item rate, r
17956 Set frame rate, expressed as number of frames per second. Default
17957 value is "25".
17958
17959 @item size, s
17960 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
17961 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
17962
17963 @item start_scale
17964 Set the initial scale value. Default value is 3.0.
17965
17966 @item start_x
17967 Set the initial x position. Must be a floating point value between
17968 -100 and 100. Default value is -0.743643887037158704752191506114774.
17969
17970 @item start_y
17971 Set the initial y position. Must be a floating point value between
17972 -100 and 100. Default value is -0.131825904205311970493132056385139.
17973 @end table
17974
17975 @section mptestsrc
17976
17977 Generate various test patterns, as generated by the MPlayer test filter.
17978
17979 The size of the generated video is fixed, and is 256x256.
17980 This source is useful in particular for testing encoding features.
17981
17982 This source accepts the following options:
17983
17984 @table @option
17985
17986 @item rate, r
17987 Specify the frame rate of the sourced video, as the number of frames
17988 generated per second. It has to be a string in the format
17989 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
17990 number or a valid video frame rate abbreviation. The default value is
17991 "25".
17992
17993 @item duration, d
17994 Set the duration of the sourced video. See
17995 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17996 for the accepted syntax.
17997
17998 If not specified, or the expressed duration is negative, the video is
17999 supposed to be generated forever.
18000
18001 @item test, t
18002
18003 Set the number or the name of the test to perform. Supported tests are:
18004 @table @option
18005 @item dc_luma
18006 @item dc_chroma
18007 @item freq_luma
18008 @item freq_chroma
18009 @item amp_luma
18010 @item amp_chroma
18011 @item cbp
18012 @item mv
18013 @item ring1
18014 @item ring2
18015 @item all
18016
18017 @end table
18018
18019 Default value is "all", which will cycle through the list of all tests.
18020 @end table
18021
18022 Some examples:
18023 @example
18024 mptestsrc=t=dc_luma
18025 @end example
18026
18027 will generate a "dc_luma" test pattern.
18028
18029 @section frei0r_src
18030
18031 Provide a frei0r source.
18032
18033 To enable compilation of this filter you need to install the frei0r
18034 header and configure FFmpeg with @code{--enable-frei0r}.
18035
18036 This source accepts the following parameters:
18037
18038 @table @option
18039
18040 @item size
18041 The size of the video to generate. For the syntax of this option, check the
18042 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18043
18044 @item framerate
18045 The framerate of the generated video. It may be a string of the form
18046 @var{num}/@var{den} or a frame rate abbreviation.
18047
18048 @item filter_name
18049 The name to the frei0r source to load. For more information regarding frei0r and
18050 how to set the parameters, read the @ref{frei0r} section in the video filters
18051 documentation.
18052
18053 @item filter_params
18054 A '|'-separated list of parameters to pass to the frei0r source.
18055
18056 @end table
18057
18058 For example, to generate a frei0r partik0l source with size 200x200
18059 and frame rate 10 which is overlaid on the overlay filter main input:
18060 @example
18061 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
18062 @end example
18063
18064 @section life
18065
18066 Generate a life pattern.
18067
18068 This source is based on a generalization of John Conway's life game.
18069
18070 The sourced input represents a life grid, each pixel represents a cell
18071 which can be in one of two possible states, alive or dead. Every cell
18072 interacts with its eight neighbours, which are the cells that are
18073 horizontally, vertically, or diagonally adjacent.
18074
18075 At each interaction the grid evolves according to the adopted rule,
18076 which specifies the number of neighbor alive cells which will make a
18077 cell stay alive or born. The @option{rule} option allows one to specify
18078 the rule to adopt.
18079
18080 This source accepts the following options:
18081
18082 @table @option
18083 @item filename, f
18084 Set the file from which to read the initial grid state. In the file,
18085 each non-whitespace character is considered an alive cell, and newline
18086 is used to delimit the end of each row.
18087
18088 If this option is not specified, the initial grid is generated
18089 randomly.
18090
18091 @item rate, r
18092 Set the video rate, that is the number of frames generated per second.
18093 Default is 25.
18094
18095 @item random_fill_ratio, ratio
18096 Set the random fill ratio for the initial random grid. It is a
18097 floating point number value ranging from 0 to 1, defaults to 1/PHI.
18098 It is ignored when a file is specified.
18099
18100 @item random_seed, seed
18101 Set the seed for filling the initial random grid, must be an integer
18102 included between 0 and UINT32_MAX. If not specified, or if explicitly
18103 set to -1, the filter will try to use a good random seed on a best
18104 effort basis.
18105
18106 @item rule
18107 Set the life rule.
18108
18109 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
18110 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
18111 @var{NS} specifies the number of alive neighbor cells which make a
18112 live cell stay alive, and @var{NB} the number of alive neighbor cells
18113 which make a dead cell to become alive (i.e. to "born").
18114 "s" and "b" can be used in place of "S" and "B", respectively.
18115
18116 Alternatively a rule can be specified by an 18-bits integer. The 9
18117 high order bits are used to encode the next cell state if it is alive
18118 for each number of neighbor alive cells, the low order bits specify
18119 the rule for "borning" new cells. Higher order bits encode for an
18120 higher number of neighbor cells.
18121 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
18122 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
18123
18124 Default value is "S23/B3", which is the original Conway's game of life
18125 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
18126 cells, and will born a new cell if there are three alive cells around
18127 a dead cell.
18128
18129 @item size, s
18130 Set the size of the output video. For the syntax of this option, check the
18131 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18132
18133 If @option{filename} is specified, the size is set by default to the
18134 same size of the input file. If @option{size} is set, it must contain
18135 the size specified in the input file, and the initial grid defined in
18136 that file is centered in the larger resulting area.
18137
18138 If a filename is not specified, the size value defaults to "320x240"
18139 (used for a randomly generated initial grid).
18140
18141 @item stitch
18142 If set to 1, stitch the left and right grid edges together, and the
18143 top and bottom edges also. Defaults to 1.
18144
18145 @item mold
18146 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
18147 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
18148 value from 0 to 255.
18149
18150 @item life_color
18151 Set the color of living (or new born) cells.
18152
18153 @item death_color
18154 Set the color of dead cells. If @option{mold} is set, this is the first color
18155 used to represent a dead cell.
18156
18157 @item mold_color
18158 Set mold color, for definitely dead and moldy cells.
18159
18160 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
18161 ffmpeg-utils manual,ffmpeg-utils}.
18162 @end table
18163
18164 @subsection Examples
18165
18166 @itemize
18167 @item
18168 Read a grid from @file{pattern}, and center it on a grid of size
18169 300x300 pixels:
18170 @example
18171 life=f=pattern:s=300x300
18172 @end example
18173
18174 @item
18175 Generate a random grid of size 200x200, with a fill ratio of 2/3:
18176 @example
18177 life=ratio=2/3:s=200x200
18178 @end example
18179
18180 @item
18181 Specify a custom rule for evolving a randomly generated grid:
18182 @example
18183 life=rule=S14/B34
18184 @end example
18185
18186 @item
18187 Full example with slow death effect (mold) using @command{ffplay}:
18188 @example
18189 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
18190 @end example
18191 @end itemize
18192
18193 @anchor{allrgb}
18194 @anchor{allyuv}
18195 @anchor{color}
18196 @anchor{haldclutsrc}
18197 @anchor{nullsrc}
18198 @anchor{pal75bars}
18199 @anchor{pal100bars}
18200 @anchor{rgbtestsrc}
18201 @anchor{smptebars}
18202 @anchor{smptehdbars}
18203 @anchor{testsrc}
18204 @anchor{testsrc2}
18205 @anchor{yuvtestsrc}
18206 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
18207
18208 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
18209
18210 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
18211
18212 The @code{color} source provides an uniformly colored input.
18213
18214 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
18215 @ref{haldclut} filter.
18216
18217 The @code{nullsrc} source returns unprocessed video frames. It is
18218 mainly useful to be employed in analysis / debugging tools, or as the
18219 source for filters which ignore the input data.
18220
18221 The @code{pal75bars} source generates a color bars pattern, based on
18222 EBU PAL recommendations with 75% color levels.
18223
18224 The @code{pal100bars} source generates a color bars pattern, based on
18225 EBU PAL recommendations with 100% color levels.
18226
18227 The @code{rgbtestsrc} source generates an RGB test pattern useful for
18228 detecting RGB vs BGR issues. You should see a red, green and blue
18229 stripe from top to bottom.
18230
18231 The @code{smptebars} source generates a color bars pattern, based on
18232 the SMPTE Engineering Guideline EG 1-1990.
18233
18234 The @code{smptehdbars} source generates a color bars pattern, based on
18235 the SMPTE RP 219-2002.
18236
18237 The @code{testsrc} source generates a test video pattern, showing a
18238 color pattern, a scrolling gradient and a timestamp. This is mainly
18239 intended for testing purposes.
18240
18241 The @code{testsrc2} source is similar to testsrc, but supports more
18242 pixel formats instead of just @code{rgb24}. This allows using it as an
18243 input for other tests without requiring a format conversion.
18244
18245 The @code{yuvtestsrc} source generates an YUV test pattern. You should
18246 see a y, cb and cr stripe from top to bottom.
18247
18248 The sources accept the following parameters:
18249
18250 @table @option
18251
18252 @item level
18253 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
18254 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
18255 pixels to be used as identity matrix for 3D lookup tables. Each component is
18256 coded on a @code{1/(N*N)} scale.
18257
18258 @item color, c
18259 Specify the color of the source, only available in the @code{color}
18260 source. For the syntax of this option, check the
18261 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18262
18263 @item size, s
18264 Specify the size of the sourced video. For the syntax of this option, check the
18265 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18266 The default value is @code{320x240}.
18267
18268 This option is not available with the @code{allrgb}, @code{allyuv}, and
18269 @code{haldclutsrc} filters.
18270
18271 @item rate, r
18272 Specify the frame rate of the sourced video, as the number of frames
18273 generated per second. It has to be a string in the format
18274 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
18275 number or a valid video frame rate abbreviation. The default value is
18276 "25".
18277
18278 @item duration, d
18279 Set the duration of the sourced video. See
18280 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18281 for the accepted syntax.
18282
18283 If not specified, or the expressed duration is negative, the video is
18284 supposed to be generated forever.
18285
18286 @item sar
18287 Set the sample aspect ratio of the sourced video.
18288
18289 @item alpha
18290 Specify the alpha (opacity) of the background, only available in the
18291 @code{testsrc2} source. The value must be between 0 (fully transparent) and
18292 255 (fully opaque, the default).
18293
18294 @item decimals, n
18295 Set the number of decimals to show in the timestamp, only available in the
18296 @code{testsrc} source.
18297
18298 The displayed timestamp value will correspond to the original
18299 timestamp value multiplied by the power of 10 of the specified
18300 value. Default value is 0.
18301 @end table
18302
18303 @subsection Examples
18304
18305 @itemize
18306 @item
18307 Generate a video with a duration of 5.3 seconds, with size
18308 176x144 and a frame rate of 10 frames per second:
18309 @example
18310 testsrc=duration=5.3:size=qcif:rate=10
18311 @end example
18312
18313 @item
18314 The following graph description will generate a red source
18315 with an opacity of 0.2, with size "qcif" and a frame rate of 10
18316 frames per second:
18317 @example
18318 color=c=red@@0.2:s=qcif:r=10
18319 @end example
18320
18321 @item
18322 If the input content is to be ignored, @code{nullsrc} can be used. The
18323 following command generates noise in the luminance plane by employing
18324 the @code{geq} filter:
18325 @example
18326 nullsrc=s=256x256, geq=random(1)*255:128:128
18327 @end example
18328 @end itemize
18329
18330 @subsection Commands
18331
18332 The @code{color} source supports the following commands:
18333
18334 @table @option
18335 @item c, color
18336 Set the color of the created image. Accepts the same syntax of the
18337 corresponding @option{color} option.
18338 @end table
18339
18340 @section openclsrc
18341
18342 Generate video using an OpenCL program.
18343
18344 @table @option
18345
18346 @item source
18347 OpenCL program source file.
18348
18349 @item kernel
18350 Kernel name in program.
18351
18352 @item size, s
18353 Size of frames to generate.  This must be set.
18354
18355 @item format
18356 Pixel format to use for the generated frames.  This must be set.
18357
18358 @item rate, r
18359 Number of frames generated every second.  Default value is '25'.
18360
18361 @end table
18362
18363 For details of how the program loading works, see the @ref{program_opencl}
18364 filter.
18365
18366 Example programs:
18367
18368 @itemize
18369 @item
18370 Generate a colour ramp by setting pixel values from the position of the pixel
18371 in the output image.  (Note that this will work with all pixel formats, but
18372 the generated output will not be the same.)
18373 @verbatim
18374 __kernel void ramp(__write_only image2d_t dst,
18375                    unsigned int index)
18376 {
18377     int2 loc = (int2)(get_global_id(0), get_global_id(1));
18378
18379     float4 val;
18380     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
18381
18382     write_imagef(dst, loc, val);
18383 }
18384 @end verbatim
18385
18386 @item
18387 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
18388 @verbatim
18389 __kernel void sierpinski_carpet(__write_only image2d_t dst,
18390                                 unsigned int index)
18391 {
18392     int2 loc = (int2)(get_global_id(0), get_global_id(1));
18393
18394     float4 value = 0.0f;
18395     int x = loc.x + index;
18396     int y = loc.y + index;
18397     while (x > 0 || y > 0) {
18398         if (x % 3 == 1 && y % 3 == 1) {
18399             value = 1.0f;
18400             break;
18401         }
18402         x /= 3;
18403         y /= 3;
18404     }
18405
18406     write_imagef(dst, loc, value);
18407 }
18408 @end verbatim
18409
18410 @end itemize
18411
18412 @c man end VIDEO SOURCES
18413
18414 @chapter Video Sinks
18415 @c man begin VIDEO SINKS
18416
18417 Below is a description of the currently available video sinks.
18418
18419 @section buffersink
18420
18421 Buffer video frames, and make them available to the end of the filter
18422 graph.
18423
18424 This sink is mainly intended for programmatic use, in particular
18425 through the interface defined in @file{libavfilter/buffersink.h}
18426 or the options system.
18427
18428 It accepts a pointer to an AVBufferSinkContext structure, which
18429 defines the incoming buffers' formats, to be passed as the opaque
18430 parameter to @code{avfilter_init_filter} for initialization.
18431
18432 @section nullsink
18433
18434 Null video sink: do absolutely nothing with the input video. It is
18435 mainly useful as a template and for use in analysis / debugging
18436 tools.
18437
18438 @c man end VIDEO SINKS
18439
18440 @chapter Multimedia Filters
18441 @c man begin MULTIMEDIA FILTERS
18442
18443 Below is a description of the currently available multimedia filters.
18444
18445 @section abitscope
18446
18447 Convert input audio to a video output, displaying the audio bit scope.
18448
18449 The filter accepts the following options:
18450
18451 @table @option
18452 @item rate, r
18453 Set frame rate, expressed as number of frames per second. Default
18454 value is "25".
18455
18456 @item size, s
18457 Specify the video size for the output. For the syntax of this option, check the
18458 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18459 Default value is @code{1024x256}.
18460
18461 @item colors
18462 Specify list of colors separated by space or by '|' which will be used to
18463 draw channels. Unrecognized or missing colors will be replaced
18464 by white color.
18465 @end table
18466
18467 @section ahistogram
18468
18469 Convert input audio to a video output, displaying the volume histogram.
18470
18471 The filter accepts the following options:
18472
18473 @table @option
18474 @item dmode
18475 Specify how histogram is calculated.
18476
18477 It accepts the following values:
18478 @table @samp
18479 @item single
18480 Use single histogram for all channels.
18481 @item separate
18482 Use separate histogram for each channel.
18483 @end table
18484 Default is @code{single}.
18485
18486 @item rate, r
18487 Set frame rate, expressed as number of frames per second. Default
18488 value is "25".
18489
18490 @item size, s
18491 Specify the video size for the output. For the syntax of this option, check the
18492 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18493 Default value is @code{hd720}.
18494
18495 @item scale
18496 Set display scale.
18497
18498 It accepts the following values:
18499 @table @samp
18500 @item log
18501 logarithmic
18502 @item sqrt
18503 square root
18504 @item cbrt
18505 cubic root
18506 @item lin
18507 linear
18508 @item rlog
18509 reverse logarithmic
18510 @end table
18511 Default is @code{log}.
18512
18513 @item ascale
18514 Set amplitude scale.
18515
18516 It accepts the following values:
18517 @table @samp
18518 @item log
18519 logarithmic
18520 @item lin
18521 linear
18522 @end table
18523 Default is @code{log}.
18524
18525 @item acount
18526 Set how much frames to accumulate in histogram.
18527 Defauls is 1. Setting this to -1 accumulates all frames.
18528
18529 @item rheight
18530 Set histogram ratio of window height.
18531
18532 @item slide
18533 Set sonogram sliding.
18534
18535 It accepts the following values:
18536 @table @samp
18537 @item replace
18538 replace old rows with new ones.
18539 @item scroll
18540 scroll from top to bottom.
18541 @end table
18542 Default is @code{replace}.
18543 @end table
18544
18545 @section aphasemeter
18546
18547 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
18548 representing mean phase of current audio frame. A video output can also be produced and is
18549 enabled by default. The audio is passed through as first output.
18550
18551 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
18552 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
18553 and @code{1} means channels are in phase.
18554
18555 The filter accepts the following options, all related to its video output:
18556
18557 @table @option
18558 @item rate, r
18559 Set the output frame rate. Default value is @code{25}.
18560
18561 @item size, s
18562 Set the video size for the output. For the syntax of this option, check the
18563 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18564 Default value is @code{800x400}.
18565
18566 @item rc
18567 @item gc
18568 @item bc
18569 Specify the red, green, blue contrast. Default values are @code{2},
18570 @code{7} and @code{1}.
18571 Allowed range is @code{[0, 255]}.
18572
18573 @item mpc
18574 Set color which will be used for drawing median phase. If color is
18575 @code{none} which is default, no median phase value will be drawn.
18576
18577 @item video
18578 Enable video output. Default is enabled.
18579 @end table
18580
18581 @section avectorscope
18582
18583 Convert input audio to a video output, representing the audio vector
18584 scope.
18585
18586 The filter is used to measure the difference between channels of stereo
18587 audio stream. A monoaural signal, consisting of identical left and right
18588 signal, results in straight vertical line. Any stereo separation is visible
18589 as a deviation from this line, creating a Lissajous figure.
18590 If the straight (or deviation from it) but horizontal line appears this
18591 indicates that the left and right channels are out of phase.
18592
18593 The filter accepts the following options:
18594
18595 @table @option
18596 @item mode, m
18597 Set the vectorscope mode.
18598
18599 Available values are:
18600 @table @samp
18601 @item lissajous
18602 Lissajous rotated by 45 degrees.
18603
18604 @item lissajous_xy
18605 Same as above but not rotated.
18606
18607 @item polar
18608 Shape resembling half of circle.
18609 @end table
18610
18611 Default value is @samp{lissajous}.
18612
18613 @item size, s
18614 Set the video size for the output. For the syntax of this option, check the
18615 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18616 Default value is @code{400x400}.
18617
18618 @item rate, r
18619 Set the output frame rate. Default value is @code{25}.
18620
18621 @item rc
18622 @item gc
18623 @item bc
18624 @item ac
18625 Specify the red, green, blue and alpha contrast. Default values are @code{40},
18626 @code{160}, @code{80} and @code{255}.
18627 Allowed range is @code{[0, 255]}.
18628
18629 @item rf
18630 @item gf
18631 @item bf
18632 @item af
18633 Specify the red, green, blue and alpha fade. Default values are @code{15},
18634 @code{10}, @code{5} and @code{5}.
18635 Allowed range is @code{[0, 255]}.
18636
18637 @item zoom
18638 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
18639 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
18640
18641 @item draw
18642 Set the vectorscope drawing mode.
18643
18644 Available values are:
18645 @table @samp
18646 @item dot
18647 Draw dot for each sample.
18648
18649 @item line
18650 Draw line between previous and current sample.
18651 @end table
18652
18653 Default value is @samp{dot}.
18654
18655 @item scale
18656 Specify amplitude scale of audio samples.
18657
18658 Available values are:
18659 @table @samp
18660 @item lin
18661 Linear.
18662
18663 @item sqrt
18664 Square root.
18665
18666 @item cbrt
18667 Cubic root.
18668
18669 @item log
18670 Logarithmic.
18671 @end table
18672
18673 @item swap
18674 Swap left channel axis with right channel axis.
18675
18676 @item mirror
18677 Mirror axis.
18678
18679 @table @samp
18680 @item none
18681 No mirror.
18682
18683 @item x
18684 Mirror only x axis.
18685
18686 @item y
18687 Mirror only y axis.
18688
18689 @item xy
18690 Mirror both axis.
18691 @end table
18692
18693 @end table
18694
18695 @subsection Examples
18696
18697 @itemize
18698 @item
18699 Complete example using @command{ffplay}:
18700 @example
18701 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
18702              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
18703 @end example
18704 @end itemize
18705
18706 @section bench, abench
18707
18708 Benchmark part of a filtergraph.
18709
18710 The filter accepts the following options:
18711
18712 @table @option
18713 @item action
18714 Start or stop a timer.
18715
18716 Available values are:
18717 @table @samp
18718 @item start
18719 Get the current time, set it as frame metadata (using the key
18720 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
18721
18722 @item stop
18723 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
18724 the input frame metadata to get the time difference. Time difference, average,
18725 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
18726 @code{min}) are then printed. The timestamps are expressed in seconds.
18727 @end table
18728 @end table
18729
18730 @subsection Examples
18731
18732 @itemize
18733 @item
18734 Benchmark @ref{selectivecolor} filter:
18735 @example
18736 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
18737 @end example
18738 @end itemize
18739
18740 @section concat
18741
18742 Concatenate audio and video streams, joining them together one after the
18743 other.
18744
18745 The filter works on segments of synchronized video and audio streams. All
18746 segments must have the same number of streams of each type, and that will
18747 also be the number of streams at output.
18748
18749 The filter accepts the following options:
18750
18751 @table @option
18752
18753 @item n
18754 Set the number of segments. Default is 2.
18755
18756 @item v
18757 Set the number of output video streams, that is also the number of video
18758 streams in each segment. Default is 1.
18759
18760 @item a
18761 Set the number of output audio streams, that is also the number of audio
18762 streams in each segment. Default is 0.
18763
18764 @item unsafe
18765 Activate unsafe mode: do not fail if segments have a different format.
18766
18767 @end table
18768
18769 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
18770 @var{a} audio outputs.
18771
18772 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
18773 segment, in the same order as the outputs, then the inputs for the second
18774 segment, etc.
18775
18776 Related streams do not always have exactly the same duration, for various
18777 reasons including codec frame size or sloppy authoring. For that reason,
18778 related synchronized streams (e.g. a video and its audio track) should be
18779 concatenated at once. The concat filter will use the duration of the longest
18780 stream in each segment (except the last one), and if necessary pad shorter
18781 audio streams with silence.
18782
18783 For this filter to work correctly, all segments must start at timestamp 0.
18784
18785 All corresponding streams must have the same parameters in all segments; the
18786 filtering system will automatically select a common pixel format for video
18787 streams, and a common sample format, sample rate and channel layout for
18788 audio streams, but other settings, such as resolution, must be converted
18789 explicitly by the user.
18790
18791 Different frame rates are acceptable but will result in variable frame rate
18792 at output; be sure to configure the output file to handle it.
18793
18794 @subsection Examples
18795
18796 @itemize
18797 @item
18798 Concatenate an opening, an episode and an ending, all in bilingual version
18799 (video in stream 0, audio in streams 1 and 2):
18800 @example
18801 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
18802   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
18803    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
18804   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
18805 @end example
18806
18807 @item
18808 Concatenate two parts, handling audio and video separately, using the
18809 (a)movie sources, and adjusting the resolution:
18810 @example
18811 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
18812 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
18813 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
18814 @end example
18815 Note that a desync will happen at the stitch if the audio and video streams
18816 do not have exactly the same duration in the first file.
18817
18818 @end itemize
18819
18820 @subsection Commands
18821
18822 This filter supports the following commands:
18823 @table @option
18824 @item next
18825 Close the current segment and step to the next one
18826 @end table
18827
18828 @section drawgraph, adrawgraph
18829
18830 Draw a graph using input video or audio metadata.
18831
18832 It accepts the following parameters:
18833
18834 @table @option
18835 @item m1
18836 Set 1st frame metadata key from which metadata values will be used to draw a graph.
18837
18838 @item fg1
18839 Set 1st foreground color expression.
18840
18841 @item m2
18842 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
18843
18844 @item fg2
18845 Set 2nd foreground color expression.
18846
18847 @item m3
18848 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
18849
18850 @item fg3
18851 Set 3rd foreground color expression.
18852
18853 @item m4
18854 Set 4th frame metadata key from which metadata values will be used to draw a graph.
18855
18856 @item fg4
18857 Set 4th foreground color expression.
18858
18859 @item min
18860 Set minimal value of metadata value.
18861
18862 @item max
18863 Set maximal value of metadata value.
18864
18865 @item bg
18866 Set graph background color. Default is white.
18867
18868 @item mode
18869 Set graph mode.
18870
18871 Available values for mode is:
18872 @table @samp
18873 @item bar
18874 @item dot
18875 @item line
18876 @end table
18877
18878 Default is @code{line}.
18879
18880 @item slide
18881 Set slide mode.
18882
18883 Available values for slide is:
18884 @table @samp
18885 @item frame
18886 Draw new frame when right border is reached.
18887
18888 @item replace
18889 Replace old columns with new ones.
18890
18891 @item scroll
18892 Scroll from right to left.
18893
18894 @item rscroll
18895 Scroll from left to right.
18896
18897 @item picture
18898 Draw single picture.
18899 @end table
18900
18901 Default is @code{frame}.
18902
18903 @item size
18904 Set size of graph video. For the syntax of this option, check the
18905 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18906 The default value is @code{900x256}.
18907
18908 The foreground color expressions can use the following variables:
18909 @table @option
18910 @item MIN
18911 Minimal value of metadata value.
18912
18913 @item MAX
18914 Maximal value of metadata value.
18915
18916 @item VAL
18917 Current metadata key value.
18918 @end table
18919
18920 The color is defined as 0xAABBGGRR.
18921 @end table
18922
18923 Example using metadata from @ref{signalstats} filter:
18924 @example
18925 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
18926 @end example
18927
18928 Example using metadata from @ref{ebur128} filter:
18929 @example
18930 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
18931 @end example
18932
18933 @anchor{ebur128}
18934 @section ebur128
18935
18936 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
18937 it unchanged. By default, it logs a message at a frequency of 10Hz with the
18938 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
18939 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
18940
18941 The filter also has a video output (see the @var{video} option) with a real
18942 time graph to observe the loudness evolution. The graphic contains the logged
18943 message mentioned above, so it is not printed anymore when this option is set,
18944 unless the verbose logging is set. The main graphing area contains the
18945 short-term loudness (3 seconds of analysis), and the gauge on the right is for
18946 the momentary loudness (400 milliseconds).
18947
18948 More information about the Loudness Recommendation EBU R128 on
18949 @url{http://tech.ebu.ch/loudness}.
18950
18951 The filter accepts the following options:
18952
18953 @table @option
18954
18955 @item video
18956 Activate the video output. The audio stream is passed unchanged whether this
18957 option is set or no. The video stream will be the first output stream if
18958 activated. Default is @code{0}.
18959
18960 @item size
18961 Set the video size. This option is for video only. For the syntax of this
18962 option, check the
18963 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18964 Default and minimum resolution is @code{640x480}.
18965
18966 @item meter
18967 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
18968 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
18969 other integer value between this range is allowed.
18970
18971 @item metadata
18972 Set metadata injection. If set to @code{1}, the audio input will be segmented
18973 into 100ms output frames, each of them containing various loudness information
18974 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
18975
18976 Default is @code{0}.
18977
18978 @item framelog
18979 Force the frame logging level.
18980
18981 Available values are:
18982 @table @samp
18983 @item info
18984 information logging level
18985 @item verbose
18986 verbose logging level
18987 @end table
18988
18989 By default, the logging level is set to @var{info}. If the @option{video} or
18990 the @option{metadata} options are set, it switches to @var{verbose}.
18991
18992 @item peak
18993 Set peak mode(s).
18994
18995 Available modes can be cumulated (the option is a @code{flag} type). Possible
18996 values are:
18997 @table @samp
18998 @item none
18999 Disable any peak mode (default).
19000 @item sample
19001 Enable sample-peak mode.
19002
19003 Simple peak mode looking for the higher sample value. It logs a message
19004 for sample-peak (identified by @code{SPK}).
19005 @item true
19006 Enable true-peak mode.
19007
19008 If enabled, the peak lookup is done on an over-sampled version of the input
19009 stream for better peak accuracy. It logs a message for true-peak.
19010 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
19011 This mode requires a build with @code{libswresample}.
19012 @end table
19013
19014 @item dualmono
19015 Treat mono input files as "dual mono". If a mono file is intended for playback
19016 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
19017 If set to @code{true}, this option will compensate for this effect.
19018 Multi-channel input files are not affected by this option.
19019
19020 @item panlaw
19021 Set a specific pan law to be used for the measurement of dual mono files.
19022 This parameter is optional, and has a default value of -3.01dB.
19023 @end table
19024
19025 @subsection Examples
19026
19027 @itemize
19028 @item
19029 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
19030 @example
19031 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
19032 @end example
19033
19034 @item
19035 Run an analysis with @command{ffmpeg}:
19036 @example
19037 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
19038 @end example
19039 @end itemize
19040
19041 @section interleave, ainterleave
19042
19043 Temporally interleave frames from several inputs.
19044
19045 @code{interleave} works with video inputs, @code{ainterleave} with audio.
19046
19047 These filters read frames from several inputs and send the oldest
19048 queued frame to the output.
19049
19050 Input streams must have well defined, monotonically increasing frame
19051 timestamp values.
19052
19053 In order to submit one frame to output, these filters need to enqueue
19054 at least one frame for each input, so they cannot work in case one
19055 input is not yet terminated and will not receive incoming frames.
19056
19057 For example consider the case when one input is a @code{select} filter
19058 which always drops input frames. The @code{interleave} filter will keep
19059 reading from that input, but it will never be able to send new frames
19060 to output until the input sends an end-of-stream signal.
19061
19062 Also, depending on inputs synchronization, the filters will drop
19063 frames in case one input receives more frames than the other ones, and
19064 the queue is already filled.
19065
19066 These filters accept the following options:
19067
19068 @table @option
19069 @item nb_inputs, n
19070 Set the number of different inputs, it is 2 by default.
19071 @end table
19072
19073 @subsection Examples
19074
19075 @itemize
19076 @item
19077 Interleave frames belonging to different streams using @command{ffmpeg}:
19078 @example
19079 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
19080 @end example
19081
19082 @item
19083 Add flickering blur effect:
19084 @example
19085 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
19086 @end example
19087 @end itemize
19088
19089 @section metadata, ametadata
19090
19091 Manipulate frame metadata.
19092
19093 This filter accepts the following options:
19094
19095 @table @option
19096 @item mode
19097 Set mode of operation of the filter.
19098
19099 Can be one of the following:
19100
19101 @table @samp
19102 @item select
19103 If both @code{value} and @code{key} is set, select frames
19104 which have such metadata. If only @code{key} is set, select
19105 every frame that has such key in metadata.
19106
19107 @item add
19108 Add new metadata @code{key} and @code{value}. If key is already available
19109 do nothing.
19110
19111 @item modify
19112 Modify value of already present key.
19113
19114 @item delete
19115 If @code{value} is set, delete only keys that have such value.
19116 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
19117 the frame.
19118
19119 @item print
19120 Print key and its value if metadata was found. If @code{key} is not set print all
19121 metadata values available in frame.
19122 @end table
19123
19124 @item key
19125 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
19126
19127 @item value
19128 Set metadata value which will be used. This option is mandatory for
19129 @code{modify} and @code{add} mode.
19130
19131 @item function
19132 Which function to use when comparing metadata value and @code{value}.
19133
19134 Can be one of following:
19135
19136 @table @samp
19137 @item same_str
19138 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
19139
19140 @item starts_with
19141 Values are interpreted as strings, returns true if metadata value starts with
19142 the @code{value} option string.
19143
19144 @item less
19145 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
19146
19147 @item equal
19148 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
19149
19150 @item greater
19151 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
19152
19153 @item expr
19154 Values are interpreted as floats, returns true if expression from option @code{expr}
19155 evaluates to true.
19156 @end table
19157
19158 @item expr
19159 Set expression which is used when @code{function} is set to @code{expr}.
19160 The expression is evaluated through the eval API and can contain the following
19161 constants:
19162
19163 @table @option
19164 @item VALUE1
19165 Float representation of @code{value} from metadata key.
19166
19167 @item VALUE2
19168 Float representation of @code{value} as supplied by user in @code{value} option.
19169 @end table
19170
19171 @item file
19172 If specified in @code{print} mode, output is written to the named file. Instead of
19173 plain filename any writable url can be specified. Filename ``-'' is a shorthand
19174 for standard output. If @code{file} option is not set, output is written to the log
19175 with AV_LOG_INFO loglevel.
19176
19177 @end table
19178
19179 @subsection Examples
19180
19181 @itemize
19182 @item
19183 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
19184 between 0 and 1.
19185 @example
19186 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
19187 @end example
19188 @item
19189 Print silencedetect output to file @file{metadata.txt}.
19190 @example
19191 silencedetect,ametadata=mode=print:file=metadata.txt
19192 @end example
19193 @item
19194 Direct all metadata to a pipe with file descriptor 4.
19195 @example
19196 metadata=mode=print:file='pipe\:4'
19197 @end example
19198 @end itemize
19199
19200 @section perms, aperms
19201
19202 Set read/write permissions for the output frames.
19203
19204 These filters are mainly aimed at developers to test direct path in the
19205 following filter in the filtergraph.
19206
19207 The filters accept the following options:
19208
19209 @table @option
19210 @item mode
19211 Select the permissions mode.
19212
19213 It accepts the following values:
19214 @table @samp
19215 @item none
19216 Do nothing. This is the default.
19217 @item ro
19218 Set all the output frames read-only.
19219 @item rw
19220 Set all the output frames directly writable.
19221 @item toggle
19222 Make the frame read-only if writable, and writable if read-only.
19223 @item random
19224 Set each output frame read-only or writable randomly.
19225 @end table
19226
19227 @item seed
19228 Set the seed for the @var{random} mode, must be an integer included between
19229 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
19230 @code{-1}, the filter will try to use a good random seed on a best effort
19231 basis.
19232 @end table
19233
19234 Note: in case of auto-inserted filter between the permission filter and the
19235 following one, the permission might not be received as expected in that
19236 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
19237 perms/aperms filter can avoid this problem.
19238
19239 @section realtime, arealtime
19240
19241 Slow down filtering to match real time approximately.
19242
19243 These filters will pause the filtering for a variable amount of time to
19244 match the output rate with the input timestamps.
19245 They are similar to the @option{re} option to @code{ffmpeg}.
19246
19247 They accept the following options:
19248
19249 @table @option
19250 @item limit
19251 Time limit for the pauses. Any pause longer than that will be considered
19252 a timestamp discontinuity and reset the timer. Default is 2 seconds.
19253 @end table
19254
19255 @anchor{select}
19256 @section select, aselect
19257
19258 Select frames to pass in output.
19259
19260 This filter accepts the following options:
19261
19262 @table @option
19263
19264 @item expr, e
19265 Set expression, which is evaluated for each input frame.
19266
19267 If the expression is evaluated to zero, the frame is discarded.
19268
19269 If the evaluation result is negative or NaN, the frame is sent to the
19270 first output; otherwise it is sent to the output with index
19271 @code{ceil(val)-1}, assuming that the input index starts from 0.
19272
19273 For example a value of @code{1.2} corresponds to the output with index
19274 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
19275
19276 @item outputs, n
19277 Set the number of outputs. The output to which to send the selected
19278 frame is based on the result of the evaluation. Default value is 1.
19279 @end table
19280
19281 The expression can contain the following constants:
19282
19283 @table @option
19284 @item n
19285 The (sequential) number of the filtered frame, starting from 0.
19286
19287 @item selected_n
19288 The (sequential) number of the selected frame, starting from 0.
19289
19290 @item prev_selected_n
19291 The sequential number of the last selected frame. It's NAN if undefined.
19292
19293 @item TB
19294 The timebase of the input timestamps.
19295
19296 @item pts
19297 The PTS (Presentation TimeStamp) of the filtered video frame,
19298 expressed in @var{TB} units. It's NAN if undefined.
19299
19300 @item t
19301 The PTS of the filtered video frame,
19302 expressed in seconds. It's NAN if undefined.
19303
19304 @item prev_pts
19305 The PTS of the previously filtered video frame. It's NAN if undefined.
19306
19307 @item prev_selected_pts
19308 The PTS of the last previously filtered video frame. It's NAN if undefined.
19309
19310 @item prev_selected_t
19311 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
19312
19313 @item start_pts
19314 The PTS of the first video frame in the video. It's NAN if undefined.
19315
19316 @item start_t
19317 The time of the first video frame in the video. It's NAN if undefined.
19318
19319 @item pict_type @emph{(video only)}
19320 The type of the filtered frame. It can assume one of the following
19321 values:
19322 @table @option
19323 @item I
19324 @item P
19325 @item B
19326 @item S
19327 @item SI
19328 @item SP
19329 @item BI
19330 @end table
19331
19332 @item interlace_type @emph{(video only)}
19333 The frame interlace type. It can assume one of the following values:
19334 @table @option
19335 @item PROGRESSIVE
19336 The frame is progressive (not interlaced).
19337 @item TOPFIRST
19338 The frame is top-field-first.
19339 @item BOTTOMFIRST
19340 The frame is bottom-field-first.
19341 @end table
19342
19343 @item consumed_sample_n @emph{(audio only)}
19344 the number of selected samples before the current frame
19345
19346 @item samples_n @emph{(audio only)}
19347 the number of samples in the current frame
19348
19349 @item sample_rate @emph{(audio only)}
19350 the input sample rate
19351
19352 @item key
19353 This is 1 if the filtered frame is a key-frame, 0 otherwise.
19354
19355 @item pos
19356 the position in the file of the filtered frame, -1 if the information
19357 is not available (e.g. for synthetic video)
19358
19359 @item scene @emph{(video only)}
19360 value between 0 and 1 to indicate a new scene; a low value reflects a low
19361 probability for the current frame to introduce a new scene, while a higher
19362 value means the current frame is more likely to be one (see the example below)
19363
19364 @item concatdec_select
19365 The concat demuxer can select only part of a concat input file by setting an
19366 inpoint and an outpoint, but the output packets may not be entirely contained
19367 in the selected interval. By using this variable, it is possible to skip frames
19368 generated by the concat demuxer which are not exactly contained in the selected
19369 interval.
19370
19371 This works by comparing the frame pts against the @var{lavf.concat.start_time}
19372 and the @var{lavf.concat.duration} packet metadata values which are also
19373 present in the decoded frames.
19374
19375 The @var{concatdec_select} variable is -1 if the frame pts is at least
19376 start_time and either the duration metadata is missing or the frame pts is less
19377 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
19378 missing.
19379
19380 That basically means that an input frame is selected if its pts is within the
19381 interval set by the concat demuxer.
19382
19383 @end table
19384
19385 The default value of the select expression is "1".
19386
19387 @subsection Examples
19388
19389 @itemize
19390 @item
19391 Select all frames in input:
19392 @example
19393 select
19394 @end example
19395
19396 The example above is the same as:
19397 @example
19398 select=1
19399 @end example
19400
19401 @item
19402 Skip all frames:
19403 @example
19404 select=0
19405 @end example
19406
19407 @item
19408 Select only I-frames:
19409 @example
19410 select='eq(pict_type\,I)'
19411 @end example
19412
19413 @item
19414 Select one frame every 100:
19415 @example
19416 select='not(mod(n\,100))'
19417 @end example
19418
19419 @item
19420 Select only frames contained in the 10-20 time interval:
19421 @example
19422 select=between(t\,10\,20)
19423 @end example
19424
19425 @item
19426 Select only I-frames contained in the 10-20 time interval:
19427 @example
19428 select=between(t\,10\,20)*eq(pict_type\,I)
19429 @end example
19430
19431 @item
19432 Select frames with a minimum distance of 10 seconds:
19433 @example
19434 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
19435 @end example
19436
19437 @item
19438 Use aselect to select only audio frames with samples number > 100:
19439 @example
19440 aselect='gt(samples_n\,100)'
19441 @end example
19442
19443 @item
19444 Create a mosaic of the first scenes:
19445 @example
19446 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
19447 @end example
19448
19449 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
19450 choice.
19451
19452 @item
19453 Send even and odd frames to separate outputs, and compose them:
19454 @example
19455 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
19456 @end example
19457
19458 @item
19459 Select useful frames from an ffconcat file which is using inpoints and
19460 outpoints but where the source files are not intra frame only.
19461 @example
19462 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
19463 @end example
19464 @end itemize
19465
19466 @section sendcmd, asendcmd
19467
19468 Send commands to filters in the filtergraph.
19469
19470 These filters read commands to be sent to other filters in the
19471 filtergraph.
19472
19473 @code{sendcmd} must be inserted between two video filters,
19474 @code{asendcmd} must be inserted between two audio filters, but apart
19475 from that they act the same way.
19476
19477 The specification of commands can be provided in the filter arguments
19478 with the @var{commands} option, or in a file specified by the
19479 @var{filename} option.
19480
19481 These filters accept the following options:
19482 @table @option
19483 @item commands, c
19484 Set the commands to be read and sent to the other filters.
19485 @item filename, f
19486 Set the filename of the commands to be read and sent to the other
19487 filters.
19488 @end table
19489
19490 @subsection Commands syntax
19491
19492 A commands description consists of a sequence of interval
19493 specifications, comprising a list of commands to be executed when a
19494 particular event related to that interval occurs. The occurring event
19495 is typically the current frame time entering or leaving a given time
19496 interval.
19497
19498 An interval is specified by the following syntax:
19499 @example
19500 @var{START}[-@var{END}] @var{COMMANDS};
19501 @end example
19502
19503 The time interval is specified by the @var{START} and @var{END} times.
19504 @var{END} is optional and defaults to the maximum time.
19505
19506 The current frame time is considered within the specified interval if
19507 it is included in the interval [@var{START}, @var{END}), that is when
19508 the time is greater or equal to @var{START} and is lesser than
19509 @var{END}.
19510
19511 @var{COMMANDS} consists of a sequence of one or more command
19512 specifications, separated by ",", relating to that interval.  The
19513 syntax of a command specification is given by:
19514 @example
19515 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
19516 @end example
19517
19518 @var{FLAGS} is optional and specifies the type of events relating to
19519 the time interval which enable sending the specified command, and must
19520 be a non-null sequence of identifier flags separated by "+" or "|" and
19521 enclosed between "[" and "]".
19522
19523 The following flags are recognized:
19524 @table @option
19525 @item enter
19526 The command is sent when the current frame timestamp enters the
19527 specified interval. In other words, the command is sent when the
19528 previous frame timestamp was not in the given interval, and the
19529 current is.
19530
19531 @item leave
19532 The command is sent when the current frame timestamp leaves the
19533 specified interval. In other words, the command is sent when the
19534 previous frame timestamp was in the given interval, and the
19535 current is not.
19536 @end table
19537
19538 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
19539 assumed.
19540
19541 @var{TARGET} specifies the target of the command, usually the name of
19542 the filter class or a specific filter instance name.
19543
19544 @var{COMMAND} specifies the name of the command for the target filter.
19545
19546 @var{ARG} is optional and specifies the optional list of argument for
19547 the given @var{COMMAND}.
19548
19549 Between one interval specification and another, whitespaces, or
19550 sequences of characters starting with @code{#} until the end of line,
19551 are ignored and can be used to annotate comments.
19552
19553 A simplified BNF description of the commands specification syntax
19554 follows:
19555 @example
19556 @var{COMMAND_FLAG}  ::= "enter" | "leave"
19557 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
19558 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
19559 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
19560 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
19561 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
19562 @end example
19563
19564 @subsection Examples
19565
19566 @itemize
19567 @item
19568 Specify audio tempo change at second 4:
19569 @example
19570 asendcmd=c='4.0 atempo tempo 1.5',atempo
19571 @end example
19572
19573 @item
19574 Target a specific filter instance:
19575 @example
19576 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
19577 @end example
19578
19579 @item
19580 Specify a list of drawtext and hue commands in a file.
19581 @example
19582 # show text in the interval 5-10
19583 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
19584          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
19585
19586 # desaturate the image in the interval 15-20
19587 15.0-20.0 [enter] hue s 0,
19588           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
19589           [leave] hue s 1,
19590           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
19591
19592 # apply an exponential saturation fade-out effect, starting from time 25
19593 25 [enter] hue s exp(25-t)
19594 @end example
19595
19596 A filtergraph allowing to read and process the above command list
19597 stored in a file @file{test.cmd}, can be specified with:
19598 @example
19599 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
19600 @end example
19601 @end itemize
19602
19603 @anchor{setpts}
19604 @section setpts, asetpts
19605
19606 Change the PTS (presentation timestamp) of the input frames.
19607
19608 @code{setpts} works on video frames, @code{asetpts} on audio frames.
19609
19610 This filter accepts the following options:
19611
19612 @table @option
19613
19614 @item expr
19615 The expression which is evaluated for each frame to construct its timestamp.
19616
19617 @end table
19618
19619 The expression is evaluated through the eval API and can contain the following
19620 constants:
19621
19622 @table @option
19623 @item FRAME_RATE, FR
19624 frame rate, only defined for constant frame-rate video
19625
19626 @item PTS
19627 The presentation timestamp in input
19628
19629 @item N
19630 The count of the input frame for video or the number of consumed samples,
19631 not including the current frame for audio, starting from 0.
19632
19633 @item NB_CONSUMED_SAMPLES
19634 The number of consumed samples, not including the current frame (only
19635 audio)
19636
19637 @item NB_SAMPLES, S
19638 The number of samples in the current frame (only audio)
19639
19640 @item SAMPLE_RATE, SR
19641 The audio sample rate.
19642
19643 @item STARTPTS
19644 The PTS of the first frame.
19645
19646 @item STARTT
19647 the time in seconds of the first frame
19648
19649 @item INTERLACED
19650 State whether the current frame is interlaced.
19651
19652 @item T
19653 the time in seconds of the current frame
19654
19655 @item POS
19656 original position in the file of the frame, or undefined if undefined
19657 for the current frame
19658
19659 @item PREV_INPTS
19660 The previous input PTS.
19661
19662 @item PREV_INT
19663 previous input time in seconds
19664
19665 @item PREV_OUTPTS
19666 The previous output PTS.
19667
19668 @item PREV_OUTT
19669 previous output time in seconds
19670
19671 @item RTCTIME
19672 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
19673 instead.
19674
19675 @item RTCSTART
19676 The wallclock (RTC) time at the start of the movie in microseconds.
19677
19678 @item TB
19679 The timebase of the input timestamps.
19680
19681 @end table
19682
19683 @subsection Examples
19684
19685 @itemize
19686 @item
19687 Start counting PTS from zero
19688 @example
19689 setpts=PTS-STARTPTS
19690 @end example
19691
19692 @item
19693 Apply fast motion effect:
19694 @example
19695 setpts=0.5*PTS
19696 @end example
19697
19698 @item
19699 Apply slow motion effect:
19700 @example
19701 setpts=2.0*PTS
19702 @end example
19703
19704 @item
19705 Set fixed rate of 25 frames per second:
19706 @example
19707 setpts=N/(25*TB)
19708 @end example
19709
19710 @item
19711 Set fixed rate 25 fps with some jitter:
19712 @example
19713 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
19714 @end example
19715
19716 @item
19717 Apply an offset of 10 seconds to the input PTS:
19718 @example
19719 setpts=PTS+10/TB
19720 @end example
19721
19722 @item
19723 Generate timestamps from a "live source" and rebase onto the current timebase:
19724 @example
19725 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
19726 @end example
19727
19728 @item
19729 Generate timestamps by counting samples:
19730 @example
19731 asetpts=N/SR/TB
19732 @end example
19733
19734 @end itemize
19735
19736 @section setrange
19737
19738 Force color range for the output video frame.
19739
19740 The @code{setrange} filter marks the color range property for the
19741 output frames. It does not change the input frame, but only sets the
19742 corresponding property, which affects how the frame is treated by
19743 following filters.
19744
19745 The filter accepts the following options:
19746
19747 @table @option
19748
19749 @item range
19750 Available values are:
19751
19752 @table @samp
19753 @item auto
19754 Keep the same color range property.
19755
19756 @item unspecified, unknown
19757 Set the color range as unspecified.
19758
19759 @item limited, tv, mpeg
19760 Set the color range as limited.
19761
19762 @item full, pc, jpeg
19763 Set the color range as full.
19764 @end table
19765 @end table
19766
19767 @section settb, asettb
19768
19769 Set the timebase to use for the output frames timestamps.
19770 It is mainly useful for testing timebase configuration.
19771
19772 It accepts the following parameters:
19773
19774 @table @option
19775
19776 @item expr, tb
19777 The expression which is evaluated into the output timebase.
19778
19779 @end table
19780
19781 The value for @option{tb} is an arithmetic expression representing a
19782 rational. The expression can contain the constants "AVTB" (the default
19783 timebase), "intb" (the input timebase) and "sr" (the sample rate,
19784 audio only). Default value is "intb".
19785
19786 @subsection Examples
19787
19788 @itemize
19789 @item
19790 Set the timebase to 1/25:
19791 @example
19792 settb=expr=1/25
19793 @end example
19794
19795 @item
19796 Set the timebase to 1/10:
19797 @example
19798 settb=expr=0.1
19799 @end example
19800
19801 @item
19802 Set the timebase to 1001/1000:
19803 @example
19804 settb=1+0.001
19805 @end example
19806
19807 @item
19808 Set the timebase to 2*intb:
19809 @example
19810 settb=2*intb
19811 @end example
19812
19813 @item
19814 Set the default timebase value:
19815 @example
19816 settb=AVTB
19817 @end example
19818 @end itemize
19819
19820 @section showcqt
19821 Convert input audio to a video output representing frequency spectrum
19822 logarithmically using Brown-Puckette constant Q transform algorithm with
19823 direct frequency domain coefficient calculation (but the transform itself
19824 is not really constant Q, instead the Q factor is actually variable/clamped),
19825 with musical tone scale, from E0 to D#10.
19826
19827 The filter accepts the following options:
19828
19829 @table @option
19830 @item size, s
19831 Specify the video size for the output. It must be even. For the syntax of this option,
19832 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19833 Default value is @code{1920x1080}.
19834
19835 @item fps, rate, r
19836 Set the output frame rate. Default value is @code{25}.
19837
19838 @item bar_h
19839 Set the bargraph height. It must be even. Default value is @code{-1} which
19840 computes the bargraph height automatically.
19841
19842 @item axis_h
19843 Set the axis height. It must be even. Default value is @code{-1} which computes
19844 the axis height automatically.
19845
19846 @item sono_h
19847 Set the sonogram height. It must be even. Default value is @code{-1} which
19848 computes the sonogram height automatically.
19849
19850 @item fullhd
19851 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
19852 instead. Default value is @code{1}.
19853
19854 @item sono_v, volume
19855 Specify the sonogram volume expression. It can contain variables:
19856 @table @option
19857 @item bar_v
19858 the @var{bar_v} evaluated expression
19859 @item frequency, freq, f
19860 the frequency where it is evaluated
19861 @item timeclamp, tc
19862 the value of @var{timeclamp} option
19863 @end table
19864 and functions:
19865 @table @option
19866 @item a_weighting(f)
19867 A-weighting of equal loudness
19868 @item b_weighting(f)
19869 B-weighting of equal loudness
19870 @item c_weighting(f)
19871 C-weighting of equal loudness.
19872 @end table
19873 Default value is @code{16}.
19874
19875 @item bar_v, volume2
19876 Specify the bargraph volume expression. It can contain variables:
19877 @table @option
19878 @item sono_v
19879 the @var{sono_v} evaluated expression
19880 @item frequency, freq, f
19881 the frequency where it is evaluated
19882 @item timeclamp, tc
19883 the value of @var{timeclamp} option
19884 @end table
19885 and functions:
19886 @table @option
19887 @item a_weighting(f)
19888 A-weighting of equal loudness
19889 @item b_weighting(f)
19890 B-weighting of equal loudness
19891 @item c_weighting(f)
19892 C-weighting of equal loudness.
19893 @end table
19894 Default value is @code{sono_v}.
19895
19896 @item sono_g, gamma
19897 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
19898 higher gamma makes the spectrum having more range. Default value is @code{3}.
19899 Acceptable range is @code{[1, 7]}.
19900
19901 @item bar_g, gamma2
19902 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
19903 @code{[1, 7]}.
19904
19905 @item bar_t
19906 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
19907 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
19908
19909 @item timeclamp, tc
19910 Specify the transform timeclamp. At low frequency, there is trade-off between
19911 accuracy in time domain and frequency domain. If timeclamp is lower,
19912 event in time domain is represented more accurately (such as fast bass drum),
19913 otherwise event in frequency domain is represented more accurately
19914 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
19915
19916 @item attack
19917 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
19918 limits future samples by applying asymmetric windowing in time domain, useful
19919 when low latency is required. Accepted range is @code{[0, 1]}.
19920
19921 @item basefreq
19922 Specify the transform base frequency. Default value is @code{20.01523126408007475},
19923 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
19924
19925 @item endfreq
19926 Specify the transform end frequency. Default value is @code{20495.59681441799654},
19927 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
19928
19929 @item coeffclamp
19930 This option is deprecated and ignored.
19931
19932 @item tlength
19933 Specify the transform length in time domain. Use this option to control accuracy
19934 trade-off between time domain and frequency domain at every frequency sample.
19935 It can contain variables:
19936 @table @option
19937 @item frequency, freq, f
19938 the frequency where it is evaluated
19939 @item timeclamp, tc
19940 the value of @var{timeclamp} option.
19941 @end table
19942 Default value is @code{384*tc/(384+tc*f)}.
19943
19944 @item count
19945 Specify the transform count for every video frame. Default value is @code{6}.
19946 Acceptable range is @code{[1, 30]}.
19947
19948 @item fcount
19949 Specify the transform count for every single pixel. Default value is @code{0},
19950 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
19951
19952 @item fontfile
19953 Specify font file for use with freetype to draw the axis. If not specified,
19954 use embedded font. Note that drawing with font file or embedded font is not
19955 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
19956 option instead.
19957
19958 @item font
19959 Specify fontconfig pattern. This has lower priority than @var{fontfile}.
19960 The : in the pattern may be replaced by | to avoid unnecessary escaping.
19961
19962 @item fontcolor
19963 Specify font color expression. This is arithmetic expression that should return
19964 integer value 0xRRGGBB. It can contain variables:
19965 @table @option
19966 @item frequency, freq, f
19967 the frequency where it is evaluated
19968 @item timeclamp, tc
19969 the value of @var{timeclamp} option
19970 @end table
19971 and functions:
19972 @table @option
19973 @item midi(f)
19974 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
19975 @item r(x), g(x), b(x)
19976 red, green, and blue value of intensity x.
19977 @end table
19978 Default value is @code{st(0, (midi(f)-59.5)/12);
19979 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
19980 r(1-ld(1)) + b(ld(1))}.
19981
19982 @item axisfile
19983 Specify image file to draw the axis. This option override @var{fontfile} and
19984 @var{fontcolor} option.
19985
19986 @item axis, text
19987 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
19988 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
19989 Default value is @code{1}.
19990
19991 @item csp
19992 Set colorspace. The accepted values are:
19993 @table @samp
19994 @item unspecified
19995 Unspecified (default)
19996
19997 @item bt709
19998 BT.709
19999
20000 @item fcc
20001 FCC
20002
20003 @item bt470bg
20004 BT.470BG or BT.601-6 625
20005
20006 @item smpte170m
20007 SMPTE-170M or BT.601-6 525
20008
20009 @item smpte240m
20010 SMPTE-240M
20011
20012 @item bt2020ncl
20013 BT.2020 with non-constant luminance
20014
20015 @end table
20016
20017 @item cscheme
20018 Set spectrogram color scheme. This is list of floating point values with format
20019 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
20020 The default is @code{1|0.5|0|0|0.5|1}.
20021
20022 @end table
20023
20024 @subsection Examples
20025
20026 @itemize
20027 @item
20028 Playing audio while showing the spectrum:
20029 @example
20030 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
20031 @end example
20032
20033 @item
20034 Same as above, but with frame rate 30 fps:
20035 @example
20036 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
20037 @end example
20038
20039 @item
20040 Playing at 1280x720:
20041 @example
20042 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
20043 @end example
20044
20045 @item
20046 Disable sonogram display:
20047 @example
20048 sono_h=0
20049 @end example
20050
20051 @item
20052 A1 and its harmonics: A1, A2, (near)E3, A3:
20053 @example
20054 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),
20055                  asplit[a][out1]; [a] showcqt [out0]'
20056 @end example
20057
20058 @item
20059 Same as above, but with more accuracy in frequency domain:
20060 @example
20061 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),
20062                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
20063 @end example
20064
20065 @item
20066 Custom volume:
20067 @example
20068 bar_v=10:sono_v=bar_v*a_weighting(f)
20069 @end example
20070
20071 @item
20072 Custom gamma, now spectrum is linear to the amplitude.
20073 @example
20074 bar_g=2:sono_g=2
20075 @end example
20076
20077 @item
20078 Custom tlength equation:
20079 @example
20080 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)))'
20081 @end example
20082
20083 @item
20084 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
20085 @example
20086 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
20087 @end example
20088
20089 @item
20090 Custom font using fontconfig:
20091 @example
20092 font='Courier New,Monospace,mono|bold'
20093 @end example
20094
20095 @item
20096 Custom frequency range with custom axis using image file:
20097 @example
20098 axisfile=myaxis.png:basefreq=40:endfreq=10000
20099 @end example
20100 @end itemize
20101
20102 @section showfreqs
20103
20104 Convert input audio to video output representing the audio power spectrum.
20105 Audio amplitude is on Y-axis while frequency is on X-axis.
20106
20107 The filter accepts the following options:
20108
20109 @table @option
20110 @item size, s
20111 Specify size of video. For the syntax of this option, check the
20112 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20113 Default is @code{1024x512}.
20114
20115 @item mode
20116 Set display mode.
20117 This set how each frequency bin will be represented.
20118
20119 It accepts the following values:
20120 @table @samp
20121 @item line
20122 @item bar
20123 @item dot
20124 @end table
20125 Default is @code{bar}.
20126
20127 @item ascale
20128 Set amplitude scale.
20129
20130 It accepts the following values:
20131 @table @samp
20132 @item lin
20133 Linear scale.
20134
20135 @item sqrt
20136 Square root scale.
20137
20138 @item cbrt
20139 Cubic root scale.
20140
20141 @item log
20142 Logarithmic scale.
20143 @end table
20144 Default is @code{log}.
20145
20146 @item fscale
20147 Set frequency scale.
20148
20149 It accepts the following values:
20150 @table @samp
20151 @item lin
20152 Linear scale.
20153
20154 @item log
20155 Logarithmic scale.
20156
20157 @item rlog
20158 Reverse logarithmic scale.
20159 @end table
20160 Default is @code{lin}.
20161
20162 @item win_size
20163 Set window size.
20164
20165 It accepts the following values:
20166 @table @samp
20167 @item w16
20168 @item w32
20169 @item w64
20170 @item w128
20171 @item w256
20172 @item w512
20173 @item w1024
20174 @item w2048
20175 @item w4096
20176 @item w8192
20177 @item w16384
20178 @item w32768
20179 @item w65536
20180 @end table
20181 Default is @code{w2048}
20182
20183 @item win_func
20184 Set windowing function.
20185
20186 It accepts the following values:
20187 @table @samp
20188 @item rect
20189 @item bartlett
20190 @item hanning
20191 @item hamming
20192 @item blackman
20193 @item welch
20194 @item flattop
20195 @item bharris
20196 @item bnuttall
20197 @item bhann
20198 @item sine
20199 @item nuttall
20200 @item lanczos
20201 @item gauss
20202 @item tukey
20203 @item dolph
20204 @item cauchy
20205 @item parzen
20206 @item poisson
20207 @end table
20208 Default is @code{hanning}.
20209
20210 @item overlap
20211 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
20212 which means optimal overlap for selected window function will be picked.
20213
20214 @item averaging
20215 Set time averaging. Setting this to 0 will display current maximal peaks.
20216 Default is @code{1}, which means time averaging is disabled.
20217
20218 @item colors
20219 Specify list of colors separated by space or by '|' which will be used to
20220 draw channel frequencies. Unrecognized or missing colors will be replaced
20221 by white color.
20222
20223 @item cmode
20224 Set channel display mode.
20225
20226 It accepts the following values:
20227 @table @samp
20228 @item combined
20229 @item separate
20230 @end table
20231 Default is @code{combined}.
20232
20233 @item minamp
20234 Set minimum amplitude used in @code{log} amplitude scaler.
20235
20236 @end table
20237
20238 @anchor{showspectrum}
20239 @section showspectrum
20240
20241 Convert input audio to a video output, representing the audio frequency
20242 spectrum.
20243
20244 The filter accepts the following options:
20245
20246 @table @option
20247 @item size, s
20248 Specify the video size for the output. For the syntax of this option, check the
20249 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20250 Default value is @code{640x512}.
20251
20252 @item slide
20253 Specify how the spectrum should slide along the window.
20254
20255 It accepts the following values:
20256 @table @samp
20257 @item replace
20258 the samples start again on the left when they reach the right
20259 @item scroll
20260 the samples scroll from right to left
20261 @item fullframe
20262 frames are only produced when the samples reach the right
20263 @item rscroll
20264 the samples scroll from left to right
20265 @end table
20266
20267 Default value is @code{replace}.
20268
20269 @item mode
20270 Specify display mode.
20271
20272 It accepts the following values:
20273 @table @samp
20274 @item combined
20275 all channels are displayed in the same row
20276 @item separate
20277 all channels are displayed in separate rows
20278 @end table
20279
20280 Default value is @samp{combined}.
20281
20282 @item color
20283 Specify display color mode.
20284
20285 It accepts the following values:
20286 @table @samp
20287 @item channel
20288 each channel is displayed in a separate color
20289 @item intensity
20290 each channel is displayed using the same color scheme
20291 @item rainbow
20292 each channel is displayed using the rainbow color scheme
20293 @item moreland
20294 each channel is displayed using the moreland color scheme
20295 @item nebulae
20296 each channel is displayed using the nebulae color scheme
20297 @item fire
20298 each channel is displayed using the fire color scheme
20299 @item fiery
20300 each channel is displayed using the fiery color scheme
20301 @item fruit
20302 each channel is displayed using the fruit color scheme
20303 @item cool
20304 each channel is displayed using the cool color scheme
20305 @end table
20306
20307 Default value is @samp{channel}.
20308
20309 @item scale
20310 Specify scale used for calculating intensity color values.
20311
20312 It accepts the following values:
20313 @table @samp
20314 @item lin
20315 linear
20316 @item sqrt
20317 square root, default
20318 @item cbrt
20319 cubic root
20320 @item log
20321 logarithmic
20322 @item 4thrt
20323 4th root
20324 @item 5thrt
20325 5th root
20326 @end table
20327
20328 Default value is @samp{sqrt}.
20329
20330 @item saturation
20331 Set saturation modifier for displayed colors. Negative values provide
20332 alternative color scheme. @code{0} is no saturation at all.
20333 Saturation must be in [-10.0, 10.0] range.
20334 Default value is @code{1}.
20335
20336 @item win_func
20337 Set window function.
20338
20339 It accepts the following values:
20340 @table @samp
20341 @item rect
20342 @item bartlett
20343 @item hann
20344 @item hanning
20345 @item hamming
20346 @item blackman
20347 @item welch
20348 @item flattop
20349 @item bharris
20350 @item bnuttall
20351 @item bhann
20352 @item sine
20353 @item nuttall
20354 @item lanczos
20355 @item gauss
20356 @item tukey
20357 @item dolph
20358 @item cauchy
20359 @item parzen
20360 @item poisson
20361 @end table
20362
20363 Default value is @code{hann}.
20364
20365 @item orientation
20366 Set orientation of time vs frequency axis. Can be @code{vertical} or
20367 @code{horizontal}. Default is @code{vertical}.
20368
20369 @item overlap
20370 Set ratio of overlap window. Default value is @code{0}.
20371 When value is @code{1} overlap is set to recommended size for specific
20372 window function currently used.
20373
20374 @item gain
20375 Set scale gain for calculating intensity color values.
20376 Default value is @code{1}.
20377
20378 @item data
20379 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
20380
20381 @item rotation
20382 Set color rotation, must be in [-1.0, 1.0] range.
20383 Default value is @code{0}.
20384 @end table
20385
20386 The usage is very similar to the showwaves filter; see the examples in that
20387 section.
20388
20389 @subsection Examples
20390
20391 @itemize
20392 @item
20393 Large window with logarithmic color scaling:
20394 @example
20395 showspectrum=s=1280x480:scale=log
20396 @end example
20397
20398 @item
20399 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
20400 @example
20401 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
20402              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
20403 @end example
20404 @end itemize
20405
20406 @section showspectrumpic
20407
20408 Convert input audio to a single video frame, representing the audio frequency
20409 spectrum.
20410
20411 The filter accepts the following options:
20412
20413 @table @option
20414 @item size, s
20415 Specify the video size for the output. For the syntax of this option, check the
20416 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20417 Default value is @code{4096x2048}.
20418
20419 @item mode
20420 Specify display mode.
20421
20422 It accepts the following values:
20423 @table @samp
20424 @item combined
20425 all channels are displayed in the same row
20426 @item separate
20427 all channels are displayed in separate rows
20428 @end table
20429 Default value is @samp{combined}.
20430
20431 @item color
20432 Specify display color mode.
20433
20434 It accepts the following values:
20435 @table @samp
20436 @item channel
20437 each channel is displayed in a separate color
20438 @item intensity
20439 each channel is displayed using the same color scheme
20440 @item rainbow
20441 each channel is displayed using the rainbow color scheme
20442 @item moreland
20443 each channel is displayed using the moreland color scheme
20444 @item nebulae
20445 each channel is displayed using the nebulae color scheme
20446 @item fire
20447 each channel is displayed using the fire color scheme
20448 @item fiery
20449 each channel is displayed using the fiery color scheme
20450 @item fruit
20451 each channel is displayed using the fruit color scheme
20452 @item cool
20453 each channel is displayed using the cool color scheme
20454 @end table
20455 Default value is @samp{intensity}.
20456
20457 @item scale
20458 Specify scale used for calculating intensity color values.
20459
20460 It accepts the following values:
20461 @table @samp
20462 @item lin
20463 linear
20464 @item sqrt
20465 square root, default
20466 @item cbrt
20467 cubic root
20468 @item log
20469 logarithmic
20470 @item 4thrt
20471 4th root
20472 @item 5thrt
20473 5th root
20474 @end table
20475 Default value is @samp{log}.
20476
20477 @item saturation
20478 Set saturation modifier for displayed colors. Negative values provide
20479 alternative color scheme. @code{0} is no saturation at all.
20480 Saturation must be in [-10.0, 10.0] range.
20481 Default value is @code{1}.
20482
20483 @item win_func
20484 Set window function.
20485
20486 It accepts the following values:
20487 @table @samp
20488 @item rect
20489 @item bartlett
20490 @item hann
20491 @item hanning
20492 @item hamming
20493 @item blackman
20494 @item welch
20495 @item flattop
20496 @item bharris
20497 @item bnuttall
20498 @item bhann
20499 @item sine
20500 @item nuttall
20501 @item lanczos
20502 @item gauss
20503 @item tukey
20504 @item dolph
20505 @item cauchy
20506 @item parzen
20507 @item poisson
20508 @end table
20509 Default value is @code{hann}.
20510
20511 @item orientation
20512 Set orientation of time vs frequency axis. Can be @code{vertical} or
20513 @code{horizontal}. Default is @code{vertical}.
20514
20515 @item gain
20516 Set scale gain for calculating intensity color values.
20517 Default value is @code{1}.
20518
20519 @item legend
20520 Draw time and frequency axes and legends. Default is enabled.
20521
20522 @item rotation
20523 Set color rotation, must be in [-1.0, 1.0] range.
20524 Default value is @code{0}.
20525 @end table
20526
20527 @subsection Examples
20528
20529 @itemize
20530 @item
20531 Extract an audio spectrogram of a whole audio track
20532 in a 1024x1024 picture using @command{ffmpeg}:
20533 @example
20534 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
20535 @end example
20536 @end itemize
20537
20538 @section showvolume
20539
20540 Convert input audio volume to a video output.
20541
20542 The filter accepts the following options:
20543
20544 @table @option
20545 @item rate, r
20546 Set video rate.
20547
20548 @item b
20549 Set border width, allowed range is [0, 5]. Default is 1.
20550
20551 @item w
20552 Set channel width, allowed range is [80, 8192]. Default is 400.
20553
20554 @item h
20555 Set channel height, allowed range is [1, 900]. Default is 20.
20556
20557 @item f
20558 Set fade, allowed range is [0, 1]. Default is 0.95.
20559
20560 @item c
20561 Set volume color expression.
20562
20563 The expression can use the following variables:
20564
20565 @table @option
20566 @item VOLUME
20567 Current max volume of channel in dB.
20568
20569 @item PEAK
20570 Current peak.
20571
20572 @item CHANNEL
20573 Current channel number, starting from 0.
20574 @end table
20575
20576 @item t
20577 If set, displays channel names. Default is enabled.
20578
20579 @item v
20580 If set, displays volume values. Default is enabled.
20581
20582 @item o
20583 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
20584 default is @code{h}.
20585
20586 @item s
20587 Set step size, allowed range is [0, 5]. Default is 0, which means
20588 step is disabled.
20589
20590 @item p
20591 Set background opacity, allowed range is [0, 1]. Default is 0.
20592
20593 @item m
20594 Set metering mode, can be peak: @code{p} or rms: @code{r},
20595 default is @code{p}.
20596
20597 @item ds
20598 Set display scale, can be linear: @code{lin} or log: @code{log},
20599 default is @code{lin}.
20600
20601 @item dm
20602 In second.
20603 If set to > 0., display a line for the max level
20604 in the previous seconds.
20605 default is disabled: @code{0.}
20606
20607 @item dmc
20608 The color of the max line. Use when @code{dm} option is set to > 0.
20609 default is: @code{orange}
20610 @end table
20611
20612 @section showwaves
20613
20614 Convert input audio to a video output, representing the samples waves.
20615
20616 The filter accepts the following options:
20617
20618 @table @option
20619 @item size, s
20620 Specify the video size for the output. For the syntax of this option, check the
20621 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20622 Default value is @code{600x240}.
20623
20624 @item mode
20625 Set display mode.
20626
20627 Available values are:
20628 @table @samp
20629 @item point
20630 Draw a point for each sample.
20631
20632 @item line
20633 Draw a vertical line for each sample.
20634
20635 @item p2p
20636 Draw a point for each sample and a line between them.
20637
20638 @item cline
20639 Draw a centered vertical line for each sample.
20640 @end table
20641
20642 Default value is @code{point}.
20643
20644 @item n
20645 Set the number of samples which are printed on the same column. A
20646 larger value will decrease the frame rate. Must be a positive
20647 integer. This option can be set only if the value for @var{rate}
20648 is not explicitly specified.
20649
20650 @item rate, r
20651 Set the (approximate) output frame rate. This is done by setting the
20652 option @var{n}. Default value is "25".
20653
20654 @item split_channels
20655 Set if channels should be drawn separately or overlap. Default value is 0.
20656
20657 @item colors
20658 Set colors separated by '|' which are going to be used for drawing of each channel.
20659
20660 @item scale
20661 Set amplitude scale.
20662
20663 Available values are:
20664 @table @samp
20665 @item lin
20666 Linear.
20667
20668 @item log
20669 Logarithmic.
20670
20671 @item sqrt
20672 Square root.
20673
20674 @item cbrt
20675 Cubic root.
20676 @end table
20677
20678 Default is linear.
20679
20680 @item draw
20681 Set the draw mode. This is mostly useful to set for high @var{n}.
20682
20683 Available values are:
20684 @table @samp
20685 @item scale
20686 Scale pixel values for each drawn sample.
20687
20688 @item full
20689 Draw every sample directly.
20690 @end table
20691
20692 Default value is @code{scale}.
20693 @end table
20694
20695 @subsection Examples
20696
20697 @itemize
20698 @item
20699 Output the input file audio and the corresponding video representation
20700 at the same time:
20701 @example
20702 amovie=a.mp3,asplit[out0],showwaves[out1]
20703 @end example
20704
20705 @item
20706 Create a synthetic signal and show it with showwaves, forcing a
20707 frame rate of 30 frames per second:
20708 @example
20709 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
20710 @end example
20711 @end itemize
20712
20713 @section showwavespic
20714
20715 Convert input audio to a single video frame, representing the samples waves.
20716
20717 The filter accepts the following options:
20718
20719 @table @option
20720 @item size, s
20721 Specify the video size for the output. For the syntax of this option, check the
20722 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20723 Default value is @code{600x240}.
20724
20725 @item split_channels
20726 Set if channels should be drawn separately or overlap. Default value is 0.
20727
20728 @item colors
20729 Set colors separated by '|' which are going to be used for drawing of each channel.
20730
20731 @item scale
20732 Set amplitude scale.
20733
20734 Available values are:
20735 @table @samp
20736 @item lin
20737 Linear.
20738
20739 @item log
20740 Logarithmic.
20741
20742 @item sqrt
20743 Square root.
20744
20745 @item cbrt
20746 Cubic root.
20747 @end table
20748
20749 Default is linear.
20750 @end table
20751
20752 @subsection Examples
20753
20754 @itemize
20755 @item
20756 Extract a channel split representation of the wave form of a whole audio track
20757 in a 1024x800 picture using @command{ffmpeg}:
20758 @example
20759 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
20760 @end example
20761 @end itemize
20762
20763 @section sidedata, asidedata
20764
20765 Delete frame side data, or select frames based on it.
20766
20767 This filter accepts the following options:
20768
20769 @table @option
20770 @item mode
20771 Set mode of operation of the filter.
20772
20773 Can be one of the following:
20774
20775 @table @samp
20776 @item select
20777 Select every frame with side data of @code{type}.
20778
20779 @item delete
20780 Delete side data of @code{type}. If @code{type} is not set, delete all side
20781 data in the frame.
20782
20783 @end table
20784
20785 @item type
20786 Set side data type used with all modes. Must be set for @code{select} mode. For
20787 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
20788 in @file{libavutil/frame.h}. For example, to choose
20789 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
20790
20791 @end table
20792
20793 @section spectrumsynth
20794
20795 Sythesize audio from 2 input video spectrums, first input stream represents
20796 magnitude across time and second represents phase across time.
20797 The filter will transform from frequency domain as displayed in videos back
20798 to time domain as presented in audio output.
20799
20800 This filter is primarily created for reversing processed @ref{showspectrum}
20801 filter outputs, but can synthesize sound from other spectrograms too.
20802 But in such case results are going to be poor if the phase data is not
20803 available, because in such cases phase data need to be recreated, usually
20804 its just recreated from random noise.
20805 For best results use gray only output (@code{channel} color mode in
20806 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
20807 @code{lin} scale for phase video. To produce phase, for 2nd video, use
20808 @code{data} option. Inputs videos should generally use @code{fullframe}
20809 slide mode as that saves resources needed for decoding video.
20810
20811 The filter accepts the following options:
20812
20813 @table @option
20814 @item sample_rate
20815 Specify sample rate of output audio, the sample rate of audio from which
20816 spectrum was generated may differ.
20817
20818 @item channels
20819 Set number of channels represented in input video spectrums.
20820
20821 @item scale
20822 Set scale which was used when generating magnitude input spectrum.
20823 Can be @code{lin} or @code{log}. Default is @code{log}.
20824
20825 @item slide
20826 Set slide which was used when generating inputs spectrums.
20827 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
20828 Default is @code{fullframe}.
20829
20830 @item win_func
20831 Set window function used for resynthesis.
20832
20833 @item overlap
20834 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
20835 which means optimal overlap for selected window function will be picked.
20836
20837 @item orientation
20838 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
20839 Default is @code{vertical}.
20840 @end table
20841
20842 @subsection Examples
20843
20844 @itemize
20845 @item
20846 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
20847 then resynthesize videos back to audio with spectrumsynth:
20848 @example
20849 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
20850 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
20851 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
20852 @end example
20853 @end itemize
20854
20855 @section split, asplit
20856
20857 Split input into several identical outputs.
20858
20859 @code{asplit} works with audio input, @code{split} with video.
20860
20861 The filter accepts a single parameter which specifies the number of outputs. If
20862 unspecified, it defaults to 2.
20863
20864 @subsection Examples
20865
20866 @itemize
20867 @item
20868 Create two separate outputs from the same input:
20869 @example
20870 [in] split [out0][out1]
20871 @end example
20872
20873 @item
20874 To create 3 or more outputs, you need to specify the number of
20875 outputs, like in:
20876 @example
20877 [in] asplit=3 [out0][out1][out2]
20878 @end example
20879
20880 @item
20881 Create two separate outputs from the same input, one cropped and
20882 one padded:
20883 @example
20884 [in] split [splitout1][splitout2];
20885 [splitout1] crop=100:100:0:0    [cropout];
20886 [splitout2] pad=200:200:100:100 [padout];
20887 @end example
20888
20889 @item
20890 Create 5 copies of the input audio with @command{ffmpeg}:
20891 @example
20892 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
20893 @end example
20894 @end itemize
20895
20896 @section zmq, azmq
20897
20898 Receive commands sent through a libzmq client, and forward them to
20899 filters in the filtergraph.
20900
20901 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
20902 must be inserted between two video filters, @code{azmq} between two
20903 audio filters. Both are capable to send messages to any filter type.
20904
20905 To enable these filters you need to install the libzmq library and
20906 headers and configure FFmpeg with @code{--enable-libzmq}.
20907
20908 For more information about libzmq see:
20909 @url{http://www.zeromq.org/}
20910
20911 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
20912 receives messages sent through a network interface defined by the
20913 @option{bind_address} (or the abbreviation "@option{b}") option.
20914 Default value of this option is @file{tcp://localhost:5555}. You may
20915 want to alter this value to your needs, but do not forget to escape any
20916 ':' signs (see @ref{filtergraph escaping}).
20917
20918 The received message must be in the form:
20919 @example
20920 @var{TARGET} @var{COMMAND} [@var{ARG}]
20921 @end example
20922
20923 @var{TARGET} specifies the target of the command, usually the name of
20924 the filter class or a specific filter instance name. The default
20925 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
20926 but you can override this by using the @samp{filter_name@@id} syntax
20927 (see @ref{Filtergraph syntax}).
20928
20929 @var{COMMAND} specifies the name of the command for the target filter.
20930
20931 @var{ARG} is optional and specifies the optional argument list for the
20932 given @var{COMMAND}.
20933
20934 Upon reception, the message is processed and the corresponding command
20935 is injected into the filtergraph. Depending on the result, the filter
20936 will send a reply to the client, adopting the format:
20937 @example
20938 @var{ERROR_CODE} @var{ERROR_REASON}
20939 @var{MESSAGE}
20940 @end example
20941
20942 @var{MESSAGE} is optional.
20943
20944 @subsection Examples
20945
20946 Look at @file{tools/zmqsend} for an example of a zmq client which can
20947 be used to send commands processed by these filters.
20948
20949 Consider the following filtergraph generated by @command{ffplay}.
20950 In this example the last overlay filter has an instance name. All other
20951 filters will have default instance names.
20952
20953 @example
20954 ffplay -dumpgraph 1 -f lavfi "
20955 color=s=100x100:c=red  [l];
20956 color=s=100x100:c=blue [r];
20957 nullsrc=s=200x100, zmq [bg];
20958 [bg][l]   overlay     [bg+l];
20959 [bg+l][r] overlay@@my=x=100 "
20960 @end example
20961
20962 To change the color of the left side of the video, the following
20963 command can be used:
20964 @example
20965 echo Parsed_color_0 c yellow | tools/zmqsend
20966 @end example
20967
20968 To change the right side:
20969 @example
20970 echo Parsed_color_1 c pink | tools/zmqsend
20971 @end example
20972
20973 To change the position of the right side:
20974 @example
20975 echo overlay@@my x 150 | tools/zmqsend
20976 @end example
20977
20978
20979 @c man end MULTIMEDIA FILTERS
20980
20981 @chapter Multimedia Sources
20982 @c man begin MULTIMEDIA SOURCES
20983
20984 Below is a description of the currently available multimedia sources.
20985
20986 @section amovie
20987
20988 This is the same as @ref{movie} source, except it selects an audio
20989 stream by default.
20990
20991 @anchor{movie}
20992 @section movie
20993
20994 Read audio and/or video stream(s) from a movie container.
20995
20996 It accepts the following parameters:
20997
20998 @table @option
20999 @item filename
21000 The name of the resource to read (not necessarily a file; it can also be a
21001 device or a stream accessed through some protocol).
21002
21003 @item format_name, f
21004 Specifies the format assumed for the movie to read, and can be either
21005 the name of a container or an input device. If not specified, the
21006 format is guessed from @var{movie_name} or by probing.
21007
21008 @item seek_point, sp
21009 Specifies the seek point in seconds. The frames will be output
21010 starting from this seek point. The parameter is evaluated with
21011 @code{av_strtod}, so the numerical value may be suffixed by an IS
21012 postfix. The default value is "0".
21013
21014 @item streams, s
21015 Specifies the streams to read. Several streams can be specified,
21016 separated by "+". The source will then have as many outputs, in the
21017 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
21018 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
21019 respectively the default (best suited) video and audio stream. Default
21020 is "dv", or "da" if the filter is called as "amovie".
21021
21022 @item stream_index, si
21023 Specifies the index of the video stream to read. If the value is -1,
21024 the most suitable video stream will be automatically selected. The default
21025 value is "-1". Deprecated. If the filter is called "amovie", it will select
21026 audio instead of video.
21027
21028 @item loop
21029 Specifies how many times to read the stream in sequence.
21030 If the value is 0, the stream will be looped infinitely.
21031 Default value is "1".
21032
21033 Note that when the movie is looped the source timestamps are not
21034 changed, so it will generate non monotonically increasing timestamps.
21035
21036 @item discontinuity
21037 Specifies the time difference between frames above which the point is
21038 considered a timestamp discontinuity which is removed by adjusting the later
21039 timestamps.
21040 @end table
21041
21042 It allows overlaying a second video on top of the main input of
21043 a filtergraph, as shown in this graph:
21044 @example
21045 input -----------> deltapts0 --> overlay --> output
21046                                     ^
21047                                     |
21048 movie --> scale--> deltapts1 -------+
21049 @end example
21050 @subsection Examples
21051
21052 @itemize
21053 @item
21054 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
21055 on top of the input labelled "in":
21056 @example
21057 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
21058 [in] setpts=PTS-STARTPTS [main];
21059 [main][over] overlay=16:16 [out]
21060 @end example
21061
21062 @item
21063 Read from a video4linux2 device, and overlay it on top of the input
21064 labelled "in":
21065 @example
21066 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
21067 [in] setpts=PTS-STARTPTS [main];
21068 [main][over] overlay=16:16 [out]
21069 @end example
21070
21071 @item
21072 Read the first video stream and the audio stream with id 0x81 from
21073 dvd.vob; the video is connected to the pad named "video" and the audio is
21074 connected to the pad named "audio":
21075 @example
21076 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
21077 @end example
21078 @end itemize
21079
21080 @subsection Commands
21081
21082 Both movie and amovie support the following commands:
21083 @table @option
21084 @item seek
21085 Perform seek using "av_seek_frame".
21086 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
21087 @itemize
21088 @item
21089 @var{stream_index}: If stream_index is -1, a default
21090 stream is selected, and @var{timestamp} is automatically converted
21091 from AV_TIME_BASE units to the stream specific time_base.
21092 @item
21093 @var{timestamp}: Timestamp in AVStream.time_base units
21094 or, if no stream is specified, in AV_TIME_BASE units.
21095 @item
21096 @var{flags}: Flags which select direction and seeking mode.
21097 @end itemize
21098
21099 @item get_duration
21100 Get movie duration in AV_TIME_BASE units.
21101
21102 @end table
21103
21104 @c man end MULTIMEDIA SOURCES