]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
Merge commit '98063bcf15eb1e9bf9c8758c83c88d51cbb7ace7'
[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{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.
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{LINKLABEL}        ::= "[" @var{NAME} "]"
216 @var{LINKLABELS}       ::= @var{LINKLABEL} [@var{LINKLABELS}]
217 @var{FILTER_ARGUMENTS} ::= sequence of chars (possibly quoted)
218 @var{FILTER}           ::= [@var{LINKLABELS}] @var{NAME} ["=" @var{FILTER_ARGUMENTS}] [@var{LINKLABELS}]
219 @var{FILTERCHAIN}      ::= @var{FILTER} [,@var{FILTERCHAIN}]
220 @var{FILTERGRAPH}      ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
221 @end example
222
223 @section Notes on filtergraph escaping
224
225 Filtergraph description composition entails several levels of
226 escaping. See @ref{quoting_and_escaping,,the "Quoting and escaping"
227 section in the ffmpeg-utils(1) manual,ffmpeg-utils} for more
228 information about the employed escaping procedure.
229
230 A first level escaping affects the content of each filter option
231 value, which may contain the special character @code{:} used to
232 separate values, or one of the escaping characters @code{\'}.
233
234 A second level escaping affects the whole filter description, which
235 may contain the escaping characters @code{\'} or the special
236 characters @code{[],;} used by the filtergraph description.
237
238 Finally, when you specify a filtergraph on a shell commandline, you
239 need to perform a third level escaping for the shell special
240 characters contained within it.
241
242 For example, consider the following string to be embedded in
243 the @ref{drawtext} filter description @option{text} value:
244 @example
245 this is a 'string': may contain one, or more, special characters
246 @end example
247
248 This string contains the @code{'} special escaping character, and the
249 @code{:} special character, so it needs to be escaped in this way:
250 @example
251 text=this is a \'string\'\: may contain one, or more, special characters
252 @end example
253
254 A second level of escaping is required when embedding the filter
255 description in a filtergraph description, in order to escape all the
256 filtergraph special characters. Thus the example above becomes:
257 @example
258 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
259 @end example
260 (note that in addition to the @code{\'} escaping special characters,
261 also @code{,} needs to be escaped).
262
263 Finally an additional level of escaping is needed when writing the
264 filtergraph description in a shell command, which depends on the
265 escaping rules of the adopted shell. For example, assuming that
266 @code{\} is special and needs to be escaped with another @code{\}, the
267 previous string will finally result in:
268 @example
269 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
270 @end example
271
272 @chapter Timeline editing
273
274 Some filters support a generic @option{enable} option. For the filters
275 supporting timeline editing, this option can be set to an expression which is
276 evaluated before sending a frame to the filter. If the evaluation is non-zero,
277 the filter will be enabled, otherwise the frame will be sent unchanged to the
278 next filter in the filtergraph.
279
280 The expression accepts the following values:
281 @table @samp
282 @item t
283 timestamp expressed in seconds, NAN if the input timestamp is unknown
284
285 @item n
286 sequential number of the input frame, starting from 0
287
288 @item pos
289 the position in the file of the input frame, NAN if unknown
290
291 @item w
292 @item h
293 width and height of the input frame if video
294 @end table
295
296 Additionally, these filters support an @option{enable} command that can be used
297 to re-define the expression.
298
299 Like any other filtering option, the @option{enable} option follows the same
300 rules.
301
302 For example, to enable a blur filter (@ref{smartblur}) from 10 seconds to 3
303 minutes, and a @ref{curves} filter starting at 3 seconds:
304 @example
305 smartblur = enable='between(t,10,3*60)',
306 curves    = enable='gte(t,3)' : preset=cross_process
307 @end example
308
309 @c man end FILTERGRAPH DESCRIPTION
310
311 @chapter Audio Filters
312 @c man begin AUDIO FILTERS
313
314 When you configure your FFmpeg build, you can disable any of the
315 existing filters using @code{--disable-filters}.
316 The configure output will show the audio filters included in your
317 build.
318
319 Below is a description of the currently available audio filters.
320
321 @section acompressor
322
323 A compressor is mainly used to reduce the dynamic range of a signal.
324 Especially modern music is mostly compressed at a high ratio to
325 improve the overall loudness. It's done to get the highest attention
326 of a listener, "fatten" the sound and bring more "power" to the track.
327 If a signal is compressed too much it may sound dull or "dead"
328 afterwards or it may start to "pump" (which could be a powerful effect
329 but can also destroy a track completely).
330 The right compression is the key to reach a professional sound and is
331 the high art of mixing and mastering. Because of its complex settings
332 it may take a long time to get the right feeling for this kind of effect.
333
334 Compression is done by detecting the volume above a chosen level
335 @code{threshold} and dividing it by the factor set with @code{ratio}.
336 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
337 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
338 the signal would cause distortion of the waveform the reduction can be
339 levelled over the time. This is done by setting "Attack" and "Release".
340 @code{attack} determines how long the signal has to rise above the threshold
341 before any reduction will occur and @code{release} sets the time the signal
342 has to fall below the threshold to reduce the reduction again. Shorter signals
343 than the chosen attack time will be left untouched.
344 The overall reduction of the signal can be made up afterwards with the
345 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
346 raising the makeup to this level results in a signal twice as loud than the
347 source. To gain a softer entry in the compression the @code{knee} flattens the
348 hard edge at the threshold in the range of the chosen decibels.
349
350 The filter accepts the following options:
351
352 @table @option
353 @item threshold
354 If a signal of second stream rises above this level it will affect the gain
355 reduction of the first stream.
356 By default it is 0.125. Range is between 0.00097563 and 1.
357
358 @item ratio
359 Set a ratio by which the signal is reduced. 1:2 means that if the level
360 rose 4dB above the threshold, it will be only 2dB above after the reduction.
361 Default is 2. Range is between 1 and 20.
362
363 @item attack
364 Amount of milliseconds the signal has to rise above the threshold before gain
365 reduction starts. Default is 20. Range is between 0.01 and 2000.
366
367 @item release
368 Amount of milliseconds the signal has to fall below the threshold before
369 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
370
371 @item makeup
372 Set the amount by how much signal will be amplified after processing.
373 Default is 2. Range is from 1 and 64.
374
375 @item knee
376 Curve the sharp knee around the threshold to enter gain reduction more softly.
377 Default is 2.82843. Range is between 1 and 8.
378
379 @item link
380 Choose if the @code{average} level between all channels of input stream
381 or the louder(@code{maximum}) channel of input stream affects the
382 reduction. Default is @code{average}.
383
384 @item detection
385 Should the exact signal be taken in case of @code{peak} or an RMS one in case
386 of @code{rms}. Default is @code{rms} which is mostly smoother.
387
388 @item mix
389 How much to use compressed signal in output. Default is 1.
390 Range is between 0 and 1.
391 @end table
392
393 @section acrossfade
394
395 Apply cross fade from one input audio stream to another input audio stream.
396 The cross fade is applied for specified duration near the end of first stream.
397
398 The filter accepts the following options:
399
400 @table @option
401 @item nb_samples, ns
402 Specify the number of samples for which the cross fade effect has to last.
403 At the end of the cross fade effect the first input audio will be completely
404 silent. Default is 44100.
405
406 @item duration, d
407 Specify the duration of the cross fade effect. See
408 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
409 for the accepted syntax.
410 By default the duration is determined by @var{nb_samples}.
411 If set this option is used instead of @var{nb_samples}.
412
413 @item overlap, o
414 Should first stream end overlap with second stream start. Default is enabled.
415
416 @item curve1
417 Set curve for cross fade transition for first stream.
418
419 @item curve2
420 Set curve for cross fade transition for second stream.
421
422 For description of available curve types see @ref{afade} filter description.
423 @end table
424
425 @subsection Examples
426
427 @itemize
428 @item
429 Cross fade from one input to another:
430 @example
431 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
432 @end example
433
434 @item
435 Cross fade from one input to another but without overlapping:
436 @example
437 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
438 @end example
439 @end itemize
440
441 @section adelay
442
443 Delay one or more audio channels.
444
445 Samples in delayed channel are filled with silence.
446
447 The filter accepts the following option:
448
449 @table @option
450 @item delays
451 Set list of delays in milliseconds for each channel separated by '|'.
452 At least one delay greater than 0 should be provided.
453 Unused delays will be silently ignored. If number of given delays is
454 smaller than number of channels all remaining channels will not be delayed.
455 @end table
456
457 @subsection Examples
458
459 @itemize
460 @item
461 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
462 the second channel (and any other channels that may be present) unchanged.
463 @example
464 adelay=1500|0|500
465 @end example
466 @end itemize
467
468 @section aecho
469
470 Apply echoing to the input audio.
471
472 Echoes are reflected sound and can occur naturally amongst mountains
473 (and sometimes large buildings) when talking or shouting; digital echo
474 effects emulate this behaviour and are often used to help fill out the
475 sound of a single instrument or vocal. The time difference between the
476 original signal and the reflection is the @code{delay}, and the
477 loudness of the reflected signal is the @code{decay}.
478 Multiple echoes can have different delays and decays.
479
480 A description of the accepted parameters follows.
481
482 @table @option
483 @item in_gain
484 Set input gain of reflected signal. Default is @code{0.6}.
485
486 @item out_gain
487 Set output gain of reflected signal. Default is @code{0.3}.
488
489 @item delays
490 Set list of time intervals in milliseconds between original signal and reflections
491 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
492 Default is @code{1000}.
493
494 @item decays
495 Set list of loudnesses of reflected signals separated by '|'.
496 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
497 Default is @code{0.5}.
498 @end table
499
500 @subsection Examples
501
502 @itemize
503 @item
504 Make it sound as if there are twice as many instruments as are actually playing:
505 @example
506 aecho=0.8:0.88:60:0.4
507 @end example
508
509 @item
510 If delay is very short, then it sound like a (metallic) robot playing music:
511 @example
512 aecho=0.8:0.88:6:0.4
513 @end example
514
515 @item
516 A longer delay will sound like an open air concert in the mountains:
517 @example
518 aecho=0.8:0.9:1000:0.3
519 @end example
520
521 @item
522 Same as above but with one more mountain:
523 @example
524 aecho=0.8:0.9:1000|1800:0.3|0.25
525 @end example
526 @end itemize
527
528 @section aeval
529
530 Modify an audio signal according to the specified expressions.
531
532 This filter accepts one or more expressions (one for each channel),
533 which are evaluated and used to modify a corresponding audio signal.
534
535 It accepts the following parameters:
536
537 @table @option
538 @item exprs
539 Set the '|'-separated expressions list for each separate channel. If
540 the number of input channels is greater than the number of
541 expressions, the last specified expression is used for the remaining
542 output channels.
543
544 @item channel_layout, c
545 Set output channel layout. If not specified, the channel layout is
546 specified by the number of expressions. If set to @samp{same}, it will
547 use by default the same input channel layout.
548 @end table
549
550 Each expression in @var{exprs} can contain the following constants and functions:
551
552 @table @option
553 @item ch
554 channel number of the current expression
555
556 @item n
557 number of the evaluated sample, starting from 0
558
559 @item s
560 sample rate
561
562 @item t
563 time of the evaluated sample expressed in seconds
564
565 @item nb_in_channels
566 @item nb_out_channels
567 input and output number of channels
568
569 @item val(CH)
570 the value of input channel with number @var{CH}
571 @end table
572
573 Note: this filter is slow. For faster processing you should use a
574 dedicated filter.
575
576 @subsection Examples
577
578 @itemize
579 @item
580 Half volume:
581 @example
582 aeval=val(ch)/2:c=same
583 @end example
584
585 @item
586 Invert phase of the second channel:
587 @example
588 aeval=val(0)|-val(1)
589 @end example
590 @end itemize
591
592 @anchor{afade}
593 @section afade
594
595 Apply fade-in/out effect to input audio.
596
597 A description of the accepted parameters follows.
598
599 @table @option
600 @item type, t
601 Specify the effect type, can be either @code{in} for fade-in, or
602 @code{out} for a fade-out effect. Default is @code{in}.
603
604 @item start_sample, ss
605 Specify the number of the start sample for starting to apply the fade
606 effect. Default is 0.
607
608 @item nb_samples, ns
609 Specify the number of samples for which the fade effect has to last. At
610 the end of the fade-in effect the output audio will have the same
611 volume as the input audio, at the end of the fade-out transition
612 the output audio will be silence. Default is 44100.
613
614 @item start_time, st
615 Specify the start time of the fade effect. Default is 0.
616 The value must be specified as a time duration; see
617 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
618 for the accepted syntax.
619 If set this option is used instead of @var{start_sample}.
620
621 @item duration, d
622 Specify the duration of the fade effect. See
623 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
624 for the accepted syntax.
625 At the end of the fade-in effect the output audio will have the same
626 volume as the input audio, at the end of the fade-out transition
627 the output audio will be silence.
628 By default the duration is determined by @var{nb_samples}.
629 If set this option is used instead of @var{nb_samples}.
630
631 @item curve
632 Set curve for fade transition.
633
634 It accepts the following values:
635 @table @option
636 @item tri
637 select triangular, linear slope (default)
638 @item qsin
639 select quarter of sine wave
640 @item hsin
641 select half of sine wave
642 @item esin
643 select exponential sine wave
644 @item log
645 select logarithmic
646 @item ipar
647 select inverted parabola
648 @item qua
649 select quadratic
650 @item cub
651 select cubic
652 @item squ
653 select square root
654 @item cbr
655 select cubic root
656 @item par
657 select parabola
658 @item exp
659 select exponential
660 @item iqsin
661 select inverted quarter of sine wave
662 @item ihsin
663 select inverted half of sine wave
664 @item dese
665 select double-exponential seat
666 @item desi
667 select double-exponential sigmoid
668 @end table
669 @end table
670
671 @subsection Examples
672
673 @itemize
674 @item
675 Fade in first 15 seconds of audio:
676 @example
677 afade=t=in:ss=0:d=15
678 @end example
679
680 @item
681 Fade out last 25 seconds of a 900 seconds audio:
682 @example
683 afade=t=out:st=875:d=25
684 @end example
685 @end itemize
686
687 @anchor{aformat}
688 @section aformat
689
690 Set output format constraints for the input audio. The framework will
691 negotiate the most appropriate format to minimize conversions.
692
693 It accepts the following parameters:
694 @table @option
695
696 @item sample_fmts
697 A '|'-separated list of requested sample formats.
698
699 @item sample_rates
700 A '|'-separated list of requested sample rates.
701
702 @item channel_layouts
703 A '|'-separated list of requested channel layouts.
704
705 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
706 for the required syntax.
707 @end table
708
709 If a parameter is omitted, all values are allowed.
710
711 Force the output to either unsigned 8-bit or signed 16-bit stereo
712 @example
713 aformat=sample_fmts=u8|s16:channel_layouts=stereo
714 @end example
715
716 @section agate
717
718 A gate is mainly used to reduce lower parts of a signal. This kind of signal
719 processing reduces disturbing noise between useful signals.
720
721 Gating is done by detecting the volume below a chosen level @var{threshold}
722 and divide it by the factor set with @var{ratio}. The bottom of the noise
723 floor is set via @var{range}. Because an exact manipulation of the signal
724 would cause distortion of the waveform the reduction can be levelled over
725 time. This is done by setting @var{attack} and @var{release}.
726
727 @var{attack} determines how long the signal has to fall below the threshold
728 before any reduction will occur and @var{release} sets the time the signal
729 has to raise above the threshold to reduce the reduction again.
730 Shorter signals than the chosen attack time will be left untouched.
731
732 @table @option
733 @item level_in
734 Set input level before filtering.
735 Default is 1. Allowed range is from 0.015625 to 64.
736
737 @item range
738 Set the level of gain reduction when the signal is below the threshold.
739 Default is 0.06125. Allowed range is from 0 to 1.
740
741 @item threshold
742 If a signal rises above this level the gain reduction is released.
743 Default is 0.125. Allowed range is from 0 to 1.
744
745 @item ratio
746 Set a ratio about which the signal is reduced.
747 Default is 2. Allowed range is from 1 to 9000.
748
749 @item attack
750 Amount of milliseconds the signal has to rise above the threshold before gain
751 reduction stops.
752 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
753
754 @item release
755 Amount of milliseconds the signal has to fall below the threshold before the
756 reduction is increased again. Default is 250 milliseconds.
757 Allowed range is from 0.01 to 9000.
758
759 @item makeup
760 Set amount of amplification of signal after processing.
761 Default is 1. Allowed range is from 1 to 64.
762
763 @item knee
764 Curve the sharp knee around the threshold to enter gain reduction more softly.
765 Default is 2.828427125. Allowed range is from 1 to 8.
766
767 @item detection
768 Choose if exact signal should be taken for detection or an RMS like one.
769 Default is peak. Can be peak or rms.
770
771 @item link
772 Choose if the average level between all channels or the louder channel affects
773 the reduction.
774 Default is average. Can be average or maximum.
775 @end table
776
777 @section alimiter
778
779 The limiter prevents input signal from raising over a desired threshold.
780 This limiter uses lookahead technology to prevent your signal from distorting.
781 It means that there is a small delay after signal is processed. Keep in mind
782 that the delay it produces is the attack time you set.
783
784 The filter accepts the following options:
785
786 @table @option
787 @item limit
788 Don't let signals above this level pass the limiter. The removed amplitude is
789 added automatically. Default is 1.
790
791 @item attack
792 The limiter will reach its attenuation level in this amount of time in
793 milliseconds. Default is 5 milliseconds.
794
795 @item release
796 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
797 Default is 50 milliseconds.
798
799 @item asc
800 When gain reduction is always needed ASC takes care of releasing to an
801 average reduction level rather than reaching a reduction of 0 in the release
802 time.
803
804 @item asc_level
805 Select how much the release time is affected by ASC, 0 means nearly no changes
806 in release time while 1 produces higher release times.
807 @end table
808
809 Depending on picked setting it is recommended to upsample input 2x or 4x times
810 with @ref{aresample} before applying this filter.
811
812 @section allpass
813
814 Apply a two-pole all-pass filter with central frequency (in Hz)
815 @var{frequency}, and filter-width @var{width}.
816 An all-pass filter changes the audio's frequency to phase relationship
817 without changing its frequency to amplitude relationship.
818
819 The filter accepts the following options:
820
821 @table @option
822 @item frequency, f
823 Set frequency in Hz.
824
825 @item width_type
826 Set method to specify band-width of filter.
827 @table @option
828 @item h
829 Hz
830 @item q
831 Q-Factor
832 @item o
833 octave
834 @item s
835 slope
836 @end table
837
838 @item width, w
839 Specify the band-width of a filter in width_type units.
840 @end table
841
842 @anchor{amerge}
843 @section amerge
844
845 Merge two or more audio streams into a single multi-channel stream.
846
847 The filter accepts the following options:
848
849 @table @option
850
851 @item inputs
852 Set the number of inputs. Default is 2.
853
854 @end table
855
856 If the channel layouts of the inputs are disjoint, and therefore compatible,
857 the channel layout of the output will be set accordingly and the channels
858 will be reordered as necessary. If the channel layouts of the inputs are not
859 disjoint, the output will have all the channels of the first input then all
860 the channels of the second input, in that order, and the channel layout of
861 the output will be the default value corresponding to the total number of
862 channels.
863
864 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
865 is FC+BL+BR, then the output will be in 5.1, with the channels in the
866 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
867 first input, b1 is the first channel of the second input).
868
869 On the other hand, if both input are in stereo, the output channels will be
870 in the default order: a1, a2, b1, b2, and the channel layout will be
871 arbitrarily set to 4.0, which may or may not be the expected value.
872
873 All inputs must have the same sample rate, and format.
874
875 If inputs do not have the same duration, the output will stop with the
876 shortest.
877
878 @subsection Examples
879
880 @itemize
881 @item
882 Merge two mono files into a stereo stream:
883 @example
884 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
885 @end example
886
887 @item
888 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
889 @example
890 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
891 @end example
892 @end itemize
893
894 @section amix
895
896 Mixes multiple audio inputs into a single output.
897
898 Note that this filter only supports float samples (the @var{amerge}
899 and @var{pan} audio filters support many formats). If the @var{amix}
900 input has integer samples then @ref{aresample} will be automatically
901 inserted to perform the conversion to float samples.
902
903 For example
904 @example
905 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
906 @end example
907 will mix 3 input audio streams to a single output with the same duration as the
908 first input and a dropout transition time of 3 seconds.
909
910 It accepts the following parameters:
911 @table @option
912
913 @item inputs
914 The number of inputs. If unspecified, it defaults to 2.
915
916 @item duration
917 How to determine the end-of-stream.
918 @table @option
919
920 @item longest
921 The duration of the longest input. (default)
922
923 @item shortest
924 The duration of the shortest input.
925
926 @item first
927 The duration of the first input.
928
929 @end table
930
931 @item dropout_transition
932 The transition time, in seconds, for volume renormalization when an input
933 stream ends. The default value is 2 seconds.
934
935 @end table
936
937 @section anull
938
939 Pass the audio source unchanged to the output.
940
941 @section apad
942
943 Pad the end of an audio stream with silence.
944
945 This can be used together with @command{ffmpeg} @option{-shortest} to
946 extend audio streams to the same length as the video stream.
947
948 A description of the accepted options follows.
949
950 @table @option
951 @item packet_size
952 Set silence packet size. Default value is 4096.
953
954 @item pad_len
955 Set the number of samples of silence to add to the end. After the
956 value is reached, the stream is terminated. This option is mutually
957 exclusive with @option{whole_len}.
958
959 @item whole_len
960 Set the minimum total number of samples in the output audio stream. If
961 the value is longer than the input audio length, silence is added to
962 the end, until the value is reached. This option is mutually exclusive
963 with @option{pad_len}.
964 @end table
965
966 If neither the @option{pad_len} nor the @option{whole_len} option is
967 set, the filter will add silence to the end of the input stream
968 indefinitely.
969
970 @subsection Examples
971
972 @itemize
973 @item
974 Add 1024 samples of silence to the end of the input:
975 @example
976 apad=pad_len=1024
977 @end example
978
979 @item
980 Make sure the audio output will contain at least 10000 samples, pad
981 the input with silence if required:
982 @example
983 apad=whole_len=10000
984 @end example
985
986 @item
987 Use @command{ffmpeg} to pad the audio input with silence, so that the
988 video stream will always result the shortest and will be converted
989 until the end in the output file when using the @option{shortest}
990 option:
991 @example
992 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
993 @end example
994 @end itemize
995
996 @section aphaser
997 Add a phasing effect to the input audio.
998
999 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1000 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1001
1002 A description of the accepted parameters follows.
1003
1004 @table @option
1005 @item in_gain
1006 Set input gain. Default is 0.4.
1007
1008 @item out_gain
1009 Set output gain. Default is 0.74
1010
1011 @item delay
1012 Set delay in milliseconds. Default is 3.0.
1013
1014 @item decay
1015 Set decay. Default is 0.4.
1016
1017 @item speed
1018 Set modulation speed in Hz. Default is 0.5.
1019
1020 @item type
1021 Set modulation type. Default is triangular.
1022
1023 It accepts the following values:
1024 @table @samp
1025 @item triangular, t
1026 @item sinusoidal, s
1027 @end table
1028 @end table
1029
1030 @anchor{aresample}
1031 @section aresample
1032
1033 Resample the input audio to the specified parameters, using the
1034 libswresample library. If none are specified then the filter will
1035 automatically convert between its input and output.
1036
1037 This filter is also able to stretch/squeeze the audio data to make it match
1038 the timestamps or to inject silence / cut out audio to make it match the
1039 timestamps, do a combination of both or do neither.
1040
1041 The filter accepts the syntax
1042 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
1043 expresses a sample rate and @var{resampler_options} is a list of
1044 @var{key}=@var{value} pairs, separated by ":". See the
1045 ffmpeg-resampler manual for the complete list of supported options.
1046
1047 @subsection Examples
1048
1049 @itemize
1050 @item
1051 Resample the input audio to 44100Hz:
1052 @example
1053 aresample=44100
1054 @end example
1055
1056 @item
1057 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
1058 samples per second compensation:
1059 @example
1060 aresample=async=1000
1061 @end example
1062 @end itemize
1063
1064 @section asetnsamples
1065
1066 Set the number of samples per each output audio frame.
1067
1068 The last output packet may contain a different number of samples, as
1069 the filter will flush all the remaining samples when the input audio
1070 signal its end.
1071
1072 The filter accepts the following options:
1073
1074 @table @option
1075
1076 @item nb_out_samples, n
1077 Set the number of frames per each output audio frame. The number is
1078 intended as the number of samples @emph{per each channel}.
1079 Default value is 1024.
1080
1081 @item pad, p
1082 If set to 1, the filter will pad the last audio frame with zeroes, so
1083 that the last frame will contain the same number of samples as the
1084 previous ones. Default value is 1.
1085 @end table
1086
1087 For example, to set the number of per-frame samples to 1234 and
1088 disable padding for the last frame, use:
1089 @example
1090 asetnsamples=n=1234:p=0
1091 @end example
1092
1093 @section asetrate
1094
1095 Set the sample rate without altering the PCM data.
1096 This will result in a change of speed and pitch.
1097
1098 The filter accepts the following options:
1099
1100 @table @option
1101 @item sample_rate, r
1102 Set the output sample rate. Default is 44100 Hz.
1103 @end table
1104
1105 @section ashowinfo
1106
1107 Show a line containing various information for each input audio frame.
1108 The input audio is not modified.
1109
1110 The shown line contains a sequence of key/value pairs of the form
1111 @var{key}:@var{value}.
1112
1113 The following values are shown in the output:
1114
1115 @table @option
1116 @item n
1117 The (sequential) number of the input frame, starting from 0.
1118
1119 @item pts
1120 The presentation timestamp of the input frame, in time base units; the time base
1121 depends on the filter input pad, and is usually 1/@var{sample_rate}.
1122
1123 @item pts_time
1124 The presentation timestamp of the input frame in seconds.
1125
1126 @item pos
1127 position of the frame in the input stream, -1 if this information in
1128 unavailable and/or meaningless (for example in case of synthetic audio)
1129
1130 @item fmt
1131 The sample format.
1132
1133 @item chlayout
1134 The channel layout.
1135
1136 @item rate
1137 The sample rate for the audio frame.
1138
1139 @item nb_samples
1140 The number of samples (per channel) in the frame.
1141
1142 @item checksum
1143 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
1144 audio, the data is treated as if all the planes were concatenated.
1145
1146 @item plane_checksums
1147 A list of Adler-32 checksums for each data plane.
1148 @end table
1149
1150 @anchor{astats}
1151 @section astats
1152
1153 Display time domain statistical information about the audio channels.
1154 Statistics are calculated and displayed for each audio channel and,
1155 where applicable, an overall figure is also given.
1156
1157 It accepts the following option:
1158 @table @option
1159 @item length
1160 Short window length in seconds, used for peak and trough RMS measurement.
1161 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.1 - 10]}.
1162
1163 @item metadata
1164
1165 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
1166 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
1167 disabled.
1168
1169 Available keys for each channel are:
1170 DC_offset
1171 Min_level
1172 Max_level
1173 Min_difference
1174 Max_difference
1175 Mean_difference
1176 Peak_level
1177 RMS_peak
1178 RMS_trough
1179 Crest_factor
1180 Flat_factor
1181 Peak_count
1182 Bit_depth
1183
1184 and for Overall:
1185 DC_offset
1186 Min_level
1187 Max_level
1188 Min_difference
1189 Max_difference
1190 Mean_difference
1191 Peak_level
1192 RMS_level
1193 RMS_peak
1194 RMS_trough
1195 Flat_factor
1196 Peak_count
1197 Bit_depth
1198 Number_of_samples
1199
1200 For example full key look like this @code{lavfi.astats.1.DC_offset} or
1201 this @code{lavfi.astats.Overall.Peak_count}.
1202
1203 For description what each key means read below.
1204
1205 @item reset
1206 Set number of frame after which stats are going to be recalculated.
1207 Default is disabled.
1208 @end table
1209
1210 A description of each shown parameter follows:
1211
1212 @table @option
1213 @item DC offset
1214 Mean amplitude displacement from zero.
1215
1216 @item Min level
1217 Minimal sample level.
1218
1219 @item Max level
1220 Maximal sample level.
1221
1222 @item Min difference
1223 Minimal difference between two consecutive samples.
1224
1225 @item Max difference
1226 Maximal difference between two consecutive samples.
1227
1228 @item Mean difference
1229 Mean difference between two consecutive samples.
1230 The average of each difference between two consecutive samples.
1231
1232 @item Peak level dB
1233 @item RMS level dB
1234 Standard peak and RMS level measured in dBFS.
1235
1236 @item RMS peak dB
1237 @item RMS trough dB
1238 Peak and trough values for RMS level measured over a short window.
1239
1240 @item Crest factor
1241 Standard ratio of peak to RMS level (note: not in dB).
1242
1243 @item Flat factor
1244 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
1245 (i.e. either @var{Min level} or @var{Max level}).
1246
1247 @item Peak count
1248 Number of occasions (not the number of samples) that the signal attained either
1249 @var{Min level} or @var{Max level}.
1250
1251 @item Bit depth
1252 Overall bit depth of audio. Number of bits used for each sample.
1253 @end table
1254
1255 @section asyncts
1256
1257 Synchronize audio data with timestamps by squeezing/stretching it and/or
1258 dropping samples/adding silence when needed.
1259
1260 This filter is not built by default, please use @ref{aresample} to do squeezing/stretching.
1261
1262 It accepts the following parameters:
1263 @table @option
1264
1265 @item compensate
1266 Enable stretching/squeezing the data to make it match the timestamps. Disabled
1267 by default. When disabled, time gaps are covered with silence.
1268
1269 @item min_delta
1270 The minimum difference between timestamps and audio data (in seconds) to trigger
1271 adding/dropping samples. The default value is 0.1. If you get an imperfect
1272 sync with this filter, try setting this parameter to 0.
1273
1274 @item max_comp
1275 The maximum compensation in samples per second. Only relevant with compensate=1.
1276 The default value is 500.
1277
1278 @item first_pts
1279 Assume that the first PTS should be this value. The time base is 1 / sample
1280 rate. This allows for padding/trimming at the start of the stream. By default,
1281 no assumption is made about the first frame's expected PTS, so no padding or
1282 trimming is done. For example, this could be set to 0 to pad the beginning with
1283 silence if an audio stream starts after the video stream or to trim any samples
1284 with a negative PTS due to encoder delay.
1285
1286 @end table
1287
1288 @section atempo
1289
1290 Adjust audio tempo.
1291
1292 The filter accepts exactly one parameter, the audio tempo. If not
1293 specified then the filter will assume nominal 1.0 tempo. Tempo must
1294 be in the [0.5, 2.0] range.
1295
1296 @subsection Examples
1297
1298 @itemize
1299 @item
1300 Slow down audio to 80% tempo:
1301 @example
1302 atempo=0.8
1303 @end example
1304
1305 @item
1306 To speed up audio to 125% tempo:
1307 @example
1308 atempo=1.25
1309 @end example
1310 @end itemize
1311
1312 @section atrim
1313
1314 Trim the input so that the output contains one continuous subpart of the input.
1315
1316 It accepts the following parameters:
1317 @table @option
1318 @item start
1319 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
1320 sample with the timestamp @var{start} will be the first sample in the output.
1321
1322 @item end
1323 Specify time of the first audio sample that will be dropped, i.e. the
1324 audio sample immediately preceding the one with the timestamp @var{end} will be
1325 the last sample in the output.
1326
1327 @item start_pts
1328 Same as @var{start}, except this option sets the start timestamp in samples
1329 instead of seconds.
1330
1331 @item end_pts
1332 Same as @var{end}, except this option sets the end timestamp in samples instead
1333 of seconds.
1334
1335 @item duration
1336 The maximum duration of the output in seconds.
1337
1338 @item start_sample
1339 The number of the first sample that should be output.
1340
1341 @item end_sample
1342 The number of the first sample that should be dropped.
1343 @end table
1344
1345 @option{start}, @option{end}, and @option{duration} are expressed as time
1346 duration specifications; see
1347 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
1348
1349 Note that the first two sets of the start/end options and the @option{duration}
1350 option look at the frame timestamp, while the _sample options simply count the
1351 samples that pass through the filter. So start/end_pts and start/end_sample will
1352 give different results when the timestamps are wrong, inexact or do not start at
1353 zero. Also note that this filter does not modify the timestamps. If you wish
1354 to have the output timestamps start at zero, insert the asetpts filter after the
1355 atrim filter.
1356
1357 If multiple start or end options are set, this filter tries to be greedy and
1358 keep all samples that match at least one of the specified constraints. To keep
1359 only the part that matches all the constraints at once, chain multiple atrim
1360 filters.
1361
1362 The defaults are such that all the input is kept. So it is possible to set e.g.
1363 just the end values to keep everything before the specified time.
1364
1365 Examples:
1366 @itemize
1367 @item
1368 Drop everything except the second minute of input:
1369 @example
1370 ffmpeg -i INPUT -af atrim=60:120
1371 @end example
1372
1373 @item
1374 Keep only the first 1000 samples:
1375 @example
1376 ffmpeg -i INPUT -af atrim=end_sample=1000
1377 @end example
1378
1379 @end itemize
1380
1381 @section bandpass
1382
1383 Apply a two-pole Butterworth band-pass filter with central
1384 frequency @var{frequency}, and (3dB-point) band-width width.
1385 The @var{csg} option selects a constant skirt gain (peak gain = Q)
1386 instead of the default: constant 0dB peak gain.
1387 The filter roll off at 6dB per octave (20dB per decade).
1388
1389 The filter accepts the following options:
1390
1391 @table @option
1392 @item frequency, f
1393 Set the filter's central frequency. Default is @code{3000}.
1394
1395 @item csg
1396 Constant skirt gain if set to 1. Defaults to 0.
1397
1398 @item width_type
1399 Set method to specify band-width of filter.
1400 @table @option
1401 @item h
1402 Hz
1403 @item q
1404 Q-Factor
1405 @item o
1406 octave
1407 @item s
1408 slope
1409 @end table
1410
1411 @item width, w
1412 Specify the band-width of a filter in width_type units.
1413 @end table
1414
1415 @section bandreject
1416
1417 Apply a two-pole Butterworth band-reject filter with central
1418 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
1419 The filter roll off at 6dB per octave (20dB per decade).
1420
1421 The filter accepts the following options:
1422
1423 @table @option
1424 @item frequency, f
1425 Set the filter's central frequency. Default is @code{3000}.
1426
1427 @item width_type
1428 Set method to specify band-width of filter.
1429 @table @option
1430 @item h
1431 Hz
1432 @item q
1433 Q-Factor
1434 @item o
1435 octave
1436 @item s
1437 slope
1438 @end table
1439
1440 @item width, w
1441 Specify the band-width of a filter in width_type units.
1442 @end table
1443
1444 @section bass
1445
1446 Boost or cut the bass (lower) frequencies of the audio using a two-pole
1447 shelving filter with a response similar to that of a standard
1448 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
1449
1450 The filter accepts the following options:
1451
1452 @table @option
1453 @item gain, g
1454 Give the gain at 0 Hz. Its useful range is about -20
1455 (for a large cut) to +20 (for a large boost).
1456 Beware of clipping when using a positive gain.
1457
1458 @item frequency, f
1459 Set the filter's central frequency and so can be used
1460 to extend or reduce the frequency range to be boosted or cut.
1461 The default value is @code{100} Hz.
1462
1463 @item width_type
1464 Set method to specify band-width of filter.
1465 @table @option
1466 @item h
1467 Hz
1468 @item q
1469 Q-Factor
1470 @item o
1471 octave
1472 @item s
1473 slope
1474 @end table
1475
1476 @item width, w
1477 Determine how steep is the filter's shelf transition.
1478 @end table
1479
1480 @section biquad
1481
1482 Apply a biquad IIR filter with the given coefficients.
1483 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
1484 are the numerator and denominator coefficients respectively.
1485
1486 @section bs2b
1487 Bauer stereo to binaural transformation, which improves headphone listening of
1488 stereo audio records.
1489
1490 It accepts the following parameters:
1491 @table @option
1492
1493 @item profile
1494 Pre-defined crossfeed level.
1495 @table @option
1496
1497 @item default
1498 Default level (fcut=700, feed=50).
1499
1500 @item cmoy
1501 Chu Moy circuit (fcut=700, feed=60).
1502
1503 @item jmeier
1504 Jan Meier circuit (fcut=650, feed=95).
1505
1506 @end table
1507
1508 @item fcut
1509 Cut frequency (in Hz).
1510
1511 @item feed
1512 Feed level (in Hz).
1513
1514 @end table
1515
1516 @section channelmap
1517
1518 Remap input channels to new locations.
1519
1520 It accepts the following parameters:
1521 @table @option
1522 @item channel_layout
1523 The channel layout of the output stream.
1524
1525 @item map
1526 Map channels from input to output. The argument is a '|'-separated list of
1527 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
1528 @var{in_channel} form. @var{in_channel} can be either the name of the input
1529 channel (e.g. FL for front left) or its index in the input channel layout.
1530 @var{out_channel} is the name of the output channel or its index in the output
1531 channel layout. If @var{out_channel} is not given then it is implicitly an
1532 index, starting with zero and increasing by one for each mapping.
1533 @end table
1534
1535 If no mapping is present, the filter will implicitly map input channels to
1536 output channels, preserving indices.
1537
1538 For example, assuming a 5.1+downmix input MOV file,
1539 @example
1540 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
1541 @end example
1542 will create an output WAV file tagged as stereo from the downmix channels of
1543 the input.
1544
1545 To fix a 5.1 WAV improperly encoded in AAC's native channel order
1546 @example
1547 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
1548 @end example
1549
1550 @section channelsplit
1551
1552 Split each channel from an input audio stream into a separate output stream.
1553
1554 It accepts the following parameters:
1555 @table @option
1556 @item channel_layout
1557 The channel layout of the input stream. The default is "stereo".
1558 @end table
1559
1560 For example, assuming a stereo input MP3 file,
1561 @example
1562 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
1563 @end example
1564 will create an output Matroska file with two audio streams, one containing only
1565 the left channel and the other the right channel.
1566
1567 Split a 5.1 WAV file into per-channel files:
1568 @example
1569 ffmpeg -i in.wav -filter_complex
1570 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
1571 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
1572 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
1573 side_right.wav
1574 @end example
1575
1576 @section chorus
1577 Add a chorus effect to the audio.
1578
1579 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
1580
1581 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
1582 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
1583 The modulation depth defines the range the modulated delay is played before or after
1584 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
1585 sound tuned around the original one, like in a chorus where some vocals are slightly
1586 off key.
1587
1588 It accepts the following parameters:
1589 @table @option
1590 @item in_gain
1591 Set input gain. Default is 0.4.
1592
1593 @item out_gain
1594 Set output gain. Default is 0.4.
1595
1596 @item delays
1597 Set delays. A typical delay is around 40ms to 60ms.
1598
1599 @item decays
1600 Set decays.
1601
1602 @item speeds
1603 Set speeds.
1604
1605 @item depths
1606 Set depths.
1607 @end table
1608
1609 @subsection Examples
1610
1611 @itemize
1612 @item
1613 A single delay:
1614 @example
1615 chorus=0.7:0.9:55:0.4:0.25:2
1616 @end example
1617
1618 @item
1619 Two delays:
1620 @example
1621 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
1622 @end example
1623
1624 @item
1625 Fuller sounding chorus with three delays:
1626 @example
1627 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
1628 @end example
1629 @end itemize
1630
1631 @section compand
1632 Compress or expand the audio's dynamic range.
1633
1634 It accepts the following parameters:
1635
1636 @table @option
1637
1638 @item attacks
1639 @item decays
1640 A list of times in seconds for each channel over which the instantaneous level
1641 of the input signal is averaged to determine its volume. @var{attacks} refers to
1642 increase of volume and @var{decays} refers to decrease of volume. For most
1643 situations, the attack time (response to the audio getting louder) should be
1644 shorter than the decay time, because the human ear is more sensitive to sudden
1645 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
1646 a typical value for decay is 0.8 seconds.
1647 If specified number of attacks & decays is lower than number of channels, the last
1648 set attack/decay will be used for all remaining channels.
1649
1650 @item points
1651 A list of points for the transfer function, specified in dB relative to the
1652 maximum possible signal amplitude. Each key points list must be defined using
1653 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
1654 @code{x0/y0 x1/y1 x2/y2 ....}
1655
1656 The input values must be in strictly increasing order but the transfer function
1657 does not have to be monotonically rising. The point @code{0/0} is assumed but
1658 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
1659 function are @code{-70/-70|-60/-20}.
1660
1661 @item soft-knee
1662 Set the curve radius in dB for all joints. It defaults to 0.01.
1663
1664 @item gain
1665 Set the additional gain in dB to be applied at all points on the transfer
1666 function. This allows for easy adjustment of the overall gain.
1667 It defaults to 0.
1668
1669 @item volume
1670 Set an initial volume, in dB, to be assumed for each channel when filtering
1671 starts. This permits the user to supply a nominal level initially, so that, for
1672 example, a very large gain is not applied to initial signal levels before the
1673 companding has begun to operate. A typical value for audio which is initially
1674 quiet is -90 dB. It defaults to 0.
1675
1676 @item delay
1677 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
1678 delayed before being fed to the volume adjuster. Specifying a delay
1679 approximately equal to the attack/decay times allows the filter to effectively
1680 operate in predictive rather than reactive mode. It defaults to 0.
1681
1682 @end table
1683
1684 @subsection Examples
1685
1686 @itemize
1687 @item
1688 Make music with both quiet and loud passages suitable for listening to in a
1689 noisy environment:
1690 @example
1691 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
1692 @end example
1693
1694 Another example for audio with whisper and explosion parts:
1695 @example
1696 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
1697 @end example
1698
1699 @item
1700 A noise gate for when the noise is at a lower level than the signal:
1701 @example
1702 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
1703 @end example
1704
1705 @item
1706 Here is another noise gate, this time for when the noise is at a higher level
1707 than the signal (making it, in some ways, similar to squelch):
1708 @example
1709 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
1710 @end example
1711 @end itemize
1712
1713 @section compensationdelay
1714
1715 Compensation Delay Line is a metric based delay to compensate differing
1716 positions of microphones or speakers.
1717
1718 For example, you have recorded guitar with two microphones placed in
1719 different location. Because the front of sound wave has fixed speed in
1720 normal conditions, the phasing of microphones can vary and depends on
1721 their location and interposition. The best sound mix can be achieved when
1722 these microphones are in phase (synchronized). Note that distance of
1723 ~30 cm between microphones makes one microphone to capture signal in
1724 antiphase to another microphone. That makes the final mix sounding moody.
1725 This filter helps to solve phasing problems by adding different delays
1726 to each microphone track and make them synchronized.
1727
1728 The best result can be reached when you take one track as base and
1729 synchronize other tracks one by one with it.
1730 Remember that synchronization/delay tolerance depends on sample rate, too.
1731 Higher sample rates will give more tolerance.
1732
1733 It accepts the following parameters:
1734
1735 @table @option
1736 @item mm
1737 Set millimeters distance. This is compensation distance for fine tuning.
1738 Default is 0.
1739
1740 @item cm
1741 Set cm distance. This is compensation distance for tightening distance setup.
1742 Default is 0.
1743
1744 @item m
1745 Set meters distance. This is compensation distance for hard distance setup.
1746 Default is 0.
1747
1748 @item dry
1749 Set dry amount. Amount of unprocessed (dry) signal.
1750 Default is 0.
1751
1752 @item wet
1753 Set wet amount. Amount of processed (wet) signal.
1754 Default is 1.
1755
1756 @item temp
1757 Set temperature degree in Celsius. This is the temperature of the environment.
1758 Default is 20.
1759 @end table
1760
1761 @section dcshift
1762 Apply a DC shift to the audio.
1763
1764 This can be useful to remove a DC offset (caused perhaps by a hardware problem
1765 in the recording chain) from the audio. The effect of a DC offset is reduced
1766 headroom and hence volume. The @ref{astats} filter can be used to determine if
1767 a signal has a DC offset.
1768
1769 @table @option
1770 @item shift
1771 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
1772 the audio.
1773
1774 @item limitergain
1775 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
1776 used to prevent clipping.
1777 @end table
1778
1779 @section dynaudnorm
1780 Dynamic Audio Normalizer.
1781
1782 This filter applies a certain amount of gain to the input audio in order
1783 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
1784 contrast to more "simple" normalization algorithms, the Dynamic Audio
1785 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
1786 This allows for applying extra gain to the "quiet" sections of the audio
1787 while avoiding distortions or clipping the "loud" sections. In other words:
1788 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
1789 sections, in the sense that the volume of each section is brought to the
1790 same target level. Note, however, that the Dynamic Audio Normalizer achieves
1791 this goal *without* applying "dynamic range compressing". It will retain 100%
1792 of the dynamic range *within* each section of the audio file.
1793
1794 @table @option
1795 @item f
1796 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
1797 Default is 500 milliseconds.
1798 The Dynamic Audio Normalizer processes the input audio in small chunks,
1799 referred to as frames. This is required, because a peak magnitude has no
1800 meaning for just a single sample value. Instead, we need to determine the
1801 peak magnitude for a contiguous sequence of sample values. While a "standard"
1802 normalizer would simply use the peak magnitude of the complete file, the
1803 Dynamic Audio Normalizer determines the peak magnitude individually for each
1804 frame. The length of a frame is specified in milliseconds. By default, the
1805 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
1806 been found to give good results with most files.
1807 Note that the exact frame length, in number of samples, will be determined
1808 automatically, based on the sampling rate of the individual input audio file.
1809
1810 @item g
1811 Set the Gaussian filter window size. In range from 3 to 301, must be odd
1812 number. Default is 31.
1813 Probably the most important parameter of the Dynamic Audio Normalizer is the
1814 @code{window size} of the Gaussian smoothing filter. The filter's window size
1815 is specified in frames, centered around the current frame. For the sake of
1816 simplicity, this must be an odd number. Consequently, the default value of 31
1817 takes into account the current frame, as well as the 15 preceding frames and
1818 the 15 subsequent frames. Using a larger window results in a stronger
1819 smoothing effect and thus in less gain variation, i.e. slower gain
1820 adaptation. Conversely, using a smaller window results in a weaker smoothing
1821 effect and thus in more gain variation, i.e. faster gain adaptation.
1822 In other words, the more you increase this value, the more the Dynamic Audio
1823 Normalizer will behave like a "traditional" normalization filter. On the
1824 contrary, the more you decrease this value, the more the Dynamic Audio
1825 Normalizer will behave like a dynamic range compressor.
1826
1827 @item p
1828 Set the target peak value. This specifies the highest permissible magnitude
1829 level for the normalized audio input. This filter will try to approach the
1830 target peak magnitude as closely as possible, but at the same time it also
1831 makes sure that the normalized signal will never exceed the peak magnitude.
1832 A frame's maximum local gain factor is imposed directly by the target peak
1833 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
1834 It is not recommended to go above this value.
1835
1836 @item m
1837 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
1838 The Dynamic Audio Normalizer determines the maximum possible (local) gain
1839 factor for each input frame, i.e. the maximum gain factor that does not
1840 result in clipping or distortion. The maximum gain factor is determined by
1841 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
1842 additionally bounds the frame's maximum gain factor by a predetermined
1843 (global) maximum gain factor. This is done in order to avoid excessive gain
1844 factors in "silent" or almost silent frames. By default, the maximum gain
1845 factor is 10.0, For most inputs the default value should be sufficient and
1846 it usually is not recommended to increase this value. Though, for input
1847 with an extremely low overall volume level, it may be necessary to allow even
1848 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
1849 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
1850 Instead, a "sigmoid" threshold function will be applied. This way, the
1851 gain factors will smoothly approach the threshold value, but never exceed that
1852 value.
1853
1854 @item r
1855 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
1856 By default, the Dynamic Audio Normalizer performs "peak" normalization.
1857 This means that the maximum local gain factor for each frame is defined
1858 (only) by the frame's highest magnitude sample. This way, the samples can
1859 be amplified as much as possible without exceeding the maximum signal
1860 level, i.e. without clipping. Optionally, however, the Dynamic Audio
1861 Normalizer can also take into account the frame's root mean square,
1862 abbreviated RMS. In electrical engineering, the RMS is commonly used to
1863 determine the power of a time-varying signal. It is therefore considered
1864 that the RMS is a better approximation of the "perceived loudness" than
1865 just looking at the signal's peak magnitude. Consequently, by adjusting all
1866 frames to a constant RMS value, a uniform "perceived loudness" can be
1867 established. If a target RMS value has been specified, a frame's local gain
1868 factor is defined as the factor that would result in exactly that RMS value.
1869 Note, however, that the maximum local gain factor is still restricted by the
1870 frame's highest magnitude sample, in order to prevent clipping.
1871
1872 @item n
1873 Enable channels coupling. By default is enabled.
1874 By default, the Dynamic Audio Normalizer will amplify all channels by the same
1875 amount. This means the same gain factor will be applied to all channels, i.e.
1876 the maximum possible gain factor is determined by the "loudest" channel.
1877 However, in some recordings, it may happen that the volume of the different
1878 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
1879 In this case, this option can be used to disable the channel coupling. This way,
1880 the gain factor will be determined independently for each channel, depending
1881 only on the individual channel's highest magnitude sample. This allows for
1882 harmonizing the volume of the different channels.
1883
1884 @item c
1885 Enable DC bias correction. By default is disabled.
1886 An audio signal (in the time domain) is a sequence of sample values.
1887 In the Dynamic Audio Normalizer these sample values are represented in the
1888 -1.0 to 1.0 range, regardless of the original input format. Normally, the
1889 audio signal, or "waveform", should be centered around the zero point.
1890 That means if we calculate the mean value of all samples in a file, or in a
1891 single frame, then the result should be 0.0 or at least very close to that
1892 value. If, however, there is a significant deviation of the mean value from
1893 0.0, in either positive or negative direction, this is referred to as a
1894 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
1895 Audio Normalizer provides optional DC bias correction.
1896 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
1897 the mean value, or "DC correction" offset, of each input frame and subtract
1898 that value from all of the frame's sample values which ensures those samples
1899 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
1900 boundaries, the DC correction offset values will be interpolated smoothly
1901 between neighbouring frames.
1902
1903 @item b
1904 Enable alternative boundary mode. By default is disabled.
1905 The Dynamic Audio Normalizer takes into account a certain neighbourhood
1906 around each frame. This includes the preceding frames as well as the
1907 subsequent frames. However, for the "boundary" frames, located at the very
1908 beginning and at the very end of the audio file, not all neighbouring
1909 frames are available. In particular, for the first few frames in the audio
1910 file, the preceding frames are not known. And, similarly, for the last few
1911 frames in the audio file, the subsequent frames are not known. Thus, the
1912 question arises which gain factors should be assumed for the missing frames
1913 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
1914 to deal with this situation. The default boundary mode assumes a gain factor
1915 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
1916 "fade out" at the beginning and at the end of the input, respectively.
1917
1918 @item s
1919 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
1920 By default, the Dynamic Audio Normalizer does not apply "traditional"
1921 compression. This means that signal peaks will not be pruned and thus the
1922 full dynamic range will be retained within each local neighbourhood. However,
1923 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
1924 normalization algorithm with a more "traditional" compression.
1925 For this purpose, the Dynamic Audio Normalizer provides an optional compression
1926 (thresholding) function. If (and only if) the compression feature is enabled,
1927 all input frames will be processed by a soft knee thresholding function prior
1928 to the actual normalization process. Put simply, the thresholding function is
1929 going to prune all samples whose magnitude exceeds a certain threshold value.
1930 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
1931 value. Instead, the threshold value will be adjusted for each individual
1932 frame.
1933 In general, smaller parameters result in stronger compression, and vice versa.
1934 Values below 3.0 are not recommended, because audible distortion may appear.
1935 @end table
1936
1937 @section earwax
1938
1939 Make audio easier to listen to on headphones.
1940
1941 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
1942 so that when listened to on headphones the stereo image is moved from
1943 inside your head (standard for headphones) to outside and in front of
1944 the listener (standard for speakers).
1945
1946 Ported from SoX.
1947
1948 @section equalizer
1949
1950 Apply a two-pole peaking equalisation (EQ) filter. With this
1951 filter, the signal-level at and around a selected frequency can
1952 be increased or decreased, whilst (unlike bandpass and bandreject
1953 filters) that at all other frequencies is unchanged.
1954
1955 In order to produce complex equalisation curves, this filter can
1956 be given several times, each with a different central frequency.
1957
1958 The filter accepts the following options:
1959
1960 @table @option
1961 @item frequency, f
1962 Set the filter's central frequency in Hz.
1963
1964 @item width_type
1965 Set method to specify band-width of filter.
1966 @table @option
1967 @item h
1968 Hz
1969 @item q
1970 Q-Factor
1971 @item o
1972 octave
1973 @item s
1974 slope
1975 @end table
1976
1977 @item width, w
1978 Specify the band-width of a filter in width_type units.
1979
1980 @item gain, g
1981 Set the required gain or attenuation in dB.
1982 Beware of clipping when using a positive gain.
1983 @end table
1984
1985 @subsection Examples
1986 @itemize
1987 @item
1988 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
1989 @example
1990 equalizer=f=1000:width_type=h:width=200:g=-10
1991 @end example
1992
1993 @item
1994 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
1995 @example
1996 equalizer=f=1000:width_type=q:width=1:g=2,equalizer=f=100:width_type=q:width=2:g=-5
1997 @end example
1998 @end itemize
1999
2000 @section extrastereo
2001
2002 Linearly increases the difference between left and right channels which
2003 adds some sort of "live" effect to playback.
2004
2005 The filter accepts the following option:
2006
2007 @table @option
2008 @item m
2009 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
2010 (average of both channels), with 1.0 sound will be unchanged, with
2011 -1.0 left and right channels will be swapped.
2012
2013 @item c
2014 Enable clipping. By default is enabled.
2015 @end table
2016
2017 @section flanger
2018 Apply a flanging effect to the audio.
2019
2020 The filter accepts the following options:
2021
2022 @table @option
2023 @item delay
2024 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
2025
2026 @item depth
2027 Set added swep delay in milliseconds. Range from 0 to 10. Default value is 2.
2028
2029 @item regen
2030 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
2031 Default value is 0.
2032
2033 @item width
2034 Set percentage of delayed signal mixed with original. Range from 0 to 100.
2035 Default value is 71.
2036
2037 @item speed
2038 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
2039
2040 @item shape
2041 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
2042 Default value is @var{sinusoidal}.
2043
2044 @item phase
2045 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
2046 Default value is 25.
2047
2048 @item interp
2049 Set delay-line interpolation, @var{linear} or @var{quadratic}.
2050 Default is @var{linear}.
2051 @end table
2052
2053 @section highpass
2054
2055 Apply a high-pass filter with 3dB point frequency.
2056 The filter can be either single-pole, or double-pole (the default).
2057 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
2058
2059 The filter accepts the following options:
2060
2061 @table @option
2062 @item frequency, f
2063 Set frequency in Hz. Default is 3000.
2064
2065 @item poles, p
2066 Set number of poles. Default is 2.
2067
2068 @item width_type
2069 Set method to specify band-width of filter.
2070 @table @option
2071 @item h
2072 Hz
2073 @item q
2074 Q-Factor
2075 @item o
2076 octave
2077 @item s
2078 slope
2079 @end table
2080
2081 @item width, w
2082 Specify the band-width of a filter in width_type units.
2083 Applies only to double-pole filter.
2084 The default is 0.707q and gives a Butterworth response.
2085 @end table
2086
2087 @section join
2088
2089 Join multiple input streams into one multi-channel stream.
2090
2091 It accepts the following parameters:
2092 @table @option
2093
2094 @item inputs
2095 The number of input streams. It defaults to 2.
2096
2097 @item channel_layout
2098 The desired output channel layout. It defaults to stereo.
2099
2100 @item map
2101 Map channels from inputs to output. The argument is a '|'-separated list of
2102 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
2103 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
2104 can be either the name of the input channel (e.g. FL for front left) or its
2105 index in the specified input stream. @var{out_channel} is the name of the output
2106 channel.
2107 @end table
2108
2109 The filter will attempt to guess the mappings when they are not specified
2110 explicitly. It does so by first trying to find an unused matching input channel
2111 and if that fails it picks the first unused input channel.
2112
2113 Join 3 inputs (with properly set channel layouts):
2114 @example
2115 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
2116 @end example
2117
2118 Build a 5.1 output from 6 single-channel streams:
2119 @example
2120 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
2121 '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'
2122 out
2123 @end example
2124
2125 @section ladspa
2126
2127 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
2128
2129 To enable compilation of this filter you need to configure FFmpeg with
2130 @code{--enable-ladspa}.
2131
2132 @table @option
2133 @item file, f
2134 Specifies the name of LADSPA plugin library to load. If the environment
2135 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
2136 each one of the directories specified by the colon separated list in
2137 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
2138 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
2139 @file{/usr/lib/ladspa/}.
2140
2141 @item plugin, p
2142 Specifies the plugin within the library. Some libraries contain only
2143 one plugin, but others contain many of them. If this is not set filter
2144 will list all available plugins within the specified library.
2145
2146 @item controls, c
2147 Set the '|' separated list of controls which are zero or more floating point
2148 values that determine the behavior of the loaded plugin (for example delay,
2149 threshold or gain).
2150 Controls need to be defined using the following syntax:
2151 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
2152 @var{valuei} is the value set on the @var{i}-th control.
2153 Alternatively they can be also defined using the following syntax:
2154 @var{value0}|@var{value1}|@var{value2}|..., where
2155 @var{valuei} is the value set on the @var{i}-th control.
2156 If @option{controls} is set to @code{help}, all available controls and
2157 their valid ranges are printed.
2158
2159 @item sample_rate, s
2160 Specify the sample rate, default to 44100. Only used if plugin have
2161 zero inputs.
2162
2163 @item nb_samples, n
2164 Set the number of samples per channel per each output frame, default
2165 is 1024. Only used if plugin have zero inputs.
2166
2167 @item duration, d
2168 Set the minimum duration of the sourced audio. See
2169 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2170 for the accepted syntax.
2171 Note that the resulting duration may be greater than the specified duration,
2172 as the generated audio is always cut at the end of a complete frame.
2173 If not specified, or the expressed duration is negative, the audio is
2174 supposed to be generated forever.
2175 Only used if plugin have zero inputs.
2176
2177 @end table
2178
2179 @subsection Examples
2180
2181 @itemize
2182 @item
2183 List all available plugins within amp (LADSPA example plugin) library:
2184 @example
2185 ladspa=file=amp
2186 @end example
2187
2188 @item
2189 List all available controls and their valid ranges for @code{vcf_notch}
2190 plugin from @code{VCF} library:
2191 @example
2192 ladspa=f=vcf:p=vcf_notch:c=help
2193 @end example
2194
2195 @item
2196 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
2197 plugin library:
2198 @example
2199 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
2200 @end example
2201
2202 @item
2203 Add reverberation to the audio using TAP-plugins
2204 (Tom's Audio Processing plugins):
2205 @example
2206 ladspa=file=tap_reverb:tap_reverb
2207 @end example
2208
2209 @item
2210 Generate white noise, with 0.2 amplitude:
2211 @example
2212 ladspa=file=cmt:noise_source_white:c=c0=.2
2213 @end example
2214
2215 @item
2216 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
2217 @code{C* Audio Plugin Suite} (CAPS) library:
2218 @example
2219 ladspa=file=caps:Click:c=c1=20'
2220 @end example
2221
2222 @item
2223 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
2224 @example
2225 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
2226 @end example
2227
2228 @item
2229 Increase volume by 20dB using fast lookahead limiter from Steve Harris
2230 @code{SWH Plugins} collection:
2231 @example
2232 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
2233 @end example
2234
2235 @item
2236 Attenuate low frequencies using Multiband EQ from Steve Harris
2237 @code{SWH Plugins} collection:
2238 @example
2239 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
2240 @end example
2241 @end itemize
2242
2243 @subsection Commands
2244
2245 This filter supports the following commands:
2246 @table @option
2247 @item cN
2248 Modify the @var{N}-th control value.
2249
2250 If the specified value is not valid, it is ignored and prior one is kept.
2251 @end table
2252
2253 @section lowpass
2254
2255 Apply a low-pass filter with 3dB point frequency.
2256 The filter can be either single-pole or double-pole (the default).
2257 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
2258
2259 The filter accepts the following options:
2260
2261 @table @option
2262 @item frequency, f
2263 Set frequency in Hz. Default is 500.
2264
2265 @item poles, p
2266 Set number of poles. Default is 2.
2267
2268 @item width_type
2269 Set method to specify band-width of filter.
2270 @table @option
2271 @item h
2272 Hz
2273 @item q
2274 Q-Factor
2275 @item o
2276 octave
2277 @item s
2278 slope
2279 @end table
2280
2281 @item width, w
2282 Specify the band-width of a filter in width_type units.
2283 Applies only to double-pole filter.
2284 The default is 0.707q and gives a Butterworth response.
2285 @end table
2286
2287 @anchor{pan}
2288 @section pan
2289
2290 Mix channels with specific gain levels. The filter accepts the output
2291 channel layout followed by a set of channels definitions.
2292
2293 This filter is also designed to efficiently remap the channels of an audio
2294 stream.
2295
2296 The filter accepts parameters of the form:
2297 "@var{l}|@var{outdef}|@var{outdef}|..."
2298
2299 @table @option
2300 @item l
2301 output channel layout or number of channels
2302
2303 @item outdef
2304 output channel specification, of the form:
2305 "@var{out_name}=[@var{gain}*]@var{in_name}[+[@var{gain}*]@var{in_name}...]"
2306
2307 @item out_name
2308 output channel to define, either a channel name (FL, FR, etc.) or a channel
2309 number (c0, c1, etc.)
2310
2311 @item gain
2312 multiplicative coefficient for the channel, 1 leaving the volume unchanged
2313
2314 @item in_name
2315 input channel to use, see out_name for details; it is not possible to mix
2316 named and numbered input channels
2317 @end table
2318
2319 If the `=' in a channel specification is replaced by `<', then the gains for
2320 that specification will be renormalized so that the total is 1, thus
2321 avoiding clipping noise.
2322
2323 @subsection Mixing examples
2324
2325 For example, if you want to down-mix from stereo to mono, but with a bigger
2326 factor for the left channel:
2327 @example
2328 pan=1c|c0=0.9*c0+0.1*c1
2329 @end example
2330
2331 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
2332 7-channels surround:
2333 @example
2334 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
2335 @end example
2336
2337 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
2338 that should be preferred (see "-ac" option) unless you have very specific
2339 needs.
2340
2341 @subsection Remapping examples
2342
2343 The channel remapping will be effective if, and only if:
2344
2345 @itemize
2346 @item gain coefficients are zeroes or ones,
2347 @item only one input per channel output,
2348 @end itemize
2349
2350 If all these conditions are satisfied, the filter will notify the user ("Pure
2351 channel mapping detected"), and use an optimized and lossless method to do the
2352 remapping.
2353
2354 For example, if you have a 5.1 source and want a stereo audio stream by
2355 dropping the extra channels:
2356 @example
2357 pan="stereo| c0=FL | c1=FR"
2358 @end example
2359
2360 Given the same source, you can also switch front left and front right channels
2361 and keep the input channel layout:
2362 @example
2363 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
2364 @end example
2365
2366 If the input is a stereo audio stream, you can mute the front left channel (and
2367 still keep the stereo channel layout) with:
2368 @example
2369 pan="stereo|c1=c1"
2370 @end example
2371
2372 Still with a stereo audio stream input, you can copy the right channel in both
2373 front left and right:
2374 @example
2375 pan="stereo| c0=FR | c1=FR"
2376 @end example
2377
2378 @section replaygain
2379
2380 ReplayGain scanner filter. This filter takes an audio stream as an input and
2381 outputs it unchanged.
2382 At end of filtering it displays @code{track_gain} and @code{track_peak}.
2383
2384 @section resample
2385
2386 Convert the audio sample format, sample rate and channel layout. It is
2387 not meant to be used directly.
2388
2389 @section rubberband
2390 Apply time-stretching and pitch-shifting with librubberband.
2391
2392 The filter accepts the following options:
2393
2394 @table @option
2395 @item tempo
2396 Set tempo scale factor.
2397
2398 @item pitch
2399 Set pitch scale factor.
2400
2401 @item transients
2402 Set transients detector.
2403 Possible values are:
2404 @table @var
2405 @item crisp
2406 @item mixed
2407 @item smooth
2408 @end table
2409
2410 @item detector
2411 Set detector.
2412 Possible values are:
2413 @table @var
2414 @item compound
2415 @item percussive
2416 @item soft
2417 @end table
2418
2419 @item phase
2420 Set phase.
2421 Possible values are:
2422 @table @var
2423 @item laminar
2424 @item independent
2425 @end table
2426
2427 @item window
2428 Set processing window size.
2429 Possible values are:
2430 @table @var
2431 @item standard
2432 @item short
2433 @item long
2434 @end table
2435
2436 @item smoothing
2437 Set smoothing.
2438 Possible values are:
2439 @table @var
2440 @item off
2441 @item on
2442 @end table
2443
2444 @item formant
2445 Enable formant preservation when shift pitching.
2446 Possible values are:
2447 @table @var
2448 @item shifted
2449 @item preserved
2450 @end table
2451
2452 @item pitchq
2453 Set pitch quality.
2454 Possible values are:
2455 @table @var
2456 @item quality
2457 @item speed
2458 @item consistency
2459 @end table
2460
2461 @item channels
2462 Set channels.
2463 Possible values are:
2464 @table @var
2465 @item apart
2466 @item together
2467 @end table
2468 @end table
2469
2470 @section sidechaincompress
2471
2472 This filter acts like normal compressor but has the ability to compress
2473 detected signal using second input signal.
2474 It needs two input streams and returns one output stream.
2475 First input stream will be processed depending on second stream signal.
2476 The filtered signal then can be filtered with other filters in later stages of
2477 processing. See @ref{pan} and @ref{amerge} filter.
2478
2479 The filter accepts the following options:
2480
2481 @table @option
2482 @item threshold
2483 If a signal of second stream raises above this level it will affect the gain
2484 reduction of first stream.
2485 By default is 0.125. Range is between 0.00097563 and 1.
2486
2487 @item ratio
2488 Set a ratio about which the signal is reduced. 1:2 means that if the level
2489 raised 4dB above the threshold, it will be only 2dB above after the reduction.
2490 Default is 2. Range is between 1 and 20.
2491
2492 @item attack
2493 Amount of milliseconds the signal has to rise above the threshold before gain
2494 reduction starts. Default is 20. Range is between 0.01 and 2000.
2495
2496 @item release
2497 Amount of milliseconds the signal has to fall below the threshold before
2498 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
2499
2500 @item makeup
2501 Set the amount by how much signal will be amplified after processing.
2502 Default is 2. Range is from 1 and 64.
2503
2504 @item knee
2505 Curve the sharp knee around the threshold to enter gain reduction more softly.
2506 Default is 2.82843. Range is between 1 and 8.
2507
2508 @item link
2509 Choose if the @code{average} level between all channels of side-chain stream
2510 or the louder(@code{maximum}) channel of side-chain stream affects the
2511 reduction. Default is @code{average}.
2512
2513 @item detection
2514 Should the exact signal be taken in case of @code{peak} or an RMS one in case
2515 of @code{rms}. Default is @code{rms} which is mainly smoother.
2516
2517 @item mix
2518 How much to use compressed signal in output. Default is 1.
2519 Range is between 0 and 1.
2520 @end table
2521
2522 @subsection Examples
2523
2524 @itemize
2525 @item
2526 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
2527 depending on the signal of 2nd input and later compressed signal to be
2528 merged with 2nd input:
2529 @example
2530 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
2531 @end example
2532 @end itemize
2533
2534 @section silencedetect
2535
2536 Detect silence in an audio stream.
2537
2538 This filter logs a message when it detects that the input audio volume is less
2539 or equal to a noise tolerance value for a duration greater or equal to the
2540 minimum detected noise duration.
2541
2542 The printed times and duration are expressed in seconds.
2543
2544 The filter accepts the following options:
2545
2546 @table @option
2547 @item duration, d
2548 Set silence duration until notification (default is 2 seconds).
2549
2550 @item noise, n
2551 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
2552 specified value) or amplitude ratio. Default is -60dB, or 0.001.
2553 @end table
2554
2555 @subsection Examples
2556
2557 @itemize
2558 @item
2559 Detect 5 seconds of silence with -50dB noise tolerance:
2560 @example
2561 silencedetect=n=-50dB:d=5
2562 @end example
2563
2564 @item
2565 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
2566 tolerance in @file{silence.mp3}:
2567 @example
2568 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
2569 @end example
2570 @end itemize
2571
2572 @section silenceremove
2573
2574 Remove silence from the beginning, middle or end of the audio.
2575
2576 The filter accepts the following options:
2577
2578 @table @option
2579 @item start_periods
2580 This value is used to indicate if audio should be trimmed at beginning of
2581 the audio. A value of zero indicates no silence should be trimmed from the
2582 beginning. When specifying a non-zero value, it trims audio up until it
2583 finds non-silence. Normally, when trimming silence from beginning of audio
2584 the @var{start_periods} will be @code{1} but it can be increased to higher
2585 values to trim all audio up to specific count of non-silence periods.
2586 Default value is @code{0}.
2587
2588 @item start_duration
2589 Specify the amount of time that non-silence must be detected before it stops
2590 trimming audio. By increasing the duration, bursts of noises can be treated
2591 as silence and trimmed off. Default value is @code{0}.
2592
2593 @item start_threshold
2594 This indicates what sample value should be treated as silence. For digital
2595 audio, a value of @code{0} may be fine but for audio recorded from analog,
2596 you may wish to increase the value to account for background noise.
2597 Can be specified in dB (in case "dB" is appended to the specified value)
2598 or amplitude ratio. Default value is @code{0}.
2599
2600 @item stop_periods
2601 Set the count for trimming silence from the end of audio.
2602 To remove silence from the middle of a file, specify a @var{stop_periods}
2603 that is negative. This value is then treated as a positive value and is
2604 used to indicate the effect should restart processing as specified by
2605 @var{start_periods}, making it suitable for removing periods of silence
2606 in the middle of the audio.
2607 Default value is @code{0}.
2608
2609 @item stop_duration
2610 Specify a duration of silence that must exist before audio is not copied any
2611 more. By specifying a higher duration, silence that is wanted can be left in
2612 the audio.
2613 Default value is @code{0}.
2614
2615 @item stop_threshold
2616 This is the same as @option{start_threshold} but for trimming silence from
2617 the end of audio.
2618 Can be specified in dB (in case "dB" is appended to the specified value)
2619 or amplitude ratio. Default value is @code{0}.
2620
2621 @item leave_silence
2622 This indicate that @var{stop_duration} length of audio should be left intact
2623 at the beginning of each period of silence.
2624 For example, if you want to remove long pauses between words but do not want
2625 to remove the pauses completely. Default value is @code{0}.
2626
2627 @end table
2628
2629 @subsection Examples
2630
2631 @itemize
2632 @item
2633 The following example shows how this filter can be used to start a recording
2634 that does not contain the delay at the start which usually occurs between
2635 pressing the record button and the start of the performance:
2636 @example
2637 silenceremove=1:5:0.02
2638 @end example
2639 @end itemize
2640
2641 @section stereotools
2642
2643 This filter has some handy utilities to manage stereo signals, for converting
2644 M/S stereo recordings to L/R signal while having control over the parameters
2645 or spreading the stereo image of master track.
2646
2647 The filter accepts the following options:
2648
2649 @table @option
2650 @item level_in
2651 Set input level before filtering for both channels. Defaults is 1.
2652 Allowed range is from 0.015625 to 64.
2653
2654 @item level_out
2655 Set output level after filtering for both channels. Defaults is 1.
2656 Allowed range is from 0.015625 to 64.
2657
2658 @item balance_in
2659 Set input balance between both channels. Default is 0.
2660 Allowed range is from -1 to 1.
2661
2662 @item balance_out
2663 Set output balance between both channels. Default is 0.
2664 Allowed range is from -1 to 1.
2665
2666 @item softclip
2667 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
2668 clipping. Disabled by default.
2669
2670 @item mutel
2671 Mute the left channel. Disabled by default.
2672
2673 @item muter
2674 Mute the right channel. Disabled by default.
2675
2676 @item phasel
2677 Change the phase of the left channel. Disabled by default.
2678
2679 @item phaser
2680 Change the phase of the right channel. Disabled by default.
2681
2682 @item mode
2683 Set stereo mode. Available values are:
2684
2685 @table @samp
2686 @item lr>lr
2687 Left/Right to Left/Right, this is default.
2688
2689 @item lr>ms
2690 Left/Right to Mid/Side.
2691
2692 @item ms>lr
2693 Mid/Side to Left/Right.
2694
2695 @item lr>ll
2696 Left/Right to Left/Left.
2697
2698 @item lr>rr
2699 Left/Right to Right/Right.
2700
2701 @item lr>l+r
2702 Left/Right to Left + Right.
2703
2704 @item lr>rl
2705 Left/Right to Right/Left.
2706 @end table
2707
2708 @item slev
2709 Set level of side signal. Default is 1.
2710 Allowed range is from 0.015625 to 64.
2711
2712 @item sbal
2713 Set balance of side signal. Default is 0.
2714 Allowed range is from -1 to 1.
2715
2716 @item mlev
2717 Set level of the middle signal. Default is 1.
2718 Allowed range is from 0.015625 to 64.
2719
2720 @item mpan
2721 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
2722
2723 @item base
2724 Set stereo base between mono and inversed channels. Default is 0.
2725 Allowed range is from -1 to 1.
2726
2727 @item delay
2728 Set delay in milliseconds how much to delay left from right channel and
2729 vice versa. Default is 0. Allowed range is from -20 to 20.
2730
2731 @item sclevel
2732 Set S/C level. Default is 1. Allowed range is from 1 to 100.
2733
2734 @item phase
2735 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
2736 @end table
2737
2738 @section stereowiden
2739
2740 This filter enhance the stereo effect by suppressing signal common to both
2741 channels and by delaying the signal of left into right and vice versa,
2742 thereby widening the stereo effect.
2743
2744 The filter accepts the following options:
2745
2746 @table @option
2747 @item delay
2748 Time in milliseconds of the delay of left signal into right and vice versa.
2749 Default is 20 milliseconds.
2750
2751 @item feedback
2752 Amount of gain in delayed signal into right and vice versa. Gives a delay
2753 effect of left signal in right output and vice versa which gives widening
2754 effect. Default is 0.3.
2755
2756 @item crossfeed
2757 Cross feed of left into right with inverted phase. This helps in suppressing
2758 the mono. If the value is 1 it will cancel all the signal common to both
2759 channels. Default is 0.3.
2760
2761 @item drymix
2762 Set level of input signal of original channel. Default is 0.8.
2763 @end table
2764
2765 @section treble
2766
2767 Boost or cut treble (upper) frequencies of the audio using a two-pole
2768 shelving filter with a response similar to that of a standard
2769 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2770
2771 The filter accepts the following options:
2772
2773 @table @option
2774 @item gain, g
2775 Give the gain at whichever is the lower of ~22 kHz and the
2776 Nyquist frequency. Its useful range is about -20 (for a large cut)
2777 to +20 (for a large boost). Beware of clipping when using a positive gain.
2778
2779 @item frequency, f
2780 Set the filter's central frequency and so can be used
2781 to extend or reduce the frequency range to be boosted or cut.
2782 The default value is @code{3000} Hz.
2783
2784 @item width_type
2785 Set method to specify band-width of filter.
2786 @table @option
2787 @item h
2788 Hz
2789 @item q
2790 Q-Factor
2791 @item o
2792 octave
2793 @item s
2794 slope
2795 @end table
2796
2797 @item width, w
2798 Determine how steep is the filter's shelf transition.
2799 @end table
2800
2801 @section tremolo
2802
2803 Sinusoidal amplitude modulation.
2804
2805 The filter accepts the following options:
2806
2807 @table @option
2808 @item f
2809 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
2810 (20 Hz or lower) will result in a tremolo effect.
2811 This filter may also be used as a ring modulator by specifying
2812 a modulation frequency higher than 20 Hz.
2813 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
2814
2815 @item d
2816 Depth of modulation as a percentage. Range is 0.0 - 1.0.
2817 Default value is 0.5.
2818 @end table
2819
2820 @section vibrato
2821
2822 Sinusoidal phase modulation.
2823
2824 The filter accepts the following options:
2825
2826 @table @option
2827 @item f
2828 Modulation frequency in Hertz.
2829 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
2830
2831 @item d
2832 Depth of modulation as a percentage. Range is 0.0 - 1.0.
2833 Default value is 0.5.
2834 @end table
2835
2836 @section volume
2837
2838 Adjust the input audio volume.
2839
2840 It accepts the following parameters:
2841 @table @option
2842
2843 @item volume
2844 Set audio volume expression.
2845
2846 Output values are clipped to the maximum value.
2847
2848 The output audio volume is given by the relation:
2849 @example
2850 @var{output_volume} = @var{volume} * @var{input_volume}
2851 @end example
2852
2853 The default value for @var{volume} is "1.0".
2854
2855 @item precision
2856 This parameter represents the mathematical precision.
2857
2858 It determines which input sample formats will be allowed, which affects the
2859 precision of the volume scaling.
2860
2861 @table @option
2862 @item fixed
2863 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
2864 @item float
2865 32-bit floating-point; this limits input sample format to FLT. (default)
2866 @item double
2867 64-bit floating-point; this limits input sample format to DBL.
2868 @end table
2869
2870 @item replaygain
2871 Choose the behaviour on encountering ReplayGain side data in input frames.
2872
2873 @table @option
2874 @item drop
2875 Remove ReplayGain side data, ignoring its contents (the default).
2876
2877 @item ignore
2878 Ignore ReplayGain side data, but leave it in the frame.
2879
2880 @item track
2881 Prefer the track gain, if present.
2882
2883 @item album
2884 Prefer the album gain, if present.
2885 @end table
2886
2887 @item replaygain_preamp
2888 Pre-amplification gain in dB to apply to the selected replaygain gain.
2889
2890 Default value for @var{replaygain_preamp} is 0.0.
2891
2892 @item eval
2893 Set when the volume expression is evaluated.
2894
2895 It accepts the following values:
2896 @table @samp
2897 @item once
2898 only evaluate expression once during the filter initialization, or
2899 when the @samp{volume} command is sent
2900
2901 @item frame
2902 evaluate expression for each incoming frame
2903 @end table
2904
2905 Default value is @samp{once}.
2906 @end table
2907
2908 The volume expression can contain the following parameters.
2909
2910 @table @option
2911 @item n
2912 frame number (starting at zero)
2913 @item nb_channels
2914 number of channels
2915 @item nb_consumed_samples
2916 number of samples consumed by the filter
2917 @item nb_samples
2918 number of samples in the current frame
2919 @item pos
2920 original frame position in the file
2921 @item pts
2922 frame PTS
2923 @item sample_rate
2924 sample rate
2925 @item startpts
2926 PTS at start of stream
2927 @item startt
2928 time at start of stream
2929 @item t
2930 frame time
2931 @item tb
2932 timestamp timebase
2933 @item volume
2934 last set volume value
2935 @end table
2936
2937 Note that when @option{eval} is set to @samp{once} only the
2938 @var{sample_rate} and @var{tb} variables are available, all other
2939 variables will evaluate to NAN.
2940
2941 @subsection Commands
2942
2943 This filter supports the following commands:
2944 @table @option
2945 @item volume
2946 Modify the volume expression.
2947 The command accepts the same syntax of the corresponding option.
2948
2949 If the specified expression is not valid, it is kept at its current
2950 value.
2951 @item replaygain_noclip
2952 Prevent clipping by limiting the gain applied.
2953
2954 Default value for @var{replaygain_noclip} is 1.
2955
2956 @end table
2957
2958 @subsection Examples
2959
2960 @itemize
2961 @item
2962 Halve the input audio volume:
2963 @example
2964 volume=volume=0.5
2965 volume=volume=1/2
2966 volume=volume=-6.0206dB
2967 @end example
2968
2969 In all the above example the named key for @option{volume} can be
2970 omitted, for example like in:
2971 @example
2972 volume=0.5
2973 @end example
2974
2975 @item
2976 Increase input audio power by 6 decibels using fixed-point precision:
2977 @example
2978 volume=volume=6dB:precision=fixed
2979 @end example
2980
2981 @item
2982 Fade volume after time 10 with an annihilation period of 5 seconds:
2983 @example
2984 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
2985 @end example
2986 @end itemize
2987
2988 @section volumedetect
2989
2990 Detect the volume of the input video.
2991
2992 The filter has no parameters. The input is not modified. Statistics about
2993 the volume will be printed in the log when the input stream end is reached.
2994
2995 In particular it will show the mean volume (root mean square), maximum
2996 volume (on a per-sample basis), and the beginning of a histogram of the
2997 registered volume values (from the maximum value to a cumulated 1/1000 of
2998 the samples).
2999
3000 All volumes are in decibels relative to the maximum PCM value.
3001
3002 @subsection Examples
3003
3004 Here is an excerpt of the output:
3005 @example
3006 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
3007 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
3008 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
3009 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
3010 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
3011 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
3012 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
3013 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
3014 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
3015 @end example
3016
3017 It means that:
3018 @itemize
3019 @item
3020 The mean square energy is approximately -27 dB, or 10^-2.7.
3021 @item
3022 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
3023 @item
3024 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
3025 @end itemize
3026
3027 In other words, raising the volume by +4 dB does not cause any clipping,
3028 raising it by +5 dB causes clipping for 6 samples, etc.
3029
3030 @c man end AUDIO FILTERS
3031
3032 @chapter Audio Sources
3033 @c man begin AUDIO SOURCES
3034
3035 Below is a description of the currently available audio sources.
3036
3037 @section abuffer
3038
3039 Buffer audio frames, and make them available to the filter chain.
3040
3041 This source is mainly intended for a programmatic use, in particular
3042 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
3043
3044 It accepts the following parameters:
3045 @table @option
3046
3047 @item time_base
3048 The timebase which will be used for timestamps of submitted frames. It must be
3049 either a floating-point number or in @var{numerator}/@var{denominator} form.
3050
3051 @item sample_rate
3052 The sample rate of the incoming audio buffers.
3053
3054 @item sample_fmt
3055 The sample format of the incoming audio buffers.
3056 Either a sample format name or its corresponding integer representation from
3057 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
3058
3059 @item channel_layout
3060 The channel layout of the incoming audio buffers.
3061 Either a channel layout name from channel_layout_map in
3062 @file{libavutil/channel_layout.c} or its corresponding integer representation
3063 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
3064
3065 @item channels
3066 The number of channels of the incoming audio buffers.
3067 If both @var{channels} and @var{channel_layout} are specified, then they
3068 must be consistent.
3069
3070 @end table
3071
3072 @subsection Examples
3073
3074 @example
3075 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
3076 @end example
3077
3078 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
3079 Since the sample format with name "s16p" corresponds to the number
3080 6 and the "stereo" channel layout corresponds to the value 0x3, this is
3081 equivalent to:
3082 @example
3083 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
3084 @end example
3085
3086 @section aevalsrc
3087
3088 Generate an audio signal specified by an expression.
3089
3090 This source accepts in input one or more expressions (one for each
3091 channel), which are evaluated and used to generate a corresponding
3092 audio signal.
3093
3094 This source accepts the following options:
3095
3096 @table @option
3097 @item exprs
3098 Set the '|'-separated expressions list for each separate channel. In case the
3099 @option{channel_layout} option is not specified, the selected channel layout
3100 depends on the number of provided expressions. Otherwise the last
3101 specified expression is applied to the remaining output channels.
3102
3103 @item channel_layout, c
3104 Set the channel layout. The number of channels in the specified layout
3105 must be equal to the number of specified expressions.
3106
3107 @item duration, d
3108 Set the minimum duration of the sourced audio. See
3109 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3110 for the accepted syntax.
3111 Note that the resulting duration may be greater than the specified
3112 duration, as the generated audio is always cut at the end of a
3113 complete frame.
3114
3115 If not specified, or the expressed duration is negative, the audio is
3116 supposed to be generated forever.
3117
3118 @item nb_samples, n
3119 Set the number of samples per channel per each output frame,
3120 default to 1024.
3121
3122 @item sample_rate, s
3123 Specify the sample rate, default to 44100.
3124 @end table
3125
3126 Each expression in @var{exprs} can contain the following constants:
3127
3128 @table @option
3129 @item n
3130 number of the evaluated sample, starting from 0
3131
3132 @item t
3133 time of the evaluated sample expressed in seconds, starting from 0
3134
3135 @item s
3136 sample rate
3137
3138 @end table
3139
3140 @subsection Examples
3141
3142 @itemize
3143 @item
3144 Generate silence:
3145 @example
3146 aevalsrc=0
3147 @end example
3148
3149 @item
3150 Generate a sin signal with frequency of 440 Hz, set sample rate to
3151 8000 Hz:
3152 @example
3153 aevalsrc="sin(440*2*PI*t):s=8000"
3154 @end example
3155
3156 @item
3157 Generate a two channels signal, specify the channel layout (Front
3158 Center + Back Center) explicitly:
3159 @example
3160 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
3161 @end example
3162
3163 @item
3164 Generate white noise:
3165 @example
3166 aevalsrc="-2+random(0)"
3167 @end example
3168
3169 @item
3170 Generate an amplitude modulated signal:
3171 @example
3172 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
3173 @end example
3174
3175 @item
3176 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
3177 @example
3178 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
3179 @end example
3180
3181 @end itemize
3182
3183 @section anullsrc
3184
3185 The null audio source, return unprocessed audio frames. It is mainly useful
3186 as a template and to be employed in analysis / debugging tools, or as
3187 the source for filters which ignore the input data (for example the sox
3188 synth filter).
3189
3190 This source accepts the following options:
3191
3192 @table @option
3193
3194 @item channel_layout, cl
3195
3196 Specifies the channel layout, and can be either an integer or a string
3197 representing a channel layout. The default value of @var{channel_layout}
3198 is "stereo".
3199
3200 Check the channel_layout_map definition in
3201 @file{libavutil/channel_layout.c} for the mapping between strings and
3202 channel layout values.
3203
3204 @item sample_rate, r
3205 Specifies the sample rate, and defaults to 44100.
3206
3207 @item nb_samples, n
3208 Set the number of samples per requested frames.
3209
3210 @end table
3211
3212 @subsection Examples
3213
3214 @itemize
3215 @item
3216 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
3217 @example
3218 anullsrc=r=48000:cl=4
3219 @end example
3220
3221 @item
3222 Do the same operation with a more obvious syntax:
3223 @example
3224 anullsrc=r=48000:cl=mono
3225 @end example
3226 @end itemize
3227
3228 All the parameters need to be explicitly defined.
3229
3230 @section flite
3231
3232 Synthesize a voice utterance using the libflite library.
3233
3234 To enable compilation of this filter you need to configure FFmpeg with
3235 @code{--enable-libflite}.
3236
3237 Note that the flite library is not thread-safe.
3238
3239 The filter accepts the following options:
3240
3241 @table @option
3242
3243 @item list_voices
3244 If set to 1, list the names of the available voices and exit
3245 immediately. Default value is 0.
3246
3247 @item nb_samples, n
3248 Set the maximum number of samples per frame. Default value is 512.
3249
3250 @item textfile
3251 Set the filename containing the text to speak.
3252
3253 @item text
3254 Set the text to speak.
3255
3256 @item voice, v
3257 Set the voice to use for the speech synthesis. Default value is
3258 @code{kal}. See also the @var{list_voices} option.
3259 @end table
3260
3261 @subsection Examples
3262
3263 @itemize
3264 @item
3265 Read from file @file{speech.txt}, and synthesize the text using the
3266 standard flite voice:
3267 @example
3268 flite=textfile=speech.txt
3269 @end example
3270
3271 @item
3272 Read the specified text selecting the @code{slt} voice:
3273 @example
3274 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
3275 @end example
3276
3277 @item
3278 Input text to ffmpeg:
3279 @example
3280 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
3281 @end example
3282
3283 @item
3284 Make @file{ffplay} speak the specified text, using @code{flite} and
3285 the @code{lavfi} device:
3286 @example
3287 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
3288 @end example
3289 @end itemize
3290
3291 For more information about libflite, check:
3292 @url{http://www.speech.cs.cmu.edu/flite/}
3293
3294 @section anoisesrc
3295
3296 Generate a noise audio signal.
3297
3298 The filter accepts the following options:
3299
3300 @table @option
3301 @item sample_rate, r
3302 Specify the sample rate. Default value is 48000 Hz.
3303
3304 @item amplitude, a
3305 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
3306 is 1.0.
3307
3308 @item duration, d
3309 Specify the duration of the generated audio stream. Not specifying this option
3310 results in noise with an infinite length.
3311
3312 @item color, colour, c
3313 Specify the color of noise. Available noise colors are white, pink, and brown.
3314 Default color is white.
3315
3316 @item seed, s
3317 Specify a value used to seed the PRNG.
3318
3319 @item nb_samples, n
3320 Set the number of samples per each output frame, default is 1024.
3321 @end table
3322
3323 @subsection Examples
3324
3325 @itemize
3326
3327 @item
3328 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
3329 @example
3330 anoisesrc=d=60:c=pink:r=44100:a=0.5
3331 @end example
3332 @end itemize
3333
3334 @section sine
3335
3336 Generate an audio signal made of a sine wave with amplitude 1/8.
3337
3338 The audio signal is bit-exact.
3339
3340 The filter accepts the following options:
3341
3342 @table @option
3343
3344 @item frequency, f
3345 Set the carrier frequency. Default is 440 Hz.
3346
3347 @item beep_factor, b
3348 Enable a periodic beep every second with frequency @var{beep_factor} times
3349 the carrier frequency. Default is 0, meaning the beep is disabled.
3350
3351 @item sample_rate, r
3352 Specify the sample rate, default is 44100.
3353
3354 @item duration, d
3355 Specify the duration of the generated audio stream.
3356
3357 @item samples_per_frame
3358 Set the number of samples per output frame.
3359
3360 The expression can contain the following constants:
3361
3362 @table @option
3363 @item n
3364 The (sequential) number of the output audio frame, starting from 0.
3365
3366 @item pts
3367 The PTS (Presentation TimeStamp) of the output audio frame,
3368 expressed in @var{TB} units.
3369
3370 @item t
3371 The PTS of the output audio frame, expressed in seconds.
3372
3373 @item TB
3374 The timebase of the output audio frames.
3375 @end table
3376
3377 Default is @code{1024}.
3378 @end table
3379
3380 @subsection Examples
3381
3382 @itemize
3383
3384 @item
3385 Generate a simple 440 Hz sine wave:
3386 @example
3387 sine
3388 @end example
3389
3390 @item
3391 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
3392 @example
3393 sine=220:4:d=5
3394 sine=f=220:b=4:d=5
3395 sine=frequency=220:beep_factor=4:duration=5
3396 @end example
3397
3398 @item
3399 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
3400 pattern:
3401 @example
3402 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
3403 @end example
3404 @end itemize
3405
3406 @c man end AUDIO SOURCES
3407
3408 @chapter Audio Sinks
3409 @c man begin AUDIO SINKS
3410
3411 Below is a description of the currently available audio sinks.
3412
3413 @section abuffersink
3414
3415 Buffer audio frames, and make them available to the end of filter chain.
3416
3417 This sink is mainly intended for programmatic use, in particular
3418 through the interface defined in @file{libavfilter/buffersink.h}
3419 or the options system.
3420
3421 It accepts a pointer to an AVABufferSinkContext structure, which
3422 defines the incoming buffers' formats, to be passed as the opaque
3423 parameter to @code{avfilter_init_filter} for initialization.
3424 @section anullsink
3425
3426 Null audio sink; do absolutely nothing with the input audio. It is
3427 mainly useful as a template and for use in analysis / debugging
3428 tools.
3429
3430 @c man end AUDIO SINKS
3431
3432 @chapter Video Filters
3433 @c man begin VIDEO FILTERS
3434
3435 When you configure your FFmpeg build, you can disable any of the
3436 existing filters using @code{--disable-filters}.
3437 The configure output will show the video filters included in your
3438 build.
3439
3440 Below is a description of the currently available video filters.
3441
3442 @section alphaextract
3443
3444 Extract the alpha component from the input as a grayscale video. This
3445 is especially useful with the @var{alphamerge} filter.
3446
3447 @section alphamerge
3448
3449 Add or replace the alpha component of the primary input with the
3450 grayscale value of a second input. This is intended for use with
3451 @var{alphaextract} to allow the transmission or storage of frame
3452 sequences that have alpha in a format that doesn't support an alpha
3453 channel.
3454
3455 For example, to reconstruct full frames from a normal YUV-encoded video
3456 and a separate video created with @var{alphaextract}, you might use:
3457 @example
3458 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
3459 @end example
3460
3461 Since this filter is designed for reconstruction, it operates on frame
3462 sequences without considering timestamps, and terminates when either
3463 input reaches end of stream. This will cause problems if your encoding
3464 pipeline drops frames. If you're trying to apply an image as an
3465 overlay to a video stream, consider the @var{overlay} filter instead.
3466
3467 @section ass
3468
3469 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
3470 and libavformat to work. On the other hand, it is limited to ASS (Advanced
3471 Substation Alpha) subtitles files.
3472
3473 This filter accepts the following option in addition to the common options from
3474 the @ref{subtitles} filter:
3475
3476 @table @option
3477 @item shaping
3478 Set the shaping engine
3479
3480 Available values are:
3481 @table @samp
3482 @item auto
3483 The default libass shaping engine, which is the best available.
3484 @item simple
3485 Fast, font-agnostic shaper that can do only substitutions
3486 @item complex
3487 Slower shaper using OpenType for substitutions and positioning
3488 @end table
3489
3490 The default is @code{auto}.
3491 @end table
3492
3493 @section atadenoise
3494 Apply an Adaptive Temporal Averaging Denoiser to the video input.
3495
3496 The filter accepts the following options:
3497
3498 @table @option
3499 @item 0a
3500 Set threshold A for 1st plane. Default is 0.02.
3501 Valid range is 0 to 0.3.
3502
3503 @item 0b
3504 Set threshold B for 1st plane. Default is 0.04.
3505 Valid range is 0 to 5.
3506
3507 @item 1a
3508 Set threshold A for 2nd plane. Default is 0.02.
3509 Valid range is 0 to 0.3.
3510
3511 @item 1b
3512 Set threshold B for 2nd plane. Default is 0.04.
3513 Valid range is 0 to 5.
3514
3515 @item 2a
3516 Set threshold A for 3rd plane. Default is 0.02.
3517 Valid range is 0 to 0.3.
3518
3519 @item 2b
3520 Set threshold B for 3rd plane. Default is 0.04.
3521 Valid range is 0 to 5.
3522
3523 Threshold A is designed to react on abrupt changes in the input signal and
3524 threshold B is designed to react on continuous changes in the input signal.
3525
3526 @item s
3527 Set number of frames filter will use for averaging. Default is 33. Must be odd
3528 number in range [5, 129].
3529 @end table
3530
3531 @section bbox
3532
3533 Compute the bounding box for the non-black pixels in the input frame
3534 luminance plane.
3535
3536 This filter computes the bounding box containing all the pixels with a
3537 luminance value greater than the minimum allowed value.
3538 The parameters describing the bounding box are printed on the filter
3539 log.
3540
3541 The filter accepts the following option:
3542
3543 @table @option
3544 @item min_val
3545 Set the minimal luminance value. Default is @code{16}.
3546 @end table
3547
3548 @section blackdetect
3549
3550 Detect video intervals that are (almost) completely black. Can be
3551 useful to detect chapter transitions, commercials, or invalid
3552 recordings. Output lines contains the time for the start, end and
3553 duration of the detected black interval expressed in seconds.
3554
3555 In order to display the output lines, you need to set the loglevel at
3556 least to the AV_LOG_INFO value.
3557
3558 The filter accepts the following options:
3559
3560 @table @option
3561 @item black_min_duration, d
3562 Set the minimum detected black duration expressed in seconds. It must
3563 be a non-negative floating point number.
3564
3565 Default value is 2.0.
3566
3567 @item picture_black_ratio_th, pic_th
3568 Set the threshold for considering a picture "black".
3569 Express the minimum value for the ratio:
3570 @example
3571 @var{nb_black_pixels} / @var{nb_pixels}
3572 @end example
3573
3574 for which a picture is considered black.
3575 Default value is 0.98.
3576
3577 @item pixel_black_th, pix_th
3578 Set the threshold for considering a pixel "black".
3579
3580 The threshold expresses the maximum pixel luminance value for which a
3581 pixel is considered "black". The provided value is scaled according to
3582 the following equation:
3583 @example
3584 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
3585 @end example
3586
3587 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
3588 the input video format, the range is [0-255] for YUV full-range
3589 formats and [16-235] for YUV non full-range formats.
3590
3591 Default value is 0.10.
3592 @end table
3593
3594 The following example sets the maximum pixel threshold to the minimum
3595 value, and detects only black intervals of 2 or more seconds:
3596 @example
3597 blackdetect=d=2:pix_th=0.00
3598 @end example
3599
3600 @section blackframe
3601
3602 Detect frames that are (almost) completely black. Can be useful to
3603 detect chapter transitions or commercials. Output lines consist of
3604 the frame number of the detected frame, the percentage of blackness,
3605 the position in the file if known or -1 and the timestamp in seconds.
3606
3607 In order to display the output lines, you need to set the loglevel at
3608 least to the AV_LOG_INFO value.
3609
3610 It accepts the following parameters:
3611
3612 @table @option
3613
3614 @item amount
3615 The percentage of the pixels that have to be below the threshold; it defaults to
3616 @code{98}.
3617
3618 @item threshold, thresh
3619 The threshold below which a pixel value is considered black; it defaults to
3620 @code{32}.
3621
3622 @end table
3623
3624 @section blend, tblend
3625
3626 Blend two video frames into each other.
3627
3628 The @code{blend} filter takes two input streams and outputs one
3629 stream, the first input is the "top" layer and second input is
3630 "bottom" layer.  Output terminates when shortest input terminates.
3631
3632 The @code{tblend} (time blend) filter takes two consecutive frames
3633 from one single stream, and outputs the result obtained by blending
3634 the new frame on top of the old frame.
3635
3636 A description of the accepted options follows.
3637
3638 @table @option
3639 @item c0_mode
3640 @item c1_mode
3641 @item c2_mode
3642 @item c3_mode
3643 @item all_mode
3644 Set blend mode for specific pixel component or all pixel components in case
3645 of @var{all_mode}. Default value is @code{normal}.
3646
3647 Available values for component modes are:
3648 @table @samp
3649 @item addition
3650 @item addition128
3651 @item and
3652 @item average
3653 @item burn
3654 @item darken
3655 @item difference
3656 @item difference128
3657 @item divide
3658 @item dodge
3659 @item exclusion
3660 @item glow
3661 @item hardlight
3662 @item hardmix
3663 @item lighten
3664 @item linearlight
3665 @item multiply
3666 @item negation
3667 @item normal
3668 @item or
3669 @item overlay
3670 @item phoenix
3671 @item pinlight
3672 @item reflect
3673 @item screen
3674 @item softlight
3675 @item subtract
3676 @item vividlight
3677 @item xor
3678 @end table
3679
3680 @item c0_opacity
3681 @item c1_opacity
3682 @item c2_opacity
3683 @item c3_opacity
3684 @item all_opacity
3685 Set blend opacity for specific pixel component or all pixel components in case
3686 of @var{all_opacity}. Only used in combination with pixel component blend modes.
3687
3688 @item c0_expr
3689 @item c1_expr
3690 @item c2_expr
3691 @item c3_expr
3692 @item all_expr
3693 Set blend expression for specific pixel component or all pixel components in case
3694 of @var{all_expr}. Note that related mode options will be ignored if those are set.
3695
3696 The expressions can use the following variables:
3697
3698 @table @option
3699 @item N
3700 The sequential number of the filtered frame, starting from @code{0}.
3701
3702 @item X
3703 @item Y
3704 the coordinates of the current sample
3705
3706 @item W
3707 @item H
3708 the width and height of currently filtered plane
3709
3710 @item SW
3711 @item SH
3712 Width and height scale depending on the currently filtered plane. It is the
3713 ratio between the corresponding luma plane number of pixels and the current
3714 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
3715 @code{0.5,0.5} for chroma planes.
3716
3717 @item T
3718 Time of the current frame, expressed in seconds.
3719
3720 @item TOP, A
3721 Value of pixel component at current location for first video frame (top layer).
3722
3723 @item BOTTOM, B
3724 Value of pixel component at current location for second video frame (bottom layer).
3725 @end table
3726
3727 @item shortest
3728 Force termination when the shortest input terminates. Default is
3729 @code{0}. This option is only defined for the @code{blend} filter.
3730
3731 @item repeatlast
3732 Continue applying the last bottom frame after the end of the stream. A value of
3733 @code{0} disable the filter after the last frame of the bottom layer is reached.
3734 Default is @code{1}. This option is only defined for the @code{blend} filter.
3735 @end table
3736
3737 @subsection Examples
3738
3739 @itemize
3740 @item
3741 Apply transition from bottom layer to top layer in first 10 seconds:
3742 @example
3743 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
3744 @end example
3745
3746 @item
3747 Apply 1x1 checkerboard effect:
3748 @example
3749 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
3750 @end example
3751
3752 @item
3753 Apply uncover left effect:
3754 @example
3755 blend=all_expr='if(gte(N*SW+X,W),A,B)'
3756 @end example
3757
3758 @item
3759 Apply uncover down effect:
3760 @example
3761 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
3762 @end example
3763
3764 @item
3765 Apply uncover up-left effect:
3766 @example
3767 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
3768 @end example
3769
3770 @item
3771 Display differences between the current and the previous frame:
3772 @example
3773 tblend=all_mode=difference128
3774 @end example
3775 @end itemize
3776
3777 @section boxblur
3778
3779 Apply a boxblur algorithm to the input video.
3780
3781 It accepts the following parameters:
3782
3783 @table @option
3784
3785 @item luma_radius, lr
3786 @item luma_power, lp
3787 @item chroma_radius, cr
3788 @item chroma_power, cp
3789 @item alpha_radius, ar
3790 @item alpha_power, ap
3791
3792 @end table
3793
3794 A description of the accepted options follows.
3795
3796 @table @option
3797 @item luma_radius, lr
3798 @item chroma_radius, cr
3799 @item alpha_radius, ar
3800 Set an expression for the box radius in pixels used for blurring the
3801 corresponding input plane.
3802
3803 The radius value must be a non-negative number, and must not be
3804 greater than the value of the expression @code{min(w,h)/2} for the
3805 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
3806 planes.
3807
3808 Default value for @option{luma_radius} is "2". If not specified,
3809 @option{chroma_radius} and @option{alpha_radius} default to the
3810 corresponding value set for @option{luma_radius}.
3811
3812 The expressions can contain the following constants:
3813 @table @option
3814 @item w
3815 @item h
3816 The input width and height in pixels.
3817
3818 @item cw
3819 @item ch
3820 The input chroma image width and height in pixels.
3821
3822 @item hsub
3823 @item vsub
3824 The horizontal and vertical chroma subsample values. For example, for the
3825 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
3826 @end table
3827
3828 @item luma_power, lp
3829 @item chroma_power, cp
3830 @item alpha_power, ap
3831 Specify how many times the boxblur filter is applied to the
3832 corresponding plane.
3833
3834 Default value for @option{luma_power} is 2. If not specified,
3835 @option{chroma_power} and @option{alpha_power} default to the
3836 corresponding value set for @option{luma_power}.
3837
3838 A value of 0 will disable the effect.
3839 @end table
3840
3841 @subsection Examples
3842
3843 @itemize
3844 @item
3845 Apply a boxblur filter with the luma, chroma, and alpha radii
3846 set to 2:
3847 @example
3848 boxblur=luma_radius=2:luma_power=1
3849 boxblur=2:1
3850 @end example
3851
3852 @item
3853 Set the luma radius to 2, and alpha and chroma radius to 0:
3854 @example
3855 boxblur=2:1:cr=0:ar=0
3856 @end example
3857
3858 @item
3859 Set the luma and chroma radii to a fraction of the video dimension:
3860 @example
3861 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
3862 @end example
3863 @end itemize
3864
3865 @section chromakey
3866 YUV colorspace color/chroma keying.
3867
3868 The filter accepts the following options:
3869
3870 @table @option
3871 @item color
3872 The color which will be replaced with transparency.
3873
3874 @item similarity
3875 Similarity percentage with the key color.
3876
3877 0.01 matches only the exact key color, while 1.0 matches everything.
3878
3879 @item blend
3880 Blend percentage.
3881
3882 0.0 makes pixels either fully transparent, or not transparent at all.
3883
3884 Higher values result in semi-transparent pixels, with a higher transparency
3885 the more similar the pixels color is to the key color.
3886
3887 @item yuv
3888 Signals that the color passed is already in YUV instead of RGB.
3889
3890 Litteral colors like "green" or "red" don't make sense with this enabled anymore.
3891 This can be used to pass exact YUV values as hexadecimal numbers.
3892 @end table
3893
3894 @subsection Examples
3895
3896 @itemize
3897 @item
3898 Make every green pixel in the input image transparent:
3899 @example
3900 ffmpeg -i input.png -vf chromakey=green out.png
3901 @end example
3902
3903 @item
3904 Overlay a greenscreen-video on top of a static black background.
3905 @example
3906 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
3907 @end example
3908 @end itemize
3909
3910 @section codecview
3911
3912 Visualize information exported by some codecs.
3913
3914 Some codecs can export information through frames using side-data or other
3915 means. For example, some MPEG based codecs export motion vectors through the
3916 @var{export_mvs} flag in the codec @option{flags2} option.
3917
3918 The filter accepts the following option:
3919
3920 @table @option
3921 @item mv
3922 Set motion vectors to visualize.
3923
3924 Available flags for @var{mv} are:
3925
3926 @table @samp
3927 @item pf
3928 forward predicted MVs of P-frames
3929 @item bf
3930 forward predicted MVs of B-frames
3931 @item bb
3932 backward predicted MVs of B-frames
3933 @end table
3934 @end table
3935
3936 @subsection Examples
3937
3938 @itemize
3939 @item
3940 Visualizes multi-directionals MVs from P and B-Frames using @command{ffplay}:
3941 @example
3942 ffplay -flags2 +export_mvs input.mpg -vf codecview=mv=pf+bf+bb
3943 @end example
3944 @end itemize
3945
3946 @section colorbalance
3947 Modify intensity of primary colors (red, green and blue) of input frames.
3948
3949 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
3950 regions for the red-cyan, green-magenta or blue-yellow balance.
3951
3952 A positive adjustment value shifts the balance towards the primary color, a negative
3953 value towards the complementary color.
3954
3955 The filter accepts the following options:
3956
3957 @table @option
3958 @item rs
3959 @item gs
3960 @item bs
3961 Adjust red, green and blue shadows (darkest pixels).
3962
3963 @item rm
3964 @item gm
3965 @item bm
3966 Adjust red, green and blue midtones (medium pixels).
3967
3968 @item rh
3969 @item gh
3970 @item bh
3971 Adjust red, green and blue highlights (brightest pixels).
3972
3973 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
3974 @end table
3975
3976 @subsection Examples
3977
3978 @itemize
3979 @item
3980 Add red color cast to shadows:
3981 @example
3982 colorbalance=rs=.3
3983 @end example
3984 @end itemize
3985
3986 @section colorkey
3987 RGB colorspace color keying.
3988
3989 The filter accepts the following options:
3990
3991 @table @option
3992 @item color
3993 The color which will be replaced with transparency.
3994
3995 @item similarity
3996 Similarity percentage with the key color.
3997
3998 0.01 matches only the exact key color, while 1.0 matches everything.
3999
4000 @item blend
4001 Blend percentage.
4002
4003 0.0 makes pixels either fully transparent, or not transparent at all.
4004
4005 Higher values result in semi-transparent pixels, with a higher transparency
4006 the more similar the pixels color is to the key color.
4007 @end table
4008
4009 @subsection Examples
4010
4011 @itemize
4012 @item
4013 Make every green pixel in the input image transparent:
4014 @example
4015 ffmpeg -i input.png -vf colorkey=green out.png
4016 @end example
4017
4018 @item
4019 Overlay a greenscreen-video on top of a static background image.
4020 @example
4021 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
4022 @end example
4023 @end itemize
4024
4025 @section colorlevels
4026
4027 Adjust video input frames using levels.
4028
4029 The filter accepts the following options:
4030
4031 @table @option
4032 @item rimin
4033 @item gimin
4034 @item bimin
4035 @item aimin
4036 Adjust red, green, blue and alpha input black point.
4037 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
4038
4039 @item rimax
4040 @item gimax
4041 @item bimax
4042 @item aimax
4043 Adjust red, green, blue and alpha input white point.
4044 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
4045
4046 Input levels are used to lighten highlights (bright tones), darken shadows
4047 (dark tones), change the balance of bright and dark tones.
4048
4049 @item romin
4050 @item gomin
4051 @item bomin
4052 @item aomin
4053 Adjust red, green, blue and alpha output black point.
4054 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
4055
4056 @item romax
4057 @item gomax
4058 @item bomax
4059 @item aomax
4060 Adjust red, green, blue and alpha output white point.
4061 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
4062
4063 Output levels allows manual selection of a constrained output level range.
4064 @end table
4065
4066 @subsection Examples
4067
4068 @itemize
4069 @item
4070 Make video output darker:
4071 @example
4072 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
4073 @end example
4074
4075 @item
4076 Increase contrast:
4077 @example
4078 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
4079 @end example
4080
4081 @item
4082 Make video output lighter:
4083 @example
4084 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
4085 @end example
4086
4087 @item
4088 Increase brightness:
4089 @example
4090 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
4091 @end example
4092 @end itemize
4093
4094 @section colorchannelmixer
4095
4096 Adjust video input frames by re-mixing color channels.
4097
4098 This filter modifies a color channel by adding the values associated to
4099 the other channels of the same pixels. For example if the value to
4100 modify is red, the output value will be:
4101 @example
4102 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
4103 @end example
4104
4105 The filter accepts the following options:
4106
4107 @table @option
4108 @item rr
4109 @item rg
4110 @item rb
4111 @item ra
4112 Adjust contribution of input red, green, blue and alpha channels for output red channel.
4113 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
4114
4115 @item gr
4116 @item gg
4117 @item gb
4118 @item ga
4119 Adjust contribution of input red, green, blue and alpha channels for output green channel.
4120 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
4121
4122 @item br
4123 @item bg
4124 @item bb
4125 @item ba
4126 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
4127 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
4128
4129 @item ar
4130 @item ag
4131 @item ab
4132 @item aa
4133 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
4134 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
4135
4136 Allowed ranges for options are @code{[-2.0, 2.0]}.
4137 @end table
4138
4139 @subsection Examples
4140
4141 @itemize
4142 @item
4143 Convert source to grayscale:
4144 @example
4145 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
4146 @end example
4147 @item
4148 Simulate sepia tones:
4149 @example
4150 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
4151 @end example
4152 @end itemize
4153
4154 @section colormatrix
4155
4156 Convert color matrix.
4157
4158 The filter accepts the following options:
4159
4160 @table @option
4161 @item src
4162 @item dst
4163 Specify the source and destination color matrix. Both values must be
4164 specified.
4165
4166 The accepted values are:
4167 @table @samp
4168 @item bt709
4169 BT.709
4170
4171 @item bt601
4172 BT.601
4173
4174 @item smpte240m
4175 SMPTE-240M
4176
4177 @item fcc
4178 FCC
4179 @end table
4180 @end table
4181
4182 For example to convert from BT.601 to SMPTE-240M, use the command:
4183 @example
4184 colormatrix=bt601:smpte240m
4185 @end example
4186
4187 @section copy
4188
4189 Copy the input source unchanged to the output. This is mainly useful for
4190 testing purposes.
4191
4192 @section crop
4193
4194 Crop the input video to given dimensions.
4195
4196 It accepts the following parameters:
4197
4198 @table @option
4199 @item w, out_w
4200 The width of the output video. It defaults to @code{iw}.
4201 This expression is evaluated only once during the filter
4202 configuration, or when the @samp{w} or @samp{out_w} command is sent.
4203
4204 @item h, out_h
4205 The height of the output video. It defaults to @code{ih}.
4206 This expression is evaluated only once during the filter
4207 configuration, or when the @samp{h} or @samp{out_h} command is sent.
4208
4209 @item x
4210 The horizontal position, in the input video, of the left edge of the output
4211 video. It defaults to @code{(in_w-out_w)/2}.
4212 This expression is evaluated per-frame.
4213
4214 @item y
4215 The vertical position, in the input video, of the top edge of the output video.
4216 It defaults to @code{(in_h-out_h)/2}.
4217 This expression is evaluated per-frame.
4218
4219 @item keep_aspect
4220 If set to 1 will force the output display aspect ratio
4221 to be the same of the input, by changing the output sample aspect
4222 ratio. It defaults to 0.
4223 @end table
4224
4225 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
4226 expressions containing the following constants:
4227
4228 @table @option
4229 @item x
4230 @item y
4231 The computed values for @var{x} and @var{y}. They are evaluated for
4232 each new frame.
4233
4234 @item in_w
4235 @item in_h
4236 The input width and height.
4237
4238 @item iw
4239 @item ih
4240 These are the same as @var{in_w} and @var{in_h}.
4241
4242 @item out_w
4243 @item out_h
4244 The output (cropped) width and height.
4245
4246 @item ow
4247 @item oh
4248 These are the same as @var{out_w} and @var{out_h}.
4249
4250 @item a
4251 same as @var{iw} / @var{ih}
4252
4253 @item sar
4254 input sample aspect ratio
4255
4256 @item dar
4257 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
4258
4259 @item hsub
4260 @item vsub
4261 horizontal and vertical chroma subsample values. For example for the
4262 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
4263
4264 @item n
4265 The number of the input frame, starting from 0.
4266
4267 @item pos
4268 the position in the file of the input frame, NAN if unknown
4269
4270 @item t
4271 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
4272
4273 @end table
4274
4275 The expression for @var{out_w} may depend on the value of @var{out_h},
4276 and the expression for @var{out_h} may depend on @var{out_w}, but they
4277 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
4278 evaluated after @var{out_w} and @var{out_h}.
4279
4280 The @var{x} and @var{y} parameters specify the expressions for the
4281 position of the top-left corner of the output (non-cropped) area. They
4282 are evaluated for each frame. If the evaluated value is not valid, it
4283 is approximated to the nearest valid value.
4284
4285 The expression for @var{x} may depend on @var{y}, and the expression
4286 for @var{y} may depend on @var{x}.
4287
4288 @subsection Examples
4289
4290 @itemize
4291 @item
4292 Crop area with size 100x100 at position (12,34).
4293 @example
4294 crop=100:100:12:34
4295 @end example
4296
4297 Using named options, the example above becomes:
4298 @example
4299 crop=w=100:h=100:x=12:y=34
4300 @end example
4301
4302 @item
4303 Crop the central input area with size 100x100:
4304 @example
4305 crop=100:100
4306 @end example
4307
4308 @item
4309 Crop the central input area with size 2/3 of the input video:
4310 @example
4311 crop=2/3*in_w:2/3*in_h
4312 @end example
4313
4314 @item
4315 Crop the input video central square:
4316 @example
4317 crop=out_w=in_h
4318 crop=in_h
4319 @end example
4320
4321 @item
4322 Delimit the rectangle with the top-left corner placed at position
4323 100:100 and the right-bottom corner corresponding to the right-bottom
4324 corner of the input image.
4325 @example
4326 crop=in_w-100:in_h-100:100:100
4327 @end example
4328
4329 @item
4330 Crop 10 pixels from the left and right borders, and 20 pixels from
4331 the top and bottom borders
4332 @example
4333 crop=in_w-2*10:in_h-2*20
4334 @end example
4335
4336 @item
4337 Keep only the bottom right quarter of the input image:
4338 @example
4339 crop=in_w/2:in_h/2:in_w/2:in_h/2
4340 @end example
4341
4342 @item
4343 Crop height for getting Greek harmony:
4344 @example
4345 crop=in_w:1/PHI*in_w
4346 @end example
4347
4348 @item
4349 Apply trembling effect:
4350 @example
4351 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)
4352 @end example
4353
4354 @item
4355 Apply erratic camera effect depending on timestamp:
4356 @example
4357 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)"
4358 @end example
4359
4360 @item
4361 Set x depending on the value of y:
4362 @example
4363 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
4364 @end example
4365 @end itemize
4366
4367 @subsection Commands
4368
4369 This filter supports the following commands:
4370 @table @option
4371 @item w, out_w
4372 @item h, out_h
4373 @item x
4374 @item y
4375 Set width/height of the output video and the horizontal/vertical position
4376 in the input video.
4377 The command accepts the same syntax of the corresponding option.
4378
4379 If the specified expression is not valid, it is kept at its current
4380 value.
4381 @end table
4382
4383 @section cropdetect
4384
4385 Auto-detect the crop size.
4386
4387 It calculates the necessary cropping parameters and prints the
4388 recommended parameters via the logging system. The detected dimensions
4389 correspond to the non-black area of the input video.
4390
4391 It accepts the following parameters:
4392
4393 @table @option
4394
4395 @item limit
4396 Set higher black value threshold, which can be optionally specified
4397 from nothing (0) to everything (255 for 8bit based formats). An intensity
4398 value greater to the set value is considered non-black. It defaults to 24.
4399 You can also specify a value between 0.0 and 1.0 which will be scaled depending
4400 on the bitdepth of the pixel format.
4401
4402 @item round
4403 The value which the width/height should be divisible by. It defaults to
4404 16. The offset is automatically adjusted to center the video. Use 2 to
4405 get only even dimensions (needed for 4:2:2 video). 16 is best when
4406 encoding to most video codecs.
4407
4408 @item reset_count, reset
4409 Set the counter that determines after how many frames cropdetect will
4410 reset the previously detected largest video area and start over to
4411 detect the current optimal crop area. Default value is 0.
4412
4413 This can be useful when channel logos distort the video area. 0
4414 indicates 'never reset', and returns the largest area encountered during
4415 playback.
4416 @end table
4417
4418 @anchor{curves}
4419 @section curves
4420
4421 Apply color adjustments using curves.
4422
4423 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
4424 component (red, green and blue) has its values defined by @var{N} key points
4425 tied from each other using a smooth curve. The x-axis represents the pixel
4426 values from the input frame, and the y-axis the new pixel values to be set for
4427 the output frame.
4428
4429 By default, a component curve is defined by the two points @var{(0;0)} and
4430 @var{(1;1)}. This creates a straight line where each original pixel value is
4431 "adjusted" to its own value, which means no change to the image.
4432
4433 The filter allows you to redefine these two points and add some more. A new
4434 curve (using a natural cubic spline interpolation) will be define to pass
4435 smoothly through all these new coordinates. The new defined points needs to be
4436 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
4437 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
4438 the vector spaces, the values will be clipped accordingly.
4439
4440 If there is no key point defined in @code{x=0}, the filter will automatically
4441 insert a @var{(0;0)} point. In the same way, if there is no key point defined
4442 in @code{x=1}, the filter will automatically insert a @var{(1;1)} point.
4443
4444 The filter accepts the following options:
4445
4446 @table @option
4447 @item preset
4448 Select one of the available color presets. This option can be used in addition
4449 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
4450 options takes priority on the preset values.
4451 Available presets are:
4452 @table @samp
4453 @item none
4454 @item color_negative
4455 @item cross_process
4456 @item darker
4457 @item increase_contrast
4458 @item lighter
4459 @item linear_contrast
4460 @item medium_contrast
4461 @item negative
4462 @item strong_contrast
4463 @item vintage
4464 @end table
4465 Default is @code{none}.
4466 @item master, m
4467 Set the master key points. These points will define a second pass mapping. It
4468 is sometimes called a "luminance" or "value" mapping. It can be used with
4469 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
4470 post-processing LUT.
4471 @item red, r
4472 Set the key points for the red component.
4473 @item green, g
4474 Set the key points for the green component.
4475 @item blue, b
4476 Set the key points for the blue component.
4477 @item all
4478 Set the key points for all components (not including master).
4479 Can be used in addition to the other key points component
4480 options. In this case, the unset component(s) will fallback on this
4481 @option{all} setting.
4482 @item psfile
4483 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
4484 @end table
4485
4486 To avoid some filtergraph syntax conflicts, each key points list need to be
4487 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
4488
4489 @subsection Examples
4490
4491 @itemize
4492 @item
4493 Increase slightly the middle level of blue:
4494 @example
4495 curves=blue='0.5/0.58'
4496 @end example
4497
4498 @item
4499 Vintage effect:
4500 @example
4501 curves=r='0/0.11 .42/.51 1/0.95':g='0.50/0.48':b='0/0.22 .49/.44 1/0.8'
4502 @end example
4503 Here we obtain the following coordinates for each components:
4504 @table @var
4505 @item red
4506 @code{(0;0.11) (0.42;0.51) (1;0.95)}
4507 @item green
4508 @code{(0;0) (0.50;0.48) (1;1)}
4509 @item blue
4510 @code{(0;0.22) (0.49;0.44) (1;0.80)}
4511 @end table
4512
4513 @item
4514 The previous example can also be achieved with the associated built-in preset:
4515 @example
4516 curves=preset=vintage
4517 @end example
4518
4519 @item
4520 Or simply:
4521 @example
4522 curves=vintage
4523 @end example
4524
4525 @item
4526 Use a Photoshop preset and redefine the points of the green component:
4527 @example
4528 curves=psfile='MyCurvesPresets/purple.acv':green='0.45/0.53'
4529 @end example
4530 @end itemize
4531
4532 @section dctdnoiz
4533
4534 Denoise frames using 2D DCT (frequency domain filtering).
4535
4536 This filter is not designed for real time.
4537
4538 The filter accepts the following options:
4539
4540 @table @option
4541 @item sigma, s
4542 Set the noise sigma constant.
4543
4544 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
4545 coefficient (absolute value) below this threshold with be dropped.
4546
4547 If you need a more advanced filtering, see @option{expr}.
4548
4549 Default is @code{0}.
4550
4551 @item overlap
4552 Set number overlapping pixels for each block. Since the filter can be slow, you
4553 may want to reduce this value, at the cost of a less effective filter and the
4554 risk of various artefacts.
4555
4556 If the overlapping value doesn't permit processing the whole input width or
4557 height, a warning will be displayed and according borders won't be denoised.
4558
4559 Default value is @var{blocksize}-1, which is the best possible setting.
4560
4561 @item expr, e
4562 Set the coefficient factor expression.
4563
4564 For each coefficient of a DCT block, this expression will be evaluated as a
4565 multiplier value for the coefficient.
4566
4567 If this is option is set, the @option{sigma} option will be ignored.
4568
4569 The absolute value of the coefficient can be accessed through the @var{c}
4570 variable.
4571
4572 @item n
4573 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
4574 @var{blocksize}, which is the width and height of the processed blocks.
4575
4576 The default value is @var{3} (8x8) and can be raised to @var{4} for a
4577 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
4578 on the speed processing. Also, a larger block size does not necessarily means a
4579 better de-noising.
4580 @end table
4581
4582 @subsection Examples
4583
4584 Apply a denoise with a @option{sigma} of @code{4.5}:
4585 @example
4586 dctdnoiz=4.5
4587 @end example
4588
4589 The same operation can be achieved using the expression system:
4590 @example
4591 dctdnoiz=e='gte(c, 4.5*3)'
4592 @end example
4593
4594 Violent denoise using a block size of @code{16x16}:
4595 @example
4596 dctdnoiz=15:n=4
4597 @end example
4598
4599 @section deband
4600
4601 Remove banding artifacts from input video.
4602 It works by replacing banded pixels with average value of referenced pixels.
4603
4604 The filter accepts the following options:
4605
4606 @table @option
4607 @item 1thr
4608 @item 2thr
4609 @item 3thr
4610 @item 4thr
4611 Set banding detection threshold for each plane. Default is 0.02.
4612 Valid range is 0.00003 to 0.5.
4613 If difference between current pixel and reference pixel is less than threshold,
4614 it will be considered as banded.
4615
4616 @item range, r
4617 Banding detection range in pixels. Default is 16. If positive, random number
4618 in range 0 to set value will be used. If negative, exact absolute value
4619 will be used.
4620 The range defines square of four pixels around current pixel.
4621
4622 @item direction, d
4623 Set direction in radians from which four pixel will be compared. If positive,
4624 random direction from 0 to set direction will be picked. If negative, exact of
4625 absolute value will be picked. For example direction 0, -PI or -2*PI radians
4626 will pick only pixels on same row and -PI/2 will pick only pixels on same
4627 column.
4628
4629 @item blur
4630 If enabled, current pixel is compared with average value of all four
4631 surrounding pixels. The default is enabled. If disabled current pixel is
4632 compared with all four surrounding pixels. The pixel is considered banded
4633 if only all four differences with surrounding pixels are less than threshold.
4634 @end table
4635
4636 @anchor{decimate}
4637 @section decimate
4638
4639 Drop duplicated frames at regular intervals.
4640
4641 The filter accepts the following options:
4642
4643 @table @option
4644 @item cycle
4645 Set the number of frames from which one will be dropped. Setting this to
4646 @var{N} means one frame in every batch of @var{N} frames will be dropped.
4647 Default is @code{5}.
4648
4649 @item dupthresh
4650 Set the threshold for duplicate detection. If the difference metric for a frame
4651 is less than or equal to this value, then it is declared as duplicate. Default
4652 is @code{1.1}
4653
4654 @item scthresh
4655 Set scene change threshold. Default is @code{15}.
4656
4657 @item blockx
4658 @item blocky
4659 Set the size of the x and y-axis blocks used during metric calculations.
4660 Larger blocks give better noise suppression, but also give worse detection of
4661 small movements. Must be a power of two. Default is @code{32}.
4662
4663 @item ppsrc
4664 Mark main input as a pre-processed input and activate clean source input
4665 stream. This allows the input to be pre-processed with various filters to help
4666 the metrics calculation while keeping the frame selection lossless. When set to
4667 @code{1}, the first stream is for the pre-processed input, and the second
4668 stream is the clean source from where the kept frames are chosen. Default is
4669 @code{0}.
4670
4671 @item chroma
4672 Set whether or not chroma is considered in the metric calculations. Default is
4673 @code{1}.
4674 @end table
4675
4676 @section deflate
4677
4678 Apply deflate effect to the video.
4679
4680 This filter replaces the pixel by the local(3x3) average by taking into account
4681 only values lower than the pixel.
4682
4683 It accepts the following options:
4684
4685 @table @option
4686 @item threshold0
4687 @item threshold1
4688 @item threshold2
4689 @item threshold3
4690 Limit the maximum change for each plane, default is 65535.
4691 If 0, plane will remain unchanged.
4692 @end table
4693
4694 @section dejudder
4695
4696 Remove judder produced by partially interlaced telecined content.
4697
4698 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
4699 source was partially telecined content then the output of @code{pullup,dejudder}
4700 will have a variable frame rate. May change the recorded frame rate of the
4701 container. Aside from that change, this filter will not affect constant frame
4702 rate video.
4703
4704 The option available in this filter is:
4705 @table @option
4706
4707 @item cycle
4708 Specify the length of the window over which the judder repeats.
4709
4710 Accepts any integer greater than 1. Useful values are:
4711 @table @samp
4712
4713 @item 4
4714 If the original was telecined from 24 to 30 fps (Film to NTSC).
4715
4716 @item 5
4717 If the original was telecined from 25 to 30 fps (PAL to NTSC).
4718
4719 @item 20
4720 If a mixture of the two.
4721 @end table
4722
4723 The default is @samp{4}.
4724 @end table
4725
4726 @section delogo
4727
4728 Suppress a TV station logo by a simple interpolation of the surrounding
4729 pixels. Just set a rectangle covering the logo and watch it disappear
4730 (and sometimes something even uglier appear - your mileage may vary).
4731
4732 It accepts the following parameters:
4733 @table @option
4734
4735 @item x
4736 @item y
4737 Specify the top left corner coordinates of the logo. They must be
4738 specified.
4739
4740 @item w
4741 @item h
4742 Specify the width and height of the logo to clear. They must be
4743 specified.
4744
4745 @item band, t
4746 Specify the thickness of the fuzzy edge of the rectangle (added to
4747 @var{w} and @var{h}). The default value is 1. This option is
4748 deprecated, setting higher values should no longer be necessary and
4749 is not recommended.
4750
4751 @item show
4752 When set to 1, a green rectangle is drawn on the screen to simplify
4753 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
4754 The default value is 0.
4755
4756 The rectangle is drawn on the outermost pixels which will be (partly)
4757 replaced with interpolated values. The values of the next pixels
4758 immediately outside this rectangle in each direction will be used to
4759 compute the interpolated pixel values inside the rectangle.
4760
4761 @end table
4762
4763 @subsection Examples
4764
4765 @itemize
4766 @item
4767 Set a rectangle covering the area with top left corner coordinates 0,0
4768 and size 100x77, and a band of size 10:
4769 @example
4770 delogo=x=0:y=0:w=100:h=77:band=10
4771 @end example
4772
4773 @end itemize
4774
4775 @section deshake
4776
4777 Attempt to fix small changes in horizontal and/or vertical shift. This
4778 filter helps remove camera shake from hand-holding a camera, bumping a
4779 tripod, moving on a vehicle, etc.
4780
4781 The filter accepts the following options:
4782
4783 @table @option
4784
4785 @item x
4786 @item y
4787 @item w
4788 @item h
4789 Specify a rectangular area where to limit the search for motion
4790 vectors.
4791 If desired the search for motion vectors can be limited to a
4792 rectangular area of the frame defined by its top left corner, width
4793 and height. These parameters have the same meaning as the drawbox
4794 filter which can be used to visualise the position of the bounding
4795 box.
4796
4797 This is useful when simultaneous movement of subjects within the frame
4798 might be confused for camera motion by the motion vector search.
4799
4800 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
4801 then the full frame is used. This allows later options to be set
4802 without specifying the bounding box for the motion vector search.
4803
4804 Default - search the whole frame.
4805
4806 @item rx
4807 @item ry
4808 Specify the maximum extent of movement in x and y directions in the
4809 range 0-64 pixels. Default 16.
4810
4811 @item edge
4812 Specify how to generate pixels to fill blanks at the edge of the
4813 frame. Available values are:
4814 @table @samp
4815 @item blank, 0
4816 Fill zeroes at blank locations
4817 @item original, 1
4818 Original image at blank locations
4819 @item clamp, 2
4820 Extruded edge value at blank locations
4821 @item mirror, 3
4822 Mirrored edge at blank locations
4823 @end table
4824 Default value is @samp{mirror}.
4825
4826 @item blocksize
4827 Specify the blocksize to use for motion search. Range 4-128 pixels,
4828 default 8.
4829
4830 @item contrast
4831 Specify the contrast threshold for blocks. Only blocks with more than
4832 the specified contrast (difference between darkest and lightest
4833 pixels) will be considered. Range 1-255, default 125.
4834
4835 @item search
4836 Specify the search strategy. Available values are:
4837 @table @samp
4838 @item exhaustive, 0
4839 Set exhaustive search
4840 @item less, 1
4841 Set less exhaustive search.
4842 @end table
4843 Default value is @samp{exhaustive}.
4844
4845 @item filename
4846 If set then a detailed log of the motion search is written to the
4847 specified file.
4848
4849 @item opencl
4850 If set to 1, specify using OpenCL capabilities, only available if
4851 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
4852
4853 @end table
4854
4855 @section detelecine
4856
4857 Apply an exact inverse of the telecine operation. It requires a predefined
4858 pattern specified using the pattern option which must be the same as that passed
4859 to the telecine filter.
4860
4861 This filter accepts the following options:
4862
4863 @table @option
4864 @item first_field
4865 @table @samp
4866 @item top, t
4867 top field first
4868 @item bottom, b
4869 bottom field first
4870 The default value is @code{top}.
4871 @end table
4872
4873 @item pattern
4874 A string of numbers representing the pulldown pattern you wish to apply.
4875 The default value is @code{23}.
4876
4877 @item start_frame
4878 A number representing position of the first frame with respect to the telecine
4879 pattern. This is to be used if the stream is cut. The default value is @code{0}.
4880 @end table
4881
4882 @section dilation
4883
4884 Apply dilation effect to the video.
4885
4886 This filter replaces the pixel by the local(3x3) maximum.
4887
4888 It accepts the following options:
4889
4890 @table @option
4891 @item threshold0
4892 @item threshold1
4893 @item threshold2
4894 @item threshold3
4895 Limit the maximum change for each plane, default is 65535.
4896 If 0, plane will remain unchanged.
4897
4898 @item coordinates
4899 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
4900 pixels are used.
4901
4902 Flags to local 3x3 coordinates maps like this:
4903
4904     1 2 3
4905     4   5
4906     6 7 8
4907 @end table
4908
4909 @section displace
4910
4911 Displace pixels as indicated by second and third input stream.
4912
4913 It takes three input streams and outputs one stream, the first input is the
4914 source, and second and third input are displacement maps.
4915
4916 The second input specifies how much to displace pixels along the
4917 x-axis, while the third input specifies how much to displace pixels
4918 along the y-axis.
4919 If one of displacement map streams terminates, last frame from that
4920 displacement map will be used.
4921
4922 Note that once generated, displacements maps can be reused over and over again.
4923
4924 A description of the accepted options follows.
4925
4926 @table @option
4927 @item edge
4928 Set displace behavior for pixels that are out of range.
4929
4930 Available values are:
4931 @table @samp
4932 @item blank
4933 Missing pixels are replaced by black pixels.
4934
4935 @item smear
4936 Adjacent pixels will spread out to replace missing pixels.
4937
4938 @item wrap
4939 Out of range pixels are wrapped so they point to pixels of other side.
4940 @end table
4941 Default is @samp{smear}.
4942
4943 @end table
4944
4945 @subsection Examples
4946
4947 @itemize
4948 @item
4949 Add ripple effect to rgb input of video size hd720:
4950 @example
4951 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
4952 @end example
4953
4954 @item
4955 Add wave effect to rgb input of video size hd720:
4956 @example
4957 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
4958 @end example
4959 @end itemize
4960
4961 @section drawbox
4962
4963 Draw a colored box on the input image.
4964
4965 It accepts the following parameters:
4966
4967 @table @option
4968 @item x
4969 @item y
4970 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
4971
4972 @item width, w
4973 @item height, h
4974 The expressions which specify the width and height of the box; if 0 they are interpreted as
4975 the input width and height. It defaults to 0.
4976
4977 @item color, c
4978 Specify the color of the box to write. For the general syntax of this option,
4979 check the "Color" section in the ffmpeg-utils manual. If the special
4980 value @code{invert} is used, the box edge color is the same as the
4981 video with inverted luma.
4982
4983 @item thickness, t
4984 The expression which sets the thickness of the box edge. Default value is @code{3}.
4985
4986 See below for the list of accepted constants.
4987 @end table
4988
4989 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
4990 following constants:
4991
4992 @table @option
4993 @item dar
4994 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
4995
4996 @item hsub
4997 @item vsub
4998 horizontal and vertical chroma subsample values. For example for the
4999 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
5000
5001 @item in_h, ih
5002 @item in_w, iw
5003 The input width and height.
5004
5005 @item sar
5006 The input sample aspect ratio.
5007
5008 @item x
5009 @item y
5010 The x and y offset coordinates where the box is drawn.
5011
5012 @item w
5013 @item h
5014 The width and height of the drawn box.
5015
5016 @item t
5017 The thickness of the drawn box.
5018
5019 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
5020 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
5021
5022 @end table
5023
5024 @subsection Examples
5025
5026 @itemize
5027 @item
5028 Draw a black box around the edge of the input image:
5029 @example
5030 drawbox
5031 @end example
5032
5033 @item
5034 Draw a box with color red and an opacity of 50%:
5035 @example
5036 drawbox=10:20:200:60:red@@0.5
5037 @end example
5038
5039 The previous example can be specified as:
5040 @example
5041 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
5042 @end example
5043
5044 @item
5045 Fill the box with pink color:
5046 @example
5047 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=max
5048 @end example
5049
5050 @item
5051 Draw a 2-pixel red 2.40:1 mask:
5052 @example
5053 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
5054 @end example
5055 @end itemize
5056
5057 @section drawgraph, adrawgraph
5058
5059 Draw a graph using input video or audio metadata.
5060
5061 It accepts the following parameters:
5062
5063 @table @option
5064 @item m1
5065 Set 1st frame metadata key from which metadata values will be used to draw a graph.
5066
5067 @item fg1
5068 Set 1st foreground color expression.
5069
5070 @item m2
5071 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
5072
5073 @item fg2
5074 Set 2nd foreground color expression.
5075
5076 @item m3
5077 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
5078
5079 @item fg3
5080 Set 3rd foreground color expression.
5081
5082 @item m4
5083 Set 4th frame metadata key from which metadata values will be used to draw a graph.
5084
5085 @item fg4
5086 Set 4th foreground color expression.
5087
5088 @item min
5089 Set minimal value of metadata value.
5090
5091 @item max
5092 Set maximal value of metadata value.
5093
5094 @item bg
5095 Set graph background color. Default is white.
5096
5097 @item mode
5098 Set graph mode.
5099
5100 Available values for mode is:
5101 @table @samp
5102 @item bar
5103 @item dot
5104 @item line
5105 @end table
5106
5107 Default is @code{line}.
5108
5109 @item slide
5110 Set slide mode.
5111
5112 Available values for slide is:
5113 @table @samp
5114 @item frame
5115 Draw new frame when right border is reached.
5116
5117 @item replace
5118 Replace old columns with new ones.
5119
5120 @item scroll
5121 Scroll from right to left.
5122
5123 @item rscroll
5124 Scroll from left to right.
5125 @end table
5126
5127 Default is @code{frame}.
5128
5129 @item size
5130 Set size of graph video. For the syntax of this option, check the
5131 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
5132 The default value is @code{900x256}.
5133
5134 The foreground color expressions can use the following variables:
5135 @table @option
5136 @item MIN
5137 Minimal value of metadata value.
5138
5139 @item MAX
5140 Maximal value of metadata value.
5141
5142 @item VAL
5143 Current metadata key value.
5144 @end table
5145
5146 The color is defined as 0xAABBGGRR.
5147 @end table
5148
5149 Example using metadata from @ref{signalstats} filter:
5150 @example
5151 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
5152 @end example
5153
5154 Example using metadata from @ref{ebur128} filter:
5155 @example
5156 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
5157 @end example
5158
5159 @section drawgrid
5160
5161 Draw a grid on the input image.
5162
5163 It accepts the following parameters:
5164
5165 @table @option
5166 @item x
5167 @item y
5168 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
5169
5170 @item width, w
5171 @item height, h
5172 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
5173 input width and height, respectively, minus @code{thickness}, so image gets
5174 framed. Default to 0.
5175
5176 @item color, c
5177 Specify the color of the grid. For the general syntax of this option,
5178 check the "Color" section in the ffmpeg-utils manual. If the special
5179 value @code{invert} is used, the grid color is the same as the
5180 video with inverted luma.
5181
5182 @item thickness, t
5183 The expression which sets the thickness of the grid line. Default value is @code{1}.
5184
5185 See below for the list of accepted constants.
5186 @end table
5187
5188 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
5189 following constants:
5190
5191 @table @option
5192 @item dar
5193 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
5194
5195 @item hsub
5196 @item vsub
5197 horizontal and vertical chroma subsample values. For example for the
5198 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
5199
5200 @item in_h, ih
5201 @item in_w, iw
5202 The input grid cell width and height.
5203
5204 @item sar
5205 The input sample aspect ratio.
5206
5207 @item x
5208 @item y
5209 The x and y coordinates of some point of grid intersection (meant to configure offset).
5210
5211 @item w
5212 @item h
5213 The width and height of the drawn cell.
5214
5215 @item t
5216 The thickness of the drawn cell.
5217
5218 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
5219 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
5220
5221 @end table
5222
5223 @subsection Examples
5224
5225 @itemize
5226 @item
5227 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
5228 @example
5229 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
5230 @end example
5231
5232 @item
5233 Draw a white 3x3 grid with an opacity of 50%:
5234 @example
5235 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
5236 @end example
5237 @end itemize
5238
5239 @anchor{drawtext}
5240 @section drawtext
5241
5242 Draw a text string or text from a specified file on top of a video, using the
5243 libfreetype library.
5244
5245 To enable compilation of this filter, you need to configure FFmpeg with
5246 @code{--enable-libfreetype}.
5247 To enable default font fallback and the @var{font} option you need to
5248 configure FFmpeg with @code{--enable-libfontconfig}.
5249 To enable the @var{text_shaping} option, you need to configure FFmpeg with
5250 @code{--enable-libfribidi}.
5251
5252 @subsection Syntax
5253
5254 It accepts the following parameters:
5255
5256 @table @option
5257
5258 @item box
5259 Used to draw a box around text using the background color.
5260 The value must be either 1 (enable) or 0 (disable).
5261 The default value of @var{box} is 0.
5262
5263 @item boxborderw
5264 Set the width of the border to be drawn around the box using @var{boxcolor}.
5265 The default value of @var{boxborderw} is 0.
5266
5267 @item boxcolor
5268 The color to be used for drawing box around text. For the syntax of this
5269 option, check the "Color" section in the ffmpeg-utils manual.
5270
5271 The default value of @var{boxcolor} is "white".
5272
5273 @item borderw
5274 Set the width of the border to be drawn around the text using @var{bordercolor}.
5275 The default value of @var{borderw} is 0.
5276
5277 @item bordercolor
5278 Set the color to be used for drawing border around text. For the syntax of this
5279 option, check the "Color" section in the ffmpeg-utils manual.
5280
5281 The default value of @var{bordercolor} is "black".
5282
5283 @item expansion
5284 Select how the @var{text} is expanded. Can be either @code{none},
5285 @code{strftime} (deprecated) or
5286 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
5287 below for details.
5288
5289 @item fix_bounds
5290 If true, check and fix text coords to avoid clipping.
5291
5292 @item fontcolor
5293 The color to be used for drawing fonts. For the syntax of this option, check
5294 the "Color" section in the ffmpeg-utils manual.
5295
5296 The default value of @var{fontcolor} is "black".
5297
5298 @item fontcolor_expr
5299 String which is expanded the same way as @var{text} to obtain dynamic
5300 @var{fontcolor} value. By default this option has empty value and is not
5301 processed. When this option is set, it overrides @var{fontcolor} option.
5302
5303 @item font
5304 The font family to be used for drawing text. By default Sans.
5305
5306 @item fontfile
5307 The font file to be used for drawing text. The path must be included.
5308 This parameter is mandatory if the fontconfig support is disabled.
5309
5310 @item draw
5311 This option does not exist, please see the timeline system
5312
5313 @item alpha
5314 Draw the text applying alpha blending. The value can
5315 be either a number between 0.0 and 1.0
5316 The expression accepts the same variables @var{x, y} do.
5317 The default value is 1.
5318 Please see fontcolor_expr
5319
5320 @item fontsize
5321 The font size to be used for drawing text.
5322 The default value of @var{fontsize} is 16.
5323
5324 @item text_shaping
5325 If set to 1, attempt to shape the text (for example, reverse the order of
5326 right-to-left text and join Arabic characters) before drawing it.
5327 Otherwise, just draw the text exactly as given.
5328 By default 1 (if supported).
5329
5330 @item ft_load_flags
5331 The flags to be used for loading the fonts.
5332
5333 The flags map the corresponding flags supported by libfreetype, and are
5334 a combination of the following values:
5335 @table @var
5336 @item default
5337 @item no_scale
5338 @item no_hinting
5339 @item render
5340 @item no_bitmap
5341 @item vertical_layout
5342 @item force_autohint
5343 @item crop_bitmap
5344 @item pedantic
5345 @item ignore_global_advance_width
5346 @item no_recurse
5347 @item ignore_transform
5348 @item monochrome
5349 @item linear_design
5350 @item no_autohint
5351 @end table
5352
5353 Default value is "default".
5354
5355 For more information consult the documentation for the FT_LOAD_*
5356 libfreetype flags.
5357
5358 @item shadowcolor
5359 The color to be used for drawing a shadow behind the drawn text. For the
5360 syntax of this option, check the "Color" section in the ffmpeg-utils manual.
5361
5362 The default value of @var{shadowcolor} is "black".
5363
5364 @item shadowx
5365 @item shadowy
5366 The x and y offsets for the text shadow position with respect to the
5367 position of the text. They can be either positive or negative
5368 values. The default value for both is "0".
5369
5370 @item start_number
5371 The starting frame number for the n/frame_num variable. The default value
5372 is "0".
5373
5374 @item tabsize
5375 The size in number of spaces to use for rendering the tab.
5376 Default value is 4.
5377
5378 @item timecode
5379 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
5380 format. It can be used with or without text parameter. @var{timecode_rate}
5381 option must be specified.
5382
5383 @item timecode_rate, rate, r
5384 Set the timecode frame rate (timecode only).
5385
5386 @item text
5387 The text string to be drawn. The text must be a sequence of UTF-8
5388 encoded characters.
5389 This parameter is mandatory if no file is specified with the parameter
5390 @var{textfile}.
5391
5392 @item textfile
5393 A text file containing text to be drawn. The text must be a sequence
5394 of UTF-8 encoded characters.
5395
5396 This parameter is mandatory if no text string is specified with the
5397 parameter @var{text}.
5398
5399 If both @var{text} and @var{textfile} are specified, an error is thrown.
5400
5401 @item reload
5402 If set to 1, the @var{textfile} will be reloaded before each frame.
5403 Be sure to update it atomically, or it may be read partially, or even fail.
5404
5405 @item x
5406 @item y
5407 The expressions which specify the offsets where text will be drawn
5408 within the video frame. They are relative to the top/left border of the
5409 output image.
5410
5411 The default value of @var{x} and @var{y} is "0".
5412
5413 See below for the list of accepted constants and functions.
5414 @end table
5415
5416 The parameters for @var{x} and @var{y} are expressions containing the
5417 following constants and functions:
5418
5419 @table @option
5420 @item dar
5421 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
5422
5423 @item hsub
5424 @item vsub
5425 horizontal and vertical chroma subsample values. For example for the
5426 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
5427
5428 @item line_h, lh
5429 the height of each text line
5430
5431 @item main_h, h, H
5432 the input height
5433
5434 @item main_w, w, W
5435 the input width
5436
5437 @item max_glyph_a, ascent
5438 the maximum distance from the baseline to the highest/upper grid
5439 coordinate used to place a glyph outline point, for all the rendered
5440 glyphs.
5441 It is a positive value, due to the grid's orientation with the Y axis
5442 upwards.
5443
5444 @item max_glyph_d, descent
5445 the maximum distance from the baseline to the lowest grid coordinate
5446 used to place a glyph outline point, for all the rendered glyphs.
5447 This is a negative value, due to the grid's orientation, with the Y axis
5448 upwards.
5449
5450 @item max_glyph_h
5451 maximum glyph height, that is the maximum height for all the glyphs
5452 contained in the rendered text, it is equivalent to @var{ascent} -
5453 @var{descent}.
5454
5455 @item max_glyph_w
5456 maximum glyph width, that is the maximum width for all the glyphs
5457 contained in the rendered text
5458
5459 @item n
5460 the number of input frame, starting from 0
5461
5462 @item rand(min, max)
5463 return a random number included between @var{min} and @var{max}
5464
5465 @item sar
5466 The input sample aspect ratio.
5467
5468 @item t
5469 timestamp expressed in seconds, NAN if the input timestamp is unknown
5470
5471 @item text_h, th
5472 the height of the rendered text
5473
5474 @item text_w, tw
5475 the width of the rendered text
5476
5477 @item x
5478 @item y
5479 the x and y offset coordinates where the text is drawn.
5480
5481 These parameters allow the @var{x} and @var{y} expressions to refer
5482 each other, so you can for example specify @code{y=x/dar}.
5483 @end table
5484
5485 @anchor{drawtext_expansion}
5486 @subsection Text expansion
5487
5488 If @option{expansion} is set to @code{strftime},
5489 the filter recognizes strftime() sequences in the provided text and
5490 expands them accordingly. Check the documentation of strftime(). This
5491 feature is deprecated.
5492
5493 If @option{expansion} is set to @code{none}, the text is printed verbatim.
5494
5495 If @option{expansion} is set to @code{normal} (which is the default),
5496 the following expansion mechanism is used.
5497
5498 The backslash character @samp{\}, followed by any character, always expands to
5499 the second character.
5500
5501 Sequence of the form @code{%@{...@}} are expanded. The text between the
5502 braces is a function name, possibly followed by arguments separated by ':'.
5503 If the arguments contain special characters or delimiters (':' or '@}'),
5504 they should be escaped.
5505
5506 Note that they probably must also be escaped as the value for the
5507 @option{text} option in the filter argument string and as the filter
5508 argument in the filtergraph description, and possibly also for the shell,
5509 that makes up to four levels of escaping; using a text file avoids these
5510 problems.
5511
5512 The following functions are available:
5513
5514 @table @command
5515
5516 @item expr, e
5517 The expression evaluation result.
5518
5519 It must take one argument specifying the expression to be evaluated,
5520 which accepts the same constants and functions as the @var{x} and
5521 @var{y} values. Note that not all constants should be used, for
5522 example the text size is not known when evaluating the expression, so
5523 the constants @var{text_w} and @var{text_h} will have an undefined
5524 value.
5525
5526 @item expr_int_format, eif
5527 Evaluate the expression's value and output as formatted integer.
5528
5529 The first argument is the expression to be evaluated, just as for the @var{expr} function.
5530 The second argument specifies the output format. Allowed values are @samp{x},
5531 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
5532 @code{printf} function.
5533 The third parameter is optional and sets the number of positions taken by the output.
5534 It can be used to add padding with zeros from the left.
5535
5536 @item gmtime
5537 The time at which the filter is running, expressed in UTC.
5538 It can accept an argument: a strftime() format string.
5539
5540 @item localtime
5541 The time at which the filter is running, expressed in the local time zone.
5542 It can accept an argument: a strftime() format string.
5543
5544 @item metadata
5545 Frame metadata. It must take one argument specifying metadata key.
5546
5547 @item n, frame_num
5548 The frame number, starting from 0.
5549
5550 @item pict_type
5551 A 1 character description of the current picture type.
5552
5553 @item pts
5554 The timestamp of the current frame.
5555 It can take up to three arguments.
5556
5557 The first argument is the format of the timestamp; it defaults to @code{flt}
5558 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
5559 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
5560 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
5561 @code{localtime} stands for the timestamp of the frame formatted as
5562 local time zone time.
5563
5564 The second argument is an offset added to the timestamp.
5565
5566 If the format is set to @code{localtime} or @code{gmtime},
5567 a third argument may be supplied: a strftime() format string.
5568 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
5569 @end table
5570
5571 @subsection Examples
5572
5573 @itemize
5574 @item
5575 Draw "Test Text" with font FreeSerif, using the default values for the
5576 optional parameters.
5577
5578 @example
5579 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
5580 @end example
5581
5582 @item
5583 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
5584 and y=50 (counting from the top-left corner of the screen), text is
5585 yellow with a red box around it. Both the text and the box have an
5586 opacity of 20%.
5587
5588 @example
5589 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
5590           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
5591 @end example
5592
5593 Note that the double quotes are not necessary if spaces are not used
5594 within the parameter list.
5595
5596 @item
5597 Show the text at the center of the video frame:
5598 @example
5599 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h-line_h)/2"
5600 @end example
5601
5602 @item
5603 Show a text line sliding from right to left in the last row of the video
5604 frame. The file @file{LONG_LINE} is assumed to contain a single line
5605 with no newlines.
5606 @example
5607 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
5608 @end example
5609
5610 @item
5611 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
5612 @example
5613 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
5614 @end example
5615
5616 @item
5617 Draw a single green letter "g", at the center of the input video.
5618 The glyph baseline is placed at half screen height.
5619 @example
5620 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
5621 @end example
5622
5623 @item
5624 Show text for 1 second every 3 seconds:
5625 @example
5626 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
5627 @end example
5628
5629 @item
5630 Use fontconfig to set the font. Note that the colons need to be escaped.
5631 @example
5632 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
5633 @end example
5634
5635 @item
5636 Print the date of a real-time encoding (see strftime(3)):
5637 @example
5638 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
5639 @end example
5640
5641 @item
5642 Show text fading in and out (appearing/disappearing):
5643 @example
5644 #!/bin/sh
5645 DS=1.0 # display start
5646 DE=10.0 # display end
5647 FID=1.5 # fade in duration
5648 FOD=5 # fade out duration
5649 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 @}"
5650 @end example
5651
5652 @end itemize
5653
5654 For more information about libfreetype, check:
5655 @url{http://www.freetype.org/}.
5656
5657 For more information about fontconfig, check:
5658 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
5659
5660 For more information about libfribidi, check:
5661 @url{http://fribidi.org/}.
5662
5663 @section edgedetect
5664
5665 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
5666
5667 The filter accepts the following options:
5668
5669 @table @option
5670 @item low
5671 @item high
5672 Set low and high threshold values used by the Canny thresholding
5673 algorithm.
5674
5675 The high threshold selects the "strong" edge pixels, which are then
5676 connected through 8-connectivity with the "weak" edge pixels selected
5677 by the low threshold.
5678
5679 @var{low} and @var{high} threshold values must be chosen in the range
5680 [0,1], and @var{low} should be lesser or equal to @var{high}.
5681
5682 Default value for @var{low} is @code{20/255}, and default value for @var{high}
5683 is @code{50/255}.
5684
5685 @item mode
5686 Define the drawing mode.
5687
5688 @table @samp
5689 @item wires
5690 Draw white/gray wires on black background.
5691
5692 @item colormix
5693 Mix the colors to create a paint/cartoon effect.
5694 @end table
5695
5696 Default value is @var{wires}.
5697 @end table
5698
5699 @subsection Examples
5700
5701 @itemize
5702 @item
5703 Standard edge detection with custom values for the hysteresis thresholding:
5704 @example
5705 edgedetect=low=0.1:high=0.4
5706 @end example
5707
5708 @item
5709 Painting effect without thresholding:
5710 @example
5711 edgedetect=mode=colormix:high=0
5712 @end example
5713 @end itemize
5714
5715 @section eq
5716 Set brightness, contrast, saturation and approximate gamma adjustment.
5717
5718 The filter accepts the following options:
5719
5720 @table @option
5721 @item contrast
5722 Set the contrast expression. The value must be a float value in range
5723 @code{-2.0} to @code{2.0}. The default value is "1".
5724
5725 @item brightness
5726 Set the brightness expression. The value must be a float value in
5727 range @code{-1.0} to @code{1.0}. The default value is "0".
5728
5729 @item saturation
5730 Set the saturation expression. The value must be a float in
5731 range @code{0.0} to @code{3.0}. The default value is "1".
5732
5733 @item gamma
5734 Set the gamma expression. The value must be a float in range
5735 @code{0.1} to @code{10.0}.  The default value is "1".
5736
5737 @item gamma_r
5738 Set the gamma expression for red. The value must be a float in
5739 range @code{0.1} to @code{10.0}. The default value is "1".
5740
5741 @item gamma_g
5742 Set the gamma expression for green. The value must be a float in range
5743 @code{0.1} to @code{10.0}. The default value is "1".
5744
5745 @item gamma_b
5746 Set the gamma expression for blue. The value must be a float in range
5747 @code{0.1} to @code{10.0}. The default value is "1".
5748
5749 @item gamma_weight
5750 Set the gamma weight expression. It can be used to reduce the effect
5751 of a high gamma value on bright image areas, e.g. keep them from
5752 getting overamplified and just plain white. The value must be a float
5753 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
5754 gamma correction all the way down while @code{1.0} leaves it at its
5755 full strength. Default is "1".
5756
5757 @item eval
5758 Set when the expressions for brightness, contrast, saturation and
5759 gamma expressions are evaluated.
5760
5761 It accepts the following values:
5762 @table @samp
5763 @item init
5764 only evaluate expressions once during the filter initialization or
5765 when a command is processed
5766
5767 @item frame
5768 evaluate expressions for each incoming frame
5769 @end table
5770
5771 Default value is @samp{init}.
5772 @end table
5773
5774 The expressions accept the following parameters:
5775 @table @option
5776 @item n
5777 frame count of the input frame starting from 0
5778
5779 @item pos
5780 byte position of the corresponding packet in the input file, NAN if
5781 unspecified
5782
5783 @item r
5784 frame rate of the input video, NAN if the input frame rate is unknown
5785
5786 @item t
5787 timestamp expressed in seconds, NAN if the input timestamp is unknown
5788 @end table
5789
5790 @subsection Commands
5791 The filter supports the following commands:
5792
5793 @table @option
5794 @item contrast
5795 Set the contrast expression.
5796
5797 @item brightness
5798 Set the brightness expression.
5799
5800 @item saturation
5801 Set the saturation expression.
5802
5803 @item gamma
5804 Set the gamma expression.
5805
5806 @item gamma_r
5807 Set the gamma_r expression.
5808
5809 @item gamma_g
5810 Set gamma_g expression.
5811
5812 @item gamma_b
5813 Set gamma_b expression.
5814
5815 @item gamma_weight
5816 Set gamma_weight expression.
5817
5818 The command accepts the same syntax of the corresponding option.
5819
5820 If the specified expression is not valid, it is kept at its current
5821 value.
5822
5823 @end table
5824
5825 @section erosion
5826
5827 Apply erosion effect to the video.
5828
5829 This filter replaces the pixel by the local(3x3) minimum.
5830
5831 It accepts the following options:
5832
5833 @table @option
5834 @item threshold0
5835 @item threshold1
5836 @item threshold2
5837 @item threshold3
5838 Limit the maximum change for each plane, default is 65535.
5839 If 0, plane will remain unchanged.
5840
5841 @item coordinates
5842 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
5843 pixels are used.
5844
5845 Flags to local 3x3 coordinates maps like this:
5846
5847     1 2 3
5848     4   5
5849     6 7 8
5850 @end table
5851
5852 @section extractplanes
5853
5854 Extract color channel components from input video stream into
5855 separate grayscale video streams.
5856
5857 The filter accepts the following option:
5858
5859 @table @option
5860 @item planes
5861 Set plane(s) to extract.
5862
5863 Available values for planes are:
5864 @table @samp
5865 @item y
5866 @item u
5867 @item v
5868 @item a
5869 @item r
5870 @item g
5871 @item b
5872 @end table
5873
5874 Choosing planes not available in the input will result in an error.
5875 That means you cannot select @code{r}, @code{g}, @code{b} planes
5876 with @code{y}, @code{u}, @code{v} planes at same time.
5877 @end table
5878
5879 @subsection Examples
5880
5881 @itemize
5882 @item
5883 Extract luma, u and v color channel component from input video frame
5884 into 3 grayscale outputs:
5885 @example
5886 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
5887 @end example
5888 @end itemize
5889
5890 @section elbg
5891
5892 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
5893
5894 For each input image, the filter will compute the optimal mapping from
5895 the input to the output given the codebook length, that is the number
5896 of distinct output colors.
5897
5898 This filter accepts the following options.
5899
5900 @table @option
5901 @item codebook_length, l
5902 Set codebook length. The value must be a positive integer, and
5903 represents the number of distinct output colors. Default value is 256.
5904
5905 @item nb_steps, n
5906 Set the maximum number of iterations to apply for computing the optimal
5907 mapping. The higher the value the better the result and the higher the
5908 computation time. Default value is 1.
5909
5910 @item seed, s
5911 Set a random seed, must be an integer included between 0 and
5912 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
5913 will try to use a good random seed on a best effort basis.
5914
5915 @item pal8
5916 Set pal8 output pixel format. This option does not work with codebook
5917 length greater than 256.
5918 @end table
5919
5920 @section fade
5921
5922 Apply a fade-in/out effect to the input video.
5923
5924 It accepts the following parameters:
5925
5926 @table @option
5927 @item type, t
5928 The effect type can be either "in" for a fade-in, or "out" for a fade-out
5929 effect.
5930 Default is @code{in}.
5931
5932 @item start_frame, s
5933 Specify the number of the frame to start applying the fade
5934 effect at. Default is 0.
5935
5936 @item nb_frames, n
5937 The number of frames that the fade effect lasts. At the end of the
5938 fade-in effect, the output video will have the same intensity as the input video.
5939 At the end of the fade-out transition, the output video will be filled with the
5940 selected @option{color}.
5941 Default is 25.
5942
5943 @item alpha
5944 If set to 1, fade only alpha channel, if one exists on the input.
5945 Default value is 0.
5946
5947 @item start_time, st
5948 Specify the timestamp (in seconds) of the frame to start to apply the fade
5949 effect. If both start_frame and start_time are specified, the fade will start at
5950 whichever comes last.  Default is 0.
5951
5952 @item duration, d
5953 The number of seconds for which the fade effect has to last. At the end of the
5954 fade-in effect the output video will have the same intensity as the input video,
5955 at the end of the fade-out transition the output video will be filled with the
5956 selected @option{color}.
5957 If both duration and nb_frames are specified, duration is used. Default is 0
5958 (nb_frames is used by default).
5959
5960 @item color, c
5961 Specify the color of the fade. Default is "black".
5962 @end table
5963
5964 @subsection Examples
5965
5966 @itemize
5967 @item
5968 Fade in the first 30 frames of video:
5969 @example
5970 fade=in:0:30
5971 @end example
5972
5973 The command above is equivalent to:
5974 @example
5975 fade=t=in:s=0:n=30
5976 @end example
5977
5978 @item
5979 Fade out the last 45 frames of a 200-frame video:
5980 @example
5981 fade=out:155:45
5982 fade=type=out:start_frame=155:nb_frames=45
5983 @end example
5984
5985 @item
5986 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
5987 @example
5988 fade=in:0:25, fade=out:975:25
5989 @end example
5990
5991 @item
5992 Make the first 5 frames yellow, then fade in from frame 5-24:
5993 @example
5994 fade=in:5:20:color=yellow
5995 @end example
5996
5997 @item
5998 Fade in alpha over first 25 frames of video:
5999 @example
6000 fade=in:0:25:alpha=1
6001 @end example
6002
6003 @item
6004 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
6005 @example
6006 fade=t=in:st=5.5:d=0.5
6007 @end example
6008
6009 @end itemize
6010
6011 @section fftfilt
6012 Apply arbitrary expressions to samples in frequency domain
6013
6014 @table @option
6015 @item dc_Y
6016 Adjust the dc value (gain) of the luma plane of the image. The filter
6017 accepts an integer value in range @code{0} to @code{1000}. The default
6018 value is set to @code{0}.
6019
6020 @item dc_U
6021 Adjust the dc value (gain) of the 1st chroma plane of the image. The
6022 filter accepts an integer value in range @code{0} to @code{1000}. The
6023 default value is set to @code{0}.
6024
6025 @item dc_V
6026 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
6027 filter accepts an integer value in range @code{0} to @code{1000}. The
6028 default value is set to @code{0}.
6029
6030 @item weight_Y
6031 Set the frequency domain weight expression for the luma plane.
6032
6033 @item weight_U
6034 Set the frequency domain weight expression for the 1st chroma plane.
6035
6036 @item weight_V
6037 Set the frequency domain weight expression for the 2nd chroma plane.
6038
6039 The filter accepts the following variables:
6040 @item X
6041 @item Y
6042 The coordinates of the current sample.
6043
6044 @item W
6045 @item H
6046 The width and height of the image.
6047 @end table
6048
6049 @subsection Examples
6050
6051 @itemize
6052 @item
6053 High-pass:
6054 @example
6055 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
6056 @end example
6057
6058 @item
6059 Low-pass:
6060 @example
6061 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
6062 @end example
6063
6064 @item
6065 Sharpen:
6066 @example
6067 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
6068 @end example
6069
6070 @end itemize
6071
6072 @section field
6073
6074 Extract a single field from an interlaced image using stride
6075 arithmetic to avoid wasting CPU time. The output frames are marked as
6076 non-interlaced.
6077
6078 The filter accepts the following options:
6079
6080 @table @option
6081 @item type
6082 Specify whether to extract the top (if the value is @code{0} or
6083 @code{top}) or the bottom field (if the value is @code{1} or
6084 @code{bottom}).
6085 @end table
6086
6087 @section fieldmatch
6088
6089 Field matching filter for inverse telecine. It is meant to reconstruct the
6090 progressive frames from a telecined stream. The filter does not drop duplicated
6091 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
6092 followed by a decimation filter such as @ref{decimate} in the filtergraph.
6093
6094 The separation of the field matching and the decimation is notably motivated by
6095 the possibility of inserting a de-interlacing filter fallback between the two.
6096 If the source has mixed telecined and real interlaced content,
6097 @code{fieldmatch} will not be able to match fields for the interlaced parts.
6098 But these remaining combed frames will be marked as interlaced, and thus can be
6099 de-interlaced by a later filter such as @ref{yadif} before decimation.
6100
6101 In addition to the various configuration options, @code{fieldmatch} can take an
6102 optional second stream, activated through the @option{ppsrc} option. If
6103 enabled, the frames reconstruction will be based on the fields and frames from
6104 this second stream. This allows the first input to be pre-processed in order to
6105 help the various algorithms of the filter, while keeping the output lossless
6106 (assuming the fields are matched properly). Typically, a field-aware denoiser,
6107 or brightness/contrast adjustments can help.
6108
6109 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
6110 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
6111 which @code{fieldmatch} is based on. While the semantic and usage are very
6112 close, some behaviour and options names can differ.
6113
6114 The @ref{decimate} filter currently only works for constant frame rate input.
6115 If your input has mixed telecined (30fps) and progressive content with a lower
6116 framerate like 24fps use the following filterchain to produce the necessary cfr
6117 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
6118
6119 The filter accepts the following options:
6120
6121 @table @option
6122 @item order
6123 Specify the assumed field order of the input stream. Available values are:
6124
6125 @table @samp
6126 @item auto
6127 Auto detect parity (use FFmpeg's internal parity value).
6128 @item bff
6129 Assume bottom field first.
6130 @item tff
6131 Assume top field first.
6132 @end table
6133
6134 Note that it is sometimes recommended not to trust the parity announced by the
6135 stream.
6136
6137 Default value is @var{auto}.
6138
6139 @item mode
6140 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
6141 sense that it won't risk creating jerkiness due to duplicate frames when
6142 possible, but if there are bad edits or blended fields it will end up
6143 outputting combed frames when a good match might actually exist. On the other
6144 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
6145 but will almost always find a good frame if there is one. The other values are
6146 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
6147 jerkiness and creating duplicate frames versus finding good matches in sections
6148 with bad edits, orphaned fields, blended fields, etc.
6149
6150 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
6151
6152 Available values are:
6153
6154 @table @samp
6155 @item pc
6156 2-way matching (p/c)
6157 @item pc_n
6158 2-way matching, and trying 3rd match if still combed (p/c + n)
6159 @item pc_u
6160 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
6161 @item pc_n_ub
6162 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
6163 still combed (p/c + n + u/b)
6164 @item pcn
6165 3-way matching (p/c/n)
6166 @item pcn_ub
6167 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
6168 detected as combed (p/c/n + u/b)
6169 @end table
6170
6171 The parenthesis at the end indicate the matches that would be used for that
6172 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
6173 @var{top}).
6174
6175 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
6176 the slowest.
6177
6178 Default value is @var{pc_n}.
6179
6180 @item ppsrc
6181 Mark the main input stream as a pre-processed input, and enable the secondary
6182 input stream as the clean source to pick the fields from. See the filter
6183 introduction for more details. It is similar to the @option{clip2} feature from
6184 VFM/TFM.
6185
6186 Default value is @code{0} (disabled).
6187
6188 @item field
6189 Set the field to match from. It is recommended to set this to the same value as
6190 @option{order} unless you experience matching failures with that setting. In
6191 certain circumstances changing the field that is used to match from can have a
6192 large impact on matching performance. Available values are:
6193
6194 @table @samp
6195 @item auto
6196 Automatic (same value as @option{order}).
6197 @item bottom
6198 Match from the bottom field.
6199 @item top
6200 Match from the top field.
6201 @end table
6202
6203 Default value is @var{auto}.
6204
6205 @item mchroma
6206 Set whether or not chroma is included during the match comparisons. In most
6207 cases it is recommended to leave this enabled. You should set this to @code{0}
6208 only if your clip has bad chroma problems such as heavy rainbowing or other
6209 artifacts. Setting this to @code{0} could also be used to speed things up at
6210 the cost of some accuracy.
6211
6212 Default value is @code{1}.
6213
6214 @item y0
6215 @item y1
6216 These define an exclusion band which excludes the lines between @option{y0} and
6217 @option{y1} from being included in the field matching decision. An exclusion
6218 band can be used to ignore subtitles, a logo, or other things that may
6219 interfere with the matching. @option{y0} sets the starting scan line and
6220 @option{y1} sets the ending line; all lines in between @option{y0} and
6221 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
6222 @option{y0} and @option{y1} to the same value will disable the feature.
6223 @option{y0} and @option{y1} defaults to @code{0}.
6224
6225 @item scthresh
6226 Set the scene change detection threshold as a percentage of maximum change on
6227 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
6228 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
6229 @option{scthresh} is @code{[0.0, 100.0]}.
6230
6231 Default value is @code{12.0}.
6232
6233 @item combmatch
6234 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
6235 account the combed scores of matches when deciding what match to use as the
6236 final match. Available values are:
6237
6238 @table @samp
6239 @item none
6240 No final matching based on combed scores.
6241 @item sc
6242 Combed scores are only used when a scene change is detected.
6243 @item full
6244 Use combed scores all the time.
6245 @end table
6246
6247 Default is @var{sc}.
6248
6249 @item combdbg
6250 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
6251 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
6252 Available values are:
6253
6254 @table @samp
6255 @item none
6256 No forced calculation.
6257 @item pcn
6258 Force p/c/n calculations.
6259 @item pcnub
6260 Force p/c/n/u/b calculations.
6261 @end table
6262
6263 Default value is @var{none}.
6264
6265 @item cthresh
6266 This is the area combing threshold used for combed frame detection. This
6267 essentially controls how "strong" or "visible" combing must be to be detected.
6268 Larger values mean combing must be more visible and smaller values mean combing
6269 can be less visible or strong and still be detected. Valid settings are from
6270 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
6271 be detected as combed). This is basically a pixel difference value. A good
6272 range is @code{[8, 12]}.
6273
6274 Default value is @code{9}.
6275
6276 @item chroma
6277 Sets whether or not chroma is considered in the combed frame decision.  Only
6278 disable this if your source has chroma problems (rainbowing, etc.) that are
6279 causing problems for the combed frame detection with chroma enabled. Actually,
6280 using @option{chroma}=@var{0} is usually more reliable, except for the case
6281 where there is chroma only combing in the source.
6282
6283 Default value is @code{0}.
6284
6285 @item blockx
6286 @item blocky
6287 Respectively set the x-axis and y-axis size of the window used during combed
6288 frame detection. This has to do with the size of the area in which
6289 @option{combpel} pixels are required to be detected as combed for a frame to be
6290 declared combed. See the @option{combpel} parameter description for more info.
6291 Possible values are any number that is a power of 2 starting at 4 and going up
6292 to 512.
6293
6294 Default value is @code{16}.
6295
6296 @item combpel
6297 The number of combed pixels inside any of the @option{blocky} by
6298 @option{blockx} size blocks on the frame for the frame to be detected as
6299 combed. While @option{cthresh} controls how "visible" the combing must be, this
6300 setting controls "how much" combing there must be in any localized area (a
6301 window defined by the @option{blockx} and @option{blocky} settings) on the
6302 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
6303 which point no frames will ever be detected as combed). This setting is known
6304 as @option{MI} in TFM/VFM vocabulary.
6305
6306 Default value is @code{80}.
6307 @end table
6308
6309 @anchor{p/c/n/u/b meaning}
6310 @subsection p/c/n/u/b meaning
6311
6312 @subsubsection p/c/n
6313
6314 We assume the following telecined stream:
6315
6316 @example
6317 Top fields:     1 2 2 3 4
6318 Bottom fields:  1 2 3 4 4
6319 @end example
6320
6321 The numbers correspond to the progressive frame the fields relate to. Here, the
6322 first two frames are progressive, the 3rd and 4th are combed, and so on.
6323
6324 When @code{fieldmatch} is configured to run a matching from bottom
6325 (@option{field}=@var{bottom}) this is how this input stream get transformed:
6326
6327 @example
6328 Input stream:
6329                 T     1 2 2 3 4
6330                 B     1 2 3 4 4   <-- matching reference
6331
6332 Matches:              c c n n c
6333
6334 Output stream:
6335                 T     1 2 3 4 4
6336                 B     1 2 3 4 4
6337 @end example
6338
6339 As a result of the field matching, we can see that some frames get duplicated.
6340 To perform a complete inverse telecine, you need to rely on a decimation filter
6341 after this operation. See for instance the @ref{decimate} filter.
6342
6343 The same operation now matching from top fields (@option{field}=@var{top})
6344 looks like this:
6345
6346 @example
6347 Input stream:
6348                 T     1 2 2 3 4   <-- matching reference
6349                 B     1 2 3 4 4
6350
6351 Matches:              c c p p c
6352
6353 Output stream:
6354                 T     1 2 2 3 4
6355                 B     1 2 2 3 4
6356 @end example
6357
6358 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
6359 basically, they refer to the frame and field of the opposite parity:
6360
6361 @itemize
6362 @item @var{p} matches the field of the opposite parity in the previous frame
6363 @item @var{c} matches the field of the opposite parity in the current frame
6364 @item @var{n} matches the field of the opposite parity in the next frame
6365 @end itemize
6366
6367 @subsubsection u/b
6368
6369 The @var{u} and @var{b} matching are a bit special in the sense that they match
6370 from the opposite parity flag. In the following examples, we assume that we are
6371 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
6372 'x' is placed above and below each matched fields.
6373
6374 With bottom matching (@option{field}=@var{bottom}):
6375 @example
6376 Match:           c         p           n          b          u
6377
6378                  x       x               x        x          x
6379   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
6380   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
6381                  x         x           x        x              x
6382
6383 Output frames:
6384                  2          1          2          2          2
6385                  2          2          2          1          3
6386 @end example
6387
6388 With top matching (@option{field}=@var{top}):
6389 @example
6390 Match:           c         p           n          b          u
6391
6392                  x         x           x        x              x
6393   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
6394   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
6395                  x       x               x        x          x
6396
6397 Output frames:
6398                  2          2          2          1          2
6399                  2          1          3          2          2
6400 @end example
6401
6402 @subsection Examples
6403
6404 Simple IVTC of a top field first telecined stream:
6405 @example
6406 fieldmatch=order=tff:combmatch=none, decimate
6407 @end example
6408
6409 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
6410 @example
6411 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
6412 @end example
6413
6414 @section fieldorder
6415
6416 Transform the field order of the input video.
6417
6418 It accepts the following parameters:
6419
6420 @table @option
6421
6422 @item order
6423 The output field order. Valid values are @var{tff} for top field first or @var{bff}
6424 for bottom field first.
6425 @end table
6426
6427 The default value is @samp{tff}.
6428
6429 The transformation is done by shifting the picture content up or down
6430 by one line, and filling the remaining line with appropriate picture content.
6431 This method is consistent with most broadcast field order converters.
6432
6433 If the input video is not flagged as being interlaced, or it is already
6434 flagged as being of the required output field order, then this filter does
6435 not alter the incoming video.
6436
6437 It is very useful when converting to or from PAL DV material,
6438 which is bottom field first.
6439
6440 For example:
6441 @example
6442 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
6443 @end example
6444
6445 @section fifo, afifo
6446
6447 Buffer input images and send them when they are requested.
6448
6449 It is mainly useful when auto-inserted by the libavfilter
6450 framework.
6451
6452 It does not take parameters.
6453
6454 @section find_rect
6455
6456 Find a rectangular object
6457
6458 It accepts the following options:
6459
6460 @table @option
6461 @item object
6462 Filepath of the object image, needs to be in gray8.
6463
6464 @item threshold
6465 Detection threshold, default is 0.5.
6466
6467 @item mipmaps
6468 Number of mipmaps, default is 3.
6469
6470 @item xmin, ymin, xmax, ymax
6471 Specifies the rectangle in which to search.
6472 @end table
6473
6474 @subsection Examples
6475
6476 @itemize
6477 @item
6478 Generate a representative palette of a given video using @command{ffmpeg}:
6479 @example
6480 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
6481 @end example
6482 @end itemize
6483
6484 @section cover_rect
6485
6486 Cover a rectangular object
6487
6488 It accepts the following options:
6489
6490 @table @option
6491 @item cover
6492 Filepath of the optional cover image, needs to be in yuv420.
6493
6494 @item mode
6495 Set covering mode.
6496
6497 It accepts the following values:
6498 @table @samp
6499 @item cover
6500 cover it by the supplied image
6501 @item blur
6502 cover it by interpolating the surrounding pixels
6503 @end table
6504
6505 Default value is @var{blur}.
6506 @end table
6507
6508 @subsection Examples
6509
6510 @itemize
6511 @item
6512 Generate a representative palette of a given video using @command{ffmpeg}:
6513 @example
6514 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
6515 @end example
6516 @end itemize
6517
6518 @anchor{format}
6519 @section format
6520
6521 Convert the input video to one of the specified pixel formats.
6522 Libavfilter will try to pick one that is suitable as input to
6523 the next filter.
6524
6525 It accepts the following parameters:
6526 @table @option
6527
6528 @item pix_fmts
6529 A '|'-separated list of pixel format names, such as
6530 "pix_fmts=yuv420p|monow|rgb24".
6531
6532 @end table
6533
6534 @subsection Examples
6535
6536 @itemize
6537 @item
6538 Convert the input video to the @var{yuv420p} format
6539 @example
6540 format=pix_fmts=yuv420p
6541 @end example
6542
6543 Convert the input video to any of the formats in the list
6544 @example
6545 format=pix_fmts=yuv420p|yuv444p|yuv410p
6546 @end example
6547 @end itemize
6548
6549 @anchor{fps}
6550 @section fps
6551
6552 Convert the video to specified constant frame rate by duplicating or dropping
6553 frames as necessary.
6554
6555 It accepts the following parameters:
6556 @table @option
6557
6558 @item fps
6559 The desired output frame rate. The default is @code{25}.
6560
6561 @item round
6562 Rounding method.
6563
6564 Possible values are:
6565 @table @option
6566 @item zero
6567 zero round towards 0
6568 @item inf
6569 round away from 0
6570 @item down
6571 round towards -infinity
6572 @item up
6573 round towards +infinity
6574 @item near
6575 round to nearest
6576 @end table
6577 The default is @code{near}.
6578
6579 @item start_time
6580 Assume the first PTS should be the given value, in seconds. This allows for
6581 padding/trimming at the start of stream. By default, no assumption is made
6582 about the first frame's expected PTS, so no padding or trimming is done.
6583 For example, this could be set to 0 to pad the beginning with duplicates of
6584 the first frame if a video stream starts after the audio stream or to trim any
6585 frames with a negative PTS.
6586
6587 @end table
6588
6589 Alternatively, the options can be specified as a flat string:
6590 @var{fps}[:@var{round}].
6591
6592 See also the @ref{setpts} filter.
6593
6594 @subsection Examples
6595
6596 @itemize
6597 @item
6598 A typical usage in order to set the fps to 25:
6599 @example
6600 fps=fps=25
6601 @end example
6602
6603 @item
6604 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
6605 @example
6606 fps=fps=film:round=near
6607 @end example
6608 @end itemize
6609
6610 @section framepack
6611
6612 Pack two different video streams into a stereoscopic video, setting proper
6613 metadata on supported codecs. The two views should have the same size and
6614 framerate and processing will stop when the shorter video ends. Please note
6615 that you may conveniently adjust view properties with the @ref{scale} and
6616 @ref{fps} filters.
6617
6618 It accepts the following parameters:
6619 @table @option
6620
6621 @item format
6622 The desired packing format. Supported values are:
6623
6624 @table @option
6625
6626 @item sbs
6627 The views are next to each other (default).
6628
6629 @item tab
6630 The views are on top of each other.
6631
6632 @item lines
6633 The views are packed by line.
6634
6635 @item columns
6636 The views are packed by column.
6637
6638 @item frameseq
6639 The views are temporally interleaved.
6640
6641 @end table
6642
6643 @end table
6644
6645 Some examples:
6646
6647 @example
6648 # Convert left and right views into a frame-sequential video
6649 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
6650
6651 # Convert views into a side-by-side video with the same output resolution as the input
6652 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
6653 @end example
6654
6655 @section framerate
6656
6657 Change the frame rate by interpolating new video output frames from the source
6658 frames.
6659
6660 This filter is not designed to function correctly with interlaced media. If
6661 you wish to change the frame rate of interlaced media then you are required
6662 to deinterlace before this filter and re-interlace after this filter.
6663
6664 A description of the accepted options follows.
6665
6666 @table @option
6667 @item fps
6668 Specify the output frames per second. This option can also be specified
6669 as a value alone. The default is @code{50}.
6670
6671 @item interp_start
6672 Specify the start of a range where the output frame will be created as a
6673 linear interpolation of two frames. The range is [@code{0}-@code{255}],
6674 the default is @code{15}.
6675
6676 @item interp_end
6677 Specify the end of a range where the output frame will be created as a
6678 linear interpolation of two frames. The range is [@code{0}-@code{255}],
6679 the default is @code{240}.
6680
6681 @item scene
6682 Specify the level at which a scene change is detected as a value between
6683 0 and 100 to indicate a new scene; a low value reflects a low
6684 probability for the current frame to introduce a new scene, while a higher
6685 value means the current frame is more likely to be one.
6686 The default is @code{7}.
6687
6688 @item flags
6689 Specify flags influencing the filter process.
6690
6691 Available value for @var{flags} is:
6692
6693 @table @option
6694 @item scene_change_detect, scd
6695 Enable scene change detection using the value of the option @var{scene}.
6696 This flag is enabled by default.
6697 @end table
6698 @end table
6699
6700 @section framestep
6701
6702 Select one frame every N-th frame.
6703
6704 This filter accepts the following option:
6705 @table @option
6706 @item step
6707 Select frame after every @code{step} frames.
6708 Allowed values are positive integers higher than 0. Default value is @code{1}.
6709 @end table
6710
6711 @anchor{frei0r}
6712 @section frei0r
6713
6714 Apply a frei0r effect to the input video.
6715
6716 To enable the compilation of this filter, you need to install the frei0r
6717 header and configure FFmpeg with @code{--enable-frei0r}.
6718
6719 It accepts the following parameters:
6720
6721 @table @option
6722
6723 @item filter_name
6724 The name of the frei0r effect to load. If the environment variable
6725 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
6726 directories specified by the colon-separated list in @env{FREIOR_PATH}.
6727 Otherwise, the standard frei0r paths are searched, in this order:
6728 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
6729 @file{/usr/lib/frei0r-1/}.
6730
6731 @item filter_params
6732 A '|'-separated list of parameters to pass to the frei0r effect.
6733
6734 @end table
6735
6736 A frei0r effect parameter can be a boolean (its value is either
6737 "y" or "n"), a double, a color (specified as
6738 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
6739 numbers between 0.0 and 1.0, inclusive) or by a color description specified in the "Color"
6740 section in the ffmpeg-utils manual), a position (specified as @var{X}/@var{Y}, where
6741 @var{X} and @var{Y} are floating point numbers) and/or a string.
6742
6743 The number and types of parameters depend on the loaded effect. If an
6744 effect parameter is not specified, the default value is set.
6745
6746 @subsection Examples
6747
6748 @itemize
6749 @item
6750 Apply the distort0r effect, setting the first two double parameters:
6751 @example
6752 frei0r=filter_name=distort0r:filter_params=0.5|0.01
6753 @end example
6754
6755 @item
6756 Apply the colordistance effect, taking a color as the first parameter:
6757 @example
6758 frei0r=colordistance:0.2/0.3/0.4
6759 frei0r=colordistance:violet
6760 frei0r=colordistance:0x112233
6761 @end example
6762
6763 @item
6764 Apply the perspective effect, specifying the top left and top right image
6765 positions:
6766 @example
6767 frei0r=perspective:0.2/0.2|0.8/0.2
6768 @end example
6769 @end itemize
6770
6771 For more information, see
6772 @url{http://frei0r.dyne.org}
6773
6774 @section fspp
6775
6776 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
6777
6778 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
6779 processing filter, one of them is performed once per block, not per pixel.
6780 This allows for much higher speed.
6781
6782 The filter accepts the following options:
6783
6784 @table @option
6785 @item quality
6786 Set quality. This option defines the number of levels for averaging. It accepts
6787 an integer in the range 4-5. Default value is @code{4}.
6788
6789 @item qp
6790 Force a constant quantization parameter. It accepts an integer in range 0-63.
6791 If not set, the filter will use the QP from the video stream (if available).
6792
6793 @item strength
6794 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
6795 more details but also more artifacts, while higher values make the image smoother
6796 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
6797
6798 @item use_bframe_qp
6799 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
6800 option may cause flicker since the B-Frames have often larger QP. Default is
6801 @code{0} (not enabled).
6802
6803 @end table
6804
6805 @section geq
6806
6807 The filter accepts the following options:
6808
6809 @table @option
6810 @item lum_expr, lum
6811 Set the luminance expression.
6812 @item cb_expr, cb
6813 Set the chrominance blue expression.
6814 @item cr_expr, cr
6815 Set the chrominance red expression.
6816 @item alpha_expr, a
6817 Set the alpha expression.
6818 @item red_expr, r
6819 Set the red expression.
6820 @item green_expr, g
6821 Set the green expression.
6822 @item blue_expr, b
6823 Set the blue expression.
6824 @end table
6825
6826 The colorspace is selected according to the specified options. If one
6827 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
6828 options is specified, the filter will automatically select a YCbCr
6829 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
6830 @option{blue_expr} options is specified, it will select an RGB
6831 colorspace.
6832
6833 If one of the chrominance expression is not defined, it falls back on the other
6834 one. If no alpha expression is specified it will evaluate to opaque value.
6835 If none of chrominance expressions are specified, they will evaluate
6836 to the luminance expression.
6837
6838 The expressions can use the following variables and functions:
6839
6840 @table @option
6841 @item N
6842 The sequential number of the filtered frame, starting from @code{0}.
6843
6844 @item X
6845 @item Y
6846 The coordinates of the current sample.
6847
6848 @item W
6849 @item H
6850 The width and height of the image.
6851
6852 @item SW
6853 @item SH
6854 Width and height scale depending on the currently filtered plane. It is the
6855 ratio between the corresponding luma plane number of pixels and the current
6856 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
6857 @code{0.5,0.5} for chroma planes.
6858
6859 @item T
6860 Time of the current frame, expressed in seconds.
6861
6862 @item p(x, y)
6863 Return the value of the pixel at location (@var{x},@var{y}) of the current
6864 plane.
6865
6866 @item lum(x, y)
6867 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
6868 plane.
6869
6870 @item cb(x, y)
6871 Return the value of the pixel at location (@var{x},@var{y}) of the
6872 blue-difference chroma plane. Return 0 if there is no such plane.
6873
6874 @item cr(x, y)
6875 Return the value of the pixel at location (@var{x},@var{y}) of the
6876 red-difference chroma plane. Return 0 if there is no such plane.
6877
6878 @item r(x, y)
6879 @item g(x, y)
6880 @item b(x, y)
6881 Return the value of the pixel at location (@var{x},@var{y}) of the
6882 red/green/blue component. Return 0 if there is no such component.
6883
6884 @item alpha(x, y)
6885 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
6886 plane. Return 0 if there is no such plane.
6887 @end table
6888
6889 For functions, if @var{x} and @var{y} are outside the area, the value will be
6890 automatically clipped to the closer edge.
6891
6892 @subsection Examples
6893
6894 @itemize
6895 @item
6896 Flip the image horizontally:
6897 @example
6898 geq=p(W-X\,Y)
6899 @end example
6900
6901 @item
6902 Generate a bidimensional sine wave, with angle @code{PI/3} and a
6903 wavelength of 100 pixels:
6904 @example
6905 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
6906 @end example
6907
6908 @item
6909 Generate a fancy enigmatic moving light:
6910 @example
6911 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
6912 @end example
6913
6914 @item
6915 Generate a quick emboss effect:
6916 @example
6917 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
6918 @end example
6919
6920 @item
6921 Modify RGB components depending on pixel position:
6922 @example
6923 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
6924 @end example
6925
6926 @item
6927 Create a radial gradient that is the same size as the input (also see
6928 the @ref{vignette} filter):
6929 @example
6930 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
6931 @end example
6932
6933 @item
6934 Create a linear gradient to use as a mask for another filter, then
6935 compose with @ref{overlay}. In this example the video will gradually
6936 become more blurry from the top to the bottom of the y-axis as defined
6937 by the linear gradient:
6938 @example
6939 ffmpeg -i input.mp4 -filter_complex "geq=lum=255*(Y/H),format=gray[grad];[0:v]boxblur=4[blur];[blur][grad]alphamerge[alpha];[0:v][alpha]overlay" output.mp4
6940 @end example
6941 @end itemize
6942
6943 @section gradfun
6944
6945 Fix the banding artifacts that are sometimes introduced into nearly flat
6946 regions by truncation to 8bit color depth.
6947 Interpolate the gradients that should go where the bands are, and
6948 dither them.
6949
6950 It is designed for playback only.  Do not use it prior to
6951 lossy compression, because compression tends to lose the dither and
6952 bring back the bands.
6953
6954 It accepts the following parameters:
6955
6956 @table @option
6957
6958 @item strength
6959 The maximum amount by which the filter will change any one pixel. This is also
6960 the threshold for detecting nearly flat regions. Acceptable values range from
6961 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
6962 valid range.
6963
6964 @item radius
6965 The neighborhood to fit the gradient to. A larger radius makes for smoother
6966 gradients, but also prevents the filter from modifying the pixels near detailed
6967 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
6968 values will be clipped to the valid range.
6969
6970 @end table
6971
6972 Alternatively, the options can be specified as a flat string:
6973 @var{strength}[:@var{radius}]
6974
6975 @subsection Examples
6976
6977 @itemize
6978 @item
6979 Apply the filter with a @code{3.5} strength and radius of @code{8}:
6980 @example
6981 gradfun=3.5:8
6982 @end example
6983
6984 @item
6985 Specify radius, omitting the strength (which will fall-back to the default
6986 value):
6987 @example
6988 gradfun=radius=8
6989 @end example
6990
6991 @end itemize
6992
6993 @anchor{haldclut}
6994 @section haldclut
6995
6996 Apply a Hald CLUT to a video stream.
6997
6998 First input is the video stream to process, and second one is the Hald CLUT.
6999 The Hald CLUT input can be a simple picture or a complete video stream.
7000
7001 The filter accepts the following options:
7002
7003 @table @option
7004 @item shortest
7005 Force termination when the shortest input terminates. Default is @code{0}.
7006 @item repeatlast
7007 Continue applying the last CLUT after the end of the stream. A value of
7008 @code{0} disable the filter after the last frame of the CLUT is reached.
7009 Default is @code{1}.
7010 @end table
7011
7012 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
7013 filters share the same internals).
7014
7015 More information about the Hald CLUT can be found on Eskil Steenberg's website
7016 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
7017
7018 @subsection Workflow examples
7019
7020 @subsubsection Hald CLUT video stream
7021
7022 Generate an identity Hald CLUT stream altered with various effects:
7023 @example
7024 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
7025 @end example
7026
7027 Note: make sure you use a lossless codec.
7028
7029 Then use it with @code{haldclut} to apply it on some random stream:
7030 @example
7031 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
7032 @end example
7033
7034 The Hald CLUT will be applied to the 10 first seconds (duration of
7035 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
7036 to the remaining frames of the @code{mandelbrot} stream.
7037
7038 @subsubsection Hald CLUT with preview
7039
7040 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
7041 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
7042 biggest possible square starting at the top left of the picture. The remaining
7043 padding pixels (bottom or right) will be ignored. This area can be used to add
7044 a preview of the Hald CLUT.
7045
7046 Typically, the following generated Hald CLUT will be supported by the
7047 @code{haldclut} filter:
7048
7049 @example
7050 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
7051    pad=iw+320 [padded_clut];
7052    smptebars=s=320x256, split [a][b];
7053    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
7054    [main][b] overlay=W-320" -frames:v 1 clut.png
7055 @end example
7056
7057 It contains the original and a preview of the effect of the CLUT: SMPTE color
7058 bars are displayed on the right-top, and below the same color bars processed by
7059 the color changes.
7060
7061 Then, the effect of this Hald CLUT can be visualized with:
7062 @example
7063 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
7064 @end example
7065
7066 @section hflip
7067
7068 Flip the input video horizontally.
7069
7070 For example, to horizontally flip the input video with @command{ffmpeg}:
7071 @example
7072 ffmpeg -i in.avi -vf "hflip" out.avi
7073 @end example
7074
7075 @section histeq
7076 This filter applies a global color histogram equalization on a
7077 per-frame basis.
7078
7079 It can be used to correct video that has a compressed range of pixel
7080 intensities.  The filter redistributes the pixel intensities to
7081 equalize their distribution across the intensity range. It may be
7082 viewed as an "automatically adjusting contrast filter". This filter is
7083 useful only for correcting degraded or poorly captured source
7084 video.
7085
7086 The filter accepts the following options:
7087
7088 @table @option
7089 @item strength
7090 Determine the amount of equalization to be applied.  As the strength
7091 is reduced, the distribution of pixel intensities more-and-more
7092 approaches that of the input frame. The value must be a float number
7093 in the range [0,1] and defaults to 0.200.
7094
7095 @item intensity
7096 Set the maximum intensity that can generated and scale the output
7097 values appropriately.  The strength should be set as desired and then
7098 the intensity can be limited if needed to avoid washing-out. The value
7099 must be a float number in the range [0,1] and defaults to 0.210.
7100
7101 @item antibanding
7102 Set the antibanding level. If enabled the filter will randomly vary
7103 the luminance of output pixels by a small amount to avoid banding of
7104 the histogram. Possible values are @code{none}, @code{weak} or
7105 @code{strong}. It defaults to @code{none}.
7106 @end table
7107
7108 @section histogram
7109
7110 Compute and draw a color distribution histogram for the input video.
7111
7112 The computed histogram is a representation of the color component
7113 distribution in an image.
7114
7115 The filter accepts the following options:
7116
7117 @table @option
7118 @item mode
7119 Set histogram mode.
7120
7121 It accepts the following values:
7122 @table @samp
7123 @item levels
7124 Standard histogram that displays the color components distribution in an
7125 image. Displays color graph for each color component. Shows distribution of
7126 the Y, U, V, A or R, G, B components, depending on input format, in the
7127 current frame. Below each graph a color component scale meter is shown.
7128
7129 @item color
7130 Displays chroma values (U/V color placement) in a two dimensional
7131 graph (which is called a vectorscope). The brighter a pixel in the
7132 vectorscope, the more pixels of the input frame correspond to that pixel
7133 (i.e., more pixels have this chroma value). The V component is displayed on
7134 the horizontal (X) axis, with the leftmost side being V = 0 and the rightmost
7135 side being V = 255. The U component is displayed on the vertical (Y) axis,
7136 with the top representing U = 0 and the bottom representing U = 255.
7137
7138 The position of a white pixel in the graph corresponds to the chroma value of
7139 a pixel of the input clip. The graph can therefore be used to read the hue
7140 (color flavor) and the saturation (the dominance of the hue in the color). As
7141 the hue of a color changes, it moves around the square. At the center of the
7142 square the saturation is zero, which means that the corresponding pixel has no
7143 color. If the amount of a specific color is increased (while leaving the other
7144 colors unchanged) the saturation increases, and the indicator moves towards
7145 the edge of the square.
7146
7147 @item color2
7148 Chroma values in vectorscope, similar as @code{color} but actual chroma values
7149 are displayed.
7150
7151 @item waveform
7152 Per row/column color component graph. In row mode, the graph on the left side
7153 represents color component value 0 and the right side represents value = 255.
7154 In column mode, the top side represents color component value = 0 and bottom
7155 side represents value = 255.
7156 @end table
7157 Default value is @code{levels}.
7158
7159 @item level_height
7160 Set height of level in @code{levels}. Default value is @code{200}.
7161 Allowed range is [50, 2048].
7162
7163 @item scale_height
7164 Set height of color scale in @code{levels}. Default value is @code{12}.
7165 Allowed range is [0, 40].
7166
7167 @item step
7168 Set step for @code{waveform} mode. Smaller values are useful to find out how
7169 many values of the same luminance are distributed across input rows/columns.
7170 Default value is @code{10}. Allowed range is [1, 255].
7171
7172 @item waveform_mode
7173 Set mode for @code{waveform}. Can be either @code{row}, or @code{column}.
7174 Default is @code{row}.
7175
7176 @item waveform_mirror
7177 Set mirroring mode for @code{waveform}. @code{0} means unmirrored, @code{1}
7178 means mirrored. In mirrored mode, higher values will be represented on the left
7179 side for @code{row} mode and at the top for @code{column} mode. Default is
7180 @code{0} (unmirrored).
7181
7182 @item display_mode
7183 Set display mode for @code{waveform} and @code{levels}.
7184 It accepts the following values:
7185 @table @samp
7186 @item parade
7187 Display separate graph for the color components side by side in
7188 @code{row} waveform mode or one below the other in @code{column} waveform mode
7189 for @code{waveform} histogram mode. For @code{levels} histogram mode,
7190 per color component graphs are placed below each other.
7191
7192 Using this display mode in @code{waveform} histogram mode makes it easy to
7193 spot color casts in the highlights and shadows of an image, by comparing the
7194 contours of the top and the bottom graphs of each waveform. Since whites,
7195 grays, and blacks are characterized by exactly equal amounts of red, green,
7196 and blue, neutral areas of the picture should display three waveforms of
7197 roughly equal width/height. If not, the correction is easy to perform by
7198 making level adjustments the three waveforms.
7199
7200 @item overlay
7201 Presents information identical to that in the @code{parade}, except
7202 that the graphs representing color components are superimposed directly
7203 over one another.
7204
7205 This display mode in @code{waveform} histogram mode makes it easier to spot
7206 relative differences or similarities in overlapping areas of the color
7207 components that are supposed to be identical, such as neutral whites, grays,
7208 or blacks.
7209 @end table
7210 Default is @code{parade}.
7211
7212 @item levels_mode
7213 Set mode for @code{levels}. Can be either @code{linear}, or @code{logarithmic}.
7214 Default is @code{linear}.
7215
7216 @item components
7217 Set what color components to display for mode @code{levels}.
7218 Default is @code{7}.
7219 @end table
7220
7221 @subsection Examples
7222
7223 @itemize
7224
7225 @item
7226 Calculate and draw histogram:
7227 @example
7228 ffplay -i input -vf histogram
7229 @end example
7230
7231 @end itemize
7232
7233 @anchor{hqdn3d}
7234 @section hqdn3d
7235
7236 This is a high precision/quality 3d denoise filter. It aims to reduce
7237 image noise, producing smooth images and making still images really
7238 still. It should enhance compressibility.
7239
7240 It accepts the following optional parameters:
7241
7242 @table @option
7243 @item luma_spatial
7244 A non-negative floating point number which specifies spatial luma strength.
7245 It defaults to 4.0.
7246
7247 @item chroma_spatial
7248 A non-negative floating point number which specifies spatial chroma strength.
7249 It defaults to 3.0*@var{luma_spatial}/4.0.
7250
7251 @item luma_tmp
7252 A floating point number which specifies luma temporal strength. It defaults to
7253 6.0*@var{luma_spatial}/4.0.
7254
7255 @item chroma_tmp
7256 A floating point number which specifies chroma temporal strength. It defaults to
7257 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
7258 @end table
7259
7260 @section hqx
7261
7262 Apply a high-quality magnification filter designed for pixel art. This filter
7263 was originally created by Maxim Stepin.
7264
7265 It accepts the following option:
7266
7267 @table @option
7268 @item n
7269 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
7270 @code{hq3x} and @code{4} for @code{hq4x}.
7271 Default is @code{3}.
7272 @end table
7273
7274 @section hstack
7275 Stack input videos horizontally.
7276
7277 All streams must be of same pixel format and of same height.
7278
7279 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
7280 to create same output.
7281
7282 The filter accept the following option:
7283
7284 @table @option
7285 @item inputs
7286 Set number of input streams. Default is 2.
7287
7288 @item shortest
7289 If set to 1, force the output to terminate when the shortest input
7290 terminates. Default value is 0.
7291 @end table
7292
7293 @section hue
7294
7295 Modify the hue and/or the saturation of the input.
7296
7297 It accepts the following parameters:
7298
7299 @table @option
7300 @item h
7301 Specify the hue angle as a number of degrees. It accepts an expression,
7302 and defaults to "0".
7303
7304 @item s
7305 Specify the saturation in the [-10,10] range. It accepts an expression and
7306 defaults to "1".
7307
7308 @item H
7309 Specify the hue angle as a number of radians. It accepts an
7310 expression, and defaults to "0".
7311
7312 @item b
7313 Specify the brightness in the [-10,10] range. It accepts an expression and
7314 defaults to "0".
7315 @end table
7316
7317 @option{h} and @option{H} are mutually exclusive, and can't be
7318 specified at the same time.
7319
7320 The @option{b}, @option{h}, @option{H} and @option{s} option values are
7321 expressions containing the following constants:
7322
7323 @table @option
7324 @item n
7325 frame count of the input frame starting from 0
7326
7327 @item pts
7328 presentation timestamp of the input frame expressed in time base units
7329
7330 @item r
7331 frame rate of the input video, NAN if the input frame rate is unknown
7332
7333 @item t
7334 timestamp expressed in seconds, NAN if the input timestamp is unknown
7335
7336 @item tb
7337 time base of the input video
7338 @end table
7339
7340 @subsection Examples
7341
7342 @itemize
7343 @item
7344 Set the hue to 90 degrees and the saturation to 1.0:
7345 @example
7346 hue=h=90:s=1
7347 @end example
7348
7349 @item
7350 Same command but expressing the hue in radians:
7351 @example
7352 hue=H=PI/2:s=1
7353 @end example
7354
7355 @item
7356 Rotate hue and make the saturation swing between 0
7357 and 2 over a period of 1 second:
7358 @example
7359 hue="H=2*PI*t: s=sin(2*PI*t)+1"
7360 @end example
7361
7362 @item
7363 Apply a 3 seconds saturation fade-in effect starting at 0:
7364 @example
7365 hue="s=min(t/3\,1)"
7366 @end example
7367
7368 The general fade-in expression can be written as:
7369 @example
7370 hue="s=min(0\, max((t-START)/DURATION\, 1))"
7371 @end example
7372
7373 @item
7374 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
7375 @example
7376 hue="s=max(0\, min(1\, (8-t)/3))"
7377 @end example
7378
7379 The general fade-out expression can be written as:
7380 @example
7381 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
7382 @end example
7383
7384 @end itemize
7385
7386 @subsection Commands
7387
7388 This filter supports the following commands:
7389 @table @option
7390 @item b
7391 @item s
7392 @item h
7393 @item H
7394 Modify the hue and/or the saturation and/or brightness of the input video.
7395 The command accepts the same syntax of the corresponding option.
7396
7397 If the specified expression is not valid, it is kept at its current
7398 value.
7399 @end table
7400
7401 @section idet
7402
7403 Detect video interlacing type.
7404
7405 This filter tries to detect if the input frames as interlaced, progressive,
7406 top or bottom field first. It will also try and detect fields that are
7407 repeated between adjacent frames (a sign of telecine).
7408
7409 Single frame detection considers only immediately adjacent frames when classifying each frame.
7410 Multiple frame detection incorporates the classification history of previous frames.
7411
7412 The filter will log these metadata values:
7413
7414 @table @option
7415 @item single.current_frame
7416 Detected type of current frame using single-frame detection. One of:
7417 ``tff'' (top field first), ``bff'' (bottom field first),
7418 ``progressive'', or ``undetermined''
7419
7420 @item single.tff
7421 Cumulative number of frames detected as top field first using single-frame detection.
7422
7423 @item multiple.tff
7424 Cumulative number of frames detected as top field first using multiple-frame detection.
7425
7426 @item single.bff
7427 Cumulative number of frames detected as bottom field first using single-frame detection.
7428
7429 @item multiple.current_frame
7430 Detected type of current frame using multiple-frame detection. One of:
7431 ``tff'' (top field first), ``bff'' (bottom field first),
7432 ``progressive'', or ``undetermined''
7433
7434 @item multiple.bff
7435 Cumulative number of frames detected as bottom field first using multiple-frame detection.
7436
7437 @item single.progressive
7438 Cumulative number of frames detected as progressive using single-frame detection.
7439
7440 @item multiple.progressive
7441 Cumulative number of frames detected as progressive using multiple-frame detection.
7442
7443 @item single.undetermined
7444 Cumulative number of frames that could not be classified using single-frame detection.
7445
7446 @item multiple.undetermined
7447 Cumulative number of frames that could not be classified using multiple-frame detection.
7448
7449 @item repeated.current_frame
7450 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
7451
7452 @item repeated.neither
7453 Cumulative number of frames with no repeated field.
7454
7455 @item repeated.top
7456 Cumulative number of frames with the top field repeated from the previous frame's top field.
7457
7458 @item repeated.bottom
7459 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
7460 @end table
7461
7462 The filter accepts the following options:
7463
7464 @table @option
7465 @item intl_thres
7466 Set interlacing threshold.
7467 @item prog_thres
7468 Set progressive threshold.
7469 @item repeat_thres
7470 Threshold for repeated field detection.
7471 @item half_life
7472 Number of frames after which a given frame's contribution to the
7473 statistics is halved (i.e., it contributes only 0.5 to it's
7474 classification). The default of 0 means that all frames seen are given
7475 full weight of 1.0 forever.
7476 @item analyze_interlaced_flag
7477 When this is not 0 then idet will use the specified number of frames to determine
7478 if the interlaced flag is accurate, it will not count undetermined frames.
7479 If the flag is found to be accurate it will be used without any further
7480 computations, if it is found to be inaccurate it will be cleared without any
7481 further computations. This allows inserting the idet filter as a low computational
7482 method to clean up the interlaced flag
7483 @end table
7484
7485 @section il
7486
7487 Deinterleave or interleave fields.
7488
7489 This filter allows one to process interlaced images fields without
7490 deinterlacing them. Deinterleaving splits the input frame into 2
7491 fields (so called half pictures). Odd lines are moved to the top
7492 half of the output image, even lines to the bottom half.
7493 You can process (filter) them independently and then re-interleave them.
7494
7495 The filter accepts the following options:
7496
7497 @table @option
7498 @item luma_mode, l
7499 @item chroma_mode, c
7500 @item alpha_mode, a
7501 Available values for @var{luma_mode}, @var{chroma_mode} and
7502 @var{alpha_mode} are:
7503
7504 @table @samp
7505 @item none
7506 Do nothing.
7507
7508 @item deinterleave, d
7509 Deinterleave fields, placing one above the other.
7510
7511 @item interleave, i
7512 Interleave fields. Reverse the effect of deinterleaving.
7513 @end table
7514 Default value is @code{none}.
7515
7516 @item luma_swap, ls
7517 @item chroma_swap, cs
7518 @item alpha_swap, as
7519 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
7520 @end table
7521
7522 @section inflate
7523
7524 Apply inflate effect to the video.
7525
7526 This filter replaces the pixel by the local(3x3) average by taking into account
7527 only values higher than the pixel.
7528
7529 It accepts the following options:
7530
7531 @table @option
7532 @item threshold0
7533 @item threshold1
7534 @item threshold2
7535 @item threshold3
7536 Limit the maximum change for each plane, default is 65535.
7537 If 0, plane will remain unchanged.
7538 @end table
7539
7540 @section interlace
7541
7542 Simple interlacing filter from progressive contents. This interleaves upper (or
7543 lower) lines from odd frames with lower (or upper) lines from even frames,
7544 halving the frame rate and preserving image height.
7545
7546 @example
7547    Original        Original             New Frame
7548    Frame 'j'      Frame 'j+1'             (tff)
7549   ==========      ===========       ==================
7550     Line 0  -------------------->    Frame 'j' Line 0
7551     Line 1          Line 1  ---->   Frame 'j+1' Line 1
7552     Line 2 --------------------->    Frame 'j' Line 2
7553     Line 3          Line 3  ---->   Frame 'j+1' Line 3
7554      ...             ...                   ...
7555 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
7556 @end example
7557
7558 It accepts the following optional parameters:
7559
7560 @table @option
7561 @item scan
7562 This determines whether the interlaced frame is taken from the even
7563 (tff - default) or odd (bff) lines of the progressive frame.
7564
7565 @item lowpass
7566 Enable (default) or disable the vertical lowpass filter to avoid twitter
7567 interlacing and reduce moire patterns.
7568 @end table
7569
7570 @section kerndeint
7571
7572 Deinterlace input video by applying Donald Graft's adaptive kernel
7573 deinterling. Work on interlaced parts of a video to produce
7574 progressive frames.
7575
7576 The description of the accepted parameters follows.
7577
7578 @table @option
7579 @item thresh
7580 Set the threshold which affects the filter's tolerance when
7581 determining if a pixel line must be processed. It must be an integer
7582 in the range [0,255] and defaults to 10. A value of 0 will result in
7583 applying the process on every pixels.
7584
7585 @item map
7586 Paint pixels exceeding the threshold value to white if set to 1.
7587 Default is 0.
7588
7589 @item order
7590 Set the fields order. Swap fields if set to 1, leave fields alone if
7591 0. Default is 0.
7592
7593 @item sharp
7594 Enable additional sharpening if set to 1. Default is 0.
7595
7596 @item twoway
7597 Enable twoway sharpening if set to 1. Default is 0.
7598 @end table
7599
7600 @subsection Examples
7601
7602 @itemize
7603 @item
7604 Apply default values:
7605 @example
7606 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
7607 @end example
7608
7609 @item
7610 Enable additional sharpening:
7611 @example
7612 kerndeint=sharp=1
7613 @end example
7614
7615 @item
7616 Paint processed pixels in white:
7617 @example
7618 kerndeint=map=1
7619 @end example
7620 @end itemize
7621
7622 @section lenscorrection
7623
7624 Correct radial lens distortion
7625
7626 This filter can be used to correct for radial distortion as can result from the use
7627 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
7628 one can use tools available for example as part of opencv or simply trial-and-error.
7629 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
7630 and extract the k1 and k2 coefficients from the resulting matrix.
7631
7632 Note that effectively the same filter is available in the open-source tools Krita and
7633 Digikam from the KDE project.
7634
7635 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
7636 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
7637 brightness distribution, so you may want to use both filters together in certain
7638 cases, though you will have to take care of ordering, i.e. whether vignetting should
7639 be applied before or after lens correction.
7640
7641 @subsection Options
7642
7643 The filter accepts the following options:
7644
7645 @table @option
7646 @item cx
7647 Relative x-coordinate of the focal point of the image, and thereby the center of the
7648 distortion. This value has a range [0,1] and is expressed as fractions of the image
7649 width.
7650 @item cy
7651 Relative y-coordinate of the focal point of the image, and thereby the center of the
7652 distortion. This value has a range [0,1] and is expressed as fractions of the image
7653 height.
7654 @item k1
7655 Coefficient of the quadratic correction term. 0.5 means no correction.
7656 @item k2
7657 Coefficient of the double quadratic correction term. 0.5 means no correction.
7658 @end table
7659
7660 The formula that generates the correction is:
7661
7662 @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)
7663
7664 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
7665 distances from the focal point in the source and target images, respectively.
7666
7667 @anchor{lut3d}
7668 @section lut3d
7669
7670 Apply a 3D LUT to an input video.
7671
7672 The filter accepts the following options:
7673
7674 @table @option
7675 @item file
7676 Set the 3D LUT file name.
7677
7678 Currently supported formats:
7679 @table @samp
7680 @item 3dl
7681 AfterEffects
7682 @item cube
7683 Iridas
7684 @item dat
7685 DaVinci
7686 @item m3d
7687 Pandora
7688 @end table
7689 @item interp
7690 Select interpolation mode.
7691
7692 Available values are:
7693
7694 @table @samp
7695 @item nearest
7696 Use values from the nearest defined point.
7697 @item trilinear
7698 Interpolate values using the 8 points defining a cube.
7699 @item tetrahedral
7700 Interpolate values using a tetrahedron.
7701 @end table
7702 @end table
7703
7704 @section lut, lutrgb, lutyuv
7705
7706 Compute a look-up table for binding each pixel component input value
7707 to an output value, and apply it to the input video.
7708
7709 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
7710 to an RGB input video.
7711
7712 These filters accept the following parameters:
7713 @table @option
7714 @item c0
7715 set first pixel component expression
7716 @item c1
7717 set second pixel component expression
7718 @item c2
7719 set third pixel component expression
7720 @item c3
7721 set fourth pixel component expression, corresponds to the alpha component
7722
7723 @item r
7724 set red component expression
7725 @item g
7726 set green component expression
7727 @item b
7728 set blue component expression
7729 @item a
7730 alpha component expression
7731
7732 @item y
7733 set Y/luminance component expression
7734 @item u
7735 set U/Cb component expression
7736 @item v
7737 set V/Cr component expression
7738 @end table
7739
7740 Each of them specifies the expression to use for computing the lookup table for
7741 the corresponding pixel component values.
7742
7743 The exact component associated to each of the @var{c*} options depends on the
7744 format in input.
7745
7746 The @var{lut} filter requires either YUV or RGB pixel formats in input,
7747 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
7748
7749 The expressions can contain the following constants and functions:
7750
7751 @table @option
7752 @item w
7753 @item h
7754 The input width and height.
7755
7756 @item val
7757 The input value for the pixel component.
7758
7759 @item clipval
7760 The input value, clipped to the @var{minval}-@var{maxval} range.
7761
7762 @item maxval
7763 The maximum value for the pixel component.
7764
7765 @item minval
7766 The minimum value for the pixel component.
7767
7768 @item negval
7769 The negated value for the pixel component value, clipped to the
7770 @var{minval}-@var{maxval} range; it corresponds to the expression
7771 "maxval-clipval+minval".
7772
7773 @item clip(val)
7774 The computed value in @var{val}, clipped to the
7775 @var{minval}-@var{maxval} range.
7776
7777 @item gammaval(gamma)
7778 The computed gamma correction value of the pixel component value,
7779 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
7780 expression
7781 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
7782
7783 @end table
7784
7785 All expressions default to "val".
7786
7787 @subsection Examples
7788
7789 @itemize
7790 @item
7791 Negate input video:
7792 @example
7793 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
7794 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
7795 @end example
7796
7797 The above is the same as:
7798 @example
7799 lutrgb="r=negval:g=negval:b=negval"
7800 lutyuv="y=negval:u=negval:v=negval"
7801 @end example
7802
7803 @item
7804 Negate luminance:
7805 @example
7806 lutyuv=y=negval
7807 @end example
7808
7809 @item
7810 Remove chroma components, turning the video into a graytone image:
7811 @example
7812 lutyuv="u=128:v=128"
7813 @end example
7814
7815 @item
7816 Apply a luma burning effect:
7817 @example
7818 lutyuv="y=2*val"
7819 @end example
7820
7821 @item
7822 Remove green and blue components:
7823 @example
7824 lutrgb="g=0:b=0"
7825 @end example
7826
7827 @item
7828 Set a constant alpha channel value on input:
7829 @example
7830 format=rgba,lutrgb=a="maxval-minval/2"
7831 @end example
7832
7833 @item
7834 Correct luminance gamma by a factor of 0.5:
7835 @example
7836 lutyuv=y=gammaval(0.5)
7837 @end example
7838
7839 @item
7840 Discard least significant bits of luma:
7841 @example
7842 lutyuv=y='bitand(val, 128+64+32)'
7843 @end example
7844 @end itemize
7845
7846 @section maskedmerge
7847
7848 Merge the first input stream with the second input stream using per pixel
7849 weights in the third input stream.
7850
7851 A value of 0 in the third stream pixel component means that pixel component
7852 from first stream is returned unchanged, while maximum value (eg. 255 for
7853 8-bit videos) means that pixel component from second stream is returned
7854 unchanged. Intermediate values define the amount of merging between both
7855 input stream's pixel components.
7856
7857 This filter accepts the following options:
7858 @table @option
7859 @item planes
7860 Set which planes will be processed as bitmap, unprocessed planes will be
7861 copied from first stream.
7862 By default value 0xf, all planes will be processed.
7863 @end table
7864
7865 @section mcdeint
7866
7867 Apply motion-compensation deinterlacing.
7868
7869 It needs one field per frame as input and must thus be used together
7870 with yadif=1/3 or equivalent.
7871
7872 This filter accepts the following options:
7873 @table @option
7874 @item mode
7875 Set the deinterlacing mode.
7876
7877 It accepts one of the following values:
7878 @table @samp
7879 @item fast
7880 @item medium
7881 @item slow
7882 use iterative motion estimation
7883 @item extra_slow
7884 like @samp{slow}, but use multiple reference frames.
7885 @end table
7886 Default value is @samp{fast}.
7887
7888 @item parity
7889 Set the picture field parity assumed for the input video. It must be
7890 one of the following values:
7891
7892 @table @samp
7893 @item 0, tff
7894 assume top field first
7895 @item 1, bff
7896 assume bottom field first
7897 @end table
7898
7899 Default value is @samp{bff}.
7900
7901 @item qp
7902 Set per-block quantization parameter (QP) used by the internal
7903 encoder.
7904
7905 Higher values should result in a smoother motion vector field but less
7906 optimal individual vectors. Default value is 1.
7907 @end table
7908
7909 @section mergeplanes
7910
7911 Merge color channel components from several video streams.
7912
7913 The filter accepts up to 4 input streams, and merge selected input
7914 planes to the output video.
7915
7916 This filter accepts the following options:
7917 @table @option
7918 @item mapping
7919 Set input to output plane mapping. Default is @code{0}.
7920
7921 The mappings is specified as a bitmap. It should be specified as a
7922 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
7923 mapping for the first plane of the output stream. 'A' sets the number of
7924 the input stream to use (from 0 to 3), and 'a' the plane number of the
7925 corresponding input to use (from 0 to 3). The rest of the mappings is
7926 similar, 'Bb' describes the mapping for the output stream second
7927 plane, 'Cc' describes the mapping for the output stream third plane and
7928 'Dd' describes the mapping for the output stream fourth plane.
7929
7930 @item format
7931 Set output pixel format. Default is @code{yuva444p}.
7932 @end table
7933
7934 @subsection Examples
7935
7936 @itemize
7937 @item
7938 Merge three gray video streams of same width and height into single video stream:
7939 @example
7940 [a0][a1][a2]mergeplanes=0x001020:yuv444p
7941 @end example
7942
7943 @item
7944 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
7945 @example
7946 [a0][a1]mergeplanes=0x00010210:yuva444p
7947 @end example
7948
7949 @item
7950 Swap Y and A plane in yuva444p stream:
7951 @example
7952 format=yuva444p,mergeplanes=0x03010200:yuva444p
7953 @end example
7954
7955 @item
7956 Swap U and V plane in yuv420p stream:
7957 @example
7958 format=yuv420p,mergeplanes=0x000201:yuv420p
7959 @end example
7960
7961 @item
7962 Cast a rgb24 clip to yuv444p:
7963 @example
7964 format=rgb24,mergeplanes=0x000102:yuv444p
7965 @end example
7966 @end itemize
7967
7968 @section mpdecimate
7969
7970 Drop frames that do not differ greatly from the previous frame in
7971 order to reduce frame rate.
7972
7973 The main use of this filter is for very-low-bitrate encoding
7974 (e.g. streaming over dialup modem), but it could in theory be used for
7975 fixing movies that were inverse-telecined incorrectly.
7976
7977 A description of the accepted options follows.
7978
7979 @table @option
7980 @item max
7981 Set the maximum number of consecutive frames which can be dropped (if
7982 positive), or the minimum interval between dropped frames (if
7983 negative). If the value is 0, the frame is dropped unregarding the
7984 number of previous sequentially dropped frames.
7985
7986 Default value is 0.
7987
7988 @item hi
7989 @item lo
7990 @item frac
7991 Set the dropping threshold values.
7992
7993 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
7994 represent actual pixel value differences, so a threshold of 64
7995 corresponds to 1 unit of difference for each pixel, or the same spread
7996 out differently over the block.
7997
7998 A frame is a candidate for dropping if no 8x8 blocks differ by more
7999 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
8000 meaning the whole image) differ by more than a threshold of @option{lo}.
8001
8002 Default value for @option{hi} is 64*12, default value for @option{lo} is
8003 64*5, and default value for @option{frac} is 0.33.
8004 @end table
8005
8006
8007 @section negate
8008
8009 Negate input video.
8010
8011 It accepts an integer in input; if non-zero it negates the
8012 alpha component (if available). The default value in input is 0.
8013
8014 @section noformat
8015
8016 Force libavfilter not to use any of the specified pixel formats for the
8017 input to the next filter.
8018
8019 It accepts the following parameters:
8020 @table @option
8021
8022 @item pix_fmts
8023 A '|'-separated list of pixel format names, such as
8024 apix_fmts=yuv420p|monow|rgb24".
8025
8026 @end table
8027
8028 @subsection Examples
8029
8030 @itemize
8031 @item
8032 Force libavfilter to use a format different from @var{yuv420p} for the
8033 input to the vflip filter:
8034 @example
8035 noformat=pix_fmts=yuv420p,vflip
8036 @end example
8037
8038 @item
8039 Convert the input video to any of the formats not contained in the list:
8040 @example
8041 noformat=yuv420p|yuv444p|yuv410p
8042 @end example
8043 @end itemize
8044
8045 @section noise
8046
8047 Add noise on video input frame.
8048
8049 The filter accepts the following options:
8050
8051 @table @option
8052 @item all_seed
8053 @item c0_seed
8054 @item c1_seed
8055 @item c2_seed
8056 @item c3_seed
8057 Set noise seed for specific pixel component or all pixel components in case
8058 of @var{all_seed}. Default value is @code{123457}.
8059
8060 @item all_strength, alls
8061 @item c0_strength, c0s
8062 @item c1_strength, c1s
8063 @item c2_strength, c2s
8064 @item c3_strength, c3s
8065 Set noise strength for specific pixel component or all pixel components in case
8066 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
8067
8068 @item all_flags, allf
8069 @item c0_flags, c0f
8070 @item c1_flags, c1f
8071 @item c2_flags, c2f
8072 @item c3_flags, c3f
8073 Set pixel component flags or set flags for all components if @var{all_flags}.
8074 Available values for component flags are:
8075 @table @samp
8076 @item a
8077 averaged temporal noise (smoother)
8078 @item p
8079 mix random noise with a (semi)regular pattern
8080 @item t
8081 temporal noise (noise pattern changes between frames)
8082 @item u
8083 uniform noise (gaussian otherwise)
8084 @end table
8085 @end table
8086
8087 @subsection Examples
8088
8089 Add temporal and uniform noise to input video:
8090 @example
8091 noise=alls=20:allf=t+u
8092 @end example
8093
8094 @section null
8095
8096 Pass the video source unchanged to the output.
8097
8098 @section ocr
8099 Optical Character Recognition
8100
8101 This filter uses Tesseract for optical character recognition.
8102
8103 It accepts the following options:
8104
8105 @table @option
8106 @item datapath
8107 Set datapath to tesseract data. Default is to use whatever was
8108 set at installation.
8109
8110 @item language
8111 Set language, default is "eng".
8112
8113 @item whitelist
8114 Set character whitelist.
8115
8116 @item blacklist
8117 Set character blacklist.
8118 @end table
8119
8120 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
8121
8122 @section ocv
8123
8124 Apply a video transform using libopencv.
8125
8126 To enable this filter, install the libopencv library and headers and
8127 configure FFmpeg with @code{--enable-libopencv}.
8128
8129 It accepts the following parameters:
8130
8131 @table @option
8132
8133 @item filter_name
8134 The name of the libopencv filter to apply.
8135
8136 @item filter_params
8137 The parameters to pass to the libopencv filter. If not specified, the default
8138 values are assumed.
8139
8140 @end table
8141
8142 Refer to the official libopencv documentation for more precise
8143 information:
8144 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
8145
8146 Several libopencv filters are supported; see the following subsections.
8147
8148 @anchor{dilate}
8149 @subsection dilate
8150
8151 Dilate an image by using a specific structuring element.
8152 It corresponds to the libopencv function @code{cvDilate}.
8153
8154 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
8155
8156 @var{struct_el} represents a structuring element, and has the syntax:
8157 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
8158
8159 @var{cols} and @var{rows} represent the number of columns and rows of
8160 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
8161 point, and @var{shape} the shape for the structuring element. @var{shape}
8162 must be "rect", "cross", "ellipse", or "custom".
8163
8164 If the value for @var{shape} is "custom", it must be followed by a
8165 string of the form "=@var{filename}". The file with name
8166 @var{filename} is assumed to represent a binary image, with each
8167 printable character corresponding to a bright pixel. When a custom
8168 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
8169 or columns and rows of the read file are assumed instead.
8170
8171 The default value for @var{struct_el} is "3x3+0x0/rect".
8172
8173 @var{nb_iterations} specifies the number of times the transform is
8174 applied to the image, and defaults to 1.
8175
8176 Some examples:
8177 @example
8178 # Use the default values
8179 ocv=dilate
8180
8181 # Dilate using a structuring element with a 5x5 cross, iterating two times
8182 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
8183
8184 # Read the shape from the file diamond.shape, iterating two times.
8185 # The file diamond.shape may contain a pattern of characters like this
8186 #   *
8187 #  ***
8188 # *****
8189 #  ***
8190 #   *
8191 # The specified columns and rows are ignored
8192 # but the anchor point coordinates are not
8193 ocv=dilate:0x0+2x2/custom=diamond.shape|2
8194 @end example
8195
8196 @subsection erode
8197
8198 Erode an image by using a specific structuring element.
8199 It corresponds to the libopencv function @code{cvErode}.
8200
8201 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
8202 with the same syntax and semantics as the @ref{dilate} filter.
8203
8204 @subsection smooth
8205
8206 Smooth the input video.
8207
8208 The filter takes the following parameters:
8209 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
8210
8211 @var{type} is the type of smooth filter to apply, and must be one of
8212 the following values: "blur", "blur_no_scale", "median", "gaussian",
8213 or "bilateral". The default value is "gaussian".
8214
8215 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
8216 depend on the smooth type. @var{param1} and
8217 @var{param2} accept integer positive values or 0. @var{param3} and
8218 @var{param4} accept floating point values.
8219
8220 The default value for @var{param1} is 3. The default value for the
8221 other parameters is 0.
8222
8223 These parameters correspond to the parameters assigned to the
8224 libopencv function @code{cvSmooth}.
8225
8226 @anchor{overlay}
8227 @section overlay
8228
8229 Overlay one video on top of another.
8230
8231 It takes two inputs and has one output. The first input is the "main"
8232 video on which the second input is overlaid.
8233
8234 It accepts the following parameters:
8235
8236 A description of the accepted options follows.
8237
8238 @table @option
8239 @item x
8240 @item y
8241 Set the expression for the x and y coordinates of the overlaid video
8242 on the main video. Default value is "0" for both expressions. In case
8243 the expression is invalid, it is set to a huge value (meaning that the
8244 overlay will not be displayed within the output visible area).
8245
8246 @item eof_action
8247 The action to take when EOF is encountered on the secondary input; it accepts
8248 one of the following values:
8249
8250 @table @option
8251 @item repeat
8252 Repeat the last frame (the default).
8253 @item endall
8254 End both streams.
8255 @item pass
8256 Pass the main input through.
8257 @end table
8258
8259 @item eval
8260 Set when the expressions for @option{x}, and @option{y} are evaluated.
8261
8262 It accepts the following values:
8263 @table @samp
8264 @item init
8265 only evaluate expressions once during the filter initialization or
8266 when a command is processed
8267
8268 @item frame
8269 evaluate expressions for each incoming frame
8270 @end table
8271
8272 Default value is @samp{frame}.
8273
8274 @item shortest
8275 If set to 1, force the output to terminate when the shortest input
8276 terminates. Default value is 0.
8277
8278 @item format
8279 Set the format for the output video.
8280
8281 It accepts the following values:
8282 @table @samp
8283 @item yuv420
8284 force YUV420 output
8285
8286 @item yuv422
8287 force YUV422 output
8288
8289 @item yuv444
8290 force YUV444 output
8291
8292 @item rgb
8293 force RGB output
8294 @end table
8295
8296 Default value is @samp{yuv420}.
8297
8298 @item rgb @emph{(deprecated)}
8299 If set to 1, force the filter to accept inputs in the RGB
8300 color space. Default value is 0. This option is deprecated, use
8301 @option{format} instead.
8302
8303 @item repeatlast
8304 If set to 1, force the filter to draw the last overlay frame over the
8305 main input until the end of the stream. A value of 0 disables this
8306 behavior. Default value is 1.
8307 @end table
8308
8309 The @option{x}, and @option{y} expressions can contain the following
8310 parameters.
8311
8312 @table @option
8313 @item main_w, W
8314 @item main_h, H
8315 The main input width and height.
8316
8317 @item overlay_w, w
8318 @item overlay_h, h
8319 The overlay input width and height.
8320
8321 @item x
8322 @item y
8323 The computed values for @var{x} and @var{y}. They are evaluated for
8324 each new frame.
8325
8326 @item hsub
8327 @item vsub
8328 horizontal and vertical chroma subsample values of the output
8329 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
8330 @var{vsub} is 1.
8331
8332 @item n
8333 the number of input frame, starting from 0
8334
8335 @item pos
8336 the position in the file of the input frame, NAN if unknown
8337
8338 @item t
8339 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
8340
8341 @end table
8342
8343 Note that the @var{n}, @var{pos}, @var{t} variables are available only
8344 when evaluation is done @emph{per frame}, and will evaluate to NAN
8345 when @option{eval} is set to @samp{init}.
8346
8347 Be aware that frames are taken from each input video in timestamp
8348 order, hence, if their initial timestamps differ, it is a good idea
8349 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
8350 have them begin in the same zero timestamp, as the example for
8351 the @var{movie} filter does.
8352
8353 You can chain together more overlays but you should test the
8354 efficiency of such approach.
8355
8356 @subsection Commands
8357
8358 This filter supports the following commands:
8359 @table @option
8360 @item x
8361 @item y
8362 Modify the x and y of the overlay input.
8363 The command accepts the same syntax of the corresponding option.
8364
8365 If the specified expression is not valid, it is kept at its current
8366 value.
8367 @end table
8368
8369 @subsection Examples
8370
8371 @itemize
8372 @item
8373 Draw the overlay at 10 pixels from the bottom right corner of the main
8374 video:
8375 @example
8376 overlay=main_w-overlay_w-10:main_h-overlay_h-10
8377 @end example
8378
8379 Using named options the example above becomes:
8380 @example
8381 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
8382 @end example
8383
8384 @item
8385 Insert a transparent PNG logo in the bottom left corner of the input,
8386 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
8387 @example
8388 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
8389 @end example
8390
8391 @item
8392 Insert 2 different transparent PNG logos (second logo on bottom
8393 right corner) using the @command{ffmpeg} tool:
8394 @example
8395 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
8396 @end example
8397
8398 @item
8399 Add a transparent color layer on top of the main video; @code{WxH}
8400 must specify the size of the main input to the overlay filter:
8401 @example
8402 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
8403 @end example
8404
8405 @item
8406 Play an original video and a filtered version (here with the deshake
8407 filter) side by side using the @command{ffplay} tool:
8408 @example
8409 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
8410 @end example
8411
8412 The above command is the same as:
8413 @example
8414 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
8415 @end example
8416
8417 @item
8418 Make a sliding overlay appearing from the left to the right top part of the
8419 screen starting since time 2:
8420 @example
8421 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
8422 @end example
8423
8424 @item
8425 Compose output by putting two input videos side to side:
8426 @example
8427 ffmpeg -i left.avi -i right.avi -filter_complex "
8428 nullsrc=size=200x100 [background];
8429 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
8430 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
8431 [background][left]       overlay=shortest=1       [background+left];
8432 [background+left][right] overlay=shortest=1:x=100 [left+right]
8433 "
8434 @end example
8435
8436 @item
8437 Mask 10-20 seconds of a video by applying the delogo filter to a section
8438 @example
8439 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
8440 -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]'
8441 masked.avi
8442 @end example
8443
8444 @item
8445 Chain several overlays in cascade:
8446 @example
8447 nullsrc=s=200x200 [bg];
8448 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
8449 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
8450 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
8451 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
8452 [in3] null,       [mid2] overlay=100:100 [out0]
8453 @end example
8454
8455 @end itemize
8456
8457 @section owdenoise
8458
8459 Apply Overcomplete Wavelet denoiser.
8460
8461 The filter accepts the following options:
8462
8463 @table @option
8464 @item depth
8465 Set depth.
8466
8467 Larger depth values will denoise lower frequency components more, but
8468 slow down filtering.
8469
8470 Must be an int in the range 8-16, default is @code{8}.
8471
8472 @item luma_strength, ls
8473 Set luma strength.
8474
8475 Must be a double value in the range 0-1000, default is @code{1.0}.
8476
8477 @item chroma_strength, cs
8478 Set chroma strength.
8479
8480 Must be a double value in the range 0-1000, default is @code{1.0}.
8481 @end table
8482
8483 @anchor{pad}
8484 @section pad
8485
8486 Add paddings to the input image, and place the original input at the
8487 provided @var{x}, @var{y} coordinates.
8488
8489 It accepts the following parameters:
8490
8491 @table @option
8492 @item width, w
8493 @item height, h
8494 Specify an expression for the size of the output image with the
8495 paddings added. If the value for @var{width} or @var{height} is 0, the
8496 corresponding input size is used for the output.
8497
8498 The @var{width} expression can reference the value set by the
8499 @var{height} expression, and vice versa.
8500
8501 The default value of @var{width} and @var{height} is 0.
8502
8503 @item x
8504 @item y
8505 Specify the offsets to place the input image at within the padded area,
8506 with respect to the top/left border of the output image.
8507
8508 The @var{x} expression can reference the value set by the @var{y}
8509 expression, and vice versa.
8510
8511 The default value of @var{x} and @var{y} is 0.
8512
8513 @item color
8514 Specify the color of the padded area. For the syntax of this option,
8515 check the "Color" section in the ffmpeg-utils manual.
8516
8517 The default value of @var{color} is "black".
8518 @end table
8519
8520 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
8521 options are expressions containing the following constants:
8522
8523 @table @option
8524 @item in_w
8525 @item in_h
8526 The input video width and height.
8527
8528 @item iw
8529 @item ih
8530 These are the same as @var{in_w} and @var{in_h}.
8531
8532 @item out_w
8533 @item out_h
8534 The output width and height (the size of the padded area), as
8535 specified by the @var{width} and @var{height} expressions.
8536
8537 @item ow
8538 @item oh
8539 These are the same as @var{out_w} and @var{out_h}.
8540
8541 @item x
8542 @item y
8543 The x and y offsets as specified by the @var{x} and @var{y}
8544 expressions, or NAN if not yet specified.
8545
8546 @item a
8547 same as @var{iw} / @var{ih}
8548
8549 @item sar
8550 input sample aspect ratio
8551
8552 @item dar
8553 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8554
8555 @item hsub
8556 @item vsub
8557 The horizontal and vertical chroma subsample values. For example for the
8558 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8559 @end table
8560
8561 @subsection Examples
8562
8563 @itemize
8564 @item
8565 Add paddings with the color "violet" to the input video. The output video
8566 size is 640x480, and the top-left corner of the input video is placed at
8567 column 0, row 40
8568 @example
8569 pad=640:480:0:40:violet
8570 @end example
8571
8572 The example above is equivalent to the following command:
8573 @example
8574 pad=width=640:height=480:x=0:y=40:color=violet
8575 @end example
8576
8577 @item
8578 Pad the input to get an output with dimensions increased by 3/2,
8579 and put the input video at the center of the padded area:
8580 @example
8581 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
8582 @end example
8583
8584 @item
8585 Pad the input to get a squared output with size equal to the maximum
8586 value between the input width and height, and put the input video at
8587 the center of the padded area:
8588 @example
8589 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
8590 @end example
8591
8592 @item
8593 Pad the input to get a final w/h ratio of 16:9:
8594 @example
8595 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
8596 @end example
8597
8598 @item
8599 In case of anamorphic video, in order to set the output display aspect
8600 correctly, it is necessary to use @var{sar} in the expression,
8601 according to the relation:
8602 @example
8603 (ih * X / ih) * sar = output_dar
8604 X = output_dar / sar
8605 @end example
8606
8607 Thus the previous example needs to be modified to:
8608 @example
8609 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
8610 @end example
8611
8612 @item
8613 Double the output size and put the input video in the bottom-right
8614 corner of the output padded area:
8615 @example
8616 pad="2*iw:2*ih:ow-iw:oh-ih"
8617 @end example
8618 @end itemize
8619
8620 @anchor{palettegen}
8621 @section palettegen
8622
8623 Generate one palette for a whole video stream.
8624
8625 It accepts the following options:
8626
8627 @table @option
8628 @item max_colors
8629 Set the maximum number of colors to quantize in the palette.
8630 Note: the palette will still contain 256 colors; the unused palette entries
8631 will be black.
8632
8633 @item reserve_transparent
8634 Create a palette of 255 colors maximum and reserve the last one for
8635 transparency. Reserving the transparency color is useful for GIF optimization.
8636 If not set, the maximum of colors in the palette will be 256. You probably want
8637 to disable this option for a standalone image.
8638 Set by default.
8639
8640 @item stats_mode
8641 Set statistics mode.
8642
8643 It accepts the following values:
8644 @table @samp
8645 @item full
8646 Compute full frame histograms.
8647 @item diff
8648 Compute histograms only for the part that differs from previous frame. This
8649 might be relevant to give more importance to the moving part of your input if
8650 the background is static.
8651 @end table
8652
8653 Default value is @var{full}.
8654 @end table
8655
8656 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
8657 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
8658 color quantization of the palette. This information is also visible at
8659 @var{info} logging level.
8660
8661 @subsection Examples
8662
8663 @itemize
8664 @item
8665 Generate a representative palette of a given video using @command{ffmpeg}:
8666 @example
8667 ffmpeg -i input.mkv -vf palettegen palette.png
8668 @end example
8669 @end itemize
8670
8671 @section paletteuse
8672
8673 Use a palette to downsample an input video stream.
8674
8675 The filter takes two inputs: one video stream and a palette. The palette must
8676 be a 256 pixels image.
8677
8678 It accepts the following options:
8679
8680 @table @option
8681 @item dither
8682 Select dithering mode. Available algorithms are:
8683 @table @samp
8684 @item bayer
8685 Ordered 8x8 bayer dithering (deterministic)
8686 @item heckbert
8687 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
8688 Note: this dithering is sometimes considered "wrong" and is included as a
8689 reference.
8690 @item floyd_steinberg
8691 Floyd and Steingberg dithering (error diffusion)
8692 @item sierra2
8693 Frankie Sierra dithering v2 (error diffusion)
8694 @item sierra2_4a
8695 Frankie Sierra dithering v2 "Lite" (error diffusion)
8696 @end table
8697
8698 Default is @var{sierra2_4a}.
8699
8700 @item bayer_scale
8701 When @var{bayer} dithering is selected, this option defines the scale of the
8702 pattern (how much the crosshatch pattern is visible). A low value means more
8703 visible pattern for less banding, and higher value means less visible pattern
8704 at the cost of more banding.
8705
8706 The option must be an integer value in the range [0,5]. Default is @var{2}.
8707
8708 @item diff_mode
8709 If set, define the zone to process
8710
8711 @table @samp
8712 @item rectangle
8713 Only the changing rectangle will be reprocessed. This is similar to GIF
8714 cropping/offsetting compression mechanism. This option can be useful for speed
8715 if only a part of the image is changing, and has use cases such as limiting the
8716 scope of the error diffusal @option{dither} to the rectangle that bounds the
8717 moving scene (it leads to more deterministic output if the scene doesn't change
8718 much, and as a result less moving noise and better GIF compression).
8719 @end table
8720
8721 Default is @var{none}.
8722 @end table
8723
8724 @subsection Examples
8725
8726 @itemize
8727 @item
8728 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
8729 using @command{ffmpeg}:
8730 @example
8731 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
8732 @end example
8733 @end itemize
8734
8735 @section perspective
8736
8737 Correct perspective of video not recorded perpendicular to the screen.
8738
8739 A description of the accepted parameters follows.
8740
8741 @table @option
8742 @item x0
8743 @item y0
8744 @item x1
8745 @item y1
8746 @item x2
8747 @item y2
8748 @item x3
8749 @item y3
8750 Set coordinates expression for top left, top right, bottom left and bottom right corners.
8751 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
8752 If the @code{sense} option is set to @code{source}, then the specified points will be sent
8753 to the corners of the destination. If the @code{sense} option is set to @code{destination},
8754 then the corners of the source will be sent to the specified coordinates.
8755
8756 The expressions can use the following variables:
8757
8758 @table @option
8759 @item W
8760 @item H
8761 the width and height of video frame.
8762 @end table
8763
8764 @item interpolation
8765 Set interpolation for perspective correction.
8766
8767 It accepts the following values:
8768 @table @samp
8769 @item linear
8770 @item cubic
8771 @end table
8772
8773 Default value is @samp{linear}.
8774
8775 @item sense
8776 Set interpretation of coordinate options.
8777
8778 It accepts the following values:
8779 @table @samp
8780 @item 0, source
8781
8782 Send point in the source specified by the given coordinates to
8783 the corners of the destination.
8784
8785 @item 1, destination
8786
8787 Send the corners of the source to the point in the destination specified
8788 by the given coordinates.
8789
8790 Default value is @samp{source}.
8791 @end table
8792 @end table
8793
8794 @section phase
8795
8796 Delay interlaced video by one field time so that the field order changes.
8797
8798 The intended use is to fix PAL movies that have been captured with the
8799 opposite field order to the film-to-video transfer.
8800
8801 A description of the accepted parameters follows.
8802
8803 @table @option
8804 @item mode
8805 Set phase mode.
8806
8807 It accepts the following values:
8808 @table @samp
8809 @item t
8810 Capture field order top-first, transfer bottom-first.
8811 Filter will delay the bottom field.
8812
8813 @item b
8814 Capture field order bottom-first, transfer top-first.
8815 Filter will delay the top field.
8816
8817 @item p
8818 Capture and transfer with the same field order. This mode only exists
8819 for the documentation of the other options to refer to, but if you
8820 actually select it, the filter will faithfully do nothing.
8821
8822 @item a
8823 Capture field order determined automatically by field flags, transfer
8824 opposite.
8825 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
8826 basis using field flags. If no field information is available,
8827 then this works just like @samp{u}.
8828
8829 @item u
8830 Capture unknown or varying, transfer opposite.
8831 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
8832 analyzing the images and selecting the alternative that produces best
8833 match between the fields.
8834
8835 @item T
8836 Capture top-first, transfer unknown or varying.
8837 Filter selects among @samp{t} and @samp{p} using image analysis.
8838
8839 @item B
8840 Capture bottom-first, transfer unknown or varying.
8841 Filter selects among @samp{b} and @samp{p} using image analysis.
8842
8843 @item A
8844 Capture determined by field flags, transfer unknown or varying.
8845 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
8846 image analysis. If no field information is available, then this works just
8847 like @samp{U}. This is the default mode.
8848
8849 @item U
8850 Both capture and transfer unknown or varying.
8851 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
8852 @end table
8853 @end table
8854
8855 @section pixdesctest
8856
8857 Pixel format descriptor test filter, mainly useful for internal
8858 testing. The output video should be equal to the input video.
8859
8860 For example:
8861 @example
8862 format=monow, pixdesctest
8863 @end example
8864
8865 can be used to test the monowhite pixel format descriptor definition.
8866
8867 @section pp
8868
8869 Enable the specified chain of postprocessing subfilters using libpostproc. This
8870 library should be automatically selected with a GPL build (@code{--enable-gpl}).
8871 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
8872 Each subfilter and some options have a short and a long name that can be used
8873 interchangeably, i.e. dr/dering are the same.
8874
8875 The filters accept the following options:
8876
8877 @table @option
8878 @item subfilters
8879 Set postprocessing subfilters string.
8880 @end table
8881
8882 All subfilters share common options to determine their scope:
8883
8884 @table @option
8885 @item a/autoq
8886 Honor the quality commands for this subfilter.
8887
8888 @item c/chrom
8889 Do chrominance filtering, too (default).
8890
8891 @item y/nochrom
8892 Do luminance filtering only (no chrominance).
8893
8894 @item n/noluma
8895 Do chrominance filtering only (no luminance).
8896 @end table
8897
8898 These options can be appended after the subfilter name, separated by a '|'.
8899
8900 Available subfilters are:
8901
8902 @table @option
8903 @item hb/hdeblock[|difference[|flatness]]
8904 Horizontal deblocking filter
8905 @table @option
8906 @item difference
8907 Difference factor where higher values mean more deblocking (default: @code{32}).
8908 @item flatness
8909 Flatness threshold where lower values mean more deblocking (default: @code{39}).
8910 @end table
8911
8912 @item vb/vdeblock[|difference[|flatness]]
8913 Vertical deblocking filter
8914 @table @option
8915 @item difference
8916 Difference factor where higher values mean more deblocking (default: @code{32}).
8917 @item flatness
8918 Flatness threshold where lower values mean more deblocking (default: @code{39}).
8919 @end table
8920
8921 @item ha/hadeblock[|difference[|flatness]]
8922 Accurate horizontal deblocking filter
8923 @table @option
8924 @item difference
8925 Difference factor where higher values mean more deblocking (default: @code{32}).
8926 @item flatness
8927 Flatness threshold where lower values mean more deblocking (default: @code{39}).
8928 @end table
8929
8930 @item va/vadeblock[|difference[|flatness]]
8931 Accurate vertical deblocking filter
8932 @table @option
8933 @item difference
8934 Difference factor where higher values mean more deblocking (default: @code{32}).
8935 @item flatness
8936 Flatness threshold where lower values mean more deblocking (default: @code{39}).
8937 @end table
8938 @end table
8939
8940 The horizontal and vertical deblocking filters share the difference and
8941 flatness values so you cannot set different horizontal and vertical
8942 thresholds.
8943
8944 @table @option
8945 @item h1/x1hdeblock
8946 Experimental horizontal deblocking filter
8947
8948 @item v1/x1vdeblock
8949 Experimental vertical deblocking filter
8950
8951 @item dr/dering
8952 Deringing filter
8953
8954 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
8955 @table @option
8956 @item threshold1
8957 larger -> stronger filtering
8958 @item threshold2
8959 larger -> stronger filtering
8960 @item threshold3
8961 larger -> stronger filtering
8962 @end table
8963
8964 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
8965 @table @option
8966 @item f/fullyrange
8967 Stretch luminance to @code{0-255}.
8968 @end table
8969
8970 @item lb/linblenddeint
8971 Linear blend deinterlacing filter that deinterlaces the given block by
8972 filtering all lines with a @code{(1 2 1)} filter.
8973
8974 @item li/linipoldeint
8975 Linear interpolating deinterlacing filter that deinterlaces the given block by
8976 linearly interpolating every second line.
8977
8978 @item ci/cubicipoldeint
8979 Cubic interpolating deinterlacing filter deinterlaces the given block by
8980 cubically interpolating every second line.
8981
8982 @item md/mediandeint
8983 Median deinterlacing filter that deinterlaces the given block by applying a
8984 median filter to every second line.
8985
8986 @item fd/ffmpegdeint
8987 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
8988 second line with a @code{(-1 4 2 4 -1)} filter.
8989
8990 @item l5/lowpass5
8991 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
8992 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
8993
8994 @item fq/forceQuant[|quantizer]
8995 Overrides the quantizer table from the input with the constant quantizer you
8996 specify.
8997 @table @option
8998 @item quantizer
8999 Quantizer to use
9000 @end table
9001
9002 @item de/default
9003 Default pp filter combination (@code{hb|a,vb|a,dr|a})
9004
9005 @item fa/fast
9006 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
9007
9008 @item ac
9009 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
9010 @end table
9011
9012 @subsection Examples
9013
9014 @itemize
9015 @item
9016 Apply horizontal and vertical deblocking, deringing and automatic
9017 brightness/contrast:
9018 @example
9019 pp=hb/vb/dr/al
9020 @end example
9021
9022 @item
9023 Apply default filters without brightness/contrast correction:
9024 @example
9025 pp=de/-al
9026 @end example
9027
9028 @item
9029 Apply default filters and temporal denoiser:
9030 @example
9031 pp=default/tmpnoise|1|2|3
9032 @end example
9033
9034 @item
9035 Apply deblocking on luminance only, and switch vertical deblocking on or off
9036 automatically depending on available CPU time:
9037 @example
9038 pp=hb|y/vb|a
9039 @end example
9040 @end itemize
9041
9042 @section pp7
9043 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
9044 similar to spp = 6 with 7 point DCT, where only the center sample is
9045 used after IDCT.
9046
9047 The filter accepts the following options:
9048
9049 @table @option
9050 @item qp
9051 Force a constant quantization parameter. It accepts an integer in range
9052 0 to 63. If not set, the filter will use the QP from the video stream
9053 (if available).
9054
9055 @item mode
9056 Set thresholding mode. Available modes are:
9057
9058 @table @samp
9059 @item hard
9060 Set hard thresholding.
9061 @item soft
9062 Set soft thresholding (better de-ringing effect, but likely blurrier).
9063 @item medium
9064 Set medium thresholding (good results, default).
9065 @end table
9066 @end table
9067
9068 @section psnr
9069
9070 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
9071 Ratio) between two input videos.
9072
9073 This filter takes in input two input videos, the first input is
9074 considered the "main" source and is passed unchanged to the
9075 output. The second input is used as a "reference" video for computing
9076 the PSNR.
9077
9078 Both video inputs must have the same resolution and pixel format for
9079 this filter to work correctly. Also it assumes that both inputs
9080 have the same number of frames, which are compared one by one.
9081
9082 The obtained average PSNR is printed through the logging system.
9083
9084 The filter stores the accumulated MSE (mean squared error) of each
9085 frame, and at the end of the processing it is averaged across all frames
9086 equally, and the following formula is applied to obtain the PSNR:
9087
9088 @example
9089 PSNR = 10*log10(MAX^2/MSE)
9090 @end example
9091
9092 Where MAX is the average of the maximum values of each component of the
9093 image.
9094
9095 The description of the accepted parameters follows.
9096
9097 @table @option
9098 @item stats_file, f
9099 If specified the filter will use the named file to save the PSNR of
9100 each individual frame. When filename equals "-" the data is sent to
9101 standard output.
9102 @end table
9103
9104 The file printed if @var{stats_file} is selected, contains a sequence of
9105 key/value pairs of the form @var{key}:@var{value} for each compared
9106 couple of frames.
9107
9108 A description of each shown parameter follows:
9109
9110 @table @option
9111 @item n
9112 sequential number of the input frame, starting from 1
9113
9114 @item mse_avg
9115 Mean Square Error pixel-by-pixel average difference of the compared
9116 frames, averaged over all the image components.
9117
9118 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_g, mse_a
9119 Mean Square Error pixel-by-pixel average difference of the compared
9120 frames for the component specified by the suffix.
9121
9122 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
9123 Peak Signal to Noise ratio of the compared frames for the component
9124 specified by the suffix.
9125 @end table
9126
9127 For example:
9128 @example
9129 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
9130 [main][ref] psnr="stats_file=stats.log" [out]
9131 @end example
9132
9133 On this example the input file being processed is compared with the
9134 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
9135 is stored in @file{stats.log}.
9136
9137 @anchor{pullup}
9138 @section pullup
9139
9140 Pulldown reversal (inverse telecine) filter, capable of handling mixed
9141 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
9142 content.
9143
9144 The pullup filter is designed to take advantage of future context in making
9145 its decisions. This filter is stateless in the sense that it does not lock
9146 onto a pattern to follow, but it instead looks forward to the following
9147 fields in order to identify matches and rebuild progressive frames.
9148
9149 To produce content with an even framerate, insert the fps filter after
9150 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
9151 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
9152
9153 The filter accepts the following options:
9154
9155 @table @option
9156 @item jl
9157 @item jr
9158 @item jt
9159 @item jb
9160 These options set the amount of "junk" to ignore at the left, right, top, and
9161 bottom of the image, respectively. Left and right are in units of 8 pixels,
9162 while top and bottom are in units of 2 lines.
9163 The default is 8 pixels on each side.
9164
9165 @item sb
9166 Set the strict breaks. Setting this option to 1 will reduce the chances of
9167 filter generating an occasional mismatched frame, but it may also cause an
9168 excessive number of frames to be dropped during high motion sequences.
9169 Conversely, setting it to -1 will make filter match fields more easily.
9170 This may help processing of video where there is slight blurring between
9171 the fields, but may also cause there to be interlaced frames in the output.
9172 Default value is @code{0}.
9173
9174 @item mp
9175 Set the metric plane to use. It accepts the following values:
9176 @table @samp
9177 @item l
9178 Use luma plane.
9179
9180 @item u
9181 Use chroma blue plane.
9182
9183 @item v
9184 Use chroma red plane.
9185 @end table
9186
9187 This option may be set to use chroma plane instead of the default luma plane
9188 for doing filter's computations. This may improve accuracy on very clean
9189 source material, but more likely will decrease accuracy, especially if there
9190 is chroma noise (rainbow effect) or any grayscale video.
9191 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
9192 load and make pullup usable in realtime on slow machines.
9193 @end table
9194
9195 For best results (without duplicated frames in the output file) it is
9196 necessary to change the output frame rate. For example, to inverse
9197 telecine NTSC input:
9198 @example
9199 ffmpeg -i input -vf pullup -r 24000/1001 ...
9200 @end example
9201
9202 @section qp
9203
9204 Change video quantization parameters (QP).
9205
9206 The filter accepts the following option:
9207
9208 @table @option
9209 @item qp
9210 Set expression for quantization parameter.
9211 @end table
9212
9213 The expression is evaluated through the eval API and can contain, among others,
9214 the following constants:
9215
9216 @table @var
9217 @item known
9218 1 if index is not 129, 0 otherwise.
9219
9220 @item qp
9221 Sequentional index starting from -129 to 128.
9222 @end table
9223
9224 @subsection Examples
9225
9226 @itemize
9227 @item
9228 Some equation like:
9229 @example
9230 qp=2+2*sin(PI*qp)
9231 @end example
9232 @end itemize
9233
9234 @section random
9235
9236 Flush video frames from internal cache of frames into a random order.
9237 No frame is discarded.
9238 Inspired by @ref{frei0r} nervous filter.
9239
9240 @table @option
9241 @item frames
9242 Set size in number of frames of internal cache, in range from @code{2} to
9243 @code{512}. Default is @code{30}.
9244
9245 @item seed
9246 Set seed for random number generator, must be an integer included between
9247 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
9248 less than @code{0}, the filter will try to use a good random seed on a
9249 best effort basis.
9250 @end table
9251
9252 @section removegrain
9253
9254 The removegrain filter is a spatial denoiser for progressive video.
9255
9256 @table @option
9257 @item m0
9258 Set mode for the first plane.
9259
9260 @item m1
9261 Set mode for the second plane.
9262
9263 @item m2
9264 Set mode for the third plane.
9265
9266 @item m3
9267 Set mode for the fourth plane.
9268 @end table
9269
9270 Range of mode is from 0 to 24. Description of each mode follows:
9271
9272 @table @var
9273 @item 0
9274 Leave input plane unchanged. Default.
9275
9276 @item 1
9277 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
9278
9279 @item 2
9280 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
9281
9282 @item 3
9283 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
9284
9285 @item 4
9286 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
9287 This is equivalent to a median filter.
9288
9289 @item 5
9290 Line-sensitive clipping giving the minimal change.
9291
9292 @item 6
9293 Line-sensitive clipping, intermediate.
9294
9295 @item 7
9296 Line-sensitive clipping, intermediate.
9297
9298 @item 8
9299 Line-sensitive clipping, intermediate.
9300
9301 @item 9
9302 Line-sensitive clipping on a line where the neighbours pixels are the closest.
9303
9304 @item 10
9305 Replaces the target pixel with the closest neighbour.
9306
9307 @item 11
9308 [1 2 1] horizontal and vertical kernel blur.
9309
9310 @item 12
9311 Same as mode 11.
9312
9313 @item 13
9314 Bob mode, interpolates top field from the line where the neighbours
9315 pixels are the closest.
9316
9317 @item 14
9318 Bob mode, interpolates bottom field from the line where the neighbours
9319 pixels are the closest.
9320
9321 @item 15
9322 Bob mode, interpolates top field. Same as 13 but with a more complicated
9323 interpolation formula.
9324
9325 @item 16
9326 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
9327 interpolation formula.
9328
9329 @item 17
9330 Clips the pixel with the minimum and maximum of respectively the maximum and
9331 minimum of each pair of opposite neighbour pixels.
9332
9333 @item 18
9334 Line-sensitive clipping using opposite neighbours whose greatest distance from
9335 the current pixel is minimal.
9336
9337 @item 19
9338 Replaces the pixel with the average of its 8 neighbours.
9339
9340 @item 20
9341 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
9342
9343 @item 21
9344 Clips pixels using the averages of opposite neighbour.
9345
9346 @item 22
9347 Same as mode 21 but simpler and faster.
9348
9349 @item 23
9350 Small edge and halo removal, but reputed useless.
9351
9352 @item 24
9353 Similar as 23.
9354 @end table
9355
9356 @section removelogo
9357
9358 Suppress a TV station logo, using an image file to determine which
9359 pixels comprise the logo. It works by filling in the pixels that
9360 comprise the logo with neighboring pixels.
9361
9362 The filter accepts the following options:
9363
9364 @table @option
9365 @item filename, f
9366 Set the filter bitmap file, which can be any image format supported by
9367 libavformat. The width and height of the image file must match those of the
9368 video stream being processed.
9369 @end table
9370
9371 Pixels in the provided bitmap image with a value of zero are not
9372 considered part of the logo, non-zero pixels are considered part of
9373 the logo. If you use white (255) for the logo and black (0) for the
9374 rest, you will be safe. For making the filter bitmap, it is
9375 recommended to take a screen capture of a black frame with the logo
9376 visible, and then using a threshold filter followed by the erode
9377 filter once or twice.
9378
9379 If needed, little splotches can be fixed manually. Remember that if
9380 logo pixels are not covered, the filter quality will be much
9381 reduced. Marking too many pixels as part of the logo does not hurt as
9382 much, but it will increase the amount of blurring needed to cover over
9383 the image and will destroy more information than necessary, and extra
9384 pixels will slow things down on a large logo.
9385
9386 @section repeatfields
9387
9388 This filter uses the repeat_field flag from the Video ES headers and hard repeats
9389 fields based on its value.
9390
9391 @section reverse, areverse
9392
9393 Reverse a clip.
9394
9395 Warning: This filter requires memory to buffer the entire clip, so trimming
9396 is suggested.
9397
9398 @subsection Examples
9399
9400 @itemize
9401 @item
9402 Take the first 5 seconds of a clip, and reverse it.
9403 @example
9404 trim=end=5,reverse
9405 @end example
9406 @end itemize
9407
9408 @section rotate
9409
9410 Rotate video by an arbitrary angle expressed in radians.
9411
9412 The filter accepts the following options:
9413
9414 A description of the optional parameters follows.
9415 @table @option
9416 @item angle, a
9417 Set an expression for the angle by which to rotate the input video
9418 clockwise, expressed as a number of radians. A negative value will
9419 result in a counter-clockwise rotation. By default it is set to "0".
9420
9421 This expression is evaluated for each frame.
9422
9423 @item out_w, ow
9424 Set the output width expression, default value is "iw".
9425 This expression is evaluated just once during configuration.
9426
9427 @item out_h, oh
9428 Set the output height expression, default value is "ih".
9429 This expression is evaluated just once during configuration.
9430
9431 @item bilinear
9432 Enable bilinear interpolation if set to 1, a value of 0 disables
9433 it. Default value is 1.
9434
9435 @item fillcolor, c
9436 Set the color used to fill the output area not covered by the rotated
9437 image. For the general syntax of this option, check the "Color" section in the
9438 ffmpeg-utils manual. If the special value "none" is selected then no
9439 background is printed (useful for example if the background is never shown).
9440
9441 Default value is "black".
9442 @end table
9443
9444 The expressions for the angle and the output size can contain the
9445 following constants and functions:
9446
9447 @table @option
9448 @item n
9449 sequential number of the input frame, starting from 0. It is always NAN
9450 before the first frame is filtered.
9451
9452 @item t
9453 time in seconds of the input frame, it is set to 0 when the filter is
9454 configured. It is always NAN before the first frame is filtered.
9455
9456 @item hsub
9457 @item vsub
9458 horizontal and vertical chroma subsample values. For example for the
9459 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9460
9461 @item in_w, iw
9462 @item in_h, ih
9463 the input video width and height
9464
9465 @item out_w, ow
9466 @item out_h, oh
9467 the output width and height, that is the size of the padded area as
9468 specified by the @var{width} and @var{height} expressions
9469
9470 @item rotw(a)
9471 @item roth(a)
9472 the minimal width/height required for completely containing the input
9473 video rotated by @var{a} radians.
9474
9475 These are only available when computing the @option{out_w} and
9476 @option{out_h} expressions.
9477 @end table
9478
9479 @subsection Examples
9480
9481 @itemize
9482 @item
9483 Rotate the input by PI/6 radians clockwise:
9484 @example
9485 rotate=PI/6
9486 @end example
9487
9488 @item
9489 Rotate the input by PI/6 radians counter-clockwise:
9490 @example
9491 rotate=-PI/6
9492 @end example
9493
9494 @item
9495 Rotate the input by 45 degrees clockwise:
9496 @example
9497 rotate=45*PI/180
9498 @end example
9499
9500 @item
9501 Apply a constant rotation with period T, starting from an angle of PI/3:
9502 @example
9503 rotate=PI/3+2*PI*t/T
9504 @end example
9505
9506 @item
9507 Make the input video rotation oscillating with a period of T
9508 seconds and an amplitude of A radians:
9509 @example
9510 rotate=A*sin(2*PI/T*t)
9511 @end example
9512
9513 @item
9514 Rotate the video, output size is chosen so that the whole rotating
9515 input video is always completely contained in the output:
9516 @example
9517 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
9518 @end example
9519
9520 @item
9521 Rotate the video, reduce the output size so that no background is ever
9522 shown:
9523 @example
9524 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
9525 @end example
9526 @end itemize
9527
9528 @subsection Commands
9529
9530 The filter supports the following commands:
9531
9532 @table @option
9533 @item a, angle
9534 Set the angle expression.
9535 The command accepts the same syntax of the corresponding option.
9536
9537 If the specified expression is not valid, it is kept at its current
9538 value.
9539 @end table
9540
9541 @section sab
9542
9543 Apply Shape Adaptive Blur.
9544
9545 The filter accepts the following options:
9546
9547 @table @option
9548 @item luma_radius, lr
9549 Set luma blur filter strength, must be a value in range 0.1-4.0, default
9550 value is 1.0. A greater value will result in a more blurred image, and
9551 in slower processing.
9552
9553 @item luma_pre_filter_radius, lpfr
9554 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
9555 value is 1.0.
9556
9557 @item luma_strength, ls
9558 Set luma maximum difference between pixels to still be considered, must
9559 be a value in the 0.1-100.0 range, default value is 1.0.
9560
9561 @item chroma_radius, cr
9562 Set chroma blur filter strength, must be a value in range 0.1-4.0. A
9563 greater value will result in a more blurred image, and in slower
9564 processing.
9565
9566 @item chroma_pre_filter_radius, cpfr
9567 Set chroma pre-filter radius, must be a value in the 0.1-2.0 range.
9568
9569 @item chroma_strength, cs
9570 Set chroma maximum difference between pixels to still be considered,
9571 must be a value in the 0.1-100.0 range.
9572 @end table
9573
9574 Each chroma option value, if not explicitly specified, is set to the
9575 corresponding luma option value.
9576
9577 @anchor{scale}
9578 @section scale
9579
9580 Scale (resize) the input video, using the libswscale library.
9581
9582 The scale filter forces the output display aspect ratio to be the same
9583 of the input, by changing the output sample aspect ratio.
9584
9585 If the input image format is different from the format requested by
9586 the next filter, the scale filter will convert the input to the
9587 requested format.
9588
9589 @subsection Options
9590 The filter accepts the following options, or any of the options
9591 supported by the libswscale scaler.
9592
9593 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
9594 the complete list of scaler options.
9595
9596 @table @option
9597 @item width, w
9598 @item height, h
9599 Set the output video dimension expression. Default value is the input
9600 dimension.
9601
9602 If the value is 0, the input width is used for the output.
9603
9604 If one of the values is -1, the scale filter will use a value that
9605 maintains the aspect ratio of the input image, calculated from the
9606 other specified dimension. If both of them are -1, the input size is
9607 used
9608
9609 If one of the values is -n with n > 1, the scale filter will also use a value
9610 that maintains the aspect ratio of the input image, calculated from the other
9611 specified dimension. After that it will, however, make sure that the calculated
9612 dimension is divisible by n and adjust the value if necessary.
9613
9614 See below for the list of accepted constants for use in the dimension
9615 expression.
9616
9617 @item interl
9618 Set the interlacing mode. It accepts the following values:
9619
9620 @table @samp
9621 @item 1
9622 Force interlaced aware scaling.
9623
9624 @item 0
9625 Do not apply interlaced scaling.
9626
9627 @item -1
9628 Select interlaced aware scaling depending on whether the source frames
9629 are flagged as interlaced or not.
9630 @end table
9631
9632 Default value is @samp{0}.
9633
9634 @item flags
9635 Set libswscale scaling flags. See
9636 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
9637 complete list of values. If not explicitly specified the filter applies
9638 the default flags.
9639
9640 @item size, s
9641 Set the video size. For the syntax of this option, check the
9642 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
9643
9644 @item in_color_matrix
9645 @item out_color_matrix
9646 Set in/output YCbCr color space type.
9647
9648 This allows the autodetected value to be overridden as well as allows forcing
9649 a specific value used for the output and encoder.
9650
9651 If not specified, the color space type depends on the pixel format.
9652
9653 Possible values:
9654
9655 @table @samp
9656 @item auto
9657 Choose automatically.
9658
9659 @item bt709
9660 Format conforming to International Telecommunication Union (ITU)
9661 Recommendation BT.709.
9662
9663 @item fcc
9664 Set color space conforming to the United States Federal Communications
9665 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
9666
9667 @item bt601
9668 Set color space conforming to:
9669
9670 @itemize
9671 @item
9672 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
9673
9674 @item
9675 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
9676
9677 @item
9678 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
9679
9680 @end itemize
9681
9682 @item smpte240m
9683 Set color space conforming to SMPTE ST 240:1999.
9684 @end table
9685
9686 @item in_range
9687 @item out_range
9688 Set in/output YCbCr sample range.
9689
9690 This allows the autodetected value to be overridden as well as allows forcing
9691 a specific value used for the output and encoder. If not specified, the
9692 range depends on the pixel format. Possible values:
9693
9694 @table @samp
9695 @item auto
9696 Choose automatically.
9697
9698 @item jpeg/full/pc
9699 Set full range (0-255 in case of 8-bit luma).
9700
9701 @item mpeg/tv
9702 Set "MPEG" range (16-235 in case of 8-bit luma).
9703 @end table
9704
9705 @item force_original_aspect_ratio
9706 Enable decreasing or increasing output video width or height if necessary to
9707 keep the original aspect ratio. Possible values:
9708
9709 @table @samp
9710 @item disable
9711 Scale the video as specified and disable this feature.
9712
9713 @item decrease
9714 The output video dimensions will automatically be decreased if needed.
9715
9716 @item increase
9717 The output video dimensions will automatically be increased if needed.
9718
9719 @end table
9720
9721 One useful instance of this option is that when you know a specific device's
9722 maximum allowed resolution, you can use this to limit the output video to
9723 that, while retaining the aspect ratio. For example, device A allows
9724 1280x720 playback, and your video is 1920x800. Using this option (set it to
9725 decrease) and specifying 1280x720 to the command line makes the output
9726 1280x533.
9727
9728 Please note that this is a different thing than specifying -1 for @option{w}
9729 or @option{h}, you still need to specify the output resolution for this option
9730 to work.
9731
9732 @end table
9733
9734 The values of the @option{w} and @option{h} options are expressions
9735 containing the following constants:
9736
9737 @table @var
9738 @item in_w
9739 @item in_h
9740 The input width and height
9741
9742 @item iw
9743 @item ih
9744 These are the same as @var{in_w} and @var{in_h}.
9745
9746 @item out_w
9747 @item out_h
9748 The output (scaled) width and height
9749
9750 @item ow
9751 @item oh
9752 These are the same as @var{out_w} and @var{out_h}
9753
9754 @item a
9755 The same as @var{iw} / @var{ih}
9756
9757 @item sar
9758 input sample aspect ratio
9759
9760 @item dar
9761 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
9762
9763 @item hsub
9764 @item vsub
9765 horizontal and vertical input chroma subsample values. For example for the
9766 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9767
9768 @item ohsub
9769 @item ovsub
9770 horizontal and vertical output chroma subsample values. For example for the
9771 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9772 @end table
9773
9774 @subsection Examples
9775
9776 @itemize
9777 @item
9778 Scale the input video to a size of 200x100
9779 @example
9780 scale=w=200:h=100
9781 @end example
9782
9783 This is equivalent to:
9784 @example
9785 scale=200:100
9786 @end example
9787
9788 or:
9789 @example
9790 scale=200x100
9791 @end example
9792
9793 @item
9794 Specify a size abbreviation for the output size:
9795 @example
9796 scale=qcif
9797 @end example
9798
9799 which can also be written as:
9800 @example
9801 scale=size=qcif
9802 @end example
9803
9804 @item
9805 Scale the input to 2x:
9806 @example
9807 scale=w=2*iw:h=2*ih
9808 @end example
9809
9810 @item
9811 The above is the same as:
9812 @example
9813 scale=2*in_w:2*in_h
9814 @end example
9815
9816 @item
9817 Scale the input to 2x with forced interlaced scaling:
9818 @example
9819 scale=2*iw:2*ih:interl=1
9820 @end example
9821
9822 @item
9823 Scale the input to half size:
9824 @example
9825 scale=w=iw/2:h=ih/2
9826 @end example
9827
9828 @item
9829 Increase the width, and set the height to the same size:
9830 @example
9831 scale=3/2*iw:ow
9832 @end example
9833
9834 @item
9835 Seek Greek harmony:
9836 @example
9837 scale=iw:1/PHI*iw
9838 scale=ih*PHI:ih
9839 @end example
9840
9841 @item
9842 Increase the height, and set the width to 3/2 of the height:
9843 @example
9844 scale=w=3/2*oh:h=3/5*ih
9845 @end example
9846
9847 @item
9848 Increase the size, making the size a multiple of the chroma
9849 subsample values:
9850 @example
9851 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
9852 @end example
9853
9854 @item
9855 Increase the width to a maximum of 500 pixels,
9856 keeping the same aspect ratio as the input:
9857 @example
9858 scale=w='min(500\, iw*3/2):h=-1'
9859 @end example
9860 @end itemize
9861
9862 @subsection Commands
9863
9864 This filter supports the following commands:
9865 @table @option
9866 @item width, w
9867 @item height, h
9868 Set the output video dimension expression.
9869 The command accepts the same syntax of the corresponding option.
9870
9871 If the specified expression is not valid, it is kept at its current
9872 value.
9873 @end table
9874
9875 @section scale2ref
9876
9877 Scale (resize) the input video, based on a reference video.
9878
9879 See the scale filter for available options, scale2ref supports the same but
9880 uses the reference video instead of the main input as basis.
9881
9882 @subsection Examples
9883
9884 @itemize
9885 @item
9886 Scale a subtitle stream to match the main video in size before overlaying
9887 @example
9888 'scale2ref[b][a];[a][b]overlay'
9889 @end example
9890 @end itemize
9891
9892 @section separatefields
9893
9894 The @code{separatefields} takes a frame-based video input and splits
9895 each frame into its components fields, producing a new half height clip
9896 with twice the frame rate and twice the frame count.
9897
9898 This filter use field-dominance information in frame to decide which
9899 of each pair of fields to place first in the output.
9900 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
9901
9902 @section setdar, setsar
9903
9904 The @code{setdar} filter sets the Display Aspect Ratio for the filter
9905 output video.
9906
9907 This is done by changing the specified Sample (aka Pixel) Aspect
9908 Ratio, according to the following equation:
9909 @example
9910 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
9911 @end example
9912
9913 Keep in mind that the @code{setdar} filter does not modify the pixel
9914 dimensions of the video frame. Also, the display aspect ratio set by
9915 this filter may be changed by later filters in the filterchain,
9916 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
9917 applied.
9918
9919 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
9920 the filter output video.
9921
9922 Note that as a consequence of the application of this filter, the
9923 output display aspect ratio will change according to the equation
9924 above.
9925
9926 Keep in mind that the sample aspect ratio set by the @code{setsar}
9927 filter may be changed by later filters in the filterchain, e.g. if
9928 another "setsar" or a "setdar" filter is applied.
9929
9930 It accepts the following parameters:
9931
9932 @table @option
9933 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
9934 Set the aspect ratio used by the filter.
9935
9936 The parameter can be a floating point number string, an expression, or
9937 a string of the form @var{num}:@var{den}, where @var{num} and
9938 @var{den} are the numerator and denominator of the aspect ratio. If
9939 the parameter is not specified, it is assumed the value "0".
9940 In case the form "@var{num}:@var{den}" is used, the @code{:} character
9941 should be escaped.
9942
9943 @item max
9944 Set the maximum integer value to use for expressing numerator and
9945 denominator when reducing the expressed aspect ratio to a rational.
9946 Default value is @code{100}.
9947
9948 @end table
9949
9950 The parameter @var{sar} is an expression containing
9951 the following constants:
9952
9953 @table @option
9954 @item E, PI, PHI
9955 These are approximated values for the mathematical constants e
9956 (Euler's number), pi (Greek pi), and phi (the golden ratio).
9957
9958 @item w, h
9959 The input width and height.
9960
9961 @item a
9962 These are the same as @var{w} / @var{h}.
9963
9964 @item sar
9965 The input sample aspect ratio.
9966
9967 @item dar
9968 The input display aspect ratio. It is the same as
9969 (@var{w} / @var{h}) * @var{sar}.
9970
9971 @item hsub, vsub
9972 Horizontal and vertical chroma subsample values. For example, for the
9973 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9974 @end table
9975
9976 @subsection Examples
9977
9978 @itemize
9979
9980 @item
9981 To change the display aspect ratio to 16:9, specify one of the following:
9982 @example
9983 setdar=dar=1.77777
9984 setdar=dar=16/9
9985 setdar=dar=1.77777
9986 @end example
9987
9988 @item
9989 To change the sample aspect ratio to 10:11, specify:
9990 @example
9991 setsar=sar=10/11
9992 @end example
9993
9994 @item
9995 To set a display aspect ratio of 16:9, and specify a maximum integer value of
9996 1000 in the aspect ratio reduction, use the command:
9997 @example
9998 setdar=ratio=16/9:max=1000
9999 @end example
10000
10001 @end itemize
10002
10003 @anchor{setfield}
10004 @section setfield
10005
10006 Force field for the output video frame.
10007
10008 The @code{setfield} filter marks the interlace type field for the
10009 output frames. It does not change the input frame, but only sets the
10010 corresponding property, which affects how the frame is treated by
10011 following filters (e.g. @code{fieldorder} or @code{yadif}).
10012
10013 The filter accepts the following options:
10014
10015 @table @option
10016
10017 @item mode
10018 Available values are:
10019
10020 @table @samp
10021 @item auto
10022 Keep the same field property.
10023
10024 @item bff
10025 Mark the frame as bottom-field-first.
10026
10027 @item tff
10028 Mark the frame as top-field-first.
10029
10030 @item prog
10031 Mark the frame as progressive.
10032 @end table
10033 @end table
10034
10035 @section showinfo
10036
10037 Show a line containing various information for each input video frame.
10038 The input video is not modified.
10039
10040 The shown line contains a sequence of key/value pairs of the form
10041 @var{key}:@var{value}.
10042
10043 The following values are shown in the output:
10044
10045 @table @option
10046 @item n
10047 The (sequential) number of the input frame, starting from 0.
10048
10049 @item pts
10050 The Presentation TimeStamp of the input frame, expressed as a number of
10051 time base units. The time base unit depends on the filter input pad.
10052
10053 @item pts_time
10054 The Presentation TimeStamp of the input frame, expressed as a number of
10055 seconds.
10056
10057 @item pos
10058 The position of the frame in the input stream, or -1 if this information is
10059 unavailable and/or meaningless (for example in case of synthetic video).
10060
10061 @item fmt
10062 The pixel format name.
10063
10064 @item sar
10065 The sample aspect ratio of the input frame, expressed in the form
10066 @var{num}/@var{den}.
10067
10068 @item s
10069 The size of the input frame. For the syntax of this option, check the
10070 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
10071
10072 @item i
10073 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
10074 for bottom field first).
10075
10076 @item iskey
10077 This is 1 if the frame is a key frame, 0 otherwise.
10078
10079 @item type
10080 The picture type of the input frame ("I" for an I-frame, "P" for a
10081 P-frame, "B" for a B-frame, or "?" for an unknown type).
10082 Also refer to the documentation of the @code{AVPictureType} enum and of
10083 the @code{av_get_picture_type_char} function defined in
10084 @file{libavutil/avutil.h}.
10085
10086 @item checksum
10087 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
10088
10089 @item plane_checksum
10090 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
10091 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
10092 @end table
10093
10094 @section showpalette
10095
10096 Displays the 256 colors palette of each frame. This filter is only relevant for
10097 @var{pal8} pixel format frames.
10098
10099 It accepts the following option:
10100
10101 @table @option
10102 @item s
10103 Set the size of the box used to represent one palette color entry. Default is
10104 @code{30} (for a @code{30x30} pixel box).
10105 @end table
10106
10107 @section shuffleframes
10108
10109 Reorder and/or duplicate video frames.
10110
10111 It accepts the following parameters:
10112
10113 @table @option
10114 @item mapping
10115 Set the destination indexes of input frames.
10116 This is space or '|' separated list of indexes that maps input frames to output
10117 frames. Number of indexes also sets maximal value that each index may have.
10118 @end table
10119
10120 The first frame has the index 0. The default is to keep the input unchanged.
10121
10122 Swap second and third frame of every three frames of the input:
10123 @example
10124 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
10125 @end example
10126
10127 @section shuffleplanes
10128
10129 Reorder and/or duplicate video planes.
10130
10131 It accepts the following parameters:
10132
10133 @table @option
10134
10135 @item map0
10136 The index of the input plane to be used as the first output plane.
10137
10138 @item map1
10139 The index of the input plane to be used as the second output plane.
10140
10141 @item map2
10142 The index of the input plane to be used as the third output plane.
10143
10144 @item map3
10145 The index of the input plane to be used as the fourth output plane.
10146
10147 @end table
10148
10149 The first plane has the index 0. The default is to keep the input unchanged.
10150
10151 Swap the second and third planes of the input:
10152 @example
10153 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
10154 @end example
10155
10156 @anchor{signalstats}
10157 @section signalstats
10158 Evaluate various visual metrics that assist in determining issues associated
10159 with the digitization of analog video media.
10160
10161 By default the filter will log these metadata values:
10162
10163 @table @option
10164 @item YMIN
10165 Display the minimal Y value contained within the input frame. Expressed in
10166 range of [0-255].
10167
10168 @item YLOW
10169 Display the Y value at the 10% percentile within the input frame. Expressed in
10170 range of [0-255].
10171
10172 @item YAVG
10173 Display the average Y value within the input frame. Expressed in range of
10174 [0-255].
10175
10176 @item YHIGH
10177 Display the Y value at the 90% percentile within the input frame. Expressed in
10178 range of [0-255].
10179
10180 @item YMAX
10181 Display the maximum Y value contained within the input frame. Expressed in
10182 range of [0-255].
10183
10184 @item UMIN
10185 Display the minimal U value contained within the input frame. Expressed in
10186 range of [0-255].
10187
10188 @item ULOW
10189 Display the U value at the 10% percentile within the input frame. Expressed in
10190 range of [0-255].
10191
10192 @item UAVG
10193 Display the average U value within the input frame. Expressed in range of
10194 [0-255].
10195
10196 @item UHIGH
10197 Display the U value at the 90% percentile within the input frame. Expressed in
10198 range of [0-255].
10199
10200 @item UMAX
10201 Display the maximum U value contained within the input frame. Expressed in
10202 range of [0-255].
10203
10204 @item VMIN
10205 Display the minimal V value contained within the input frame. Expressed in
10206 range of [0-255].
10207
10208 @item VLOW
10209 Display the V value at the 10% percentile within the input frame. Expressed in
10210 range of [0-255].
10211
10212 @item VAVG
10213 Display the average V value within the input frame. Expressed in range of
10214 [0-255].
10215
10216 @item VHIGH
10217 Display the V value at the 90% percentile within the input frame. Expressed in
10218 range of [0-255].
10219
10220 @item VMAX
10221 Display the maximum V value contained within the input frame. Expressed in
10222 range of [0-255].
10223
10224 @item SATMIN
10225 Display the minimal saturation value contained within the input frame.
10226 Expressed in range of [0-~181.02].
10227
10228 @item SATLOW
10229 Display the saturation value at the 10% percentile within the input frame.
10230 Expressed in range of [0-~181.02].
10231
10232 @item SATAVG
10233 Display the average saturation value within the input frame. Expressed in range
10234 of [0-~181.02].
10235
10236 @item SATHIGH
10237 Display the saturation value at the 90% percentile within the input frame.
10238 Expressed in range of [0-~181.02].
10239
10240 @item SATMAX
10241 Display the maximum saturation value contained within the input frame.
10242 Expressed in range of [0-~181.02].
10243
10244 @item HUEMED
10245 Display the median value for hue within the input frame. Expressed in range of
10246 [0-360].
10247
10248 @item HUEAVG
10249 Display the average value for hue within the input frame. Expressed in range of
10250 [0-360].
10251
10252 @item YDIF
10253 Display the average of sample value difference between all values of the Y
10254 plane in the current frame and corresponding values of the previous input frame.
10255 Expressed in range of [0-255].
10256
10257 @item UDIF
10258 Display the average of sample value difference between all values of the U
10259 plane in the current frame and corresponding values of the previous input frame.
10260 Expressed in range of [0-255].
10261
10262 @item VDIF
10263 Display the average of sample value difference between all values of the V
10264 plane in the current frame and corresponding values of the previous input frame.
10265 Expressed in range of [0-255].
10266 @end table
10267
10268 The filter accepts the following options:
10269
10270 @table @option
10271 @item stat
10272 @item out
10273
10274 @option{stat} specify an additional form of image analysis.
10275 @option{out} output video with the specified type of pixel highlighted.
10276
10277 Both options accept the following values:
10278
10279 @table @samp
10280 @item tout
10281 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
10282 unlike the neighboring pixels of the same field. Examples of temporal outliers
10283 include the results of video dropouts, head clogs, or tape tracking issues.
10284
10285 @item vrep
10286 Identify @var{vertical line repetition}. Vertical line repetition includes
10287 similar rows of pixels within a frame. In born-digital video vertical line
10288 repetition is common, but this pattern is uncommon in video digitized from an
10289 analog source. When it occurs in video that results from the digitization of an
10290 analog source it can indicate concealment from a dropout compensator.
10291
10292 @item brng
10293 Identify pixels that fall outside of legal broadcast range.
10294 @end table
10295
10296 @item color, c
10297 Set the highlight color for the @option{out} option. The default color is
10298 yellow.
10299 @end table
10300
10301 @subsection Examples
10302
10303 @itemize
10304 @item
10305 Output data of various video metrics:
10306 @example
10307 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
10308 @end example
10309
10310 @item
10311 Output specific data about the minimum and maximum values of the Y plane per frame:
10312 @example
10313 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
10314 @end example
10315
10316 @item
10317 Playback video while highlighting pixels that are outside of broadcast range in red.
10318 @example
10319 ffplay example.mov -vf signalstats="out=brng:color=red"
10320 @end example
10321
10322 @item
10323 Playback video with signalstats metadata drawn over the frame.
10324 @example
10325 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
10326 @end example
10327
10328 The contents of signalstat_drawtext.txt used in the command are:
10329 @example
10330 time %@{pts:hms@}
10331 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
10332 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
10333 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
10334 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
10335
10336 @end example
10337 @end itemize
10338
10339 @anchor{smartblur}
10340 @section smartblur
10341
10342 Blur the input video without impacting the outlines.
10343
10344 It accepts the following options:
10345
10346 @table @option
10347 @item luma_radius, lr
10348 Set the luma radius. The option value must be a float number in
10349 the range [0.1,5.0] that specifies the variance of the gaussian filter
10350 used to blur the image (slower if larger). Default value is 1.0.
10351
10352 @item luma_strength, ls
10353 Set the luma strength. The option value must be a float number
10354 in the range [-1.0,1.0] that configures the blurring. A value included
10355 in [0.0,1.0] will blur the image whereas a value included in
10356 [-1.0,0.0] will sharpen the image. Default value is 1.0.
10357
10358 @item luma_threshold, lt
10359 Set the luma threshold used as a coefficient to determine
10360 whether a pixel should be blurred or not. The option value must be an
10361 integer in the range [-30,30]. A value of 0 will filter all the image,
10362 a value included in [0,30] will filter flat areas and a value included
10363 in [-30,0] will filter edges. Default value is 0.
10364
10365 @item chroma_radius, cr
10366 Set the chroma radius. The option value must be a float number in
10367 the range [0.1,5.0] that specifies the variance of the gaussian filter
10368 used to blur the image (slower if larger). Default value is 1.0.
10369
10370 @item chroma_strength, cs
10371 Set the chroma strength. The option value must be a float number
10372 in the range [-1.0,1.0] that configures the blurring. A value included
10373 in [0.0,1.0] will blur the image whereas a value included in
10374 [-1.0,0.0] will sharpen the image. Default value is 1.0.
10375
10376 @item chroma_threshold, ct
10377 Set the chroma threshold used as a coefficient to determine
10378 whether a pixel should be blurred or not. The option value must be an
10379 integer in the range [-30,30]. A value of 0 will filter all the image,
10380 a value included in [0,30] will filter flat areas and a value included
10381 in [-30,0] will filter edges. Default value is 0.
10382 @end table
10383
10384 If a chroma option is not explicitly set, the corresponding luma value
10385 is set.
10386
10387 @section ssim
10388
10389 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
10390
10391 This filter takes in input two input videos, the first input is
10392 considered the "main" source and is passed unchanged to the
10393 output. The second input is used as a "reference" video for computing
10394 the SSIM.
10395
10396 Both video inputs must have the same resolution and pixel format for
10397 this filter to work correctly. Also it assumes that both inputs
10398 have the same number of frames, which are compared one by one.
10399
10400 The filter stores the calculated SSIM of each frame.
10401
10402 The description of the accepted parameters follows.
10403
10404 @table @option
10405 @item stats_file, f
10406 If specified the filter will use the named file to save the SSIM of
10407 each individual frame. When filename equals "-" the data is sent to
10408 standard output.
10409 @end table
10410
10411 The file printed if @var{stats_file} is selected, contains a sequence of
10412 key/value pairs of the form @var{key}:@var{value} for each compared
10413 couple of frames.
10414
10415 A description of each shown parameter follows:
10416
10417 @table @option
10418 @item n
10419 sequential number of the input frame, starting from 1
10420
10421 @item Y, U, V, R, G, B
10422 SSIM of the compared frames for the component specified by the suffix.
10423
10424 @item All
10425 SSIM of the compared frames for the whole frame.
10426
10427 @item dB
10428 Same as above but in dB representation.
10429 @end table
10430
10431 For example:
10432 @example
10433 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
10434 [main][ref] ssim="stats_file=stats.log" [out]
10435 @end example
10436
10437 On this example the input file being processed is compared with the
10438 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
10439 is stored in @file{stats.log}.
10440
10441 Another example with both psnr and ssim at same time:
10442 @example
10443 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
10444 @end example
10445
10446 @section stereo3d
10447
10448 Convert between different stereoscopic image formats.
10449
10450 The filters accept the following options:
10451
10452 @table @option
10453 @item in
10454 Set stereoscopic image format of input.
10455
10456 Available values for input image formats are:
10457 @table @samp
10458 @item sbsl
10459 side by side parallel (left eye left, right eye right)
10460
10461 @item sbsr
10462 side by side crosseye (right eye left, left eye right)
10463
10464 @item sbs2l
10465 side by side parallel with half width resolution
10466 (left eye left, right eye right)
10467
10468 @item sbs2r
10469 side by side crosseye with half width resolution
10470 (right eye left, left eye right)
10471
10472 @item abl
10473 above-below (left eye above, right eye below)
10474
10475 @item abr
10476 above-below (right eye above, left eye below)
10477
10478 @item ab2l
10479 above-below with half height resolution
10480 (left eye above, right eye below)
10481
10482 @item ab2r
10483 above-below with half height resolution
10484 (right eye above, left eye below)
10485
10486 @item al
10487 alternating frames (left eye first, right eye second)
10488
10489 @item ar
10490 alternating frames (right eye first, left eye second)
10491
10492 @item irl
10493 interleaved rows (left eye has top row, right eye starts on next row)
10494
10495 @item irr
10496 interleaved rows (right eye has top row, left eye starts on next row)
10497
10498 Default value is @samp{sbsl}.
10499 @end table
10500
10501 @item out
10502 Set stereoscopic image format of output.
10503
10504 Available values for output image formats are all the input formats as well as:
10505 @table @samp
10506 @item arbg
10507 anaglyph red/blue gray
10508 (red filter on left eye, blue filter on right eye)
10509
10510 @item argg
10511 anaglyph red/green gray
10512 (red filter on left eye, green filter on right eye)
10513
10514 @item arcg
10515 anaglyph red/cyan gray
10516 (red filter on left eye, cyan filter on right eye)
10517
10518 @item arch
10519 anaglyph red/cyan half colored
10520 (red filter on left eye, cyan filter on right eye)
10521
10522 @item arcc
10523 anaglyph red/cyan color
10524 (red filter on left eye, cyan filter on right eye)
10525
10526 @item arcd
10527 anaglyph red/cyan color optimized with the least squares projection of dubois
10528 (red filter on left eye, cyan filter on right eye)
10529
10530 @item agmg
10531 anaglyph green/magenta gray
10532 (green filter on left eye, magenta filter on right eye)
10533
10534 @item agmh
10535 anaglyph green/magenta half colored
10536 (green filter on left eye, magenta filter on right eye)
10537
10538 @item agmc
10539 anaglyph green/magenta colored
10540 (green filter on left eye, magenta filter on right eye)
10541
10542 @item agmd
10543 anaglyph green/magenta color optimized with the least squares projection of dubois
10544 (green filter on left eye, magenta filter on right eye)
10545
10546 @item aybg
10547 anaglyph yellow/blue gray
10548 (yellow filter on left eye, blue filter on right eye)
10549
10550 @item aybh
10551 anaglyph yellow/blue half colored
10552 (yellow filter on left eye, blue filter on right eye)
10553
10554 @item aybc
10555 anaglyph yellow/blue colored
10556 (yellow filter on left eye, blue filter on right eye)
10557
10558 @item aybd
10559 anaglyph yellow/blue color optimized with the least squares projection of dubois
10560 (yellow filter on left eye, blue filter on right eye)
10561
10562 @item ml
10563 mono output (left eye only)
10564
10565 @item mr
10566 mono output (right eye only)
10567
10568 @item chl
10569 checkerboard, left eye first
10570
10571 @item chr
10572 checkerboard, right eye first
10573
10574 @item icl
10575 interleaved columns, left eye first
10576
10577 @item icr
10578 interleaved columns, right eye first
10579 @end table
10580
10581 Default value is @samp{arcd}.
10582 @end table
10583
10584 @subsection Examples
10585
10586 @itemize
10587 @item
10588 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
10589 @example
10590 stereo3d=sbsl:aybd
10591 @end example
10592
10593 @item
10594 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
10595 @example
10596 stereo3d=abl:sbsr
10597 @end example
10598 @end itemize
10599
10600 @anchor{spp}
10601 @section spp
10602
10603 Apply a simple postprocessing filter that compresses and decompresses the image
10604 at several (or - in the case of @option{quality} level @code{6} - all) shifts
10605 and average the results.
10606
10607 The filter accepts the following options:
10608
10609 @table @option
10610 @item quality
10611 Set quality. This option defines the number of levels for averaging. It accepts
10612 an integer in the range 0-6. If set to @code{0}, the filter will have no
10613 effect. A value of @code{6} means the higher quality. For each increment of
10614 that value the speed drops by a factor of approximately 2.  Default value is
10615 @code{3}.
10616
10617 @item qp
10618 Force a constant quantization parameter. If not set, the filter will use the QP
10619 from the video stream (if available).
10620
10621 @item mode
10622 Set thresholding mode. Available modes are:
10623
10624 @table @samp
10625 @item hard
10626 Set hard thresholding (default).
10627 @item soft
10628 Set soft thresholding (better de-ringing effect, but likely blurrier).
10629 @end table
10630
10631 @item use_bframe_qp
10632 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
10633 option may cause flicker since the B-Frames have often larger QP. Default is
10634 @code{0} (not enabled).
10635 @end table
10636
10637 @anchor{subtitles}
10638 @section subtitles
10639
10640 Draw subtitles on top of input video using the libass library.
10641
10642 To enable compilation of this filter you need to configure FFmpeg with
10643 @code{--enable-libass}. This filter also requires a build with libavcodec and
10644 libavformat to convert the passed subtitles file to ASS (Advanced Substation
10645 Alpha) subtitles format.
10646
10647 The filter accepts the following options:
10648
10649 @table @option
10650 @item filename, f
10651 Set the filename of the subtitle file to read. It must be specified.
10652
10653 @item original_size
10654 Specify the size of the original video, the video for which the ASS file
10655 was composed. For the syntax of this option, check the
10656 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
10657 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
10658 correctly scale the fonts if the aspect ratio has been changed.
10659
10660 @item fontsdir
10661 Set a directory path containing fonts that can be used by the filter.
10662 These fonts will be used in addition to whatever the font provider uses.
10663
10664 @item charenc
10665 Set subtitles input character encoding. @code{subtitles} filter only. Only
10666 useful if not UTF-8.
10667
10668 @item stream_index, si
10669 Set subtitles stream index. @code{subtitles} filter only.
10670
10671 @item force_style
10672 Override default style or script info parameters of the subtitles. It accepts a
10673 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
10674 @end table
10675
10676 If the first key is not specified, it is assumed that the first value
10677 specifies the @option{filename}.
10678
10679 For example, to render the file @file{sub.srt} on top of the input
10680 video, use the command:
10681 @example
10682 subtitles=sub.srt
10683 @end example
10684
10685 which is equivalent to:
10686 @example
10687 subtitles=filename=sub.srt
10688 @end example
10689
10690 To render the default subtitles stream from file @file{video.mkv}, use:
10691 @example
10692 subtitles=video.mkv
10693 @end example
10694
10695 To render the second subtitles stream from that file, use:
10696 @example
10697 subtitles=video.mkv:si=1
10698 @end example
10699
10700 To make the subtitles stream from @file{sub.srt} appear in transparent green
10701 @code{DejaVu Serif}, use:
10702 @example
10703 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HAA00FF00'
10704 @end example
10705
10706 @section super2xsai
10707
10708 Scale the input by 2x and smooth using the Super2xSaI (Scale and
10709 Interpolate) pixel art scaling algorithm.
10710
10711 Useful for enlarging pixel art images without reducing sharpness.
10712
10713 @section swapuv
10714 Swap U & V plane.
10715
10716 @section telecine
10717
10718 Apply telecine process to the video.
10719
10720 This filter accepts the following options:
10721
10722 @table @option
10723 @item first_field
10724 @table @samp
10725 @item top, t
10726 top field first
10727 @item bottom, b
10728 bottom field first
10729 The default value is @code{top}.
10730 @end table
10731
10732 @item pattern
10733 A string of numbers representing the pulldown pattern you wish to apply.
10734 The default value is @code{23}.
10735 @end table
10736
10737 @example
10738 Some typical patterns:
10739
10740 NTSC output (30i):
10741 27.5p: 32222
10742 24p: 23 (classic)
10743 24p: 2332 (preferred)
10744 20p: 33
10745 18p: 334
10746 16p: 3444
10747
10748 PAL output (25i):
10749 27.5p: 12222
10750 24p: 222222222223 ("Euro pulldown")
10751 16.67p: 33
10752 16p: 33333334
10753 @end example
10754
10755 @section thumbnail
10756 Select the most representative frame in a given sequence of consecutive frames.
10757
10758 The filter accepts the following options:
10759
10760 @table @option
10761 @item n
10762 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
10763 will pick one of them, and then handle the next batch of @var{n} frames until
10764 the end. Default is @code{100}.
10765 @end table
10766
10767 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
10768 value will result in a higher memory usage, so a high value is not recommended.
10769
10770 @subsection Examples
10771
10772 @itemize
10773 @item
10774 Extract one picture each 50 frames:
10775 @example
10776 thumbnail=50
10777 @end example
10778
10779 @item
10780 Complete example of a thumbnail creation with @command{ffmpeg}:
10781 @example
10782 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
10783 @end example
10784 @end itemize
10785
10786 @section tile
10787
10788 Tile several successive frames together.
10789
10790 The filter accepts the following options:
10791
10792 @table @option
10793
10794 @item layout
10795 Set the grid size (i.e. the number of lines and columns). For the syntax of
10796 this option, check the
10797 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
10798
10799 @item nb_frames
10800 Set the maximum number of frames to render in the given area. It must be less
10801 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
10802 the area will be used.
10803
10804 @item margin
10805 Set the outer border margin in pixels.
10806
10807 @item padding
10808 Set the inner border thickness (i.e. the number of pixels between frames). For
10809 more advanced padding options (such as having different values for the edges),
10810 refer to the pad video filter.
10811
10812 @item color
10813 Specify the color of the unused area. For the syntax of this option, check the
10814 "Color" section in the ffmpeg-utils manual. The default value of @var{color}
10815 is "black".
10816 @end table
10817
10818 @subsection Examples
10819
10820 @itemize
10821 @item
10822 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
10823 @example
10824 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
10825 @end example
10826 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
10827 duplicating each output frame to accommodate the originally detected frame
10828 rate.
10829
10830 @item
10831 Display @code{5} pictures in an area of @code{3x2} frames,
10832 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
10833 mixed flat and named options:
10834 @example
10835 tile=3x2:nb_frames=5:padding=7:margin=2
10836 @end example
10837 @end itemize
10838
10839 @section tinterlace
10840
10841 Perform various types of temporal field interlacing.
10842
10843 Frames are counted starting from 1, so the first input frame is
10844 considered odd.
10845
10846 The filter accepts the following options:
10847
10848 @table @option
10849
10850 @item mode
10851 Specify the mode of the interlacing. This option can also be specified
10852 as a value alone. See below for a list of values for this option.
10853
10854 Available values are:
10855
10856 @table @samp
10857 @item merge, 0
10858 Move odd frames into the upper field, even into the lower field,
10859 generating a double height frame at half frame rate.
10860 @example
10861  ------> time
10862 Input:
10863 Frame 1         Frame 2         Frame 3         Frame 4
10864
10865 11111           22222           33333           44444
10866 11111           22222           33333           44444
10867 11111           22222           33333           44444
10868 11111           22222           33333           44444
10869
10870 Output:
10871 11111                           33333
10872 22222                           44444
10873 11111                           33333
10874 22222                           44444
10875 11111                           33333
10876 22222                           44444
10877 11111                           33333
10878 22222                           44444
10879 @end example
10880
10881 @item drop_odd, 1
10882 Only output even frames, odd frames are dropped, generating a frame with
10883 unchanged height at half frame rate.
10884
10885 @example
10886  ------> time
10887 Input:
10888 Frame 1         Frame 2         Frame 3         Frame 4
10889
10890 11111           22222           33333           44444
10891 11111           22222           33333           44444
10892 11111           22222           33333           44444
10893 11111           22222           33333           44444
10894
10895 Output:
10896                 22222                           44444
10897                 22222                           44444
10898                 22222                           44444
10899                 22222                           44444
10900 @end example
10901
10902 @item drop_even, 2
10903 Only output odd frames, even frames are dropped, generating a frame with
10904 unchanged height at half frame rate.
10905
10906 @example
10907  ------> time
10908 Input:
10909 Frame 1         Frame 2         Frame 3         Frame 4
10910
10911 11111           22222           33333           44444
10912 11111           22222           33333           44444
10913 11111           22222           33333           44444
10914 11111           22222           33333           44444
10915
10916 Output:
10917 11111                           33333
10918 11111                           33333
10919 11111                           33333
10920 11111                           33333
10921 @end example
10922
10923 @item pad, 3
10924 Expand each frame to full height, but pad alternate lines with black,
10925 generating a frame with double height at the same input frame rate.
10926
10927 @example
10928  ------> time
10929 Input:
10930 Frame 1         Frame 2         Frame 3         Frame 4
10931
10932 11111           22222           33333           44444
10933 11111           22222           33333           44444
10934 11111           22222           33333           44444
10935 11111           22222           33333           44444
10936
10937 Output:
10938 11111           .....           33333           .....
10939 .....           22222           .....           44444
10940 11111           .....           33333           .....
10941 .....           22222           .....           44444
10942 11111           .....           33333           .....
10943 .....           22222           .....           44444
10944 11111           .....           33333           .....
10945 .....           22222           .....           44444
10946 @end example
10947
10948
10949 @item interleave_top, 4
10950 Interleave the upper field from odd frames with the lower field from
10951 even frames, generating a frame with unchanged height at half frame rate.
10952
10953 @example
10954  ------> time
10955 Input:
10956 Frame 1         Frame 2         Frame 3         Frame 4
10957
10958 11111<-         22222           33333<-         44444
10959 11111           22222<-         33333           44444<-
10960 11111<-         22222           33333<-         44444
10961 11111           22222<-         33333           44444<-
10962
10963 Output:
10964 11111                           33333
10965 22222                           44444
10966 11111                           33333
10967 22222                           44444
10968 @end example
10969
10970
10971 @item interleave_bottom, 5
10972 Interleave the lower field from odd frames with the upper field from
10973 even frames, generating a frame with unchanged height at half frame rate.
10974
10975 @example
10976  ------> time
10977 Input:
10978 Frame 1         Frame 2         Frame 3         Frame 4
10979
10980 11111           22222<-         33333           44444<-
10981 11111<-         22222           33333<-         44444
10982 11111           22222<-         33333           44444<-
10983 11111<-         22222           33333<-         44444
10984
10985 Output:
10986 22222                           44444
10987 11111                           33333
10988 22222                           44444
10989 11111                           33333
10990 @end example
10991
10992
10993 @item interlacex2, 6
10994 Double frame rate with unchanged height. Frames are inserted each
10995 containing the second temporal field from the previous input frame and
10996 the first temporal field from the next input frame. This mode relies on
10997 the top_field_first flag. Useful for interlaced video displays with no
10998 field synchronisation.
10999
11000 @example
11001  ------> time
11002 Input:
11003 Frame 1         Frame 2         Frame 3         Frame 4
11004
11005 11111           22222           33333           44444
11006  11111           22222           33333           44444
11007 11111           22222           33333           44444
11008  11111           22222           33333           44444
11009
11010 Output:
11011 11111   22222   22222   33333   33333   44444   44444
11012  11111   11111   22222   22222   33333   33333   44444
11013 11111   22222   22222   33333   33333   44444   44444
11014  11111   11111   22222   22222   33333   33333   44444
11015 @end example
11016
11017 @item mergex2, 7
11018 Move odd frames into the upper field, even into the lower field,
11019 generating a double height frame at same frame rate.
11020 @example
11021  ------> time
11022 Input:
11023 Frame 1         Frame 2         Frame 3         Frame 4
11024
11025 11111           22222           33333           44444
11026 11111           22222           33333           44444
11027 11111           22222           33333           44444
11028 11111           22222           33333           44444
11029
11030 Output:
11031 11111           33333           33333           55555
11032 22222           22222           44444           44444
11033 11111           33333           33333           55555
11034 22222           22222           44444           44444
11035 11111           33333           33333           55555
11036 22222           22222           44444           44444
11037 11111           33333           33333           55555
11038 22222           22222           44444           44444
11039 @end example
11040
11041 @end table
11042
11043 Numeric values are deprecated but are accepted for backward
11044 compatibility reasons.
11045
11046 Default mode is @code{merge}.
11047
11048 @item flags
11049 Specify flags influencing the filter process.
11050
11051 Available value for @var{flags} is:
11052
11053 @table @option
11054 @item low_pass_filter, vlfp
11055 Enable vertical low-pass filtering in the filter.
11056 Vertical low-pass filtering is required when creating an interlaced
11057 destination from a progressive source which contains high-frequency
11058 vertical detail. Filtering will reduce interlace 'twitter' and Moire
11059 patterning.
11060
11061 Vertical low-pass filtering can only be enabled for @option{mode}
11062 @var{interleave_top} and @var{interleave_bottom}.
11063
11064 @end table
11065 @end table
11066
11067 @section transpose
11068
11069 Transpose rows with columns in the input video and optionally flip it.
11070
11071 It accepts the following parameters:
11072
11073 @table @option
11074
11075 @item dir
11076 Specify the transposition direction.
11077
11078 Can assume the following values:
11079 @table @samp
11080 @item 0, 4, cclock_flip
11081 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
11082 @example
11083 L.R     L.l
11084 . . ->  . .
11085 l.r     R.r
11086 @end example
11087
11088 @item 1, 5, clock
11089 Rotate by 90 degrees clockwise, that is:
11090 @example
11091 L.R     l.L
11092 . . ->  . .
11093 l.r     r.R
11094 @end example
11095
11096 @item 2, 6, cclock
11097 Rotate by 90 degrees counterclockwise, that is:
11098 @example
11099 L.R     R.r
11100 . . ->  . .
11101 l.r     L.l
11102 @end example
11103
11104 @item 3, 7, clock_flip
11105 Rotate by 90 degrees clockwise and vertically flip, that is:
11106 @example
11107 L.R     r.R
11108 . . ->  . .
11109 l.r     l.L
11110 @end example
11111 @end table
11112
11113 For values between 4-7, the transposition is only done if the input
11114 video geometry is portrait and not landscape. These values are
11115 deprecated, the @code{passthrough} option should be used instead.
11116
11117 Numerical values are deprecated, and should be dropped in favor of
11118 symbolic constants.
11119
11120 @item passthrough
11121 Do not apply the transposition if the input geometry matches the one
11122 specified by the specified value. It accepts the following values:
11123 @table @samp
11124 @item none
11125 Always apply transposition.
11126 @item portrait
11127 Preserve portrait geometry (when @var{height} >= @var{width}).
11128 @item landscape
11129 Preserve landscape geometry (when @var{width} >= @var{height}).
11130 @end table
11131
11132 Default value is @code{none}.
11133 @end table
11134
11135 For example to rotate by 90 degrees clockwise and preserve portrait
11136 layout:
11137 @example
11138 transpose=dir=1:passthrough=portrait
11139 @end example
11140
11141 The command above can also be specified as:
11142 @example
11143 transpose=1:portrait
11144 @end example
11145
11146 @section trim
11147 Trim the input so that the output contains one continuous subpart of the input.
11148
11149 It accepts the following parameters:
11150 @table @option
11151 @item start
11152 Specify the time of the start of the kept section, i.e. the frame with the
11153 timestamp @var{start} will be the first frame in the output.
11154
11155 @item end
11156 Specify the time of the first frame that will be dropped, i.e. the frame
11157 immediately preceding the one with the timestamp @var{end} will be the last
11158 frame in the output.
11159
11160 @item start_pts
11161 This is the same as @var{start}, except this option sets the start timestamp
11162 in timebase units instead of seconds.
11163
11164 @item end_pts
11165 This is the same as @var{end}, except this option sets the end timestamp
11166 in timebase units instead of seconds.
11167
11168 @item duration
11169 The maximum duration of the output in seconds.
11170
11171 @item start_frame
11172 The number of the first frame that should be passed to the output.
11173
11174 @item end_frame
11175 The number of the first frame that should be dropped.
11176 @end table
11177
11178 @option{start}, @option{end}, and @option{duration} are expressed as time
11179 duration specifications; see
11180 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
11181 for the accepted syntax.
11182
11183 Note that the first two sets of the start/end options and the @option{duration}
11184 option look at the frame timestamp, while the _frame variants simply count the
11185 frames that pass through the filter. Also note that this filter does not modify
11186 the timestamps. If you wish for the output timestamps to start at zero, insert a
11187 setpts filter after the trim filter.
11188
11189 If multiple start or end options are set, this filter tries to be greedy and
11190 keep all the frames that match at least one of the specified constraints. To keep
11191 only the part that matches all the constraints at once, chain multiple trim
11192 filters.
11193
11194 The defaults are such that all the input is kept. So it is possible to set e.g.
11195 just the end values to keep everything before the specified time.
11196
11197 Examples:
11198 @itemize
11199 @item
11200 Drop everything except the second minute of input:
11201 @example
11202 ffmpeg -i INPUT -vf trim=60:120
11203 @end example
11204
11205 @item
11206 Keep only the first second:
11207 @example
11208 ffmpeg -i INPUT -vf trim=duration=1
11209 @end example
11210
11211 @end itemize
11212
11213
11214 @anchor{unsharp}
11215 @section unsharp
11216
11217 Sharpen or blur the input video.
11218
11219 It accepts the following parameters:
11220
11221 @table @option
11222 @item luma_msize_x, lx
11223 Set the luma matrix horizontal size. It must be an odd integer between
11224 3 and 63. The default value is 5.
11225
11226 @item luma_msize_y, ly
11227 Set the luma matrix vertical size. It must be an odd integer between 3
11228 and 63. The default value is 5.
11229
11230 @item luma_amount, la
11231 Set the luma effect strength. It must be a floating point number, reasonable
11232 values lay between -1.5 and 1.5.
11233
11234 Negative values will blur the input video, while positive values will
11235 sharpen it, a value of zero will disable the effect.
11236
11237 Default value is 1.0.
11238
11239 @item chroma_msize_x, cx
11240 Set the chroma matrix horizontal size. It must be an odd integer
11241 between 3 and 63. The default value is 5.
11242
11243 @item chroma_msize_y, cy
11244 Set the chroma matrix vertical size. It must be an odd integer
11245 between 3 and 63. The default value is 5.
11246
11247 @item chroma_amount, ca
11248 Set the chroma effect strength. It must be a floating point number, reasonable
11249 values lay between -1.5 and 1.5.
11250
11251 Negative values will blur the input video, while positive values will
11252 sharpen it, a value of zero will disable the effect.
11253
11254 Default value is 0.0.
11255
11256 @item opencl
11257 If set to 1, specify using OpenCL capabilities, only available if
11258 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
11259
11260 @end table
11261
11262 All parameters are optional and default to the equivalent of the
11263 string '5:5:1.0:5:5:0.0'.
11264
11265 @subsection Examples
11266
11267 @itemize
11268 @item
11269 Apply strong luma sharpen effect:
11270 @example
11271 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
11272 @end example
11273
11274 @item
11275 Apply a strong blur of both luma and chroma parameters:
11276 @example
11277 unsharp=7:7:-2:7:7:-2
11278 @end example
11279 @end itemize
11280
11281 @section uspp
11282
11283 Apply ultra slow/simple postprocessing filter that compresses and decompresses
11284 the image at several (or - in the case of @option{quality} level @code{8} - all)
11285 shifts and average the results.
11286
11287 The way this differs from the behavior of spp is that uspp actually encodes &
11288 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
11289 DCT similar to MJPEG.
11290
11291 The filter accepts the following options:
11292
11293 @table @option
11294 @item quality
11295 Set quality. This option defines the number of levels for averaging. It accepts
11296 an integer in the range 0-8. If set to @code{0}, the filter will have no
11297 effect. A value of @code{8} means the higher quality. For each increment of
11298 that value the speed drops by a factor of approximately 2.  Default value is
11299 @code{3}.
11300
11301 @item qp
11302 Force a constant quantization parameter. If not set, the filter will use the QP
11303 from the video stream (if available).
11304 @end table
11305
11306 @section vectorscope
11307
11308 Display 2 color component values in the two dimensional graph (which is called
11309 a vectorscope).
11310
11311 This filter accepts the following options:
11312
11313 @table @option
11314 @item mode, m
11315 Set vectorscope mode.
11316
11317 It accepts the following values:
11318 @table @samp
11319 @item gray
11320 Gray values are displayed on graph, higher brightness means more pixels have
11321 same component color value on location in graph. This is the default mode.
11322
11323 @item color
11324 Gray values are displayed on graph. Surrounding pixels values which are not
11325 present in video frame are drawn in gradient of 2 color components which are
11326 set by option @code{x} and @code{y}.
11327
11328 @item color2
11329 Actual color components values present in video frame are displayed on graph.
11330
11331 @item color3
11332 Similar as color2 but higher frequency of same values @code{x} and @code{y}
11333 on graph increases value of another color component, which is luminance by
11334 default values of @code{x} and @code{y}.
11335
11336 @item color4
11337 Actual colors present in video frame are displayed on graph. If two different
11338 colors map to same position on graph then color with higher value of component
11339 not present in graph is picked.
11340 @end table
11341
11342 @item x
11343 Set which color component will be represented on X-axis. Default is @code{1}.
11344
11345 @item y
11346 Set which color component will be represented on Y-axis. Default is @code{2}.
11347
11348 @item intensity, i
11349 Set intensity, used by modes: gray, color and color3 for increasing brightness
11350 of color component which represents frequency of (X, Y) location in graph.
11351
11352 @item envelope, e
11353 @table @samp
11354 @item none
11355 No envelope, this is default.
11356
11357 @item instant
11358 Instant envelope, even darkest single pixel will be clearly highlighted.
11359
11360 @item peak
11361 Hold maximum and minimum values presented in graph over time. This way you
11362 can still spot out of range values without constantly looking at vectorscope.
11363
11364 @item peak+instant
11365 Peak and instant envelope combined together.
11366 @end table
11367 @end table
11368
11369 @anchor{vidstabdetect}
11370 @section vidstabdetect
11371
11372 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
11373 @ref{vidstabtransform} for pass 2.
11374
11375 This filter generates a file with relative translation and rotation
11376 transform information about subsequent frames, which is then used by
11377 the @ref{vidstabtransform} filter.
11378
11379 To enable compilation of this filter you need to configure FFmpeg with
11380 @code{--enable-libvidstab}.
11381
11382 This filter accepts the following options:
11383
11384 @table @option
11385 @item result
11386 Set the path to the file used to write the transforms information.
11387 Default value is @file{transforms.trf}.
11388
11389 @item shakiness
11390 Set how shaky the video is and how quick the camera is. It accepts an
11391 integer in the range 1-10, a value of 1 means little shakiness, a
11392 value of 10 means strong shakiness. Default value is 5.
11393
11394 @item accuracy
11395 Set the accuracy of the detection process. It must be a value in the
11396 range 1-15. A value of 1 means low accuracy, a value of 15 means high
11397 accuracy. Default value is 15.
11398
11399 @item stepsize
11400 Set stepsize of the search process. The region around minimum is
11401 scanned with 1 pixel resolution. Default value is 6.
11402
11403 @item mincontrast
11404 Set minimum contrast. Below this value a local measurement field is
11405 discarded. Must be a floating point value in the range 0-1. Default
11406 value is 0.3.
11407
11408 @item tripod
11409 Set reference frame number for tripod mode.
11410
11411 If enabled, the motion of the frames is compared to a reference frame
11412 in the filtered stream, identified by the specified number. The idea
11413 is to compensate all movements in a more-or-less static scene and keep
11414 the camera view absolutely still.
11415
11416 If set to 0, it is disabled. The frames are counted starting from 1.
11417
11418 @item show
11419 Show fields and transforms in the resulting frames. It accepts an
11420 integer in the range 0-2. Default value is 0, which disables any
11421 visualization.
11422 @end table
11423
11424 @subsection Examples
11425
11426 @itemize
11427 @item
11428 Use default values:
11429 @example
11430 vidstabdetect
11431 @end example
11432
11433 @item
11434 Analyze strongly shaky movie and put the results in file
11435 @file{mytransforms.trf}:
11436 @example
11437 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
11438 @end example
11439
11440 @item
11441 Visualize the result of internal transformations in the resulting
11442 video:
11443 @example
11444 vidstabdetect=show=1
11445 @end example
11446
11447 @item
11448 Analyze a video with medium shakiness using @command{ffmpeg}:
11449 @example
11450 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
11451 @end example
11452 @end itemize
11453
11454 @anchor{vidstabtransform}
11455 @section vidstabtransform
11456
11457 Video stabilization/deshaking: pass 2 of 2,
11458 see @ref{vidstabdetect} for pass 1.
11459
11460 Read a file with transform information for each frame and
11461 apply/compensate them. Together with the @ref{vidstabdetect}
11462 filter this can be used to deshake videos. See also
11463 @url{http://public.hronopik.de/vid.stab}. It is important to also use
11464 the @ref{unsharp} filter, see below.
11465
11466 To enable compilation of this filter you need to configure FFmpeg with
11467 @code{--enable-libvidstab}.
11468
11469 @subsection Options
11470
11471 @table @option
11472 @item input
11473 Set path to the file used to read the transforms. Default value is
11474 @file{transforms.trf}.
11475
11476 @item smoothing
11477 Set the number of frames (value*2 + 1) used for lowpass filtering the
11478 camera movements. Default value is 10.
11479
11480 For example a number of 10 means that 21 frames are used (10 in the
11481 past and 10 in the future) to smoothen the motion in the video. A
11482 larger value leads to a smoother video, but limits the acceleration of
11483 the camera (pan/tilt movements). 0 is a special case where a static
11484 camera is simulated.
11485
11486 @item optalgo
11487 Set the camera path optimization algorithm.
11488
11489 Accepted values are:
11490 @table @samp
11491 @item gauss
11492 gaussian kernel low-pass filter on camera motion (default)
11493 @item avg
11494 averaging on transformations
11495 @end table
11496
11497 @item maxshift
11498 Set maximal number of pixels to translate frames. Default value is -1,
11499 meaning no limit.
11500
11501 @item maxangle
11502 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
11503 value is -1, meaning no limit.
11504
11505 @item crop
11506 Specify how to deal with borders that may be visible due to movement
11507 compensation.
11508
11509 Available values are:
11510 @table @samp
11511 @item keep
11512 keep image information from previous frame (default)
11513 @item black
11514 fill the border black
11515 @end table
11516
11517 @item invert
11518 Invert transforms if set to 1. Default value is 0.
11519
11520 @item relative
11521 Consider transforms as relative to previous frame if set to 1,
11522 absolute if set to 0. Default value is 0.
11523
11524 @item zoom
11525 Set percentage to zoom. A positive value will result in a zoom-in
11526 effect, a negative value in a zoom-out effect. Default value is 0 (no
11527 zoom).
11528
11529 @item optzoom
11530 Set optimal zooming to avoid borders.
11531
11532 Accepted values are:
11533 @table @samp
11534 @item 0
11535 disabled
11536 @item 1
11537 optimal static zoom value is determined (only very strong movements
11538 will lead to visible borders) (default)
11539 @item 2
11540 optimal adaptive zoom value is determined (no borders will be
11541 visible), see @option{zoomspeed}
11542 @end table
11543
11544 Note that the value given at zoom is added to the one calculated here.
11545
11546 @item zoomspeed
11547 Set percent to zoom maximally each frame (enabled when
11548 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
11549 0.25.
11550
11551 @item interpol
11552 Specify type of interpolation.
11553
11554 Available values are:
11555 @table @samp
11556 @item no
11557 no interpolation
11558 @item linear
11559 linear only horizontal
11560 @item bilinear
11561 linear in both directions (default)
11562 @item bicubic
11563 cubic in both directions (slow)
11564 @end table
11565
11566 @item tripod
11567 Enable virtual tripod mode if set to 1, which is equivalent to
11568 @code{relative=0:smoothing=0}. Default value is 0.
11569
11570 Use also @code{tripod} option of @ref{vidstabdetect}.
11571
11572 @item debug
11573 Increase log verbosity if set to 1. Also the detected global motions
11574 are written to the temporary file @file{global_motions.trf}. Default
11575 value is 0.
11576 @end table
11577
11578 @subsection Examples
11579
11580 @itemize
11581 @item
11582 Use @command{ffmpeg} for a typical stabilization with default values:
11583 @example
11584 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
11585 @end example
11586
11587 Note the use of the @ref{unsharp} filter which is always recommended.
11588
11589 @item
11590 Zoom in a bit more and load transform data from a given file:
11591 @example
11592 vidstabtransform=zoom=5:input="mytransforms.trf"
11593 @end example
11594
11595 @item
11596 Smoothen the video even more:
11597 @example
11598 vidstabtransform=smoothing=30
11599 @end example
11600 @end itemize
11601
11602 @section vflip
11603
11604 Flip the input video vertically.
11605
11606 For example, to vertically flip a video with @command{ffmpeg}:
11607 @example
11608 ffmpeg -i in.avi -vf "vflip" out.avi
11609 @end example
11610
11611 @anchor{vignette}
11612 @section vignette
11613
11614 Make or reverse a natural vignetting effect.
11615
11616 The filter accepts the following options:
11617
11618 @table @option
11619 @item angle, a
11620 Set lens angle expression as a number of radians.
11621
11622 The value is clipped in the @code{[0,PI/2]} range.
11623
11624 Default value: @code{"PI/5"}
11625
11626 @item x0
11627 @item y0
11628 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
11629 by default.
11630
11631 @item mode
11632 Set forward/backward mode.
11633
11634 Available modes are:
11635 @table @samp
11636 @item forward
11637 The larger the distance from the central point, the darker the image becomes.
11638
11639 @item backward
11640 The larger the distance from the central point, the brighter the image becomes.
11641 This can be used to reverse a vignette effect, though there is no automatic
11642 detection to extract the lens @option{angle} and other settings (yet). It can
11643 also be used to create a burning effect.
11644 @end table
11645
11646 Default value is @samp{forward}.
11647
11648 @item eval
11649 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
11650
11651 It accepts the following values:
11652 @table @samp
11653 @item init
11654 Evaluate expressions only once during the filter initialization.
11655
11656 @item frame
11657 Evaluate expressions for each incoming frame. This is way slower than the
11658 @samp{init} mode since it requires all the scalers to be re-computed, but it
11659 allows advanced dynamic expressions.
11660 @end table
11661
11662 Default value is @samp{init}.
11663
11664 @item dither
11665 Set dithering to reduce the circular banding effects. Default is @code{1}
11666 (enabled).
11667
11668 @item aspect
11669 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
11670 Setting this value to the SAR of the input will make a rectangular vignetting
11671 following the dimensions of the video.
11672
11673 Default is @code{1/1}.
11674 @end table
11675
11676 @subsection Expressions
11677
11678 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
11679 following parameters.
11680
11681 @table @option
11682 @item w
11683 @item h
11684 input width and height
11685
11686 @item n
11687 the number of input frame, starting from 0
11688
11689 @item pts
11690 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
11691 @var{TB} units, NAN if undefined
11692
11693 @item r
11694 frame rate of the input video, NAN if the input frame rate is unknown
11695
11696 @item t
11697 the PTS (Presentation TimeStamp) of the filtered video frame,
11698 expressed in seconds, NAN if undefined
11699
11700 @item tb
11701 time base of the input video
11702 @end table
11703
11704
11705 @subsection Examples
11706
11707 @itemize
11708 @item
11709 Apply simple strong vignetting effect:
11710 @example
11711 vignette=PI/4
11712 @end example
11713
11714 @item
11715 Make a flickering vignetting:
11716 @example
11717 vignette='PI/4+random(1)*PI/50':eval=frame
11718 @end example
11719
11720 @end itemize
11721
11722 @section vstack
11723 Stack input videos vertically.
11724
11725 All streams must be of same pixel format and of same width.
11726
11727 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
11728 to create same output.
11729
11730 The filter accept the following option:
11731
11732 @table @option
11733 @item inputs
11734 Set number of input streams. Default is 2.
11735
11736 @item shortest
11737 If set to 1, force the output to terminate when the shortest input
11738 terminates. Default value is 0.
11739 @end table
11740
11741 @section w3fdif
11742
11743 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
11744 Deinterlacing Filter").
11745
11746 Based on the process described by Martin Weston for BBC R&D, and
11747 implemented based on the de-interlace algorithm written by Jim
11748 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
11749 uses filter coefficients calculated by BBC R&D.
11750
11751 There are two sets of filter coefficients, so called "simple":
11752 and "complex". Which set of filter coefficients is used can
11753 be set by passing an optional parameter:
11754
11755 @table @option
11756 @item filter
11757 Set the interlacing filter coefficients. Accepts one of the following values:
11758
11759 @table @samp
11760 @item simple
11761 Simple filter coefficient set.
11762 @item complex
11763 More-complex filter coefficient set.
11764 @end table
11765 Default value is @samp{complex}.
11766
11767 @item deint
11768 Specify which frames to deinterlace. Accept one of the following values:
11769
11770 @table @samp
11771 @item all
11772 Deinterlace all frames,
11773 @item interlaced
11774 Only deinterlace frames marked as interlaced.
11775 @end table
11776
11777 Default value is @samp{all}.
11778 @end table
11779
11780 @section waveform
11781 Video waveform monitor.
11782
11783 The waveform monitor plots color component intensity. By default luminance
11784 only. Each column of the waveform corresponds to a column of pixels in the
11785 source video.
11786
11787 It accepts the following options:
11788
11789 @table @option
11790 @item mode, m
11791 Can be either @code{row}, or @code{column}. Default is @code{column}.
11792 In row mode, the graph on the left side represents color component value 0 and
11793 the right side represents value = 255. In column mode, the top side represents
11794 color component value = 0 and bottom side represents value = 255.
11795
11796 @item intensity, i
11797 Set intensity. Smaller values are useful to find out how many values of the same
11798 luminance are distributed across input rows/columns.
11799 Default value is @code{0.04}. Allowed range is [0, 1].
11800
11801 @item mirror, r
11802 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
11803 In mirrored mode, higher values will be represented on the left
11804 side for @code{row} mode and at the top for @code{column} mode. Default is
11805 @code{1} (mirrored).
11806
11807 @item display, d
11808 Set display mode.
11809 It accepts the following values:
11810 @table @samp
11811 @item overlay
11812 Presents information identical to that in the @code{parade}, except
11813 that the graphs representing color components are superimposed directly
11814 over one another.
11815
11816 This display mode makes it easier to spot relative differences or similarities
11817 in overlapping areas of the color components that are supposed to be identical,
11818 such as neutral whites, grays, or blacks.
11819
11820 @item parade
11821 Display separate graph for the color components side by side in
11822 @code{row} mode or one below the other in @code{column} mode.
11823
11824 Using this display mode makes it easy to spot color casts in the highlights
11825 and shadows of an image, by comparing the contours of the top and the bottom
11826 graphs of each waveform. Since whites, grays, and blacks are characterized
11827 by exactly equal amounts of red, green, and blue, neutral areas of the picture
11828 should display three waveforms of roughly equal width/height. If not, the
11829 correction is easy to perform by making level adjustments the three waveforms.
11830 @end table
11831 Default is @code{parade}.
11832
11833 @item components, c
11834 Set which color components to display. Default is 1, which means only luminance
11835 or red color component if input is in RGB colorspace. If is set for example to
11836 7 it will display all 3 (if) available color components.
11837
11838 @item envelope, e
11839 @table @samp
11840 @item none
11841 No envelope, this is default.
11842
11843 @item instant
11844 Instant envelope, minimum and maximum values presented in graph will be easily
11845 visible even with small @code{step} value.
11846
11847 @item peak
11848 Hold minimum and maximum values presented in graph across time. This way you
11849 can still spot out of range values without constantly looking at waveforms.
11850
11851 @item peak+instant
11852 Peak and instant envelope combined together.
11853 @end table
11854
11855 @item filter, f
11856 @table @samp
11857 @item lowpass
11858 No filtering, this is default.
11859
11860 @item flat
11861 Luma and chroma combined together.
11862
11863 @item aflat
11864 Similar as above, but shows difference between blue and red chroma.
11865
11866 @item chroma
11867 Displays only chroma.
11868
11869 @item achroma
11870 Similar as above, but shows difference between blue and red chroma.
11871
11872 @item color
11873 Displays actual color value on waveform.
11874 @end table
11875 @end table
11876
11877 @section xbr
11878 Apply the xBR high-quality magnification filter which is designed for pixel
11879 art. It follows a set of edge-detection rules, see
11880 @url{http://www.libretro.com/forums/viewtopic.php?f=6&t=134}.
11881
11882 It accepts the following option:
11883
11884 @table @option
11885 @item n
11886 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
11887 @code{3xBR} and @code{4} for @code{4xBR}.
11888 Default is @code{3}.
11889 @end table
11890
11891 @anchor{yadif}
11892 @section yadif
11893
11894 Deinterlace the input video ("yadif" means "yet another deinterlacing
11895 filter").
11896
11897 It accepts the following parameters:
11898
11899
11900 @table @option
11901
11902 @item mode
11903 The interlacing mode to adopt. It accepts one of the following values:
11904
11905 @table @option
11906 @item 0, send_frame
11907 Output one frame for each frame.
11908 @item 1, send_field
11909 Output one frame for each field.
11910 @item 2, send_frame_nospatial
11911 Like @code{send_frame}, but it skips the spatial interlacing check.
11912 @item 3, send_field_nospatial
11913 Like @code{send_field}, but it skips the spatial interlacing check.
11914 @end table
11915
11916 The default value is @code{send_frame}.
11917
11918 @item parity
11919 The picture field parity assumed for the input interlaced video. It accepts one
11920 of the following values:
11921
11922 @table @option
11923 @item 0, tff
11924 Assume the top field is first.
11925 @item 1, bff
11926 Assume the bottom field is first.
11927 @item -1, auto
11928 Enable automatic detection of field parity.
11929 @end table
11930
11931 The default value is @code{auto}.
11932 If the interlacing is unknown or the decoder does not export this information,
11933 top field first will be assumed.
11934
11935 @item deint
11936 Specify which frames to deinterlace. Accept one of the following
11937 values:
11938
11939 @table @option
11940 @item 0, all
11941 Deinterlace all frames.
11942 @item 1, interlaced
11943 Only deinterlace frames marked as interlaced.
11944 @end table
11945
11946 The default value is @code{all}.
11947 @end table
11948
11949 @section zoompan
11950
11951 Apply Zoom & Pan effect.
11952
11953 This filter accepts the following options:
11954
11955 @table @option
11956 @item zoom, z
11957 Set the zoom expression. Default is 1.
11958
11959 @item x
11960 @item y
11961 Set the x and y expression. Default is 0.
11962
11963 @item d
11964 Set the duration expression in number of frames.
11965 This sets for how many number of frames effect will last for
11966 single input image.
11967
11968 @item s
11969 Set the output image size, default is 'hd720'.
11970 @end table
11971
11972 Each expression can contain the following constants:
11973
11974 @table @option
11975 @item in_w, iw
11976 Input width.
11977
11978 @item in_h, ih
11979 Input height.
11980
11981 @item out_w, ow
11982 Output width.
11983
11984 @item out_h, oh
11985 Output height.
11986
11987 @item in
11988 Input frame count.
11989
11990 @item on
11991 Output frame count.
11992
11993 @item x
11994 @item y
11995 Last calculated 'x' and 'y' position from 'x' and 'y' expression
11996 for current input frame.
11997
11998 @item px
11999 @item py
12000 'x' and 'y' of last output frame of previous input frame or 0 when there was
12001 not yet such frame (first input frame).
12002
12003 @item zoom
12004 Last calculated zoom from 'z' expression for current input frame.
12005
12006 @item pzoom
12007 Last calculated zoom of last output frame of previous input frame.
12008
12009 @item duration
12010 Number of output frames for current input frame. Calculated from 'd' expression
12011 for each input frame.
12012
12013 @item pduration
12014 number of output frames created for previous input frame
12015
12016 @item a
12017 Rational number: input width / input height
12018
12019 @item sar
12020 sample aspect ratio
12021
12022 @item dar
12023 display aspect ratio
12024
12025 @end table
12026
12027 @subsection Examples
12028
12029 @itemize
12030 @item
12031 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
12032 @example
12033 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
12034 @end example
12035
12036 @item
12037 Zoom-in up to 1.5 and pan always at center of picture:
12038 @example
12039 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
12040 @end example
12041 @end itemize
12042
12043 @section zscale
12044 Scale (resize) the input video, using the z.lib library:
12045 https://github.com/sekrit-twc/zimg.
12046
12047 The zscale filter forces the output display aspect ratio to be the same
12048 as the input, by changing the output sample aspect ratio.
12049
12050 If the input image format is different from the format requested by
12051 the next filter, the zscale filter will convert the input to the
12052 requested format.
12053
12054 @subsection Options
12055 The filter accepts the following options.
12056
12057 @table @option
12058 @item width, w
12059 @item height, h
12060 Set the output video dimension expression. Default value is the input
12061 dimension.
12062
12063 If the @var{width} or @var{w} is 0, the input width is used for the output.
12064 If the @var{height} or @var{h} is 0, the input height is used for the output.
12065
12066 If one of the values is -1, the zscale filter will use a value that
12067 maintains the aspect ratio of the input image, calculated from the
12068 other specified dimension. If both of them are -1, the input size is
12069 used
12070
12071 If one of the values is -n with n > 1, the zscale filter will also use a value
12072 that maintains the aspect ratio of the input image, calculated from the other
12073 specified dimension. After that it will, however, make sure that the calculated
12074 dimension is divisible by n and adjust the value if necessary.
12075
12076 See below for the list of accepted constants for use in the dimension
12077 expression.
12078
12079 @item size, s
12080 Set the video size. For the syntax of this option, check the
12081 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
12082
12083 @item dither, d
12084 Set the dither type.
12085
12086 Possible values are:
12087 @table @var
12088 @item none
12089 @item ordered
12090 @item random
12091 @item error_diffusion
12092 @end table
12093
12094 Default is none.
12095
12096 @item filter, f
12097 Set the resize filter type.
12098
12099 Possible values are:
12100 @table @var
12101 @item point
12102 @item bilinear
12103 @item bicubic
12104 @item spline16
12105 @item spline36
12106 @item lanczos
12107 @end table
12108
12109 Default is bilinear.
12110
12111 @item range, r
12112 Set the color range.
12113
12114 Possible values are:
12115 @table @var
12116 @item input
12117 @item limited
12118 @item full
12119 @end table
12120
12121 Default is same as input.
12122
12123 @item primaries, p
12124 Set the color primaries.
12125
12126 Possible values are:
12127 @table @var
12128 @item input
12129 @item 709
12130 @item unspecified
12131 @item 170m
12132 @item 240m
12133 @item 2020
12134 @end table
12135
12136 Default is same as input.
12137
12138 @item transfer, t
12139 Set the transfer characteristics.
12140
12141 Possible values are:
12142 @table @var
12143 @item input
12144 @item 709
12145 @item unspecified
12146 @item 601
12147 @item linear
12148 @item 2020_10
12149 @item 2020_12
12150 @end table
12151
12152 Default is same as input.
12153
12154 @item matrix, m
12155 Set the colorspace matrix.
12156
12157 Possible value are:
12158 @table @var
12159 @item input
12160 @item 709
12161 @item unspecified
12162 @item 470bg
12163 @item 170m
12164 @item 2020_ncl
12165 @item 2020_cl
12166 @end table
12167
12168 Default is same as input.
12169 @end table
12170
12171 The values of the @option{w} and @option{h} options are expressions
12172 containing the following constants:
12173
12174 @table @var
12175 @item in_w
12176 @item in_h
12177 The input width and height
12178
12179 @item iw
12180 @item ih
12181 These are the same as @var{in_w} and @var{in_h}.
12182
12183 @item out_w
12184 @item out_h
12185 The output (scaled) width and height
12186
12187 @item ow
12188 @item oh
12189 These are the same as @var{out_w} and @var{out_h}
12190
12191 @item a
12192 The same as @var{iw} / @var{ih}
12193
12194 @item sar
12195 input sample aspect ratio
12196
12197 @item dar
12198 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
12199
12200 @item hsub
12201 @item vsub
12202 horizontal and vertical input chroma subsample values. For example for the
12203 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
12204
12205 @item ohsub
12206 @item ovsub
12207 horizontal and vertical output chroma subsample values. For example for the
12208 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
12209 @end table
12210
12211 @table @option
12212 @end table
12213
12214 @c man end VIDEO FILTERS
12215
12216 @chapter Video Sources
12217 @c man begin VIDEO SOURCES
12218
12219 Below is a description of the currently available video sources.
12220
12221 @section buffer
12222
12223 Buffer video frames, and make them available to the filter chain.
12224
12225 This source is mainly intended for a programmatic use, in particular
12226 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
12227
12228 It accepts the following parameters:
12229
12230 @table @option
12231
12232 @item video_size
12233 Specify the size (width and height) of the buffered video frames. For the
12234 syntax of this option, check the
12235 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
12236
12237 @item width
12238 The input video width.
12239
12240 @item height
12241 The input video height.
12242
12243 @item pix_fmt
12244 A string representing the pixel format of the buffered video frames.
12245 It may be a number corresponding to a pixel format, or a pixel format
12246 name.
12247
12248 @item time_base
12249 Specify the timebase assumed by the timestamps of the buffered frames.
12250
12251 @item frame_rate
12252 Specify the frame rate expected for the video stream.
12253
12254 @item pixel_aspect, sar
12255 The sample (pixel) aspect ratio of the input video.
12256
12257 @item sws_param
12258 Specify the optional parameters to be used for the scale filter which
12259 is automatically inserted when an input change is detected in the
12260 input size or format.
12261 @end table
12262
12263 For example:
12264 @example
12265 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
12266 @end example
12267
12268 will instruct the source to accept video frames with size 320x240 and
12269 with format "yuv410p", assuming 1/24 as the timestamps timebase and
12270 square pixels (1:1 sample aspect ratio).
12271 Since the pixel format with name "yuv410p" corresponds to the number 6
12272 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
12273 this example corresponds to:
12274 @example
12275 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
12276 @end example
12277
12278 Alternatively, the options can be specified as a flat string, but this
12279 syntax is deprecated:
12280
12281 @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}]
12282
12283 @section cellauto
12284
12285 Create a pattern generated by an elementary cellular automaton.
12286
12287 The initial state of the cellular automaton can be defined through the
12288 @option{filename}, and @option{pattern} options. If such options are
12289 not specified an initial state is created randomly.
12290
12291 At each new frame a new row in the video is filled with the result of
12292 the cellular automaton next generation. The behavior when the whole
12293 frame is filled is defined by the @option{scroll} option.
12294
12295 This source accepts the following options:
12296
12297 @table @option
12298 @item filename, f
12299 Read the initial cellular automaton state, i.e. the starting row, from
12300 the specified file.
12301 In the file, each non-whitespace character is considered an alive
12302 cell, a newline will terminate the row, and further characters in the
12303 file will be ignored.
12304
12305 @item pattern, p
12306 Read the initial cellular automaton state, i.e. the starting row, from
12307 the specified string.
12308
12309 Each non-whitespace character in the string is considered an alive
12310 cell, a newline will terminate the row, and further characters in the
12311 string will be ignored.
12312
12313 @item rate, r
12314 Set the video rate, that is the number of frames generated per second.
12315 Default is 25.
12316
12317 @item random_fill_ratio, ratio
12318 Set the random fill ratio for the initial cellular automaton row. It
12319 is a floating point number value ranging from 0 to 1, defaults to
12320 1/PHI.
12321
12322 This option is ignored when a file or a pattern is specified.
12323
12324 @item random_seed, seed
12325 Set the seed for filling randomly the initial row, must be an integer
12326 included between 0 and UINT32_MAX. If not specified, or if explicitly
12327 set to -1, the filter will try to use a good random seed on a best
12328 effort basis.
12329
12330 @item rule
12331 Set the cellular automaton rule, it is a number ranging from 0 to 255.
12332 Default value is 110.
12333
12334 @item size, s
12335 Set the size of the output video. For the syntax of this option, check the
12336 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
12337
12338 If @option{filename} or @option{pattern} is specified, the size is set
12339 by default to the width of the specified initial state row, and the
12340 height is set to @var{width} * PHI.
12341
12342 If @option{size} is set, it must contain the width of the specified
12343 pattern string, and the specified pattern will be centered in the
12344 larger row.
12345
12346 If a filename or a pattern string is not specified, the size value
12347 defaults to "320x518" (used for a randomly generated initial state).
12348
12349 @item scroll
12350 If set to 1, scroll the output upward when all the rows in the output
12351 have been already filled. If set to 0, the new generated row will be
12352 written over the top row just after the bottom row is filled.
12353 Defaults to 1.
12354
12355 @item start_full, full
12356 If set to 1, completely fill the output with generated rows before
12357 outputting the first frame.
12358 This is the default behavior, for disabling set the value to 0.
12359
12360 @item stitch
12361 If set to 1, stitch the left and right row edges together.
12362 This is the default behavior, for disabling set the value to 0.
12363 @end table
12364
12365 @subsection Examples
12366
12367 @itemize
12368 @item
12369 Read the initial state from @file{pattern}, and specify an output of
12370 size 200x400.
12371 @example
12372 cellauto=f=pattern:s=200x400
12373 @end example
12374
12375 @item
12376 Generate a random initial row with a width of 200 cells, with a fill
12377 ratio of 2/3:
12378 @example
12379 cellauto=ratio=2/3:s=200x200
12380 @end example
12381
12382 @item
12383 Create a pattern generated by rule 18 starting by a single alive cell
12384 centered on an initial row with width 100:
12385 @example
12386 cellauto=p=@@:s=100x400:full=0:rule=18
12387 @end example
12388
12389 @item
12390 Specify a more elaborated initial pattern:
12391 @example
12392 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
12393 @end example
12394
12395 @end itemize
12396
12397 @section mandelbrot
12398
12399 Generate a Mandelbrot set fractal, and progressively zoom towards the
12400 point specified with @var{start_x} and @var{start_y}.
12401
12402 This source accepts the following options:
12403
12404 @table @option
12405
12406 @item end_pts
12407 Set the terminal pts value. Default value is 400.
12408
12409 @item end_scale
12410 Set the terminal scale value.
12411 Must be a floating point value. Default value is 0.3.
12412
12413 @item inner
12414 Set the inner coloring mode, that is the algorithm used to draw the
12415 Mandelbrot fractal internal region.
12416
12417 It shall assume one of the following values:
12418 @table @option
12419 @item black
12420 Set black mode.
12421 @item convergence
12422 Show time until convergence.
12423 @item mincol
12424 Set color based on point closest to the origin of the iterations.
12425 @item period
12426 Set period mode.
12427 @end table
12428
12429 Default value is @var{mincol}.
12430
12431 @item bailout
12432 Set the bailout value. Default value is 10.0.
12433
12434 @item maxiter
12435 Set the maximum of iterations performed by the rendering
12436 algorithm. Default value is 7189.
12437
12438 @item outer
12439 Set outer coloring mode.
12440 It shall assume one of following values:
12441 @table @option
12442 @item iteration_count
12443 Set iteration cound mode.
12444 @item normalized_iteration_count
12445 set normalized iteration count mode.
12446 @end table
12447 Default value is @var{normalized_iteration_count}.
12448
12449 @item rate, r
12450 Set frame rate, expressed as number of frames per second. Default
12451 value is "25".
12452
12453 @item size, s
12454 Set frame size. For the syntax of this option, check the "Video
12455 size" section in the ffmpeg-utils manual. Default value is "640x480".
12456
12457 @item start_scale
12458 Set the initial scale value. Default value is 3.0.
12459
12460 @item start_x
12461 Set the initial x position. Must be a floating point value between
12462 -100 and 100. Default value is -0.743643887037158704752191506114774.
12463
12464 @item start_y
12465 Set the initial y position. Must be a floating point value between
12466 -100 and 100. Default value is -0.131825904205311970493132056385139.
12467 @end table
12468
12469 @section mptestsrc
12470
12471 Generate various test patterns, as generated by the MPlayer test filter.
12472
12473 The size of the generated video is fixed, and is 256x256.
12474 This source is useful in particular for testing encoding features.
12475
12476 This source accepts the following options:
12477
12478 @table @option
12479
12480 @item rate, r
12481 Specify the frame rate of the sourced video, as the number of frames
12482 generated per second. It has to be a string in the format
12483 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
12484 number or a valid video frame rate abbreviation. The default value is
12485 "25".
12486
12487 @item duration, d
12488 Set the duration of the sourced video. See
12489 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
12490 for the accepted syntax.
12491
12492 If not specified, or the expressed duration is negative, the video is
12493 supposed to be generated forever.
12494
12495 @item test, t
12496
12497 Set the number or the name of the test to perform. Supported tests are:
12498 @table @option
12499 @item dc_luma
12500 @item dc_chroma
12501 @item freq_luma
12502 @item freq_chroma
12503 @item amp_luma
12504 @item amp_chroma
12505 @item cbp
12506 @item mv
12507 @item ring1
12508 @item ring2
12509 @item all
12510
12511 @end table
12512
12513 Default value is "all", which will cycle through the list of all tests.
12514 @end table
12515
12516 Some examples:
12517 @example
12518 mptestsrc=t=dc_luma
12519 @end example
12520
12521 will generate a "dc_luma" test pattern.
12522
12523 @section frei0r_src
12524
12525 Provide a frei0r source.
12526
12527 To enable compilation of this filter you need to install the frei0r
12528 header and configure FFmpeg with @code{--enable-frei0r}.
12529
12530 This source accepts the following parameters:
12531
12532 @table @option
12533
12534 @item size
12535 The size of the video to generate. For the syntax of this option, check the
12536 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
12537
12538 @item framerate
12539 The framerate of the generated video. It may be a string of the form
12540 @var{num}/@var{den} or a frame rate abbreviation.
12541
12542 @item filter_name
12543 The name to the frei0r source to load. For more information regarding frei0r and
12544 how to set the parameters, read the @ref{frei0r} section in the video filters
12545 documentation.
12546
12547 @item filter_params
12548 A '|'-separated list of parameters to pass to the frei0r source.
12549
12550 @end table
12551
12552 For example, to generate a frei0r partik0l source with size 200x200
12553 and frame rate 10 which is overlaid on the overlay filter main input:
12554 @example
12555 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
12556 @end example
12557
12558 @section life
12559
12560 Generate a life pattern.
12561
12562 This source is based on a generalization of John Conway's life game.
12563
12564 The sourced input represents a life grid, each pixel represents a cell
12565 which can be in one of two possible states, alive or dead. Every cell
12566 interacts with its eight neighbours, which are the cells that are
12567 horizontally, vertically, or diagonally adjacent.
12568
12569 At each interaction the grid evolves according to the adopted rule,
12570 which specifies the number of neighbor alive cells which will make a
12571 cell stay alive or born. The @option{rule} option allows one to specify
12572 the rule to adopt.
12573
12574 This source accepts the following options:
12575
12576 @table @option
12577 @item filename, f
12578 Set the file from which to read the initial grid state. In the file,
12579 each non-whitespace character is considered an alive cell, and newline
12580 is used to delimit the end of each row.
12581
12582 If this option is not specified, the initial grid is generated
12583 randomly.
12584
12585 @item rate, r
12586 Set the video rate, that is the number of frames generated per second.
12587 Default is 25.
12588
12589 @item random_fill_ratio, ratio
12590 Set the random fill ratio for the initial random grid. It is a
12591 floating point number value ranging from 0 to 1, defaults to 1/PHI.
12592 It is ignored when a file is specified.
12593
12594 @item random_seed, seed
12595 Set the seed for filling the initial random grid, must be an integer
12596 included between 0 and UINT32_MAX. If not specified, or if explicitly
12597 set to -1, the filter will try to use a good random seed on a best
12598 effort basis.
12599
12600 @item rule
12601 Set the life rule.
12602
12603 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
12604 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
12605 @var{NS} specifies the number of alive neighbor cells which make a
12606 live cell stay alive, and @var{NB} the number of alive neighbor cells
12607 which make a dead cell to become alive (i.e. to "born").
12608 "s" and "b" can be used in place of "S" and "B", respectively.
12609
12610 Alternatively a rule can be specified by an 18-bits integer. The 9
12611 high order bits are used to encode the next cell state if it is alive
12612 for each number of neighbor alive cells, the low order bits specify
12613 the rule for "borning" new cells. Higher order bits encode for an
12614 higher number of neighbor cells.
12615 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
12616 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
12617
12618 Default value is "S23/B3", which is the original Conway's game of life
12619 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
12620 cells, and will born a new cell if there are three alive cells around
12621 a dead cell.
12622
12623 @item size, s
12624 Set the size of the output video. For the syntax of this option, check the
12625 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
12626
12627 If @option{filename} is specified, the size is set by default to the
12628 same size of the input file. If @option{size} is set, it must contain
12629 the size specified in the input file, and the initial grid defined in
12630 that file is centered in the larger resulting area.
12631
12632 If a filename is not specified, the size value defaults to "320x240"
12633 (used for a randomly generated initial grid).
12634
12635 @item stitch
12636 If set to 1, stitch the left and right grid edges together, and the
12637 top and bottom edges also. Defaults to 1.
12638
12639 @item mold
12640 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
12641 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
12642 value from 0 to 255.
12643
12644 @item life_color
12645 Set the color of living (or new born) cells.
12646
12647 @item death_color
12648 Set the color of dead cells. If @option{mold} is set, this is the first color
12649 used to represent a dead cell.
12650
12651 @item mold_color
12652 Set mold color, for definitely dead and moldy cells.
12653
12654 For the syntax of these 3 color options, check the "Color" section in the
12655 ffmpeg-utils manual.
12656 @end table
12657
12658 @subsection Examples
12659
12660 @itemize
12661 @item
12662 Read a grid from @file{pattern}, and center it on a grid of size
12663 300x300 pixels:
12664 @example
12665 life=f=pattern:s=300x300
12666 @end example
12667
12668 @item
12669 Generate a random grid of size 200x200, with a fill ratio of 2/3:
12670 @example
12671 life=ratio=2/3:s=200x200
12672 @end example
12673
12674 @item
12675 Specify a custom rule for evolving a randomly generated grid:
12676 @example
12677 life=rule=S14/B34
12678 @end example
12679
12680 @item
12681 Full example with slow death effect (mold) using @command{ffplay}:
12682 @example
12683 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
12684 @end example
12685 @end itemize
12686
12687 @anchor{allrgb}
12688 @anchor{allyuv}
12689 @anchor{color}
12690 @anchor{haldclutsrc}
12691 @anchor{nullsrc}
12692 @anchor{rgbtestsrc}
12693 @anchor{smptebars}
12694 @anchor{smptehdbars}
12695 @anchor{testsrc}
12696 @section allrgb, allyuv, color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc
12697
12698 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
12699
12700 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
12701
12702 The @code{color} source provides an uniformly colored input.
12703
12704 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
12705 @ref{haldclut} filter.
12706
12707 The @code{nullsrc} source returns unprocessed video frames. It is
12708 mainly useful to be employed in analysis / debugging tools, or as the
12709 source for filters which ignore the input data.
12710
12711 The @code{rgbtestsrc} source generates an RGB test pattern useful for
12712 detecting RGB vs BGR issues. You should see a red, green and blue
12713 stripe from top to bottom.
12714
12715 The @code{smptebars} source generates a color bars pattern, based on
12716 the SMPTE Engineering Guideline EG 1-1990.
12717
12718 The @code{smptehdbars} source generates a color bars pattern, based on
12719 the SMPTE RP 219-2002.
12720
12721 The @code{testsrc} source generates a test video pattern, showing a
12722 color pattern, a scrolling gradient and a timestamp. This is mainly
12723 intended for testing purposes.
12724
12725 The sources accept the following parameters:
12726
12727 @table @option
12728
12729 @item color, c
12730 Specify the color of the source, only available in the @code{color}
12731 source. For the syntax of this option, check the "Color" section in the
12732 ffmpeg-utils manual.
12733
12734 @item level
12735 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
12736 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
12737 pixels to be used as identity matrix for 3D lookup tables. Each component is
12738 coded on a @code{1/(N*N)} scale.
12739
12740 @item size, s
12741 Specify the size of the sourced video. For the syntax of this option, check the
12742 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
12743 The default value is @code{320x240}.
12744
12745 This option is not available with the @code{haldclutsrc} filter.
12746
12747 @item rate, r
12748 Specify the frame rate of the sourced video, as the number of frames
12749 generated per second. It has to be a string in the format
12750 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
12751 number or a valid video frame rate abbreviation. The default value is
12752 "25".
12753
12754 @item sar
12755 Set the sample aspect ratio of the sourced video.
12756
12757 @item duration, d
12758 Set the duration of the sourced video. See
12759 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
12760 for the accepted syntax.
12761
12762 If not specified, or the expressed duration is negative, the video is
12763 supposed to be generated forever.
12764
12765 @item decimals, n
12766 Set the number of decimals to show in the timestamp, only available in the
12767 @code{testsrc} source.
12768
12769 The displayed timestamp value will correspond to the original
12770 timestamp value multiplied by the power of 10 of the specified
12771 value. Default value is 0.
12772 @end table
12773
12774 For example the following:
12775 @example
12776 testsrc=duration=5.3:size=qcif:rate=10
12777 @end example
12778
12779 will generate a video with a duration of 5.3 seconds, with size
12780 176x144 and a frame rate of 10 frames per second.
12781
12782 The following graph description will generate a red source
12783 with an opacity of 0.2, with size "qcif" and a frame rate of 10
12784 frames per second.
12785 @example
12786 color=c=red@@0.2:s=qcif:r=10
12787 @end example
12788
12789 If the input content is to be ignored, @code{nullsrc} can be used. The
12790 following command generates noise in the luminance plane by employing
12791 the @code{geq} filter:
12792 @example
12793 nullsrc=s=256x256, geq=random(1)*255:128:128
12794 @end example
12795
12796 @subsection Commands
12797
12798 The @code{color} source supports the following commands:
12799
12800 @table @option
12801 @item c, color
12802 Set the color of the created image. Accepts the same syntax of the
12803 corresponding @option{color} option.
12804 @end table
12805
12806 @c man end VIDEO SOURCES
12807
12808 @chapter Video Sinks
12809 @c man begin VIDEO SINKS
12810
12811 Below is a description of the currently available video sinks.
12812
12813 @section buffersink
12814
12815 Buffer video frames, and make them available to the end of the filter
12816 graph.
12817
12818 This sink is mainly intended for programmatic use, in particular
12819 through the interface defined in @file{libavfilter/buffersink.h}
12820 or the options system.
12821
12822 It accepts a pointer to an AVBufferSinkContext structure, which
12823 defines the incoming buffers' formats, to be passed as the opaque
12824 parameter to @code{avfilter_init_filter} for initialization.
12825
12826 @section nullsink
12827
12828 Null video sink: do absolutely nothing with the input video. It is
12829 mainly useful as a template and for use in analysis / debugging
12830 tools.
12831
12832 @c man end VIDEO SINKS
12833
12834 @chapter Multimedia Filters
12835 @c man begin MULTIMEDIA FILTERS
12836
12837 Below is a description of the currently available multimedia filters.
12838
12839 @section aphasemeter
12840
12841 Convert input audio to a video output, displaying the audio phase.
12842
12843 The filter accepts the following options:
12844
12845 @table @option
12846 @item rate, r
12847 Set the output frame rate. Default value is @code{25}.
12848
12849 @item size, s
12850 Set the video size for the output. For the syntax of this option, check the
12851 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
12852 Default value is @code{800x400}.
12853
12854 @item rc
12855 @item gc
12856 @item bc
12857 Specify the red, green, blue contrast. Default values are @code{2},
12858 @code{7} and @code{1}.
12859 Allowed range is @code{[0, 255]}.
12860
12861 @item mpc
12862 Set color which will be used for drawing median phase. If color is
12863 @code{none} which is default, no median phase value will be drawn.
12864 @end table
12865
12866 The filter also exports the frame metadata @code{lavfi.aphasemeter.phase} which
12867 represents mean phase of current audio frame. Value is in range @code{[-1, 1]}.
12868 The @code{-1} means left and right channels are completely out of phase and
12869 @code{1} means channels are in phase.
12870
12871 @section avectorscope
12872
12873 Convert input audio to a video output, representing the audio vector
12874 scope.
12875
12876 The filter is used to measure the difference between channels of stereo
12877 audio stream. A monoaural signal, consisting of identical left and right
12878 signal, results in straight vertical line. Any stereo separation is visible
12879 as a deviation from this line, creating a Lissajous figure.
12880 If the straight (or deviation from it) but horizontal line appears this
12881 indicates that the left and right channels are out of phase.
12882
12883 The filter accepts the following options:
12884
12885 @table @option
12886 @item mode, m
12887 Set the vectorscope mode.
12888
12889 Available values are:
12890 @table @samp
12891 @item lissajous
12892 Lissajous rotated by 45 degrees.
12893
12894 @item lissajous_xy
12895 Same as above but not rotated.
12896
12897 @item polar
12898 Shape resembling half of circle.
12899 @end table
12900
12901 Default value is @samp{lissajous}.
12902
12903 @item size, s
12904 Set the video size for the output. For the syntax of this option, check the
12905 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
12906 Default value is @code{400x400}.
12907
12908 @item rate, r
12909 Set the output frame rate. Default value is @code{25}.
12910
12911 @item rc
12912 @item gc
12913 @item bc
12914 @item ac
12915 Specify the red, green, blue and alpha contrast. Default values are @code{40},
12916 @code{160}, @code{80} and @code{255}.
12917 Allowed range is @code{[0, 255]}.
12918
12919 @item rf
12920 @item gf
12921 @item bf
12922 @item af
12923 Specify the red, green, blue and alpha fade. Default values are @code{15},
12924 @code{10}, @code{5} and @code{5}.
12925 Allowed range is @code{[0, 255]}.
12926
12927 @item zoom
12928 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[1, 10]}.
12929 @end table
12930
12931 @subsection Examples
12932
12933 @itemize
12934 @item
12935 Complete example using @command{ffplay}:
12936 @example
12937 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
12938              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
12939 @end example
12940 @end itemize
12941
12942 @section concat
12943
12944 Concatenate audio and video streams, joining them together one after the
12945 other.
12946
12947 The filter works on segments of synchronized video and audio streams. All
12948 segments must have the same number of streams of each type, and that will
12949 also be the number of streams at output.
12950
12951 The filter accepts the following options:
12952
12953 @table @option
12954
12955 @item n
12956 Set the number of segments. Default is 2.
12957
12958 @item v
12959 Set the number of output video streams, that is also the number of video
12960 streams in each segment. Default is 1.
12961
12962 @item a
12963 Set the number of output audio streams, that is also the number of audio
12964 streams in each segment. Default is 0.
12965
12966 @item unsafe
12967 Activate unsafe mode: do not fail if segments have a different format.
12968
12969 @end table
12970
12971 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
12972 @var{a} audio outputs.
12973
12974 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
12975 segment, in the same order as the outputs, then the inputs for the second
12976 segment, etc.
12977
12978 Related streams do not always have exactly the same duration, for various
12979 reasons including codec frame size or sloppy authoring. For that reason,
12980 related synchronized streams (e.g. a video and its audio track) should be
12981 concatenated at once. The concat filter will use the duration of the longest
12982 stream in each segment (except the last one), and if necessary pad shorter
12983 audio streams with silence.
12984
12985 For this filter to work correctly, all segments must start at timestamp 0.
12986
12987 All corresponding streams must have the same parameters in all segments; the
12988 filtering system will automatically select a common pixel format for video
12989 streams, and a common sample format, sample rate and channel layout for
12990 audio streams, but other settings, such as resolution, must be converted
12991 explicitly by the user.
12992
12993 Different frame rates are acceptable but will result in variable frame rate
12994 at output; be sure to configure the output file to handle it.
12995
12996 @subsection Examples
12997
12998 @itemize
12999 @item
13000 Concatenate an opening, an episode and an ending, all in bilingual version
13001 (video in stream 0, audio in streams 1 and 2):
13002 @example
13003 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
13004   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
13005    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
13006   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
13007 @end example
13008
13009 @item
13010 Concatenate two parts, handling audio and video separately, using the
13011 (a)movie sources, and adjusting the resolution:
13012 @example
13013 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
13014 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
13015 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
13016 @end example
13017 Note that a desync will happen at the stitch if the audio and video streams
13018 do not have exactly the same duration in the first file.
13019
13020 @end itemize
13021
13022 @anchor{ebur128}
13023 @section ebur128
13024
13025 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
13026 it unchanged. By default, it logs a message at a frequency of 10Hz with the
13027 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
13028 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
13029
13030 The filter also has a video output (see the @var{video} option) with a real
13031 time graph to observe the loudness evolution. The graphic contains the logged
13032 message mentioned above, so it is not printed anymore when this option is set,
13033 unless the verbose logging is set. The main graphing area contains the
13034 short-term loudness (3 seconds of analysis), and the gauge on the right is for
13035 the momentary loudness (400 milliseconds).
13036
13037 More information about the Loudness Recommendation EBU R128 on
13038 @url{http://tech.ebu.ch/loudness}.
13039
13040 The filter accepts the following options:
13041
13042 @table @option
13043
13044 @item video
13045 Activate the video output. The audio stream is passed unchanged whether this
13046 option is set or no. The video stream will be the first output stream if
13047 activated. Default is @code{0}.
13048
13049 @item size
13050 Set the video size. This option is for video only. For the syntax of this
13051 option, check the
13052 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
13053 Default and minimum resolution is @code{640x480}.
13054
13055 @item meter
13056 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
13057 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
13058 other integer value between this range is allowed.
13059
13060 @item metadata
13061 Set metadata injection. If set to @code{1}, the audio input will be segmented
13062 into 100ms output frames, each of them containing various loudness information
13063 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
13064
13065 Default is @code{0}.
13066
13067 @item framelog
13068 Force the frame logging level.
13069
13070 Available values are:
13071 @table @samp
13072 @item info
13073 information logging level
13074 @item verbose
13075 verbose logging level
13076 @end table
13077
13078 By default, the logging level is set to @var{info}. If the @option{video} or
13079 the @option{metadata} options are set, it switches to @var{verbose}.
13080
13081 @item peak
13082 Set peak mode(s).
13083
13084 Available modes can be cumulated (the option is a @code{flag} type). Possible
13085 values are:
13086 @table @samp
13087 @item none
13088 Disable any peak mode (default).
13089 @item sample
13090 Enable sample-peak mode.
13091
13092 Simple peak mode looking for the higher sample value. It logs a message
13093 for sample-peak (identified by @code{SPK}).
13094 @item true
13095 Enable true-peak mode.
13096
13097 If enabled, the peak lookup is done on an over-sampled version of the input
13098 stream for better peak accuracy. It logs a message for true-peak.
13099 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
13100 This mode requires a build with @code{libswresample}.
13101 @end table
13102
13103 @item dualmono
13104 Treat mono input files as "dual mono". If a mono file is intended for playback
13105 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
13106 If set to @code{true}, this option will compensate for this effect.
13107 Multi-channel input files are not affected by this option.
13108
13109 @item panlaw
13110 Set a specific pan law to be used for the measurement of dual mono files.
13111 This parameter is optional, and has a default value of -3.01dB.
13112 @end table
13113
13114 @subsection Examples
13115
13116 @itemize
13117 @item
13118 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
13119 @example
13120 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
13121 @end example
13122
13123 @item
13124 Run an analysis with @command{ffmpeg}:
13125 @example
13126 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
13127 @end example
13128 @end itemize
13129
13130 @section interleave, ainterleave
13131
13132 Temporally interleave frames from several inputs.
13133
13134 @code{interleave} works with video inputs, @code{ainterleave} with audio.
13135
13136 These filters read frames from several inputs and send the oldest
13137 queued frame to the output.
13138
13139 Input streams must have a well defined, monotonically increasing frame
13140 timestamp values.
13141
13142 In order to submit one frame to output, these filters need to enqueue
13143 at least one frame for each input, so they cannot work in case one
13144 input is not yet terminated and will not receive incoming frames.
13145
13146 For example consider the case when one input is a @code{select} filter
13147 which always drop input frames. The @code{interleave} filter will keep
13148 reading from that input, but it will never be able to send new frames
13149 to output until the input will send an end-of-stream signal.
13150
13151 Also, depending on inputs synchronization, the filters will drop
13152 frames in case one input receives more frames than the other ones, and
13153 the queue is already filled.
13154
13155 These filters accept the following options:
13156
13157 @table @option
13158 @item nb_inputs, n
13159 Set the number of different inputs, it is 2 by default.
13160 @end table
13161
13162 @subsection Examples
13163
13164 @itemize
13165 @item
13166 Interleave frames belonging to different streams using @command{ffmpeg}:
13167 @example
13168 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
13169 @end example
13170
13171 @item
13172 Add flickering blur effect:
13173 @example
13174 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
13175 @end example
13176 @end itemize
13177
13178 @section perms, aperms
13179
13180 Set read/write permissions for the output frames.
13181
13182 These filters are mainly aimed at developers to test direct path in the
13183 following filter in the filtergraph.
13184
13185 The filters accept the following options:
13186
13187 @table @option
13188 @item mode
13189 Select the permissions mode.
13190
13191 It accepts the following values:
13192 @table @samp
13193 @item none
13194 Do nothing. This is the default.
13195 @item ro
13196 Set all the output frames read-only.
13197 @item rw
13198 Set all the output frames directly writable.
13199 @item toggle
13200 Make the frame read-only if writable, and writable if read-only.
13201 @item random
13202 Set each output frame read-only or writable randomly.
13203 @end table
13204
13205 @item seed
13206 Set the seed for the @var{random} mode, must be an integer included between
13207 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
13208 @code{-1}, the filter will try to use a good random seed on a best effort
13209 basis.
13210 @end table
13211
13212 Note: in case of auto-inserted filter between the permission filter and the
13213 following one, the permission might not be received as expected in that
13214 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
13215 perms/aperms filter can avoid this problem.
13216
13217 @section realtime, arealtime
13218
13219 Slow down filtering to match real time approximatively.
13220
13221 These filters will pause the filtering for a variable amount of time to
13222 match the output rate with the input timestamps.
13223 They are similar to the @option{re} option to @code{ffmpeg}.
13224
13225 They accept the following options:
13226
13227 @table @option
13228 @item limit
13229 Time limit for the pauses. Any pause longer than that will be considered
13230 a timestamp discontinuity and reset the timer. Default is 2 seconds.
13231 @end table
13232
13233 @section select, aselect
13234
13235 Select frames to pass in output.
13236
13237 This filter accepts the following options:
13238
13239 @table @option
13240
13241 @item expr, e
13242 Set expression, which is evaluated for each input frame.
13243
13244 If the expression is evaluated to zero, the frame is discarded.
13245
13246 If the evaluation result is negative or NaN, the frame is sent to the
13247 first output; otherwise it is sent to the output with index
13248 @code{ceil(val)-1}, assuming that the input index starts from 0.
13249
13250 For example a value of @code{1.2} corresponds to the output with index
13251 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
13252
13253 @item outputs, n
13254 Set the number of outputs. The output to which to send the selected
13255 frame is based on the result of the evaluation. Default value is 1.
13256 @end table
13257
13258 The expression can contain the following constants:
13259
13260 @table @option
13261 @item n
13262 The (sequential) number of the filtered frame, starting from 0.
13263
13264 @item selected_n
13265 The (sequential) number of the selected frame, starting from 0.
13266
13267 @item prev_selected_n
13268 The sequential number of the last selected frame. It's NAN if undefined.
13269
13270 @item TB
13271 The timebase of the input timestamps.
13272
13273 @item pts
13274 The PTS (Presentation TimeStamp) of the filtered video frame,
13275 expressed in @var{TB} units. It's NAN if undefined.
13276
13277 @item t
13278 The PTS of the filtered video frame,
13279 expressed in seconds. It's NAN if undefined.
13280
13281 @item prev_pts
13282 The PTS of the previously filtered video frame. It's NAN if undefined.
13283
13284 @item prev_selected_pts
13285 The PTS of the last previously filtered video frame. It's NAN if undefined.
13286
13287 @item prev_selected_t
13288 The PTS of the last previously selected video frame. It's NAN if undefined.
13289
13290 @item start_pts
13291 The PTS of the first video frame in the video. It's NAN if undefined.
13292
13293 @item start_t
13294 The time of the first video frame in the video. It's NAN if undefined.
13295
13296 @item pict_type @emph{(video only)}
13297 The type of the filtered frame. It can assume one of the following
13298 values:
13299 @table @option
13300 @item I
13301 @item P
13302 @item B
13303 @item S
13304 @item SI
13305 @item SP
13306 @item BI
13307 @end table
13308
13309 @item interlace_type @emph{(video only)}
13310 The frame interlace type. It can assume one of the following values:
13311 @table @option
13312 @item PROGRESSIVE
13313 The frame is progressive (not interlaced).
13314 @item TOPFIRST
13315 The frame is top-field-first.
13316 @item BOTTOMFIRST
13317 The frame is bottom-field-first.
13318 @end table
13319
13320 @item consumed_sample_n @emph{(audio only)}
13321 the number of selected samples before the current frame
13322
13323 @item samples_n @emph{(audio only)}
13324 the number of samples in the current frame
13325
13326 @item sample_rate @emph{(audio only)}
13327 the input sample rate
13328
13329 @item key
13330 This is 1 if the filtered frame is a key-frame, 0 otherwise.
13331
13332 @item pos
13333 the position in the file of the filtered frame, -1 if the information
13334 is not available (e.g. for synthetic video)
13335
13336 @item scene @emph{(video only)}
13337 value between 0 and 1 to indicate a new scene; a low value reflects a low
13338 probability for the current frame to introduce a new scene, while a higher
13339 value means the current frame is more likely to be one (see the example below)
13340
13341 @item concatdec_select
13342 The concat demuxer can select only part of a concat input file by setting an
13343 inpoint and an outpoint, but the output packets may not be entirely contained
13344 in the selected interval. By using this variable, it is possible to skip frames
13345 generated by the concat demuxer which are not exactly contained in the selected
13346 interval.
13347
13348 This works by comparing the frame pts against the @var{lavf.concat.start_time}
13349 and the @var{lavf.concat.duration} packet metadata values which are also
13350 present in the decoded frames.
13351
13352 The @var{concatdec_select} variable is -1 if the frame pts is at least
13353 start_time and either the duration metadata is missing or the frame pts is less
13354 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
13355 missing.
13356
13357 That basically means that an input frame is selected if its pts is within the
13358 interval set by the concat demuxer.
13359
13360 @end table
13361
13362 The default value of the select expression is "1".
13363
13364 @subsection Examples
13365
13366 @itemize
13367 @item
13368 Select all frames in input:
13369 @example
13370 select
13371 @end example
13372
13373 The example above is the same as:
13374 @example
13375 select=1
13376 @end example
13377
13378 @item
13379 Skip all frames:
13380 @example
13381 select=0
13382 @end example
13383
13384 @item
13385 Select only I-frames:
13386 @example
13387 select='eq(pict_type\,I)'
13388 @end example
13389
13390 @item
13391 Select one frame every 100:
13392 @example
13393 select='not(mod(n\,100))'
13394 @end example
13395
13396 @item
13397 Select only frames contained in the 10-20 time interval:
13398 @example
13399 select=between(t\,10\,20)
13400 @end example
13401
13402 @item
13403 Select only I frames contained in the 10-20 time interval:
13404 @example
13405 select=between(t\,10\,20)*eq(pict_type\,I)
13406 @end example
13407
13408 @item
13409 Select frames with a minimum distance of 10 seconds:
13410 @example
13411 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
13412 @end example
13413
13414 @item
13415 Use aselect to select only audio frames with samples number > 100:
13416 @example
13417 aselect='gt(samples_n\,100)'
13418 @end example
13419
13420 @item
13421 Create a mosaic of the first scenes:
13422 @example
13423 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
13424 @end example
13425
13426 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
13427 choice.
13428
13429 @item
13430 Send even and odd frames to separate outputs, and compose them:
13431 @example
13432 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
13433 @end example
13434
13435 @item
13436 Select useful frames from an ffconcat file which is using inpoints and
13437 outpoints but where the source files are not intra frame only.
13438 @example
13439 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
13440 @end example
13441 @end itemize
13442
13443 @section selectivecolor
13444
13445 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
13446 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
13447 by the "purity" of the color (that is, how saturated it already is).
13448
13449 This filter is similar to the Adobe Photoshop Selective Color tool.
13450
13451 The filter accepts the following options:
13452
13453 @table @option
13454 @item correction_method
13455 Select color correction method.
13456
13457 Available values are:
13458 @table @samp
13459 @item absolute
13460 Specified adjustments are applied "as-is" (added/subtracted to original pixel
13461 component value).
13462 @item relative
13463 Specified adjustments are relative to the original component value.
13464 @end table
13465 Default is @code{absolute}.
13466 @item reds
13467 Adjustments for red pixels (pixels where the red component is the maximum)
13468 @item yellows
13469 Adjustments for yellow pixels (pixels where the blue component is the minimum)
13470 @item greens
13471 Adjustments for green pixels (pixels where the green component is the maximum)
13472 @item cyans
13473 Adjustments for cyan pixels (pixels where the red component is the minimum)
13474 @item blues
13475 Adjustments for blue pixels (pixels where the blue component is the maximum)
13476 @item magentas
13477 Adjustments for magenta pixels (pixels where the green component is the minimum)
13478 @item whites
13479 Adjustments for white pixels (pixels where all components are greater than 128)
13480 @item neutrals
13481 Adjustments for all pixels except pure black and pure white
13482 @item blacks
13483 Adjustments for black pixels (pixels where all components are lesser than 128)
13484 @item psfile
13485 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
13486 @end table
13487
13488 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
13489 4 space separated floating point adjustment values in the [-1,1] range,
13490 respectively to adjust the amount of cyan, magenta, yellow and black for the
13491 pixels of its range.
13492
13493 @subsection Examples
13494
13495 @itemize
13496 @item
13497 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
13498 increase magenta by 27% in blue areas:
13499 @example
13500 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
13501 @end example
13502
13503 @item
13504 Use a Photoshop selective color preset:
13505 @example
13506 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
13507 @end example
13508 @end itemize
13509
13510 @section sendcmd, asendcmd
13511
13512 Send commands to filters in the filtergraph.
13513
13514 These filters read commands to be sent to other filters in the
13515 filtergraph.
13516
13517 @code{sendcmd} must be inserted between two video filters,
13518 @code{asendcmd} must be inserted between two audio filters, but apart
13519 from that they act the same way.
13520
13521 The specification of commands can be provided in the filter arguments
13522 with the @var{commands} option, or in a file specified by the
13523 @var{filename} option.
13524
13525 These filters accept the following options:
13526 @table @option
13527 @item commands, c
13528 Set the commands to be read and sent to the other filters.
13529 @item filename, f
13530 Set the filename of the commands to be read and sent to the other
13531 filters.
13532 @end table
13533
13534 @subsection Commands syntax
13535
13536 A commands description consists of a sequence of interval
13537 specifications, comprising a list of commands to be executed when a
13538 particular event related to that interval occurs. The occurring event
13539 is typically the current frame time entering or leaving a given time
13540 interval.
13541
13542 An interval is specified by the following syntax:
13543 @example
13544 @var{START}[-@var{END}] @var{COMMANDS};
13545 @end example
13546
13547 The time interval is specified by the @var{START} and @var{END} times.
13548 @var{END} is optional and defaults to the maximum time.
13549
13550 The current frame time is considered within the specified interval if
13551 it is included in the interval [@var{START}, @var{END}), that is when
13552 the time is greater or equal to @var{START} and is lesser than
13553 @var{END}.
13554
13555 @var{COMMANDS} consists of a sequence of one or more command
13556 specifications, separated by ",", relating to that interval.  The
13557 syntax of a command specification is given by:
13558 @example
13559 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
13560 @end example
13561
13562 @var{FLAGS} is optional and specifies the type of events relating to
13563 the time interval which enable sending the specified command, and must
13564 be a non-null sequence of identifier flags separated by "+" or "|" and
13565 enclosed between "[" and "]".
13566
13567 The following flags are recognized:
13568 @table @option
13569 @item enter
13570 The command is sent when the current frame timestamp enters the
13571 specified interval. In other words, the command is sent when the
13572 previous frame timestamp was not in the given interval, and the
13573 current is.
13574
13575 @item leave
13576 The command is sent when the current frame timestamp leaves the
13577 specified interval. In other words, the command is sent when the
13578 previous frame timestamp was in the given interval, and the
13579 current is not.
13580 @end table
13581
13582 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
13583 assumed.
13584
13585 @var{TARGET} specifies the target of the command, usually the name of
13586 the filter class or a specific filter instance name.
13587
13588 @var{COMMAND} specifies the name of the command for the target filter.
13589
13590 @var{ARG} is optional and specifies the optional list of argument for
13591 the given @var{COMMAND}.
13592
13593 Between one interval specification and another, whitespaces, or
13594 sequences of characters starting with @code{#} until the end of line,
13595 are ignored and can be used to annotate comments.
13596
13597 A simplified BNF description of the commands specification syntax
13598 follows:
13599 @example
13600 @var{COMMAND_FLAG}  ::= "enter" | "leave"
13601 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
13602 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
13603 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
13604 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
13605 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
13606 @end example
13607
13608 @subsection Examples
13609
13610 @itemize
13611 @item
13612 Specify audio tempo change at second 4:
13613 @example
13614 asendcmd=c='4.0 atempo tempo 1.5',atempo
13615 @end example
13616
13617 @item
13618 Specify a list of drawtext and hue commands in a file.
13619 @example
13620 # show text in the interval 5-10
13621 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
13622          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
13623
13624 # desaturate the image in the interval 15-20
13625 15.0-20.0 [enter] hue s 0,
13626           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
13627           [leave] hue s 1,
13628           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
13629
13630 # apply an exponential saturation fade-out effect, starting from time 25
13631 25 [enter] hue s exp(25-t)
13632 @end example
13633
13634 A filtergraph allowing to read and process the above command list
13635 stored in a file @file{test.cmd}, can be specified with:
13636 @example
13637 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
13638 @end example
13639 @end itemize
13640
13641 @anchor{setpts}
13642 @section setpts, asetpts
13643
13644 Change the PTS (presentation timestamp) of the input frames.
13645
13646 @code{setpts} works on video frames, @code{asetpts} on audio frames.
13647
13648 This filter accepts the following options:
13649
13650 @table @option
13651
13652 @item expr
13653 The expression which is evaluated for each frame to construct its timestamp.
13654
13655 @end table
13656
13657 The expression is evaluated through the eval API and can contain the following
13658 constants:
13659
13660 @table @option
13661 @item FRAME_RATE
13662 frame rate, only defined for constant frame-rate video
13663
13664 @item PTS
13665 The presentation timestamp in input
13666
13667 @item N
13668 The count of the input frame for video or the number of consumed samples,
13669 not including the current frame for audio, starting from 0.
13670
13671 @item NB_CONSUMED_SAMPLES
13672 The number of consumed samples, not including the current frame (only
13673 audio)
13674
13675 @item NB_SAMPLES, S
13676 The number of samples in the current frame (only audio)
13677
13678 @item SAMPLE_RATE, SR
13679 The audio sample rate.
13680
13681 @item STARTPTS
13682 The PTS of the first frame.
13683
13684 @item STARTT
13685 the time in seconds of the first frame
13686
13687 @item INTERLACED
13688 State whether the current frame is interlaced.
13689
13690 @item T
13691 the time in seconds of the current frame
13692
13693 @item POS
13694 original position in the file of the frame, or undefined if undefined
13695 for the current frame
13696
13697 @item PREV_INPTS
13698 The previous input PTS.
13699
13700 @item PREV_INT
13701 previous input time in seconds
13702
13703 @item PREV_OUTPTS
13704 The previous output PTS.
13705
13706 @item PREV_OUTT
13707 previous output time in seconds
13708
13709 @item RTCTIME
13710 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
13711 instead.
13712
13713 @item RTCSTART
13714 The wallclock (RTC) time at the start of the movie in microseconds.
13715
13716 @item TB
13717 The timebase of the input timestamps.
13718
13719 @end table
13720
13721 @subsection Examples
13722
13723 @itemize
13724 @item
13725 Start counting PTS from zero
13726 @example
13727 setpts=PTS-STARTPTS
13728 @end example
13729
13730 @item
13731 Apply fast motion effect:
13732 @example
13733 setpts=0.5*PTS
13734 @end example
13735
13736 @item
13737 Apply slow motion effect:
13738 @example
13739 setpts=2.0*PTS
13740 @end example
13741
13742 @item
13743 Set fixed rate of 25 frames per second:
13744 @example
13745 setpts=N/(25*TB)
13746 @end example
13747
13748 @item
13749 Set fixed rate 25 fps with some jitter:
13750 @example
13751 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
13752 @end example
13753
13754 @item
13755 Apply an offset of 10 seconds to the input PTS:
13756 @example
13757 setpts=PTS+10/TB
13758 @end example
13759
13760 @item
13761 Generate timestamps from a "live source" and rebase onto the current timebase:
13762 @example
13763 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
13764 @end example
13765
13766 @item
13767 Generate timestamps by counting samples:
13768 @example
13769 asetpts=N/SR/TB
13770 @end example
13771
13772 @end itemize
13773
13774 @section settb, asettb
13775
13776 Set the timebase to use for the output frames timestamps.
13777 It is mainly useful for testing timebase configuration.
13778
13779 It accepts the following parameters:
13780
13781 @table @option
13782
13783 @item expr, tb
13784 The expression which is evaluated into the output timebase.
13785
13786 @end table
13787
13788 The value for @option{tb} is an arithmetic expression representing a
13789 rational. The expression can contain the constants "AVTB" (the default
13790 timebase), "intb" (the input timebase) and "sr" (the sample rate,
13791 audio only). Default value is "intb".
13792
13793 @subsection Examples
13794
13795 @itemize
13796 @item
13797 Set the timebase to 1/25:
13798 @example
13799 settb=expr=1/25
13800 @end example
13801
13802 @item
13803 Set the timebase to 1/10:
13804 @example
13805 settb=expr=0.1
13806 @end example
13807
13808 @item
13809 Set the timebase to 1001/1000:
13810 @example
13811 settb=1+0.001
13812 @end example
13813
13814 @item
13815 Set the timebase to 2*intb:
13816 @example
13817 settb=2*intb
13818 @end example
13819
13820 @item
13821 Set the default timebase value:
13822 @example
13823 settb=AVTB
13824 @end example
13825 @end itemize
13826
13827 @section showcqt
13828 Convert input audio to a video output representing frequency spectrum
13829 logarithmically using Brown-Puckette constant Q transform algorithm with
13830 direct frequency domain coefficient calculation (but the transform itself
13831 is not really constant Q, instead the Q factor is actually variable/clamped),
13832 with musical tone scale, from E0 to D#10.
13833
13834 The filter accepts the following options:
13835
13836 @table @option
13837 @item size, s
13838 Specify the video size for the output. It must be even. For the syntax of this option,
13839 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
13840 Default value is @code{1920x1080}.
13841
13842 @item fps, rate, r
13843 Set the output frame rate. Default value is @code{25}.
13844
13845 @item bar_h
13846 Set the bargraph height. It must be even. Default value is @code{-1} which
13847 computes the bargraph height automatically.
13848
13849 @item axis_h
13850 Set the axis height. It must be even. Default value is @code{-1} which computes
13851 the axis height automatically.
13852
13853 @item sono_h
13854 Set the sonogram height. It must be even. Default value is @code{-1} which
13855 computes the sonogram height automatically.
13856
13857 @item fullhd
13858 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
13859 instead. Default value is @code{1}.
13860
13861 @item sono_v, volume
13862 Specify the sonogram volume expression. It can contain variables:
13863 @table @option
13864 @item bar_v
13865 the @var{bar_v} evaluated expression
13866 @item frequency, freq, f
13867 the frequency where it is evaluated
13868 @item timeclamp, tc
13869 the value of @var{timeclamp} option
13870 @end table
13871 and functions:
13872 @table @option
13873 @item a_weighting(f)
13874 A-weighting of equal loudness
13875 @item b_weighting(f)
13876 B-weighting of equal loudness
13877 @item c_weighting(f)
13878 C-weighting of equal loudness.
13879 @end table
13880 Default value is @code{16}.
13881
13882 @item bar_v, volume2
13883 Specify the bargraph volume expression. It can contain variables:
13884 @table @option
13885 @item sono_v
13886 the @var{sono_v} evaluated expression
13887 @item frequency, freq, f
13888 the frequency where it is evaluated
13889 @item timeclamp, tc
13890 the value of @var{timeclamp} option
13891 @end table
13892 and functions:
13893 @table @option
13894 @item a_weighting(f)
13895 A-weighting of equal loudness
13896 @item b_weighting(f)
13897 B-weighting of equal loudness
13898 @item c_weighting(f)
13899 C-weighting of equal loudness.
13900 @end table
13901 Default value is @code{sono_v}.
13902
13903 @item sono_g, gamma
13904 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
13905 higher gamma makes the spectrum having more range. Default value is @code{3}.
13906 Acceptable range is @code{[1, 7]}.
13907
13908 @item bar_g, gamma2
13909 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
13910 @code{[1, 7]}.
13911
13912 @item timeclamp, tc
13913 Specify the transform timeclamp. At low frequency, there is trade-off between
13914 accuracy in time domain and frequency domain. If timeclamp is lower,
13915 event in time domain is represented more accurately (such as fast bass drum),
13916 otherwise event in frequency domain is represented more accurately
13917 (such as bass guitar). Acceptable range is @code{[0.1, 1]}. Default value is @code{0.17}.
13918
13919 @item basefreq
13920 Specify the transform base frequency. Default value is @code{20.01523126408007475},
13921 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
13922
13923 @item endfreq
13924 Specify the transform end frequency. Default value is @code{20495.59681441799654},
13925 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
13926
13927 @item coeffclamp
13928 This option is deprecated and ignored.
13929
13930 @item tlength
13931 Specify the transform length in time domain. Use this option to control accuracy
13932 trade-off between time domain and frequency domain at every frequency sample.
13933 It can contain variables:
13934 @table @option
13935 @item frequency, freq, f
13936 the frequency where it is evaluated
13937 @item timeclamp, tc
13938 the value of @var{timeclamp} option.
13939 @end table
13940 Default value is @code{384*tc/(384+tc*f)}.
13941
13942 @item count
13943 Specify the transform count for every video frame. Default value is @code{6}.
13944 Acceptable range is @code{[1, 30]}.
13945
13946 @item fcount
13947 Specify the transform count for every single pixel. Default value is @code{0},
13948 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
13949
13950 @item fontfile
13951 Specify font file for use with freetype to draw the axis. If not specified,
13952 use embedded font. Note that drawing with font file or embedded font is not
13953 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
13954 option instead.
13955
13956 @item fontcolor
13957 Specify font color expression. This is arithmetic expression that should return
13958 integer value 0xRRGGBB. It can contain variables:
13959 @table @option
13960 @item frequency, freq, f
13961 the frequency where it is evaluated
13962 @item timeclamp, tc
13963 the value of @var{timeclamp} option
13964 @end table
13965 and functions:
13966 @table @option
13967 @item midi(f)
13968 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
13969 @item r(x), g(x), b(x)
13970 red, green, and blue value of intensity x.
13971 @end table
13972 Default value is @code{st(0, (midi(f)-59.5)/12);
13973 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
13974 r(1-ld(1)) + b(ld(1))}.
13975
13976 @item axisfile
13977 Specify image file to draw the axis. This option override @var{fontfile} and
13978 @var{fontcolor} option.
13979
13980 @item axis, text
13981 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
13982 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
13983 Default value is @code{1}.
13984
13985 @end table
13986
13987 @subsection Examples
13988
13989 @itemize
13990 @item
13991 Playing audio while showing the spectrum:
13992 @example
13993 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
13994 @end example
13995
13996 @item
13997 Same as above, but with frame rate 30 fps:
13998 @example
13999 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
14000 @end example
14001
14002 @item
14003 Playing at 1280x720:
14004 @example
14005 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
14006 @end example
14007
14008 @item
14009 Disable sonogram display:
14010 @example
14011 sono_h=0
14012 @end example
14013
14014 @item
14015 A1 and its harmonics: A1, A2, (near)E3, A3:
14016 @example
14017 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),
14018                  asplit[a][out1]; [a] showcqt [out0]'
14019 @end example
14020
14021 @item
14022 Same as above, but with more accuracy in frequency domain:
14023 @example
14024 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),
14025                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
14026 @end example
14027
14028 @item
14029 Custom volume:
14030 @example
14031 bar_v=10:sono_v=bar_v*a_weighting(f)
14032 @end example
14033
14034 @item
14035 Custom gamma, now spectrum is linear to the amplitude.
14036 @example
14037 bar_g=2:sono_g=2
14038 @end example
14039
14040 @item
14041 Custom tlength equation:
14042 @example
14043 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)))'
14044 @end example
14045
14046 @item
14047 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
14048 @example
14049 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
14050 @end example
14051
14052 @item
14053 Custom frequency range with custom axis using image file:
14054 @example
14055 axisfile=myaxis.png:basefreq=40:endfreq=10000
14056 @end example
14057 @end itemize
14058
14059 @section showfreqs
14060
14061 Convert input audio to video output representing the audio power spectrum.
14062 Audio amplitude is on Y-axis while frequency is on X-axis.
14063
14064 The filter accepts the following options:
14065
14066 @table @option
14067 @item size, s
14068 Specify size of video. For the syntax of this option, check the
14069 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14070 Default is @code{1024x512}.
14071
14072 @item mode
14073 Set display mode.
14074 This set how each frequency bin will be represented.
14075
14076 It accepts the following values:
14077 @table @samp
14078 @item line
14079 @item bar
14080 @item dot
14081 @end table
14082 Default is @code{bar}.
14083
14084 @item ascale
14085 Set amplitude scale.
14086
14087 It accepts the following values:
14088 @table @samp
14089 @item lin
14090 Linear scale.
14091
14092 @item sqrt
14093 Square root scale.
14094
14095 @item cbrt
14096 Cubic root scale.
14097
14098 @item log
14099 Logarithmic scale.
14100 @end table
14101 Default is @code{log}.
14102
14103 @item fscale
14104 Set frequency scale.
14105
14106 It accepts the following values:
14107 @table @samp
14108 @item lin
14109 Linear scale.
14110
14111 @item log
14112 Logarithmic scale.
14113
14114 @item rlog
14115 Reverse logarithmic scale.
14116 @end table
14117 Default is @code{lin}.
14118
14119 @item win_size
14120 Set window size.
14121
14122 It accepts the following values:
14123 @table @samp
14124 @item w16
14125 @item w32
14126 @item w64
14127 @item w128
14128 @item w256
14129 @item w512
14130 @item w1024
14131 @item w2048
14132 @item w4096
14133 @item w8192
14134 @item w16384
14135 @item w32768
14136 @item w65536
14137 @end table
14138 Default is @code{w2048}
14139
14140 @item win_func
14141 Set windowing function.
14142
14143 It accepts the following values:
14144 @table @samp
14145 @item rect
14146 @item bartlett
14147 @item hanning
14148 @item hamming
14149 @item blackman
14150 @item welch
14151 @item flattop
14152 @item bharris
14153 @item bnuttall
14154 @item bhann
14155 @item sine
14156 @item nuttall
14157 @item lanczos
14158 @item gauss
14159 @end table
14160 Default is @code{hanning}.
14161
14162 @item overlap
14163 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
14164 which means optimal overlap for selected window function will be picked.
14165
14166 @item averaging
14167 Set time averaging. Setting this to 0 will display current maximal peaks.
14168 Default is @code{1}, which means time averaging is disabled.
14169
14170 @item colors
14171 Specify list of colors separated by space or by '|' which will be used to
14172 draw channel frequencies. Unrecognized or missing colors will be replaced
14173 by white color.
14174 @end table
14175
14176 @section showspectrum
14177
14178 Convert input audio to a video output, representing the audio frequency
14179 spectrum.
14180
14181 The filter accepts the following options:
14182
14183 @table @option
14184 @item size, s
14185 Specify the video size for the output. For the syntax of this option, check the
14186 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14187 Default value is @code{640x512}.
14188
14189 @item slide
14190 Specify how the spectrum should slide along the window.
14191
14192 It accepts the following values:
14193 @table @samp
14194 @item replace
14195 the samples start again on the left when they reach the right
14196 @item scroll
14197 the samples scroll from right to left
14198 @item fullframe
14199 frames are only produced when the samples reach the right
14200 @end table
14201
14202 Default value is @code{replace}.
14203
14204 @item mode
14205 Specify display mode.
14206
14207 It accepts the following values:
14208 @table @samp
14209 @item combined
14210 all channels are displayed in the same row
14211 @item separate
14212 all channels are displayed in separate rows
14213 @end table
14214
14215 Default value is @samp{combined}.
14216
14217 @item color
14218 Specify display color mode.
14219
14220 It accepts the following values:
14221 @table @samp
14222 @item channel
14223 each channel is displayed in a separate color
14224 @item intensity
14225 each channel is is displayed using the same color scheme
14226 @end table
14227
14228 Default value is @samp{channel}.
14229
14230 @item scale
14231 Specify scale used for calculating intensity color values.
14232
14233 It accepts the following values:
14234 @table @samp
14235 @item lin
14236 linear
14237 @item sqrt
14238 square root, default
14239 @item cbrt
14240 cubic root
14241 @item log
14242 logarithmic
14243 @end table
14244
14245 Default value is @samp{sqrt}.
14246
14247 @item saturation
14248 Set saturation modifier for displayed colors. Negative values provide
14249 alternative color scheme. @code{0} is no saturation at all.
14250 Saturation must be in [-10.0, 10.0] range.
14251 Default value is @code{1}.
14252
14253 @item win_func
14254 Set window function.
14255
14256 It accepts the following values:
14257 @table @samp
14258 @item none
14259 No samples pre-processing (do not expect this to be faster)
14260 @item hann
14261 Hann window
14262 @item hamming
14263 Hamming window
14264 @item blackman
14265 Blackman window
14266 @end table
14267
14268 Default value is @code{hann}.
14269 @end table
14270
14271 The usage is very similar to the showwaves filter; see the examples in that
14272 section.
14273
14274 @subsection Examples
14275
14276 @itemize
14277 @item
14278 Large window with logarithmic color scaling:
14279 @example
14280 showspectrum=s=1280x480:scale=log
14281 @end example
14282
14283 @item
14284 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
14285 @example
14286 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
14287              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
14288 @end example
14289 @end itemize
14290
14291 @section showvolume
14292
14293 Convert input audio volume to a video output.
14294
14295 The filter accepts the following options:
14296
14297 @table @option
14298 @item rate, r
14299 Set video rate.
14300
14301 @item b
14302 Set border width, allowed range is [0, 5]. Default is 1.
14303
14304 @item w
14305 Set channel width, allowed range is [80, 1080]. Default is 400.
14306
14307 @item h
14308 Set channel height, allowed range is [1, 100]. Default is 20.
14309
14310 @item f
14311 Set fade, allowed range is [0.001, 1]. Default is 0.95.
14312
14313 @item c
14314 Set volume color expression.
14315
14316 The expression can use the following variables:
14317
14318 @table @option
14319 @item VOLUME
14320 Current max volume of channel in dB.
14321
14322 @item CHANNEL
14323 Current channel number, starting from 0.
14324 @end table
14325
14326 @item t
14327 If set, displays channel names. Default is enabled.
14328
14329 @item v
14330 If set, displays volume values. Default is enabled.
14331 @end table
14332
14333 @section showwaves
14334
14335 Convert input audio to a video output, representing the samples waves.
14336
14337 The filter accepts the following options:
14338
14339 @table @option
14340 @item size, s
14341 Specify the video size for the output. For the syntax of this option, check the
14342 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14343 Default value is @code{600x240}.
14344
14345 @item mode
14346 Set display mode.
14347
14348 Available values are:
14349 @table @samp
14350 @item point
14351 Draw a point for each sample.
14352
14353 @item line
14354 Draw a vertical line for each sample.
14355
14356 @item p2p
14357 Draw a point for each sample and a line between them.
14358
14359 @item cline
14360 Draw a centered vertical line for each sample.
14361 @end table
14362
14363 Default value is @code{point}.
14364
14365 @item n
14366 Set the number of samples which are printed on the same column. A
14367 larger value will decrease the frame rate. Must be a positive
14368 integer. This option can be set only if the value for @var{rate}
14369 is not explicitly specified.
14370
14371 @item rate, r
14372 Set the (approximate) output frame rate. This is done by setting the
14373 option @var{n}. Default value is "25".
14374
14375 @item split_channels
14376 Set if channels should be drawn separately or overlap. Default value is 0.
14377
14378 @end table
14379
14380 @subsection Examples
14381
14382 @itemize
14383 @item
14384 Output the input file audio and the corresponding video representation
14385 at the same time:
14386 @example
14387 amovie=a.mp3,asplit[out0],showwaves[out1]
14388 @end example
14389
14390 @item
14391 Create a synthetic signal and show it with showwaves, forcing a
14392 frame rate of 30 frames per second:
14393 @example
14394 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
14395 @end example
14396 @end itemize
14397
14398 @section showwavespic
14399
14400 Convert input audio to a single video frame, representing the samples waves.
14401
14402 The filter accepts the following options:
14403
14404 @table @option
14405 @item size, s
14406 Specify the video size for the output. For the syntax of this option, check the
14407 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14408 Default value is @code{600x240}.
14409
14410 @item split_channels
14411 Set if channels should be drawn separately or overlap. Default value is 0.
14412 @end table
14413
14414 @subsection Examples
14415
14416 @itemize
14417 @item
14418 Extract a channel split representation of the wave form of a whole audio track
14419 in a 1024x800 picture using @command{ffmpeg}:
14420 @example
14421 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
14422 @end example
14423 @end itemize
14424
14425 @section split, asplit
14426
14427 Split input into several identical outputs.
14428
14429 @code{asplit} works with audio input, @code{split} with video.
14430
14431 The filter accepts a single parameter which specifies the number of outputs. If
14432 unspecified, it defaults to 2.
14433
14434 @subsection Examples
14435
14436 @itemize
14437 @item
14438 Create two separate outputs from the same input:
14439 @example
14440 [in] split [out0][out1]
14441 @end example
14442
14443 @item
14444 To create 3 or more outputs, you need to specify the number of
14445 outputs, like in:
14446 @example
14447 [in] asplit=3 [out0][out1][out2]
14448 @end example
14449
14450 @item
14451 Create two separate outputs from the same input, one cropped and
14452 one padded:
14453 @example
14454 [in] split [splitout1][splitout2];
14455 [splitout1] crop=100:100:0:0    [cropout];
14456 [splitout2] pad=200:200:100:100 [padout];
14457 @end example
14458
14459 @item
14460 Create 5 copies of the input audio with @command{ffmpeg}:
14461 @example
14462 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
14463 @end example
14464 @end itemize
14465
14466 @section zmq, azmq
14467
14468 Receive commands sent through a libzmq client, and forward them to
14469 filters in the filtergraph.
14470
14471 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
14472 must be inserted between two video filters, @code{azmq} between two
14473 audio filters.
14474
14475 To enable these filters you need to install the libzmq library and
14476 headers and configure FFmpeg with @code{--enable-libzmq}.
14477
14478 For more information about libzmq see:
14479 @url{http://www.zeromq.org/}
14480
14481 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
14482 receives messages sent through a network interface defined by the
14483 @option{bind_address} option.
14484
14485 The received message must be in the form:
14486 @example
14487 @var{TARGET} @var{COMMAND} [@var{ARG}]
14488 @end example
14489
14490 @var{TARGET} specifies the target of the command, usually the name of
14491 the filter class or a specific filter instance name.
14492
14493 @var{COMMAND} specifies the name of the command for the target filter.
14494
14495 @var{ARG} is optional and specifies the optional argument list for the
14496 given @var{COMMAND}.
14497
14498 Upon reception, the message is processed and the corresponding command
14499 is injected into the filtergraph. Depending on the result, the filter
14500 will send a reply to the client, adopting the format:
14501 @example
14502 @var{ERROR_CODE} @var{ERROR_REASON}
14503 @var{MESSAGE}
14504 @end example
14505
14506 @var{MESSAGE} is optional.
14507
14508 @subsection Examples
14509
14510 Look at @file{tools/zmqsend} for an example of a zmq client which can
14511 be used to send commands processed by these filters.
14512
14513 Consider the following filtergraph generated by @command{ffplay}
14514 @example
14515 ffplay -dumpgraph 1 -f lavfi "
14516 color=s=100x100:c=red  [l];
14517 color=s=100x100:c=blue [r];
14518 nullsrc=s=200x100, zmq [bg];
14519 [bg][l]   overlay      [bg+l];
14520 [bg+l][r] overlay=x=100 "
14521 @end example
14522
14523 To change the color of the left side of the video, the following
14524 command can be used:
14525 @example
14526 echo Parsed_color_0 c yellow | tools/zmqsend
14527 @end example
14528
14529 To change the right side:
14530 @example
14531 echo Parsed_color_1 c pink | tools/zmqsend
14532 @end example
14533
14534 @c man end MULTIMEDIA FILTERS
14535
14536 @chapter Multimedia Sources
14537 @c man begin MULTIMEDIA SOURCES
14538
14539 Below is a description of the currently available multimedia sources.
14540
14541 @section amovie
14542
14543 This is the same as @ref{movie} source, except it selects an audio
14544 stream by default.
14545
14546 @anchor{movie}
14547 @section movie
14548
14549 Read audio and/or video stream(s) from a movie container.
14550
14551 It accepts the following parameters:
14552
14553 @table @option
14554 @item filename
14555 The name of the resource to read (not necessarily a file; it can also be a
14556 device or a stream accessed through some protocol).
14557
14558 @item format_name, f
14559 Specifies the format assumed for the movie to read, and can be either
14560 the name of a container or an input device. If not specified, the
14561 format is guessed from @var{movie_name} or by probing.
14562
14563 @item seek_point, sp
14564 Specifies the seek point in seconds. The frames will be output
14565 starting from this seek point. The parameter is evaluated with
14566 @code{av_strtod}, so the numerical value may be suffixed by an IS
14567 postfix. The default value is "0".
14568
14569 @item streams, s
14570 Specifies the streams to read. Several streams can be specified,
14571 separated by "+". The source will then have as many outputs, in the
14572 same order. The syntax is explained in the ``Stream specifiers''
14573 section in the ffmpeg manual. Two special names, "dv" and "da" specify
14574 respectively the default (best suited) video and audio stream. Default
14575 is "dv", or "da" if the filter is called as "amovie".
14576
14577 @item stream_index, si
14578 Specifies the index of the video stream to read. If the value is -1,
14579 the most suitable video stream will be automatically selected. The default
14580 value is "-1". Deprecated. If the filter is called "amovie", it will select
14581 audio instead of video.
14582
14583 @item loop
14584 Specifies how many times to read the stream in sequence.
14585 If the value is less than 1, the stream will be read again and again.
14586 Default value is "1".
14587
14588 Note that when the movie is looped the source timestamps are not
14589 changed, so it will generate non monotonically increasing timestamps.
14590 @end table
14591
14592 It allows overlaying a second video on top of the main input of
14593 a filtergraph, as shown in this graph:
14594 @example
14595 input -----------> deltapts0 --> overlay --> output
14596                                     ^
14597                                     |
14598 movie --> scale--> deltapts1 -------+
14599 @end example
14600 @subsection Examples
14601
14602 @itemize
14603 @item
14604 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
14605 on top of the input labelled "in":
14606 @example
14607 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
14608 [in] setpts=PTS-STARTPTS [main];
14609 [main][over] overlay=16:16 [out]
14610 @end example
14611
14612 @item
14613 Read from a video4linux2 device, and overlay it on top of the input
14614 labelled "in":
14615 @example
14616 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
14617 [in] setpts=PTS-STARTPTS [main];
14618 [main][over] overlay=16:16 [out]
14619 @end example
14620
14621 @item
14622 Read the first video stream and the audio stream with id 0x81 from
14623 dvd.vob; the video is connected to the pad named "video" and the audio is
14624 connected to the pad named "audio":
14625 @example
14626 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
14627 @end example
14628 @end itemize
14629
14630 @c man end MULTIMEDIA SOURCES