]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
Merge commit '1bf34134612e509fa68c70dfff418c6022459259'
[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 level_in
354 Set input gain. Default is 1. Range is between 0.015625 and 64.
355
356 @item threshold
357 If a signal of second stream rises above this level it will affect the gain
358 reduction of the first stream.
359 By default it is 0.125. Range is between 0.00097563 and 1.
360
361 @item ratio
362 Set a ratio by which the signal is reduced. 1:2 means that if the level
363 rose 4dB above the threshold, it will be only 2dB above after the reduction.
364 Default is 2. Range is between 1 and 20.
365
366 @item attack
367 Amount of milliseconds the signal has to rise above the threshold before gain
368 reduction starts. Default is 20. Range is between 0.01 and 2000.
369
370 @item release
371 Amount of milliseconds the signal has to fall below the threshold before
372 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
373
374 @item makeup
375 Set the amount by how much signal will be amplified after processing.
376 Default is 2. Range is from 1 and 64.
377
378 @item knee
379 Curve the sharp knee around the threshold to enter gain reduction more softly.
380 Default is 2.82843. Range is between 1 and 8.
381
382 @item link
383 Choose if the @code{average} level between all channels of input stream
384 or the louder(@code{maximum}) channel of input stream affects the
385 reduction. Default is @code{average}.
386
387 @item detection
388 Should the exact signal be taken in case of @code{peak} or an RMS one in case
389 of @code{rms}. Default is @code{rms} which is mostly smoother.
390
391 @item mix
392 How much to use compressed signal in output. Default is 1.
393 Range is between 0 and 1.
394 @end table
395
396 @section acrossfade
397
398 Apply cross fade from one input audio stream to another input audio stream.
399 The cross fade is applied for specified duration near the end of first stream.
400
401 The filter accepts the following options:
402
403 @table @option
404 @item nb_samples, ns
405 Specify the number of samples for which the cross fade effect has to last.
406 At the end of the cross fade effect the first input audio will be completely
407 silent. Default is 44100.
408
409 @item duration, d
410 Specify the duration of the cross fade effect. See
411 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
412 for the accepted syntax.
413 By default the duration is determined by @var{nb_samples}.
414 If set this option is used instead of @var{nb_samples}.
415
416 @item overlap, o
417 Should first stream end overlap with second stream start. Default is enabled.
418
419 @item curve1
420 Set curve for cross fade transition for first stream.
421
422 @item curve2
423 Set curve for cross fade transition for second stream.
424
425 For description of available curve types see @ref{afade} filter description.
426 @end table
427
428 @subsection Examples
429
430 @itemize
431 @item
432 Cross fade from one input to another:
433 @example
434 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
435 @end example
436
437 @item
438 Cross fade from one input to another but without overlapping:
439 @example
440 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
441 @end example
442 @end itemize
443
444 @section adelay
445
446 Delay one or more audio channels.
447
448 Samples in delayed channel are filled with silence.
449
450 The filter accepts the following option:
451
452 @table @option
453 @item delays
454 Set list of delays in milliseconds for each channel separated by '|'.
455 At least one delay greater than 0 should be provided.
456 Unused delays will be silently ignored. If number of given delays is
457 smaller than number of channels all remaining channels will not be delayed.
458 @end table
459
460 @subsection Examples
461
462 @itemize
463 @item
464 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
465 the second channel (and any other channels that may be present) unchanged.
466 @example
467 adelay=1500|0|500
468 @end example
469 @end itemize
470
471 @section aecho
472
473 Apply echoing to the input audio.
474
475 Echoes are reflected sound and can occur naturally amongst mountains
476 (and sometimes large buildings) when talking or shouting; digital echo
477 effects emulate this behaviour and are often used to help fill out the
478 sound of a single instrument or vocal. The time difference between the
479 original signal and the reflection is the @code{delay}, and the
480 loudness of the reflected signal is the @code{decay}.
481 Multiple echoes can have different delays and decays.
482
483 A description of the accepted parameters follows.
484
485 @table @option
486 @item in_gain
487 Set input gain of reflected signal. Default is @code{0.6}.
488
489 @item out_gain
490 Set output gain of reflected signal. Default is @code{0.3}.
491
492 @item delays
493 Set list of time intervals in milliseconds between original signal and reflections
494 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
495 Default is @code{1000}.
496
497 @item decays
498 Set list of loudnesses of reflected signals separated by '|'.
499 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
500 Default is @code{0.5}.
501 @end table
502
503 @subsection Examples
504
505 @itemize
506 @item
507 Make it sound as if there are twice as many instruments as are actually playing:
508 @example
509 aecho=0.8:0.88:60:0.4
510 @end example
511
512 @item
513 If delay is very short, then it sound like a (metallic) robot playing music:
514 @example
515 aecho=0.8:0.88:6:0.4
516 @end example
517
518 @item
519 A longer delay will sound like an open air concert in the mountains:
520 @example
521 aecho=0.8:0.9:1000:0.3
522 @end example
523
524 @item
525 Same as above but with one more mountain:
526 @example
527 aecho=0.8:0.9:1000|1800:0.3|0.25
528 @end example
529 @end itemize
530
531 @section aemphasis
532 Audio emphasis filter creates or restores material directly taken from LPs or
533 emphased CDs with different filter curves. E.g. to store music on vinyl the
534 signal has to be altered by a filter first to even out the disadvantages of
535 this recording medium.
536 Once the material is played back the inverse filter has to be applied to
537 restore the distortion of the frequency response.
538
539 The filter accepts the following options:
540
541 @table @option
542 @item level_in
543 Set input gain.
544
545 @item level_out
546 Set output gain.
547
548 @item mode
549 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
550 use @code{production} mode. Default is @code{reproduction} mode.
551
552 @item type
553 Set filter type. Selects medium. Can be one of the following:
554
555 @table @option
556 @item col
557 select Columbia.
558 @item emi
559 select EMI.
560 @item bsi
561 select BSI (78RPM).
562 @item riaa
563 select RIAA.
564 @item cd
565 select Compact Disc (CD).
566 @item 50fm
567 select 50µs (FM).
568 @item 75fm
569 select 75µs (FM).
570 @item 50kf
571 select 50µs (FM-KF).
572 @item 75kf
573 select 75µs (FM-KF).
574 @end table
575 @end table
576
577 @section aeval
578
579 Modify an audio signal according to the specified expressions.
580
581 This filter accepts one or more expressions (one for each channel),
582 which are evaluated and used to modify a corresponding audio signal.
583
584 It accepts the following parameters:
585
586 @table @option
587 @item exprs
588 Set the '|'-separated expressions list for each separate channel. If
589 the number of input channels is greater than the number of
590 expressions, the last specified expression is used for the remaining
591 output channels.
592
593 @item channel_layout, c
594 Set output channel layout. If not specified, the channel layout is
595 specified by the number of expressions. If set to @samp{same}, it will
596 use by default the same input channel layout.
597 @end table
598
599 Each expression in @var{exprs} can contain the following constants and functions:
600
601 @table @option
602 @item ch
603 channel number of the current expression
604
605 @item n
606 number of the evaluated sample, starting from 0
607
608 @item s
609 sample rate
610
611 @item t
612 time of the evaluated sample expressed in seconds
613
614 @item nb_in_channels
615 @item nb_out_channels
616 input and output number of channels
617
618 @item val(CH)
619 the value of input channel with number @var{CH}
620 @end table
621
622 Note: this filter is slow. For faster processing you should use a
623 dedicated filter.
624
625 @subsection Examples
626
627 @itemize
628 @item
629 Half volume:
630 @example
631 aeval=val(ch)/2:c=same
632 @end example
633
634 @item
635 Invert phase of the second channel:
636 @example
637 aeval=val(0)|-val(1)
638 @end example
639 @end itemize
640
641 @anchor{afade}
642 @section afade
643
644 Apply fade-in/out effect to input audio.
645
646 A description of the accepted parameters follows.
647
648 @table @option
649 @item type, t
650 Specify the effect type, can be either @code{in} for fade-in, or
651 @code{out} for a fade-out effect. Default is @code{in}.
652
653 @item start_sample, ss
654 Specify the number of the start sample for starting to apply the fade
655 effect. Default is 0.
656
657 @item nb_samples, ns
658 Specify the number of samples for which the fade effect has to last. At
659 the end of the fade-in effect the output audio will have the same
660 volume as the input audio, at the end of the fade-out transition
661 the output audio will be silence. Default is 44100.
662
663 @item start_time, st
664 Specify the start time of the fade effect. Default is 0.
665 The value must be specified as a time duration; see
666 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
667 for the accepted syntax.
668 If set this option is used instead of @var{start_sample}.
669
670 @item duration, d
671 Specify the duration of the fade effect. See
672 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
673 for the accepted syntax.
674 At the end of the fade-in effect the output audio will have the same
675 volume as the input audio, at the end of the fade-out transition
676 the output audio will be silence.
677 By default the duration is determined by @var{nb_samples}.
678 If set this option is used instead of @var{nb_samples}.
679
680 @item curve
681 Set curve for fade transition.
682
683 It accepts the following values:
684 @table @option
685 @item tri
686 select triangular, linear slope (default)
687 @item qsin
688 select quarter of sine wave
689 @item hsin
690 select half of sine wave
691 @item esin
692 select exponential sine wave
693 @item log
694 select logarithmic
695 @item ipar
696 select inverted parabola
697 @item qua
698 select quadratic
699 @item cub
700 select cubic
701 @item squ
702 select square root
703 @item cbr
704 select cubic root
705 @item par
706 select parabola
707 @item exp
708 select exponential
709 @item iqsin
710 select inverted quarter of sine wave
711 @item ihsin
712 select inverted half of sine wave
713 @item dese
714 select double-exponential seat
715 @item desi
716 select double-exponential sigmoid
717 @end table
718 @end table
719
720 @subsection Examples
721
722 @itemize
723 @item
724 Fade in first 15 seconds of audio:
725 @example
726 afade=t=in:ss=0:d=15
727 @end example
728
729 @item
730 Fade out last 25 seconds of a 900 seconds audio:
731 @example
732 afade=t=out:st=875:d=25
733 @end example
734 @end itemize
735
736 @section afftfilt
737 Apply arbitrary expressions to samples in frequency domain.
738
739 @table @option
740 @item real
741 Set frequency domain real expression for each separate channel separated
742 by '|'. Default is "1".
743 If the number of input channels is greater than the number of
744 expressions, the last specified expression is used for the remaining
745 output channels.
746
747 @item imag
748 Set frequency domain imaginary expression for each separate channel
749 separated by '|'. If not set, @var{real} option is used.
750
751 Each expression in @var{real} and @var{imag} can contain the following
752 constants:
753
754 @table @option
755 @item sr
756 sample rate
757
758 @item b
759 current frequency bin number
760
761 @item nb
762 number of available bins
763
764 @item ch
765 channel number of the current expression
766
767 @item chs
768 number of channels
769
770 @item pts
771 current frame pts
772 @end table
773
774 @item win_size
775 Set window size.
776
777 It accepts the following values:
778 @table @samp
779 @item w16
780 @item w32
781 @item w64
782 @item w128
783 @item w256
784 @item w512
785 @item w1024
786 @item w2048
787 @item w4096
788 @item w8192
789 @item w16384
790 @item w32768
791 @item w65536
792 @end table
793 Default is @code{w4096}
794
795 @item win_func
796 Set window function. Default is @code{hann}.
797
798 @item overlap
799 Set window overlap. If set to 1, the recommended overlap for selected
800 window function will be picked. Default is @code{0.75}.
801 @end table
802
803 @subsection Examples
804
805 @itemize
806 @item
807 Leave almost only low frequencies in audio:
808 @example
809 afftfilt="1-clip((b/nb)*b,0,1)"
810 @end example
811 @end itemize
812
813 @anchor{aformat}
814 @section aformat
815
816 Set output format constraints for the input audio. The framework will
817 negotiate the most appropriate format to minimize conversions.
818
819 It accepts the following parameters:
820 @table @option
821
822 @item sample_fmts
823 A '|'-separated list of requested sample formats.
824
825 @item sample_rates
826 A '|'-separated list of requested sample rates.
827
828 @item channel_layouts
829 A '|'-separated list of requested channel layouts.
830
831 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
832 for the required syntax.
833 @end table
834
835 If a parameter is omitted, all values are allowed.
836
837 Force the output to either unsigned 8-bit or signed 16-bit stereo
838 @example
839 aformat=sample_fmts=u8|s16:channel_layouts=stereo
840 @end example
841
842 @section agate
843
844 A gate is mainly used to reduce lower parts of a signal. This kind of signal
845 processing reduces disturbing noise between useful signals.
846
847 Gating is done by detecting the volume below a chosen level @var{threshold}
848 and divide it by the factor set with @var{ratio}. The bottom of the noise
849 floor is set via @var{range}. Because an exact manipulation of the signal
850 would cause distortion of the waveform the reduction can be levelled over
851 time. This is done by setting @var{attack} and @var{release}.
852
853 @var{attack} determines how long the signal has to fall below the threshold
854 before any reduction will occur and @var{release} sets the time the signal
855 has to raise above the threshold to reduce the reduction again.
856 Shorter signals than the chosen attack time will be left untouched.
857
858 @table @option
859 @item level_in
860 Set input level before filtering.
861 Default is 1. Allowed range is from 0.015625 to 64.
862
863 @item range
864 Set the level of gain reduction when the signal is below the threshold.
865 Default is 0.06125. Allowed range is from 0 to 1.
866
867 @item threshold
868 If a signal rises above this level the gain reduction is released.
869 Default is 0.125. Allowed range is from 0 to 1.
870
871 @item ratio
872 Set a ratio about which the signal is reduced.
873 Default is 2. Allowed range is from 1 to 9000.
874
875 @item attack
876 Amount of milliseconds the signal has to rise above the threshold before gain
877 reduction stops.
878 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
879
880 @item release
881 Amount of milliseconds the signal has to fall below the threshold before the
882 reduction is increased again. Default is 250 milliseconds.
883 Allowed range is from 0.01 to 9000.
884
885 @item makeup
886 Set amount of amplification of signal after processing.
887 Default is 1. Allowed range is from 1 to 64.
888
889 @item knee
890 Curve the sharp knee around the threshold to enter gain reduction more softly.
891 Default is 2.828427125. Allowed range is from 1 to 8.
892
893 @item detection
894 Choose if exact signal should be taken for detection or an RMS like one.
895 Default is rms. Can be peak or rms.
896
897 @item link
898 Choose if the average level between all channels or the louder channel affects
899 the reduction.
900 Default is average. Can be average or maximum.
901 @end table
902
903 @section alimiter
904
905 The limiter prevents input signal from raising over a desired threshold.
906 This limiter uses lookahead technology to prevent your signal from distorting.
907 It means that there is a small delay after signal is processed. Keep in mind
908 that the delay it produces is the attack time you set.
909
910 The filter accepts the following options:
911
912 @table @option
913 @item level_in
914 Set input gain. Default is 1.
915
916 @item level_out
917 Set output gain. Default is 1.
918
919 @item limit
920 Don't let signals above this level pass the limiter. Default is 1.
921
922 @item attack
923 The limiter will reach its attenuation level in this amount of time in
924 milliseconds. Default is 5 milliseconds.
925
926 @item release
927 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
928 Default is 50 milliseconds.
929
930 @item asc
931 When gain reduction is always needed ASC takes care of releasing to an
932 average reduction level rather than reaching a reduction of 0 in the release
933 time.
934
935 @item asc_level
936 Select how much the release time is affected by ASC, 0 means nearly no changes
937 in release time while 1 produces higher release times.
938
939 @item level
940 Auto level output signal. Default is enabled.
941 This normalizes audio back to 0dB if enabled.
942 @end table
943
944 Depending on picked setting it is recommended to upsample input 2x or 4x times
945 with @ref{aresample} before applying this filter.
946
947 @section allpass
948
949 Apply a two-pole all-pass filter with central frequency (in Hz)
950 @var{frequency}, and filter-width @var{width}.
951 An all-pass filter changes the audio's frequency to phase relationship
952 without changing its frequency to amplitude relationship.
953
954 The filter accepts the following options:
955
956 @table @option
957 @item frequency, f
958 Set frequency in Hz.
959
960 @item width_type
961 Set method to specify band-width of filter.
962 @table @option
963 @item h
964 Hz
965 @item q
966 Q-Factor
967 @item o
968 octave
969 @item s
970 slope
971 @end table
972
973 @item width, w
974 Specify the band-width of a filter in width_type units.
975 @end table
976
977 @anchor{amerge}
978 @section amerge
979
980 Merge two or more audio streams into a single multi-channel stream.
981
982 The filter accepts the following options:
983
984 @table @option
985
986 @item inputs
987 Set the number of inputs. Default is 2.
988
989 @end table
990
991 If the channel layouts of the inputs are disjoint, and therefore compatible,
992 the channel layout of the output will be set accordingly and the channels
993 will be reordered as necessary. If the channel layouts of the inputs are not
994 disjoint, the output will have all the channels of the first input then all
995 the channels of the second input, in that order, and the channel layout of
996 the output will be the default value corresponding to the total number of
997 channels.
998
999 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1000 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1001 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1002 first input, b1 is the first channel of the second input).
1003
1004 On the other hand, if both input are in stereo, the output channels will be
1005 in the default order: a1, a2, b1, b2, and the channel layout will be
1006 arbitrarily set to 4.0, which may or may not be the expected value.
1007
1008 All inputs must have the same sample rate, and format.
1009
1010 If inputs do not have the same duration, the output will stop with the
1011 shortest.
1012
1013 @subsection Examples
1014
1015 @itemize
1016 @item
1017 Merge two mono files into a stereo stream:
1018 @example
1019 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1020 @end example
1021
1022 @item
1023 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1024 @example
1025 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
1026 @end example
1027 @end itemize
1028
1029 @section amix
1030
1031 Mixes multiple audio inputs into a single output.
1032
1033 Note that this filter only supports float samples (the @var{amerge}
1034 and @var{pan} audio filters support many formats). If the @var{amix}
1035 input has integer samples then @ref{aresample} will be automatically
1036 inserted to perform the conversion to float samples.
1037
1038 For example
1039 @example
1040 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1041 @end example
1042 will mix 3 input audio streams to a single output with the same duration as the
1043 first input and a dropout transition time of 3 seconds.
1044
1045 It accepts the following parameters:
1046 @table @option
1047
1048 @item inputs
1049 The number of inputs. If unspecified, it defaults to 2.
1050
1051 @item duration
1052 How to determine the end-of-stream.
1053 @table @option
1054
1055 @item longest
1056 The duration of the longest input. (default)
1057
1058 @item shortest
1059 The duration of the shortest input.
1060
1061 @item first
1062 The duration of the first input.
1063
1064 @end table
1065
1066 @item dropout_transition
1067 The transition time, in seconds, for volume renormalization when an input
1068 stream ends. The default value is 2 seconds.
1069
1070 @end table
1071
1072 @section anequalizer
1073
1074 High-order parametric multiband equalizer for each channel.
1075
1076 It accepts the following parameters:
1077 @table @option
1078 @item params
1079
1080 This option string is in format:
1081 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1082 Each equalizer band is separated by '|'.
1083
1084 @table @option
1085 @item chn
1086 Set channel number to which equalization will be applied.
1087 If input doesn't have that channel the entry is ignored.
1088
1089 @item cf
1090 Set central frequency for band.
1091 If input doesn't have that frequency the entry is ignored.
1092
1093 @item w
1094 Set band width in hertz.
1095
1096 @item g
1097 Set band gain in dB.
1098
1099 @item f
1100 Set filter type for band, optional, can be:
1101
1102 @table @samp
1103 @item 0
1104 Butterworth, this is default.
1105
1106 @item 1
1107 Chebyshev type 1.
1108
1109 @item 2
1110 Chebyshev type 2.
1111 @end table
1112 @end table
1113
1114 @item curves
1115 With this option activated frequency response of anequalizer is displayed
1116 in video stream.
1117
1118 @item size
1119 Set video stream size. Only useful if curves option is activated.
1120
1121 @item mgain
1122 Set max gain that will be displayed. Only useful if curves option is activated.
1123 Setting this to reasonable value allows to display gain which is derived from
1124 neighbour bands which are too close to each other and thus produce higher gain
1125 when both are activated.
1126
1127 @item fscale
1128 Set frequency scale used to draw frequency response in video output.
1129 Can be linear or logarithmic. Default is logarithmic.
1130
1131 @item colors
1132 Set color for each channel curve which is going to be displayed in video stream.
1133 This is list of color names separated by space or by '|'.
1134 Unrecognised or missing colors will be replaced by white color.
1135 @end table
1136
1137 @subsection Examples
1138
1139 @itemize
1140 @item
1141 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1142 for first 2 channels using Chebyshev type 1 filter:
1143 @example
1144 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1145 @end example
1146 @end itemize
1147
1148 @subsection Commands
1149
1150 This filter supports the following commands:
1151 @table @option
1152 @item change
1153 Alter existing filter parameters.
1154 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1155
1156 @var{fN} is existing filter number, starting from 0, if no such filter is available
1157 error is returned.
1158 @var{freq} set new frequency parameter.
1159 @var{width} set new width parameter in herz.
1160 @var{gain} set new gain parameter in dB.
1161
1162 Full filter invocation with asendcmd may look like this:
1163 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1164 @end table
1165
1166 @section anull
1167
1168 Pass the audio source unchanged to the output.
1169
1170 @section apad
1171
1172 Pad the end of an audio stream with silence.
1173
1174 This can be used together with @command{ffmpeg} @option{-shortest} to
1175 extend audio streams to the same length as the video stream.
1176
1177 A description of the accepted options follows.
1178
1179 @table @option
1180 @item packet_size
1181 Set silence packet size. Default value is 4096.
1182
1183 @item pad_len
1184 Set the number of samples of silence to add to the end. After the
1185 value is reached, the stream is terminated. This option is mutually
1186 exclusive with @option{whole_len}.
1187
1188 @item whole_len
1189 Set the minimum total number of samples in the output audio stream. If
1190 the value is longer than the input audio length, silence is added to
1191 the end, until the value is reached. This option is mutually exclusive
1192 with @option{pad_len}.
1193 @end table
1194
1195 If neither the @option{pad_len} nor the @option{whole_len} option is
1196 set, the filter will add silence to the end of the input stream
1197 indefinitely.
1198
1199 @subsection Examples
1200
1201 @itemize
1202 @item
1203 Add 1024 samples of silence to the end of the input:
1204 @example
1205 apad=pad_len=1024
1206 @end example
1207
1208 @item
1209 Make sure the audio output will contain at least 10000 samples, pad
1210 the input with silence if required:
1211 @example
1212 apad=whole_len=10000
1213 @end example
1214
1215 @item
1216 Use @command{ffmpeg} to pad the audio input with silence, so that the
1217 video stream will always result the shortest and will be converted
1218 until the end in the output file when using the @option{shortest}
1219 option:
1220 @example
1221 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1222 @end example
1223 @end itemize
1224
1225 @section aphaser
1226 Add a phasing effect to the input audio.
1227
1228 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1229 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1230
1231 A description of the accepted parameters follows.
1232
1233 @table @option
1234 @item in_gain
1235 Set input gain. Default is 0.4.
1236
1237 @item out_gain
1238 Set output gain. Default is 0.74
1239
1240 @item delay
1241 Set delay in milliseconds. Default is 3.0.
1242
1243 @item decay
1244 Set decay. Default is 0.4.
1245
1246 @item speed
1247 Set modulation speed in Hz. Default is 0.5.
1248
1249 @item type
1250 Set modulation type. Default is triangular.
1251
1252 It accepts the following values:
1253 @table @samp
1254 @item triangular, t
1255 @item sinusoidal, s
1256 @end table
1257 @end table
1258
1259 @section apulsator
1260
1261 Audio pulsator is something between an autopanner and a tremolo.
1262 But it can produce funny stereo effects as well. Pulsator changes the volume
1263 of the left and right channel based on a LFO (low frequency oscillator) with
1264 different waveforms and shifted phases.
1265 This filter have the ability to define an offset between left and right
1266 channel. An offset of 0 means that both LFO shapes match each other.
1267 The left and right channel are altered equally - a conventional tremolo.
1268 An offset of 50% means that the shape of the right channel is exactly shifted
1269 in phase (or moved backwards about half of the frequency) - pulsator acts as
1270 an autopanner. At 1 both curves match again. Every setting in between moves the
1271 phase shift gapless between all stages and produces some "bypassing" sounds with
1272 sine and triangle waveforms. The more you set the offset near 1 (starting from
1273 the 0.5) the faster the signal passes from the left to the right speaker.
1274
1275 The filter accepts the following options:
1276
1277 @table @option
1278 @item level_in
1279 Set input gain. By default it is 1. Range is [0.015625 - 64].
1280
1281 @item level_out
1282 Set output gain. By default it is 1. Range is [0.015625 - 64].
1283
1284 @item mode
1285 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
1286 sawup or sawdown. Default is sine.
1287
1288 @item amount
1289 Set modulation. Define how much of original signal is affected by the LFO.
1290
1291 @item offset_l
1292 Set left channel offset. Default is 0. Allowed range is [0 - 1].
1293
1294 @item offset_r
1295 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
1296
1297 @item width
1298 Set pulse width. Default is 1. Allowed range is [0 - 2].
1299
1300 @item timing
1301 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
1302
1303 @item bpm
1304 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
1305 is set to bpm.
1306
1307 @item ms
1308 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
1309 is set to ms.
1310
1311 @item hz
1312 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
1313 if timing is set to hz.
1314 @end table
1315
1316 @anchor{aresample}
1317 @section aresample
1318
1319 Resample the input audio to the specified parameters, using the
1320 libswresample library. If none are specified then the filter will
1321 automatically convert between its input and output.
1322
1323 This filter is also able to stretch/squeeze the audio data to make it match
1324 the timestamps or to inject silence / cut out audio to make it match the
1325 timestamps, do a combination of both or do neither.
1326
1327 The filter accepts the syntax
1328 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
1329 expresses a sample rate and @var{resampler_options} is a list of
1330 @var{key}=@var{value} pairs, separated by ":". See the
1331 ffmpeg-resampler manual for the complete list of supported options.
1332
1333 @subsection Examples
1334
1335 @itemize
1336 @item
1337 Resample the input audio to 44100Hz:
1338 @example
1339 aresample=44100
1340 @end example
1341
1342 @item
1343 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
1344 samples per second compensation:
1345 @example
1346 aresample=async=1000
1347 @end example
1348 @end itemize
1349
1350 @section asetnsamples
1351
1352 Set the number of samples per each output audio frame.
1353
1354 The last output packet may contain a different number of samples, as
1355 the filter will flush all the remaining samples when the input audio
1356 signal its end.
1357
1358 The filter accepts the following options:
1359
1360 @table @option
1361
1362 @item nb_out_samples, n
1363 Set the number of frames per each output audio frame. The number is
1364 intended as the number of samples @emph{per each channel}.
1365 Default value is 1024.
1366
1367 @item pad, p
1368 If set to 1, the filter will pad the last audio frame with zeroes, so
1369 that the last frame will contain the same number of samples as the
1370 previous ones. Default value is 1.
1371 @end table
1372
1373 For example, to set the number of per-frame samples to 1234 and
1374 disable padding for the last frame, use:
1375 @example
1376 asetnsamples=n=1234:p=0
1377 @end example
1378
1379 @section asetrate
1380
1381 Set the sample rate without altering the PCM data.
1382 This will result in a change of speed and pitch.
1383
1384 The filter accepts the following options:
1385
1386 @table @option
1387 @item sample_rate, r
1388 Set the output sample rate. Default is 44100 Hz.
1389 @end table
1390
1391 @section ashowinfo
1392
1393 Show a line containing various information for each input audio frame.
1394 The input audio is not modified.
1395
1396 The shown line contains a sequence of key/value pairs of the form
1397 @var{key}:@var{value}.
1398
1399 The following values are shown in the output:
1400
1401 @table @option
1402 @item n
1403 The (sequential) number of the input frame, starting from 0.
1404
1405 @item pts
1406 The presentation timestamp of the input frame, in time base units; the time base
1407 depends on the filter input pad, and is usually 1/@var{sample_rate}.
1408
1409 @item pts_time
1410 The presentation timestamp of the input frame in seconds.
1411
1412 @item pos
1413 position of the frame in the input stream, -1 if this information in
1414 unavailable and/or meaningless (for example in case of synthetic audio)
1415
1416 @item fmt
1417 The sample format.
1418
1419 @item chlayout
1420 The channel layout.
1421
1422 @item rate
1423 The sample rate for the audio frame.
1424
1425 @item nb_samples
1426 The number of samples (per channel) in the frame.
1427
1428 @item checksum
1429 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
1430 audio, the data is treated as if all the planes were concatenated.
1431
1432 @item plane_checksums
1433 A list of Adler-32 checksums for each data plane.
1434 @end table
1435
1436 @anchor{astats}
1437 @section astats
1438
1439 Display time domain statistical information about the audio channels.
1440 Statistics are calculated and displayed for each audio channel and,
1441 where applicable, an overall figure is also given.
1442
1443 It accepts the following option:
1444 @table @option
1445 @item length
1446 Short window length in seconds, used for peak and trough RMS measurement.
1447 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.1 - 10]}.
1448
1449 @item metadata
1450
1451 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
1452 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
1453 disabled.
1454
1455 Available keys for each channel are:
1456 DC_offset
1457 Min_level
1458 Max_level
1459 Min_difference
1460 Max_difference
1461 Mean_difference
1462 Peak_level
1463 RMS_peak
1464 RMS_trough
1465 Crest_factor
1466 Flat_factor
1467 Peak_count
1468 Bit_depth
1469
1470 and for Overall:
1471 DC_offset
1472 Min_level
1473 Max_level
1474 Min_difference
1475 Max_difference
1476 Mean_difference
1477 Peak_level
1478 RMS_level
1479 RMS_peak
1480 RMS_trough
1481 Flat_factor
1482 Peak_count
1483 Bit_depth
1484 Number_of_samples
1485
1486 For example full key look like this @code{lavfi.astats.1.DC_offset} or
1487 this @code{lavfi.astats.Overall.Peak_count}.
1488
1489 For description what each key means read below.
1490
1491 @item reset
1492 Set number of frame after which stats are going to be recalculated.
1493 Default is disabled.
1494 @end table
1495
1496 A description of each shown parameter follows:
1497
1498 @table @option
1499 @item DC offset
1500 Mean amplitude displacement from zero.
1501
1502 @item Min level
1503 Minimal sample level.
1504
1505 @item Max level
1506 Maximal sample level.
1507
1508 @item Min difference
1509 Minimal difference between two consecutive samples.
1510
1511 @item Max difference
1512 Maximal difference between two consecutive samples.
1513
1514 @item Mean difference
1515 Mean difference between two consecutive samples.
1516 The average of each difference between two consecutive samples.
1517
1518 @item Peak level dB
1519 @item RMS level dB
1520 Standard peak and RMS level measured in dBFS.
1521
1522 @item RMS peak dB
1523 @item RMS trough dB
1524 Peak and trough values for RMS level measured over a short window.
1525
1526 @item Crest factor
1527 Standard ratio of peak to RMS level (note: not in dB).
1528
1529 @item Flat factor
1530 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
1531 (i.e. either @var{Min level} or @var{Max level}).
1532
1533 @item Peak count
1534 Number of occasions (not the number of samples) that the signal attained either
1535 @var{Min level} or @var{Max level}.
1536
1537 @item Bit depth
1538 Overall bit depth of audio. Number of bits used for each sample.
1539 @end table
1540
1541 @section asyncts
1542
1543 Synchronize audio data with timestamps by squeezing/stretching it and/or
1544 dropping samples/adding silence when needed.
1545
1546 This filter is not built by default, please use @ref{aresample} to do squeezing/stretching.
1547
1548 It accepts the following parameters:
1549 @table @option
1550
1551 @item compensate
1552 Enable stretching/squeezing the data to make it match the timestamps. Disabled
1553 by default. When disabled, time gaps are covered with silence.
1554
1555 @item min_delta
1556 The minimum difference between timestamps and audio data (in seconds) to trigger
1557 adding/dropping samples. The default value is 0.1. If you get an imperfect
1558 sync with this filter, try setting this parameter to 0.
1559
1560 @item max_comp
1561 The maximum compensation in samples per second. Only relevant with compensate=1.
1562 The default value is 500.
1563
1564 @item first_pts
1565 Assume that the first PTS should be this value. The time base is 1 / sample
1566 rate. This allows for padding/trimming at the start of the stream. By default,
1567 no assumption is made about the first frame's expected PTS, so no padding or
1568 trimming is done. For example, this could be set to 0 to pad the beginning with
1569 silence if an audio stream starts after the video stream or to trim any samples
1570 with a negative PTS due to encoder delay.
1571
1572 @end table
1573
1574 @section atempo
1575
1576 Adjust audio tempo.
1577
1578 The filter accepts exactly one parameter, the audio tempo. If not
1579 specified then the filter will assume nominal 1.0 tempo. Tempo must
1580 be in the [0.5, 2.0] range.
1581
1582 @subsection Examples
1583
1584 @itemize
1585 @item
1586 Slow down audio to 80% tempo:
1587 @example
1588 atempo=0.8
1589 @end example
1590
1591 @item
1592 To speed up audio to 125% tempo:
1593 @example
1594 atempo=1.25
1595 @end example
1596 @end itemize
1597
1598 @section atrim
1599
1600 Trim the input so that the output contains one continuous subpart of the input.
1601
1602 It accepts the following parameters:
1603 @table @option
1604 @item start
1605 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
1606 sample with the timestamp @var{start} will be the first sample in the output.
1607
1608 @item end
1609 Specify time of the first audio sample that will be dropped, i.e. the
1610 audio sample immediately preceding the one with the timestamp @var{end} will be
1611 the last sample in the output.
1612
1613 @item start_pts
1614 Same as @var{start}, except this option sets the start timestamp in samples
1615 instead of seconds.
1616
1617 @item end_pts
1618 Same as @var{end}, except this option sets the end timestamp in samples instead
1619 of seconds.
1620
1621 @item duration
1622 The maximum duration of the output in seconds.
1623
1624 @item start_sample
1625 The number of the first sample that should be output.
1626
1627 @item end_sample
1628 The number of the first sample that should be dropped.
1629 @end table
1630
1631 @option{start}, @option{end}, and @option{duration} are expressed as time
1632 duration specifications; see
1633 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
1634
1635 Note that the first two sets of the start/end options and the @option{duration}
1636 option look at the frame timestamp, while the _sample options simply count the
1637 samples that pass through the filter. So start/end_pts and start/end_sample will
1638 give different results when the timestamps are wrong, inexact or do not start at
1639 zero. Also note that this filter does not modify the timestamps. If you wish
1640 to have the output timestamps start at zero, insert the asetpts filter after the
1641 atrim filter.
1642
1643 If multiple start or end options are set, this filter tries to be greedy and
1644 keep all samples that match at least one of the specified constraints. To keep
1645 only the part that matches all the constraints at once, chain multiple atrim
1646 filters.
1647
1648 The defaults are such that all the input is kept. So it is possible to set e.g.
1649 just the end values to keep everything before the specified time.
1650
1651 Examples:
1652 @itemize
1653 @item
1654 Drop everything except the second minute of input:
1655 @example
1656 ffmpeg -i INPUT -af atrim=60:120
1657 @end example
1658
1659 @item
1660 Keep only the first 1000 samples:
1661 @example
1662 ffmpeg -i INPUT -af atrim=end_sample=1000
1663 @end example
1664
1665 @end itemize
1666
1667 @section bandpass
1668
1669 Apply a two-pole Butterworth band-pass filter with central
1670 frequency @var{frequency}, and (3dB-point) band-width width.
1671 The @var{csg} option selects a constant skirt gain (peak gain = Q)
1672 instead of the default: constant 0dB peak gain.
1673 The filter roll off at 6dB per octave (20dB per decade).
1674
1675 The filter accepts the following options:
1676
1677 @table @option
1678 @item frequency, f
1679 Set the filter's central frequency. Default is @code{3000}.
1680
1681 @item csg
1682 Constant skirt gain if set to 1. Defaults to 0.
1683
1684 @item width_type
1685 Set method to specify band-width of filter.
1686 @table @option
1687 @item h
1688 Hz
1689 @item q
1690 Q-Factor
1691 @item o
1692 octave
1693 @item s
1694 slope
1695 @end table
1696
1697 @item width, w
1698 Specify the band-width of a filter in width_type units.
1699 @end table
1700
1701 @section bandreject
1702
1703 Apply a two-pole Butterworth band-reject filter with central
1704 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
1705 The filter roll off at 6dB per octave (20dB per decade).
1706
1707 The filter accepts the following options:
1708
1709 @table @option
1710 @item frequency, f
1711 Set the filter's central frequency. Default is @code{3000}.
1712
1713 @item width_type
1714 Set method to specify band-width of filter.
1715 @table @option
1716 @item h
1717 Hz
1718 @item q
1719 Q-Factor
1720 @item o
1721 octave
1722 @item s
1723 slope
1724 @end table
1725
1726 @item width, w
1727 Specify the band-width of a filter in width_type units.
1728 @end table
1729
1730 @section bass
1731
1732 Boost or cut the bass (lower) frequencies of the audio using a two-pole
1733 shelving filter with a response similar to that of a standard
1734 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
1735
1736 The filter accepts the following options:
1737
1738 @table @option
1739 @item gain, g
1740 Give the gain at 0 Hz. Its useful range is about -20
1741 (for a large cut) to +20 (for a large boost).
1742 Beware of clipping when using a positive gain.
1743
1744 @item frequency, f
1745 Set the filter's central frequency and so can be used
1746 to extend or reduce the frequency range to be boosted or cut.
1747 The default value is @code{100} Hz.
1748
1749 @item width_type
1750 Set method to specify band-width of filter.
1751 @table @option
1752 @item h
1753 Hz
1754 @item q
1755 Q-Factor
1756 @item o
1757 octave
1758 @item s
1759 slope
1760 @end table
1761
1762 @item width, w
1763 Determine how steep is the filter's shelf transition.
1764 @end table
1765
1766 @section biquad
1767
1768 Apply a biquad IIR filter with the given coefficients.
1769 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
1770 are the numerator and denominator coefficients respectively.
1771
1772 @section bs2b
1773 Bauer stereo to binaural transformation, which improves headphone listening of
1774 stereo audio records.
1775
1776 It accepts the following parameters:
1777 @table @option
1778
1779 @item profile
1780 Pre-defined crossfeed level.
1781 @table @option
1782
1783 @item default
1784 Default level (fcut=700, feed=50).
1785
1786 @item cmoy
1787 Chu Moy circuit (fcut=700, feed=60).
1788
1789 @item jmeier
1790 Jan Meier circuit (fcut=650, feed=95).
1791
1792 @end table
1793
1794 @item fcut
1795 Cut frequency (in Hz).
1796
1797 @item feed
1798 Feed level (in Hz).
1799
1800 @end table
1801
1802 @section channelmap
1803
1804 Remap input channels to new locations.
1805
1806 It accepts the following parameters:
1807 @table @option
1808 @item channel_layout
1809 The channel layout of the output stream.
1810
1811 @item map
1812 Map channels from input to output. The argument is a '|'-separated list of
1813 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
1814 @var{in_channel} form. @var{in_channel} can be either the name of the input
1815 channel (e.g. FL for front left) or its index in the input channel layout.
1816 @var{out_channel} is the name of the output channel or its index in the output
1817 channel layout. If @var{out_channel} is not given then it is implicitly an
1818 index, starting with zero and increasing by one for each mapping.
1819 @end table
1820
1821 If no mapping is present, the filter will implicitly map input channels to
1822 output channels, preserving indices.
1823
1824 For example, assuming a 5.1+downmix input MOV file,
1825 @example
1826 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
1827 @end example
1828 will create an output WAV file tagged as stereo from the downmix channels of
1829 the input.
1830
1831 To fix a 5.1 WAV improperly encoded in AAC's native channel order
1832 @example
1833 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
1834 @end example
1835
1836 @section channelsplit
1837
1838 Split each channel from an input audio stream into a separate output stream.
1839
1840 It accepts the following parameters:
1841 @table @option
1842 @item channel_layout
1843 The channel layout of the input stream. The default is "stereo".
1844 @end table
1845
1846 For example, assuming a stereo input MP3 file,
1847 @example
1848 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
1849 @end example
1850 will create an output Matroska file with two audio streams, one containing only
1851 the left channel and the other the right channel.
1852
1853 Split a 5.1 WAV file into per-channel files:
1854 @example
1855 ffmpeg -i in.wav -filter_complex
1856 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
1857 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
1858 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
1859 side_right.wav
1860 @end example
1861
1862 @section chorus
1863 Add a chorus effect to the audio.
1864
1865 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
1866
1867 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
1868 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
1869 The modulation depth defines the range the modulated delay is played before or after
1870 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
1871 sound tuned around the original one, like in a chorus where some vocals are slightly
1872 off key.
1873
1874 It accepts the following parameters:
1875 @table @option
1876 @item in_gain
1877 Set input gain. Default is 0.4.
1878
1879 @item out_gain
1880 Set output gain. Default is 0.4.
1881
1882 @item delays
1883 Set delays. A typical delay is around 40ms to 60ms.
1884
1885 @item decays
1886 Set decays.
1887
1888 @item speeds
1889 Set speeds.
1890
1891 @item depths
1892 Set depths.
1893 @end table
1894
1895 @subsection Examples
1896
1897 @itemize
1898 @item
1899 A single delay:
1900 @example
1901 chorus=0.7:0.9:55:0.4:0.25:2
1902 @end example
1903
1904 @item
1905 Two delays:
1906 @example
1907 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
1908 @end example
1909
1910 @item
1911 Fuller sounding chorus with three delays:
1912 @example
1913 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
1914 @end example
1915 @end itemize
1916
1917 @section compand
1918 Compress or expand the audio's dynamic range.
1919
1920 It accepts the following parameters:
1921
1922 @table @option
1923
1924 @item attacks
1925 @item decays
1926 A list of times in seconds for each channel over which the instantaneous level
1927 of the input signal is averaged to determine its volume. @var{attacks} refers to
1928 increase of volume and @var{decays} refers to decrease of volume. For most
1929 situations, the attack time (response to the audio getting louder) should be
1930 shorter than the decay time, because the human ear is more sensitive to sudden
1931 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
1932 a typical value for decay is 0.8 seconds.
1933 If specified number of attacks & decays is lower than number of channels, the last
1934 set attack/decay will be used for all remaining channels.
1935
1936 @item points
1937 A list of points for the transfer function, specified in dB relative to the
1938 maximum possible signal amplitude. Each key points list must be defined using
1939 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
1940 @code{x0/y0 x1/y1 x2/y2 ....}
1941
1942 The input values must be in strictly increasing order but the transfer function
1943 does not have to be monotonically rising. The point @code{0/0} is assumed but
1944 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
1945 function are @code{-70/-70|-60/-20}.
1946
1947 @item soft-knee
1948 Set the curve radius in dB for all joints. It defaults to 0.01.
1949
1950 @item gain
1951 Set the additional gain in dB to be applied at all points on the transfer
1952 function. This allows for easy adjustment of the overall gain.
1953 It defaults to 0.
1954
1955 @item volume
1956 Set an initial volume, in dB, to be assumed for each channel when filtering
1957 starts. This permits the user to supply a nominal level initially, so that, for
1958 example, a very large gain is not applied to initial signal levels before the
1959 companding has begun to operate. A typical value for audio which is initially
1960 quiet is -90 dB. It defaults to 0.
1961
1962 @item delay
1963 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
1964 delayed before being fed to the volume adjuster. Specifying a delay
1965 approximately equal to the attack/decay times allows the filter to effectively
1966 operate in predictive rather than reactive mode. It defaults to 0.
1967
1968 @end table
1969
1970 @subsection Examples
1971
1972 @itemize
1973 @item
1974 Make music with both quiet and loud passages suitable for listening to in a
1975 noisy environment:
1976 @example
1977 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
1978 @end example
1979
1980 Another example for audio with whisper and explosion parts:
1981 @example
1982 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
1983 @end example
1984
1985 @item
1986 A noise gate for when the noise is at a lower level than the signal:
1987 @example
1988 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
1989 @end example
1990
1991 @item
1992 Here is another noise gate, this time for when the noise is at a higher level
1993 than the signal (making it, in some ways, similar to squelch):
1994 @example
1995 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
1996 @end example
1997
1998 @item
1999 2:1 compression starting at -6dB:
2000 @example
2001 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2002 @end example
2003
2004 @item
2005 2:1 compression starting at -9dB:
2006 @example
2007 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
2008 @end example
2009
2010 @item
2011 2:1 compression starting at -12dB:
2012 @example
2013 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
2014 @end example
2015
2016 @item
2017 2:1 compression starting at -18dB:
2018 @example
2019 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
2020 @end example
2021
2022 @item
2023 3:1 compression starting at -15dB:
2024 @example
2025 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
2026 @end example
2027
2028 @item
2029 Compressor/Gate:
2030 @example
2031 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
2032 @end example
2033
2034 @item
2035 Expander:
2036 @example
2037 compand=attacks=0:points=-80/-169|-54/-80|-49.5/-64.6|-41.1/-41.1|-25.8/-15|-10.8/-4.5|0/0|20/8.3
2038 @end example
2039
2040 @item
2041 Hard limiter at -6dB:
2042 @example
2043 compand=attacks=0:points=-80/-80|-6/-6|20/-6
2044 @end example
2045
2046 @item
2047 Hard limiter at -12dB:
2048 @example
2049 compand=attacks=0:points=-80/-80|-12/-12|20/-12
2050 @end example
2051
2052 @item
2053 Hard noise gate at -35 dB:
2054 @example
2055 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
2056 @end example
2057
2058 @item
2059 Soft limiter:
2060 @example
2061 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
2062 @end example
2063 @end itemize
2064
2065 @section compensationdelay
2066
2067 Compensation Delay Line is a metric based delay to compensate differing
2068 positions of microphones or speakers.
2069
2070 For example, you have recorded guitar with two microphones placed in
2071 different location. Because the front of sound wave has fixed speed in
2072 normal conditions, the phasing of microphones can vary and depends on
2073 their location and interposition. The best sound mix can be achieved when
2074 these microphones are in phase (synchronized). Note that distance of
2075 ~30 cm between microphones makes one microphone to capture signal in
2076 antiphase to another microphone. That makes the final mix sounding moody.
2077 This filter helps to solve phasing problems by adding different delays
2078 to each microphone track and make them synchronized.
2079
2080 The best result can be reached when you take one track as base and
2081 synchronize other tracks one by one with it.
2082 Remember that synchronization/delay tolerance depends on sample rate, too.
2083 Higher sample rates will give more tolerance.
2084
2085 It accepts the following parameters:
2086
2087 @table @option
2088 @item mm
2089 Set millimeters distance. This is compensation distance for fine tuning.
2090 Default is 0.
2091
2092 @item cm
2093 Set cm distance. This is compensation distance for tightening distance setup.
2094 Default is 0.
2095
2096 @item m
2097 Set meters distance. This is compensation distance for hard distance setup.
2098 Default is 0.
2099
2100 @item dry
2101 Set dry amount. Amount of unprocessed (dry) signal.
2102 Default is 0.
2103
2104 @item wet
2105 Set wet amount. Amount of processed (wet) signal.
2106 Default is 1.
2107
2108 @item temp
2109 Set temperature degree in Celsius. This is the temperature of the environment.
2110 Default is 20.
2111 @end table
2112
2113 @section dcshift
2114 Apply a DC shift to the audio.
2115
2116 This can be useful to remove a DC offset (caused perhaps by a hardware problem
2117 in the recording chain) from the audio. The effect of a DC offset is reduced
2118 headroom and hence volume. The @ref{astats} filter can be used to determine if
2119 a signal has a DC offset.
2120
2121 @table @option
2122 @item shift
2123 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
2124 the audio.
2125
2126 @item limitergain
2127 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
2128 used to prevent clipping.
2129 @end table
2130
2131 @section dynaudnorm
2132 Dynamic Audio Normalizer.
2133
2134 This filter applies a certain amount of gain to the input audio in order
2135 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
2136 contrast to more "simple" normalization algorithms, the Dynamic Audio
2137 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
2138 This allows for applying extra gain to the "quiet" sections of the audio
2139 while avoiding distortions or clipping the "loud" sections. In other words:
2140 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
2141 sections, in the sense that the volume of each section is brought to the
2142 same target level. Note, however, that the Dynamic Audio Normalizer achieves
2143 this goal *without* applying "dynamic range compressing". It will retain 100%
2144 of the dynamic range *within* each section of the audio file.
2145
2146 @table @option
2147 @item f
2148 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
2149 Default is 500 milliseconds.
2150 The Dynamic Audio Normalizer processes the input audio in small chunks,
2151 referred to as frames. This is required, because a peak magnitude has no
2152 meaning for just a single sample value. Instead, we need to determine the
2153 peak magnitude for a contiguous sequence of sample values. While a "standard"
2154 normalizer would simply use the peak magnitude of the complete file, the
2155 Dynamic Audio Normalizer determines the peak magnitude individually for each
2156 frame. The length of a frame is specified in milliseconds. By default, the
2157 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
2158 been found to give good results with most files.
2159 Note that the exact frame length, in number of samples, will be determined
2160 automatically, based on the sampling rate of the individual input audio file.
2161
2162 @item g
2163 Set the Gaussian filter window size. In range from 3 to 301, must be odd
2164 number. Default is 31.
2165 Probably the most important parameter of the Dynamic Audio Normalizer is the
2166 @code{window size} of the Gaussian smoothing filter. The filter's window size
2167 is specified in frames, centered around the current frame. For the sake of
2168 simplicity, this must be an odd number. Consequently, the default value of 31
2169 takes into account the current frame, as well as the 15 preceding frames and
2170 the 15 subsequent frames. Using a larger window results in a stronger
2171 smoothing effect and thus in less gain variation, i.e. slower gain
2172 adaptation. Conversely, using a smaller window results in a weaker smoothing
2173 effect and thus in more gain variation, i.e. faster gain adaptation.
2174 In other words, the more you increase this value, the more the Dynamic Audio
2175 Normalizer will behave like a "traditional" normalization filter. On the
2176 contrary, the more you decrease this value, the more the Dynamic Audio
2177 Normalizer will behave like a dynamic range compressor.
2178
2179 @item p
2180 Set the target peak value. This specifies the highest permissible magnitude
2181 level for the normalized audio input. This filter will try to approach the
2182 target peak magnitude as closely as possible, but at the same time it also
2183 makes sure that the normalized signal will never exceed the peak magnitude.
2184 A frame's maximum local gain factor is imposed directly by the target peak
2185 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
2186 It is not recommended to go above this value.
2187
2188 @item m
2189 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
2190 The Dynamic Audio Normalizer determines the maximum possible (local) gain
2191 factor for each input frame, i.e. the maximum gain factor that does not
2192 result in clipping or distortion. The maximum gain factor is determined by
2193 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
2194 additionally bounds the frame's maximum gain factor by a predetermined
2195 (global) maximum gain factor. This is done in order to avoid excessive gain
2196 factors in "silent" or almost silent frames. By default, the maximum gain
2197 factor is 10.0, For most inputs the default value should be sufficient and
2198 it usually is not recommended to increase this value. Though, for input
2199 with an extremely low overall volume level, it may be necessary to allow even
2200 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
2201 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
2202 Instead, a "sigmoid" threshold function will be applied. This way, the
2203 gain factors will smoothly approach the threshold value, but never exceed that
2204 value.
2205
2206 @item r
2207 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
2208 By default, the Dynamic Audio Normalizer performs "peak" normalization.
2209 This means that the maximum local gain factor for each frame is defined
2210 (only) by the frame's highest magnitude sample. This way, the samples can
2211 be amplified as much as possible without exceeding the maximum signal
2212 level, i.e. without clipping. Optionally, however, the Dynamic Audio
2213 Normalizer can also take into account the frame's root mean square,
2214 abbreviated RMS. In electrical engineering, the RMS is commonly used to
2215 determine the power of a time-varying signal. It is therefore considered
2216 that the RMS is a better approximation of the "perceived loudness" than
2217 just looking at the signal's peak magnitude. Consequently, by adjusting all
2218 frames to a constant RMS value, a uniform "perceived loudness" can be
2219 established. If a target RMS value has been specified, a frame's local gain
2220 factor is defined as the factor that would result in exactly that RMS value.
2221 Note, however, that the maximum local gain factor is still restricted by the
2222 frame's highest magnitude sample, in order to prevent clipping.
2223
2224 @item n
2225 Enable channels coupling. By default is enabled.
2226 By default, the Dynamic Audio Normalizer will amplify all channels by the same
2227 amount. This means the same gain factor will be applied to all channels, i.e.
2228 the maximum possible gain factor is determined by the "loudest" channel.
2229 However, in some recordings, it may happen that the volume of the different
2230 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
2231 In this case, this option can be used to disable the channel coupling. This way,
2232 the gain factor will be determined independently for each channel, depending
2233 only on the individual channel's highest magnitude sample. This allows for
2234 harmonizing the volume of the different channels.
2235
2236 @item c
2237 Enable DC bias correction. By default is disabled.
2238 An audio signal (in the time domain) is a sequence of sample values.
2239 In the Dynamic Audio Normalizer these sample values are represented in the
2240 -1.0 to 1.0 range, regardless of the original input format. Normally, the
2241 audio signal, or "waveform", should be centered around the zero point.
2242 That means if we calculate the mean value of all samples in a file, or in a
2243 single frame, then the result should be 0.0 or at least very close to that
2244 value. If, however, there is a significant deviation of the mean value from
2245 0.0, in either positive or negative direction, this is referred to as a
2246 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
2247 Audio Normalizer provides optional DC bias correction.
2248 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
2249 the mean value, or "DC correction" offset, of each input frame and subtract
2250 that value from all of the frame's sample values which ensures those samples
2251 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
2252 boundaries, the DC correction offset values will be interpolated smoothly
2253 between neighbouring frames.
2254
2255 @item b
2256 Enable alternative boundary mode. By default is disabled.
2257 The Dynamic Audio Normalizer takes into account a certain neighbourhood
2258 around each frame. This includes the preceding frames as well as the
2259 subsequent frames. However, for the "boundary" frames, located at the very
2260 beginning and at the very end of the audio file, not all neighbouring
2261 frames are available. In particular, for the first few frames in the audio
2262 file, the preceding frames are not known. And, similarly, for the last few
2263 frames in the audio file, the subsequent frames are not known. Thus, the
2264 question arises which gain factors should be assumed for the missing frames
2265 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
2266 to deal with this situation. The default boundary mode assumes a gain factor
2267 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
2268 "fade out" at the beginning and at the end of the input, respectively.
2269
2270 @item s
2271 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
2272 By default, the Dynamic Audio Normalizer does not apply "traditional"
2273 compression. This means that signal peaks will not be pruned and thus the
2274 full dynamic range will be retained within each local neighbourhood. However,
2275 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
2276 normalization algorithm with a more "traditional" compression.
2277 For this purpose, the Dynamic Audio Normalizer provides an optional compression
2278 (thresholding) function. If (and only if) the compression feature is enabled,
2279 all input frames will be processed by a soft knee thresholding function prior
2280 to the actual normalization process. Put simply, the thresholding function is
2281 going to prune all samples whose magnitude exceeds a certain threshold value.
2282 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
2283 value. Instead, the threshold value will be adjusted for each individual
2284 frame.
2285 In general, smaller parameters result in stronger compression, and vice versa.
2286 Values below 3.0 are not recommended, because audible distortion may appear.
2287 @end table
2288
2289 @section earwax
2290
2291 Make audio easier to listen to on headphones.
2292
2293 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
2294 so that when listened to on headphones the stereo image is moved from
2295 inside your head (standard for headphones) to outside and in front of
2296 the listener (standard for speakers).
2297
2298 Ported from SoX.
2299
2300 @section equalizer
2301
2302 Apply a two-pole peaking equalisation (EQ) filter. With this
2303 filter, the signal-level at and around a selected frequency can
2304 be increased or decreased, whilst (unlike bandpass and bandreject
2305 filters) that at all other frequencies is unchanged.
2306
2307 In order to produce complex equalisation curves, this filter can
2308 be given several times, each with a different central frequency.
2309
2310 The filter accepts the following options:
2311
2312 @table @option
2313 @item frequency, f
2314 Set the filter's central frequency in Hz.
2315
2316 @item width_type
2317 Set method to specify band-width of filter.
2318 @table @option
2319 @item h
2320 Hz
2321 @item q
2322 Q-Factor
2323 @item o
2324 octave
2325 @item s
2326 slope
2327 @end table
2328
2329 @item width, w
2330 Specify the band-width of a filter in width_type units.
2331
2332 @item gain, g
2333 Set the required gain or attenuation in dB.
2334 Beware of clipping when using a positive gain.
2335 @end table
2336
2337 @subsection Examples
2338 @itemize
2339 @item
2340 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
2341 @example
2342 equalizer=f=1000:width_type=h:width=200:g=-10
2343 @end example
2344
2345 @item
2346 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
2347 @example
2348 equalizer=f=1000:width_type=q:width=1:g=2,equalizer=f=100:width_type=q:width=2:g=-5
2349 @end example
2350 @end itemize
2351
2352 @section extrastereo
2353
2354 Linearly increases the difference between left and right channels which
2355 adds some sort of "live" effect to playback.
2356
2357 The filter accepts the following option:
2358
2359 @table @option
2360 @item m
2361 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
2362 (average of both channels), with 1.0 sound will be unchanged, with
2363 -1.0 left and right channels will be swapped.
2364
2365 @item c
2366 Enable clipping. By default is enabled.
2367 @end table
2368
2369 @section firequalizer
2370 Apply FIR Equalization using arbitrary frequency response.
2371
2372 The filter accepts the following option:
2373
2374 @table @option
2375 @item gain
2376 Set gain curve equation (in dB). The expression can contain variables:
2377 @table @option
2378 @item f
2379 the evaluated frequency
2380 @item sr
2381 sample rate
2382 @item ch
2383 channel number, set to 0 when multichannels evaluation is disabled
2384 @item chid
2385 channel id, see libavutil/channel_layout.h, set to the first channel id when
2386 multichannels evaluation is disabled
2387 @item chs
2388 number of channels
2389 @item chlayout
2390 channel_layout, see libavutil/channel_layout.h
2391
2392 @end table
2393 and functions:
2394 @table @option
2395 @item gain_interpolate(f)
2396 interpolate gain on frequency f based on gain_entry
2397 @end table
2398 This option is also available as command. Default is @code{gain_interpolate(f)}.
2399
2400 @item gain_entry
2401 Set gain entry for gain_interpolate function. The expression can
2402 contain functions:
2403 @table @option
2404 @item entry(f, g)
2405 store gain entry at frequency f with value g
2406 @end table
2407 This option is also available as command.
2408
2409 @item delay
2410 Set filter delay in seconds. Higher value means more accurate.
2411 Default is @code{0.01}.
2412
2413 @item accuracy
2414 Set filter accuracy in Hz. Lower value means more accurate.
2415 Default is @code{5}.
2416
2417 @item wfunc
2418 Set window function. Acceptable values are:
2419 @table @option
2420 @item rectangular
2421 rectangular window, useful when gain curve is already smooth
2422 @item hann
2423 hann window (default)
2424 @item hamming
2425 hamming window
2426 @item blackman
2427 blackman window
2428 @item nuttall3
2429 3-terms continuous 1st derivative nuttall window
2430 @item mnuttall3
2431 minimum 3-terms discontinuous nuttall window
2432 @item nuttall
2433 4-terms continuous 1st derivative nuttall window
2434 @item bnuttall
2435 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
2436 @item bharris
2437 blackman-harris window
2438 @end table
2439
2440 @item fixed
2441 If enabled, use fixed number of audio samples. This improves speed when
2442 filtering with large delay. Default is disabled.
2443
2444 @item multi
2445 Enable multichannels evaluation on gain. Default is disabled.
2446 @end table
2447
2448 @subsection Examples
2449 @itemize
2450 @item
2451 lowpass at 1000 Hz:
2452 @example
2453 firequalizer=gain='if(lt(f,1000), 0, -INF)'
2454 @end example
2455 @item
2456 lowpass at 1000 Hz with gain_entry:
2457 @example
2458 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
2459 @end example
2460 @item
2461 custom equalization:
2462 @example
2463 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
2464 @end example
2465 @item
2466 higher delay:
2467 @example
2468 firequalizer=delay=0.1:fixed=on
2469 @end example
2470 @item
2471 lowpass on left channel, highpass on right channel:
2472 @example
2473 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
2474 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
2475 @end example
2476 @end itemize
2477
2478 @section flanger
2479 Apply a flanging effect to the audio.
2480
2481 The filter accepts the following options:
2482
2483 @table @option
2484 @item delay
2485 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
2486
2487 @item depth
2488 Set added swep delay in milliseconds. Range from 0 to 10. Default value is 2.
2489
2490 @item regen
2491 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
2492 Default value is 0.
2493
2494 @item width
2495 Set percentage of delayed signal mixed with original. Range from 0 to 100.
2496 Default value is 71.
2497
2498 @item speed
2499 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
2500
2501 @item shape
2502 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
2503 Default value is @var{sinusoidal}.
2504
2505 @item phase
2506 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
2507 Default value is 25.
2508
2509 @item interp
2510 Set delay-line interpolation, @var{linear} or @var{quadratic}.
2511 Default is @var{linear}.
2512 @end table
2513
2514 @section highpass
2515
2516 Apply a high-pass filter with 3dB point frequency.
2517 The filter can be either single-pole, or double-pole (the default).
2518 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
2519
2520 The filter accepts the following options:
2521
2522 @table @option
2523 @item frequency, f
2524 Set frequency in Hz. Default is 3000.
2525
2526 @item poles, p
2527 Set number of poles. Default is 2.
2528
2529 @item width_type
2530 Set method to specify band-width of filter.
2531 @table @option
2532 @item h
2533 Hz
2534 @item q
2535 Q-Factor
2536 @item o
2537 octave
2538 @item s
2539 slope
2540 @end table
2541
2542 @item width, w
2543 Specify the band-width of a filter in width_type units.
2544 Applies only to double-pole filter.
2545 The default is 0.707q and gives a Butterworth response.
2546 @end table
2547
2548 @section join
2549
2550 Join multiple input streams into one multi-channel stream.
2551
2552 It accepts the following parameters:
2553 @table @option
2554
2555 @item inputs
2556 The number of input streams. It defaults to 2.
2557
2558 @item channel_layout
2559 The desired output channel layout. It defaults to stereo.
2560
2561 @item map
2562 Map channels from inputs to output. The argument is a '|'-separated list of
2563 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
2564 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
2565 can be either the name of the input channel (e.g. FL for front left) or its
2566 index in the specified input stream. @var{out_channel} is the name of the output
2567 channel.
2568 @end table
2569
2570 The filter will attempt to guess the mappings when they are not specified
2571 explicitly. It does so by first trying to find an unused matching input channel
2572 and if that fails it picks the first unused input channel.
2573
2574 Join 3 inputs (with properly set channel layouts):
2575 @example
2576 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
2577 @end example
2578
2579 Build a 5.1 output from 6 single-channel streams:
2580 @example
2581 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
2582 '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'
2583 out
2584 @end example
2585
2586 @section ladspa
2587
2588 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
2589
2590 To enable compilation of this filter you need to configure FFmpeg with
2591 @code{--enable-ladspa}.
2592
2593 @table @option
2594 @item file, f
2595 Specifies the name of LADSPA plugin library to load. If the environment
2596 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
2597 each one of the directories specified by the colon separated list in
2598 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
2599 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
2600 @file{/usr/lib/ladspa/}.
2601
2602 @item plugin, p
2603 Specifies the plugin within the library. Some libraries contain only
2604 one plugin, but others contain many of them. If this is not set filter
2605 will list all available plugins within the specified library.
2606
2607 @item controls, c
2608 Set the '|' separated list of controls which are zero or more floating point
2609 values that determine the behavior of the loaded plugin (for example delay,
2610 threshold or gain).
2611 Controls need to be defined using the following syntax:
2612 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
2613 @var{valuei} is the value set on the @var{i}-th control.
2614 Alternatively they can be also defined using the following syntax:
2615 @var{value0}|@var{value1}|@var{value2}|..., where
2616 @var{valuei} is the value set on the @var{i}-th control.
2617 If @option{controls} is set to @code{help}, all available controls and
2618 their valid ranges are printed.
2619
2620 @item sample_rate, s
2621 Specify the sample rate, default to 44100. Only used if plugin have
2622 zero inputs.
2623
2624 @item nb_samples, n
2625 Set the number of samples per channel per each output frame, default
2626 is 1024. Only used if plugin have zero inputs.
2627
2628 @item duration, d
2629 Set the minimum duration of the sourced audio. See
2630 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2631 for the accepted syntax.
2632 Note that the resulting duration may be greater than the specified duration,
2633 as the generated audio is always cut at the end of a complete frame.
2634 If not specified, or the expressed duration is negative, the audio is
2635 supposed to be generated forever.
2636 Only used if plugin have zero inputs.
2637
2638 @end table
2639
2640 @subsection Examples
2641
2642 @itemize
2643 @item
2644 List all available plugins within amp (LADSPA example plugin) library:
2645 @example
2646 ladspa=file=amp
2647 @end example
2648
2649 @item
2650 List all available controls and their valid ranges for @code{vcf_notch}
2651 plugin from @code{VCF} library:
2652 @example
2653 ladspa=f=vcf:p=vcf_notch:c=help
2654 @end example
2655
2656 @item
2657 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
2658 plugin library:
2659 @example
2660 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
2661 @end example
2662
2663 @item
2664 Add reverberation to the audio using TAP-plugins
2665 (Tom's Audio Processing plugins):
2666 @example
2667 ladspa=file=tap_reverb:tap_reverb
2668 @end example
2669
2670 @item
2671 Generate white noise, with 0.2 amplitude:
2672 @example
2673 ladspa=file=cmt:noise_source_white:c=c0=.2
2674 @end example
2675
2676 @item
2677 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
2678 @code{C* Audio Plugin Suite} (CAPS) library:
2679 @example
2680 ladspa=file=caps:Click:c=c1=20'
2681 @end example
2682
2683 @item
2684 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
2685 @example
2686 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
2687 @end example
2688
2689 @item
2690 Increase volume by 20dB using fast lookahead limiter from Steve Harris
2691 @code{SWH Plugins} collection:
2692 @example
2693 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
2694 @end example
2695
2696 @item
2697 Attenuate low frequencies using Multiband EQ from Steve Harris
2698 @code{SWH Plugins} collection:
2699 @example
2700 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
2701 @end example
2702 @end itemize
2703
2704 @subsection Commands
2705
2706 This filter supports the following commands:
2707 @table @option
2708 @item cN
2709 Modify the @var{N}-th control value.
2710
2711 If the specified value is not valid, it is ignored and prior one is kept.
2712 @end table
2713
2714 @section lowpass
2715
2716 Apply a low-pass filter with 3dB point frequency.
2717 The filter can be either single-pole or double-pole (the default).
2718 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
2719
2720 The filter accepts the following options:
2721
2722 @table @option
2723 @item frequency, f
2724 Set frequency in Hz. Default is 500.
2725
2726 @item poles, p
2727 Set number of poles. Default is 2.
2728
2729 @item width_type
2730 Set method to specify band-width of filter.
2731 @table @option
2732 @item h
2733 Hz
2734 @item q
2735 Q-Factor
2736 @item o
2737 octave
2738 @item s
2739 slope
2740 @end table
2741
2742 @item width, w
2743 Specify the band-width of a filter in width_type units.
2744 Applies only to double-pole filter.
2745 The default is 0.707q and gives a Butterworth response.
2746 @end table
2747
2748 @anchor{pan}
2749 @section pan
2750
2751 Mix channels with specific gain levels. The filter accepts the output
2752 channel layout followed by a set of channels definitions.
2753
2754 This filter is also designed to efficiently remap the channels of an audio
2755 stream.
2756
2757 The filter accepts parameters of the form:
2758 "@var{l}|@var{outdef}|@var{outdef}|..."
2759
2760 @table @option
2761 @item l
2762 output channel layout or number of channels
2763
2764 @item outdef
2765 output channel specification, of the form:
2766 "@var{out_name}=[@var{gain}*]@var{in_name}[+[@var{gain}*]@var{in_name}...]"
2767
2768 @item out_name
2769 output channel to define, either a channel name (FL, FR, etc.) or a channel
2770 number (c0, c1, etc.)
2771
2772 @item gain
2773 multiplicative coefficient for the channel, 1 leaving the volume unchanged
2774
2775 @item in_name
2776 input channel to use, see out_name for details; it is not possible to mix
2777 named and numbered input channels
2778 @end table
2779
2780 If the `=' in a channel specification is replaced by `<', then the gains for
2781 that specification will be renormalized so that the total is 1, thus
2782 avoiding clipping noise.
2783
2784 @subsection Mixing examples
2785
2786 For example, if you want to down-mix from stereo to mono, but with a bigger
2787 factor for the left channel:
2788 @example
2789 pan=1c|c0=0.9*c0+0.1*c1
2790 @end example
2791
2792 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
2793 7-channels surround:
2794 @example
2795 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
2796 @end example
2797
2798 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
2799 that should be preferred (see "-ac" option) unless you have very specific
2800 needs.
2801
2802 @subsection Remapping examples
2803
2804 The channel remapping will be effective if, and only if:
2805
2806 @itemize
2807 @item gain coefficients are zeroes or ones,
2808 @item only one input per channel output,
2809 @end itemize
2810
2811 If all these conditions are satisfied, the filter will notify the user ("Pure
2812 channel mapping detected"), and use an optimized and lossless method to do the
2813 remapping.
2814
2815 For example, if you have a 5.1 source and want a stereo audio stream by
2816 dropping the extra channels:
2817 @example
2818 pan="stereo| c0=FL | c1=FR"
2819 @end example
2820
2821 Given the same source, you can also switch front left and front right channels
2822 and keep the input channel layout:
2823 @example
2824 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
2825 @end example
2826
2827 If the input is a stereo audio stream, you can mute the front left channel (and
2828 still keep the stereo channel layout) with:
2829 @example
2830 pan="stereo|c1=c1"
2831 @end example
2832
2833 Still with a stereo audio stream input, you can copy the right channel in both
2834 front left and right:
2835 @example
2836 pan="stereo| c0=FR | c1=FR"
2837 @end example
2838
2839 @section replaygain
2840
2841 ReplayGain scanner filter. This filter takes an audio stream as an input and
2842 outputs it unchanged.
2843 At end of filtering it displays @code{track_gain} and @code{track_peak}.
2844
2845 @section resample
2846
2847 Convert the audio sample format, sample rate and channel layout. It is
2848 not meant to be used directly.
2849
2850 @section rubberband
2851 Apply time-stretching and pitch-shifting with librubberband.
2852
2853 The filter accepts the following options:
2854
2855 @table @option
2856 @item tempo
2857 Set tempo scale factor.
2858
2859 @item pitch
2860 Set pitch scale factor.
2861
2862 @item transients
2863 Set transients detector.
2864 Possible values are:
2865 @table @var
2866 @item crisp
2867 @item mixed
2868 @item smooth
2869 @end table
2870
2871 @item detector
2872 Set detector.
2873 Possible values are:
2874 @table @var
2875 @item compound
2876 @item percussive
2877 @item soft
2878 @end table
2879
2880 @item phase
2881 Set phase.
2882 Possible values are:
2883 @table @var
2884 @item laminar
2885 @item independent
2886 @end table
2887
2888 @item window
2889 Set processing window size.
2890 Possible values are:
2891 @table @var
2892 @item standard
2893 @item short
2894 @item long
2895 @end table
2896
2897 @item smoothing
2898 Set smoothing.
2899 Possible values are:
2900 @table @var
2901 @item off
2902 @item on
2903 @end table
2904
2905 @item formant
2906 Enable formant preservation when shift pitching.
2907 Possible values are:
2908 @table @var
2909 @item shifted
2910 @item preserved
2911 @end table
2912
2913 @item pitchq
2914 Set pitch quality.
2915 Possible values are:
2916 @table @var
2917 @item quality
2918 @item speed
2919 @item consistency
2920 @end table
2921
2922 @item channels
2923 Set channels.
2924 Possible values are:
2925 @table @var
2926 @item apart
2927 @item together
2928 @end table
2929 @end table
2930
2931 @section sidechaincompress
2932
2933 This filter acts like normal compressor but has the ability to compress
2934 detected signal using second input signal.
2935 It needs two input streams and returns one output stream.
2936 First input stream will be processed depending on second stream signal.
2937 The filtered signal then can be filtered with other filters in later stages of
2938 processing. See @ref{pan} and @ref{amerge} filter.
2939
2940 The filter accepts the following options:
2941
2942 @table @option
2943 @item level_in
2944 Set input gain. Default is 1. Range is between 0.015625 and 64.
2945
2946 @item threshold
2947 If a signal of second stream raises above this level it will affect the gain
2948 reduction of first stream.
2949 By default is 0.125. Range is between 0.00097563 and 1.
2950
2951 @item ratio
2952 Set a ratio about which the signal is reduced. 1:2 means that if the level
2953 raised 4dB above the threshold, it will be only 2dB above after the reduction.
2954 Default is 2. Range is between 1 and 20.
2955
2956 @item attack
2957 Amount of milliseconds the signal has to rise above the threshold before gain
2958 reduction starts. Default is 20. Range is between 0.01 and 2000.
2959
2960 @item release
2961 Amount of milliseconds the signal has to fall below the threshold before
2962 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
2963
2964 @item makeup
2965 Set the amount by how much signal will be amplified after processing.
2966 Default is 2. Range is from 1 and 64.
2967
2968 @item knee
2969 Curve the sharp knee around the threshold to enter gain reduction more softly.
2970 Default is 2.82843. Range is between 1 and 8.
2971
2972 @item link
2973 Choose if the @code{average} level between all channels of side-chain stream
2974 or the louder(@code{maximum}) channel of side-chain stream affects the
2975 reduction. Default is @code{average}.
2976
2977 @item detection
2978 Should the exact signal be taken in case of @code{peak} or an RMS one in case
2979 of @code{rms}. Default is @code{rms} which is mainly smoother.
2980
2981 @item level_sc
2982 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
2983
2984 @item mix
2985 How much to use compressed signal in output. Default is 1.
2986 Range is between 0 and 1.
2987 @end table
2988
2989 @subsection Examples
2990
2991 @itemize
2992 @item
2993 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
2994 depending on the signal of 2nd input and later compressed signal to be
2995 merged with 2nd input:
2996 @example
2997 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
2998 @end example
2999 @end itemize
3000
3001 @section sidechaingate
3002
3003 A sidechain gate acts like a normal (wideband) gate but has the ability to
3004 filter the detected signal before sending it to the gain reduction stage.
3005 Normally a gate uses the full range signal to detect a level above the
3006 threshold.
3007 For example: If you cut all lower frequencies from your sidechain signal
3008 the gate will decrease the volume of your track only if not enough highs
3009 appear. With this technique you are able to reduce the resonation of a
3010 natural drum or remove "rumbling" of muted strokes from a heavily distorted
3011 guitar.
3012 It needs two input streams and returns one output stream.
3013 First input stream will be processed depending on second stream signal.
3014
3015 The filter accepts the following options:
3016
3017 @table @option
3018 @item level_in
3019 Set input level before filtering.
3020 Default is 1. Allowed range is from 0.015625 to 64.
3021
3022 @item range
3023 Set the level of gain reduction when the signal is below the threshold.
3024 Default is 0.06125. Allowed range is from 0 to 1.
3025
3026 @item threshold
3027 If a signal rises above this level the gain reduction is released.
3028 Default is 0.125. Allowed range is from 0 to 1.
3029
3030 @item ratio
3031 Set a ratio about which the signal is reduced.
3032 Default is 2. Allowed range is from 1 to 9000.
3033
3034 @item attack
3035 Amount of milliseconds the signal has to rise above the threshold before gain
3036 reduction stops.
3037 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
3038
3039 @item release
3040 Amount of milliseconds the signal has to fall below the threshold before the
3041 reduction is increased again. Default is 250 milliseconds.
3042 Allowed range is from 0.01 to 9000.
3043
3044 @item makeup
3045 Set amount of amplification of signal after processing.
3046 Default is 1. Allowed range is from 1 to 64.
3047
3048 @item knee
3049 Curve the sharp knee around the threshold to enter gain reduction more softly.
3050 Default is 2.828427125. Allowed range is from 1 to 8.
3051
3052 @item detection
3053 Choose if exact signal should be taken for detection or an RMS like one.
3054 Default is rms. Can be peak or rms.
3055
3056 @item link
3057 Choose if the average level between all channels or the louder channel affects
3058 the reduction.
3059 Default is average. Can be average or maximum.
3060
3061 @item level_sc
3062 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
3063 @end table
3064
3065 @section silencedetect
3066
3067 Detect silence in an audio stream.
3068
3069 This filter logs a message when it detects that the input audio volume is less
3070 or equal to a noise tolerance value for a duration greater or equal to the
3071 minimum detected noise duration.
3072
3073 The printed times and duration are expressed in seconds.
3074
3075 The filter accepts the following options:
3076
3077 @table @option
3078 @item duration, d
3079 Set silence duration until notification (default is 2 seconds).
3080
3081 @item noise, n
3082 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
3083 specified value) or amplitude ratio. Default is -60dB, or 0.001.
3084 @end table
3085
3086 @subsection Examples
3087
3088 @itemize
3089 @item
3090 Detect 5 seconds of silence with -50dB noise tolerance:
3091 @example
3092 silencedetect=n=-50dB:d=5
3093 @end example
3094
3095 @item
3096 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
3097 tolerance in @file{silence.mp3}:
3098 @example
3099 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
3100 @end example
3101 @end itemize
3102
3103 @section silenceremove
3104
3105 Remove silence from the beginning, middle or end of the audio.
3106
3107 The filter accepts the following options:
3108
3109 @table @option
3110 @item start_periods
3111 This value is used to indicate if audio should be trimmed at beginning of
3112 the audio. A value of zero indicates no silence should be trimmed from the
3113 beginning. When specifying a non-zero value, it trims audio up until it
3114 finds non-silence. Normally, when trimming silence from beginning of audio
3115 the @var{start_periods} will be @code{1} but it can be increased to higher
3116 values to trim all audio up to specific count of non-silence periods.
3117 Default value is @code{0}.
3118
3119 @item start_duration
3120 Specify the amount of time that non-silence must be detected before it stops
3121 trimming audio. By increasing the duration, bursts of noises can be treated
3122 as silence and trimmed off. Default value is @code{0}.
3123
3124 @item start_threshold
3125 This indicates what sample value should be treated as silence. For digital
3126 audio, a value of @code{0} may be fine but for audio recorded from analog,
3127 you may wish to increase the value to account for background noise.
3128 Can be specified in dB (in case "dB" is appended to the specified value)
3129 or amplitude ratio. Default value is @code{0}.
3130
3131 @item stop_periods
3132 Set the count for trimming silence from the end of audio.
3133 To remove silence from the middle of a file, specify a @var{stop_periods}
3134 that is negative. This value is then treated as a positive value and is
3135 used to indicate the effect should restart processing as specified by
3136 @var{start_periods}, making it suitable for removing periods of silence
3137 in the middle of the audio.
3138 Default value is @code{0}.
3139
3140 @item stop_duration
3141 Specify a duration of silence that must exist before audio is not copied any
3142 more. By specifying a higher duration, silence that is wanted can be left in
3143 the audio.
3144 Default value is @code{0}.
3145
3146 @item stop_threshold
3147 This is the same as @option{start_threshold} but for trimming silence from
3148 the end of audio.
3149 Can be specified in dB (in case "dB" is appended to the specified value)
3150 or amplitude ratio. Default value is @code{0}.
3151
3152 @item leave_silence
3153 This indicate that @var{stop_duration} length of audio should be left intact
3154 at the beginning of each period of silence.
3155 For example, if you want to remove long pauses between words but do not want
3156 to remove the pauses completely. Default value is @code{0}.
3157
3158 @item detection
3159 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
3160 and works better with digital silence which is exactly 0.
3161 Default value is @code{rms}.
3162
3163 @item window
3164 Set ratio used to calculate size of window for detecting silence.
3165 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
3166 @end table
3167
3168 @subsection Examples
3169
3170 @itemize
3171 @item
3172 The following example shows how this filter can be used to start a recording
3173 that does not contain the delay at the start which usually occurs between
3174 pressing the record button and the start of the performance:
3175 @example
3176 silenceremove=1:5:0.02
3177 @end example
3178
3179 @item
3180 Trim all silence encountered from begining to end where there is more than 1
3181 second of silence in audio:
3182 @example
3183 silenceremove=0:0:0:-1:1:-90dB
3184 @end example
3185 @end itemize
3186
3187 @section sofalizer
3188
3189 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
3190 loudspeakers around the user for binaural listening via headphones (audio
3191 formats up to 9 channels supported).
3192 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
3193 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
3194 Austrian Academy of Sciences.
3195
3196 To enable compilation of this filter you need to configure FFmpeg with
3197 @code{--enable-netcdf}.
3198
3199 The filter accepts the following options:
3200
3201 @table @option
3202 @item sofa
3203 Set the SOFA file used for rendering.
3204
3205 @item gain
3206 Set gain applied to audio. Value is in dB. Default is 0.
3207
3208 @item rotation
3209 Set rotation of virtual loudspeakers in deg. Default is 0.
3210
3211 @item elevation
3212 Set elevation of virtual speakers in deg. Default is 0.
3213
3214 @item radius
3215 Set distance in meters between loudspeakers and the listener with near-field
3216 HRTFs. Default is 1.
3217
3218 @item type
3219 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3220 processing audio in time domain which is slow but gives high quality output.
3221 @var{freq} is processing audio in frequency domain which is fast but gives
3222 mediocre output. Default is @var{freq}.
3223 @end table
3224
3225 @section stereotools
3226
3227 This filter has some handy utilities to manage stereo signals, for converting
3228 M/S stereo recordings to L/R signal while having control over the parameters
3229 or spreading the stereo image of master track.
3230
3231 The filter accepts the following options:
3232
3233 @table @option
3234 @item level_in
3235 Set input level before filtering for both channels. Defaults is 1.
3236 Allowed range is from 0.015625 to 64.
3237
3238 @item level_out
3239 Set output level after filtering for both channels. Defaults is 1.
3240 Allowed range is from 0.015625 to 64.
3241
3242 @item balance_in
3243 Set input balance between both channels. Default is 0.
3244 Allowed range is from -1 to 1.
3245
3246 @item balance_out
3247 Set output balance between both channels. Default is 0.
3248 Allowed range is from -1 to 1.
3249
3250 @item softclip
3251 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
3252 clipping. Disabled by default.
3253
3254 @item mutel
3255 Mute the left channel. Disabled by default.
3256
3257 @item muter
3258 Mute the right channel. Disabled by default.
3259
3260 @item phasel
3261 Change the phase of the left channel. Disabled by default.
3262
3263 @item phaser
3264 Change the phase of the right channel. Disabled by default.
3265
3266 @item mode
3267 Set stereo mode. Available values are:
3268
3269 @table @samp
3270 @item lr>lr
3271 Left/Right to Left/Right, this is default.
3272
3273 @item lr>ms
3274 Left/Right to Mid/Side.
3275
3276 @item ms>lr
3277 Mid/Side to Left/Right.
3278
3279 @item lr>ll
3280 Left/Right to Left/Left.
3281
3282 @item lr>rr
3283 Left/Right to Right/Right.
3284
3285 @item lr>l+r
3286 Left/Right to Left + Right.
3287
3288 @item lr>rl
3289 Left/Right to Right/Left.
3290 @end table
3291
3292 @item slev
3293 Set level of side signal. Default is 1.
3294 Allowed range is from 0.015625 to 64.
3295
3296 @item sbal
3297 Set balance of side signal. Default is 0.
3298 Allowed range is from -1 to 1.
3299
3300 @item mlev
3301 Set level of the middle signal. Default is 1.
3302 Allowed range is from 0.015625 to 64.
3303
3304 @item mpan
3305 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
3306
3307 @item base
3308 Set stereo base between mono and inversed channels. Default is 0.
3309 Allowed range is from -1 to 1.
3310
3311 @item delay
3312 Set delay in milliseconds how much to delay left from right channel and
3313 vice versa. Default is 0. Allowed range is from -20 to 20.
3314
3315 @item sclevel
3316 Set S/C level. Default is 1. Allowed range is from 1 to 100.
3317
3318 @item phase
3319 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
3320 @end table
3321
3322 @section stereowiden
3323
3324 This filter enhance the stereo effect by suppressing signal common to both
3325 channels and by delaying the signal of left into right and vice versa,
3326 thereby widening the stereo effect.
3327
3328 The filter accepts the following options:
3329
3330 @table @option
3331 @item delay
3332 Time in milliseconds of the delay of left signal into right and vice versa.
3333 Default is 20 milliseconds.
3334
3335 @item feedback
3336 Amount of gain in delayed signal into right and vice versa. Gives a delay
3337 effect of left signal in right output and vice versa which gives widening
3338 effect. Default is 0.3.
3339
3340 @item crossfeed
3341 Cross feed of left into right with inverted phase. This helps in suppressing
3342 the mono. If the value is 1 it will cancel all the signal common to both
3343 channels. Default is 0.3.
3344
3345 @item drymix
3346 Set level of input signal of original channel. Default is 0.8.
3347 @end table
3348
3349 @section treble
3350
3351 Boost or cut treble (upper) frequencies of the audio using a two-pole
3352 shelving filter with a response similar to that of a standard
3353 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
3354
3355 The filter accepts the following options:
3356
3357 @table @option
3358 @item gain, g
3359 Give the gain at whichever is the lower of ~22 kHz and the
3360 Nyquist frequency. Its useful range is about -20 (for a large cut)
3361 to +20 (for a large boost). Beware of clipping when using a positive gain.
3362
3363 @item frequency, f
3364 Set the filter's central frequency and so can be used
3365 to extend or reduce the frequency range to be boosted or cut.
3366 The default value is @code{3000} Hz.
3367
3368 @item width_type
3369 Set method to specify band-width of filter.
3370 @table @option
3371 @item h
3372 Hz
3373 @item q
3374 Q-Factor
3375 @item o
3376 octave
3377 @item s
3378 slope
3379 @end table
3380
3381 @item width, w
3382 Determine how steep is the filter's shelf transition.
3383 @end table
3384
3385 @section tremolo
3386
3387 Sinusoidal amplitude modulation.
3388
3389 The filter accepts the following options:
3390
3391 @table @option
3392 @item f
3393 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
3394 (20 Hz or lower) will result in a tremolo effect.
3395 This filter may also be used as a ring modulator by specifying
3396 a modulation frequency higher than 20 Hz.
3397 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
3398
3399 @item d
3400 Depth of modulation as a percentage. Range is 0.0 - 1.0.
3401 Default value is 0.5.
3402 @end table
3403
3404 @section vibrato
3405
3406 Sinusoidal phase modulation.
3407
3408 The filter accepts the following options:
3409
3410 @table @option
3411 @item f
3412 Modulation frequency in Hertz.
3413 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
3414
3415 @item d
3416 Depth of modulation as a percentage. Range is 0.0 - 1.0.
3417 Default value is 0.5.
3418 @end table
3419
3420 @section volume
3421
3422 Adjust the input audio volume.
3423
3424 It accepts the following parameters:
3425 @table @option
3426
3427 @item volume
3428 Set audio volume expression.
3429
3430 Output values are clipped to the maximum value.
3431
3432 The output audio volume is given by the relation:
3433 @example
3434 @var{output_volume} = @var{volume} * @var{input_volume}
3435 @end example
3436
3437 The default value for @var{volume} is "1.0".
3438
3439 @item precision
3440 This parameter represents the mathematical precision.
3441
3442 It determines which input sample formats will be allowed, which affects the
3443 precision of the volume scaling.
3444
3445 @table @option
3446 @item fixed
3447 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
3448 @item float
3449 32-bit floating-point; this limits input sample format to FLT. (default)
3450 @item double
3451 64-bit floating-point; this limits input sample format to DBL.
3452 @end table
3453
3454 @item replaygain
3455 Choose the behaviour on encountering ReplayGain side data in input frames.
3456
3457 @table @option
3458 @item drop
3459 Remove ReplayGain side data, ignoring its contents (the default).
3460
3461 @item ignore
3462 Ignore ReplayGain side data, but leave it in the frame.
3463
3464 @item track
3465 Prefer the track gain, if present.
3466
3467 @item album
3468 Prefer the album gain, if present.
3469 @end table
3470
3471 @item replaygain_preamp
3472 Pre-amplification gain in dB to apply to the selected replaygain gain.
3473
3474 Default value for @var{replaygain_preamp} is 0.0.
3475
3476 @item eval
3477 Set when the volume expression is evaluated.
3478
3479 It accepts the following values:
3480 @table @samp
3481 @item once
3482 only evaluate expression once during the filter initialization, or
3483 when the @samp{volume} command is sent
3484
3485 @item frame
3486 evaluate expression for each incoming frame
3487 @end table
3488
3489 Default value is @samp{once}.
3490 @end table
3491
3492 The volume expression can contain the following parameters.
3493
3494 @table @option
3495 @item n
3496 frame number (starting at zero)
3497 @item nb_channels
3498 number of channels
3499 @item nb_consumed_samples
3500 number of samples consumed by the filter
3501 @item nb_samples
3502 number of samples in the current frame
3503 @item pos
3504 original frame position in the file
3505 @item pts
3506 frame PTS
3507 @item sample_rate
3508 sample rate
3509 @item startpts
3510 PTS at start of stream
3511 @item startt
3512 time at start of stream
3513 @item t
3514 frame time
3515 @item tb
3516 timestamp timebase
3517 @item volume
3518 last set volume value
3519 @end table
3520
3521 Note that when @option{eval} is set to @samp{once} only the
3522 @var{sample_rate} and @var{tb} variables are available, all other
3523 variables will evaluate to NAN.
3524
3525 @subsection Commands
3526
3527 This filter supports the following commands:
3528 @table @option
3529 @item volume
3530 Modify the volume expression.
3531 The command accepts the same syntax of the corresponding option.
3532
3533 If the specified expression is not valid, it is kept at its current
3534 value.
3535 @item replaygain_noclip
3536 Prevent clipping by limiting the gain applied.
3537
3538 Default value for @var{replaygain_noclip} is 1.
3539
3540 @end table
3541
3542 @subsection Examples
3543
3544 @itemize
3545 @item
3546 Halve the input audio volume:
3547 @example
3548 volume=volume=0.5
3549 volume=volume=1/2
3550 volume=volume=-6.0206dB
3551 @end example
3552
3553 In all the above example the named key for @option{volume} can be
3554 omitted, for example like in:
3555 @example
3556 volume=0.5
3557 @end example
3558
3559 @item
3560 Increase input audio power by 6 decibels using fixed-point precision:
3561 @example
3562 volume=volume=6dB:precision=fixed
3563 @end example
3564
3565 @item
3566 Fade volume after time 10 with an annihilation period of 5 seconds:
3567 @example
3568 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
3569 @end example
3570 @end itemize
3571
3572 @section volumedetect
3573
3574 Detect the volume of the input video.
3575
3576 The filter has no parameters. The input is not modified. Statistics about
3577 the volume will be printed in the log when the input stream end is reached.
3578
3579 In particular it will show the mean volume (root mean square), maximum
3580 volume (on a per-sample basis), and the beginning of a histogram of the
3581 registered volume values (from the maximum value to a cumulated 1/1000 of
3582 the samples).
3583
3584 All volumes are in decibels relative to the maximum PCM value.
3585
3586 @subsection Examples
3587
3588 Here is an excerpt of the output:
3589 @example
3590 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
3591 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
3592 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
3593 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
3594 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
3595 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
3596 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
3597 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
3598 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
3599 @end example
3600
3601 It means that:
3602 @itemize
3603 @item
3604 The mean square energy is approximately -27 dB, or 10^-2.7.
3605 @item
3606 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
3607 @item
3608 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
3609 @end itemize
3610
3611 In other words, raising the volume by +4 dB does not cause any clipping,
3612 raising it by +5 dB causes clipping for 6 samples, etc.
3613
3614 @c man end AUDIO FILTERS
3615
3616 @chapter Audio Sources
3617 @c man begin AUDIO SOURCES
3618
3619 Below is a description of the currently available audio sources.
3620
3621 @section abuffer
3622
3623 Buffer audio frames, and make them available to the filter chain.
3624
3625 This source is mainly intended for a programmatic use, in particular
3626 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
3627
3628 It accepts the following parameters:
3629 @table @option
3630
3631 @item time_base
3632 The timebase which will be used for timestamps of submitted frames. It must be
3633 either a floating-point number or in @var{numerator}/@var{denominator} form.
3634
3635 @item sample_rate
3636 The sample rate of the incoming audio buffers.
3637
3638 @item sample_fmt
3639 The sample format of the incoming audio buffers.
3640 Either a sample format name or its corresponding integer representation from
3641 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
3642
3643 @item channel_layout
3644 The channel layout of the incoming audio buffers.
3645 Either a channel layout name from channel_layout_map in
3646 @file{libavutil/channel_layout.c} or its corresponding integer representation
3647 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
3648
3649 @item channels
3650 The number of channels of the incoming audio buffers.
3651 If both @var{channels} and @var{channel_layout} are specified, then they
3652 must be consistent.
3653
3654 @end table
3655
3656 @subsection Examples
3657
3658 @example
3659 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
3660 @end example
3661
3662 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
3663 Since the sample format with name "s16p" corresponds to the number
3664 6 and the "stereo" channel layout corresponds to the value 0x3, this is
3665 equivalent to:
3666 @example
3667 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
3668 @end example
3669
3670 @section aevalsrc
3671
3672 Generate an audio signal specified by an expression.
3673
3674 This source accepts in input one or more expressions (one for each
3675 channel), which are evaluated and used to generate a corresponding
3676 audio signal.
3677
3678 This source accepts the following options:
3679
3680 @table @option
3681 @item exprs
3682 Set the '|'-separated expressions list for each separate channel. In case the
3683 @option{channel_layout} option is not specified, the selected channel layout
3684 depends on the number of provided expressions. Otherwise the last
3685 specified expression is applied to the remaining output channels.
3686
3687 @item channel_layout, c
3688 Set the channel layout. The number of channels in the specified layout
3689 must be equal to the number of specified expressions.
3690
3691 @item duration, d
3692 Set the minimum duration of the sourced audio. See
3693 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3694 for the accepted syntax.
3695 Note that the resulting duration may be greater than the specified
3696 duration, as the generated audio is always cut at the end of a
3697 complete frame.
3698
3699 If not specified, or the expressed duration is negative, the audio is
3700 supposed to be generated forever.
3701
3702 @item nb_samples, n
3703 Set the number of samples per channel per each output frame,
3704 default to 1024.
3705
3706 @item sample_rate, s
3707 Specify the sample rate, default to 44100.
3708 @end table
3709
3710 Each expression in @var{exprs} can contain the following constants:
3711
3712 @table @option
3713 @item n
3714 number of the evaluated sample, starting from 0
3715
3716 @item t
3717 time of the evaluated sample expressed in seconds, starting from 0
3718
3719 @item s
3720 sample rate
3721
3722 @end table
3723
3724 @subsection Examples
3725
3726 @itemize
3727 @item
3728 Generate silence:
3729 @example
3730 aevalsrc=0
3731 @end example
3732
3733 @item
3734 Generate a sin signal with frequency of 440 Hz, set sample rate to
3735 8000 Hz:
3736 @example
3737 aevalsrc="sin(440*2*PI*t):s=8000"
3738 @end example
3739
3740 @item
3741 Generate a two channels signal, specify the channel layout (Front
3742 Center + Back Center) explicitly:
3743 @example
3744 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
3745 @end example
3746
3747 @item
3748 Generate white noise:
3749 @example
3750 aevalsrc="-2+random(0)"
3751 @end example
3752
3753 @item
3754 Generate an amplitude modulated signal:
3755 @example
3756 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
3757 @end example
3758
3759 @item
3760 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
3761 @example
3762 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
3763 @end example
3764
3765 @end itemize
3766
3767 @section anullsrc
3768
3769 The null audio source, return unprocessed audio frames. It is mainly useful
3770 as a template and to be employed in analysis / debugging tools, or as
3771 the source for filters which ignore the input data (for example the sox
3772 synth filter).
3773
3774 This source accepts the following options:
3775
3776 @table @option
3777
3778 @item channel_layout, cl
3779
3780 Specifies the channel layout, and can be either an integer or a string
3781 representing a channel layout. The default value of @var{channel_layout}
3782 is "stereo".
3783
3784 Check the channel_layout_map definition in
3785 @file{libavutil/channel_layout.c} for the mapping between strings and
3786 channel layout values.
3787
3788 @item sample_rate, r
3789 Specifies the sample rate, and defaults to 44100.
3790
3791 @item nb_samples, n
3792 Set the number of samples per requested frames.
3793
3794 @end table
3795
3796 @subsection Examples
3797
3798 @itemize
3799 @item
3800 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
3801 @example
3802 anullsrc=r=48000:cl=4
3803 @end example
3804
3805 @item
3806 Do the same operation with a more obvious syntax:
3807 @example
3808 anullsrc=r=48000:cl=mono
3809 @end example
3810 @end itemize
3811
3812 All the parameters need to be explicitly defined.
3813
3814 @section flite
3815
3816 Synthesize a voice utterance using the libflite library.
3817
3818 To enable compilation of this filter you need to configure FFmpeg with
3819 @code{--enable-libflite}.
3820
3821 Note that the flite library is not thread-safe.
3822
3823 The filter accepts the following options:
3824
3825 @table @option
3826
3827 @item list_voices
3828 If set to 1, list the names of the available voices and exit
3829 immediately. Default value is 0.
3830
3831 @item nb_samples, n
3832 Set the maximum number of samples per frame. Default value is 512.
3833
3834 @item textfile
3835 Set the filename containing the text to speak.
3836
3837 @item text
3838 Set the text to speak.
3839
3840 @item voice, v
3841 Set the voice to use for the speech synthesis. Default value is
3842 @code{kal}. See also the @var{list_voices} option.
3843 @end table
3844
3845 @subsection Examples
3846
3847 @itemize
3848 @item
3849 Read from file @file{speech.txt}, and synthesize the text using the
3850 standard flite voice:
3851 @example
3852 flite=textfile=speech.txt
3853 @end example
3854
3855 @item
3856 Read the specified text selecting the @code{slt} voice:
3857 @example
3858 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
3859 @end example
3860
3861 @item
3862 Input text to ffmpeg:
3863 @example
3864 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
3865 @end example
3866
3867 @item
3868 Make @file{ffplay} speak the specified text, using @code{flite} and
3869 the @code{lavfi} device:
3870 @example
3871 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
3872 @end example
3873 @end itemize
3874
3875 For more information about libflite, check:
3876 @url{http://www.speech.cs.cmu.edu/flite/}
3877
3878 @section anoisesrc
3879
3880 Generate a noise audio signal.
3881
3882 The filter accepts the following options:
3883
3884 @table @option
3885 @item sample_rate, r
3886 Specify the sample rate. Default value is 48000 Hz.
3887
3888 @item amplitude, a
3889 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
3890 is 1.0.
3891
3892 @item duration, d
3893 Specify the duration of the generated audio stream. Not specifying this option
3894 results in noise with an infinite length.
3895
3896 @item color, colour, c
3897 Specify the color of noise. Available noise colors are white, pink, and brown.
3898 Default color is white.
3899
3900 @item seed, s
3901 Specify a value used to seed the PRNG.
3902
3903 @item nb_samples, n
3904 Set the number of samples per each output frame, default is 1024.
3905 @end table
3906
3907 @subsection Examples
3908
3909 @itemize
3910
3911 @item
3912 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
3913 @example
3914 anoisesrc=d=60:c=pink:r=44100:a=0.5
3915 @end example
3916 @end itemize
3917
3918 @section sine
3919
3920 Generate an audio signal made of a sine wave with amplitude 1/8.
3921
3922 The audio signal is bit-exact.
3923
3924 The filter accepts the following options:
3925
3926 @table @option
3927
3928 @item frequency, f
3929 Set the carrier frequency. Default is 440 Hz.
3930
3931 @item beep_factor, b
3932 Enable a periodic beep every second with frequency @var{beep_factor} times
3933 the carrier frequency. Default is 0, meaning the beep is disabled.
3934
3935 @item sample_rate, r
3936 Specify the sample rate, default is 44100.
3937
3938 @item duration, d
3939 Specify the duration of the generated audio stream.
3940
3941 @item samples_per_frame
3942 Set the number of samples per output frame.
3943
3944 The expression can contain the following constants:
3945
3946 @table @option
3947 @item n
3948 The (sequential) number of the output audio frame, starting from 0.
3949
3950 @item pts
3951 The PTS (Presentation TimeStamp) of the output audio frame,
3952 expressed in @var{TB} units.
3953
3954 @item t
3955 The PTS of the output audio frame, expressed in seconds.
3956
3957 @item TB
3958 The timebase of the output audio frames.
3959 @end table
3960
3961 Default is @code{1024}.
3962 @end table
3963
3964 @subsection Examples
3965
3966 @itemize
3967
3968 @item
3969 Generate a simple 440 Hz sine wave:
3970 @example
3971 sine
3972 @end example
3973
3974 @item
3975 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
3976 @example
3977 sine=220:4:d=5
3978 sine=f=220:b=4:d=5
3979 sine=frequency=220:beep_factor=4:duration=5
3980 @end example
3981
3982 @item
3983 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
3984 pattern:
3985 @example
3986 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
3987 @end example
3988 @end itemize
3989
3990 @c man end AUDIO SOURCES
3991
3992 @chapter Audio Sinks
3993 @c man begin AUDIO SINKS
3994
3995 Below is a description of the currently available audio sinks.
3996
3997 @section abuffersink
3998
3999 Buffer audio frames, and make them available to the end of filter chain.
4000
4001 This sink is mainly intended for programmatic use, in particular
4002 through the interface defined in @file{libavfilter/buffersink.h}
4003 or the options system.
4004
4005 It accepts a pointer to an AVABufferSinkContext structure, which
4006 defines the incoming buffers' formats, to be passed as the opaque
4007 parameter to @code{avfilter_init_filter} for initialization.
4008 @section anullsink
4009
4010 Null audio sink; do absolutely nothing with the input audio. It is
4011 mainly useful as a template and for use in analysis / debugging
4012 tools.
4013
4014 @c man end AUDIO SINKS
4015
4016 @chapter Video Filters
4017 @c man begin VIDEO FILTERS
4018
4019 When you configure your FFmpeg build, you can disable any of the
4020 existing filters using @code{--disable-filters}.
4021 The configure output will show the video filters included in your
4022 build.
4023
4024 Below is a description of the currently available video filters.
4025
4026 @section alphaextract
4027
4028 Extract the alpha component from the input as a grayscale video. This
4029 is especially useful with the @var{alphamerge} filter.
4030
4031 @section alphamerge
4032
4033 Add or replace the alpha component of the primary input with the
4034 grayscale value of a second input. This is intended for use with
4035 @var{alphaextract} to allow the transmission or storage of frame
4036 sequences that have alpha in a format that doesn't support an alpha
4037 channel.
4038
4039 For example, to reconstruct full frames from a normal YUV-encoded video
4040 and a separate video created with @var{alphaextract}, you might use:
4041 @example
4042 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
4043 @end example
4044
4045 Since this filter is designed for reconstruction, it operates on frame
4046 sequences without considering timestamps, and terminates when either
4047 input reaches end of stream. This will cause problems if your encoding
4048 pipeline drops frames. If you're trying to apply an image as an
4049 overlay to a video stream, consider the @var{overlay} filter instead.
4050
4051 @section ass
4052
4053 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
4054 and libavformat to work. On the other hand, it is limited to ASS (Advanced
4055 Substation Alpha) subtitles files.
4056
4057 This filter accepts the following option in addition to the common options from
4058 the @ref{subtitles} filter:
4059
4060 @table @option
4061 @item shaping
4062 Set the shaping engine
4063
4064 Available values are:
4065 @table @samp
4066 @item auto
4067 The default libass shaping engine, which is the best available.
4068 @item simple
4069 Fast, font-agnostic shaper that can do only substitutions
4070 @item complex
4071 Slower shaper using OpenType for substitutions and positioning
4072 @end table
4073
4074 The default is @code{auto}.
4075 @end table
4076
4077 @section atadenoise
4078 Apply an Adaptive Temporal Averaging Denoiser to the video input.
4079
4080 The filter accepts the following options:
4081
4082 @table @option
4083 @item 0a
4084 Set threshold A for 1st plane. Default is 0.02.
4085 Valid range is 0 to 0.3.
4086
4087 @item 0b
4088 Set threshold B for 1st plane. Default is 0.04.
4089 Valid range is 0 to 5.
4090
4091 @item 1a
4092 Set threshold A for 2nd plane. Default is 0.02.
4093 Valid range is 0 to 0.3.
4094
4095 @item 1b
4096 Set threshold B for 2nd plane. Default is 0.04.
4097 Valid range is 0 to 5.
4098
4099 @item 2a
4100 Set threshold A for 3rd plane. Default is 0.02.
4101 Valid range is 0 to 0.3.
4102
4103 @item 2b
4104 Set threshold B for 3rd plane. Default is 0.04.
4105 Valid range is 0 to 5.
4106
4107 Threshold A is designed to react on abrupt changes in the input signal and
4108 threshold B is designed to react on continuous changes in the input signal.
4109
4110 @item s
4111 Set number of frames filter will use for averaging. Default is 33. Must be odd
4112 number in range [5, 129].
4113 @end table
4114
4115 @section bbox
4116
4117 Compute the bounding box for the non-black pixels in the input frame
4118 luminance plane.
4119
4120 This filter computes the bounding box containing all the pixels with a
4121 luminance value greater than the minimum allowed value.
4122 The parameters describing the bounding box are printed on the filter
4123 log.
4124
4125 The filter accepts the following option:
4126
4127 @table @option
4128 @item min_val
4129 Set the minimal luminance value. Default is @code{16}.
4130 @end table
4131
4132 @section blackdetect
4133
4134 Detect video intervals that are (almost) completely black. Can be
4135 useful to detect chapter transitions, commercials, or invalid
4136 recordings. Output lines contains the time for the start, end and
4137 duration of the detected black interval expressed in seconds.
4138
4139 In order to display the output lines, you need to set the loglevel at
4140 least to the AV_LOG_INFO value.
4141
4142 The filter accepts the following options:
4143
4144 @table @option
4145 @item black_min_duration, d
4146 Set the minimum detected black duration expressed in seconds. It must
4147 be a non-negative floating point number.
4148
4149 Default value is 2.0.
4150
4151 @item picture_black_ratio_th, pic_th
4152 Set the threshold for considering a picture "black".
4153 Express the minimum value for the ratio:
4154 @example
4155 @var{nb_black_pixels} / @var{nb_pixels}
4156 @end example
4157
4158 for which a picture is considered black.
4159 Default value is 0.98.
4160
4161 @item pixel_black_th, pix_th
4162 Set the threshold for considering a pixel "black".
4163
4164 The threshold expresses the maximum pixel luminance value for which a
4165 pixel is considered "black". The provided value is scaled according to
4166 the following equation:
4167 @example
4168 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
4169 @end example
4170
4171 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
4172 the input video format, the range is [0-255] for YUV full-range
4173 formats and [16-235] for YUV non full-range formats.
4174
4175 Default value is 0.10.
4176 @end table
4177
4178 The following example sets the maximum pixel threshold to the minimum
4179 value, and detects only black intervals of 2 or more seconds:
4180 @example
4181 blackdetect=d=2:pix_th=0.00
4182 @end example
4183
4184 @section blackframe
4185
4186 Detect frames that are (almost) completely black. Can be useful to
4187 detect chapter transitions or commercials. Output lines consist of
4188 the frame number of the detected frame, the percentage of blackness,
4189 the position in the file if known or -1 and the timestamp in seconds.
4190
4191 In order to display the output lines, you need to set the loglevel at
4192 least to the AV_LOG_INFO value.
4193
4194 It accepts the following parameters:
4195
4196 @table @option
4197
4198 @item amount
4199 The percentage of the pixels that have to be below the threshold; it defaults to
4200 @code{98}.
4201
4202 @item threshold, thresh
4203 The threshold below which a pixel value is considered black; it defaults to
4204 @code{32}.
4205
4206 @end table
4207
4208 @section blend, tblend
4209
4210 Blend two video frames into each other.
4211
4212 The @code{blend} filter takes two input streams and outputs one
4213 stream, the first input is the "top" layer and second input is
4214 "bottom" layer.  Output terminates when shortest input terminates.
4215
4216 The @code{tblend} (time blend) filter takes two consecutive frames
4217 from one single stream, and outputs the result obtained by blending
4218 the new frame on top of the old frame.
4219
4220 A description of the accepted options follows.
4221
4222 @table @option
4223 @item c0_mode
4224 @item c1_mode
4225 @item c2_mode
4226 @item c3_mode
4227 @item all_mode
4228 Set blend mode for specific pixel component or all pixel components in case
4229 of @var{all_mode}. Default value is @code{normal}.
4230
4231 Available values for component modes are:
4232 @table @samp
4233 @item addition
4234 @item addition128
4235 @item and
4236 @item average
4237 @item burn
4238 @item darken
4239 @item difference
4240 @item difference128
4241 @item divide
4242 @item dodge
4243 @item exclusion
4244 @item glow
4245 @item hardlight
4246 @item hardmix
4247 @item lighten
4248 @item linearlight
4249 @item multiply
4250 @item multiply128
4251 @item negation
4252 @item normal
4253 @item or
4254 @item overlay
4255 @item phoenix
4256 @item pinlight
4257 @item reflect
4258 @item screen
4259 @item softlight
4260 @item subtract
4261 @item vividlight
4262 @item xor
4263 @end table
4264
4265 @item c0_opacity
4266 @item c1_opacity
4267 @item c2_opacity
4268 @item c3_opacity
4269 @item all_opacity
4270 Set blend opacity for specific pixel component or all pixel components in case
4271 of @var{all_opacity}. Only used in combination with pixel component blend modes.
4272
4273 @item c0_expr
4274 @item c1_expr
4275 @item c2_expr
4276 @item c3_expr
4277 @item all_expr
4278 Set blend expression for specific pixel component or all pixel components in case
4279 of @var{all_expr}. Note that related mode options will be ignored if those are set.
4280
4281 The expressions can use the following variables:
4282
4283 @table @option
4284 @item N
4285 The sequential number of the filtered frame, starting from @code{0}.
4286
4287 @item X
4288 @item Y
4289 the coordinates of the current sample
4290
4291 @item W
4292 @item H
4293 the width and height of currently filtered plane
4294
4295 @item SW
4296 @item SH
4297 Width and height scale depending on the currently filtered plane. It is the
4298 ratio between the corresponding luma plane number of pixels and the current
4299 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
4300 @code{0.5,0.5} for chroma planes.
4301
4302 @item T
4303 Time of the current frame, expressed in seconds.
4304
4305 @item TOP, A
4306 Value of pixel component at current location for first video frame (top layer).
4307
4308 @item BOTTOM, B
4309 Value of pixel component at current location for second video frame (bottom layer).
4310 @end table
4311
4312 @item shortest
4313 Force termination when the shortest input terminates. Default is
4314 @code{0}. This option is only defined for the @code{blend} filter.
4315
4316 @item repeatlast
4317 Continue applying the last bottom frame after the end of the stream. A value of
4318 @code{0} disable the filter after the last frame of the bottom layer is reached.
4319 Default is @code{1}. This option is only defined for the @code{blend} filter.
4320 @end table
4321
4322 @subsection Examples
4323
4324 @itemize
4325 @item
4326 Apply transition from bottom layer to top layer in first 10 seconds:
4327 @example
4328 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
4329 @end example
4330
4331 @item
4332 Apply 1x1 checkerboard effect:
4333 @example
4334 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
4335 @end example
4336
4337 @item
4338 Apply uncover left effect:
4339 @example
4340 blend=all_expr='if(gte(N*SW+X,W),A,B)'
4341 @end example
4342
4343 @item
4344 Apply uncover down effect:
4345 @example
4346 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
4347 @end example
4348
4349 @item
4350 Apply uncover up-left effect:
4351 @example
4352 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
4353 @end example
4354
4355 @item
4356 Split diagonally video and shows top and bottom layer on each side:
4357 @example
4358 blend=all_expr=if(gt(X,Y*(W/H)),A,B)
4359 @end example
4360
4361 @item
4362 Display differences between the current and the previous frame:
4363 @example
4364 tblend=all_mode=difference128
4365 @end example
4366 @end itemize
4367
4368 @section bwdif
4369
4370 Deinterlace the input video ("bwdif" stands for "Bob Weaver
4371 Deinterlacing Filter").
4372
4373 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
4374 interpolation algorithms.
4375 It accepts the following parameters:
4376
4377 @table @option
4378 @item mode
4379 The interlacing mode to adopt. It accepts one of the following values:
4380
4381 @table @option
4382 @item 0, send_frame
4383 Output one frame for each frame.
4384 @item 1, send_field
4385 Output one frame for each field.
4386 @end table
4387
4388 The default value is @code{send_field}.
4389
4390 @item parity
4391 The picture field parity assumed for the input interlaced video. It accepts one
4392 of the following values:
4393
4394 @table @option
4395 @item 0, tff
4396 Assume the top field is first.
4397 @item 1, bff
4398 Assume the bottom field is first.
4399 @item -1, auto
4400 Enable automatic detection of field parity.
4401 @end table
4402
4403 The default value is @code{auto}.
4404 If the interlacing is unknown or the decoder does not export this information,
4405 top field first will be assumed.
4406
4407 @item deint
4408 Specify which frames to deinterlace. Accept one of the following
4409 values:
4410
4411 @table @option
4412 @item 0, all
4413 Deinterlace all frames.
4414 @item 1, interlaced
4415 Only deinterlace frames marked as interlaced.
4416 @end table
4417
4418 The default value is @code{all}.
4419 @end table
4420
4421 @section boxblur
4422
4423 Apply a boxblur algorithm to the input video.
4424
4425 It accepts the following parameters:
4426
4427 @table @option
4428
4429 @item luma_radius, lr
4430 @item luma_power, lp
4431 @item chroma_radius, cr
4432 @item chroma_power, cp
4433 @item alpha_radius, ar
4434 @item alpha_power, ap
4435
4436 @end table
4437
4438 A description of the accepted options follows.
4439
4440 @table @option
4441 @item luma_radius, lr
4442 @item chroma_radius, cr
4443 @item alpha_radius, ar
4444 Set an expression for the box radius in pixels used for blurring the
4445 corresponding input plane.
4446
4447 The radius value must be a non-negative number, and must not be
4448 greater than the value of the expression @code{min(w,h)/2} for the
4449 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
4450 planes.
4451
4452 Default value for @option{luma_radius} is "2". If not specified,
4453 @option{chroma_radius} and @option{alpha_radius} default to the
4454 corresponding value set for @option{luma_radius}.
4455
4456 The expressions can contain the following constants:
4457 @table @option
4458 @item w
4459 @item h
4460 The input width and height in pixels.
4461
4462 @item cw
4463 @item ch
4464 The input chroma image width and height in pixels.
4465
4466 @item hsub
4467 @item vsub
4468 The horizontal and vertical chroma subsample values. For example, for the
4469 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
4470 @end table
4471
4472 @item luma_power, lp
4473 @item chroma_power, cp
4474 @item alpha_power, ap
4475 Specify how many times the boxblur filter is applied to the
4476 corresponding plane.
4477
4478 Default value for @option{luma_power} is 2. If not specified,
4479 @option{chroma_power} and @option{alpha_power} default to the
4480 corresponding value set for @option{luma_power}.
4481
4482 A value of 0 will disable the effect.
4483 @end table
4484
4485 @subsection Examples
4486
4487 @itemize
4488 @item
4489 Apply a boxblur filter with the luma, chroma, and alpha radii
4490 set to 2:
4491 @example
4492 boxblur=luma_radius=2:luma_power=1
4493 boxblur=2:1
4494 @end example
4495
4496 @item
4497 Set the luma radius to 2, and alpha and chroma radius to 0:
4498 @example
4499 boxblur=2:1:cr=0:ar=0
4500 @end example
4501
4502 @item
4503 Set the luma and chroma radii to a fraction of the video dimension:
4504 @example
4505 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
4506 @end example
4507 @end itemize
4508
4509 @section chromakey
4510 YUV colorspace color/chroma keying.
4511
4512 The filter accepts the following options:
4513
4514 @table @option
4515 @item color
4516 The color which will be replaced with transparency.
4517
4518 @item similarity
4519 Similarity percentage with the key color.
4520
4521 0.01 matches only the exact key color, while 1.0 matches everything.
4522
4523 @item blend
4524 Blend percentage.
4525
4526 0.0 makes pixels either fully transparent, or not transparent at all.
4527
4528 Higher values result in semi-transparent pixels, with a higher transparency
4529 the more similar the pixels color is to the key color.
4530
4531 @item yuv
4532 Signals that the color passed is already in YUV instead of RGB.
4533
4534 Litteral colors like "green" or "red" don't make sense with this enabled anymore.
4535 This can be used to pass exact YUV values as hexadecimal numbers.
4536 @end table
4537
4538 @subsection Examples
4539
4540 @itemize
4541 @item
4542 Make every green pixel in the input image transparent:
4543 @example
4544 ffmpeg -i input.png -vf chromakey=green out.png
4545 @end example
4546
4547 @item
4548 Overlay a greenscreen-video on top of a static black background.
4549 @example
4550 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
4551 @end example
4552 @end itemize
4553
4554 @section codecview
4555
4556 Visualize information exported by some codecs.
4557
4558 Some codecs can export information through frames using side-data or other
4559 means. For example, some MPEG based codecs export motion vectors through the
4560 @var{export_mvs} flag in the codec @option{flags2} option.
4561
4562 The filter accepts the following option:
4563
4564 @table @option
4565 @item mv
4566 Set motion vectors to visualize.
4567
4568 Available flags for @var{mv} are:
4569
4570 @table @samp
4571 @item pf
4572 forward predicted MVs of P-frames
4573 @item bf
4574 forward predicted MVs of B-frames
4575 @item bb
4576 backward predicted MVs of B-frames
4577 @end table
4578
4579 @item qp
4580 Display quantization parameters using the chroma planes
4581 @end table
4582
4583 @subsection Examples
4584
4585 @itemize
4586 @item
4587 Visualizes multi-directionals MVs from P and B-Frames using @command{ffplay}:
4588 @example
4589 ffplay -flags2 +export_mvs input.mpg -vf codecview=mv=pf+bf+bb
4590 @end example
4591 @end itemize
4592
4593 @section colorbalance
4594 Modify intensity of primary colors (red, green and blue) of input frames.
4595
4596 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
4597 regions for the red-cyan, green-magenta or blue-yellow balance.
4598
4599 A positive adjustment value shifts the balance towards the primary color, a negative
4600 value towards the complementary color.
4601
4602 The filter accepts the following options:
4603
4604 @table @option
4605 @item rs
4606 @item gs
4607 @item bs
4608 Adjust red, green and blue shadows (darkest pixels).
4609
4610 @item rm
4611 @item gm
4612 @item bm
4613 Adjust red, green and blue midtones (medium pixels).
4614
4615 @item rh
4616 @item gh
4617 @item bh
4618 Adjust red, green and blue highlights (brightest pixels).
4619
4620 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
4621 @end table
4622
4623 @subsection Examples
4624
4625 @itemize
4626 @item
4627 Add red color cast to shadows:
4628 @example
4629 colorbalance=rs=.3
4630 @end example
4631 @end itemize
4632
4633 @section colorkey
4634 RGB colorspace color keying.
4635
4636 The filter accepts the following options:
4637
4638 @table @option
4639 @item color
4640 The color which will be replaced with transparency.
4641
4642 @item similarity
4643 Similarity percentage with the key color.
4644
4645 0.01 matches only the exact key color, while 1.0 matches everything.
4646
4647 @item blend
4648 Blend percentage.
4649
4650 0.0 makes pixels either fully transparent, or not transparent at all.
4651
4652 Higher values result in semi-transparent pixels, with a higher transparency
4653 the more similar the pixels color is to the key color.
4654 @end table
4655
4656 @subsection Examples
4657
4658 @itemize
4659 @item
4660 Make every green pixel in the input image transparent:
4661 @example
4662 ffmpeg -i input.png -vf colorkey=green out.png
4663 @end example
4664
4665 @item
4666 Overlay a greenscreen-video on top of a static background image.
4667 @example
4668 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
4669 @end example
4670 @end itemize
4671
4672 @section colorlevels
4673
4674 Adjust video input frames using levels.
4675
4676 The filter accepts the following options:
4677
4678 @table @option
4679 @item rimin
4680 @item gimin
4681 @item bimin
4682 @item aimin
4683 Adjust red, green, blue and alpha input black point.
4684 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
4685
4686 @item rimax
4687 @item gimax
4688 @item bimax
4689 @item aimax
4690 Adjust red, green, blue and alpha input white point.
4691 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
4692
4693 Input levels are used to lighten highlights (bright tones), darken shadows
4694 (dark tones), change the balance of bright and dark tones.
4695
4696 @item romin
4697 @item gomin
4698 @item bomin
4699 @item aomin
4700 Adjust red, green, blue and alpha output black point.
4701 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
4702
4703 @item romax
4704 @item gomax
4705 @item bomax
4706 @item aomax
4707 Adjust red, green, blue and alpha output white point.
4708 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
4709
4710 Output levels allows manual selection of a constrained output level range.
4711 @end table
4712
4713 @subsection Examples
4714
4715 @itemize
4716 @item
4717 Make video output darker:
4718 @example
4719 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
4720 @end example
4721
4722 @item
4723 Increase contrast:
4724 @example
4725 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
4726 @end example
4727
4728 @item
4729 Make video output lighter:
4730 @example
4731 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
4732 @end example
4733
4734 @item
4735 Increase brightness:
4736 @example
4737 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
4738 @end example
4739 @end itemize
4740
4741 @section colorchannelmixer
4742
4743 Adjust video input frames by re-mixing color channels.
4744
4745 This filter modifies a color channel by adding the values associated to
4746 the other channels of the same pixels. For example if the value to
4747 modify is red, the output value will be:
4748 @example
4749 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
4750 @end example
4751
4752 The filter accepts the following options:
4753
4754 @table @option
4755 @item rr
4756 @item rg
4757 @item rb
4758 @item ra
4759 Adjust contribution of input red, green, blue and alpha channels for output red channel.
4760 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
4761
4762 @item gr
4763 @item gg
4764 @item gb
4765 @item ga
4766 Adjust contribution of input red, green, blue and alpha channels for output green channel.
4767 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
4768
4769 @item br
4770 @item bg
4771 @item bb
4772 @item ba
4773 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
4774 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
4775
4776 @item ar
4777 @item ag
4778 @item ab
4779 @item aa
4780 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
4781 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
4782
4783 Allowed ranges for options are @code{[-2.0, 2.0]}.
4784 @end table
4785
4786 @subsection Examples
4787
4788 @itemize
4789 @item
4790 Convert source to grayscale:
4791 @example
4792 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
4793 @end example
4794 @item
4795 Simulate sepia tones:
4796 @example
4797 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
4798 @end example
4799 @end itemize
4800
4801 @section colormatrix
4802
4803 Convert color matrix.
4804
4805 The filter accepts the following options:
4806
4807 @table @option
4808 @item src
4809 @item dst
4810 Specify the source and destination color matrix. Both values must be
4811 specified.
4812
4813 The accepted values are:
4814 @table @samp
4815 @item bt709
4816 BT.709
4817
4818 @item bt601
4819 BT.601
4820
4821 @item smpte240m
4822 SMPTE-240M
4823
4824 @item fcc
4825 FCC
4826 @end table
4827 @end table
4828
4829 For example to convert from BT.601 to SMPTE-240M, use the command:
4830 @example
4831 colormatrix=bt601:smpte240m
4832 @end example
4833
4834 @section convolution
4835
4836 Apply convolution 3x3 or 5x5 filter.
4837
4838 The filter accepts the following options:
4839
4840 @table @option
4841 @item 0m
4842 @item 1m
4843 @item 2m
4844 @item 3m
4845 Set matrix for each plane.
4846 Matrix is sequence of 9 or 25 signed integers.
4847
4848 @item 0rdiv
4849 @item 1rdiv
4850 @item 2rdiv
4851 @item 3rdiv
4852 Set multiplier for calculated value for each plane.
4853
4854 @item 0bias
4855 @item 1bias
4856 @item 2bias
4857 @item 3bias
4858 Set bias for each plane. This value is added to the result of the multiplication.
4859 Useful for making the overall image brighter or darker. Default is 0.0.
4860 @end table
4861
4862 @subsection Examples
4863
4864 @itemize
4865 @item
4866 Apply sharpen:
4867 @example
4868 convolution="0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0"
4869 @end example
4870
4871 @item
4872 Apply blur:
4873 @example
4874 convolution="1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9"
4875 @end example
4876
4877 @item
4878 Apply edge enhance:
4879 @example
4880 convolution="0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128"
4881 @end example
4882
4883 @item
4884 Apply edge detect:
4885 @example
4886 convolution="0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128"
4887 @end example
4888
4889 @item
4890 Apply emboss:
4891 @example
4892 convolution="-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2"
4893 @end example
4894 @end itemize
4895
4896 @section copy
4897
4898 Copy the input source unchanged to the output. This is mainly useful for
4899 testing purposes.
4900
4901 @section crop
4902
4903 Crop the input video to given dimensions.
4904
4905 It accepts the following parameters:
4906
4907 @table @option
4908 @item w, out_w
4909 The width of the output video. It defaults to @code{iw}.
4910 This expression is evaluated only once during the filter
4911 configuration, or when the @samp{w} or @samp{out_w} command is sent.
4912
4913 @item h, out_h
4914 The height of the output video. It defaults to @code{ih}.
4915 This expression is evaluated only once during the filter
4916 configuration, or when the @samp{h} or @samp{out_h} command is sent.
4917
4918 @item x
4919 The horizontal position, in the input video, of the left edge of the output
4920 video. It defaults to @code{(in_w-out_w)/2}.
4921 This expression is evaluated per-frame.
4922
4923 @item y
4924 The vertical position, in the input video, of the top edge of the output video.
4925 It defaults to @code{(in_h-out_h)/2}.
4926 This expression is evaluated per-frame.
4927
4928 @item keep_aspect
4929 If set to 1 will force the output display aspect ratio
4930 to be the same of the input, by changing the output sample aspect
4931 ratio. It defaults to 0.
4932 @end table
4933
4934 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
4935 expressions containing the following constants:
4936
4937 @table @option
4938 @item x
4939 @item y
4940 The computed values for @var{x} and @var{y}. They are evaluated for
4941 each new frame.
4942
4943 @item in_w
4944 @item in_h
4945 The input width and height.
4946
4947 @item iw
4948 @item ih
4949 These are the same as @var{in_w} and @var{in_h}.
4950
4951 @item out_w
4952 @item out_h
4953 The output (cropped) width and height.
4954
4955 @item ow
4956 @item oh
4957 These are the same as @var{out_w} and @var{out_h}.
4958
4959 @item a
4960 same as @var{iw} / @var{ih}
4961
4962 @item sar
4963 input sample aspect ratio
4964
4965 @item dar
4966 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
4967
4968 @item hsub
4969 @item vsub
4970 horizontal and vertical chroma subsample values. For example for the
4971 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
4972
4973 @item n
4974 The number of the input frame, starting from 0.
4975
4976 @item pos
4977 the position in the file of the input frame, NAN if unknown
4978
4979 @item t
4980 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
4981
4982 @end table
4983
4984 The expression for @var{out_w} may depend on the value of @var{out_h},
4985 and the expression for @var{out_h} may depend on @var{out_w}, but they
4986 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
4987 evaluated after @var{out_w} and @var{out_h}.
4988
4989 The @var{x} and @var{y} parameters specify the expressions for the
4990 position of the top-left corner of the output (non-cropped) area. They
4991 are evaluated for each frame. If the evaluated value is not valid, it
4992 is approximated to the nearest valid value.
4993
4994 The expression for @var{x} may depend on @var{y}, and the expression
4995 for @var{y} may depend on @var{x}.
4996
4997 @subsection Examples
4998
4999 @itemize
5000 @item
5001 Crop area with size 100x100 at position (12,34).
5002 @example
5003 crop=100:100:12:34
5004 @end example
5005
5006 Using named options, the example above becomes:
5007 @example
5008 crop=w=100:h=100:x=12:y=34
5009 @end example
5010
5011 @item
5012 Crop the central input area with size 100x100:
5013 @example
5014 crop=100:100
5015 @end example
5016
5017 @item
5018 Crop the central input area with size 2/3 of the input video:
5019 @example
5020 crop=2/3*in_w:2/3*in_h
5021 @end example
5022
5023 @item
5024 Crop the input video central square:
5025 @example
5026 crop=out_w=in_h
5027 crop=in_h
5028 @end example
5029
5030 @item
5031 Delimit the rectangle with the top-left corner placed at position
5032 100:100 and the right-bottom corner corresponding to the right-bottom
5033 corner of the input image.
5034 @example
5035 crop=in_w-100:in_h-100:100:100
5036 @end example
5037
5038 @item
5039 Crop 10 pixels from the left and right borders, and 20 pixels from
5040 the top and bottom borders
5041 @example
5042 crop=in_w-2*10:in_h-2*20
5043 @end example
5044
5045 @item
5046 Keep only the bottom right quarter of the input image:
5047 @example
5048 crop=in_w/2:in_h/2:in_w/2:in_h/2
5049 @end example
5050
5051 @item
5052 Crop height for getting Greek harmony:
5053 @example
5054 crop=in_w:1/PHI*in_w
5055 @end example
5056
5057 @item
5058 Apply trembling effect:
5059 @example
5060 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)
5061 @end example
5062
5063 @item
5064 Apply erratic camera effect depending on timestamp:
5065 @example
5066 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)"
5067 @end example
5068
5069 @item
5070 Set x depending on the value of y:
5071 @example
5072 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
5073 @end example
5074 @end itemize
5075
5076 @subsection Commands
5077
5078 This filter supports the following commands:
5079 @table @option
5080 @item w, out_w
5081 @item h, out_h
5082 @item x
5083 @item y
5084 Set width/height of the output video and the horizontal/vertical position
5085 in the input video.
5086 The command accepts the same syntax of the corresponding option.
5087
5088 If the specified expression is not valid, it is kept at its current
5089 value.
5090 @end table
5091
5092 @section cropdetect
5093
5094 Auto-detect the crop size.
5095
5096 It calculates the necessary cropping parameters and prints the
5097 recommended parameters via the logging system. The detected dimensions
5098 correspond to the non-black area of the input video.
5099
5100 It accepts the following parameters:
5101
5102 @table @option
5103
5104 @item limit
5105 Set higher black value threshold, which can be optionally specified
5106 from nothing (0) to everything (255 for 8bit based formats). An intensity
5107 value greater to the set value is considered non-black. It defaults to 24.
5108 You can also specify a value between 0.0 and 1.0 which will be scaled depending
5109 on the bitdepth of the pixel format.
5110
5111 @item round
5112 The value which the width/height should be divisible by. It defaults to
5113 16. The offset is automatically adjusted to center the video. Use 2 to
5114 get only even dimensions (needed for 4:2:2 video). 16 is best when
5115 encoding to most video codecs.
5116
5117 @item reset_count, reset
5118 Set the counter that determines after how many frames cropdetect will
5119 reset the previously detected largest video area and start over to
5120 detect the current optimal crop area. Default value is 0.
5121
5122 This can be useful when channel logos distort the video area. 0
5123 indicates 'never reset', and returns the largest area encountered during
5124 playback.
5125 @end table
5126
5127 @anchor{curves}
5128 @section curves
5129
5130 Apply color adjustments using curves.
5131
5132 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
5133 component (red, green and blue) has its values defined by @var{N} key points
5134 tied from each other using a smooth curve. The x-axis represents the pixel
5135 values from the input frame, and the y-axis the new pixel values to be set for
5136 the output frame.
5137
5138 By default, a component curve is defined by the two points @var{(0;0)} and
5139 @var{(1;1)}. This creates a straight line where each original pixel value is
5140 "adjusted" to its own value, which means no change to the image.
5141
5142 The filter allows you to redefine these two points and add some more. A new
5143 curve (using a natural cubic spline interpolation) will be define to pass
5144 smoothly through all these new coordinates. The new defined points needs to be
5145 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
5146 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
5147 the vector spaces, the values will be clipped accordingly.
5148
5149 If there is no key point defined in @code{x=0}, the filter will automatically
5150 insert a @var{(0;0)} point. In the same way, if there is no key point defined
5151 in @code{x=1}, the filter will automatically insert a @var{(1;1)} point.
5152
5153 The filter accepts the following options:
5154
5155 @table @option
5156 @item preset
5157 Select one of the available color presets. This option can be used in addition
5158 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
5159 options takes priority on the preset values.
5160 Available presets are:
5161 @table @samp
5162 @item none
5163 @item color_negative
5164 @item cross_process
5165 @item darker
5166 @item increase_contrast
5167 @item lighter
5168 @item linear_contrast
5169 @item medium_contrast
5170 @item negative
5171 @item strong_contrast
5172 @item vintage
5173 @end table
5174 Default is @code{none}.
5175 @item master, m
5176 Set the master key points. These points will define a second pass mapping. It
5177 is sometimes called a "luminance" or "value" mapping. It can be used with
5178 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
5179 post-processing LUT.
5180 @item red, r
5181 Set the key points for the red component.
5182 @item green, g
5183 Set the key points for the green component.
5184 @item blue, b
5185 Set the key points for the blue component.
5186 @item all
5187 Set the key points for all components (not including master).
5188 Can be used in addition to the other key points component
5189 options. In this case, the unset component(s) will fallback on this
5190 @option{all} setting.
5191 @item psfile
5192 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
5193 @end table
5194
5195 To avoid some filtergraph syntax conflicts, each key points list need to be
5196 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
5197
5198 @subsection Examples
5199
5200 @itemize
5201 @item
5202 Increase slightly the middle level of blue:
5203 @example
5204 curves=blue='0.5/0.58'
5205 @end example
5206
5207 @item
5208 Vintage effect:
5209 @example
5210 curves=r='0/0.11 .42/.51 1/0.95':g='0.50/0.48':b='0/0.22 .49/.44 1/0.8'
5211 @end example
5212 Here we obtain the following coordinates for each components:
5213 @table @var
5214 @item red
5215 @code{(0;0.11) (0.42;0.51) (1;0.95)}
5216 @item green
5217 @code{(0;0) (0.50;0.48) (1;1)}
5218 @item blue
5219 @code{(0;0.22) (0.49;0.44) (1;0.80)}
5220 @end table
5221
5222 @item
5223 The previous example can also be achieved with the associated built-in preset:
5224 @example
5225 curves=preset=vintage
5226 @end example
5227
5228 @item
5229 Or simply:
5230 @example
5231 curves=vintage
5232 @end example
5233
5234 @item
5235 Use a Photoshop preset and redefine the points of the green component:
5236 @example
5237 curves=psfile='MyCurvesPresets/purple.acv':green='0.45/0.53'
5238 @end example
5239 @end itemize
5240
5241 @section dctdnoiz
5242
5243 Denoise frames using 2D DCT (frequency domain filtering).
5244
5245 This filter is not designed for real time.
5246
5247 The filter accepts the following options:
5248
5249 @table @option
5250 @item sigma, s
5251 Set the noise sigma constant.
5252
5253 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
5254 coefficient (absolute value) below this threshold with be dropped.
5255
5256 If you need a more advanced filtering, see @option{expr}.
5257
5258 Default is @code{0}.
5259
5260 @item overlap
5261 Set number overlapping pixels for each block. Since the filter can be slow, you
5262 may want to reduce this value, at the cost of a less effective filter and the
5263 risk of various artefacts.
5264
5265 If the overlapping value doesn't permit processing the whole input width or
5266 height, a warning will be displayed and according borders won't be denoised.
5267
5268 Default value is @var{blocksize}-1, which is the best possible setting.
5269
5270 @item expr, e
5271 Set the coefficient factor expression.
5272
5273 For each coefficient of a DCT block, this expression will be evaluated as a
5274 multiplier value for the coefficient.
5275
5276 If this is option is set, the @option{sigma} option will be ignored.
5277
5278 The absolute value of the coefficient can be accessed through the @var{c}
5279 variable.
5280
5281 @item n
5282 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
5283 @var{blocksize}, which is the width and height of the processed blocks.
5284
5285 The default value is @var{3} (8x8) and can be raised to @var{4} for a
5286 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
5287 on the speed processing. Also, a larger block size does not necessarily means a
5288 better de-noising.
5289 @end table
5290
5291 @subsection Examples
5292
5293 Apply a denoise with a @option{sigma} of @code{4.5}:
5294 @example
5295 dctdnoiz=4.5
5296 @end example
5297
5298 The same operation can be achieved using the expression system:
5299 @example
5300 dctdnoiz=e='gte(c, 4.5*3)'
5301 @end example
5302
5303 Violent denoise using a block size of @code{16x16}:
5304 @example
5305 dctdnoiz=15:n=4
5306 @end example
5307
5308 @section deband
5309
5310 Remove banding artifacts from input video.
5311 It works by replacing banded pixels with average value of referenced pixels.
5312
5313 The filter accepts the following options:
5314
5315 @table @option
5316 @item 1thr
5317 @item 2thr
5318 @item 3thr
5319 @item 4thr
5320 Set banding detection threshold for each plane. Default is 0.02.
5321 Valid range is 0.00003 to 0.5.
5322 If difference between current pixel and reference pixel is less than threshold,
5323 it will be considered as banded.
5324
5325 @item range, r
5326 Banding detection range in pixels. Default is 16. If positive, random number
5327 in range 0 to set value will be used. If negative, exact absolute value
5328 will be used.
5329 The range defines square of four pixels around current pixel.
5330
5331 @item direction, d
5332 Set direction in radians from which four pixel will be compared. If positive,
5333 random direction from 0 to set direction will be picked. If negative, exact of
5334 absolute value will be picked. For example direction 0, -PI or -2*PI radians
5335 will pick only pixels on same row and -PI/2 will pick only pixels on same
5336 column.
5337
5338 @item blur
5339 If enabled, current pixel is compared with average value of all four
5340 surrounding pixels. The default is enabled. If disabled current pixel is
5341 compared with all four surrounding pixels. The pixel is considered banded
5342 if only all four differences with surrounding pixels are less than threshold.
5343 @end table
5344
5345 @anchor{decimate}
5346 @section decimate
5347
5348 Drop duplicated frames at regular intervals.
5349
5350 The filter accepts the following options:
5351
5352 @table @option
5353 @item cycle
5354 Set the number of frames from which one will be dropped. Setting this to
5355 @var{N} means one frame in every batch of @var{N} frames will be dropped.
5356 Default is @code{5}.
5357
5358 @item dupthresh
5359 Set the threshold for duplicate detection. If the difference metric for a frame
5360 is less than or equal to this value, then it is declared as duplicate. Default
5361 is @code{1.1}
5362
5363 @item scthresh
5364 Set scene change threshold. Default is @code{15}.
5365
5366 @item blockx
5367 @item blocky
5368 Set the size of the x and y-axis blocks used during metric calculations.
5369 Larger blocks give better noise suppression, but also give worse detection of
5370 small movements. Must be a power of two. Default is @code{32}.
5371
5372 @item ppsrc
5373 Mark main input as a pre-processed input and activate clean source input
5374 stream. This allows the input to be pre-processed with various filters to help
5375 the metrics calculation while keeping the frame selection lossless. When set to
5376 @code{1}, the first stream is for the pre-processed input, and the second
5377 stream is the clean source from where the kept frames are chosen. Default is
5378 @code{0}.
5379
5380 @item chroma
5381 Set whether or not chroma is considered in the metric calculations. Default is
5382 @code{1}.
5383 @end table
5384
5385 @section deflate
5386
5387 Apply deflate effect to the video.
5388
5389 This filter replaces the pixel by the local(3x3) average by taking into account
5390 only values lower than the pixel.
5391
5392 It accepts the following options:
5393
5394 @table @option
5395 @item threshold0
5396 @item threshold1
5397 @item threshold2
5398 @item threshold3
5399 Limit the maximum change for each plane, default is 65535.
5400 If 0, plane will remain unchanged.
5401 @end table
5402
5403 @section dejudder
5404
5405 Remove judder produced by partially interlaced telecined content.
5406
5407 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
5408 source was partially telecined content then the output of @code{pullup,dejudder}
5409 will have a variable frame rate. May change the recorded frame rate of the
5410 container. Aside from that change, this filter will not affect constant frame
5411 rate video.
5412
5413 The option available in this filter is:
5414 @table @option
5415
5416 @item cycle
5417 Specify the length of the window over which the judder repeats.
5418
5419 Accepts any integer greater than 1. Useful values are:
5420 @table @samp
5421
5422 @item 4
5423 If the original was telecined from 24 to 30 fps (Film to NTSC).
5424
5425 @item 5
5426 If the original was telecined from 25 to 30 fps (PAL to NTSC).
5427
5428 @item 20
5429 If a mixture of the two.
5430 @end table
5431
5432 The default is @samp{4}.
5433 @end table
5434
5435 @section delogo
5436
5437 Suppress a TV station logo by a simple interpolation of the surrounding
5438 pixels. Just set a rectangle covering the logo and watch it disappear
5439 (and sometimes something even uglier appear - your mileage may vary).
5440
5441 It accepts the following parameters:
5442 @table @option
5443
5444 @item x
5445 @item y
5446 Specify the top left corner coordinates of the logo. They must be
5447 specified.
5448
5449 @item w
5450 @item h
5451 Specify the width and height of the logo to clear. They must be
5452 specified.
5453
5454 @item band, t
5455 Specify the thickness of the fuzzy edge of the rectangle (added to
5456 @var{w} and @var{h}). The default value is 1. This option is
5457 deprecated, setting higher values should no longer be necessary and
5458 is not recommended.
5459
5460 @item show
5461 When set to 1, a green rectangle is drawn on the screen to simplify
5462 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
5463 The default value is 0.
5464
5465 The rectangle is drawn on the outermost pixels which will be (partly)
5466 replaced with interpolated values. The values of the next pixels
5467 immediately outside this rectangle in each direction will be used to
5468 compute the interpolated pixel values inside the rectangle.
5469
5470 @end table
5471
5472 @subsection Examples
5473
5474 @itemize
5475 @item
5476 Set a rectangle covering the area with top left corner coordinates 0,0
5477 and size 100x77, and a band of size 10:
5478 @example
5479 delogo=x=0:y=0:w=100:h=77:band=10
5480 @end example
5481
5482 @end itemize
5483
5484 @section deshake
5485
5486 Attempt to fix small changes in horizontal and/or vertical shift. This
5487 filter helps remove camera shake from hand-holding a camera, bumping a
5488 tripod, moving on a vehicle, etc.
5489
5490 The filter accepts the following options:
5491
5492 @table @option
5493
5494 @item x
5495 @item y
5496 @item w
5497 @item h
5498 Specify a rectangular area where to limit the search for motion
5499 vectors.
5500 If desired the search for motion vectors can be limited to a
5501 rectangular area of the frame defined by its top left corner, width
5502 and height. These parameters have the same meaning as the drawbox
5503 filter which can be used to visualise the position of the bounding
5504 box.
5505
5506 This is useful when simultaneous movement of subjects within the frame
5507 might be confused for camera motion by the motion vector search.
5508
5509 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
5510 then the full frame is used. This allows later options to be set
5511 without specifying the bounding box for the motion vector search.
5512
5513 Default - search the whole frame.
5514
5515 @item rx
5516 @item ry
5517 Specify the maximum extent of movement in x and y directions in the
5518 range 0-64 pixels. Default 16.
5519
5520 @item edge
5521 Specify how to generate pixels to fill blanks at the edge of the
5522 frame. Available values are:
5523 @table @samp
5524 @item blank, 0
5525 Fill zeroes at blank locations
5526 @item original, 1
5527 Original image at blank locations
5528 @item clamp, 2
5529 Extruded edge value at blank locations
5530 @item mirror, 3
5531 Mirrored edge at blank locations
5532 @end table
5533 Default value is @samp{mirror}.
5534
5535 @item blocksize
5536 Specify the blocksize to use for motion search. Range 4-128 pixels,
5537 default 8.
5538
5539 @item contrast
5540 Specify the contrast threshold for blocks. Only blocks with more than
5541 the specified contrast (difference between darkest and lightest
5542 pixels) will be considered. Range 1-255, default 125.
5543
5544 @item search
5545 Specify the search strategy. Available values are:
5546 @table @samp
5547 @item exhaustive, 0
5548 Set exhaustive search
5549 @item less, 1
5550 Set less exhaustive search.
5551 @end table
5552 Default value is @samp{exhaustive}.
5553
5554 @item filename
5555 If set then a detailed log of the motion search is written to the
5556 specified file.
5557
5558 @item opencl
5559 If set to 1, specify using OpenCL capabilities, only available if
5560 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
5561
5562 @end table
5563
5564 @section detelecine
5565
5566 Apply an exact inverse of the telecine operation. It requires a predefined
5567 pattern specified using the pattern option which must be the same as that passed
5568 to the telecine filter.
5569
5570 This filter accepts the following options:
5571
5572 @table @option
5573 @item first_field
5574 @table @samp
5575 @item top, t
5576 top field first
5577 @item bottom, b
5578 bottom field first
5579 The default value is @code{top}.
5580 @end table
5581
5582 @item pattern
5583 A string of numbers representing the pulldown pattern you wish to apply.
5584 The default value is @code{23}.
5585
5586 @item start_frame
5587 A number representing position of the first frame with respect to the telecine
5588 pattern. This is to be used if the stream is cut. The default value is @code{0}.
5589 @end table
5590
5591 @section dilation
5592
5593 Apply dilation effect to the video.
5594
5595 This filter replaces the pixel by the local(3x3) maximum.
5596
5597 It accepts the following options:
5598
5599 @table @option
5600 @item threshold0
5601 @item threshold1
5602 @item threshold2
5603 @item threshold3
5604 Limit the maximum change for each plane, default is 65535.
5605 If 0, plane will remain unchanged.
5606
5607 @item coordinates
5608 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
5609 pixels are used.
5610
5611 Flags to local 3x3 coordinates maps like this:
5612
5613     1 2 3
5614     4   5
5615     6 7 8
5616 @end table
5617
5618 @section displace
5619
5620 Displace pixels as indicated by second and third input stream.
5621
5622 It takes three input streams and outputs one stream, the first input is the
5623 source, and second and third input are displacement maps.
5624
5625 The second input specifies how much to displace pixels along the
5626 x-axis, while the third input specifies how much to displace pixels
5627 along the y-axis.
5628 If one of displacement map streams terminates, last frame from that
5629 displacement map will be used.
5630
5631 Note that once generated, displacements maps can be reused over and over again.
5632
5633 A description of the accepted options follows.
5634
5635 @table @option
5636 @item edge
5637 Set displace behavior for pixels that are out of range.
5638
5639 Available values are:
5640 @table @samp
5641 @item blank
5642 Missing pixels are replaced by black pixels.
5643
5644 @item smear
5645 Adjacent pixels will spread out to replace missing pixels.
5646
5647 @item wrap
5648 Out of range pixels are wrapped so they point to pixels of other side.
5649 @end table
5650 Default is @samp{smear}.
5651
5652 @end table
5653
5654 @subsection Examples
5655
5656 @itemize
5657 @item
5658 Add ripple effect to rgb input of video size hd720:
5659 @example
5660 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
5661 @end example
5662
5663 @item
5664 Add wave effect to rgb input of video size hd720:
5665 @example
5666 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
5667 @end example
5668 @end itemize
5669
5670 @section drawbox
5671
5672 Draw a colored box on the input image.
5673
5674 It accepts the following parameters:
5675
5676 @table @option
5677 @item x
5678 @item y
5679 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
5680
5681 @item width, w
5682 @item height, h
5683 The expressions which specify the width and height of the box; if 0 they are interpreted as
5684 the input width and height. It defaults to 0.
5685
5686 @item color, c
5687 Specify the color of the box to write. For the general syntax of this option,
5688 check the "Color" section in the ffmpeg-utils manual. If the special
5689 value @code{invert} is used, the box edge color is the same as the
5690 video with inverted luma.
5691
5692 @item thickness, t
5693 The expression which sets the thickness of the box edge. Default value is @code{3}.
5694
5695 See below for the list of accepted constants.
5696 @end table
5697
5698 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
5699 following constants:
5700
5701 @table @option
5702 @item dar
5703 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
5704
5705 @item hsub
5706 @item vsub
5707 horizontal and vertical chroma subsample values. For example for the
5708 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
5709
5710 @item in_h, ih
5711 @item in_w, iw
5712 The input width and height.
5713
5714 @item sar
5715 The input sample aspect ratio.
5716
5717 @item x
5718 @item y
5719 The x and y offset coordinates where the box is drawn.
5720
5721 @item w
5722 @item h
5723 The width and height of the drawn box.
5724
5725 @item t
5726 The thickness of the drawn box.
5727
5728 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
5729 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
5730
5731 @end table
5732
5733 @subsection Examples
5734
5735 @itemize
5736 @item
5737 Draw a black box around the edge of the input image:
5738 @example
5739 drawbox
5740 @end example
5741
5742 @item
5743 Draw a box with color red and an opacity of 50%:
5744 @example
5745 drawbox=10:20:200:60:red@@0.5
5746 @end example
5747
5748 The previous example can be specified as:
5749 @example
5750 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
5751 @end example
5752
5753 @item
5754 Fill the box with pink color:
5755 @example
5756 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=max
5757 @end example
5758
5759 @item
5760 Draw a 2-pixel red 2.40:1 mask:
5761 @example
5762 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
5763 @end example
5764 @end itemize
5765
5766 @section drawgraph, adrawgraph
5767
5768 Draw a graph using input video or audio metadata.
5769
5770 It accepts the following parameters:
5771
5772 @table @option
5773 @item m1
5774 Set 1st frame metadata key from which metadata values will be used to draw a graph.
5775
5776 @item fg1
5777 Set 1st foreground color expression.
5778
5779 @item m2
5780 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
5781
5782 @item fg2
5783 Set 2nd foreground color expression.
5784
5785 @item m3
5786 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
5787
5788 @item fg3
5789 Set 3rd foreground color expression.
5790
5791 @item m4
5792 Set 4th frame metadata key from which metadata values will be used to draw a graph.
5793
5794 @item fg4
5795 Set 4th foreground color expression.
5796
5797 @item min
5798 Set minimal value of metadata value.
5799
5800 @item max
5801 Set maximal value of metadata value.
5802
5803 @item bg
5804 Set graph background color. Default is white.
5805
5806 @item mode
5807 Set graph mode.
5808
5809 Available values for mode is:
5810 @table @samp
5811 @item bar
5812 @item dot
5813 @item line
5814 @end table
5815
5816 Default is @code{line}.
5817
5818 @item slide
5819 Set slide mode.
5820
5821 Available values for slide is:
5822 @table @samp
5823 @item frame
5824 Draw new frame when right border is reached.
5825
5826 @item replace
5827 Replace old columns with new ones.
5828
5829 @item scroll
5830 Scroll from right to left.
5831
5832 @item rscroll
5833 Scroll from left to right.
5834 @end table
5835
5836 Default is @code{frame}.
5837
5838 @item size
5839 Set size of graph video. For the syntax of this option, check the
5840 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
5841 The default value is @code{900x256}.
5842
5843 The foreground color expressions can use the following variables:
5844 @table @option
5845 @item MIN
5846 Minimal value of metadata value.
5847
5848 @item MAX
5849 Maximal value of metadata value.
5850
5851 @item VAL
5852 Current metadata key value.
5853 @end table
5854
5855 The color is defined as 0xAABBGGRR.
5856 @end table
5857
5858 Example using metadata from @ref{signalstats} filter:
5859 @example
5860 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
5861 @end example
5862
5863 Example using metadata from @ref{ebur128} filter:
5864 @example
5865 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
5866 @end example
5867
5868 @section drawgrid
5869
5870 Draw a grid on the input image.
5871
5872 It accepts the following parameters:
5873
5874 @table @option
5875 @item x
5876 @item y
5877 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
5878
5879 @item width, w
5880 @item height, h
5881 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
5882 input width and height, respectively, minus @code{thickness}, so image gets
5883 framed. Default to 0.
5884
5885 @item color, c
5886 Specify the color of the grid. For the general syntax of this option,
5887 check the "Color" section in the ffmpeg-utils manual. If the special
5888 value @code{invert} is used, the grid color is the same as the
5889 video with inverted luma.
5890
5891 @item thickness, t
5892 The expression which sets the thickness of the grid line. Default value is @code{1}.
5893
5894 See below for the list of accepted constants.
5895 @end table
5896
5897 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
5898 following constants:
5899
5900 @table @option
5901 @item dar
5902 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
5903
5904 @item hsub
5905 @item vsub
5906 horizontal and vertical chroma subsample values. For example for the
5907 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
5908
5909 @item in_h, ih
5910 @item in_w, iw
5911 The input grid cell width and height.
5912
5913 @item sar
5914 The input sample aspect ratio.
5915
5916 @item x
5917 @item y
5918 The x and y coordinates of some point of grid intersection (meant to configure offset).
5919
5920 @item w
5921 @item h
5922 The width and height of the drawn cell.
5923
5924 @item t
5925 The thickness of the drawn cell.
5926
5927 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
5928 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
5929
5930 @end table
5931
5932 @subsection Examples
5933
5934 @itemize
5935 @item
5936 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
5937 @example
5938 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
5939 @end example
5940
5941 @item
5942 Draw a white 3x3 grid with an opacity of 50%:
5943 @example
5944 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
5945 @end example
5946 @end itemize
5947
5948 @anchor{drawtext}
5949 @section drawtext
5950
5951 Draw a text string or text from a specified file on top of a video, using the
5952 libfreetype library.
5953
5954 To enable compilation of this filter, you need to configure FFmpeg with
5955 @code{--enable-libfreetype}.
5956 To enable default font fallback and the @var{font} option you need to
5957 configure FFmpeg with @code{--enable-libfontconfig}.
5958 To enable the @var{text_shaping} option, you need to configure FFmpeg with
5959 @code{--enable-libfribidi}.
5960
5961 @subsection Syntax
5962
5963 It accepts the following parameters:
5964
5965 @table @option
5966
5967 @item box
5968 Used to draw a box around text using the background color.
5969 The value must be either 1 (enable) or 0 (disable).
5970 The default value of @var{box} is 0.
5971
5972 @item boxborderw
5973 Set the width of the border to be drawn around the box using @var{boxcolor}.
5974 The default value of @var{boxborderw} is 0.
5975
5976 @item boxcolor
5977 The color to be used for drawing box around text. For the syntax of this
5978 option, check the "Color" section in the ffmpeg-utils manual.
5979
5980 The default value of @var{boxcolor} is "white".
5981
5982 @item borderw
5983 Set the width of the border to be drawn around the text using @var{bordercolor}.
5984 The default value of @var{borderw} is 0.
5985
5986 @item bordercolor
5987 Set the color to be used for drawing border around text. For the syntax of this
5988 option, check the "Color" section in the ffmpeg-utils manual.
5989
5990 The default value of @var{bordercolor} is "black".
5991
5992 @item expansion
5993 Select how the @var{text} is expanded. Can be either @code{none},
5994 @code{strftime} (deprecated) or
5995 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
5996 below for details.
5997
5998 @item fix_bounds
5999 If true, check and fix text coords to avoid clipping.
6000
6001 @item fontcolor
6002 The color to be used for drawing fonts. For the syntax of this option, check
6003 the "Color" section in the ffmpeg-utils manual.
6004
6005 The default value of @var{fontcolor} is "black".
6006
6007 @item fontcolor_expr
6008 String which is expanded the same way as @var{text} to obtain dynamic
6009 @var{fontcolor} value. By default this option has empty value and is not
6010 processed. When this option is set, it overrides @var{fontcolor} option.
6011
6012 @item font
6013 The font family to be used for drawing text. By default Sans.
6014
6015 @item fontfile
6016 The font file to be used for drawing text. The path must be included.
6017 This parameter is mandatory if the fontconfig support is disabled.
6018
6019 @item draw
6020 This option does not exist, please see the timeline system
6021
6022 @item alpha
6023 Draw the text applying alpha blending. The value can
6024 be either a number between 0.0 and 1.0
6025 The expression accepts the same variables @var{x, y} do.
6026 The default value is 1.
6027 Please see fontcolor_expr
6028
6029 @item fontsize
6030 The font size to be used for drawing text.
6031 The default value of @var{fontsize} is 16.
6032
6033 @item text_shaping
6034 If set to 1, attempt to shape the text (for example, reverse the order of
6035 right-to-left text and join Arabic characters) before drawing it.
6036 Otherwise, just draw the text exactly as given.
6037 By default 1 (if supported).
6038
6039 @item ft_load_flags
6040 The flags to be used for loading the fonts.
6041
6042 The flags map the corresponding flags supported by libfreetype, and are
6043 a combination of the following values:
6044 @table @var
6045 @item default
6046 @item no_scale
6047 @item no_hinting
6048 @item render
6049 @item no_bitmap
6050 @item vertical_layout
6051 @item force_autohint
6052 @item crop_bitmap
6053 @item pedantic
6054 @item ignore_global_advance_width
6055 @item no_recurse
6056 @item ignore_transform
6057 @item monochrome
6058 @item linear_design
6059 @item no_autohint
6060 @end table
6061
6062 Default value is "default".
6063
6064 For more information consult the documentation for the FT_LOAD_*
6065 libfreetype flags.
6066
6067 @item shadowcolor
6068 The color to be used for drawing a shadow behind the drawn text. For the
6069 syntax of this option, check the "Color" section in the ffmpeg-utils manual.
6070
6071 The default value of @var{shadowcolor} is "black".
6072
6073 @item shadowx
6074 @item shadowy
6075 The x and y offsets for the text shadow position with respect to the
6076 position of the text. They can be either positive or negative
6077 values. The default value for both is "0".
6078
6079 @item start_number
6080 The starting frame number for the n/frame_num variable. The default value
6081 is "0".
6082
6083 @item tabsize
6084 The size in number of spaces to use for rendering the tab.
6085 Default value is 4.
6086
6087 @item timecode
6088 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
6089 format. It can be used with or without text parameter. @var{timecode_rate}
6090 option must be specified.
6091
6092 @item timecode_rate, rate, r
6093 Set the timecode frame rate (timecode only).
6094
6095 @item text
6096 The text string to be drawn. The text must be a sequence of UTF-8
6097 encoded characters.
6098 This parameter is mandatory if no file is specified with the parameter
6099 @var{textfile}.
6100
6101 @item textfile
6102 A text file containing text to be drawn. The text must be a sequence
6103 of UTF-8 encoded characters.
6104
6105 This parameter is mandatory if no text string is specified with the
6106 parameter @var{text}.
6107
6108 If both @var{text} and @var{textfile} are specified, an error is thrown.
6109
6110 @item reload
6111 If set to 1, the @var{textfile} will be reloaded before each frame.
6112 Be sure to update it atomically, or it may be read partially, or even fail.
6113
6114 @item x
6115 @item y
6116 The expressions which specify the offsets where text will be drawn
6117 within the video frame. They are relative to the top/left border of the
6118 output image.
6119
6120 The default value of @var{x} and @var{y} is "0".
6121
6122 See below for the list of accepted constants and functions.
6123 @end table
6124
6125 The parameters for @var{x} and @var{y} are expressions containing the
6126 following constants and functions:
6127
6128 @table @option
6129 @item dar
6130 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
6131
6132 @item hsub
6133 @item vsub
6134 horizontal and vertical chroma subsample values. For example for the
6135 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6136
6137 @item line_h, lh
6138 the height of each text line
6139
6140 @item main_h, h, H
6141 the input height
6142
6143 @item main_w, w, W
6144 the input width
6145
6146 @item max_glyph_a, ascent
6147 the maximum distance from the baseline to the highest/upper grid
6148 coordinate used to place a glyph outline point, for all the rendered
6149 glyphs.
6150 It is a positive value, due to the grid's orientation with the Y axis
6151 upwards.
6152
6153 @item max_glyph_d, descent
6154 the maximum distance from the baseline to the lowest grid coordinate
6155 used to place a glyph outline point, for all the rendered glyphs.
6156 This is a negative value, due to the grid's orientation, with the Y axis
6157 upwards.
6158
6159 @item max_glyph_h
6160 maximum glyph height, that is the maximum height for all the glyphs
6161 contained in the rendered text, it is equivalent to @var{ascent} -
6162 @var{descent}.
6163
6164 @item max_glyph_w
6165 maximum glyph width, that is the maximum width for all the glyphs
6166 contained in the rendered text
6167
6168 @item n
6169 the number of input frame, starting from 0
6170
6171 @item rand(min, max)
6172 return a random number included between @var{min} and @var{max}
6173
6174 @item sar
6175 The input sample aspect ratio.
6176
6177 @item t
6178 timestamp expressed in seconds, NAN if the input timestamp is unknown
6179
6180 @item text_h, th
6181 the height of the rendered text
6182
6183 @item text_w, tw
6184 the width of the rendered text
6185
6186 @item x
6187 @item y
6188 the x and y offset coordinates where the text is drawn.
6189
6190 These parameters allow the @var{x} and @var{y} expressions to refer
6191 each other, so you can for example specify @code{y=x/dar}.
6192 @end table
6193
6194 @anchor{drawtext_expansion}
6195 @subsection Text expansion
6196
6197 If @option{expansion} is set to @code{strftime},
6198 the filter recognizes strftime() sequences in the provided text and
6199 expands them accordingly. Check the documentation of strftime(). This
6200 feature is deprecated.
6201
6202 If @option{expansion} is set to @code{none}, the text is printed verbatim.
6203
6204 If @option{expansion} is set to @code{normal} (which is the default),
6205 the following expansion mechanism is used.
6206
6207 The backslash character @samp{\}, followed by any character, always expands to
6208 the second character.
6209
6210 Sequence of the form @code{%@{...@}} are expanded. The text between the
6211 braces is a function name, possibly followed by arguments separated by ':'.
6212 If the arguments contain special characters or delimiters (':' or '@}'),
6213 they should be escaped.
6214
6215 Note that they probably must also be escaped as the value for the
6216 @option{text} option in the filter argument string and as the filter
6217 argument in the filtergraph description, and possibly also for the shell,
6218 that makes up to four levels of escaping; using a text file avoids these
6219 problems.
6220
6221 The following functions are available:
6222
6223 @table @command
6224
6225 @item expr, e
6226 The expression evaluation result.
6227
6228 It must take one argument specifying the expression to be evaluated,
6229 which accepts the same constants and functions as the @var{x} and
6230 @var{y} values. Note that not all constants should be used, for
6231 example the text size is not known when evaluating the expression, so
6232 the constants @var{text_w} and @var{text_h} will have an undefined
6233 value.
6234
6235 @item expr_int_format, eif
6236 Evaluate the expression's value and output as formatted integer.
6237
6238 The first argument is the expression to be evaluated, just as for the @var{expr} function.
6239 The second argument specifies the output format. Allowed values are @samp{x},
6240 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
6241 @code{printf} function.
6242 The third parameter is optional and sets the number of positions taken by the output.
6243 It can be used to add padding with zeros from the left.
6244
6245 @item gmtime
6246 The time at which the filter is running, expressed in UTC.
6247 It can accept an argument: a strftime() format string.
6248
6249 @item localtime
6250 The time at which the filter is running, expressed in the local time zone.
6251 It can accept an argument: a strftime() format string.
6252
6253 @item metadata
6254 Frame metadata. It must take one argument specifying metadata key.
6255
6256 @item n, frame_num
6257 The frame number, starting from 0.
6258
6259 @item pict_type
6260 A 1 character description of the current picture type.
6261
6262 @item pts
6263 The timestamp of the current frame.
6264 It can take up to three arguments.
6265
6266 The first argument is the format of the timestamp; it defaults to @code{flt}
6267 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
6268 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
6269 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
6270 @code{localtime} stands for the timestamp of the frame formatted as
6271 local time zone time.
6272
6273 The second argument is an offset added to the timestamp.
6274
6275 If the format is set to @code{localtime} or @code{gmtime},
6276 a third argument may be supplied: a strftime() format string.
6277 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
6278 @end table
6279
6280 @subsection Examples
6281
6282 @itemize
6283 @item
6284 Draw "Test Text" with font FreeSerif, using the default values for the
6285 optional parameters.
6286
6287 @example
6288 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
6289 @end example
6290
6291 @item
6292 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
6293 and y=50 (counting from the top-left corner of the screen), text is
6294 yellow with a red box around it. Both the text and the box have an
6295 opacity of 20%.
6296
6297 @example
6298 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
6299           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
6300 @end example
6301
6302 Note that the double quotes are not necessary if spaces are not used
6303 within the parameter list.
6304
6305 @item
6306 Show the text at the center of the video frame:
6307 @example
6308 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
6309 @end example
6310
6311 @item
6312 Show a text line sliding from right to left in the last row of the video
6313 frame. The file @file{LONG_LINE} is assumed to contain a single line
6314 with no newlines.
6315 @example
6316 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
6317 @end example
6318
6319 @item
6320 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
6321 @example
6322 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
6323 @end example
6324
6325 @item
6326 Draw a single green letter "g", at the center of the input video.
6327 The glyph baseline is placed at half screen height.
6328 @example
6329 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
6330 @end example
6331
6332 @item
6333 Show text for 1 second every 3 seconds:
6334 @example
6335 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
6336 @end example
6337
6338 @item
6339 Use fontconfig to set the font. Note that the colons need to be escaped.
6340 @example
6341 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
6342 @end example
6343
6344 @item
6345 Print the date of a real-time encoding (see strftime(3)):
6346 @example
6347 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
6348 @end example
6349
6350 @item
6351 Show text fading in and out (appearing/disappearing):
6352 @example
6353 #!/bin/sh
6354 DS=1.0 # display start
6355 DE=10.0 # display end
6356 FID=1.5 # fade in duration
6357 FOD=5 # fade out duration
6358 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 @}"
6359 @end example
6360
6361 @end itemize
6362
6363 For more information about libfreetype, check:
6364 @url{http://www.freetype.org/}.
6365
6366 For more information about fontconfig, check:
6367 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
6368
6369 For more information about libfribidi, check:
6370 @url{http://fribidi.org/}.
6371
6372 @section edgedetect
6373
6374 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
6375
6376 The filter accepts the following options:
6377
6378 @table @option
6379 @item low
6380 @item high
6381 Set low and high threshold values used by the Canny thresholding
6382 algorithm.
6383
6384 The high threshold selects the "strong" edge pixels, which are then
6385 connected through 8-connectivity with the "weak" edge pixels selected
6386 by the low threshold.
6387
6388 @var{low} and @var{high} threshold values must be chosen in the range
6389 [0,1], and @var{low} should be lesser or equal to @var{high}.
6390
6391 Default value for @var{low} is @code{20/255}, and default value for @var{high}
6392 is @code{50/255}.
6393
6394 @item mode
6395 Define the drawing mode.
6396
6397 @table @samp
6398 @item wires
6399 Draw white/gray wires on black background.
6400
6401 @item colormix
6402 Mix the colors to create a paint/cartoon effect.
6403 @end table
6404
6405 Default value is @var{wires}.
6406 @end table
6407
6408 @subsection Examples
6409
6410 @itemize
6411 @item
6412 Standard edge detection with custom values for the hysteresis thresholding:
6413 @example
6414 edgedetect=low=0.1:high=0.4
6415 @end example
6416
6417 @item
6418 Painting effect without thresholding:
6419 @example
6420 edgedetect=mode=colormix:high=0
6421 @end example
6422 @end itemize
6423
6424 @section eq
6425 Set brightness, contrast, saturation and approximate gamma adjustment.
6426
6427 The filter accepts the following options:
6428
6429 @table @option
6430 @item contrast
6431 Set the contrast expression. The value must be a float value in range
6432 @code{-2.0} to @code{2.0}. The default value is "1".
6433
6434 @item brightness
6435 Set the brightness expression. The value must be a float value in
6436 range @code{-1.0} to @code{1.0}. The default value is "0".
6437
6438 @item saturation
6439 Set the saturation expression. The value must be a float in
6440 range @code{0.0} to @code{3.0}. The default value is "1".
6441
6442 @item gamma
6443 Set the gamma expression. The value must be a float in range
6444 @code{0.1} to @code{10.0}.  The default value is "1".
6445
6446 @item gamma_r
6447 Set the gamma expression for red. The value must be a float in
6448 range @code{0.1} to @code{10.0}. The default value is "1".
6449
6450 @item gamma_g
6451 Set the gamma expression for green. The value must be a float in range
6452 @code{0.1} to @code{10.0}. The default value is "1".
6453
6454 @item gamma_b
6455 Set the gamma expression for blue. The value must be a float in range
6456 @code{0.1} to @code{10.0}. The default value is "1".
6457
6458 @item gamma_weight
6459 Set the gamma weight expression. It can be used to reduce the effect
6460 of a high gamma value on bright image areas, e.g. keep them from
6461 getting overamplified and just plain white. The value must be a float
6462 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
6463 gamma correction all the way down while @code{1.0} leaves it at its
6464 full strength. Default is "1".
6465
6466 @item eval
6467 Set when the expressions for brightness, contrast, saturation and
6468 gamma expressions are evaluated.
6469
6470 It accepts the following values:
6471 @table @samp
6472 @item init
6473 only evaluate expressions once during the filter initialization or
6474 when a command is processed
6475
6476 @item frame
6477 evaluate expressions for each incoming frame
6478 @end table
6479
6480 Default value is @samp{init}.
6481 @end table
6482
6483 The expressions accept the following parameters:
6484 @table @option
6485 @item n
6486 frame count of the input frame starting from 0
6487
6488 @item pos
6489 byte position of the corresponding packet in the input file, NAN if
6490 unspecified
6491
6492 @item r
6493 frame rate of the input video, NAN if the input frame rate is unknown
6494
6495 @item t
6496 timestamp expressed in seconds, NAN if the input timestamp is unknown
6497 @end table
6498
6499 @subsection Commands
6500 The filter supports the following commands:
6501
6502 @table @option
6503 @item contrast
6504 Set the contrast expression.
6505
6506 @item brightness
6507 Set the brightness expression.
6508
6509 @item saturation
6510 Set the saturation expression.
6511
6512 @item gamma
6513 Set the gamma expression.
6514
6515 @item gamma_r
6516 Set the gamma_r expression.
6517
6518 @item gamma_g
6519 Set gamma_g expression.
6520
6521 @item gamma_b
6522 Set gamma_b expression.
6523
6524 @item gamma_weight
6525 Set gamma_weight expression.
6526
6527 The command accepts the same syntax of the corresponding option.
6528
6529 If the specified expression is not valid, it is kept at its current
6530 value.
6531
6532 @end table
6533
6534 @section erosion
6535
6536 Apply erosion effect to the video.
6537
6538 This filter replaces the pixel by the local(3x3) minimum.
6539
6540 It accepts the following options:
6541
6542 @table @option
6543 @item threshold0
6544 @item threshold1
6545 @item threshold2
6546 @item threshold3
6547 Limit the maximum change for each plane, default is 65535.
6548 If 0, plane will remain unchanged.
6549
6550 @item coordinates
6551 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
6552 pixels are used.
6553
6554 Flags to local 3x3 coordinates maps like this:
6555
6556     1 2 3
6557     4   5
6558     6 7 8
6559 @end table
6560
6561 @section extractplanes
6562
6563 Extract color channel components from input video stream into
6564 separate grayscale video streams.
6565
6566 The filter accepts the following option:
6567
6568 @table @option
6569 @item planes
6570 Set plane(s) to extract.
6571
6572 Available values for planes are:
6573 @table @samp
6574 @item y
6575 @item u
6576 @item v
6577 @item a
6578 @item r
6579 @item g
6580 @item b
6581 @end table
6582
6583 Choosing planes not available in the input will result in an error.
6584 That means you cannot select @code{r}, @code{g}, @code{b} planes
6585 with @code{y}, @code{u}, @code{v} planes at same time.
6586 @end table
6587
6588 @subsection Examples
6589
6590 @itemize
6591 @item
6592 Extract luma, u and v color channel component from input video frame
6593 into 3 grayscale outputs:
6594 @example
6595 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
6596 @end example
6597 @end itemize
6598
6599 @section elbg
6600
6601 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
6602
6603 For each input image, the filter will compute the optimal mapping from
6604 the input to the output given the codebook length, that is the number
6605 of distinct output colors.
6606
6607 This filter accepts the following options.
6608
6609 @table @option
6610 @item codebook_length, l
6611 Set codebook length. The value must be a positive integer, and
6612 represents the number of distinct output colors. Default value is 256.
6613
6614 @item nb_steps, n
6615 Set the maximum number of iterations to apply for computing the optimal
6616 mapping. The higher the value the better the result and the higher the
6617 computation time. Default value is 1.
6618
6619 @item seed, s
6620 Set a random seed, must be an integer included between 0 and
6621 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
6622 will try to use a good random seed on a best effort basis.
6623
6624 @item pal8
6625 Set pal8 output pixel format. This option does not work with codebook
6626 length greater than 256.
6627 @end table
6628
6629 @section fade
6630
6631 Apply a fade-in/out effect to the input video.
6632
6633 It accepts the following parameters:
6634
6635 @table @option
6636 @item type, t
6637 The effect type can be either "in" for a fade-in, or "out" for a fade-out
6638 effect.
6639 Default is @code{in}.
6640
6641 @item start_frame, s
6642 Specify the number of the frame to start applying the fade
6643 effect at. Default is 0.
6644
6645 @item nb_frames, n
6646 The number of frames that the fade effect lasts. At the end of the
6647 fade-in effect, the output video will have the same intensity as the input video.
6648 At the end of the fade-out transition, the output video will be filled with the
6649 selected @option{color}.
6650 Default is 25.
6651
6652 @item alpha
6653 If set to 1, fade only alpha channel, if one exists on the input.
6654 Default value is 0.
6655
6656 @item start_time, st
6657 Specify the timestamp (in seconds) of the frame to start to apply the fade
6658 effect. If both start_frame and start_time are specified, the fade will start at
6659 whichever comes last.  Default is 0.
6660
6661 @item duration, d
6662 The number of seconds for which the fade effect has to last. At the end of the
6663 fade-in effect the output video will have the same intensity as the input video,
6664 at the end of the fade-out transition the output video will be filled with the
6665 selected @option{color}.
6666 If both duration and nb_frames are specified, duration is used. Default is 0
6667 (nb_frames is used by default).
6668
6669 @item color, c
6670 Specify the color of the fade. Default is "black".
6671 @end table
6672
6673 @subsection Examples
6674
6675 @itemize
6676 @item
6677 Fade in the first 30 frames of video:
6678 @example
6679 fade=in:0:30
6680 @end example
6681
6682 The command above is equivalent to:
6683 @example
6684 fade=t=in:s=0:n=30
6685 @end example
6686
6687 @item
6688 Fade out the last 45 frames of a 200-frame video:
6689 @example
6690 fade=out:155:45
6691 fade=type=out:start_frame=155:nb_frames=45
6692 @end example
6693
6694 @item
6695 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
6696 @example
6697 fade=in:0:25, fade=out:975:25
6698 @end example
6699
6700 @item
6701 Make the first 5 frames yellow, then fade in from frame 5-24:
6702 @example
6703 fade=in:5:20:color=yellow
6704 @end example
6705
6706 @item
6707 Fade in alpha over first 25 frames of video:
6708 @example
6709 fade=in:0:25:alpha=1
6710 @end example
6711
6712 @item
6713 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
6714 @example
6715 fade=t=in:st=5.5:d=0.5
6716 @end example
6717
6718 @end itemize
6719
6720 @section fftfilt
6721 Apply arbitrary expressions to samples in frequency domain
6722
6723 @table @option
6724 @item dc_Y
6725 Adjust the dc value (gain) of the luma plane of the image. The filter
6726 accepts an integer value in range @code{0} to @code{1000}. The default
6727 value is set to @code{0}.
6728
6729 @item dc_U
6730 Adjust the dc value (gain) of the 1st chroma plane of the image. The
6731 filter accepts an integer value in range @code{0} to @code{1000}. The
6732 default value is set to @code{0}.
6733
6734 @item dc_V
6735 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
6736 filter accepts an integer value in range @code{0} to @code{1000}. The
6737 default value is set to @code{0}.
6738
6739 @item weight_Y
6740 Set the frequency domain weight expression for the luma plane.
6741
6742 @item weight_U
6743 Set the frequency domain weight expression for the 1st chroma plane.
6744
6745 @item weight_V
6746 Set the frequency domain weight expression for the 2nd chroma plane.
6747
6748 The filter accepts the following variables:
6749 @item X
6750 @item Y
6751 The coordinates of the current sample.
6752
6753 @item W
6754 @item H
6755 The width and height of the image.
6756 @end table
6757
6758 @subsection Examples
6759
6760 @itemize
6761 @item
6762 High-pass:
6763 @example
6764 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
6765 @end example
6766
6767 @item
6768 Low-pass:
6769 @example
6770 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
6771 @end example
6772
6773 @item
6774 Sharpen:
6775 @example
6776 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
6777 @end example
6778
6779 @item
6780 Blur:
6781 @example
6782 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
6783 @end example
6784
6785 @end itemize
6786
6787 @section field
6788
6789 Extract a single field from an interlaced image using stride
6790 arithmetic to avoid wasting CPU time. The output frames are marked as
6791 non-interlaced.
6792
6793 The filter accepts the following options:
6794
6795 @table @option
6796 @item type
6797 Specify whether to extract the top (if the value is @code{0} or
6798 @code{top}) or the bottom field (if the value is @code{1} or
6799 @code{bottom}).
6800 @end table
6801
6802 @section fieldhint
6803
6804 Create new frames by copying the top and bottom fields from surrounding frames
6805 supplied as numbers by the hint file.
6806
6807 @table @option
6808 @item hint
6809 Set file containing hints: absolute/relative frame numbers.
6810
6811 There must be one line for each frame in a clip. Each line must contain two
6812 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
6813 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
6814 is current frame number for @code{absolute} mode or out of [-1, 1] range
6815 for @code{relative} mode. First number tells from which frame to pick up top
6816 field and second number tells from which frame to pick up bottom field.
6817
6818 If optionally followed by @code{+} output frame will be marked as interlaced,
6819 else if followed by @code{-} output frame will be marked as progressive, else
6820 it will be marked same as input frame.
6821 If line starts with @code{#} or @code{;} that line is skipped.
6822
6823 @item mode
6824 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
6825 @end table
6826
6827 Example of first several lines of @code{hint} file for @code{relative} mode:
6828 @example
6829 0,0 - # first frame
6830 1,0 - # second frame, use third's frame top field and second's frame bottom field
6831 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
6832 1,0 -
6833 0,0 -
6834 0,0 -
6835 1,0 -
6836 1,0 -
6837 1,0 -
6838 0,0 -
6839 0,0 -
6840 1,0 -
6841 1,0 -
6842 1,0 -
6843 0,0 -
6844 @end example
6845
6846 @section fieldmatch
6847
6848 Field matching filter for inverse telecine. It is meant to reconstruct the
6849 progressive frames from a telecined stream. The filter does not drop duplicated
6850 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
6851 followed by a decimation filter such as @ref{decimate} in the filtergraph.
6852
6853 The separation of the field matching and the decimation is notably motivated by
6854 the possibility of inserting a de-interlacing filter fallback between the two.
6855 If the source has mixed telecined and real interlaced content,
6856 @code{fieldmatch} will not be able to match fields for the interlaced parts.
6857 But these remaining combed frames will be marked as interlaced, and thus can be
6858 de-interlaced by a later filter such as @ref{yadif} before decimation.
6859
6860 In addition to the various configuration options, @code{fieldmatch} can take an
6861 optional second stream, activated through the @option{ppsrc} option. If
6862 enabled, the frames reconstruction will be based on the fields and frames from
6863 this second stream. This allows the first input to be pre-processed in order to
6864 help the various algorithms of the filter, while keeping the output lossless
6865 (assuming the fields are matched properly). Typically, a field-aware denoiser,
6866 or brightness/contrast adjustments can help.
6867
6868 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
6869 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
6870 which @code{fieldmatch} is based on. While the semantic and usage are very
6871 close, some behaviour and options names can differ.
6872
6873 The @ref{decimate} filter currently only works for constant frame rate input.
6874 If your input has mixed telecined (30fps) and progressive content with a lower
6875 framerate like 24fps use the following filterchain to produce the necessary cfr
6876 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
6877
6878 The filter accepts the following options:
6879
6880 @table @option
6881 @item order
6882 Specify the assumed field order of the input stream. Available values are:
6883
6884 @table @samp
6885 @item auto
6886 Auto detect parity (use FFmpeg's internal parity value).
6887 @item bff
6888 Assume bottom field first.
6889 @item tff
6890 Assume top field first.
6891 @end table
6892
6893 Note that it is sometimes recommended not to trust the parity announced by the
6894 stream.
6895
6896 Default value is @var{auto}.
6897
6898 @item mode
6899 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
6900 sense that it won't risk creating jerkiness due to duplicate frames when
6901 possible, but if there are bad edits or blended fields it will end up
6902 outputting combed frames when a good match might actually exist. On the other
6903 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
6904 but will almost always find a good frame if there is one. The other values are
6905 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
6906 jerkiness and creating duplicate frames versus finding good matches in sections
6907 with bad edits, orphaned fields, blended fields, etc.
6908
6909 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
6910
6911 Available values are:
6912
6913 @table @samp
6914 @item pc
6915 2-way matching (p/c)
6916 @item pc_n
6917 2-way matching, and trying 3rd match if still combed (p/c + n)
6918 @item pc_u
6919 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
6920 @item pc_n_ub
6921 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
6922 still combed (p/c + n + u/b)
6923 @item pcn
6924 3-way matching (p/c/n)
6925 @item pcn_ub
6926 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
6927 detected as combed (p/c/n + u/b)
6928 @end table
6929
6930 The parenthesis at the end indicate the matches that would be used for that
6931 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
6932 @var{top}).
6933
6934 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
6935 the slowest.
6936
6937 Default value is @var{pc_n}.
6938
6939 @item ppsrc
6940 Mark the main input stream as a pre-processed input, and enable the secondary
6941 input stream as the clean source to pick the fields from. See the filter
6942 introduction for more details. It is similar to the @option{clip2} feature from
6943 VFM/TFM.
6944
6945 Default value is @code{0} (disabled).
6946
6947 @item field
6948 Set the field to match from. It is recommended to set this to the same value as
6949 @option{order} unless you experience matching failures with that setting. In
6950 certain circumstances changing the field that is used to match from can have a
6951 large impact on matching performance. Available values are:
6952
6953 @table @samp
6954 @item auto
6955 Automatic (same value as @option{order}).
6956 @item bottom
6957 Match from the bottom field.
6958 @item top
6959 Match from the top field.
6960 @end table
6961
6962 Default value is @var{auto}.
6963
6964 @item mchroma
6965 Set whether or not chroma is included during the match comparisons. In most
6966 cases it is recommended to leave this enabled. You should set this to @code{0}
6967 only if your clip has bad chroma problems such as heavy rainbowing or other
6968 artifacts. Setting this to @code{0} could also be used to speed things up at
6969 the cost of some accuracy.
6970
6971 Default value is @code{1}.
6972
6973 @item y0
6974 @item y1
6975 These define an exclusion band which excludes the lines between @option{y0} and
6976 @option{y1} from being included in the field matching decision. An exclusion
6977 band can be used to ignore subtitles, a logo, or other things that may
6978 interfere with the matching. @option{y0} sets the starting scan line and
6979 @option{y1} sets the ending line; all lines in between @option{y0} and
6980 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
6981 @option{y0} and @option{y1} to the same value will disable the feature.
6982 @option{y0} and @option{y1} defaults to @code{0}.
6983
6984 @item scthresh
6985 Set the scene change detection threshold as a percentage of maximum change on
6986 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
6987 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
6988 @option{scthresh} is @code{[0.0, 100.0]}.
6989
6990 Default value is @code{12.0}.
6991
6992 @item combmatch
6993 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
6994 account the combed scores of matches when deciding what match to use as the
6995 final match. Available values are:
6996
6997 @table @samp
6998 @item none
6999 No final matching based on combed scores.
7000 @item sc
7001 Combed scores are only used when a scene change is detected.
7002 @item full
7003 Use combed scores all the time.
7004 @end table
7005
7006 Default is @var{sc}.
7007
7008 @item combdbg
7009 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
7010 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
7011 Available values are:
7012
7013 @table @samp
7014 @item none
7015 No forced calculation.
7016 @item pcn
7017 Force p/c/n calculations.
7018 @item pcnub
7019 Force p/c/n/u/b calculations.
7020 @end table
7021
7022 Default value is @var{none}.
7023
7024 @item cthresh
7025 This is the area combing threshold used for combed frame detection. This
7026 essentially controls how "strong" or "visible" combing must be to be detected.
7027 Larger values mean combing must be more visible and smaller values mean combing
7028 can be less visible or strong and still be detected. Valid settings are from
7029 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
7030 be detected as combed). This is basically a pixel difference value. A good
7031 range is @code{[8, 12]}.
7032
7033 Default value is @code{9}.
7034
7035 @item chroma
7036 Sets whether or not chroma is considered in the combed frame decision.  Only
7037 disable this if your source has chroma problems (rainbowing, etc.) that are
7038 causing problems for the combed frame detection with chroma enabled. Actually,
7039 using @option{chroma}=@var{0} is usually more reliable, except for the case
7040 where there is chroma only combing in the source.
7041
7042 Default value is @code{0}.
7043
7044 @item blockx
7045 @item blocky
7046 Respectively set the x-axis and y-axis size of the window used during combed
7047 frame detection. This has to do with the size of the area in which
7048 @option{combpel} pixels are required to be detected as combed for a frame to be
7049 declared combed. See the @option{combpel} parameter description for more info.
7050 Possible values are any number that is a power of 2 starting at 4 and going up
7051 to 512.
7052
7053 Default value is @code{16}.
7054
7055 @item combpel
7056 The number of combed pixels inside any of the @option{blocky} by
7057 @option{blockx} size blocks on the frame for the frame to be detected as
7058 combed. While @option{cthresh} controls how "visible" the combing must be, this
7059 setting controls "how much" combing there must be in any localized area (a
7060 window defined by the @option{blockx} and @option{blocky} settings) on the
7061 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
7062 which point no frames will ever be detected as combed). This setting is known
7063 as @option{MI} in TFM/VFM vocabulary.
7064
7065 Default value is @code{80}.
7066 @end table
7067
7068 @anchor{p/c/n/u/b meaning}
7069 @subsection p/c/n/u/b meaning
7070
7071 @subsubsection p/c/n
7072
7073 We assume the following telecined stream:
7074
7075 @example
7076 Top fields:     1 2 2 3 4
7077 Bottom fields:  1 2 3 4 4
7078 @end example
7079
7080 The numbers correspond to the progressive frame the fields relate to. Here, the
7081 first two frames are progressive, the 3rd and 4th are combed, and so on.
7082
7083 When @code{fieldmatch} is configured to run a matching from bottom
7084 (@option{field}=@var{bottom}) this is how this input stream get transformed:
7085
7086 @example
7087 Input stream:
7088                 T     1 2 2 3 4
7089                 B     1 2 3 4 4   <-- matching reference
7090
7091 Matches:              c c n n c
7092
7093 Output stream:
7094                 T     1 2 3 4 4
7095                 B     1 2 3 4 4
7096 @end example
7097
7098 As a result of the field matching, we can see that some frames get duplicated.
7099 To perform a complete inverse telecine, you need to rely on a decimation filter
7100 after this operation. See for instance the @ref{decimate} filter.
7101
7102 The same operation now matching from top fields (@option{field}=@var{top})
7103 looks like this:
7104
7105 @example
7106 Input stream:
7107                 T     1 2 2 3 4   <-- matching reference
7108                 B     1 2 3 4 4
7109
7110 Matches:              c c p p c
7111
7112 Output stream:
7113                 T     1 2 2 3 4
7114                 B     1 2 2 3 4
7115 @end example
7116
7117 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
7118 basically, they refer to the frame and field of the opposite parity:
7119
7120 @itemize
7121 @item @var{p} matches the field of the opposite parity in the previous frame
7122 @item @var{c} matches the field of the opposite parity in the current frame
7123 @item @var{n} matches the field of the opposite parity in the next frame
7124 @end itemize
7125
7126 @subsubsection u/b
7127
7128 The @var{u} and @var{b} matching are a bit special in the sense that they match
7129 from the opposite parity flag. In the following examples, we assume that we are
7130 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
7131 'x' is placed above and below each matched fields.
7132
7133 With bottom matching (@option{field}=@var{bottom}):
7134 @example
7135 Match:           c         p           n          b          u
7136
7137                  x       x               x        x          x
7138   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
7139   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
7140                  x         x           x        x              x
7141
7142 Output frames:
7143                  2          1          2          2          2
7144                  2          2          2          1          3
7145 @end example
7146
7147 With top matching (@option{field}=@var{top}):
7148 @example
7149 Match:           c         p           n          b          u
7150
7151                  x         x           x        x              x
7152   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
7153   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
7154                  x       x               x        x          x
7155
7156 Output frames:
7157                  2          2          2          1          2
7158                  2          1          3          2          2
7159 @end example
7160
7161 @subsection Examples
7162
7163 Simple IVTC of a top field first telecined stream:
7164 @example
7165 fieldmatch=order=tff:combmatch=none, decimate
7166 @end example
7167
7168 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
7169 @example
7170 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
7171 @end example
7172
7173 @section fieldorder
7174
7175 Transform the field order of the input video.
7176
7177 It accepts the following parameters:
7178
7179 @table @option
7180
7181 @item order
7182 The output field order. Valid values are @var{tff} for top field first or @var{bff}
7183 for bottom field first.
7184 @end table
7185
7186 The default value is @samp{tff}.
7187
7188 The transformation is done by shifting the picture content up or down
7189 by one line, and filling the remaining line with appropriate picture content.
7190 This method is consistent with most broadcast field order converters.
7191
7192 If the input video is not flagged as being interlaced, or it is already
7193 flagged as being of the required output field order, then this filter does
7194 not alter the incoming video.
7195
7196 It is very useful when converting to or from PAL DV material,
7197 which is bottom field first.
7198
7199 For example:
7200 @example
7201 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
7202 @end example
7203
7204 @section fifo, afifo
7205
7206 Buffer input images and send them when they are requested.
7207
7208 It is mainly useful when auto-inserted by the libavfilter
7209 framework.
7210
7211 It does not take parameters.
7212
7213 @section find_rect
7214
7215 Find a rectangular object
7216
7217 It accepts the following options:
7218
7219 @table @option
7220 @item object
7221 Filepath of the object image, needs to be in gray8.
7222
7223 @item threshold
7224 Detection threshold, default is 0.5.
7225
7226 @item mipmaps
7227 Number of mipmaps, default is 3.
7228
7229 @item xmin, ymin, xmax, ymax
7230 Specifies the rectangle in which to search.
7231 @end table
7232
7233 @subsection Examples
7234
7235 @itemize
7236 @item
7237 Generate a representative palette of a given video using @command{ffmpeg}:
7238 @example
7239 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
7240 @end example
7241 @end itemize
7242
7243 @section cover_rect
7244
7245 Cover a rectangular object
7246
7247 It accepts the following options:
7248
7249 @table @option
7250 @item cover
7251 Filepath of the optional cover image, needs to be in yuv420.
7252
7253 @item mode
7254 Set covering mode.
7255
7256 It accepts the following values:
7257 @table @samp
7258 @item cover
7259 cover it by the supplied image
7260 @item blur
7261 cover it by interpolating the surrounding pixels
7262 @end table
7263
7264 Default value is @var{blur}.
7265 @end table
7266
7267 @subsection Examples
7268
7269 @itemize
7270 @item
7271 Generate a representative palette of a given video using @command{ffmpeg}:
7272 @example
7273 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
7274 @end example
7275 @end itemize
7276
7277 @anchor{format}
7278 @section format
7279
7280 Convert the input video to one of the specified pixel formats.
7281 Libavfilter will try to pick one that is suitable as input to
7282 the next filter.
7283
7284 It accepts the following parameters:
7285 @table @option
7286
7287 @item pix_fmts
7288 A '|'-separated list of pixel format names, such as
7289 "pix_fmts=yuv420p|monow|rgb24".
7290
7291 @end table
7292
7293 @subsection Examples
7294
7295 @itemize
7296 @item
7297 Convert the input video to the @var{yuv420p} format
7298 @example
7299 format=pix_fmts=yuv420p
7300 @end example
7301
7302 Convert the input video to any of the formats in the list
7303 @example
7304 format=pix_fmts=yuv420p|yuv444p|yuv410p
7305 @end example
7306 @end itemize
7307
7308 @anchor{fps}
7309 @section fps
7310
7311 Convert the video to specified constant frame rate by duplicating or dropping
7312 frames as necessary.
7313
7314 It accepts the following parameters:
7315 @table @option
7316
7317 @item fps
7318 The desired output frame rate. The default is @code{25}.
7319
7320 @item round
7321 Rounding method.
7322
7323 Possible values are:
7324 @table @option
7325 @item zero
7326 zero round towards 0
7327 @item inf
7328 round away from 0
7329 @item down
7330 round towards -infinity
7331 @item up
7332 round towards +infinity
7333 @item near
7334 round to nearest
7335 @end table
7336 The default is @code{near}.
7337
7338 @item start_time
7339 Assume the first PTS should be the given value, in seconds. This allows for
7340 padding/trimming at the start of stream. By default, no assumption is made
7341 about the first frame's expected PTS, so no padding or trimming is done.
7342 For example, this could be set to 0 to pad the beginning with duplicates of
7343 the first frame if a video stream starts after the audio stream or to trim any
7344 frames with a negative PTS.
7345
7346 @end table
7347
7348 Alternatively, the options can be specified as a flat string:
7349 @var{fps}[:@var{round}].
7350
7351 See also the @ref{setpts} filter.
7352
7353 @subsection Examples
7354
7355 @itemize
7356 @item
7357 A typical usage in order to set the fps to 25:
7358 @example
7359 fps=fps=25
7360 @end example
7361
7362 @item
7363 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
7364 @example
7365 fps=fps=film:round=near
7366 @end example
7367 @end itemize
7368
7369 @section framepack
7370
7371 Pack two different video streams into a stereoscopic video, setting proper
7372 metadata on supported codecs. The two views should have the same size and
7373 framerate and processing will stop when the shorter video ends. Please note
7374 that you may conveniently adjust view properties with the @ref{scale} and
7375 @ref{fps} filters.
7376
7377 It accepts the following parameters:
7378 @table @option
7379
7380 @item format
7381 The desired packing format. Supported values are:
7382
7383 @table @option
7384
7385 @item sbs
7386 The views are next to each other (default).
7387
7388 @item tab
7389 The views are on top of each other.
7390
7391 @item lines
7392 The views are packed by line.
7393
7394 @item columns
7395 The views are packed by column.
7396
7397 @item frameseq
7398 The views are temporally interleaved.
7399
7400 @end table
7401
7402 @end table
7403
7404 Some examples:
7405
7406 @example
7407 # Convert left and right views into a frame-sequential video
7408 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
7409
7410 # Convert views into a side-by-side video with the same output resolution as the input
7411 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
7412 @end example
7413
7414 @section framerate
7415
7416 Change the frame rate by interpolating new video output frames from the source
7417 frames.
7418
7419 This filter is not designed to function correctly with interlaced media. If
7420 you wish to change the frame rate of interlaced media then you are required
7421 to deinterlace before this filter and re-interlace after this filter.
7422
7423 A description of the accepted options follows.
7424
7425 @table @option
7426 @item fps
7427 Specify the output frames per second. This option can also be specified
7428 as a value alone. The default is @code{50}.
7429
7430 @item interp_start
7431 Specify the start of a range where the output frame will be created as a
7432 linear interpolation of two frames. The range is [@code{0}-@code{255}],
7433 the default is @code{15}.
7434
7435 @item interp_end
7436 Specify the end of a range where the output frame will be created as a
7437 linear interpolation of two frames. The range is [@code{0}-@code{255}],
7438 the default is @code{240}.
7439
7440 @item scene
7441 Specify the level at which a scene change is detected as a value between
7442 0 and 100 to indicate a new scene; a low value reflects a low
7443 probability for the current frame to introduce a new scene, while a higher
7444 value means the current frame is more likely to be one.
7445 The default is @code{7}.
7446
7447 @item flags
7448 Specify flags influencing the filter process.
7449
7450 Available value for @var{flags} is:
7451
7452 @table @option
7453 @item scene_change_detect, scd
7454 Enable scene change detection using the value of the option @var{scene}.
7455 This flag is enabled by default.
7456 @end table
7457 @end table
7458
7459 @section framestep
7460
7461 Select one frame every N-th frame.
7462
7463 This filter accepts the following option:
7464 @table @option
7465 @item step
7466 Select frame after every @code{step} frames.
7467 Allowed values are positive integers higher than 0. Default value is @code{1}.
7468 @end table
7469
7470 @anchor{frei0r}
7471 @section frei0r
7472
7473 Apply a frei0r effect to the input video.
7474
7475 To enable the compilation of this filter, you need to install the frei0r
7476 header and configure FFmpeg with @code{--enable-frei0r}.
7477
7478 It accepts the following parameters:
7479
7480 @table @option
7481
7482 @item filter_name
7483 The name of the frei0r effect to load. If the environment variable
7484 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
7485 directories specified by the colon-separated list in @env{FREIOR_PATH}.
7486 Otherwise, the standard frei0r paths are searched, in this order:
7487 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
7488 @file{/usr/lib/frei0r-1/}.
7489
7490 @item filter_params
7491 A '|'-separated list of parameters to pass to the frei0r effect.
7492
7493 @end table
7494
7495 A frei0r effect parameter can be a boolean (its value is either
7496 "y" or "n"), a double, a color (specified as
7497 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
7498 numbers between 0.0 and 1.0, inclusive) or by a color description specified in the "Color"
7499 section in the ffmpeg-utils manual), a position (specified as @var{X}/@var{Y}, where
7500 @var{X} and @var{Y} are floating point numbers) and/or a string.
7501
7502 The number and types of parameters depend on the loaded effect. If an
7503 effect parameter is not specified, the default value is set.
7504
7505 @subsection Examples
7506
7507 @itemize
7508 @item
7509 Apply the distort0r effect, setting the first two double parameters:
7510 @example
7511 frei0r=filter_name=distort0r:filter_params=0.5|0.01
7512 @end example
7513
7514 @item
7515 Apply the colordistance effect, taking a color as the first parameter:
7516 @example
7517 frei0r=colordistance:0.2/0.3/0.4
7518 frei0r=colordistance:violet
7519 frei0r=colordistance:0x112233
7520 @end example
7521
7522 @item
7523 Apply the perspective effect, specifying the top left and top right image
7524 positions:
7525 @example
7526 frei0r=perspective:0.2/0.2|0.8/0.2
7527 @end example
7528 @end itemize
7529
7530 For more information, see
7531 @url{http://frei0r.dyne.org}
7532
7533 @section fspp
7534
7535 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
7536
7537 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
7538 processing filter, one of them is performed once per block, not per pixel.
7539 This allows for much higher speed.
7540
7541 The filter accepts the following options:
7542
7543 @table @option
7544 @item quality
7545 Set quality. This option defines the number of levels for averaging. It accepts
7546 an integer in the range 4-5. Default value is @code{4}.
7547
7548 @item qp
7549 Force a constant quantization parameter. It accepts an integer in range 0-63.
7550 If not set, the filter will use the QP from the video stream (if available).
7551
7552 @item strength
7553 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
7554 more details but also more artifacts, while higher values make the image smoother
7555 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
7556
7557 @item use_bframe_qp
7558 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
7559 option may cause flicker since the B-Frames have often larger QP. Default is
7560 @code{0} (not enabled).
7561
7562 @end table
7563
7564 @section geq
7565
7566 The filter accepts the following options:
7567
7568 @table @option
7569 @item lum_expr, lum
7570 Set the luminance expression.
7571 @item cb_expr, cb
7572 Set the chrominance blue expression.
7573 @item cr_expr, cr
7574 Set the chrominance red expression.
7575 @item alpha_expr, a
7576 Set the alpha expression.
7577 @item red_expr, r
7578 Set the red expression.
7579 @item green_expr, g
7580 Set the green expression.
7581 @item blue_expr, b
7582 Set the blue expression.
7583 @end table
7584
7585 The colorspace is selected according to the specified options. If one
7586 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
7587 options is specified, the filter will automatically select a YCbCr
7588 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
7589 @option{blue_expr} options is specified, it will select an RGB
7590 colorspace.
7591
7592 If one of the chrominance expression is not defined, it falls back on the other
7593 one. If no alpha expression is specified it will evaluate to opaque value.
7594 If none of chrominance expressions are specified, they will evaluate
7595 to the luminance expression.
7596
7597 The expressions can use the following variables and functions:
7598
7599 @table @option
7600 @item N
7601 The sequential number of the filtered frame, starting from @code{0}.
7602
7603 @item X
7604 @item Y
7605 The coordinates of the current sample.
7606
7607 @item W
7608 @item H
7609 The width and height of the image.
7610
7611 @item SW
7612 @item SH
7613 Width and height scale depending on the currently filtered plane. It is the
7614 ratio between the corresponding luma plane number of pixels and the current
7615 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
7616 @code{0.5,0.5} for chroma planes.
7617
7618 @item T
7619 Time of the current frame, expressed in seconds.
7620
7621 @item p(x, y)
7622 Return the value of the pixel at location (@var{x},@var{y}) of the current
7623 plane.
7624
7625 @item lum(x, y)
7626 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
7627 plane.
7628
7629 @item cb(x, y)
7630 Return the value of the pixel at location (@var{x},@var{y}) of the
7631 blue-difference chroma plane. Return 0 if there is no such plane.
7632
7633 @item cr(x, y)
7634 Return the value of the pixel at location (@var{x},@var{y}) of the
7635 red-difference chroma plane. Return 0 if there is no such plane.
7636
7637 @item r(x, y)
7638 @item g(x, y)
7639 @item b(x, y)
7640 Return the value of the pixel at location (@var{x},@var{y}) of the
7641 red/green/blue component. Return 0 if there is no such component.
7642
7643 @item alpha(x, y)
7644 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
7645 plane. Return 0 if there is no such plane.
7646 @end table
7647
7648 For functions, if @var{x} and @var{y} are outside the area, the value will be
7649 automatically clipped to the closer edge.
7650
7651 @subsection Examples
7652
7653 @itemize
7654 @item
7655 Flip the image horizontally:
7656 @example
7657 geq=p(W-X\,Y)
7658 @end example
7659
7660 @item
7661 Generate a bidimensional sine wave, with angle @code{PI/3} and a
7662 wavelength of 100 pixels:
7663 @example
7664 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
7665 @end example
7666
7667 @item
7668 Generate a fancy enigmatic moving light:
7669 @example
7670 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
7671 @end example
7672
7673 @item
7674 Generate a quick emboss effect:
7675 @example
7676 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
7677 @end example
7678
7679 @item
7680 Modify RGB components depending on pixel position:
7681 @example
7682 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
7683 @end example
7684
7685 @item
7686 Create a radial gradient that is the same size as the input (also see
7687 the @ref{vignette} filter):
7688 @example
7689 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
7690 @end example
7691 @end itemize
7692
7693 @section gradfun
7694
7695 Fix the banding artifacts that are sometimes introduced into nearly flat
7696 regions by truncation to 8bit color depth.
7697 Interpolate the gradients that should go where the bands are, and
7698 dither them.
7699
7700 It is designed for playback only.  Do not use it prior to
7701 lossy compression, because compression tends to lose the dither and
7702 bring back the bands.
7703
7704 It accepts the following parameters:
7705
7706 @table @option
7707
7708 @item strength
7709 The maximum amount by which the filter will change any one pixel. This is also
7710 the threshold for detecting nearly flat regions. Acceptable values range from
7711 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
7712 valid range.
7713
7714 @item radius
7715 The neighborhood to fit the gradient to. A larger radius makes for smoother
7716 gradients, but also prevents the filter from modifying the pixels near detailed
7717 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
7718 values will be clipped to the valid range.
7719
7720 @end table
7721
7722 Alternatively, the options can be specified as a flat string:
7723 @var{strength}[:@var{radius}]
7724
7725 @subsection Examples
7726
7727 @itemize
7728 @item
7729 Apply the filter with a @code{3.5} strength and radius of @code{8}:
7730 @example
7731 gradfun=3.5:8
7732 @end example
7733
7734 @item
7735 Specify radius, omitting the strength (which will fall-back to the default
7736 value):
7737 @example
7738 gradfun=radius=8
7739 @end example
7740
7741 @end itemize
7742
7743 @anchor{haldclut}
7744 @section haldclut
7745
7746 Apply a Hald CLUT to a video stream.
7747
7748 First input is the video stream to process, and second one is the Hald CLUT.
7749 The Hald CLUT input can be a simple picture or a complete video stream.
7750
7751 The filter accepts the following options:
7752
7753 @table @option
7754 @item shortest
7755 Force termination when the shortest input terminates. Default is @code{0}.
7756 @item repeatlast
7757 Continue applying the last CLUT after the end of the stream. A value of
7758 @code{0} disable the filter after the last frame of the CLUT is reached.
7759 Default is @code{1}.
7760 @end table
7761
7762 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
7763 filters share the same internals).
7764
7765 More information about the Hald CLUT can be found on Eskil Steenberg's website
7766 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
7767
7768 @subsection Workflow examples
7769
7770 @subsubsection Hald CLUT video stream
7771
7772 Generate an identity Hald CLUT stream altered with various effects:
7773 @example
7774 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
7775 @end example
7776
7777 Note: make sure you use a lossless codec.
7778
7779 Then use it with @code{haldclut} to apply it on some random stream:
7780 @example
7781 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
7782 @end example
7783
7784 The Hald CLUT will be applied to the 10 first seconds (duration of
7785 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
7786 to the remaining frames of the @code{mandelbrot} stream.
7787
7788 @subsubsection Hald CLUT with preview
7789
7790 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
7791 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
7792 biggest possible square starting at the top left of the picture. The remaining
7793 padding pixels (bottom or right) will be ignored. This area can be used to add
7794 a preview of the Hald CLUT.
7795
7796 Typically, the following generated Hald CLUT will be supported by the
7797 @code{haldclut} filter:
7798
7799 @example
7800 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
7801    pad=iw+320 [padded_clut];
7802    smptebars=s=320x256, split [a][b];
7803    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
7804    [main][b] overlay=W-320" -frames:v 1 clut.png
7805 @end example
7806
7807 It contains the original and a preview of the effect of the CLUT: SMPTE color
7808 bars are displayed on the right-top, and below the same color bars processed by
7809 the color changes.
7810
7811 Then, the effect of this Hald CLUT can be visualized with:
7812 @example
7813 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
7814 @end example
7815
7816 @section hflip
7817
7818 Flip the input video horizontally.
7819
7820 For example, to horizontally flip the input video with @command{ffmpeg}:
7821 @example
7822 ffmpeg -i in.avi -vf "hflip" out.avi
7823 @end example
7824
7825 @section histeq
7826 This filter applies a global color histogram equalization on a
7827 per-frame basis.
7828
7829 It can be used to correct video that has a compressed range of pixel
7830 intensities.  The filter redistributes the pixel intensities to
7831 equalize their distribution across the intensity range. It may be
7832 viewed as an "automatically adjusting contrast filter". This filter is
7833 useful only for correcting degraded or poorly captured source
7834 video.
7835
7836 The filter accepts the following options:
7837
7838 @table @option
7839 @item strength
7840 Determine the amount of equalization to be applied.  As the strength
7841 is reduced, the distribution of pixel intensities more-and-more
7842 approaches that of the input frame. The value must be a float number
7843 in the range [0,1] and defaults to 0.200.
7844
7845 @item intensity
7846 Set the maximum intensity that can generated and scale the output
7847 values appropriately.  The strength should be set as desired and then
7848 the intensity can be limited if needed to avoid washing-out. The value
7849 must be a float number in the range [0,1] and defaults to 0.210.
7850
7851 @item antibanding
7852 Set the antibanding level. If enabled the filter will randomly vary
7853 the luminance of output pixels by a small amount to avoid banding of
7854 the histogram. Possible values are @code{none}, @code{weak} or
7855 @code{strong}. It defaults to @code{none}.
7856 @end table
7857
7858 @section histogram
7859
7860 Compute and draw a color distribution histogram for the input video.
7861
7862 The computed histogram is a representation of the color component
7863 distribution in an image.
7864
7865 Standard histogram displays the color components distribution in an image.
7866 Displays color graph for each color component. Shows distribution of
7867 the Y, U, V, A or R, G, B components, depending on input format, in the
7868 current frame. Below each graph a color component scale meter is shown.
7869
7870 The filter accepts the following options:
7871
7872 @table @option
7873 @item level_height
7874 Set height of level. Default value is @code{200}.
7875 Allowed range is [50, 2048].
7876
7877 @item scale_height
7878 Set height of color scale. Default value is @code{12}.
7879 Allowed range is [0, 40].
7880
7881 @item display_mode
7882 Set display mode.
7883 It accepts the following values:
7884 @table @samp
7885 @item parade
7886 Per color component graphs are placed below each other.
7887
7888 @item overlay
7889 Presents information identical to that in the @code{parade}, except
7890 that the graphs representing color components are superimposed directly
7891 over one another.
7892 @end table
7893 Default is @code{parade}.
7894
7895 @item levels_mode
7896 Set mode. Can be either @code{linear}, or @code{logarithmic}.
7897 Default is @code{linear}.
7898
7899 @item components
7900 Set what color components to display.
7901 Default is @code{7}.
7902 @end table
7903
7904 @subsection Examples
7905
7906 @itemize
7907
7908 @item
7909 Calculate and draw histogram:
7910 @example
7911 ffplay -i input -vf histogram
7912 @end example
7913
7914 @end itemize
7915
7916 @anchor{hqdn3d}
7917 @section hqdn3d
7918
7919 This is a high precision/quality 3d denoise filter. It aims to reduce
7920 image noise, producing smooth images and making still images really
7921 still. It should enhance compressibility.
7922
7923 It accepts the following optional parameters:
7924
7925 @table @option
7926 @item luma_spatial
7927 A non-negative floating point number which specifies spatial luma strength.
7928 It defaults to 4.0.
7929
7930 @item chroma_spatial
7931 A non-negative floating point number which specifies spatial chroma strength.
7932 It defaults to 3.0*@var{luma_spatial}/4.0.
7933
7934 @item luma_tmp
7935 A floating point number which specifies luma temporal strength. It defaults to
7936 6.0*@var{luma_spatial}/4.0.
7937
7938 @item chroma_tmp
7939 A floating point number which specifies chroma temporal strength. It defaults to
7940 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
7941 @end table
7942
7943 @section hqx
7944
7945 Apply a high-quality magnification filter designed for pixel art. This filter
7946 was originally created by Maxim Stepin.
7947
7948 It accepts the following option:
7949
7950 @table @option
7951 @item n
7952 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
7953 @code{hq3x} and @code{4} for @code{hq4x}.
7954 Default is @code{3}.
7955 @end table
7956
7957 @section hstack
7958 Stack input videos horizontally.
7959
7960 All streams must be of same pixel format and of same height.
7961
7962 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
7963 to create same output.
7964
7965 The filter accept the following option:
7966
7967 @table @option
7968 @item inputs
7969 Set number of input streams. Default is 2.
7970
7971 @item shortest
7972 If set to 1, force the output to terminate when the shortest input
7973 terminates. Default value is 0.
7974 @end table
7975
7976 @section hue
7977
7978 Modify the hue and/or the saturation of the input.
7979
7980 It accepts the following parameters:
7981
7982 @table @option
7983 @item h
7984 Specify the hue angle as a number of degrees. It accepts an expression,
7985 and defaults to "0".
7986
7987 @item s
7988 Specify the saturation in the [-10,10] range. It accepts an expression and
7989 defaults to "1".
7990
7991 @item H
7992 Specify the hue angle as a number of radians. It accepts an
7993 expression, and defaults to "0".
7994
7995 @item b
7996 Specify the brightness in the [-10,10] range. It accepts an expression and
7997 defaults to "0".
7998 @end table
7999
8000 @option{h} and @option{H} are mutually exclusive, and can't be
8001 specified at the same time.
8002
8003 The @option{b}, @option{h}, @option{H} and @option{s} option values are
8004 expressions containing the following constants:
8005
8006 @table @option
8007 @item n
8008 frame count of the input frame starting from 0
8009
8010 @item pts
8011 presentation timestamp of the input frame expressed in time base units
8012
8013 @item r
8014 frame rate of the input video, NAN if the input frame rate is unknown
8015
8016 @item t
8017 timestamp expressed in seconds, NAN if the input timestamp is unknown
8018
8019 @item tb
8020 time base of the input video
8021 @end table
8022
8023 @subsection Examples
8024
8025 @itemize
8026 @item
8027 Set the hue to 90 degrees and the saturation to 1.0:
8028 @example
8029 hue=h=90:s=1
8030 @end example
8031
8032 @item
8033 Same command but expressing the hue in radians:
8034 @example
8035 hue=H=PI/2:s=1
8036 @end example
8037
8038 @item
8039 Rotate hue and make the saturation swing between 0
8040 and 2 over a period of 1 second:
8041 @example
8042 hue="H=2*PI*t: s=sin(2*PI*t)+1"
8043 @end example
8044
8045 @item
8046 Apply a 3 seconds saturation fade-in effect starting at 0:
8047 @example
8048 hue="s=min(t/3\,1)"
8049 @end example
8050
8051 The general fade-in expression can be written as:
8052 @example
8053 hue="s=min(0\, max((t-START)/DURATION\, 1))"
8054 @end example
8055
8056 @item
8057 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
8058 @example
8059 hue="s=max(0\, min(1\, (8-t)/3))"
8060 @end example
8061
8062 The general fade-out expression can be written as:
8063 @example
8064 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
8065 @end example
8066
8067 @end itemize
8068
8069 @subsection Commands
8070
8071 This filter supports the following commands:
8072 @table @option
8073 @item b
8074 @item s
8075 @item h
8076 @item H
8077 Modify the hue and/or the saturation and/or brightness of the input video.
8078 The command accepts the same syntax of the corresponding option.
8079
8080 If the specified expression is not valid, it is kept at its current
8081 value.
8082 @end table
8083
8084 @section idet
8085
8086 Detect video interlacing type.
8087
8088 This filter tries to detect if the input frames as interlaced, progressive,
8089 top or bottom field first. It will also try and detect fields that are
8090 repeated between adjacent frames (a sign of telecine).
8091
8092 Single frame detection considers only immediately adjacent frames when classifying each frame.
8093 Multiple frame detection incorporates the classification history of previous frames.
8094
8095 The filter will log these metadata values:
8096
8097 @table @option
8098 @item single.current_frame
8099 Detected type of current frame using single-frame detection. One of:
8100 ``tff'' (top field first), ``bff'' (bottom field first),
8101 ``progressive'', or ``undetermined''
8102
8103 @item single.tff
8104 Cumulative number of frames detected as top field first using single-frame detection.
8105
8106 @item multiple.tff
8107 Cumulative number of frames detected as top field first using multiple-frame detection.
8108
8109 @item single.bff
8110 Cumulative number of frames detected as bottom field first using single-frame detection.
8111
8112 @item multiple.current_frame
8113 Detected type of current frame using multiple-frame detection. One of:
8114 ``tff'' (top field first), ``bff'' (bottom field first),
8115 ``progressive'', or ``undetermined''
8116
8117 @item multiple.bff
8118 Cumulative number of frames detected as bottom field first using multiple-frame detection.
8119
8120 @item single.progressive
8121 Cumulative number of frames detected as progressive using single-frame detection.
8122
8123 @item multiple.progressive
8124 Cumulative number of frames detected as progressive using multiple-frame detection.
8125
8126 @item single.undetermined
8127 Cumulative number of frames that could not be classified using single-frame detection.
8128
8129 @item multiple.undetermined
8130 Cumulative number of frames that could not be classified using multiple-frame detection.
8131
8132 @item repeated.current_frame
8133 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
8134
8135 @item repeated.neither
8136 Cumulative number of frames with no repeated field.
8137
8138 @item repeated.top
8139 Cumulative number of frames with the top field repeated from the previous frame's top field.
8140
8141 @item repeated.bottom
8142 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
8143 @end table
8144
8145 The filter accepts the following options:
8146
8147 @table @option
8148 @item intl_thres
8149 Set interlacing threshold.
8150 @item prog_thres
8151 Set progressive threshold.
8152 @item repeat_thres
8153 Threshold for repeated field detection.
8154 @item half_life
8155 Number of frames after which a given frame's contribution to the
8156 statistics is halved (i.e., it contributes only 0.5 to it's
8157 classification). The default of 0 means that all frames seen are given
8158 full weight of 1.0 forever.
8159 @item analyze_interlaced_flag
8160 When this is not 0 then idet will use the specified number of frames to determine
8161 if the interlaced flag is accurate, it will not count undetermined frames.
8162 If the flag is found to be accurate it will be used without any further
8163 computations, if it is found to be inaccurate it will be cleared without any
8164 further computations. This allows inserting the idet filter as a low computational
8165 method to clean up the interlaced flag
8166 @end table
8167
8168 @section il
8169
8170 Deinterleave or interleave fields.
8171
8172 This filter allows one to process interlaced images fields without
8173 deinterlacing them. Deinterleaving splits the input frame into 2
8174 fields (so called half pictures). Odd lines are moved to the top
8175 half of the output image, even lines to the bottom half.
8176 You can process (filter) them independently and then re-interleave them.
8177
8178 The filter accepts the following options:
8179
8180 @table @option
8181 @item luma_mode, l
8182 @item chroma_mode, c
8183 @item alpha_mode, a
8184 Available values for @var{luma_mode}, @var{chroma_mode} and
8185 @var{alpha_mode} are:
8186
8187 @table @samp
8188 @item none
8189 Do nothing.
8190
8191 @item deinterleave, d
8192 Deinterleave fields, placing one above the other.
8193
8194 @item interleave, i
8195 Interleave fields. Reverse the effect of deinterleaving.
8196 @end table
8197 Default value is @code{none}.
8198
8199 @item luma_swap, ls
8200 @item chroma_swap, cs
8201 @item alpha_swap, as
8202 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
8203 @end table
8204
8205 @section inflate
8206
8207 Apply inflate effect to the video.
8208
8209 This filter replaces the pixel by the local(3x3) average by taking into account
8210 only values higher than the pixel.
8211
8212 It accepts the following options:
8213
8214 @table @option
8215 @item threshold0
8216 @item threshold1
8217 @item threshold2
8218 @item threshold3
8219 Limit the maximum change for each plane, default is 65535.
8220 If 0, plane will remain unchanged.
8221 @end table
8222
8223 @section interlace
8224
8225 Simple interlacing filter from progressive contents. This interleaves upper (or
8226 lower) lines from odd frames with lower (or upper) lines from even frames,
8227 halving the frame rate and preserving image height.
8228
8229 @example
8230    Original        Original             New Frame
8231    Frame 'j'      Frame 'j+1'             (tff)
8232   ==========      ===========       ==================
8233     Line 0  -------------------->    Frame 'j' Line 0
8234     Line 1          Line 1  ---->   Frame 'j+1' Line 1
8235     Line 2 --------------------->    Frame 'j' Line 2
8236     Line 3          Line 3  ---->   Frame 'j+1' Line 3
8237      ...             ...                   ...
8238 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
8239 @end example
8240
8241 It accepts the following optional parameters:
8242
8243 @table @option
8244 @item scan
8245 This determines whether the interlaced frame is taken from the even
8246 (tff - default) or odd (bff) lines of the progressive frame.
8247
8248 @item lowpass
8249 Enable (default) or disable the vertical lowpass filter to avoid twitter
8250 interlacing and reduce moire patterns.
8251 @end table
8252
8253 @section kerndeint
8254
8255 Deinterlace input video by applying Donald Graft's adaptive kernel
8256 deinterling. Work on interlaced parts of a video to produce
8257 progressive frames.
8258
8259 The description of the accepted parameters follows.
8260
8261 @table @option
8262 @item thresh
8263 Set the threshold which affects the filter's tolerance when
8264 determining if a pixel line must be processed. It must be an integer
8265 in the range [0,255] and defaults to 10. A value of 0 will result in
8266 applying the process on every pixels.
8267
8268 @item map
8269 Paint pixels exceeding the threshold value to white if set to 1.
8270 Default is 0.
8271
8272 @item order
8273 Set the fields order. Swap fields if set to 1, leave fields alone if
8274 0. Default is 0.
8275
8276 @item sharp
8277 Enable additional sharpening if set to 1. Default is 0.
8278
8279 @item twoway
8280 Enable twoway sharpening if set to 1. Default is 0.
8281 @end table
8282
8283 @subsection Examples
8284
8285 @itemize
8286 @item
8287 Apply default values:
8288 @example
8289 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
8290 @end example
8291
8292 @item
8293 Enable additional sharpening:
8294 @example
8295 kerndeint=sharp=1
8296 @end example
8297
8298 @item
8299 Paint processed pixels in white:
8300 @example
8301 kerndeint=map=1
8302 @end example
8303 @end itemize
8304
8305 @section lenscorrection
8306
8307 Correct radial lens distortion
8308
8309 This filter can be used to correct for radial distortion as can result from the use
8310 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
8311 one can use tools available for example as part of opencv or simply trial-and-error.
8312 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
8313 and extract the k1 and k2 coefficients from the resulting matrix.
8314
8315 Note that effectively the same filter is available in the open-source tools Krita and
8316 Digikam from the KDE project.
8317
8318 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
8319 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
8320 brightness distribution, so you may want to use both filters together in certain
8321 cases, though you will have to take care of ordering, i.e. whether vignetting should
8322 be applied before or after lens correction.
8323
8324 @subsection Options
8325
8326 The filter accepts the following options:
8327
8328 @table @option
8329 @item cx
8330 Relative x-coordinate of the focal point of the image, and thereby the center of the
8331 distortion. This value has a range [0,1] and is expressed as fractions of the image
8332 width.
8333 @item cy
8334 Relative y-coordinate of the focal point of the image, and thereby the center of the
8335 distortion. This value has a range [0,1] and is expressed as fractions of the image
8336 height.
8337 @item k1
8338 Coefficient of the quadratic correction term. 0.5 means no correction.
8339 @item k2
8340 Coefficient of the double quadratic correction term. 0.5 means no correction.
8341 @end table
8342
8343 The formula that generates the correction is:
8344
8345 @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)
8346
8347 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
8348 distances from the focal point in the source and target images, respectively.
8349
8350 @section loop, aloop
8351
8352 Loop video frames or audio samples.
8353
8354 Those filters accepts the following options:
8355
8356 @table @option
8357 @item loop
8358 Set the number of loops.
8359
8360 @item size
8361 Set maximal size in number of frames for @code{loop} filter or maximal number
8362 of samples in case of @code{aloop} filter.
8363
8364 @item start
8365 Set first frame of loop for @code{loop} filter or first sample of loop in case
8366 of @code{aloop} filter.
8367 @end table
8368
8369 @anchor{lut3d}
8370 @section lut3d
8371
8372 Apply a 3D LUT to an input video.
8373
8374 The filter accepts the following options:
8375
8376 @table @option
8377 @item file
8378 Set the 3D LUT file name.
8379
8380 Currently supported formats:
8381 @table @samp
8382 @item 3dl
8383 AfterEffects
8384 @item cube
8385 Iridas
8386 @item dat
8387 DaVinci
8388 @item m3d
8389 Pandora
8390 @end table
8391 @item interp
8392 Select interpolation mode.
8393
8394 Available values are:
8395
8396 @table @samp
8397 @item nearest
8398 Use values from the nearest defined point.
8399 @item trilinear
8400 Interpolate values using the 8 points defining a cube.
8401 @item tetrahedral
8402 Interpolate values using a tetrahedron.
8403 @end table
8404 @end table
8405
8406 @section lut, lutrgb, lutyuv
8407
8408 Compute a look-up table for binding each pixel component input value
8409 to an output value, and apply it to the input video.
8410
8411 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
8412 to an RGB input video.
8413
8414 These filters accept the following parameters:
8415 @table @option
8416 @item c0
8417 set first pixel component expression
8418 @item c1
8419 set second pixel component expression
8420 @item c2
8421 set third pixel component expression
8422 @item c3
8423 set fourth pixel component expression, corresponds to the alpha component
8424
8425 @item r
8426 set red component expression
8427 @item g
8428 set green component expression
8429 @item b
8430 set blue component expression
8431 @item a
8432 alpha component expression
8433
8434 @item y
8435 set Y/luminance component expression
8436 @item u
8437 set U/Cb component expression
8438 @item v
8439 set V/Cr component expression
8440 @end table
8441
8442 Each of them specifies the expression to use for computing the lookup table for
8443 the corresponding pixel component values.
8444
8445 The exact component associated to each of the @var{c*} options depends on the
8446 format in input.
8447
8448 The @var{lut} filter requires either YUV or RGB pixel formats in input,
8449 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
8450
8451 The expressions can contain the following constants and functions:
8452
8453 @table @option
8454 @item w
8455 @item h
8456 The input width and height.
8457
8458 @item val
8459 The input value for the pixel component.
8460
8461 @item clipval
8462 The input value, clipped to the @var{minval}-@var{maxval} range.
8463
8464 @item maxval
8465 The maximum value for the pixel component.
8466
8467 @item minval
8468 The minimum value for the pixel component.
8469
8470 @item negval
8471 The negated value for the pixel component value, clipped to the
8472 @var{minval}-@var{maxval} range; it corresponds to the expression
8473 "maxval-clipval+minval".
8474
8475 @item clip(val)
8476 The computed value in @var{val}, clipped to the
8477 @var{minval}-@var{maxval} range.
8478
8479 @item gammaval(gamma)
8480 The computed gamma correction value of the pixel component value,
8481 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
8482 expression
8483 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
8484
8485 @end table
8486
8487 All expressions default to "val".
8488
8489 @subsection Examples
8490
8491 @itemize
8492 @item
8493 Negate input video:
8494 @example
8495 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
8496 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
8497 @end example
8498
8499 The above is the same as:
8500 @example
8501 lutrgb="r=negval:g=negval:b=negval"
8502 lutyuv="y=negval:u=negval:v=negval"
8503 @end example
8504
8505 @item
8506 Negate luminance:
8507 @example
8508 lutyuv=y=negval
8509 @end example
8510
8511 @item
8512 Remove chroma components, turning the video into a graytone image:
8513 @example
8514 lutyuv="u=128:v=128"
8515 @end example
8516
8517 @item
8518 Apply a luma burning effect:
8519 @example
8520 lutyuv="y=2*val"
8521 @end example
8522
8523 @item
8524 Remove green and blue components:
8525 @example
8526 lutrgb="g=0:b=0"
8527 @end example
8528
8529 @item
8530 Set a constant alpha channel value on input:
8531 @example
8532 format=rgba,lutrgb=a="maxval-minval/2"
8533 @end example
8534
8535 @item
8536 Correct luminance gamma by a factor of 0.5:
8537 @example
8538 lutyuv=y=gammaval(0.5)
8539 @end example
8540
8541 @item
8542 Discard least significant bits of luma:
8543 @example
8544 lutyuv=y='bitand(val, 128+64+32)'
8545 @end example
8546 @end itemize
8547
8548 @section maskedmerge
8549
8550 Merge the first input stream with the second input stream using per pixel
8551 weights in the third input stream.
8552
8553 A value of 0 in the third stream pixel component means that pixel component
8554 from first stream is returned unchanged, while maximum value (eg. 255 for
8555 8-bit videos) means that pixel component from second stream is returned
8556 unchanged. Intermediate values define the amount of merging between both
8557 input stream's pixel components.
8558
8559 This filter accepts the following options:
8560 @table @option
8561 @item planes
8562 Set which planes will be processed as bitmap, unprocessed planes will be
8563 copied from first stream.
8564 By default value 0xf, all planes will be processed.
8565 @end table
8566
8567 @section mcdeint
8568
8569 Apply motion-compensation deinterlacing.
8570
8571 It needs one field per frame as input and must thus be used together
8572 with yadif=1/3 or equivalent.
8573
8574 This filter accepts the following options:
8575 @table @option
8576 @item mode
8577 Set the deinterlacing mode.
8578
8579 It accepts one of the following values:
8580 @table @samp
8581 @item fast
8582 @item medium
8583 @item slow
8584 use iterative motion estimation
8585 @item extra_slow
8586 like @samp{slow}, but use multiple reference frames.
8587 @end table
8588 Default value is @samp{fast}.
8589
8590 @item parity
8591 Set the picture field parity assumed for the input video. It must be
8592 one of the following values:
8593
8594 @table @samp
8595 @item 0, tff
8596 assume top field first
8597 @item 1, bff
8598 assume bottom field first
8599 @end table
8600
8601 Default value is @samp{bff}.
8602
8603 @item qp
8604 Set per-block quantization parameter (QP) used by the internal
8605 encoder.
8606
8607 Higher values should result in a smoother motion vector field but less
8608 optimal individual vectors. Default value is 1.
8609 @end table
8610
8611 @section mergeplanes
8612
8613 Merge color channel components from several video streams.
8614
8615 The filter accepts up to 4 input streams, and merge selected input
8616 planes to the output video.
8617
8618 This filter accepts the following options:
8619 @table @option
8620 @item mapping
8621 Set input to output plane mapping. Default is @code{0}.
8622
8623 The mappings is specified as a bitmap. It should be specified as a
8624 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
8625 mapping for the first plane of the output stream. 'A' sets the number of
8626 the input stream to use (from 0 to 3), and 'a' the plane number of the
8627 corresponding input to use (from 0 to 3). The rest of the mappings is
8628 similar, 'Bb' describes the mapping for the output stream second
8629 plane, 'Cc' describes the mapping for the output stream third plane and
8630 'Dd' describes the mapping for the output stream fourth plane.
8631
8632 @item format
8633 Set output pixel format. Default is @code{yuva444p}.
8634 @end table
8635
8636 @subsection Examples
8637
8638 @itemize
8639 @item
8640 Merge three gray video streams of same width and height into single video stream:
8641 @example
8642 [a0][a1][a2]mergeplanes=0x001020:yuv444p
8643 @end example
8644
8645 @item
8646 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
8647 @example
8648 [a0][a1]mergeplanes=0x00010210:yuva444p
8649 @end example
8650
8651 @item
8652 Swap Y and A plane in yuva444p stream:
8653 @example
8654 format=yuva444p,mergeplanes=0x03010200:yuva444p
8655 @end example
8656
8657 @item
8658 Swap U and V plane in yuv420p stream:
8659 @example
8660 format=yuv420p,mergeplanes=0x000201:yuv420p
8661 @end example
8662
8663 @item
8664 Cast a rgb24 clip to yuv444p:
8665 @example
8666 format=rgb24,mergeplanes=0x000102:yuv444p
8667 @end example
8668 @end itemize
8669
8670 @section metadata, ametadata
8671
8672 Manipulate frame metadata.
8673
8674 This filter accepts the following options:
8675
8676 @table @option
8677 @item mode
8678 Set mode of operation of the filter.
8679
8680 Can be one of the following:
8681
8682 @table @samp
8683 @item select
8684 If both @code{value} and @code{key} is set, select frames
8685 which have such metadata. If only @code{key} is set, select
8686 every frame that has such key in metadata.
8687
8688 @item add
8689 Add new metadata @code{key} and @code{value}. If key is already available
8690 do nothing.
8691
8692 @item modify
8693 Modify value of already present key.
8694
8695 @item delete
8696 If @code{value} is set, delete only keys that have such value.
8697 Otherwise, delete key.
8698
8699 @item print
8700 Print key and its value if metadata was found. If @code{key} is not set print all
8701 metadata values available in frame.
8702 @end table
8703
8704 @item key
8705 Set key used with all modes. Must be set for all modes except @code{print}.
8706
8707 @item value
8708 Set metadata value which will be used. This option is mandatory for
8709 @code{modify} and @code{add} mode.
8710
8711 @item function
8712 Which function to use when comparing metadata value and @code{value}.
8713
8714 Can be one of following:
8715
8716 @table @samp
8717 @item same_str
8718 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
8719
8720 @item starts_with
8721 Values are interpreted as strings, returns true if metadata value starts with
8722 the @code{value} option string.
8723
8724 @item less
8725 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
8726
8727 @item equal
8728 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
8729
8730 @item greater
8731 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
8732
8733 @item expr
8734 Values are interpreted as floats, returns true if expression from option @code{expr}
8735 evaluates to true.
8736 @end table
8737
8738 @item expr
8739 Set expression which is used when @code{function} is set to @code{expr}.
8740 The expression is evaluated through the eval API and can contain the following
8741 constants:
8742
8743 @table @option
8744 @item VALUE1
8745 Float representation of @code{value} from metadata key.
8746
8747 @item VALUE2
8748 Float representation of @code{value} as supplied by user in @code{value} option.
8749 @end table
8750
8751 @item file
8752 If specified in @code{print} mode, output is written to the named file. When
8753 filename equals "-" data is written to standard output.
8754 If @code{file} option is not set, output is written to the log with AV_LOG_INFO
8755 loglevel.
8756 @end table
8757
8758 @subsection Examples
8759
8760 @itemize
8761 @item
8762 Print all metadata values for frames with key @code{lavfi.singnalstats.YDIF} with values
8763 between 0 and 1.
8764 @example
8765 @end example
8766 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
8767 @end itemize
8768
8769 @section mpdecimate
8770
8771 Drop frames that do not differ greatly from the previous frame in
8772 order to reduce frame rate.
8773
8774 The main use of this filter is for very-low-bitrate encoding
8775 (e.g. streaming over dialup modem), but it could in theory be used for
8776 fixing movies that were inverse-telecined incorrectly.
8777
8778 A description of the accepted options follows.
8779
8780 @table @option
8781 @item max
8782 Set the maximum number of consecutive frames which can be dropped (if
8783 positive), or the minimum interval between dropped frames (if
8784 negative). If the value is 0, the frame is dropped unregarding the
8785 number of previous sequentially dropped frames.
8786
8787 Default value is 0.
8788
8789 @item hi
8790 @item lo
8791 @item frac
8792 Set the dropping threshold values.
8793
8794 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
8795 represent actual pixel value differences, so a threshold of 64
8796 corresponds to 1 unit of difference for each pixel, or the same spread
8797 out differently over the block.
8798
8799 A frame is a candidate for dropping if no 8x8 blocks differ by more
8800 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
8801 meaning the whole image) differ by more than a threshold of @option{lo}.
8802
8803 Default value for @option{hi} is 64*12, default value for @option{lo} is
8804 64*5, and default value for @option{frac} is 0.33.
8805 @end table
8806
8807
8808 @section negate
8809
8810 Negate input video.
8811
8812 It accepts an integer in input; if non-zero it negates the
8813 alpha component (if available). The default value in input is 0.
8814
8815 @section nnedi
8816
8817 Deinterlace video using neural network edge directed interpolation.
8818
8819 This filter accepts the following options:
8820
8821 @table @option
8822 @item weights
8823 Mandatory option, without binary file filter can not work.
8824 Currently file can be found here:
8825 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
8826
8827 @item deint
8828 Set which frames to deinterlace, by default it is @code{all}.
8829 Can be @code{all} or @code{interlaced}.
8830
8831 @item field
8832 Set mode of operation.
8833
8834 Can be one of the following:
8835
8836 @table @samp
8837 @item af
8838 Use frame flags, both fields.
8839 @item a
8840 Use frame flags, single field.
8841 @item t
8842 Use top field only.
8843 @item b
8844 Use bottom field only.
8845 @item tf
8846 Use both fields, top first.
8847 @item bf
8848 Use both fields, bottom first.
8849 @end table
8850
8851 @item planes
8852 Set which planes to process, by default filter process all frames.
8853
8854 @item nsize
8855 Set size of local neighborhood around each pixel, used by the predictor neural
8856 network.
8857
8858 Can be one of the following:
8859
8860 @table @samp
8861 @item s8x6
8862 @item s16x6
8863 @item s32x6
8864 @item s48x6
8865 @item s8x4
8866 @item s16x4
8867 @item s32x4
8868 @end table
8869
8870 @item nns
8871 Set the number of neurons in predicctor neural network.
8872 Can be one of the following:
8873
8874 @table @samp
8875 @item n16
8876 @item n32
8877 @item n64
8878 @item n128
8879 @item n256
8880 @end table
8881
8882 @item qual
8883 Controls the number of different neural network predictions that are blended
8884 together to compute the final output value. Can be @code{fast}, default or
8885 @code{slow}.
8886
8887 @item etype
8888 Set which set of weights to use in the predictor.
8889 Can be one of the following:
8890
8891 @table @samp
8892 @item a
8893 weights trained to minimize absolute error
8894 @item s
8895 weights trained to minimize squared error
8896 @end table
8897
8898 @item pscrn
8899 Controls whether or not the prescreener neural network is used to decide
8900 which pixels should be processed by the predictor neural network and which
8901 can be handled by simple cubic interpolation.
8902 The prescreener is trained to know whether cubic interpolation will be
8903 sufficient for a pixel or whether it should be predicted by the predictor nn.
8904 The computational complexity of the prescreener nn is much less than that of
8905 the predictor nn. Since most pixels can be handled by cubic interpolation,
8906 using the prescreener generally results in much faster processing.
8907 The prescreener is pretty accurate, so the difference between using it and not
8908 using it is almost always unnoticeable.
8909
8910 Can be one of the following:
8911
8912 @table @samp
8913 @item none
8914 @item original
8915 @item new
8916 @end table
8917
8918 Default is @code{new}.
8919
8920 @item fapprox
8921 Set various debugging flags.
8922 @end table
8923
8924 @section noformat
8925
8926 Force libavfilter not to use any of the specified pixel formats for the
8927 input to the next filter.
8928
8929 It accepts the following parameters:
8930 @table @option
8931
8932 @item pix_fmts
8933 A '|'-separated list of pixel format names, such as
8934 apix_fmts=yuv420p|monow|rgb24".
8935
8936 @end table
8937
8938 @subsection Examples
8939
8940 @itemize
8941 @item
8942 Force libavfilter to use a format different from @var{yuv420p} for the
8943 input to the vflip filter:
8944 @example
8945 noformat=pix_fmts=yuv420p,vflip
8946 @end example
8947
8948 @item
8949 Convert the input video to any of the formats not contained in the list:
8950 @example
8951 noformat=yuv420p|yuv444p|yuv410p
8952 @end example
8953 @end itemize
8954
8955 @section noise
8956
8957 Add noise on video input frame.
8958
8959 The filter accepts the following options:
8960
8961 @table @option
8962 @item all_seed
8963 @item c0_seed
8964 @item c1_seed
8965 @item c2_seed
8966 @item c3_seed
8967 Set noise seed for specific pixel component or all pixel components in case
8968 of @var{all_seed}. Default value is @code{123457}.
8969
8970 @item all_strength, alls
8971 @item c0_strength, c0s
8972 @item c1_strength, c1s
8973 @item c2_strength, c2s
8974 @item c3_strength, c3s
8975 Set noise strength for specific pixel component or all pixel components in case
8976 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
8977
8978 @item all_flags, allf
8979 @item c0_flags, c0f
8980 @item c1_flags, c1f
8981 @item c2_flags, c2f
8982 @item c3_flags, c3f
8983 Set pixel component flags or set flags for all components if @var{all_flags}.
8984 Available values for component flags are:
8985 @table @samp
8986 @item a
8987 averaged temporal noise (smoother)
8988 @item p
8989 mix random noise with a (semi)regular pattern
8990 @item t
8991 temporal noise (noise pattern changes between frames)
8992 @item u
8993 uniform noise (gaussian otherwise)
8994 @end table
8995 @end table
8996
8997 @subsection Examples
8998
8999 Add temporal and uniform noise to input video:
9000 @example
9001 noise=alls=20:allf=t+u
9002 @end example
9003
9004 @section null
9005
9006 Pass the video source unchanged to the output.
9007
9008 @section ocr
9009 Optical Character Recognition
9010
9011 This filter uses Tesseract for optical character recognition.
9012
9013 It accepts the following options:
9014
9015 @table @option
9016 @item datapath
9017 Set datapath to tesseract data. Default is to use whatever was
9018 set at installation.
9019
9020 @item language
9021 Set language, default is "eng".
9022
9023 @item whitelist
9024 Set character whitelist.
9025
9026 @item blacklist
9027 Set character blacklist.
9028 @end table
9029
9030 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
9031
9032 @section ocv
9033
9034 Apply a video transform using libopencv.
9035
9036 To enable this filter, install the libopencv library and headers and
9037 configure FFmpeg with @code{--enable-libopencv}.
9038
9039 It accepts the following parameters:
9040
9041 @table @option
9042
9043 @item filter_name
9044 The name of the libopencv filter to apply.
9045
9046 @item filter_params
9047 The parameters to pass to the libopencv filter. If not specified, the default
9048 values are assumed.
9049
9050 @end table
9051
9052 Refer to the official libopencv documentation for more precise
9053 information:
9054 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
9055
9056 Several libopencv filters are supported; see the following subsections.
9057
9058 @anchor{dilate}
9059 @subsection dilate
9060
9061 Dilate an image by using a specific structuring element.
9062 It corresponds to the libopencv function @code{cvDilate}.
9063
9064 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
9065
9066 @var{struct_el} represents a structuring element, and has the syntax:
9067 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
9068
9069 @var{cols} and @var{rows} represent the number of columns and rows of
9070 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
9071 point, and @var{shape} the shape for the structuring element. @var{shape}
9072 must be "rect", "cross", "ellipse", or "custom".
9073
9074 If the value for @var{shape} is "custom", it must be followed by a
9075 string of the form "=@var{filename}". The file with name
9076 @var{filename} is assumed to represent a binary image, with each
9077 printable character corresponding to a bright pixel. When a custom
9078 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
9079 or columns and rows of the read file are assumed instead.
9080
9081 The default value for @var{struct_el} is "3x3+0x0/rect".
9082
9083 @var{nb_iterations} specifies the number of times the transform is
9084 applied to the image, and defaults to 1.
9085
9086 Some examples:
9087 @example
9088 # Use the default values
9089 ocv=dilate
9090
9091 # Dilate using a structuring element with a 5x5 cross, iterating two times
9092 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
9093
9094 # Read the shape from the file diamond.shape, iterating two times.
9095 # The file diamond.shape may contain a pattern of characters like this
9096 #   *
9097 #  ***
9098 # *****
9099 #  ***
9100 #   *
9101 # The specified columns and rows are ignored
9102 # but the anchor point coordinates are not
9103 ocv=dilate:0x0+2x2/custom=diamond.shape|2
9104 @end example
9105
9106 @subsection erode
9107
9108 Erode an image by using a specific structuring element.
9109 It corresponds to the libopencv function @code{cvErode}.
9110
9111 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
9112 with the same syntax and semantics as the @ref{dilate} filter.
9113
9114 @subsection smooth
9115
9116 Smooth the input video.
9117
9118 The filter takes the following parameters:
9119 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
9120
9121 @var{type} is the type of smooth filter to apply, and must be one of
9122 the following values: "blur", "blur_no_scale", "median", "gaussian",
9123 or "bilateral". The default value is "gaussian".
9124
9125 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
9126 depend on the smooth type. @var{param1} and
9127 @var{param2} accept integer positive values or 0. @var{param3} and
9128 @var{param4} accept floating point values.
9129
9130 The default value for @var{param1} is 3. The default value for the
9131 other parameters is 0.
9132
9133 These parameters correspond to the parameters assigned to the
9134 libopencv function @code{cvSmooth}.
9135
9136 @anchor{overlay}
9137 @section overlay
9138
9139 Overlay one video on top of another.
9140
9141 It takes two inputs and has one output. The first input is the "main"
9142 video on which the second input is overlaid.
9143
9144 It accepts the following parameters:
9145
9146 A description of the accepted options follows.
9147
9148 @table @option
9149 @item x
9150 @item y
9151 Set the expression for the x and y coordinates of the overlaid video
9152 on the main video. Default value is "0" for both expressions. In case
9153 the expression is invalid, it is set to a huge value (meaning that the
9154 overlay will not be displayed within the output visible area).
9155
9156 @item eof_action
9157 The action to take when EOF is encountered on the secondary input; it accepts
9158 one of the following values:
9159
9160 @table @option
9161 @item repeat
9162 Repeat the last frame (the default).
9163 @item endall
9164 End both streams.
9165 @item pass
9166 Pass the main input through.
9167 @end table
9168
9169 @item eval
9170 Set when the expressions for @option{x}, and @option{y} are evaluated.
9171
9172 It accepts the following values:
9173 @table @samp
9174 @item init
9175 only evaluate expressions once during the filter initialization or
9176 when a command is processed
9177
9178 @item frame
9179 evaluate expressions for each incoming frame
9180 @end table
9181
9182 Default value is @samp{frame}.
9183
9184 @item shortest
9185 If set to 1, force the output to terminate when the shortest input
9186 terminates. Default value is 0.
9187
9188 @item format
9189 Set the format for the output video.
9190
9191 It accepts the following values:
9192 @table @samp
9193 @item yuv420
9194 force YUV420 output
9195
9196 @item yuv422
9197 force YUV422 output
9198
9199 @item yuv444
9200 force YUV444 output
9201
9202 @item rgb
9203 force RGB output
9204 @end table
9205
9206 Default value is @samp{yuv420}.
9207
9208 @item rgb @emph{(deprecated)}
9209 If set to 1, force the filter to accept inputs in the RGB
9210 color space. Default value is 0. This option is deprecated, use
9211 @option{format} instead.
9212
9213 @item repeatlast
9214 If set to 1, force the filter to draw the last overlay frame over the
9215 main input until the end of the stream. A value of 0 disables this
9216 behavior. Default value is 1.
9217 @end table
9218
9219 The @option{x}, and @option{y} expressions can contain the following
9220 parameters.
9221
9222 @table @option
9223 @item main_w, W
9224 @item main_h, H
9225 The main input width and height.
9226
9227 @item overlay_w, w
9228 @item overlay_h, h
9229 The overlay input width and height.
9230
9231 @item x
9232 @item y
9233 The computed values for @var{x} and @var{y}. They are evaluated for
9234 each new frame.
9235
9236 @item hsub
9237 @item vsub
9238 horizontal and vertical chroma subsample values of the output
9239 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
9240 @var{vsub} is 1.
9241
9242 @item n
9243 the number of input frame, starting from 0
9244
9245 @item pos
9246 the position in the file of the input frame, NAN if unknown
9247
9248 @item t
9249 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
9250
9251 @end table
9252
9253 Note that the @var{n}, @var{pos}, @var{t} variables are available only
9254 when evaluation is done @emph{per frame}, and will evaluate to NAN
9255 when @option{eval} is set to @samp{init}.
9256
9257 Be aware that frames are taken from each input video in timestamp
9258 order, hence, if their initial timestamps differ, it is a good idea
9259 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
9260 have them begin in the same zero timestamp, as the example for
9261 the @var{movie} filter does.
9262
9263 You can chain together more overlays but you should test the
9264 efficiency of such approach.
9265
9266 @subsection Commands
9267
9268 This filter supports the following commands:
9269 @table @option
9270 @item x
9271 @item y
9272 Modify the x and y of the overlay input.
9273 The command accepts the same syntax of the corresponding option.
9274
9275 If the specified expression is not valid, it is kept at its current
9276 value.
9277 @end table
9278
9279 @subsection Examples
9280
9281 @itemize
9282 @item
9283 Draw the overlay at 10 pixels from the bottom right corner of the main
9284 video:
9285 @example
9286 overlay=main_w-overlay_w-10:main_h-overlay_h-10
9287 @end example
9288
9289 Using named options the example above becomes:
9290 @example
9291 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
9292 @end example
9293
9294 @item
9295 Insert a transparent PNG logo in the bottom left corner of the input,
9296 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
9297 @example
9298 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
9299 @end example
9300
9301 @item
9302 Insert 2 different transparent PNG logos (second logo on bottom
9303 right corner) using the @command{ffmpeg} tool:
9304 @example
9305 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
9306 @end example
9307
9308 @item
9309 Add a transparent color layer on top of the main video; @code{WxH}
9310 must specify the size of the main input to the overlay filter:
9311 @example
9312 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
9313 @end example
9314
9315 @item
9316 Play an original video and a filtered version (here with the deshake
9317 filter) side by side using the @command{ffplay} tool:
9318 @example
9319 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
9320 @end example
9321
9322 The above command is the same as:
9323 @example
9324 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
9325 @end example
9326
9327 @item
9328 Make a sliding overlay appearing from the left to the right top part of the
9329 screen starting since time 2:
9330 @example
9331 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
9332 @end example
9333
9334 @item
9335 Compose output by putting two input videos side to side:
9336 @example
9337 ffmpeg -i left.avi -i right.avi -filter_complex "
9338 nullsrc=size=200x100 [background];
9339 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
9340 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
9341 [background][left]       overlay=shortest=1       [background+left];
9342 [background+left][right] overlay=shortest=1:x=100 [left+right]
9343 "
9344 @end example
9345
9346 @item
9347 Mask 10-20 seconds of a video by applying the delogo filter to a section
9348 @example
9349 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
9350 -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]'
9351 masked.avi
9352 @end example
9353
9354 @item
9355 Chain several overlays in cascade:
9356 @example
9357 nullsrc=s=200x200 [bg];
9358 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
9359 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
9360 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
9361 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
9362 [in3] null,       [mid2] overlay=100:100 [out0]
9363 @end example
9364
9365 @end itemize
9366
9367 @section owdenoise
9368
9369 Apply Overcomplete Wavelet denoiser.
9370
9371 The filter accepts the following options:
9372
9373 @table @option
9374 @item depth
9375 Set depth.
9376
9377 Larger depth values will denoise lower frequency components more, but
9378 slow down filtering.
9379
9380 Must be an int in the range 8-16, default is @code{8}.
9381
9382 @item luma_strength, ls
9383 Set luma strength.
9384
9385 Must be a double value in the range 0-1000, default is @code{1.0}.
9386
9387 @item chroma_strength, cs
9388 Set chroma strength.
9389
9390 Must be a double value in the range 0-1000, default is @code{1.0}.
9391 @end table
9392
9393 @anchor{pad}
9394 @section pad
9395
9396 Add paddings to the input image, and place the original input at the
9397 provided @var{x}, @var{y} coordinates.
9398
9399 It accepts the following parameters:
9400
9401 @table @option
9402 @item width, w
9403 @item height, h
9404 Specify an expression for the size of the output image with the
9405 paddings added. If the value for @var{width} or @var{height} is 0, the
9406 corresponding input size is used for the output.
9407
9408 The @var{width} expression can reference the value set by the
9409 @var{height} expression, and vice versa.
9410
9411 The default value of @var{width} and @var{height} is 0.
9412
9413 @item x
9414 @item y
9415 Specify the offsets to place the input image at within the padded area,
9416 with respect to the top/left border of the output image.
9417
9418 The @var{x} expression can reference the value set by the @var{y}
9419 expression, and vice versa.
9420
9421 The default value of @var{x} and @var{y} is 0.
9422
9423 @item color
9424 Specify the color of the padded area. For the syntax of this option,
9425 check the "Color" section in the ffmpeg-utils manual.
9426
9427 The default value of @var{color} is "black".
9428 @end table
9429
9430 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
9431 options are expressions containing the following constants:
9432
9433 @table @option
9434 @item in_w
9435 @item in_h
9436 The input video width and height.
9437
9438 @item iw
9439 @item ih
9440 These are the same as @var{in_w} and @var{in_h}.
9441
9442 @item out_w
9443 @item out_h
9444 The output width and height (the size of the padded area), as
9445 specified by the @var{width} and @var{height} expressions.
9446
9447 @item ow
9448 @item oh
9449 These are the same as @var{out_w} and @var{out_h}.
9450
9451 @item x
9452 @item y
9453 The x and y offsets as specified by the @var{x} and @var{y}
9454 expressions, or NAN if not yet specified.
9455
9456 @item a
9457 same as @var{iw} / @var{ih}
9458
9459 @item sar
9460 input sample aspect ratio
9461
9462 @item dar
9463 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
9464
9465 @item hsub
9466 @item vsub
9467 The horizontal and vertical chroma subsample values. For example for the
9468 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9469 @end table
9470
9471 @subsection Examples
9472
9473 @itemize
9474 @item
9475 Add paddings with the color "violet" to the input video. The output video
9476 size is 640x480, and the top-left corner of the input video is placed at
9477 column 0, row 40
9478 @example
9479 pad=640:480:0:40:violet
9480 @end example
9481
9482 The example above is equivalent to the following command:
9483 @example
9484 pad=width=640:height=480:x=0:y=40:color=violet
9485 @end example
9486
9487 @item
9488 Pad the input to get an output with dimensions increased by 3/2,
9489 and put the input video at the center of the padded area:
9490 @example
9491 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
9492 @end example
9493
9494 @item
9495 Pad the input to get a squared output with size equal to the maximum
9496 value between the input width and height, and put the input video at
9497 the center of the padded area:
9498 @example
9499 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
9500 @end example
9501
9502 @item
9503 Pad the input to get a final w/h ratio of 16:9:
9504 @example
9505 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
9506 @end example
9507
9508 @item
9509 In case of anamorphic video, in order to set the output display aspect
9510 correctly, it is necessary to use @var{sar} in the expression,
9511 according to the relation:
9512 @example
9513 (ih * X / ih) * sar = output_dar
9514 X = output_dar / sar
9515 @end example
9516
9517 Thus the previous example needs to be modified to:
9518 @example
9519 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
9520 @end example
9521
9522 @item
9523 Double the output size and put the input video in the bottom-right
9524 corner of the output padded area:
9525 @example
9526 pad="2*iw:2*ih:ow-iw:oh-ih"
9527 @end example
9528 @end itemize
9529
9530 @anchor{palettegen}
9531 @section palettegen
9532
9533 Generate one palette for a whole video stream.
9534
9535 It accepts the following options:
9536
9537 @table @option
9538 @item max_colors
9539 Set the maximum number of colors to quantize in the palette.
9540 Note: the palette will still contain 256 colors; the unused palette entries
9541 will be black.
9542
9543 @item reserve_transparent
9544 Create a palette of 255 colors maximum and reserve the last one for
9545 transparency. Reserving the transparency color is useful for GIF optimization.
9546 If not set, the maximum of colors in the palette will be 256. You probably want
9547 to disable this option for a standalone image.
9548 Set by default.
9549
9550 @item stats_mode
9551 Set statistics mode.
9552
9553 It accepts the following values:
9554 @table @samp
9555 @item full
9556 Compute full frame histograms.
9557 @item diff
9558 Compute histograms only for the part that differs from previous frame. This
9559 might be relevant to give more importance to the moving part of your input if
9560 the background is static.
9561 @end table
9562
9563 Default value is @var{full}.
9564 @end table
9565
9566 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
9567 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
9568 color quantization of the palette. This information is also visible at
9569 @var{info} logging level.
9570
9571 @subsection Examples
9572
9573 @itemize
9574 @item
9575 Generate a representative palette of a given video using @command{ffmpeg}:
9576 @example
9577 ffmpeg -i input.mkv -vf palettegen palette.png
9578 @end example
9579 @end itemize
9580
9581 @section paletteuse
9582
9583 Use a palette to downsample an input video stream.
9584
9585 The filter takes two inputs: one video stream and a palette. The palette must
9586 be a 256 pixels image.
9587
9588 It accepts the following options:
9589
9590 @table @option
9591 @item dither
9592 Select dithering mode. Available algorithms are:
9593 @table @samp
9594 @item bayer
9595 Ordered 8x8 bayer dithering (deterministic)
9596 @item heckbert
9597 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
9598 Note: this dithering is sometimes considered "wrong" and is included as a
9599 reference.
9600 @item floyd_steinberg
9601 Floyd and Steingberg dithering (error diffusion)
9602 @item sierra2
9603 Frankie Sierra dithering v2 (error diffusion)
9604 @item sierra2_4a
9605 Frankie Sierra dithering v2 "Lite" (error diffusion)
9606 @end table
9607
9608 Default is @var{sierra2_4a}.
9609
9610 @item bayer_scale
9611 When @var{bayer} dithering is selected, this option defines the scale of the
9612 pattern (how much the crosshatch pattern is visible). A low value means more
9613 visible pattern for less banding, and higher value means less visible pattern
9614 at the cost of more banding.
9615
9616 The option must be an integer value in the range [0,5]. Default is @var{2}.
9617
9618 @item diff_mode
9619 If set, define the zone to process
9620
9621 @table @samp
9622 @item rectangle
9623 Only the changing rectangle will be reprocessed. This is similar to GIF
9624 cropping/offsetting compression mechanism. This option can be useful for speed
9625 if only a part of the image is changing, and has use cases such as limiting the
9626 scope of the error diffusal @option{dither} to the rectangle that bounds the
9627 moving scene (it leads to more deterministic output if the scene doesn't change
9628 much, and as a result less moving noise and better GIF compression).
9629 @end table
9630
9631 Default is @var{none}.
9632 @end table
9633
9634 @subsection Examples
9635
9636 @itemize
9637 @item
9638 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
9639 using @command{ffmpeg}:
9640 @example
9641 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
9642 @end example
9643 @end itemize
9644
9645 @section perspective
9646
9647 Correct perspective of video not recorded perpendicular to the screen.
9648
9649 A description of the accepted parameters follows.
9650
9651 @table @option
9652 @item x0
9653 @item y0
9654 @item x1
9655 @item y1
9656 @item x2
9657 @item y2
9658 @item x3
9659 @item y3
9660 Set coordinates expression for top left, top right, bottom left and bottom right corners.
9661 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
9662 If the @code{sense} option is set to @code{source}, then the specified points will be sent
9663 to the corners of the destination. If the @code{sense} option is set to @code{destination},
9664 then the corners of the source will be sent to the specified coordinates.
9665
9666 The expressions can use the following variables:
9667
9668 @table @option
9669 @item W
9670 @item H
9671 the width and height of video frame.
9672 @end table
9673
9674 @item interpolation
9675 Set interpolation for perspective correction.
9676
9677 It accepts the following values:
9678 @table @samp
9679 @item linear
9680 @item cubic
9681 @end table
9682
9683 Default value is @samp{linear}.
9684
9685 @item sense
9686 Set interpretation of coordinate options.
9687
9688 It accepts the following values:
9689 @table @samp
9690 @item 0, source
9691
9692 Send point in the source specified by the given coordinates to
9693 the corners of the destination.
9694
9695 @item 1, destination
9696
9697 Send the corners of the source to the point in the destination specified
9698 by the given coordinates.
9699
9700 Default value is @samp{source}.
9701 @end table
9702 @end table
9703
9704 @section phase
9705
9706 Delay interlaced video by one field time so that the field order changes.
9707
9708 The intended use is to fix PAL movies that have been captured with the
9709 opposite field order to the film-to-video transfer.
9710
9711 A description of the accepted parameters follows.
9712
9713 @table @option
9714 @item mode
9715 Set phase mode.
9716
9717 It accepts the following values:
9718 @table @samp
9719 @item t
9720 Capture field order top-first, transfer bottom-first.
9721 Filter will delay the bottom field.
9722
9723 @item b
9724 Capture field order bottom-first, transfer top-first.
9725 Filter will delay the top field.
9726
9727 @item p
9728 Capture and transfer with the same field order. This mode only exists
9729 for the documentation of the other options to refer to, but if you
9730 actually select it, the filter will faithfully do nothing.
9731
9732 @item a
9733 Capture field order determined automatically by field flags, transfer
9734 opposite.
9735 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
9736 basis using field flags. If no field information is available,
9737 then this works just like @samp{u}.
9738
9739 @item u
9740 Capture unknown or varying, transfer opposite.
9741 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
9742 analyzing the images and selecting the alternative that produces best
9743 match between the fields.
9744
9745 @item T
9746 Capture top-first, transfer unknown or varying.
9747 Filter selects among @samp{t} and @samp{p} using image analysis.
9748
9749 @item B
9750 Capture bottom-first, transfer unknown or varying.
9751 Filter selects among @samp{b} and @samp{p} using image analysis.
9752
9753 @item A
9754 Capture determined by field flags, transfer unknown or varying.
9755 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
9756 image analysis. If no field information is available, then this works just
9757 like @samp{U}. This is the default mode.
9758
9759 @item U
9760 Both capture and transfer unknown or varying.
9761 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
9762 @end table
9763 @end table
9764
9765 @section pixdesctest
9766
9767 Pixel format descriptor test filter, mainly useful for internal
9768 testing. The output video should be equal to the input video.
9769
9770 For example:
9771 @example
9772 format=monow, pixdesctest
9773 @end example
9774
9775 can be used to test the monowhite pixel format descriptor definition.
9776
9777 @section pp
9778
9779 Enable the specified chain of postprocessing subfilters using libpostproc. This
9780 library should be automatically selected with a GPL build (@code{--enable-gpl}).
9781 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
9782 Each subfilter and some options have a short and a long name that can be used
9783 interchangeably, i.e. dr/dering are the same.
9784
9785 The filters accept the following options:
9786
9787 @table @option
9788 @item subfilters
9789 Set postprocessing subfilters string.
9790 @end table
9791
9792 All subfilters share common options to determine their scope:
9793
9794 @table @option
9795 @item a/autoq
9796 Honor the quality commands for this subfilter.
9797
9798 @item c/chrom
9799 Do chrominance filtering, too (default).
9800
9801 @item y/nochrom
9802 Do luminance filtering only (no chrominance).
9803
9804 @item n/noluma
9805 Do chrominance filtering only (no luminance).
9806 @end table
9807
9808 These options can be appended after the subfilter name, separated by a '|'.
9809
9810 Available subfilters are:
9811
9812 @table @option
9813 @item hb/hdeblock[|difference[|flatness]]
9814 Horizontal deblocking filter
9815 @table @option
9816 @item difference
9817 Difference factor where higher values mean more deblocking (default: @code{32}).
9818 @item flatness
9819 Flatness threshold where lower values mean more deblocking (default: @code{39}).
9820 @end table
9821
9822 @item vb/vdeblock[|difference[|flatness]]
9823 Vertical deblocking filter
9824 @table @option
9825 @item difference
9826 Difference factor where higher values mean more deblocking (default: @code{32}).
9827 @item flatness
9828 Flatness threshold where lower values mean more deblocking (default: @code{39}).
9829 @end table
9830
9831 @item ha/hadeblock[|difference[|flatness]]
9832 Accurate horizontal deblocking filter
9833 @table @option
9834 @item difference
9835 Difference factor where higher values mean more deblocking (default: @code{32}).
9836 @item flatness
9837 Flatness threshold where lower values mean more deblocking (default: @code{39}).
9838 @end table
9839
9840 @item va/vadeblock[|difference[|flatness]]
9841 Accurate vertical deblocking filter
9842 @table @option
9843 @item difference
9844 Difference factor where higher values mean more deblocking (default: @code{32}).
9845 @item flatness
9846 Flatness threshold where lower values mean more deblocking (default: @code{39}).
9847 @end table
9848 @end table
9849
9850 The horizontal and vertical deblocking filters share the difference and
9851 flatness values so you cannot set different horizontal and vertical
9852 thresholds.
9853
9854 @table @option
9855 @item h1/x1hdeblock
9856 Experimental horizontal deblocking filter
9857
9858 @item v1/x1vdeblock
9859 Experimental vertical deblocking filter
9860
9861 @item dr/dering
9862 Deringing filter
9863
9864 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
9865 @table @option
9866 @item threshold1
9867 larger -> stronger filtering
9868 @item threshold2
9869 larger -> stronger filtering
9870 @item threshold3
9871 larger -> stronger filtering
9872 @end table
9873
9874 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
9875 @table @option
9876 @item f/fullyrange
9877 Stretch luminance to @code{0-255}.
9878 @end table
9879
9880 @item lb/linblenddeint
9881 Linear blend deinterlacing filter that deinterlaces the given block by
9882 filtering all lines with a @code{(1 2 1)} filter.
9883
9884 @item li/linipoldeint
9885 Linear interpolating deinterlacing filter that deinterlaces the given block by
9886 linearly interpolating every second line.
9887
9888 @item ci/cubicipoldeint
9889 Cubic interpolating deinterlacing filter deinterlaces the given block by
9890 cubically interpolating every second line.
9891
9892 @item md/mediandeint
9893 Median deinterlacing filter that deinterlaces the given block by applying a
9894 median filter to every second line.
9895
9896 @item fd/ffmpegdeint
9897 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
9898 second line with a @code{(-1 4 2 4 -1)} filter.
9899
9900 @item l5/lowpass5
9901 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
9902 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
9903
9904 @item fq/forceQuant[|quantizer]
9905 Overrides the quantizer table from the input with the constant quantizer you
9906 specify.
9907 @table @option
9908 @item quantizer
9909 Quantizer to use
9910 @end table
9911
9912 @item de/default
9913 Default pp filter combination (@code{hb|a,vb|a,dr|a})
9914
9915 @item fa/fast
9916 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
9917
9918 @item ac
9919 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
9920 @end table
9921
9922 @subsection Examples
9923
9924 @itemize
9925 @item
9926 Apply horizontal and vertical deblocking, deringing and automatic
9927 brightness/contrast:
9928 @example
9929 pp=hb/vb/dr/al
9930 @end example
9931
9932 @item
9933 Apply default filters without brightness/contrast correction:
9934 @example
9935 pp=de/-al
9936 @end example
9937
9938 @item
9939 Apply default filters and temporal denoiser:
9940 @example
9941 pp=default/tmpnoise|1|2|3
9942 @end example
9943
9944 @item
9945 Apply deblocking on luminance only, and switch vertical deblocking on or off
9946 automatically depending on available CPU time:
9947 @example
9948 pp=hb|y/vb|a
9949 @end example
9950 @end itemize
9951
9952 @section pp7
9953 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
9954 similar to spp = 6 with 7 point DCT, where only the center sample is
9955 used after IDCT.
9956
9957 The filter accepts the following options:
9958
9959 @table @option
9960 @item qp
9961 Force a constant quantization parameter. It accepts an integer in range
9962 0 to 63. If not set, the filter will use the QP from the video stream
9963 (if available).
9964
9965 @item mode
9966 Set thresholding mode. Available modes are:
9967
9968 @table @samp
9969 @item hard
9970 Set hard thresholding.
9971 @item soft
9972 Set soft thresholding (better de-ringing effect, but likely blurrier).
9973 @item medium
9974 Set medium thresholding (good results, default).
9975 @end table
9976 @end table
9977
9978 @section psnr
9979
9980 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
9981 Ratio) between two input videos.
9982
9983 This filter takes in input two input videos, the first input is
9984 considered the "main" source and is passed unchanged to the
9985 output. The second input is used as a "reference" video for computing
9986 the PSNR.
9987
9988 Both video inputs must have the same resolution and pixel format for
9989 this filter to work correctly. Also it assumes that both inputs
9990 have the same number of frames, which are compared one by one.
9991
9992 The obtained average PSNR is printed through the logging system.
9993
9994 The filter stores the accumulated MSE (mean squared error) of each
9995 frame, and at the end of the processing it is averaged across all frames
9996 equally, and the following formula is applied to obtain the PSNR:
9997
9998 @example
9999 PSNR = 10*log10(MAX^2/MSE)
10000 @end example
10001
10002 Where MAX is the average of the maximum values of each component of the
10003 image.
10004
10005 The description of the accepted parameters follows.
10006
10007 @table @option
10008 @item stats_file, f
10009 If specified the filter will use the named file to save the PSNR of
10010 each individual frame. When filename equals "-" the data is sent to
10011 standard output.
10012 @end table
10013
10014 The file printed if @var{stats_file} is selected, contains a sequence of
10015 key/value pairs of the form @var{key}:@var{value} for each compared
10016 couple of frames.
10017
10018 A description of each shown parameter follows:
10019
10020 @table @option
10021 @item n
10022 sequential number of the input frame, starting from 1
10023
10024 @item mse_avg
10025 Mean Square Error pixel-by-pixel average difference of the compared
10026 frames, averaged over all the image components.
10027
10028 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_g, mse_a
10029 Mean Square Error pixel-by-pixel average difference of the compared
10030 frames for the component specified by the suffix.
10031
10032 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
10033 Peak Signal to Noise ratio of the compared frames for the component
10034 specified by the suffix.
10035 @end table
10036
10037 For example:
10038 @example
10039 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
10040 [main][ref] psnr="stats_file=stats.log" [out]
10041 @end example
10042
10043 On this example the input file being processed is compared with the
10044 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
10045 is stored in @file{stats.log}.
10046
10047 @anchor{pullup}
10048 @section pullup
10049
10050 Pulldown reversal (inverse telecine) filter, capable of handling mixed
10051 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
10052 content.
10053
10054 The pullup filter is designed to take advantage of future context in making
10055 its decisions. This filter is stateless in the sense that it does not lock
10056 onto a pattern to follow, but it instead looks forward to the following
10057 fields in order to identify matches and rebuild progressive frames.
10058
10059 To produce content with an even framerate, insert the fps filter after
10060 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
10061 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
10062
10063 The filter accepts the following options:
10064
10065 @table @option
10066 @item jl
10067 @item jr
10068 @item jt
10069 @item jb
10070 These options set the amount of "junk" to ignore at the left, right, top, and
10071 bottom of the image, respectively. Left and right are in units of 8 pixels,
10072 while top and bottom are in units of 2 lines.
10073 The default is 8 pixels on each side.
10074
10075 @item sb
10076 Set the strict breaks. Setting this option to 1 will reduce the chances of
10077 filter generating an occasional mismatched frame, but it may also cause an
10078 excessive number of frames to be dropped during high motion sequences.
10079 Conversely, setting it to -1 will make filter match fields more easily.
10080 This may help processing of video where there is slight blurring between
10081 the fields, but may also cause there to be interlaced frames in the output.
10082 Default value is @code{0}.
10083
10084 @item mp
10085 Set the metric plane to use. It accepts the following values:
10086 @table @samp
10087 @item l
10088 Use luma plane.
10089
10090 @item u
10091 Use chroma blue plane.
10092
10093 @item v
10094 Use chroma red plane.
10095 @end table
10096
10097 This option may be set to use chroma plane instead of the default luma plane
10098 for doing filter's computations. This may improve accuracy on very clean
10099 source material, but more likely will decrease accuracy, especially if there
10100 is chroma noise (rainbow effect) or any grayscale video.
10101 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
10102 load and make pullup usable in realtime on slow machines.
10103 @end table
10104
10105 For best results (without duplicated frames in the output file) it is
10106 necessary to change the output frame rate. For example, to inverse
10107 telecine NTSC input:
10108 @example
10109 ffmpeg -i input -vf pullup -r 24000/1001 ...
10110 @end example
10111
10112 @section qp
10113
10114 Change video quantization parameters (QP).
10115
10116 The filter accepts the following option:
10117
10118 @table @option
10119 @item qp
10120 Set expression for quantization parameter.
10121 @end table
10122
10123 The expression is evaluated through the eval API and can contain, among others,
10124 the following constants:
10125
10126 @table @var
10127 @item known
10128 1 if index is not 129, 0 otherwise.
10129
10130 @item qp
10131 Sequentional index starting from -129 to 128.
10132 @end table
10133
10134 @subsection Examples
10135
10136 @itemize
10137 @item
10138 Some equation like:
10139 @example
10140 qp=2+2*sin(PI*qp)
10141 @end example
10142 @end itemize
10143
10144 @section random
10145
10146 Flush video frames from internal cache of frames into a random order.
10147 No frame is discarded.
10148 Inspired by @ref{frei0r} nervous filter.
10149
10150 @table @option
10151 @item frames
10152 Set size in number of frames of internal cache, in range from @code{2} to
10153 @code{512}. Default is @code{30}.
10154
10155 @item seed
10156 Set seed for random number generator, must be an integer included between
10157 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
10158 less than @code{0}, the filter will try to use a good random seed on a
10159 best effort basis.
10160 @end table
10161
10162 @section removegrain
10163
10164 The removegrain filter is a spatial denoiser for progressive video.
10165
10166 @table @option
10167 @item m0
10168 Set mode for the first plane.
10169
10170 @item m1
10171 Set mode for the second plane.
10172
10173 @item m2
10174 Set mode for the third plane.
10175
10176 @item m3
10177 Set mode for the fourth plane.
10178 @end table
10179
10180 Range of mode is from 0 to 24. Description of each mode follows:
10181
10182 @table @var
10183 @item 0
10184 Leave input plane unchanged. Default.
10185
10186 @item 1
10187 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
10188
10189 @item 2
10190 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
10191
10192 @item 3
10193 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
10194
10195 @item 4
10196 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
10197 This is equivalent to a median filter.
10198
10199 @item 5
10200 Line-sensitive clipping giving the minimal change.
10201
10202 @item 6
10203 Line-sensitive clipping, intermediate.
10204
10205 @item 7
10206 Line-sensitive clipping, intermediate.
10207
10208 @item 8
10209 Line-sensitive clipping, intermediate.
10210
10211 @item 9
10212 Line-sensitive clipping on a line where the neighbours pixels are the closest.
10213
10214 @item 10
10215 Replaces the target pixel with the closest neighbour.
10216
10217 @item 11
10218 [1 2 1] horizontal and vertical kernel blur.
10219
10220 @item 12
10221 Same as mode 11.
10222
10223 @item 13
10224 Bob mode, interpolates top field from the line where the neighbours
10225 pixels are the closest.
10226
10227 @item 14
10228 Bob mode, interpolates bottom field from the line where the neighbours
10229 pixels are the closest.
10230
10231 @item 15
10232 Bob mode, interpolates top field. Same as 13 but with a more complicated
10233 interpolation formula.
10234
10235 @item 16
10236 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
10237 interpolation formula.
10238
10239 @item 17
10240 Clips the pixel with the minimum and maximum of respectively the maximum and
10241 minimum of each pair of opposite neighbour pixels.
10242
10243 @item 18
10244 Line-sensitive clipping using opposite neighbours whose greatest distance from
10245 the current pixel is minimal.
10246
10247 @item 19
10248 Replaces the pixel with the average of its 8 neighbours.
10249
10250 @item 20
10251 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
10252
10253 @item 21
10254 Clips pixels using the averages of opposite neighbour.
10255
10256 @item 22
10257 Same as mode 21 but simpler and faster.
10258
10259 @item 23
10260 Small edge and halo removal, but reputed useless.
10261
10262 @item 24
10263 Similar as 23.
10264 @end table
10265
10266 @section removelogo
10267
10268 Suppress a TV station logo, using an image file to determine which
10269 pixels comprise the logo. It works by filling in the pixels that
10270 comprise the logo with neighboring pixels.
10271
10272 The filter accepts the following options:
10273
10274 @table @option
10275 @item filename, f
10276 Set the filter bitmap file, which can be any image format supported by
10277 libavformat. The width and height of the image file must match those of the
10278 video stream being processed.
10279 @end table
10280
10281 Pixels in the provided bitmap image with a value of zero are not
10282 considered part of the logo, non-zero pixels are considered part of
10283 the logo. If you use white (255) for the logo and black (0) for the
10284 rest, you will be safe. For making the filter bitmap, it is
10285 recommended to take a screen capture of a black frame with the logo
10286 visible, and then using a threshold filter followed by the erode
10287 filter once or twice.
10288
10289 If needed, little splotches can be fixed manually. Remember that if
10290 logo pixels are not covered, the filter quality will be much
10291 reduced. Marking too many pixels as part of the logo does not hurt as
10292 much, but it will increase the amount of blurring needed to cover over
10293 the image and will destroy more information than necessary, and extra
10294 pixels will slow things down on a large logo.
10295
10296 @section repeatfields
10297
10298 This filter uses the repeat_field flag from the Video ES headers and hard repeats
10299 fields based on its value.
10300
10301 @section reverse, areverse
10302
10303 Reverse a clip.
10304
10305 Warning: This filter requires memory to buffer the entire clip, so trimming
10306 is suggested.
10307
10308 @subsection Examples
10309
10310 @itemize
10311 @item
10312 Take the first 5 seconds of a clip, and reverse it.
10313 @example
10314 trim=end=5,reverse
10315 @end example
10316 @end itemize
10317
10318 @section rotate
10319
10320 Rotate video by an arbitrary angle expressed in radians.
10321
10322 The filter accepts the following options:
10323
10324 A description of the optional parameters follows.
10325 @table @option
10326 @item angle, a
10327 Set an expression for the angle by which to rotate the input video
10328 clockwise, expressed as a number of radians. A negative value will
10329 result in a counter-clockwise rotation. By default it is set to "0".
10330
10331 This expression is evaluated for each frame.
10332
10333 @item out_w, ow
10334 Set the output width expression, default value is "iw".
10335 This expression is evaluated just once during configuration.
10336
10337 @item out_h, oh
10338 Set the output height expression, default value is "ih".
10339 This expression is evaluated just once during configuration.
10340
10341 @item bilinear
10342 Enable bilinear interpolation if set to 1, a value of 0 disables
10343 it. Default value is 1.
10344
10345 @item fillcolor, c
10346 Set the color used to fill the output area not covered by the rotated
10347 image. For the general syntax of this option, check the "Color" section in the
10348 ffmpeg-utils manual. If the special value "none" is selected then no
10349 background is printed (useful for example if the background is never shown).
10350
10351 Default value is "black".
10352 @end table
10353
10354 The expressions for the angle and the output size can contain the
10355 following constants and functions:
10356
10357 @table @option
10358 @item n
10359 sequential number of the input frame, starting from 0. It is always NAN
10360 before the first frame is filtered.
10361
10362 @item t
10363 time in seconds of the input frame, it is set to 0 when the filter is
10364 configured. It is always NAN before the first frame is filtered.
10365
10366 @item hsub
10367 @item vsub
10368 horizontal and vertical chroma subsample values. For example for the
10369 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10370
10371 @item in_w, iw
10372 @item in_h, ih
10373 the input video width and height
10374
10375 @item out_w, ow
10376 @item out_h, oh
10377 the output width and height, that is the size of the padded area as
10378 specified by the @var{width} and @var{height} expressions
10379
10380 @item rotw(a)
10381 @item roth(a)
10382 the minimal width/height required for completely containing the input
10383 video rotated by @var{a} radians.
10384
10385 These are only available when computing the @option{out_w} and
10386 @option{out_h} expressions.
10387 @end table
10388
10389 @subsection Examples
10390
10391 @itemize
10392 @item
10393 Rotate the input by PI/6 radians clockwise:
10394 @example
10395 rotate=PI/6
10396 @end example
10397
10398 @item
10399 Rotate the input by PI/6 radians counter-clockwise:
10400 @example
10401 rotate=-PI/6
10402 @end example
10403
10404 @item
10405 Rotate the input by 45 degrees clockwise:
10406 @example
10407 rotate=45*PI/180
10408 @end example
10409
10410 @item
10411 Apply a constant rotation with period T, starting from an angle of PI/3:
10412 @example
10413 rotate=PI/3+2*PI*t/T
10414 @end example
10415
10416 @item
10417 Make the input video rotation oscillating with a period of T
10418 seconds and an amplitude of A radians:
10419 @example
10420 rotate=A*sin(2*PI/T*t)
10421 @end example
10422
10423 @item
10424 Rotate the video, output size is chosen so that the whole rotating
10425 input video is always completely contained in the output:
10426 @example
10427 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
10428 @end example
10429
10430 @item
10431 Rotate the video, reduce the output size so that no background is ever
10432 shown:
10433 @example
10434 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
10435 @end example
10436 @end itemize
10437
10438 @subsection Commands
10439
10440 The filter supports the following commands:
10441
10442 @table @option
10443 @item a, angle
10444 Set the angle expression.
10445 The command accepts the same syntax of the corresponding option.
10446
10447 If the specified expression is not valid, it is kept at its current
10448 value.
10449 @end table
10450
10451 @section sab
10452
10453 Apply Shape Adaptive Blur.
10454
10455 The filter accepts the following options:
10456
10457 @table @option
10458 @item luma_radius, lr
10459 Set luma blur filter strength, must be a value in range 0.1-4.0, default
10460 value is 1.0. A greater value will result in a more blurred image, and
10461 in slower processing.
10462
10463 @item luma_pre_filter_radius, lpfr
10464 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
10465 value is 1.0.
10466
10467 @item luma_strength, ls
10468 Set luma maximum difference between pixels to still be considered, must
10469 be a value in the 0.1-100.0 range, default value is 1.0.
10470
10471 @item chroma_radius, cr
10472 Set chroma blur filter strength, must be a value in range 0.1-4.0. A
10473 greater value will result in a more blurred image, and in slower
10474 processing.
10475
10476 @item chroma_pre_filter_radius, cpfr
10477 Set chroma pre-filter radius, must be a value in the 0.1-2.0 range.
10478
10479 @item chroma_strength, cs
10480 Set chroma maximum difference between pixels to still be considered,
10481 must be a value in the 0.1-100.0 range.
10482 @end table
10483
10484 Each chroma option value, if not explicitly specified, is set to the
10485 corresponding luma option value.
10486
10487 @anchor{scale}
10488 @section scale
10489
10490 Scale (resize) the input video, using the libswscale library.
10491
10492 The scale filter forces the output display aspect ratio to be the same
10493 of the input, by changing the output sample aspect ratio.
10494
10495 If the input image format is different from the format requested by
10496 the next filter, the scale filter will convert the input to the
10497 requested format.
10498
10499 @subsection Options
10500 The filter accepts the following options, or any of the options
10501 supported by the libswscale scaler.
10502
10503 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
10504 the complete list of scaler options.
10505
10506 @table @option
10507 @item width, w
10508 @item height, h
10509 Set the output video dimension expression. Default value is the input
10510 dimension.
10511
10512 If the value is 0, the input width is used for the output.
10513
10514 If one of the values is -1, the scale filter will use a value that
10515 maintains the aspect ratio of the input image, calculated from the
10516 other specified dimension. If both of them are -1, the input size is
10517 used
10518
10519 If one of the values is -n with n > 1, the scale filter will also use a value
10520 that maintains the aspect ratio of the input image, calculated from the other
10521 specified dimension. After that it will, however, make sure that the calculated
10522 dimension is divisible by n and adjust the value if necessary.
10523
10524 See below for the list of accepted constants for use in the dimension
10525 expression.
10526
10527 @item eval
10528 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
10529
10530 @table @samp
10531 @item init
10532 Only evaluate expressions once during the filter initialization or when a command is processed.
10533
10534 @item frame
10535 Evaluate expressions for each incoming frame.
10536
10537 @end table
10538
10539 Default value is @samp{init}.
10540
10541
10542 @item interl
10543 Set the interlacing mode. It accepts the following values:
10544
10545 @table @samp
10546 @item 1
10547 Force interlaced aware scaling.
10548
10549 @item 0
10550 Do not apply interlaced scaling.
10551
10552 @item -1
10553 Select interlaced aware scaling depending on whether the source frames
10554 are flagged as interlaced or not.
10555 @end table
10556
10557 Default value is @samp{0}.
10558
10559 @item flags
10560 Set libswscale scaling flags. See
10561 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
10562 complete list of values. If not explicitly specified the filter applies
10563 the default flags.
10564
10565
10566 @item param0, param1
10567 Set libswscale input parameters for scaling algorithms that need them. See
10568 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
10569 complete documentation. If not explicitly specified the filter applies
10570 empty parameters.
10571
10572
10573
10574 @item size, s
10575 Set the video size. For the syntax of this option, check the
10576 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
10577
10578 @item in_color_matrix
10579 @item out_color_matrix
10580 Set in/output YCbCr color space type.
10581
10582 This allows the autodetected value to be overridden as well as allows forcing
10583 a specific value used for the output and encoder.
10584
10585 If not specified, the color space type depends on the pixel format.
10586
10587 Possible values:
10588
10589 @table @samp
10590 @item auto
10591 Choose automatically.
10592
10593 @item bt709
10594 Format conforming to International Telecommunication Union (ITU)
10595 Recommendation BT.709.
10596
10597 @item fcc
10598 Set color space conforming to the United States Federal Communications
10599 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
10600
10601 @item bt601
10602 Set color space conforming to:
10603
10604 @itemize
10605 @item
10606 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
10607
10608 @item
10609 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
10610
10611 @item
10612 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
10613
10614 @end itemize
10615
10616 @item smpte240m
10617 Set color space conforming to SMPTE ST 240:1999.
10618 @end table
10619
10620 @item in_range
10621 @item out_range
10622 Set in/output YCbCr sample range.
10623
10624 This allows the autodetected value to be overridden as well as allows forcing
10625 a specific value used for the output and encoder. If not specified, the
10626 range depends on the pixel format. Possible values:
10627
10628 @table @samp
10629 @item auto
10630 Choose automatically.
10631
10632 @item jpeg/full/pc
10633 Set full range (0-255 in case of 8-bit luma).
10634
10635 @item mpeg/tv
10636 Set "MPEG" range (16-235 in case of 8-bit luma).
10637 @end table
10638
10639 @item force_original_aspect_ratio
10640 Enable decreasing or increasing output video width or height if necessary to
10641 keep the original aspect ratio. Possible values:
10642
10643 @table @samp
10644 @item disable
10645 Scale the video as specified and disable this feature.
10646
10647 @item decrease
10648 The output video dimensions will automatically be decreased if needed.
10649
10650 @item increase
10651 The output video dimensions will automatically be increased if needed.
10652
10653 @end table
10654
10655 One useful instance of this option is that when you know a specific device's
10656 maximum allowed resolution, you can use this to limit the output video to
10657 that, while retaining the aspect ratio. For example, device A allows
10658 1280x720 playback, and your video is 1920x800. Using this option (set it to
10659 decrease) and specifying 1280x720 to the command line makes the output
10660 1280x533.
10661
10662 Please note that this is a different thing than specifying -1 for @option{w}
10663 or @option{h}, you still need to specify the output resolution for this option
10664 to work.
10665
10666 @end table
10667
10668 The values of the @option{w} and @option{h} options are expressions
10669 containing the following constants:
10670
10671 @table @var
10672 @item in_w
10673 @item in_h
10674 The input width and height
10675
10676 @item iw
10677 @item ih
10678 These are the same as @var{in_w} and @var{in_h}.
10679
10680 @item out_w
10681 @item out_h
10682 The output (scaled) width and height
10683
10684 @item ow
10685 @item oh
10686 These are the same as @var{out_w} and @var{out_h}
10687
10688 @item a
10689 The same as @var{iw} / @var{ih}
10690
10691 @item sar
10692 input sample aspect ratio
10693
10694 @item dar
10695 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
10696
10697 @item hsub
10698 @item vsub
10699 horizontal and vertical input chroma subsample values. For example for the
10700 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10701
10702 @item ohsub
10703 @item ovsub
10704 horizontal and vertical output chroma subsample values. For example for the
10705 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10706 @end table
10707
10708 @subsection Examples
10709
10710 @itemize
10711 @item
10712 Scale the input video to a size of 200x100
10713 @example
10714 scale=w=200:h=100
10715 @end example
10716
10717 This is equivalent to:
10718 @example
10719 scale=200:100
10720 @end example
10721
10722 or:
10723 @example
10724 scale=200x100
10725 @end example
10726
10727 @item
10728 Specify a size abbreviation for the output size:
10729 @example
10730 scale=qcif
10731 @end example
10732
10733 which can also be written as:
10734 @example
10735 scale=size=qcif
10736 @end example
10737
10738 @item
10739 Scale the input to 2x:
10740 @example
10741 scale=w=2*iw:h=2*ih
10742 @end example
10743
10744 @item
10745 The above is the same as:
10746 @example
10747 scale=2*in_w:2*in_h
10748 @end example
10749
10750 @item
10751 Scale the input to 2x with forced interlaced scaling:
10752 @example
10753 scale=2*iw:2*ih:interl=1
10754 @end example
10755
10756 @item
10757 Scale the input to half size:
10758 @example
10759 scale=w=iw/2:h=ih/2
10760 @end example
10761
10762 @item
10763 Increase the width, and set the height to the same size:
10764 @example
10765 scale=3/2*iw:ow
10766 @end example
10767
10768 @item
10769 Seek Greek harmony:
10770 @example
10771 scale=iw:1/PHI*iw
10772 scale=ih*PHI:ih
10773 @end example
10774
10775 @item
10776 Increase the height, and set the width to 3/2 of the height:
10777 @example
10778 scale=w=3/2*oh:h=3/5*ih
10779 @end example
10780
10781 @item
10782 Increase the size, making the size a multiple of the chroma
10783 subsample values:
10784 @example
10785 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
10786 @end example
10787
10788 @item
10789 Increase the width to a maximum of 500 pixels,
10790 keeping the same aspect ratio as the input:
10791 @example
10792 scale=w='min(500\, iw*3/2):h=-1'
10793 @end example
10794 @end itemize
10795
10796 @subsection Commands
10797
10798 This filter supports the following commands:
10799 @table @option
10800 @item width, w
10801 @item height, h
10802 Set the output video dimension expression.
10803 The command accepts the same syntax of the corresponding option.
10804
10805 If the specified expression is not valid, it is kept at its current
10806 value.
10807 @end table
10808
10809 @section scale2ref
10810
10811 Scale (resize) the input video, based on a reference video.
10812
10813 See the scale filter for available options, scale2ref supports the same but
10814 uses the reference video instead of the main input as basis.
10815
10816 @subsection Examples
10817
10818 @itemize
10819 @item
10820 Scale a subtitle stream to match the main video in size before overlaying
10821 @example
10822 'scale2ref[b][a];[a][b]overlay'
10823 @end example
10824 @end itemize
10825
10826 @section selectivecolor
10827
10828 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
10829 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
10830 by the "purity" of the color (that is, how saturated it already is).
10831
10832 This filter is similar to the Adobe Photoshop Selective Color tool.
10833
10834 The filter accepts the following options:
10835
10836 @table @option
10837 @item correction_method
10838 Select color correction method.
10839
10840 Available values are:
10841 @table @samp
10842 @item absolute
10843 Specified adjustments are applied "as-is" (added/subtracted to original pixel
10844 component value).
10845 @item relative
10846 Specified adjustments are relative to the original component value.
10847 @end table
10848 Default is @code{absolute}.
10849 @item reds
10850 Adjustments for red pixels (pixels where the red component is the maximum)
10851 @item yellows
10852 Adjustments for yellow pixels (pixels where the blue component is the minimum)
10853 @item greens
10854 Adjustments for green pixels (pixels where the green component is the maximum)
10855 @item cyans
10856 Adjustments for cyan pixels (pixels where the red component is the minimum)
10857 @item blues
10858 Adjustments for blue pixels (pixels where the blue component is the maximum)
10859 @item magentas
10860 Adjustments for magenta pixels (pixels where the green component is the minimum)
10861 @item whites
10862 Adjustments for white pixels (pixels where all components are greater than 128)
10863 @item neutrals
10864 Adjustments for all pixels except pure black and pure white
10865 @item blacks
10866 Adjustments for black pixels (pixels where all components are lesser than 128)
10867 @item psfile
10868 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
10869 @end table
10870
10871 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
10872 4 space separated floating point adjustment values in the [-1,1] range,
10873 respectively to adjust the amount of cyan, magenta, yellow and black for the
10874 pixels of its range.
10875
10876 @subsection Examples
10877
10878 @itemize
10879 @item
10880 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
10881 increase magenta by 27% in blue areas:
10882 @example
10883 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
10884 @end example
10885
10886 @item
10887 Use a Photoshop selective color preset:
10888 @example
10889 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
10890 @end example
10891 @end itemize
10892
10893 @section separatefields
10894
10895 The @code{separatefields} takes a frame-based video input and splits
10896 each frame into its components fields, producing a new half height clip
10897 with twice the frame rate and twice the frame count.
10898
10899 This filter use field-dominance information in frame to decide which
10900 of each pair of fields to place first in the output.
10901 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
10902
10903 @section setdar, setsar
10904
10905 The @code{setdar} filter sets the Display Aspect Ratio for the filter
10906 output video.
10907
10908 This is done by changing the specified Sample (aka Pixel) Aspect
10909 Ratio, according to the following equation:
10910 @example
10911 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
10912 @end example
10913
10914 Keep in mind that the @code{setdar} filter does not modify the pixel
10915 dimensions of the video frame. Also, the display aspect ratio set by
10916 this filter may be changed by later filters in the filterchain,
10917 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
10918 applied.
10919
10920 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
10921 the filter output video.
10922
10923 Note that as a consequence of the application of this filter, the
10924 output display aspect ratio will change according to the equation
10925 above.
10926
10927 Keep in mind that the sample aspect ratio set by the @code{setsar}
10928 filter may be changed by later filters in the filterchain, e.g. if
10929 another "setsar" or a "setdar" filter is applied.
10930
10931 It accepts the following parameters:
10932
10933 @table @option
10934 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
10935 Set the aspect ratio used by the filter.
10936
10937 The parameter can be a floating point number string, an expression, or
10938 a string of the form @var{num}:@var{den}, where @var{num} and
10939 @var{den} are the numerator and denominator of the aspect ratio. If
10940 the parameter is not specified, it is assumed the value "0".
10941 In case the form "@var{num}:@var{den}" is used, the @code{:} character
10942 should be escaped.
10943
10944 @item max
10945 Set the maximum integer value to use for expressing numerator and
10946 denominator when reducing the expressed aspect ratio to a rational.
10947 Default value is @code{100}.
10948
10949 @end table
10950
10951 The parameter @var{sar} is an expression containing
10952 the following constants:
10953
10954 @table @option
10955 @item E, PI, PHI
10956 These are approximated values for the mathematical constants e
10957 (Euler's number), pi (Greek pi), and phi (the golden ratio).
10958
10959 @item w, h
10960 The input width and height.
10961
10962 @item a
10963 These are the same as @var{w} / @var{h}.
10964
10965 @item sar
10966 The input sample aspect ratio.
10967
10968 @item dar
10969 The input display aspect ratio. It is the same as
10970 (@var{w} / @var{h}) * @var{sar}.
10971
10972 @item hsub, vsub
10973 Horizontal and vertical chroma subsample values. For example, for the
10974 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10975 @end table
10976
10977 @subsection Examples
10978
10979 @itemize
10980
10981 @item
10982 To change the display aspect ratio to 16:9, specify one of the following:
10983 @example
10984 setdar=dar=1.77777
10985 setdar=dar=16/9
10986 setdar=dar=1.77777
10987 @end example
10988
10989 @item
10990 To change the sample aspect ratio to 10:11, specify:
10991 @example
10992 setsar=sar=10/11
10993 @end example
10994
10995 @item
10996 To set a display aspect ratio of 16:9, and specify a maximum integer value of
10997 1000 in the aspect ratio reduction, use the command:
10998 @example
10999 setdar=ratio=16/9:max=1000
11000 @end example
11001
11002 @end itemize
11003
11004 @anchor{setfield}
11005 @section setfield
11006
11007 Force field for the output video frame.
11008
11009 The @code{setfield} filter marks the interlace type field for the
11010 output frames. It does not change the input frame, but only sets the
11011 corresponding property, which affects how the frame is treated by
11012 following filters (e.g. @code{fieldorder} or @code{yadif}).
11013
11014 The filter accepts the following options:
11015
11016 @table @option
11017
11018 @item mode
11019 Available values are:
11020
11021 @table @samp
11022 @item auto
11023 Keep the same field property.
11024
11025 @item bff
11026 Mark the frame as bottom-field-first.
11027
11028 @item tff
11029 Mark the frame as top-field-first.
11030
11031 @item prog
11032 Mark the frame as progressive.
11033 @end table
11034 @end table
11035
11036 @section showinfo
11037
11038 Show a line containing various information for each input video frame.
11039 The input video is not modified.
11040
11041 The shown line contains a sequence of key/value pairs of the form
11042 @var{key}:@var{value}.
11043
11044 The following values are shown in the output:
11045
11046 @table @option
11047 @item n
11048 The (sequential) number of the input frame, starting from 0.
11049
11050 @item pts
11051 The Presentation TimeStamp of the input frame, expressed as a number of
11052 time base units. The time base unit depends on the filter input pad.
11053
11054 @item pts_time
11055 The Presentation TimeStamp of the input frame, expressed as a number of
11056 seconds.
11057
11058 @item pos
11059 The position of the frame in the input stream, or -1 if this information is
11060 unavailable and/or meaningless (for example in case of synthetic video).
11061
11062 @item fmt
11063 The pixel format name.
11064
11065 @item sar
11066 The sample aspect ratio of the input frame, expressed in the form
11067 @var{num}/@var{den}.
11068
11069 @item s
11070 The size of the input frame. For the syntax of this option, check the
11071 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
11072
11073 @item i
11074 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
11075 for bottom field first).
11076
11077 @item iskey
11078 This is 1 if the frame is a key frame, 0 otherwise.
11079
11080 @item type
11081 The picture type of the input frame ("I" for an I-frame, "P" for a
11082 P-frame, "B" for a B-frame, or "?" for an unknown type).
11083 Also refer to the documentation of the @code{AVPictureType} enum and of
11084 the @code{av_get_picture_type_char} function defined in
11085 @file{libavutil/avutil.h}.
11086
11087 @item checksum
11088 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
11089
11090 @item plane_checksum
11091 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
11092 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
11093 @end table
11094
11095 @section showpalette
11096
11097 Displays the 256 colors palette of each frame. This filter is only relevant for
11098 @var{pal8} pixel format frames.
11099
11100 It accepts the following option:
11101
11102 @table @option
11103 @item s
11104 Set the size of the box used to represent one palette color entry. Default is
11105 @code{30} (for a @code{30x30} pixel box).
11106 @end table
11107
11108 @section shuffleframes
11109
11110 Reorder and/or duplicate video frames.
11111
11112 It accepts the following parameters:
11113
11114 @table @option
11115 @item mapping
11116 Set the destination indexes of input frames.
11117 This is space or '|' separated list of indexes that maps input frames to output
11118 frames. Number of indexes also sets maximal value that each index may have.
11119 @end table
11120
11121 The first frame has the index 0. The default is to keep the input unchanged.
11122
11123 Swap second and third frame of every three frames of the input:
11124 @example
11125 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
11126 @end example
11127
11128 @section shuffleplanes
11129
11130 Reorder and/or duplicate video planes.
11131
11132 It accepts the following parameters:
11133
11134 @table @option
11135
11136 @item map0
11137 The index of the input plane to be used as the first output plane.
11138
11139 @item map1
11140 The index of the input plane to be used as the second output plane.
11141
11142 @item map2
11143 The index of the input plane to be used as the third output plane.
11144
11145 @item map3
11146 The index of the input plane to be used as the fourth output plane.
11147
11148 @end table
11149
11150 The first plane has the index 0. The default is to keep the input unchanged.
11151
11152 Swap the second and third planes of the input:
11153 @example
11154 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
11155 @end example
11156
11157 @anchor{signalstats}
11158 @section signalstats
11159 Evaluate various visual metrics that assist in determining issues associated
11160 with the digitization of analog video media.
11161
11162 By default the filter will log these metadata values:
11163
11164 @table @option
11165 @item YMIN
11166 Display the minimal Y value contained within the input frame. Expressed in
11167 range of [0-255].
11168
11169 @item YLOW
11170 Display the Y value at the 10% percentile within the input frame. Expressed in
11171 range of [0-255].
11172
11173 @item YAVG
11174 Display the average Y value within the input frame. Expressed in range of
11175 [0-255].
11176
11177 @item YHIGH
11178 Display the Y value at the 90% percentile within the input frame. Expressed in
11179 range of [0-255].
11180
11181 @item YMAX
11182 Display the maximum Y value contained within the input frame. Expressed in
11183 range of [0-255].
11184
11185 @item UMIN
11186 Display the minimal U value contained within the input frame. Expressed in
11187 range of [0-255].
11188
11189 @item ULOW
11190 Display the U value at the 10% percentile within the input frame. Expressed in
11191 range of [0-255].
11192
11193 @item UAVG
11194 Display the average U value within the input frame. Expressed in range of
11195 [0-255].
11196
11197 @item UHIGH
11198 Display the U value at the 90% percentile within the input frame. Expressed in
11199 range of [0-255].
11200
11201 @item UMAX
11202 Display the maximum U value contained within the input frame. Expressed in
11203 range of [0-255].
11204
11205 @item VMIN
11206 Display the minimal V value contained within the input frame. Expressed in
11207 range of [0-255].
11208
11209 @item VLOW
11210 Display the V value at the 10% percentile within the input frame. Expressed in
11211 range of [0-255].
11212
11213 @item VAVG
11214 Display the average V value within the input frame. Expressed in range of
11215 [0-255].
11216
11217 @item VHIGH
11218 Display the V value at the 90% percentile within the input frame. Expressed in
11219 range of [0-255].
11220
11221 @item VMAX
11222 Display the maximum V value contained within the input frame. Expressed in
11223 range of [0-255].
11224
11225 @item SATMIN
11226 Display the minimal saturation value contained within the input frame.
11227 Expressed in range of [0-~181.02].
11228
11229 @item SATLOW
11230 Display the saturation value at the 10% percentile within the input frame.
11231 Expressed in range of [0-~181.02].
11232
11233 @item SATAVG
11234 Display the average saturation value within the input frame. Expressed in range
11235 of [0-~181.02].
11236
11237 @item SATHIGH
11238 Display the saturation value at the 90% percentile within the input frame.
11239 Expressed in range of [0-~181.02].
11240
11241 @item SATMAX
11242 Display the maximum saturation value contained within the input frame.
11243 Expressed in range of [0-~181.02].
11244
11245 @item HUEMED
11246 Display the median value for hue within the input frame. Expressed in range of
11247 [0-360].
11248
11249 @item HUEAVG
11250 Display the average value for hue within the input frame. Expressed in range of
11251 [0-360].
11252
11253 @item YDIF
11254 Display the average of sample value difference between all values of the Y
11255 plane in the current frame and corresponding values of the previous input frame.
11256 Expressed in range of [0-255].
11257
11258 @item UDIF
11259 Display the average of sample value difference between all values of the U
11260 plane in the current frame and corresponding values of the previous input frame.
11261 Expressed in range of [0-255].
11262
11263 @item VDIF
11264 Display the average of sample value difference between all values of the V
11265 plane in the current frame and corresponding values of the previous input frame.
11266 Expressed in range of [0-255].
11267 @end table
11268
11269 The filter accepts the following options:
11270
11271 @table @option
11272 @item stat
11273 @item out
11274
11275 @option{stat} specify an additional form of image analysis.
11276 @option{out} output video with the specified type of pixel highlighted.
11277
11278 Both options accept the following values:
11279
11280 @table @samp
11281 @item tout
11282 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
11283 unlike the neighboring pixels of the same field. Examples of temporal outliers
11284 include the results of video dropouts, head clogs, or tape tracking issues.
11285
11286 @item vrep
11287 Identify @var{vertical line repetition}. Vertical line repetition includes
11288 similar rows of pixels within a frame. In born-digital video vertical line
11289 repetition is common, but this pattern is uncommon in video digitized from an
11290 analog source. When it occurs in video that results from the digitization of an
11291 analog source it can indicate concealment from a dropout compensator.
11292
11293 @item brng
11294 Identify pixels that fall outside of legal broadcast range.
11295 @end table
11296
11297 @item color, c
11298 Set the highlight color for the @option{out} option. The default color is
11299 yellow.
11300 @end table
11301
11302 @subsection Examples
11303
11304 @itemize
11305 @item
11306 Output data of various video metrics:
11307 @example
11308 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
11309 @end example
11310
11311 @item
11312 Output specific data about the minimum and maximum values of the Y plane per frame:
11313 @example
11314 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
11315 @end example
11316
11317 @item
11318 Playback video while highlighting pixels that are outside of broadcast range in red.
11319 @example
11320 ffplay example.mov -vf signalstats="out=brng:color=red"
11321 @end example
11322
11323 @item
11324 Playback video with signalstats metadata drawn over the frame.
11325 @example
11326 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
11327 @end example
11328
11329 The contents of signalstat_drawtext.txt used in the command are:
11330 @example
11331 time %@{pts:hms@}
11332 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
11333 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
11334 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
11335 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
11336
11337 @end example
11338 @end itemize
11339
11340 @anchor{smartblur}
11341 @section smartblur
11342
11343 Blur the input video without impacting the outlines.
11344
11345 It accepts the following options:
11346
11347 @table @option
11348 @item luma_radius, lr
11349 Set the luma radius. The option value must be a float number in
11350 the range [0.1,5.0] that specifies the variance of the gaussian filter
11351 used to blur the image (slower if larger). Default value is 1.0.
11352
11353 @item luma_strength, ls
11354 Set the luma strength. The option value must be a float number
11355 in the range [-1.0,1.0] that configures the blurring. A value included
11356 in [0.0,1.0] will blur the image whereas a value included in
11357 [-1.0,0.0] will sharpen the image. Default value is 1.0.
11358
11359 @item luma_threshold, lt
11360 Set the luma threshold used as a coefficient to determine
11361 whether a pixel should be blurred or not. The option value must be an
11362 integer in the range [-30,30]. A value of 0 will filter all the image,
11363 a value included in [0,30] will filter flat areas and a value included
11364 in [-30,0] will filter edges. Default value is 0.
11365
11366 @item chroma_radius, cr
11367 Set the chroma radius. The option value must be a float number in
11368 the range [0.1,5.0] that specifies the variance of the gaussian filter
11369 used to blur the image (slower if larger). Default value is 1.0.
11370
11371 @item chroma_strength, cs
11372 Set the chroma strength. The option value must be a float number
11373 in the range [-1.0,1.0] that configures the blurring. A value included
11374 in [0.0,1.0] will blur the image whereas a value included in
11375 [-1.0,0.0] will sharpen the image. Default value is 1.0.
11376
11377 @item chroma_threshold, ct
11378 Set the chroma threshold used as a coefficient to determine
11379 whether a pixel should be blurred or not. The option value must be an
11380 integer in the range [-30,30]. A value of 0 will filter all the image,
11381 a value included in [0,30] will filter flat areas and a value included
11382 in [-30,0] will filter edges. Default value is 0.
11383 @end table
11384
11385 If a chroma option is not explicitly set, the corresponding luma value
11386 is set.
11387
11388 @section ssim
11389
11390 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
11391
11392 This filter takes in input two input videos, the first input is
11393 considered the "main" source and is passed unchanged to the
11394 output. The second input is used as a "reference" video for computing
11395 the SSIM.
11396
11397 Both video inputs must have the same resolution and pixel format for
11398 this filter to work correctly. Also it assumes that both inputs
11399 have the same number of frames, which are compared one by one.
11400
11401 The filter stores the calculated SSIM of each frame.
11402
11403 The description of the accepted parameters follows.
11404
11405 @table @option
11406 @item stats_file, f
11407 If specified the filter will use the named file to save the SSIM of
11408 each individual frame. When filename equals "-" the data is sent to
11409 standard output.
11410 @end table
11411
11412 The file printed if @var{stats_file} is selected, contains a sequence of
11413 key/value pairs of the form @var{key}:@var{value} for each compared
11414 couple of frames.
11415
11416 A description of each shown parameter follows:
11417
11418 @table @option
11419 @item n
11420 sequential number of the input frame, starting from 1
11421
11422 @item Y, U, V, R, G, B
11423 SSIM of the compared frames for the component specified by the suffix.
11424
11425 @item All
11426 SSIM of the compared frames for the whole frame.
11427
11428 @item dB
11429 Same as above but in dB representation.
11430 @end table
11431
11432 For example:
11433 @example
11434 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
11435 [main][ref] ssim="stats_file=stats.log" [out]
11436 @end example
11437
11438 On this example the input file being processed is compared with the
11439 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
11440 is stored in @file{stats.log}.
11441
11442 Another example with both psnr and ssim at same time:
11443 @example
11444 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
11445 @end example
11446
11447 @section stereo3d
11448
11449 Convert between different stereoscopic image formats.
11450
11451 The filters accept the following options:
11452
11453 @table @option
11454 @item in
11455 Set stereoscopic image format of input.
11456
11457 Available values for input image formats are:
11458 @table @samp
11459 @item sbsl
11460 side by side parallel (left eye left, right eye right)
11461
11462 @item sbsr
11463 side by side crosseye (right eye left, left eye right)
11464
11465 @item sbs2l
11466 side by side parallel with half width resolution
11467 (left eye left, right eye right)
11468
11469 @item sbs2r
11470 side by side crosseye with half width resolution
11471 (right eye left, left eye right)
11472
11473 @item abl
11474 above-below (left eye above, right eye below)
11475
11476 @item abr
11477 above-below (right eye above, left eye below)
11478
11479 @item ab2l
11480 above-below with half height resolution
11481 (left eye above, right eye below)
11482
11483 @item ab2r
11484 above-below with half height resolution
11485 (right eye above, left eye below)
11486
11487 @item al
11488 alternating frames (left eye first, right eye second)
11489
11490 @item ar
11491 alternating frames (right eye first, left eye second)
11492
11493 @item irl
11494 interleaved rows (left eye has top row, right eye starts on next row)
11495
11496 @item irr
11497 interleaved rows (right eye has top row, left eye starts on next row)
11498
11499 @item icl
11500 interleaved columns, left eye first
11501
11502 @item icr
11503 interleaved columns, right eye first
11504
11505 Default value is @samp{sbsl}.
11506 @end table
11507
11508 @item out
11509 Set stereoscopic image format of output.
11510
11511 @table @samp
11512 @item sbsl
11513 side by side parallel (left eye left, right eye right)
11514
11515 @item sbsr
11516 side by side crosseye (right eye left, left eye right)
11517
11518 @item sbs2l
11519 side by side parallel with half width resolution
11520 (left eye left, right eye right)
11521
11522 @item sbs2r
11523 side by side crosseye with half width resolution
11524 (right eye left, left eye right)
11525
11526 @item abl
11527 above-below (left eye above, right eye below)
11528
11529 @item abr
11530 above-below (right eye above, left eye below)
11531
11532 @item ab2l
11533 above-below with half height resolution
11534 (left eye above, right eye below)
11535
11536 @item ab2r
11537 above-below with half height resolution
11538 (right eye above, left eye below)
11539
11540 @item al
11541 alternating frames (left eye first, right eye second)
11542
11543 @item ar
11544 alternating frames (right eye first, left eye second)
11545
11546 @item irl
11547 interleaved rows (left eye has top row, right eye starts on next row)
11548
11549 @item irr
11550 interleaved rows (right eye has top row, left eye starts on next row)
11551
11552 @item arbg
11553 anaglyph red/blue gray
11554 (red filter on left eye, blue filter on right eye)
11555
11556 @item argg
11557 anaglyph red/green gray
11558 (red filter on left eye, green filter on right eye)
11559
11560 @item arcg
11561 anaglyph red/cyan gray
11562 (red filter on left eye, cyan filter on right eye)
11563
11564 @item arch
11565 anaglyph red/cyan half colored
11566 (red filter on left eye, cyan filter on right eye)
11567
11568 @item arcc
11569 anaglyph red/cyan color
11570 (red filter on left eye, cyan filter on right eye)
11571
11572 @item arcd
11573 anaglyph red/cyan color optimized with the least squares projection of dubois
11574 (red filter on left eye, cyan filter on right eye)
11575
11576 @item agmg
11577 anaglyph green/magenta gray
11578 (green filter on left eye, magenta filter on right eye)
11579
11580 @item agmh
11581 anaglyph green/magenta half colored
11582 (green filter on left eye, magenta filter on right eye)
11583
11584 @item agmc
11585 anaglyph green/magenta colored
11586 (green filter on left eye, magenta filter on right eye)
11587
11588 @item agmd
11589 anaglyph green/magenta color optimized with the least squares projection of dubois
11590 (green filter on left eye, magenta filter on right eye)
11591
11592 @item aybg
11593 anaglyph yellow/blue gray
11594 (yellow filter on left eye, blue filter on right eye)
11595
11596 @item aybh
11597 anaglyph yellow/blue half colored
11598 (yellow filter on left eye, blue filter on right eye)
11599
11600 @item aybc
11601 anaglyph yellow/blue colored
11602 (yellow filter on left eye, blue filter on right eye)
11603
11604 @item aybd
11605 anaglyph yellow/blue color optimized with the least squares projection of dubois
11606 (yellow filter on left eye, blue filter on right eye)
11607
11608 @item ml
11609 mono output (left eye only)
11610
11611 @item mr
11612 mono output (right eye only)
11613
11614 @item chl
11615 checkerboard, left eye first
11616
11617 @item chr
11618 checkerboard, right eye first
11619
11620 @item icl
11621 interleaved columns, left eye first
11622
11623 @item icr
11624 interleaved columns, right eye first
11625 @end table
11626
11627 Default value is @samp{arcd}.
11628 @end table
11629
11630 @subsection Examples
11631
11632 @itemize
11633 @item
11634 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
11635 @example
11636 stereo3d=sbsl:aybd
11637 @end example
11638
11639 @item
11640 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
11641 @example
11642 stereo3d=abl:sbsr
11643 @end example
11644 @end itemize
11645
11646 @section streamselect, astreamselect
11647 Select video or audio streams.
11648
11649 The filter accepts the following options:
11650
11651 @table @option
11652 @item inputs
11653 Set number of inputs. Default is 2.
11654
11655 @item map
11656 Set input indexes to remap to outputs.
11657 @end table
11658
11659 @subsection Commands
11660
11661 The @code{streamselect} and @code{astreamselect} filter supports the following
11662 commands:
11663
11664 @table @option
11665 @item map
11666 Set input indexes to remap to outputs.
11667 @end table
11668
11669 @subsection Examples
11670
11671 @itemize
11672 @item
11673 Select first 5 seconds 1st stream and rest of time 2nd stream:
11674 @example
11675 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
11676 @end example
11677
11678 @item
11679 Same as above, but for audio:
11680 @example
11681 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
11682 @end example
11683 @end itemize
11684
11685 @anchor{spp}
11686 @section spp
11687
11688 Apply a simple postprocessing filter that compresses and decompresses the image
11689 at several (or - in the case of @option{quality} level @code{6} - all) shifts
11690 and average the results.
11691
11692 The filter accepts the following options:
11693
11694 @table @option
11695 @item quality
11696 Set quality. This option defines the number of levels for averaging. It accepts
11697 an integer in the range 0-6. If set to @code{0}, the filter will have no
11698 effect. A value of @code{6} means the higher quality. For each increment of
11699 that value the speed drops by a factor of approximately 2.  Default value is
11700 @code{3}.
11701
11702 @item qp
11703 Force a constant quantization parameter. If not set, the filter will use the QP
11704 from the video stream (if available).
11705
11706 @item mode
11707 Set thresholding mode. Available modes are:
11708
11709 @table @samp
11710 @item hard
11711 Set hard thresholding (default).
11712 @item soft
11713 Set soft thresholding (better de-ringing effect, but likely blurrier).
11714 @end table
11715
11716 @item use_bframe_qp
11717 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
11718 option may cause flicker since the B-Frames have often larger QP. Default is
11719 @code{0} (not enabled).
11720 @end table
11721
11722 @anchor{subtitles}
11723 @section subtitles
11724
11725 Draw subtitles on top of input video using the libass library.
11726
11727 To enable compilation of this filter you need to configure FFmpeg with
11728 @code{--enable-libass}. This filter also requires a build with libavcodec and
11729 libavformat to convert the passed subtitles file to ASS (Advanced Substation
11730 Alpha) subtitles format.
11731
11732 The filter accepts the following options:
11733
11734 @table @option
11735 @item filename, f
11736 Set the filename of the subtitle file to read. It must be specified.
11737
11738 @item original_size
11739 Specify the size of the original video, the video for which the ASS file
11740 was composed. For the syntax of this option, check the
11741 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
11742 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
11743 correctly scale the fonts if the aspect ratio has been changed.
11744
11745 @item fontsdir
11746 Set a directory path containing fonts that can be used by the filter.
11747 These fonts will be used in addition to whatever the font provider uses.
11748
11749 @item charenc
11750 Set subtitles input character encoding. @code{subtitles} filter only. Only
11751 useful if not UTF-8.
11752
11753 @item stream_index, si
11754 Set subtitles stream index. @code{subtitles} filter only.
11755
11756 @item force_style
11757 Override default style or script info parameters of the subtitles. It accepts a
11758 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
11759 @end table
11760
11761 If the first key is not specified, it is assumed that the first value
11762 specifies the @option{filename}.
11763
11764 For example, to render the file @file{sub.srt} on top of the input
11765 video, use the command:
11766 @example
11767 subtitles=sub.srt
11768 @end example
11769
11770 which is equivalent to:
11771 @example
11772 subtitles=filename=sub.srt
11773 @end example
11774
11775 To render the default subtitles stream from file @file{video.mkv}, use:
11776 @example
11777 subtitles=video.mkv
11778 @end example
11779
11780 To render the second subtitles stream from that file, use:
11781 @example
11782 subtitles=video.mkv:si=1
11783 @end example
11784
11785 To make the subtitles stream from @file{sub.srt} appear in transparent green
11786 @code{DejaVu Serif}, use:
11787 @example
11788 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HAA00FF00'
11789 @end example
11790
11791 @section super2xsai
11792
11793 Scale the input by 2x and smooth using the Super2xSaI (Scale and
11794 Interpolate) pixel art scaling algorithm.
11795
11796 Useful for enlarging pixel art images without reducing sharpness.
11797
11798 @section swaprect
11799
11800 Swap two rectangular objects in video.
11801
11802 This filter accepts the following options:
11803
11804 @table @option
11805 @item w
11806 Set object width.
11807
11808 @item h
11809 Set object height.
11810
11811 @item x1
11812 Set 1st rect x coordinate.
11813
11814 @item y1
11815 Set 1st rect y coordinate.
11816
11817 @item x2
11818 Set 2nd rect x coordinate.
11819
11820 @item y2
11821 Set 2nd rect y coordinate.
11822
11823 All expressions are evaluated once for each frame.
11824 @end table
11825
11826 The all options are expressions containing the following constants:
11827
11828 @table @option
11829 @item w
11830 @item h
11831 The input width and height.
11832
11833 @item a
11834 same as @var{w} / @var{h}
11835
11836 @item sar
11837 input sample aspect ratio
11838
11839 @item dar
11840 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
11841
11842 @item n
11843 The number of the input frame, starting from 0.
11844
11845 @item t
11846 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
11847
11848 @item pos
11849 the position in the file of the input frame, NAN if unknown
11850 @end table
11851
11852 @section swapuv
11853 Swap U & V plane.
11854
11855 @section telecine
11856
11857 Apply telecine process to the video.
11858
11859 This filter accepts the following options:
11860
11861 @table @option
11862 @item first_field
11863 @table @samp
11864 @item top, t
11865 top field first
11866 @item bottom, b
11867 bottom field first
11868 The default value is @code{top}.
11869 @end table
11870
11871 @item pattern
11872 A string of numbers representing the pulldown pattern you wish to apply.
11873 The default value is @code{23}.
11874 @end table
11875
11876 @example
11877 Some typical patterns:
11878
11879 NTSC output (30i):
11880 27.5p: 32222
11881 24p: 23 (classic)
11882 24p: 2332 (preferred)
11883 20p: 33
11884 18p: 334
11885 16p: 3444
11886
11887 PAL output (25i):
11888 27.5p: 12222
11889 24p: 222222222223 ("Euro pulldown")
11890 16.67p: 33
11891 16p: 33333334
11892 @end example
11893
11894 @section thumbnail
11895 Select the most representative frame in a given sequence of consecutive frames.
11896
11897 The filter accepts the following options:
11898
11899 @table @option
11900 @item n
11901 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
11902 will pick one of them, and then handle the next batch of @var{n} frames until
11903 the end. Default is @code{100}.
11904 @end table
11905
11906 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
11907 value will result in a higher memory usage, so a high value is not recommended.
11908
11909 @subsection Examples
11910
11911 @itemize
11912 @item
11913 Extract one picture each 50 frames:
11914 @example
11915 thumbnail=50
11916 @end example
11917
11918 @item
11919 Complete example of a thumbnail creation with @command{ffmpeg}:
11920 @example
11921 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
11922 @end example
11923 @end itemize
11924
11925 @section tile
11926
11927 Tile several successive frames together.
11928
11929 The filter accepts the following options:
11930
11931 @table @option
11932
11933 @item layout
11934 Set the grid size (i.e. the number of lines and columns). For the syntax of
11935 this option, check the
11936 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
11937
11938 @item nb_frames
11939 Set the maximum number of frames to render in the given area. It must be less
11940 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
11941 the area will be used.
11942
11943 @item margin
11944 Set the outer border margin in pixels.
11945
11946 @item padding
11947 Set the inner border thickness (i.e. the number of pixels between frames). For
11948 more advanced padding options (such as having different values for the edges),
11949 refer to the pad video filter.
11950
11951 @item color
11952 Specify the color of the unused area. For the syntax of this option, check the
11953 "Color" section in the ffmpeg-utils manual. The default value of @var{color}
11954 is "black".
11955 @end table
11956
11957 @subsection Examples
11958
11959 @itemize
11960 @item
11961 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
11962 @example
11963 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
11964 @end example
11965 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
11966 duplicating each output frame to accommodate the originally detected frame
11967 rate.
11968
11969 @item
11970 Display @code{5} pictures in an area of @code{3x2} frames,
11971 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
11972 mixed flat and named options:
11973 @example
11974 tile=3x2:nb_frames=5:padding=7:margin=2
11975 @end example
11976 @end itemize
11977
11978 @section tinterlace
11979
11980 Perform various types of temporal field interlacing.
11981
11982 Frames are counted starting from 1, so the first input frame is
11983 considered odd.
11984
11985 The filter accepts the following options:
11986
11987 @table @option
11988
11989 @item mode
11990 Specify the mode of the interlacing. This option can also be specified
11991 as a value alone. See below for a list of values for this option.
11992
11993 Available values are:
11994
11995 @table @samp
11996 @item merge, 0
11997 Move odd frames into the upper field, even into the lower field,
11998 generating a double height frame at half frame rate.
11999 @example
12000  ------> time
12001 Input:
12002 Frame 1         Frame 2         Frame 3         Frame 4
12003
12004 11111           22222           33333           44444
12005 11111           22222           33333           44444
12006 11111           22222           33333           44444
12007 11111           22222           33333           44444
12008
12009 Output:
12010 11111                           33333
12011 22222                           44444
12012 11111                           33333
12013 22222                           44444
12014 11111                           33333
12015 22222                           44444
12016 11111                           33333
12017 22222                           44444
12018 @end example
12019
12020 @item drop_odd, 1
12021 Only output even frames, odd frames are dropped, generating a frame with
12022 unchanged height at half frame rate.
12023
12024 @example
12025  ------> time
12026 Input:
12027 Frame 1         Frame 2         Frame 3         Frame 4
12028
12029 11111           22222           33333           44444
12030 11111           22222           33333           44444
12031 11111           22222           33333           44444
12032 11111           22222           33333           44444
12033
12034 Output:
12035                 22222                           44444
12036                 22222                           44444
12037                 22222                           44444
12038                 22222                           44444
12039 @end example
12040
12041 @item drop_even, 2
12042 Only output odd frames, even frames are dropped, generating a frame with
12043 unchanged height at half frame rate.
12044
12045 @example
12046  ------> time
12047 Input:
12048 Frame 1         Frame 2         Frame 3         Frame 4
12049
12050 11111           22222           33333           44444
12051 11111           22222           33333           44444
12052 11111           22222           33333           44444
12053 11111           22222           33333           44444
12054
12055 Output:
12056 11111                           33333
12057 11111                           33333
12058 11111                           33333
12059 11111                           33333
12060 @end example
12061
12062 @item pad, 3
12063 Expand each frame to full height, but pad alternate lines with black,
12064 generating a frame with double height at the same input frame rate.
12065
12066 @example
12067  ------> time
12068 Input:
12069 Frame 1         Frame 2         Frame 3         Frame 4
12070
12071 11111           22222           33333           44444
12072 11111           22222           33333           44444
12073 11111           22222           33333           44444
12074 11111           22222           33333           44444
12075
12076 Output:
12077 11111           .....           33333           .....
12078 .....           22222           .....           44444
12079 11111           .....           33333           .....
12080 .....           22222           .....           44444
12081 11111           .....           33333           .....
12082 .....           22222           .....           44444
12083 11111           .....           33333           .....
12084 .....           22222           .....           44444
12085 @end example
12086
12087
12088 @item interleave_top, 4
12089 Interleave the upper field from odd frames with the lower field from
12090 even frames, generating a frame with unchanged height at half frame rate.
12091
12092 @example
12093  ------> time
12094 Input:
12095 Frame 1         Frame 2         Frame 3         Frame 4
12096
12097 11111<-         22222           33333<-         44444
12098 11111           22222<-         33333           44444<-
12099 11111<-         22222           33333<-         44444
12100 11111           22222<-         33333           44444<-
12101
12102 Output:
12103 11111                           33333
12104 22222                           44444
12105 11111                           33333
12106 22222                           44444
12107 @end example
12108
12109
12110 @item interleave_bottom, 5
12111 Interleave the lower field from odd frames with the upper field from
12112 even frames, generating a frame with unchanged height at half frame rate.
12113
12114 @example
12115  ------> time
12116 Input:
12117 Frame 1         Frame 2         Frame 3         Frame 4
12118
12119 11111           22222<-         33333           44444<-
12120 11111<-         22222           33333<-         44444
12121 11111           22222<-         33333           44444<-
12122 11111<-         22222           33333<-         44444
12123
12124 Output:
12125 22222                           44444
12126 11111                           33333
12127 22222                           44444
12128 11111                           33333
12129 @end example
12130
12131
12132 @item interlacex2, 6
12133 Double frame rate with unchanged height. Frames are inserted each
12134 containing the second temporal field from the previous input frame and
12135 the first temporal field from the next input frame. This mode relies on
12136 the top_field_first flag. Useful for interlaced video displays with no
12137 field synchronisation.
12138
12139 @example
12140  ------> time
12141 Input:
12142 Frame 1         Frame 2         Frame 3         Frame 4
12143
12144 11111           22222           33333           44444
12145  11111           22222           33333           44444
12146 11111           22222           33333           44444
12147  11111           22222           33333           44444
12148
12149 Output:
12150 11111   22222   22222   33333   33333   44444   44444
12151  11111   11111   22222   22222   33333   33333   44444
12152 11111   22222   22222   33333   33333   44444   44444
12153  11111   11111   22222   22222   33333   33333   44444
12154 @end example
12155
12156 @item mergex2, 7
12157 Move odd frames into the upper field, even into the lower field,
12158 generating a double height frame at same frame rate.
12159 @example
12160  ------> time
12161 Input:
12162 Frame 1         Frame 2         Frame 3         Frame 4
12163
12164 11111           22222           33333           44444
12165 11111           22222           33333           44444
12166 11111           22222           33333           44444
12167 11111           22222           33333           44444
12168
12169 Output:
12170 11111           33333           33333           55555
12171 22222           22222           44444           44444
12172 11111           33333           33333           55555
12173 22222           22222           44444           44444
12174 11111           33333           33333           55555
12175 22222           22222           44444           44444
12176 11111           33333           33333           55555
12177 22222           22222           44444           44444
12178 @end example
12179
12180 @end table
12181
12182 Numeric values are deprecated but are accepted for backward
12183 compatibility reasons.
12184
12185 Default mode is @code{merge}.
12186
12187 @item flags
12188 Specify flags influencing the filter process.
12189
12190 Available value for @var{flags} is:
12191
12192 @table @option
12193 @item low_pass_filter, vlfp
12194 Enable vertical low-pass filtering in the filter.
12195 Vertical low-pass filtering is required when creating an interlaced
12196 destination from a progressive source which contains high-frequency
12197 vertical detail. Filtering will reduce interlace 'twitter' and Moire
12198 patterning.
12199
12200 Vertical low-pass filtering can only be enabled for @option{mode}
12201 @var{interleave_top} and @var{interleave_bottom}.
12202
12203 @end table
12204 @end table
12205
12206 @section transpose
12207
12208 Transpose rows with columns in the input video and optionally flip it.
12209
12210 It accepts the following parameters:
12211
12212 @table @option
12213
12214 @item dir
12215 Specify the transposition direction.
12216
12217 Can assume the following values:
12218 @table @samp
12219 @item 0, 4, cclock_flip
12220 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
12221 @example
12222 L.R     L.l
12223 . . ->  . .
12224 l.r     R.r
12225 @end example
12226
12227 @item 1, 5, clock
12228 Rotate by 90 degrees clockwise, that is:
12229 @example
12230 L.R     l.L
12231 . . ->  . .
12232 l.r     r.R
12233 @end example
12234
12235 @item 2, 6, cclock
12236 Rotate by 90 degrees counterclockwise, that is:
12237 @example
12238 L.R     R.r
12239 . . ->  . .
12240 l.r     L.l
12241 @end example
12242
12243 @item 3, 7, clock_flip
12244 Rotate by 90 degrees clockwise and vertically flip, that is:
12245 @example
12246 L.R     r.R
12247 . . ->  . .
12248 l.r     l.L
12249 @end example
12250 @end table
12251
12252 For values between 4-7, the transposition is only done if the input
12253 video geometry is portrait and not landscape. These values are
12254 deprecated, the @code{passthrough} option should be used instead.
12255
12256 Numerical values are deprecated, and should be dropped in favor of
12257 symbolic constants.
12258
12259 @item passthrough
12260 Do not apply the transposition if the input geometry matches the one
12261 specified by the specified value. It accepts the following values:
12262 @table @samp
12263 @item none
12264 Always apply transposition.
12265 @item portrait
12266 Preserve portrait geometry (when @var{height} >= @var{width}).
12267 @item landscape
12268 Preserve landscape geometry (when @var{width} >= @var{height}).
12269 @end table
12270
12271 Default value is @code{none}.
12272 @end table
12273
12274 For example to rotate by 90 degrees clockwise and preserve portrait
12275 layout:
12276 @example
12277 transpose=dir=1:passthrough=portrait
12278 @end example
12279
12280 The command above can also be specified as:
12281 @example
12282 transpose=1:portrait
12283 @end example
12284
12285 @section trim
12286 Trim the input so that the output contains one continuous subpart of the input.
12287
12288 It accepts the following parameters:
12289 @table @option
12290 @item start
12291 Specify the time of the start of the kept section, i.e. the frame with the
12292 timestamp @var{start} will be the first frame in the output.
12293
12294 @item end
12295 Specify the time of the first frame that will be dropped, i.e. the frame
12296 immediately preceding the one with the timestamp @var{end} will be the last
12297 frame in the output.
12298
12299 @item start_pts
12300 This is the same as @var{start}, except this option sets the start timestamp
12301 in timebase units instead of seconds.
12302
12303 @item end_pts
12304 This is the same as @var{end}, except this option sets the end timestamp
12305 in timebase units instead of seconds.
12306
12307 @item duration
12308 The maximum duration of the output in seconds.
12309
12310 @item start_frame
12311 The number of the first frame that should be passed to the output.
12312
12313 @item end_frame
12314 The number of the first frame that should be dropped.
12315 @end table
12316
12317 @option{start}, @option{end}, and @option{duration} are expressed as time
12318 duration specifications; see
12319 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
12320 for the accepted syntax.
12321
12322 Note that the first two sets of the start/end options and the @option{duration}
12323 option look at the frame timestamp, while the _frame variants simply count the
12324 frames that pass through the filter. Also note that this filter does not modify
12325 the timestamps. If you wish for the output timestamps to start at zero, insert a
12326 setpts filter after the trim filter.
12327
12328 If multiple start or end options are set, this filter tries to be greedy and
12329 keep all the frames that match at least one of the specified constraints. To keep
12330 only the part that matches all the constraints at once, chain multiple trim
12331 filters.
12332
12333 The defaults are such that all the input is kept. So it is possible to set e.g.
12334 just the end values to keep everything before the specified time.
12335
12336 Examples:
12337 @itemize
12338 @item
12339 Drop everything except the second minute of input:
12340 @example
12341 ffmpeg -i INPUT -vf trim=60:120
12342 @end example
12343
12344 @item
12345 Keep only the first second:
12346 @example
12347 ffmpeg -i INPUT -vf trim=duration=1
12348 @end example
12349
12350 @end itemize
12351
12352
12353 @anchor{unsharp}
12354 @section unsharp
12355
12356 Sharpen or blur the input video.
12357
12358 It accepts the following parameters:
12359
12360 @table @option
12361 @item luma_msize_x, lx
12362 Set the luma matrix horizontal size. It must be an odd integer between
12363 3 and 63. The default value is 5.
12364
12365 @item luma_msize_y, ly
12366 Set the luma matrix vertical size. It must be an odd integer between 3
12367 and 63. The default value is 5.
12368
12369 @item luma_amount, la
12370 Set the luma effect strength. It must be a floating point number, reasonable
12371 values lay between -1.5 and 1.5.
12372
12373 Negative values will blur the input video, while positive values will
12374 sharpen it, a value of zero will disable the effect.
12375
12376 Default value is 1.0.
12377
12378 @item chroma_msize_x, cx
12379 Set the chroma matrix horizontal size. It must be an odd integer
12380 between 3 and 63. The default value is 5.
12381
12382 @item chroma_msize_y, cy
12383 Set the chroma matrix vertical size. It must be an odd integer
12384 between 3 and 63. The default value is 5.
12385
12386 @item chroma_amount, ca
12387 Set the chroma effect strength. It must be a floating point number, reasonable
12388 values lay between -1.5 and 1.5.
12389
12390 Negative values will blur the input video, while positive values will
12391 sharpen it, a value of zero will disable the effect.
12392
12393 Default value is 0.0.
12394
12395 @item opencl
12396 If set to 1, specify using OpenCL capabilities, only available if
12397 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
12398
12399 @end table
12400
12401 All parameters are optional and default to the equivalent of the
12402 string '5:5:1.0:5:5:0.0'.
12403
12404 @subsection Examples
12405
12406 @itemize
12407 @item
12408 Apply strong luma sharpen effect:
12409 @example
12410 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
12411 @end example
12412
12413 @item
12414 Apply a strong blur of both luma and chroma parameters:
12415 @example
12416 unsharp=7:7:-2:7:7:-2
12417 @end example
12418 @end itemize
12419
12420 @section uspp
12421
12422 Apply ultra slow/simple postprocessing filter that compresses and decompresses
12423 the image at several (or - in the case of @option{quality} level @code{8} - all)
12424 shifts and average the results.
12425
12426 The way this differs from the behavior of spp is that uspp actually encodes &
12427 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
12428 DCT similar to MJPEG.
12429
12430 The filter accepts the following options:
12431
12432 @table @option
12433 @item quality
12434 Set quality. This option defines the number of levels for averaging. It accepts
12435 an integer in the range 0-8. If set to @code{0}, the filter will have no
12436 effect. A value of @code{8} means the higher quality. For each increment of
12437 that value the speed drops by a factor of approximately 2.  Default value is
12438 @code{3}.
12439
12440 @item qp
12441 Force a constant quantization parameter. If not set, the filter will use the QP
12442 from the video stream (if available).
12443 @end table
12444
12445 @section vectorscope
12446
12447 Display 2 color component values in the two dimensional graph (which is called
12448 a vectorscope).
12449
12450 This filter accepts the following options:
12451
12452 @table @option
12453 @item mode, m
12454 Set vectorscope mode.
12455
12456 It accepts the following values:
12457 @table @samp
12458 @item gray
12459 Gray values are displayed on graph, higher brightness means more pixels have
12460 same component color value on location in graph. This is the default mode.
12461
12462 @item color
12463 Gray values are displayed on graph. Surrounding pixels values which are not
12464 present in video frame are drawn in gradient of 2 color components which are
12465 set by option @code{x} and @code{y}.
12466
12467 @item color2
12468 Actual color components values present in video frame are displayed on graph.
12469
12470 @item color3
12471 Similar as color2 but higher frequency of same values @code{x} and @code{y}
12472 on graph increases value of another color component, which is luminance by
12473 default values of @code{x} and @code{y}.
12474
12475 @item color4
12476 Actual colors present in video frame are displayed on graph. If two different
12477 colors map to same position on graph then color with higher value of component
12478 not present in graph is picked.
12479 @end table
12480
12481 @item x
12482 Set which color component will be represented on X-axis. Default is @code{1}.
12483
12484 @item y
12485 Set which color component will be represented on Y-axis. Default is @code{2}.
12486
12487 @item intensity, i
12488 Set intensity, used by modes: gray, color and color3 for increasing brightness
12489 of color component which represents frequency of (X, Y) location in graph.
12490
12491 @item envelope, e
12492 @table @samp
12493 @item none
12494 No envelope, this is default.
12495
12496 @item instant
12497 Instant envelope, even darkest single pixel will be clearly highlighted.
12498
12499 @item peak
12500 Hold maximum and minimum values presented in graph over time. This way you
12501 can still spot out of range values without constantly looking at vectorscope.
12502
12503 @item peak+instant
12504 Peak and instant envelope combined together.
12505 @end table
12506 @end table
12507
12508 @anchor{vidstabdetect}
12509 @section vidstabdetect
12510
12511 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
12512 @ref{vidstabtransform} for pass 2.
12513
12514 This filter generates a file with relative translation and rotation
12515 transform information about subsequent frames, which is then used by
12516 the @ref{vidstabtransform} filter.
12517
12518 To enable compilation of this filter you need to configure FFmpeg with
12519 @code{--enable-libvidstab}.
12520
12521 This filter accepts the following options:
12522
12523 @table @option
12524 @item result
12525 Set the path to the file used to write the transforms information.
12526 Default value is @file{transforms.trf}.
12527
12528 @item shakiness
12529 Set how shaky the video is and how quick the camera is. It accepts an
12530 integer in the range 1-10, a value of 1 means little shakiness, a
12531 value of 10 means strong shakiness. Default value is 5.
12532
12533 @item accuracy
12534 Set the accuracy of the detection process. It must be a value in the
12535 range 1-15. A value of 1 means low accuracy, a value of 15 means high
12536 accuracy. Default value is 15.
12537
12538 @item stepsize
12539 Set stepsize of the search process. The region around minimum is
12540 scanned with 1 pixel resolution. Default value is 6.
12541
12542 @item mincontrast
12543 Set minimum contrast. Below this value a local measurement field is
12544 discarded. Must be a floating point value in the range 0-1. Default
12545 value is 0.3.
12546
12547 @item tripod
12548 Set reference frame number for tripod mode.
12549
12550 If enabled, the motion of the frames is compared to a reference frame
12551 in the filtered stream, identified by the specified number. The idea
12552 is to compensate all movements in a more-or-less static scene and keep
12553 the camera view absolutely still.
12554
12555 If set to 0, it is disabled. The frames are counted starting from 1.
12556
12557 @item show
12558 Show fields and transforms in the resulting frames. It accepts an
12559 integer in the range 0-2. Default value is 0, which disables any
12560 visualization.
12561 @end table
12562
12563 @subsection Examples
12564
12565 @itemize
12566 @item
12567 Use default values:
12568 @example
12569 vidstabdetect
12570 @end example
12571
12572 @item
12573 Analyze strongly shaky movie and put the results in file
12574 @file{mytransforms.trf}:
12575 @example
12576 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
12577 @end example
12578
12579 @item
12580 Visualize the result of internal transformations in the resulting
12581 video:
12582 @example
12583 vidstabdetect=show=1
12584 @end example
12585
12586 @item
12587 Analyze a video with medium shakiness using @command{ffmpeg}:
12588 @example
12589 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
12590 @end example
12591 @end itemize
12592
12593 @anchor{vidstabtransform}
12594 @section vidstabtransform
12595
12596 Video stabilization/deshaking: pass 2 of 2,
12597 see @ref{vidstabdetect} for pass 1.
12598
12599 Read a file with transform information for each frame and
12600 apply/compensate them. Together with the @ref{vidstabdetect}
12601 filter this can be used to deshake videos. See also
12602 @url{http://public.hronopik.de/vid.stab}. It is important to also use
12603 the @ref{unsharp} filter, see below.
12604
12605 To enable compilation of this filter you need to configure FFmpeg with
12606 @code{--enable-libvidstab}.
12607
12608 @subsection Options
12609
12610 @table @option
12611 @item input
12612 Set path to the file used to read the transforms. Default value is
12613 @file{transforms.trf}.
12614
12615 @item smoothing
12616 Set the number of frames (value*2 + 1) used for lowpass filtering the
12617 camera movements. Default value is 10.
12618
12619 For example a number of 10 means that 21 frames are used (10 in the
12620 past and 10 in the future) to smoothen the motion in the video. A
12621 larger value leads to a smoother video, but limits the acceleration of
12622 the camera (pan/tilt movements). 0 is a special case where a static
12623 camera is simulated.
12624
12625 @item optalgo
12626 Set the camera path optimization algorithm.
12627
12628 Accepted values are:
12629 @table @samp
12630 @item gauss
12631 gaussian kernel low-pass filter on camera motion (default)
12632 @item avg
12633 averaging on transformations
12634 @end table
12635
12636 @item maxshift
12637 Set maximal number of pixels to translate frames. Default value is -1,
12638 meaning no limit.
12639
12640 @item maxangle
12641 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
12642 value is -1, meaning no limit.
12643
12644 @item crop
12645 Specify how to deal with borders that may be visible due to movement
12646 compensation.
12647
12648 Available values are:
12649 @table @samp
12650 @item keep
12651 keep image information from previous frame (default)
12652 @item black
12653 fill the border black
12654 @end table
12655
12656 @item invert
12657 Invert transforms if set to 1. Default value is 0.
12658
12659 @item relative
12660 Consider transforms as relative to previous frame if set to 1,
12661 absolute if set to 0. Default value is 0.
12662
12663 @item zoom
12664 Set percentage to zoom. A positive value will result in a zoom-in
12665 effect, a negative value in a zoom-out effect. Default value is 0 (no
12666 zoom).
12667
12668 @item optzoom
12669 Set optimal zooming to avoid borders.
12670
12671 Accepted values are:
12672 @table @samp
12673 @item 0
12674 disabled
12675 @item 1
12676 optimal static zoom value is determined (only very strong movements
12677 will lead to visible borders) (default)
12678 @item 2
12679 optimal adaptive zoom value is determined (no borders will be
12680 visible), see @option{zoomspeed}
12681 @end table
12682
12683 Note that the value given at zoom is added to the one calculated here.
12684
12685 @item zoomspeed
12686 Set percent to zoom maximally each frame (enabled when
12687 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
12688 0.25.
12689
12690 @item interpol
12691 Specify type of interpolation.
12692
12693 Available values are:
12694 @table @samp
12695 @item no
12696 no interpolation
12697 @item linear
12698 linear only horizontal
12699 @item bilinear
12700 linear in both directions (default)
12701 @item bicubic
12702 cubic in both directions (slow)
12703 @end table
12704
12705 @item tripod
12706 Enable virtual tripod mode if set to 1, which is equivalent to
12707 @code{relative=0:smoothing=0}. Default value is 0.
12708
12709 Use also @code{tripod} option of @ref{vidstabdetect}.
12710
12711 @item debug
12712 Increase log verbosity if set to 1. Also the detected global motions
12713 are written to the temporary file @file{global_motions.trf}. Default
12714 value is 0.
12715 @end table
12716
12717 @subsection Examples
12718
12719 @itemize
12720 @item
12721 Use @command{ffmpeg} for a typical stabilization with default values:
12722 @example
12723 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
12724 @end example
12725
12726 Note the use of the @ref{unsharp} filter which is always recommended.
12727
12728 @item
12729 Zoom in a bit more and load transform data from a given file:
12730 @example
12731 vidstabtransform=zoom=5:input="mytransforms.trf"
12732 @end example
12733
12734 @item
12735 Smoothen the video even more:
12736 @example
12737 vidstabtransform=smoothing=30
12738 @end example
12739 @end itemize
12740
12741 @section vflip
12742
12743 Flip the input video vertically.
12744
12745 For example, to vertically flip a video with @command{ffmpeg}:
12746 @example
12747 ffmpeg -i in.avi -vf "vflip" out.avi
12748 @end example
12749
12750 @anchor{vignette}
12751 @section vignette
12752
12753 Make or reverse a natural vignetting effect.
12754
12755 The filter accepts the following options:
12756
12757 @table @option
12758 @item angle, a
12759 Set lens angle expression as a number of radians.
12760
12761 The value is clipped in the @code{[0,PI/2]} range.
12762
12763 Default value: @code{"PI/5"}
12764
12765 @item x0
12766 @item y0
12767 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
12768 by default.
12769
12770 @item mode
12771 Set forward/backward mode.
12772
12773 Available modes are:
12774 @table @samp
12775 @item forward
12776 The larger the distance from the central point, the darker the image becomes.
12777
12778 @item backward
12779 The larger the distance from the central point, the brighter the image becomes.
12780 This can be used to reverse a vignette effect, though there is no automatic
12781 detection to extract the lens @option{angle} and other settings (yet). It can
12782 also be used to create a burning effect.
12783 @end table
12784
12785 Default value is @samp{forward}.
12786
12787 @item eval
12788 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
12789
12790 It accepts the following values:
12791 @table @samp
12792 @item init
12793 Evaluate expressions only once during the filter initialization.
12794
12795 @item frame
12796 Evaluate expressions for each incoming frame. This is way slower than the
12797 @samp{init} mode since it requires all the scalers to be re-computed, but it
12798 allows advanced dynamic expressions.
12799 @end table
12800
12801 Default value is @samp{init}.
12802
12803 @item dither
12804 Set dithering to reduce the circular banding effects. Default is @code{1}
12805 (enabled).
12806
12807 @item aspect
12808 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
12809 Setting this value to the SAR of the input will make a rectangular vignetting
12810 following the dimensions of the video.
12811
12812 Default is @code{1/1}.
12813 @end table
12814
12815 @subsection Expressions
12816
12817 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
12818 following parameters.
12819
12820 @table @option
12821 @item w
12822 @item h
12823 input width and height
12824
12825 @item n
12826 the number of input frame, starting from 0
12827
12828 @item pts
12829 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
12830 @var{TB} units, NAN if undefined
12831
12832 @item r
12833 frame rate of the input video, NAN if the input frame rate is unknown
12834
12835 @item t
12836 the PTS (Presentation TimeStamp) of the filtered video frame,
12837 expressed in seconds, NAN if undefined
12838
12839 @item tb
12840 time base of the input video
12841 @end table
12842
12843
12844 @subsection Examples
12845
12846 @itemize
12847 @item
12848 Apply simple strong vignetting effect:
12849 @example
12850 vignette=PI/4
12851 @end example
12852
12853 @item
12854 Make a flickering vignetting:
12855 @example
12856 vignette='PI/4+random(1)*PI/50':eval=frame
12857 @end example
12858
12859 @end itemize
12860
12861 @section vstack
12862 Stack input videos vertically.
12863
12864 All streams must be of same pixel format and of same width.
12865
12866 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
12867 to create same output.
12868
12869 The filter accept the following option:
12870
12871 @table @option
12872 @item inputs
12873 Set number of input streams. Default is 2.
12874
12875 @item shortest
12876 If set to 1, force the output to terminate when the shortest input
12877 terminates. Default value is 0.
12878 @end table
12879
12880 @section w3fdif
12881
12882 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
12883 Deinterlacing Filter").
12884
12885 Based on the process described by Martin Weston for BBC R&D, and
12886 implemented based on the de-interlace algorithm written by Jim
12887 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
12888 uses filter coefficients calculated by BBC R&D.
12889
12890 There are two sets of filter coefficients, so called "simple":
12891 and "complex". Which set of filter coefficients is used can
12892 be set by passing an optional parameter:
12893
12894 @table @option
12895 @item filter
12896 Set the interlacing filter coefficients. Accepts one of the following values:
12897
12898 @table @samp
12899 @item simple
12900 Simple filter coefficient set.
12901 @item complex
12902 More-complex filter coefficient set.
12903 @end table
12904 Default value is @samp{complex}.
12905
12906 @item deint
12907 Specify which frames to deinterlace. Accept one of the following values:
12908
12909 @table @samp
12910 @item all
12911 Deinterlace all frames,
12912 @item interlaced
12913 Only deinterlace frames marked as interlaced.
12914 @end table
12915
12916 Default value is @samp{all}.
12917 @end table
12918
12919 @section waveform
12920 Video waveform monitor.
12921
12922 The waveform monitor plots color component intensity. By default luminance
12923 only. Each column of the waveform corresponds to a column of pixels in the
12924 source video.
12925
12926 It accepts the following options:
12927
12928 @table @option
12929 @item mode, m
12930 Can be either @code{row}, or @code{column}. Default is @code{column}.
12931 In row mode, the graph on the left side represents color component value 0 and
12932 the right side represents value = 255. In column mode, the top side represents
12933 color component value = 0 and bottom side represents value = 255.
12934
12935 @item intensity, i
12936 Set intensity. Smaller values are useful to find out how many values of the same
12937 luminance are distributed across input rows/columns.
12938 Default value is @code{0.04}. Allowed range is [0, 1].
12939
12940 @item mirror, r
12941 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
12942 In mirrored mode, higher values will be represented on the left
12943 side for @code{row} mode and at the top for @code{column} mode. Default is
12944 @code{1} (mirrored).
12945
12946 @item display, d
12947 Set display mode.
12948 It accepts the following values:
12949 @table @samp
12950 @item overlay
12951 Presents information identical to that in the @code{parade}, except
12952 that the graphs representing color components are superimposed directly
12953 over one another.
12954
12955 This display mode makes it easier to spot relative differences or similarities
12956 in overlapping areas of the color components that are supposed to be identical,
12957 such as neutral whites, grays, or blacks.
12958
12959 @item parade
12960 Display separate graph for the color components side by side in
12961 @code{row} mode or one below the other in @code{column} mode.
12962
12963 Using this display mode makes it easy to spot color casts in the highlights
12964 and shadows of an image, by comparing the contours of the top and the bottom
12965 graphs of each waveform. Since whites, grays, and blacks are characterized
12966 by exactly equal amounts of red, green, and blue, neutral areas of the picture
12967 should display three waveforms of roughly equal width/height. If not, the
12968 correction is easy to perform by making level adjustments the three waveforms.
12969 @end table
12970 Default is @code{parade}.
12971
12972 @item components, c
12973 Set which color components to display. Default is 1, which means only luminance
12974 or red color component if input is in RGB colorspace. If is set for example to
12975 7 it will display all 3 (if) available color components.
12976
12977 @item envelope, e
12978 @table @samp
12979 @item none
12980 No envelope, this is default.
12981
12982 @item instant
12983 Instant envelope, minimum and maximum values presented in graph will be easily
12984 visible even with small @code{step} value.
12985
12986 @item peak
12987 Hold minimum and maximum values presented in graph across time. This way you
12988 can still spot out of range values without constantly looking at waveforms.
12989
12990 @item peak+instant
12991 Peak and instant envelope combined together.
12992 @end table
12993
12994 @item filter, f
12995 @table @samp
12996 @item lowpass
12997 No filtering, this is default.
12998
12999 @item flat
13000 Luma and chroma combined together.
13001
13002 @item aflat
13003 Similar as above, but shows difference between blue and red chroma.
13004
13005 @item chroma
13006 Displays only chroma.
13007
13008 @item achroma
13009 Similar as above, but shows difference between blue and red chroma.
13010
13011 @item color
13012 Displays actual color value on waveform.
13013 @end table
13014 @end table
13015
13016 @section xbr
13017 Apply the xBR high-quality magnification filter which is designed for pixel
13018 art. It follows a set of edge-detection rules, see
13019 @url{http://www.libretro.com/forums/viewtopic.php?f=6&t=134}.
13020
13021 It accepts the following option:
13022
13023 @table @option
13024 @item n
13025 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
13026 @code{3xBR} and @code{4} for @code{4xBR}.
13027 Default is @code{3}.
13028 @end table
13029
13030 @anchor{yadif}
13031 @section yadif
13032
13033 Deinterlace the input video ("yadif" means "yet another deinterlacing
13034 filter").
13035
13036 It accepts the following parameters:
13037
13038
13039 @table @option
13040
13041 @item mode
13042 The interlacing mode to adopt. It accepts one of the following values:
13043
13044 @table @option
13045 @item 0, send_frame
13046 Output one frame for each frame.
13047 @item 1, send_field
13048 Output one frame for each field.
13049 @item 2, send_frame_nospatial
13050 Like @code{send_frame}, but it skips the spatial interlacing check.
13051 @item 3, send_field_nospatial
13052 Like @code{send_field}, but it skips the spatial interlacing check.
13053 @end table
13054
13055 The default value is @code{send_frame}.
13056
13057 @item parity
13058 The picture field parity assumed for the input interlaced video. It accepts one
13059 of the following values:
13060
13061 @table @option
13062 @item 0, tff
13063 Assume the top field is first.
13064 @item 1, bff
13065 Assume the bottom field is first.
13066 @item -1, auto
13067 Enable automatic detection of field parity.
13068 @end table
13069
13070 The default value is @code{auto}.
13071 If the interlacing is unknown or the decoder does not export this information,
13072 top field first will be assumed.
13073
13074 @item deint
13075 Specify which frames to deinterlace. Accept one of the following
13076 values:
13077
13078 @table @option
13079 @item 0, all
13080 Deinterlace all frames.
13081 @item 1, interlaced
13082 Only deinterlace frames marked as interlaced.
13083 @end table
13084
13085 The default value is @code{all}.
13086 @end table
13087
13088 @section zoompan
13089
13090 Apply Zoom & Pan effect.
13091
13092 This filter accepts the following options:
13093
13094 @table @option
13095 @item zoom, z
13096 Set the zoom expression. Default is 1.
13097
13098 @item x
13099 @item y
13100 Set the x and y expression. Default is 0.
13101
13102 @item d
13103 Set the duration expression in number of frames.
13104 This sets for how many number of frames effect will last for
13105 single input image.
13106
13107 @item s
13108 Set the output image size, default is 'hd720'.
13109
13110 @item fps
13111 Set the output frame rate, default is '25'.
13112 @end table
13113
13114 Each expression can contain the following constants:
13115
13116 @table @option
13117 @item in_w, iw
13118 Input width.
13119
13120 @item in_h, ih
13121 Input height.
13122
13123 @item out_w, ow
13124 Output width.
13125
13126 @item out_h, oh
13127 Output height.
13128
13129 @item in
13130 Input frame count.
13131
13132 @item on
13133 Output frame count.
13134
13135 @item x
13136 @item y
13137 Last calculated 'x' and 'y' position from 'x' and 'y' expression
13138 for current input frame.
13139
13140 @item px
13141 @item py
13142 'x' and 'y' of last output frame of previous input frame or 0 when there was
13143 not yet such frame (first input frame).
13144
13145 @item zoom
13146 Last calculated zoom from 'z' expression for current input frame.
13147
13148 @item pzoom
13149 Last calculated zoom of last output frame of previous input frame.
13150
13151 @item duration
13152 Number of output frames for current input frame. Calculated from 'd' expression
13153 for each input frame.
13154
13155 @item pduration
13156 number of output frames created for previous input frame
13157
13158 @item a
13159 Rational number: input width / input height
13160
13161 @item sar
13162 sample aspect ratio
13163
13164 @item dar
13165 display aspect ratio
13166
13167 @end table
13168
13169 @subsection Examples
13170
13171 @itemize
13172 @item
13173 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
13174 @example
13175 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
13176 @end example
13177
13178 @item
13179 Zoom-in up to 1.5 and pan always at center of picture:
13180 @example
13181 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
13182 @end example
13183 @end itemize
13184
13185 @section zscale
13186 Scale (resize) the input video, using the z.lib library:
13187 https://github.com/sekrit-twc/zimg.
13188
13189 The zscale filter forces the output display aspect ratio to be the same
13190 as the input, by changing the output sample aspect ratio.
13191
13192 If the input image format is different from the format requested by
13193 the next filter, the zscale filter will convert the input to the
13194 requested format.
13195
13196 @subsection Options
13197 The filter accepts the following options.
13198
13199 @table @option
13200 @item width, w
13201 @item height, h
13202 Set the output video dimension expression. Default value is the input
13203 dimension.
13204
13205 If the @var{width} or @var{w} is 0, the input width is used for the output.
13206 If the @var{height} or @var{h} is 0, the input height is used for the output.
13207
13208 If one of the values is -1, the zscale filter will use a value that
13209 maintains the aspect ratio of the input image, calculated from the
13210 other specified dimension. If both of them are -1, the input size is
13211 used
13212
13213 If one of the values is -n with n > 1, the zscale filter will also use a value
13214 that maintains the aspect ratio of the input image, calculated from the other
13215 specified dimension. After that it will, however, make sure that the calculated
13216 dimension is divisible by n and adjust the value if necessary.
13217
13218 See below for the list of accepted constants for use in the dimension
13219 expression.
13220
13221 @item size, s
13222 Set the video size. For the syntax of this option, check the
13223 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
13224
13225 @item dither, d
13226 Set the dither type.
13227
13228 Possible values are:
13229 @table @var
13230 @item none
13231 @item ordered
13232 @item random
13233 @item error_diffusion
13234 @end table
13235
13236 Default is none.
13237
13238 @item filter, f
13239 Set the resize filter type.
13240
13241 Possible values are:
13242 @table @var
13243 @item point
13244 @item bilinear
13245 @item bicubic
13246 @item spline16
13247 @item spline36
13248 @item lanczos
13249 @end table
13250
13251 Default is bilinear.
13252
13253 @item range, r
13254 Set the color range.
13255
13256 Possible values are:
13257 @table @var
13258 @item input
13259 @item limited
13260 @item full
13261 @end table
13262
13263 Default is same as input.
13264
13265 @item primaries, p
13266 Set the color primaries.
13267
13268 Possible values are:
13269 @table @var
13270 @item input
13271 @item 709
13272 @item unspecified
13273 @item 170m
13274 @item 240m
13275 @item 2020
13276 @end table
13277
13278 Default is same as input.
13279
13280 @item transfer, t
13281 Set the transfer characteristics.
13282
13283 Possible values are:
13284 @table @var
13285 @item input
13286 @item 709
13287 @item unspecified
13288 @item 601
13289 @item linear
13290 @item 2020_10
13291 @item 2020_12
13292 @end table
13293
13294 Default is same as input.
13295
13296 @item matrix, m
13297 Set the colorspace matrix.
13298
13299 Possible value are:
13300 @table @var
13301 @item input
13302 @item 709
13303 @item unspecified
13304 @item 470bg
13305 @item 170m
13306 @item 2020_ncl
13307 @item 2020_cl
13308 @end table
13309
13310 Default is same as input.
13311
13312 @item rangein, rin
13313 Set the input color range.
13314
13315 Possible values are:
13316 @table @var
13317 @item input
13318 @item limited
13319 @item full
13320 @end table
13321
13322 Default is same as input.
13323
13324 @item primariesin, pin
13325 Set the input color primaries.
13326
13327 Possible values are:
13328 @table @var
13329 @item input
13330 @item 709
13331 @item unspecified
13332 @item 170m
13333 @item 240m
13334 @item 2020
13335 @end table
13336
13337 Default is same as input.
13338
13339 @item transferin, tin
13340 Set the input transfer characteristics.
13341
13342 Possible values are:
13343 @table @var
13344 @item input
13345 @item 709
13346 @item unspecified
13347 @item 601
13348 @item linear
13349 @item 2020_10
13350 @item 2020_12
13351 @end table
13352
13353 Default is same as input.
13354
13355 @item matrixin, min
13356 Set the input colorspace matrix.
13357
13358 Possible value are:
13359 @table @var
13360 @item input
13361 @item 709
13362 @item unspecified
13363 @item 470bg
13364 @item 170m
13365 @item 2020_ncl
13366 @item 2020_cl
13367 @end table
13368 @end table
13369
13370 The values of the @option{w} and @option{h} options are expressions
13371 containing the following constants:
13372
13373 @table @var
13374 @item in_w
13375 @item in_h
13376 The input width and height
13377
13378 @item iw
13379 @item ih
13380 These are the same as @var{in_w} and @var{in_h}.
13381
13382 @item out_w
13383 @item out_h
13384 The output (scaled) width and height
13385
13386 @item ow
13387 @item oh
13388 These are the same as @var{out_w} and @var{out_h}
13389
13390 @item a
13391 The same as @var{iw} / @var{ih}
13392
13393 @item sar
13394 input sample aspect ratio
13395
13396 @item dar
13397 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
13398
13399 @item hsub
13400 @item vsub
13401 horizontal and vertical input chroma subsample values. For example for the
13402 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13403
13404 @item ohsub
13405 @item ovsub
13406 horizontal and vertical output chroma subsample values. For example for the
13407 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13408 @end table
13409
13410 @table @option
13411 @end table
13412
13413 @c man end VIDEO FILTERS
13414
13415 @chapter Video Sources
13416 @c man begin VIDEO SOURCES
13417
13418 Below is a description of the currently available video sources.
13419
13420 @section buffer
13421
13422 Buffer video frames, and make them available to the filter chain.
13423
13424 This source is mainly intended for a programmatic use, in particular
13425 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
13426
13427 It accepts the following parameters:
13428
13429 @table @option
13430
13431 @item video_size
13432 Specify the size (width and height) of the buffered video frames. For the
13433 syntax of this option, check the
13434 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
13435
13436 @item width
13437 The input video width.
13438
13439 @item height
13440 The input video height.
13441
13442 @item pix_fmt
13443 A string representing the pixel format of the buffered video frames.
13444 It may be a number corresponding to a pixel format, or a pixel format
13445 name.
13446
13447 @item time_base
13448 Specify the timebase assumed by the timestamps of the buffered frames.
13449
13450 @item frame_rate
13451 Specify the frame rate expected for the video stream.
13452
13453 @item pixel_aspect, sar
13454 The sample (pixel) aspect ratio of the input video.
13455
13456 @item sws_param
13457 Specify the optional parameters to be used for the scale filter which
13458 is automatically inserted when an input change is detected in the
13459 input size or format.
13460
13461 @item hw_frames_ctx
13462 When using a hardware pixel format, this should be a reference to an
13463 AVHWFramesContext describing input frames.
13464 @end table
13465
13466 For example:
13467 @example
13468 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
13469 @end example
13470
13471 will instruct the source to accept video frames with size 320x240 and
13472 with format "yuv410p", assuming 1/24 as the timestamps timebase and
13473 square pixels (1:1 sample aspect ratio).
13474 Since the pixel format with name "yuv410p" corresponds to the number 6
13475 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
13476 this example corresponds to:
13477 @example
13478 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
13479 @end example
13480
13481 Alternatively, the options can be specified as a flat string, but this
13482 syntax is deprecated:
13483
13484 @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}]
13485
13486 @section cellauto
13487
13488 Create a pattern generated by an elementary cellular automaton.
13489
13490 The initial state of the cellular automaton can be defined through the
13491 @option{filename}, and @option{pattern} options. If such options are
13492 not specified an initial state is created randomly.
13493
13494 At each new frame a new row in the video is filled with the result of
13495 the cellular automaton next generation. The behavior when the whole
13496 frame is filled is defined by the @option{scroll} option.
13497
13498 This source accepts the following options:
13499
13500 @table @option
13501 @item filename, f
13502 Read the initial cellular automaton state, i.e. the starting row, from
13503 the specified file.
13504 In the file, each non-whitespace character is considered an alive
13505 cell, a newline will terminate the row, and further characters in the
13506 file will be ignored.
13507
13508 @item pattern, p
13509 Read the initial cellular automaton state, i.e. the starting row, from
13510 the specified string.
13511
13512 Each non-whitespace character in the string is considered an alive
13513 cell, a newline will terminate the row, and further characters in the
13514 string will be ignored.
13515
13516 @item rate, r
13517 Set the video rate, that is the number of frames generated per second.
13518 Default is 25.
13519
13520 @item random_fill_ratio, ratio
13521 Set the random fill ratio for the initial cellular automaton row. It
13522 is a floating point number value ranging from 0 to 1, defaults to
13523 1/PHI.
13524
13525 This option is ignored when a file or a pattern is specified.
13526
13527 @item random_seed, seed
13528 Set the seed for filling randomly the initial row, must be an integer
13529 included between 0 and UINT32_MAX. If not specified, or if explicitly
13530 set to -1, the filter will try to use a good random seed on a best
13531 effort basis.
13532
13533 @item rule
13534 Set the cellular automaton rule, it is a number ranging from 0 to 255.
13535 Default value is 110.
13536
13537 @item size, s
13538 Set the size of the output video. For the syntax of this option, check the
13539 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
13540
13541 If @option{filename} or @option{pattern} is specified, the size is set
13542 by default to the width of the specified initial state row, and the
13543 height is set to @var{width} * PHI.
13544
13545 If @option{size} is set, it must contain the width of the specified
13546 pattern string, and the specified pattern will be centered in the
13547 larger row.
13548
13549 If a filename or a pattern string is not specified, the size value
13550 defaults to "320x518" (used for a randomly generated initial state).
13551
13552 @item scroll
13553 If set to 1, scroll the output upward when all the rows in the output
13554 have been already filled. If set to 0, the new generated row will be
13555 written over the top row just after the bottom row is filled.
13556 Defaults to 1.
13557
13558 @item start_full, full
13559 If set to 1, completely fill the output with generated rows before
13560 outputting the first frame.
13561 This is the default behavior, for disabling set the value to 0.
13562
13563 @item stitch
13564 If set to 1, stitch the left and right row edges together.
13565 This is the default behavior, for disabling set the value to 0.
13566 @end table
13567
13568 @subsection Examples
13569
13570 @itemize
13571 @item
13572 Read the initial state from @file{pattern}, and specify an output of
13573 size 200x400.
13574 @example
13575 cellauto=f=pattern:s=200x400
13576 @end example
13577
13578 @item
13579 Generate a random initial row with a width of 200 cells, with a fill
13580 ratio of 2/3:
13581 @example
13582 cellauto=ratio=2/3:s=200x200
13583 @end example
13584
13585 @item
13586 Create a pattern generated by rule 18 starting by a single alive cell
13587 centered on an initial row with width 100:
13588 @example
13589 cellauto=p=@@:s=100x400:full=0:rule=18
13590 @end example
13591
13592 @item
13593 Specify a more elaborated initial pattern:
13594 @example
13595 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
13596 @end example
13597
13598 @end itemize
13599
13600 @section mandelbrot
13601
13602 Generate a Mandelbrot set fractal, and progressively zoom towards the
13603 point specified with @var{start_x} and @var{start_y}.
13604
13605 This source accepts the following options:
13606
13607 @table @option
13608
13609 @item end_pts
13610 Set the terminal pts value. Default value is 400.
13611
13612 @item end_scale
13613 Set the terminal scale value.
13614 Must be a floating point value. Default value is 0.3.
13615
13616 @item inner
13617 Set the inner coloring mode, that is the algorithm used to draw the
13618 Mandelbrot fractal internal region.
13619
13620 It shall assume one of the following values:
13621 @table @option
13622 @item black
13623 Set black mode.
13624 @item convergence
13625 Show time until convergence.
13626 @item mincol
13627 Set color based on point closest to the origin of the iterations.
13628 @item period
13629 Set period mode.
13630 @end table
13631
13632 Default value is @var{mincol}.
13633
13634 @item bailout
13635 Set the bailout value. Default value is 10.0.
13636
13637 @item maxiter
13638 Set the maximum of iterations performed by the rendering
13639 algorithm. Default value is 7189.
13640
13641 @item outer
13642 Set outer coloring mode.
13643 It shall assume one of following values:
13644 @table @option
13645 @item iteration_count
13646 Set iteration cound mode.
13647 @item normalized_iteration_count
13648 set normalized iteration count mode.
13649 @end table
13650 Default value is @var{normalized_iteration_count}.
13651
13652 @item rate, r
13653 Set frame rate, expressed as number of frames per second. Default
13654 value is "25".
13655
13656 @item size, s
13657 Set frame size. For the syntax of this option, check the "Video
13658 size" section in the ffmpeg-utils manual. Default value is "640x480".
13659
13660 @item start_scale
13661 Set the initial scale value. Default value is 3.0.
13662
13663 @item start_x
13664 Set the initial x position. Must be a floating point value between
13665 -100 and 100. Default value is -0.743643887037158704752191506114774.
13666
13667 @item start_y
13668 Set the initial y position. Must be a floating point value between
13669 -100 and 100. Default value is -0.131825904205311970493132056385139.
13670 @end table
13671
13672 @section mptestsrc
13673
13674 Generate various test patterns, as generated by the MPlayer test filter.
13675
13676 The size of the generated video is fixed, and is 256x256.
13677 This source is useful in particular for testing encoding features.
13678
13679 This source accepts the following options:
13680
13681 @table @option
13682
13683 @item rate, r
13684 Specify the frame rate of the sourced video, as the number of frames
13685 generated per second. It has to be a string in the format
13686 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
13687 number or a valid video frame rate abbreviation. The default value is
13688 "25".
13689
13690 @item duration, d
13691 Set the duration of the sourced video. See
13692 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
13693 for the accepted syntax.
13694
13695 If not specified, or the expressed duration is negative, the video is
13696 supposed to be generated forever.
13697
13698 @item test, t
13699
13700 Set the number or the name of the test to perform. Supported tests are:
13701 @table @option
13702 @item dc_luma
13703 @item dc_chroma
13704 @item freq_luma
13705 @item freq_chroma
13706 @item amp_luma
13707 @item amp_chroma
13708 @item cbp
13709 @item mv
13710 @item ring1
13711 @item ring2
13712 @item all
13713
13714 @end table
13715
13716 Default value is "all", which will cycle through the list of all tests.
13717 @end table
13718
13719 Some examples:
13720 @example
13721 mptestsrc=t=dc_luma
13722 @end example
13723
13724 will generate a "dc_luma" test pattern.
13725
13726 @section frei0r_src
13727
13728 Provide a frei0r source.
13729
13730 To enable compilation of this filter you need to install the frei0r
13731 header and configure FFmpeg with @code{--enable-frei0r}.
13732
13733 This source accepts the following parameters:
13734
13735 @table @option
13736
13737 @item size
13738 The size of the video to generate. For the syntax of this option, check the
13739 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
13740
13741 @item framerate
13742 The framerate of the generated video. It may be a string of the form
13743 @var{num}/@var{den} or a frame rate abbreviation.
13744
13745 @item filter_name
13746 The name to the frei0r source to load. For more information regarding frei0r and
13747 how to set the parameters, read the @ref{frei0r} section in the video filters
13748 documentation.
13749
13750 @item filter_params
13751 A '|'-separated list of parameters to pass to the frei0r source.
13752
13753 @end table
13754
13755 For example, to generate a frei0r partik0l source with size 200x200
13756 and frame rate 10 which is overlaid on the overlay filter main input:
13757 @example
13758 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
13759 @end example
13760
13761 @section life
13762
13763 Generate a life pattern.
13764
13765 This source is based on a generalization of John Conway's life game.
13766
13767 The sourced input represents a life grid, each pixel represents a cell
13768 which can be in one of two possible states, alive or dead. Every cell
13769 interacts with its eight neighbours, which are the cells that are
13770 horizontally, vertically, or diagonally adjacent.
13771
13772 At each interaction the grid evolves according to the adopted rule,
13773 which specifies the number of neighbor alive cells which will make a
13774 cell stay alive or born. The @option{rule} option allows one to specify
13775 the rule to adopt.
13776
13777 This source accepts the following options:
13778
13779 @table @option
13780 @item filename, f
13781 Set the file from which to read the initial grid state. In the file,
13782 each non-whitespace character is considered an alive cell, and newline
13783 is used to delimit the end of each row.
13784
13785 If this option is not specified, the initial grid is generated
13786 randomly.
13787
13788 @item rate, r
13789 Set the video rate, that is the number of frames generated per second.
13790 Default is 25.
13791
13792 @item random_fill_ratio, ratio
13793 Set the random fill ratio for the initial random grid. It is a
13794 floating point number value ranging from 0 to 1, defaults to 1/PHI.
13795 It is ignored when a file is specified.
13796
13797 @item random_seed, seed
13798 Set the seed for filling the initial random grid, must be an integer
13799 included between 0 and UINT32_MAX. If not specified, or if explicitly
13800 set to -1, the filter will try to use a good random seed on a best
13801 effort basis.
13802
13803 @item rule
13804 Set the life rule.
13805
13806 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
13807 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
13808 @var{NS} specifies the number of alive neighbor cells which make a
13809 live cell stay alive, and @var{NB} the number of alive neighbor cells
13810 which make a dead cell to become alive (i.e. to "born").
13811 "s" and "b" can be used in place of "S" and "B", respectively.
13812
13813 Alternatively a rule can be specified by an 18-bits integer. The 9
13814 high order bits are used to encode the next cell state if it is alive
13815 for each number of neighbor alive cells, the low order bits specify
13816 the rule for "borning" new cells. Higher order bits encode for an
13817 higher number of neighbor cells.
13818 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
13819 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
13820
13821 Default value is "S23/B3", which is the original Conway's game of life
13822 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
13823 cells, and will born a new cell if there are three alive cells around
13824 a dead cell.
13825
13826 @item size, s
13827 Set the size of the output video. For the syntax of this option, check the
13828 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
13829
13830 If @option{filename} is specified, the size is set by default to the
13831 same size of the input file. If @option{size} is set, it must contain
13832 the size specified in the input file, and the initial grid defined in
13833 that file is centered in the larger resulting area.
13834
13835 If a filename is not specified, the size value defaults to "320x240"
13836 (used for a randomly generated initial grid).
13837
13838 @item stitch
13839 If set to 1, stitch the left and right grid edges together, and the
13840 top and bottom edges also. Defaults to 1.
13841
13842 @item mold
13843 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
13844 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
13845 value from 0 to 255.
13846
13847 @item life_color
13848 Set the color of living (or new born) cells.
13849
13850 @item death_color
13851 Set the color of dead cells. If @option{mold} is set, this is the first color
13852 used to represent a dead cell.
13853
13854 @item mold_color
13855 Set mold color, for definitely dead and moldy cells.
13856
13857 For the syntax of these 3 color options, check the "Color" section in the
13858 ffmpeg-utils manual.
13859 @end table
13860
13861 @subsection Examples
13862
13863 @itemize
13864 @item
13865 Read a grid from @file{pattern}, and center it on a grid of size
13866 300x300 pixels:
13867 @example
13868 life=f=pattern:s=300x300
13869 @end example
13870
13871 @item
13872 Generate a random grid of size 200x200, with a fill ratio of 2/3:
13873 @example
13874 life=ratio=2/3:s=200x200
13875 @end example
13876
13877 @item
13878 Specify a custom rule for evolving a randomly generated grid:
13879 @example
13880 life=rule=S14/B34
13881 @end example
13882
13883 @item
13884 Full example with slow death effect (mold) using @command{ffplay}:
13885 @example
13886 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
13887 @end example
13888 @end itemize
13889
13890 @anchor{allrgb}
13891 @anchor{allyuv}
13892 @anchor{color}
13893 @anchor{haldclutsrc}
13894 @anchor{nullsrc}
13895 @anchor{rgbtestsrc}
13896 @anchor{smptebars}
13897 @anchor{smptehdbars}
13898 @anchor{testsrc}
13899 @section allrgb, allyuv, color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc
13900
13901 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
13902
13903 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
13904
13905 The @code{color} source provides an uniformly colored input.
13906
13907 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
13908 @ref{haldclut} filter.
13909
13910 The @code{nullsrc} source returns unprocessed video frames. It is
13911 mainly useful to be employed in analysis / debugging tools, or as the
13912 source for filters which ignore the input data.
13913
13914 The @code{rgbtestsrc} source generates an RGB test pattern useful for
13915 detecting RGB vs BGR issues. You should see a red, green and blue
13916 stripe from top to bottom.
13917
13918 The @code{smptebars} source generates a color bars pattern, based on
13919 the SMPTE Engineering Guideline EG 1-1990.
13920
13921 The @code{smptehdbars} source generates a color bars pattern, based on
13922 the SMPTE RP 219-2002.
13923
13924 The @code{testsrc} source generates a test video pattern, showing a
13925 color pattern, a scrolling gradient and a timestamp. This is mainly
13926 intended for testing purposes.
13927
13928 The sources accept the following parameters:
13929
13930 @table @option
13931
13932 @item color, c
13933 Specify the color of the source, only available in the @code{color}
13934 source. For the syntax of this option, check the "Color" section in the
13935 ffmpeg-utils manual.
13936
13937 @item level
13938 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
13939 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
13940 pixels to be used as identity matrix for 3D lookup tables. Each component is
13941 coded on a @code{1/(N*N)} scale.
13942
13943 @item size, s
13944 Specify the size of the sourced video. For the syntax of this option, check the
13945 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
13946 The default value is @code{320x240}.
13947
13948 This option is not available with the @code{haldclutsrc} filter.
13949
13950 @item rate, r
13951 Specify the frame rate of the sourced video, as the number of frames
13952 generated per second. It has to be a string in the format
13953 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
13954 number or a valid video frame rate abbreviation. The default value is
13955 "25".
13956
13957 @item sar
13958 Set the sample aspect ratio of the sourced video.
13959
13960 @item duration, d
13961 Set the duration of the sourced video. See
13962 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
13963 for the accepted syntax.
13964
13965 If not specified, or the expressed duration is negative, the video is
13966 supposed to be generated forever.
13967
13968 @item decimals, n
13969 Set the number of decimals to show in the timestamp, only available in the
13970 @code{testsrc} source.
13971
13972 The displayed timestamp value will correspond to the original
13973 timestamp value multiplied by the power of 10 of the specified
13974 value. Default value is 0.
13975 @end table
13976
13977 For example the following:
13978 @example
13979 testsrc=duration=5.3:size=qcif:rate=10
13980 @end example
13981
13982 will generate a video with a duration of 5.3 seconds, with size
13983 176x144 and a frame rate of 10 frames per second.
13984
13985 The following graph description will generate a red source
13986 with an opacity of 0.2, with size "qcif" and a frame rate of 10
13987 frames per second.
13988 @example
13989 color=c=red@@0.2:s=qcif:r=10
13990 @end example
13991
13992 If the input content is to be ignored, @code{nullsrc} can be used. The
13993 following command generates noise in the luminance plane by employing
13994 the @code{geq} filter:
13995 @example
13996 nullsrc=s=256x256, geq=random(1)*255:128:128
13997 @end example
13998
13999 @subsection Commands
14000
14001 The @code{color} source supports the following commands:
14002
14003 @table @option
14004 @item c, color
14005 Set the color of the created image. Accepts the same syntax of the
14006 corresponding @option{color} option.
14007 @end table
14008
14009 @c man end VIDEO SOURCES
14010
14011 @chapter Video Sinks
14012 @c man begin VIDEO SINKS
14013
14014 Below is a description of the currently available video sinks.
14015
14016 @section buffersink
14017
14018 Buffer video frames, and make them available to the end of the filter
14019 graph.
14020
14021 This sink is mainly intended for programmatic use, in particular
14022 through the interface defined in @file{libavfilter/buffersink.h}
14023 or the options system.
14024
14025 It accepts a pointer to an AVBufferSinkContext structure, which
14026 defines the incoming buffers' formats, to be passed as the opaque
14027 parameter to @code{avfilter_init_filter} for initialization.
14028
14029 @section nullsink
14030
14031 Null video sink: do absolutely nothing with the input video. It is
14032 mainly useful as a template and for use in analysis / debugging
14033 tools.
14034
14035 @c man end VIDEO SINKS
14036
14037 @chapter Multimedia Filters
14038 @c man begin MULTIMEDIA FILTERS
14039
14040 Below is a description of the currently available multimedia filters.
14041
14042 @section ahistogram
14043
14044 Convert input audio to a video output, displaying the volume histogram.
14045
14046 The filter accepts the following options:
14047
14048 @table @option
14049 @item dmode
14050 Specify how histogram is calculated.
14051
14052 It accepts the following values:
14053 @table @samp
14054 @item single
14055 Use single histogram for all channels.
14056 @item separate
14057 Use separate histogram for each channel.
14058 @end table
14059 Default is @code{single}.
14060
14061 @item rate, r
14062 Set frame rate, expressed as number of frames per second. Default
14063 value is "25".
14064
14065 @item size, s
14066 Specify the video size for the output. For the syntax of this option, check the
14067 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14068 Default value is @code{hd720}.
14069
14070 @item scale
14071 Set display scale.
14072
14073 It accepts the following values:
14074 @table @samp
14075 @item log
14076 logarithmic
14077 @item sqrt
14078 square root
14079 @item cbrt
14080 cubic root
14081 @item lin
14082 linear
14083 @item rlog
14084 reverse logarithmic
14085 @end table
14086 Default is @code{log}.
14087
14088 @item ascale
14089 Set amplitude scale.
14090
14091 It accepts the following values:
14092 @table @samp
14093 @item log
14094 logarithmic
14095 @item lin
14096 linear
14097 @end table
14098 Default is @code{log}.
14099
14100 @item acount
14101 Set how much frames to accumulate in histogram.
14102 Defauls is 1. Setting this to -1 accumulates all frames.
14103
14104 @item rheight
14105 Set histogram ratio of window height.
14106
14107 @item slide
14108 Set sonogram sliding.
14109
14110 It accepts the following values:
14111 @table @samp
14112 @item replace
14113 replace old rows with new ones.
14114 @item scroll
14115 scroll from top to bottom.
14116 @end table
14117 Default is @code{replace}.
14118 @end table
14119
14120 @section aphasemeter
14121
14122 Convert input audio to a video output, displaying the audio phase.
14123
14124 The filter accepts the following options:
14125
14126 @table @option
14127 @item rate, r
14128 Set the output frame rate. Default value is @code{25}.
14129
14130 @item size, s
14131 Set the video size for the output. For the syntax of this option, check the
14132 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14133 Default value is @code{800x400}.
14134
14135 @item rc
14136 @item gc
14137 @item bc
14138 Specify the red, green, blue contrast. Default values are @code{2},
14139 @code{7} and @code{1}.
14140 Allowed range is @code{[0, 255]}.
14141
14142 @item mpc
14143 Set color which will be used for drawing median phase. If color is
14144 @code{none} which is default, no median phase value will be drawn.
14145 @end table
14146
14147 The filter also exports the frame metadata @code{lavfi.aphasemeter.phase} which
14148 represents mean phase of current audio frame. Value is in range @code{[-1, 1]}.
14149 The @code{-1} means left and right channels are completely out of phase and
14150 @code{1} means channels are in phase.
14151
14152 @section avectorscope
14153
14154 Convert input audio to a video output, representing the audio vector
14155 scope.
14156
14157 The filter is used to measure the difference between channels of stereo
14158 audio stream. A monoaural signal, consisting of identical left and right
14159 signal, results in straight vertical line. Any stereo separation is visible
14160 as a deviation from this line, creating a Lissajous figure.
14161 If the straight (or deviation from it) but horizontal line appears this
14162 indicates that the left and right channels are out of phase.
14163
14164 The filter accepts the following options:
14165
14166 @table @option
14167 @item mode, m
14168 Set the vectorscope mode.
14169
14170 Available values are:
14171 @table @samp
14172 @item lissajous
14173 Lissajous rotated by 45 degrees.
14174
14175 @item lissajous_xy
14176 Same as above but not rotated.
14177
14178 @item polar
14179 Shape resembling half of circle.
14180 @end table
14181
14182 Default value is @samp{lissajous}.
14183
14184 @item size, s
14185 Set 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{400x400}.
14188
14189 @item rate, r
14190 Set the output frame rate. Default value is @code{25}.
14191
14192 @item rc
14193 @item gc
14194 @item bc
14195 @item ac
14196 Specify the red, green, blue and alpha contrast. Default values are @code{40},
14197 @code{160}, @code{80} and @code{255}.
14198 Allowed range is @code{[0, 255]}.
14199
14200 @item rf
14201 @item gf
14202 @item bf
14203 @item af
14204 Specify the red, green, blue and alpha fade. Default values are @code{15},
14205 @code{10}, @code{5} and @code{5}.
14206 Allowed range is @code{[0, 255]}.
14207
14208 @item zoom
14209 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[1, 10]}.
14210
14211 @item draw
14212 Set the vectorscope drawing mode.
14213
14214 Available values are:
14215 @table @samp
14216 @item dot
14217 Draw dot for each sample.
14218
14219 @item line
14220 Draw line between previous and current sample.
14221 @end table
14222
14223 Default value is @samp{dot}.
14224 @end table
14225
14226 @subsection Examples
14227
14228 @itemize
14229 @item
14230 Complete example using @command{ffplay}:
14231 @example
14232 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
14233              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
14234 @end example
14235 @end itemize
14236
14237 @section concat
14238
14239 Concatenate audio and video streams, joining them together one after the
14240 other.
14241
14242 The filter works on segments of synchronized video and audio streams. All
14243 segments must have the same number of streams of each type, and that will
14244 also be the number of streams at output.
14245
14246 The filter accepts the following options:
14247
14248 @table @option
14249
14250 @item n
14251 Set the number of segments. Default is 2.
14252
14253 @item v
14254 Set the number of output video streams, that is also the number of video
14255 streams in each segment. Default is 1.
14256
14257 @item a
14258 Set the number of output audio streams, that is also the number of audio
14259 streams in each segment. Default is 0.
14260
14261 @item unsafe
14262 Activate unsafe mode: do not fail if segments have a different format.
14263
14264 @end table
14265
14266 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
14267 @var{a} audio outputs.
14268
14269 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
14270 segment, in the same order as the outputs, then the inputs for the second
14271 segment, etc.
14272
14273 Related streams do not always have exactly the same duration, for various
14274 reasons including codec frame size or sloppy authoring. For that reason,
14275 related synchronized streams (e.g. a video and its audio track) should be
14276 concatenated at once. The concat filter will use the duration of the longest
14277 stream in each segment (except the last one), and if necessary pad shorter
14278 audio streams with silence.
14279
14280 For this filter to work correctly, all segments must start at timestamp 0.
14281
14282 All corresponding streams must have the same parameters in all segments; the
14283 filtering system will automatically select a common pixel format for video
14284 streams, and a common sample format, sample rate and channel layout for
14285 audio streams, but other settings, such as resolution, must be converted
14286 explicitly by the user.
14287
14288 Different frame rates are acceptable but will result in variable frame rate
14289 at output; be sure to configure the output file to handle it.
14290
14291 @subsection Examples
14292
14293 @itemize
14294 @item
14295 Concatenate an opening, an episode and an ending, all in bilingual version
14296 (video in stream 0, audio in streams 1 and 2):
14297 @example
14298 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
14299   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
14300    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
14301   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
14302 @end example
14303
14304 @item
14305 Concatenate two parts, handling audio and video separately, using the
14306 (a)movie sources, and adjusting the resolution:
14307 @example
14308 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
14309 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
14310 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
14311 @end example
14312 Note that a desync will happen at the stitch if the audio and video streams
14313 do not have exactly the same duration in the first file.
14314
14315 @end itemize
14316
14317 @anchor{ebur128}
14318 @section ebur128
14319
14320 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
14321 it unchanged. By default, it logs a message at a frequency of 10Hz with the
14322 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
14323 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
14324
14325 The filter also has a video output (see the @var{video} option) with a real
14326 time graph to observe the loudness evolution. The graphic contains the logged
14327 message mentioned above, so it is not printed anymore when this option is set,
14328 unless the verbose logging is set. The main graphing area contains the
14329 short-term loudness (3 seconds of analysis), and the gauge on the right is for
14330 the momentary loudness (400 milliseconds).
14331
14332 More information about the Loudness Recommendation EBU R128 on
14333 @url{http://tech.ebu.ch/loudness}.
14334
14335 The filter accepts the following options:
14336
14337 @table @option
14338
14339 @item video
14340 Activate the video output. The audio stream is passed unchanged whether this
14341 option is set or no. The video stream will be the first output stream if
14342 activated. Default is @code{0}.
14343
14344 @item size
14345 Set the video size. This option is for video only. For the syntax of this
14346 option, check the
14347 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14348 Default and minimum resolution is @code{640x480}.
14349
14350 @item meter
14351 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
14352 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
14353 other integer value between this range is allowed.
14354
14355 @item metadata
14356 Set metadata injection. If set to @code{1}, the audio input will be segmented
14357 into 100ms output frames, each of them containing various loudness information
14358 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
14359
14360 Default is @code{0}.
14361
14362 @item framelog
14363 Force the frame logging level.
14364
14365 Available values are:
14366 @table @samp
14367 @item info
14368 information logging level
14369 @item verbose
14370 verbose logging level
14371 @end table
14372
14373 By default, the logging level is set to @var{info}. If the @option{video} or
14374 the @option{metadata} options are set, it switches to @var{verbose}.
14375
14376 @item peak
14377 Set peak mode(s).
14378
14379 Available modes can be cumulated (the option is a @code{flag} type). Possible
14380 values are:
14381 @table @samp
14382 @item none
14383 Disable any peak mode (default).
14384 @item sample
14385 Enable sample-peak mode.
14386
14387 Simple peak mode looking for the higher sample value. It logs a message
14388 for sample-peak (identified by @code{SPK}).
14389 @item true
14390 Enable true-peak mode.
14391
14392 If enabled, the peak lookup is done on an over-sampled version of the input
14393 stream for better peak accuracy. It logs a message for true-peak.
14394 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
14395 This mode requires a build with @code{libswresample}.
14396 @end table
14397
14398 @item dualmono
14399 Treat mono input files as "dual mono". If a mono file is intended for playback
14400 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
14401 If set to @code{true}, this option will compensate for this effect.
14402 Multi-channel input files are not affected by this option.
14403
14404 @item panlaw
14405 Set a specific pan law to be used for the measurement of dual mono files.
14406 This parameter is optional, and has a default value of -3.01dB.
14407 @end table
14408
14409 @subsection Examples
14410
14411 @itemize
14412 @item
14413 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
14414 @example
14415 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
14416 @end example
14417
14418 @item
14419 Run an analysis with @command{ffmpeg}:
14420 @example
14421 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
14422 @end example
14423 @end itemize
14424
14425 @section interleave, ainterleave
14426
14427 Temporally interleave frames from several inputs.
14428
14429 @code{interleave} works with video inputs, @code{ainterleave} with audio.
14430
14431 These filters read frames from several inputs and send the oldest
14432 queued frame to the output.
14433
14434 Input streams must have a well defined, monotonically increasing frame
14435 timestamp values.
14436
14437 In order to submit one frame to output, these filters need to enqueue
14438 at least one frame for each input, so they cannot work in case one
14439 input is not yet terminated and will not receive incoming frames.
14440
14441 For example consider the case when one input is a @code{select} filter
14442 which always drop input frames. The @code{interleave} filter will keep
14443 reading from that input, but it will never be able to send new frames
14444 to output until the input will send an end-of-stream signal.
14445
14446 Also, depending on inputs synchronization, the filters will drop
14447 frames in case one input receives more frames than the other ones, and
14448 the queue is already filled.
14449
14450 These filters accept the following options:
14451
14452 @table @option
14453 @item nb_inputs, n
14454 Set the number of different inputs, it is 2 by default.
14455 @end table
14456
14457 @subsection Examples
14458
14459 @itemize
14460 @item
14461 Interleave frames belonging to different streams using @command{ffmpeg}:
14462 @example
14463 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
14464 @end example
14465
14466 @item
14467 Add flickering blur effect:
14468 @example
14469 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
14470 @end example
14471 @end itemize
14472
14473 @section perms, aperms
14474
14475 Set read/write permissions for the output frames.
14476
14477 These filters are mainly aimed at developers to test direct path in the
14478 following filter in the filtergraph.
14479
14480 The filters accept the following options:
14481
14482 @table @option
14483 @item mode
14484 Select the permissions mode.
14485
14486 It accepts the following values:
14487 @table @samp
14488 @item none
14489 Do nothing. This is the default.
14490 @item ro
14491 Set all the output frames read-only.
14492 @item rw
14493 Set all the output frames directly writable.
14494 @item toggle
14495 Make the frame read-only if writable, and writable if read-only.
14496 @item random
14497 Set each output frame read-only or writable randomly.
14498 @end table
14499
14500 @item seed
14501 Set the seed for the @var{random} mode, must be an integer included between
14502 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
14503 @code{-1}, the filter will try to use a good random seed on a best effort
14504 basis.
14505 @end table
14506
14507 Note: in case of auto-inserted filter between the permission filter and the
14508 following one, the permission might not be received as expected in that
14509 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
14510 perms/aperms filter can avoid this problem.
14511
14512 @section realtime, arealtime
14513
14514 Slow down filtering to match real time approximatively.
14515
14516 These filters will pause the filtering for a variable amount of time to
14517 match the output rate with the input timestamps.
14518 They are similar to the @option{re} option to @code{ffmpeg}.
14519
14520 They accept the following options:
14521
14522 @table @option
14523 @item limit
14524 Time limit for the pauses. Any pause longer than that will be considered
14525 a timestamp discontinuity and reset the timer. Default is 2 seconds.
14526 @end table
14527
14528 @section select, aselect
14529
14530 Select frames to pass in output.
14531
14532 This filter accepts the following options:
14533
14534 @table @option
14535
14536 @item expr, e
14537 Set expression, which is evaluated for each input frame.
14538
14539 If the expression is evaluated to zero, the frame is discarded.
14540
14541 If the evaluation result is negative or NaN, the frame is sent to the
14542 first output; otherwise it is sent to the output with index
14543 @code{ceil(val)-1}, assuming that the input index starts from 0.
14544
14545 For example a value of @code{1.2} corresponds to the output with index
14546 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
14547
14548 @item outputs, n
14549 Set the number of outputs. The output to which to send the selected
14550 frame is based on the result of the evaluation. Default value is 1.
14551 @end table
14552
14553 The expression can contain the following constants:
14554
14555 @table @option
14556 @item n
14557 The (sequential) number of the filtered frame, starting from 0.
14558
14559 @item selected_n
14560 The (sequential) number of the selected frame, starting from 0.
14561
14562 @item prev_selected_n
14563 The sequential number of the last selected frame. It's NAN if undefined.
14564
14565 @item TB
14566 The timebase of the input timestamps.
14567
14568 @item pts
14569 The PTS (Presentation TimeStamp) of the filtered video frame,
14570 expressed in @var{TB} units. It's NAN if undefined.
14571
14572 @item t
14573 The PTS of the filtered video frame,
14574 expressed in seconds. It's NAN if undefined.
14575
14576 @item prev_pts
14577 The PTS of the previously filtered video frame. It's NAN if undefined.
14578
14579 @item prev_selected_pts
14580 The PTS of the last previously filtered video frame. It's NAN if undefined.
14581
14582 @item prev_selected_t
14583 The PTS of the last previously selected video frame. It's NAN if undefined.
14584
14585 @item start_pts
14586 The PTS of the first video frame in the video. It's NAN if undefined.
14587
14588 @item start_t
14589 The time of the first video frame in the video. It's NAN if undefined.
14590
14591 @item pict_type @emph{(video only)}
14592 The type of the filtered frame. It can assume one of the following
14593 values:
14594 @table @option
14595 @item I
14596 @item P
14597 @item B
14598 @item S
14599 @item SI
14600 @item SP
14601 @item BI
14602 @end table
14603
14604 @item interlace_type @emph{(video only)}
14605 The frame interlace type. It can assume one of the following values:
14606 @table @option
14607 @item PROGRESSIVE
14608 The frame is progressive (not interlaced).
14609 @item TOPFIRST
14610 The frame is top-field-first.
14611 @item BOTTOMFIRST
14612 The frame is bottom-field-first.
14613 @end table
14614
14615 @item consumed_sample_n @emph{(audio only)}
14616 the number of selected samples before the current frame
14617
14618 @item samples_n @emph{(audio only)}
14619 the number of samples in the current frame
14620
14621 @item sample_rate @emph{(audio only)}
14622 the input sample rate
14623
14624 @item key
14625 This is 1 if the filtered frame is a key-frame, 0 otherwise.
14626
14627 @item pos
14628 the position in the file of the filtered frame, -1 if the information
14629 is not available (e.g. for synthetic video)
14630
14631 @item scene @emph{(video only)}
14632 value between 0 and 1 to indicate a new scene; a low value reflects a low
14633 probability for the current frame to introduce a new scene, while a higher
14634 value means the current frame is more likely to be one (see the example below)
14635
14636 @item concatdec_select
14637 The concat demuxer can select only part of a concat input file by setting an
14638 inpoint and an outpoint, but the output packets may not be entirely contained
14639 in the selected interval. By using this variable, it is possible to skip frames
14640 generated by the concat demuxer which are not exactly contained in the selected
14641 interval.
14642
14643 This works by comparing the frame pts against the @var{lavf.concat.start_time}
14644 and the @var{lavf.concat.duration} packet metadata values which are also
14645 present in the decoded frames.
14646
14647 The @var{concatdec_select} variable is -1 if the frame pts is at least
14648 start_time and either the duration metadata is missing or the frame pts is less
14649 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
14650 missing.
14651
14652 That basically means that an input frame is selected if its pts is within the
14653 interval set by the concat demuxer.
14654
14655 @end table
14656
14657 The default value of the select expression is "1".
14658
14659 @subsection Examples
14660
14661 @itemize
14662 @item
14663 Select all frames in input:
14664 @example
14665 select
14666 @end example
14667
14668 The example above is the same as:
14669 @example
14670 select=1
14671 @end example
14672
14673 @item
14674 Skip all frames:
14675 @example
14676 select=0
14677 @end example
14678
14679 @item
14680 Select only I-frames:
14681 @example
14682 select='eq(pict_type\,I)'
14683 @end example
14684
14685 @item
14686 Select one frame every 100:
14687 @example
14688 select='not(mod(n\,100))'
14689 @end example
14690
14691 @item
14692 Select only frames contained in the 10-20 time interval:
14693 @example
14694 select=between(t\,10\,20)
14695 @end example
14696
14697 @item
14698 Select only I frames contained in the 10-20 time interval:
14699 @example
14700 select=between(t\,10\,20)*eq(pict_type\,I)
14701 @end example
14702
14703 @item
14704 Select frames with a minimum distance of 10 seconds:
14705 @example
14706 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
14707 @end example
14708
14709 @item
14710 Use aselect to select only audio frames with samples number > 100:
14711 @example
14712 aselect='gt(samples_n\,100)'
14713 @end example
14714
14715 @item
14716 Create a mosaic of the first scenes:
14717 @example
14718 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
14719 @end example
14720
14721 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
14722 choice.
14723
14724 @item
14725 Send even and odd frames to separate outputs, and compose them:
14726 @example
14727 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
14728 @end example
14729
14730 @item
14731 Select useful frames from an ffconcat file which is using inpoints and
14732 outpoints but where the source files are not intra frame only.
14733 @example
14734 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
14735 @end example
14736 @end itemize
14737
14738 @section sendcmd, asendcmd
14739
14740 Send commands to filters in the filtergraph.
14741
14742 These filters read commands to be sent to other filters in the
14743 filtergraph.
14744
14745 @code{sendcmd} must be inserted between two video filters,
14746 @code{asendcmd} must be inserted between two audio filters, but apart
14747 from that they act the same way.
14748
14749 The specification of commands can be provided in the filter arguments
14750 with the @var{commands} option, or in a file specified by the
14751 @var{filename} option.
14752
14753 These filters accept the following options:
14754 @table @option
14755 @item commands, c
14756 Set the commands to be read and sent to the other filters.
14757 @item filename, f
14758 Set the filename of the commands to be read and sent to the other
14759 filters.
14760 @end table
14761
14762 @subsection Commands syntax
14763
14764 A commands description consists of a sequence of interval
14765 specifications, comprising a list of commands to be executed when a
14766 particular event related to that interval occurs. The occurring event
14767 is typically the current frame time entering or leaving a given time
14768 interval.
14769
14770 An interval is specified by the following syntax:
14771 @example
14772 @var{START}[-@var{END}] @var{COMMANDS};
14773 @end example
14774
14775 The time interval is specified by the @var{START} and @var{END} times.
14776 @var{END} is optional and defaults to the maximum time.
14777
14778 The current frame time is considered within the specified interval if
14779 it is included in the interval [@var{START}, @var{END}), that is when
14780 the time is greater or equal to @var{START} and is lesser than
14781 @var{END}.
14782
14783 @var{COMMANDS} consists of a sequence of one or more command
14784 specifications, separated by ",", relating to that interval.  The
14785 syntax of a command specification is given by:
14786 @example
14787 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
14788 @end example
14789
14790 @var{FLAGS} is optional and specifies the type of events relating to
14791 the time interval which enable sending the specified command, and must
14792 be a non-null sequence of identifier flags separated by "+" or "|" and
14793 enclosed between "[" and "]".
14794
14795 The following flags are recognized:
14796 @table @option
14797 @item enter
14798 The command is sent when the current frame timestamp enters the
14799 specified interval. In other words, the command is sent when the
14800 previous frame timestamp was not in the given interval, and the
14801 current is.
14802
14803 @item leave
14804 The command is sent when the current frame timestamp leaves the
14805 specified interval. In other words, the command is sent when the
14806 previous frame timestamp was in the given interval, and the
14807 current is not.
14808 @end table
14809
14810 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
14811 assumed.
14812
14813 @var{TARGET} specifies the target of the command, usually the name of
14814 the filter class or a specific filter instance name.
14815
14816 @var{COMMAND} specifies the name of the command for the target filter.
14817
14818 @var{ARG} is optional and specifies the optional list of argument for
14819 the given @var{COMMAND}.
14820
14821 Between one interval specification and another, whitespaces, or
14822 sequences of characters starting with @code{#} until the end of line,
14823 are ignored and can be used to annotate comments.
14824
14825 A simplified BNF description of the commands specification syntax
14826 follows:
14827 @example
14828 @var{COMMAND_FLAG}  ::= "enter" | "leave"
14829 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
14830 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
14831 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
14832 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
14833 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
14834 @end example
14835
14836 @subsection Examples
14837
14838 @itemize
14839 @item
14840 Specify audio tempo change at second 4:
14841 @example
14842 asendcmd=c='4.0 atempo tempo 1.5',atempo
14843 @end example
14844
14845 @item
14846 Specify a list of drawtext and hue commands in a file.
14847 @example
14848 # show text in the interval 5-10
14849 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
14850          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
14851
14852 # desaturate the image in the interval 15-20
14853 15.0-20.0 [enter] hue s 0,
14854           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
14855           [leave] hue s 1,
14856           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
14857
14858 # apply an exponential saturation fade-out effect, starting from time 25
14859 25 [enter] hue s exp(25-t)
14860 @end example
14861
14862 A filtergraph allowing to read and process the above command list
14863 stored in a file @file{test.cmd}, can be specified with:
14864 @example
14865 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
14866 @end example
14867 @end itemize
14868
14869 @anchor{setpts}
14870 @section setpts, asetpts
14871
14872 Change the PTS (presentation timestamp) of the input frames.
14873
14874 @code{setpts} works on video frames, @code{asetpts} on audio frames.
14875
14876 This filter accepts the following options:
14877
14878 @table @option
14879
14880 @item expr
14881 The expression which is evaluated for each frame to construct its timestamp.
14882
14883 @end table
14884
14885 The expression is evaluated through the eval API and can contain the following
14886 constants:
14887
14888 @table @option
14889 @item FRAME_RATE
14890 frame rate, only defined for constant frame-rate video
14891
14892 @item PTS
14893 The presentation timestamp in input
14894
14895 @item N
14896 The count of the input frame for video or the number of consumed samples,
14897 not including the current frame for audio, starting from 0.
14898
14899 @item NB_CONSUMED_SAMPLES
14900 The number of consumed samples, not including the current frame (only
14901 audio)
14902
14903 @item NB_SAMPLES, S
14904 The number of samples in the current frame (only audio)
14905
14906 @item SAMPLE_RATE, SR
14907 The audio sample rate.
14908
14909 @item STARTPTS
14910 The PTS of the first frame.
14911
14912 @item STARTT
14913 the time in seconds of the first frame
14914
14915 @item INTERLACED
14916 State whether the current frame is interlaced.
14917
14918 @item T
14919 the time in seconds of the current frame
14920
14921 @item POS
14922 original position in the file of the frame, or undefined if undefined
14923 for the current frame
14924
14925 @item PREV_INPTS
14926 The previous input PTS.
14927
14928 @item PREV_INT
14929 previous input time in seconds
14930
14931 @item PREV_OUTPTS
14932 The previous output PTS.
14933
14934 @item PREV_OUTT
14935 previous output time in seconds
14936
14937 @item RTCTIME
14938 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
14939 instead.
14940
14941 @item RTCSTART
14942 The wallclock (RTC) time at the start of the movie in microseconds.
14943
14944 @item TB
14945 The timebase of the input timestamps.
14946
14947 @end table
14948
14949 @subsection Examples
14950
14951 @itemize
14952 @item
14953 Start counting PTS from zero
14954 @example
14955 setpts=PTS-STARTPTS
14956 @end example
14957
14958 @item
14959 Apply fast motion effect:
14960 @example
14961 setpts=0.5*PTS
14962 @end example
14963
14964 @item
14965 Apply slow motion effect:
14966 @example
14967 setpts=2.0*PTS
14968 @end example
14969
14970 @item
14971 Set fixed rate of 25 frames per second:
14972 @example
14973 setpts=N/(25*TB)
14974 @end example
14975
14976 @item
14977 Set fixed rate 25 fps with some jitter:
14978 @example
14979 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
14980 @end example
14981
14982 @item
14983 Apply an offset of 10 seconds to the input PTS:
14984 @example
14985 setpts=PTS+10/TB
14986 @end example
14987
14988 @item
14989 Generate timestamps from a "live source" and rebase onto the current timebase:
14990 @example
14991 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
14992 @end example
14993
14994 @item
14995 Generate timestamps by counting samples:
14996 @example
14997 asetpts=N/SR/TB
14998 @end example
14999
15000 @end itemize
15001
15002 @section settb, asettb
15003
15004 Set the timebase to use for the output frames timestamps.
15005 It is mainly useful for testing timebase configuration.
15006
15007 It accepts the following parameters:
15008
15009 @table @option
15010
15011 @item expr, tb
15012 The expression which is evaluated into the output timebase.
15013
15014 @end table
15015
15016 The value for @option{tb} is an arithmetic expression representing a
15017 rational. The expression can contain the constants "AVTB" (the default
15018 timebase), "intb" (the input timebase) and "sr" (the sample rate,
15019 audio only). Default value is "intb".
15020
15021 @subsection Examples
15022
15023 @itemize
15024 @item
15025 Set the timebase to 1/25:
15026 @example
15027 settb=expr=1/25
15028 @end example
15029
15030 @item
15031 Set the timebase to 1/10:
15032 @example
15033 settb=expr=0.1
15034 @end example
15035
15036 @item
15037 Set the timebase to 1001/1000:
15038 @example
15039 settb=1+0.001
15040 @end example
15041
15042 @item
15043 Set the timebase to 2*intb:
15044 @example
15045 settb=2*intb
15046 @end example
15047
15048 @item
15049 Set the default timebase value:
15050 @example
15051 settb=AVTB
15052 @end example
15053 @end itemize
15054
15055 @section showcqt
15056 Convert input audio to a video output representing frequency spectrum
15057 logarithmically using Brown-Puckette constant Q transform algorithm with
15058 direct frequency domain coefficient calculation (but the transform itself
15059 is not really constant Q, instead the Q factor is actually variable/clamped),
15060 with musical tone scale, from E0 to D#10.
15061
15062 The filter accepts the following options:
15063
15064 @table @option
15065 @item size, s
15066 Specify the video size for the output. It must be even. For the syntax of this option,
15067 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15068 Default value is @code{1920x1080}.
15069
15070 @item fps, rate, r
15071 Set the output frame rate. Default value is @code{25}.
15072
15073 @item bar_h
15074 Set the bargraph height. It must be even. Default value is @code{-1} which
15075 computes the bargraph height automatically.
15076
15077 @item axis_h
15078 Set the axis height. It must be even. Default value is @code{-1} which computes
15079 the axis height automatically.
15080
15081 @item sono_h
15082 Set the sonogram height. It must be even. Default value is @code{-1} which
15083 computes the sonogram height automatically.
15084
15085 @item fullhd
15086 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
15087 instead. Default value is @code{1}.
15088
15089 @item sono_v, volume
15090 Specify the sonogram volume expression. It can contain variables:
15091 @table @option
15092 @item bar_v
15093 the @var{bar_v} evaluated expression
15094 @item frequency, freq, f
15095 the frequency where it is evaluated
15096 @item timeclamp, tc
15097 the value of @var{timeclamp} option
15098 @end table
15099 and functions:
15100 @table @option
15101 @item a_weighting(f)
15102 A-weighting of equal loudness
15103 @item b_weighting(f)
15104 B-weighting of equal loudness
15105 @item c_weighting(f)
15106 C-weighting of equal loudness.
15107 @end table
15108 Default value is @code{16}.
15109
15110 @item bar_v, volume2
15111 Specify the bargraph volume expression. It can contain variables:
15112 @table @option
15113 @item sono_v
15114 the @var{sono_v} evaluated expression
15115 @item frequency, freq, f
15116 the frequency where it is evaluated
15117 @item timeclamp, tc
15118 the value of @var{timeclamp} option
15119 @end table
15120 and functions:
15121 @table @option
15122 @item a_weighting(f)
15123 A-weighting of equal loudness
15124 @item b_weighting(f)
15125 B-weighting of equal loudness
15126 @item c_weighting(f)
15127 C-weighting of equal loudness.
15128 @end table
15129 Default value is @code{sono_v}.
15130
15131 @item sono_g, gamma
15132 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
15133 higher gamma makes the spectrum having more range. Default value is @code{3}.
15134 Acceptable range is @code{[1, 7]}.
15135
15136 @item bar_g, gamma2
15137 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
15138 @code{[1, 7]}.
15139
15140 @item timeclamp, tc
15141 Specify the transform timeclamp. At low frequency, there is trade-off between
15142 accuracy in time domain and frequency domain. If timeclamp is lower,
15143 event in time domain is represented more accurately (such as fast bass drum),
15144 otherwise event in frequency domain is represented more accurately
15145 (such as bass guitar). Acceptable range is @code{[0.1, 1]}. Default value is @code{0.17}.
15146
15147 @item basefreq
15148 Specify the transform base frequency. Default value is @code{20.01523126408007475},
15149 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
15150
15151 @item endfreq
15152 Specify the transform end frequency. Default value is @code{20495.59681441799654},
15153 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
15154
15155 @item coeffclamp
15156 This option is deprecated and ignored.
15157
15158 @item tlength
15159 Specify the transform length in time domain. Use this option to control accuracy
15160 trade-off between time domain and frequency domain at every frequency sample.
15161 It can contain variables:
15162 @table @option
15163 @item frequency, freq, f
15164 the frequency where it is evaluated
15165 @item timeclamp, tc
15166 the value of @var{timeclamp} option.
15167 @end table
15168 Default value is @code{384*tc/(384+tc*f)}.
15169
15170 @item count
15171 Specify the transform count for every video frame. Default value is @code{6}.
15172 Acceptable range is @code{[1, 30]}.
15173
15174 @item fcount
15175 Specify the transform count for every single pixel. Default value is @code{0},
15176 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
15177
15178 @item fontfile
15179 Specify font file for use with freetype to draw the axis. If not specified,
15180 use embedded font. Note that drawing with font file or embedded font is not
15181 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
15182 option instead.
15183
15184 @item fontcolor
15185 Specify font color expression. This is arithmetic expression that should return
15186 integer value 0xRRGGBB. It can contain variables:
15187 @table @option
15188 @item frequency, freq, f
15189 the frequency where it is evaluated
15190 @item timeclamp, tc
15191 the value of @var{timeclamp} option
15192 @end table
15193 and functions:
15194 @table @option
15195 @item midi(f)
15196 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
15197 @item r(x), g(x), b(x)
15198 red, green, and blue value of intensity x.
15199 @end table
15200 Default value is @code{st(0, (midi(f)-59.5)/12);
15201 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
15202 r(1-ld(1)) + b(ld(1))}.
15203
15204 @item axisfile
15205 Specify image file to draw the axis. This option override @var{fontfile} and
15206 @var{fontcolor} option.
15207
15208 @item axis, text
15209 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
15210 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
15211 Default value is @code{1}.
15212
15213 @end table
15214
15215 @subsection Examples
15216
15217 @itemize
15218 @item
15219 Playing audio while showing the spectrum:
15220 @example
15221 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
15222 @end example
15223
15224 @item
15225 Same as above, but with frame rate 30 fps:
15226 @example
15227 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
15228 @end example
15229
15230 @item
15231 Playing at 1280x720:
15232 @example
15233 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
15234 @end example
15235
15236 @item
15237 Disable sonogram display:
15238 @example
15239 sono_h=0
15240 @end example
15241
15242 @item
15243 A1 and its harmonics: A1, A2, (near)E3, A3:
15244 @example
15245 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),
15246                  asplit[a][out1]; [a] showcqt [out0]'
15247 @end example
15248
15249 @item
15250 Same as above, but with more accuracy in frequency domain:
15251 @example
15252 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),
15253                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
15254 @end example
15255
15256 @item
15257 Custom volume:
15258 @example
15259 bar_v=10:sono_v=bar_v*a_weighting(f)
15260 @end example
15261
15262 @item
15263 Custom gamma, now spectrum is linear to the amplitude.
15264 @example
15265 bar_g=2:sono_g=2
15266 @end example
15267
15268 @item
15269 Custom tlength equation:
15270 @example
15271 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)))'
15272 @end example
15273
15274 @item
15275 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
15276 @example
15277 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
15278 @end example
15279
15280 @item
15281 Custom frequency range with custom axis using image file:
15282 @example
15283 axisfile=myaxis.png:basefreq=40:endfreq=10000
15284 @end example
15285 @end itemize
15286
15287 @section showfreqs
15288
15289 Convert input audio to video output representing the audio power spectrum.
15290 Audio amplitude is on Y-axis while frequency is on X-axis.
15291
15292 The filter accepts the following options:
15293
15294 @table @option
15295 @item size, s
15296 Specify size of video. For the syntax of this option, check the
15297 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15298 Default is @code{1024x512}.
15299
15300 @item mode
15301 Set display mode.
15302 This set how each frequency bin will be represented.
15303
15304 It accepts the following values:
15305 @table @samp
15306 @item line
15307 @item bar
15308 @item dot
15309 @end table
15310 Default is @code{bar}.
15311
15312 @item ascale
15313 Set amplitude scale.
15314
15315 It accepts the following values:
15316 @table @samp
15317 @item lin
15318 Linear scale.
15319
15320 @item sqrt
15321 Square root scale.
15322
15323 @item cbrt
15324 Cubic root scale.
15325
15326 @item log
15327 Logarithmic scale.
15328 @end table
15329 Default is @code{log}.
15330
15331 @item fscale
15332 Set frequency scale.
15333
15334 It accepts the following values:
15335 @table @samp
15336 @item lin
15337 Linear scale.
15338
15339 @item log
15340 Logarithmic scale.
15341
15342 @item rlog
15343 Reverse logarithmic scale.
15344 @end table
15345 Default is @code{lin}.
15346
15347 @item win_size
15348 Set window size.
15349
15350 It accepts the following values:
15351 @table @samp
15352 @item w16
15353 @item w32
15354 @item w64
15355 @item w128
15356 @item w256
15357 @item w512
15358 @item w1024
15359 @item w2048
15360 @item w4096
15361 @item w8192
15362 @item w16384
15363 @item w32768
15364 @item w65536
15365 @end table
15366 Default is @code{w2048}
15367
15368 @item win_func
15369 Set windowing function.
15370
15371 It accepts the following values:
15372 @table @samp
15373 @item rect
15374 @item bartlett
15375 @item hanning
15376 @item hamming
15377 @item blackman
15378 @item welch
15379 @item flattop
15380 @item bharris
15381 @item bnuttall
15382 @item bhann
15383 @item sine
15384 @item nuttall
15385 @item lanczos
15386 @item gauss
15387 @item tukey
15388 @end table
15389 Default is @code{hanning}.
15390
15391 @item overlap
15392 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
15393 which means optimal overlap for selected window function will be picked.
15394
15395 @item averaging
15396 Set time averaging. Setting this to 0 will display current maximal peaks.
15397 Default is @code{1}, which means time averaging is disabled.
15398
15399 @item colors
15400 Specify list of colors separated by space or by '|' which will be used to
15401 draw channel frequencies. Unrecognized or missing colors will be replaced
15402 by white color.
15403
15404 @item cmode
15405 Set channel display mode.
15406
15407 It accepts the following values:
15408 @table @samp
15409 @item combined
15410 @item separate
15411 @end table
15412 Default is @code{combined}.
15413
15414 @end table
15415
15416 @anchor{showspectrum}
15417 @section showspectrum
15418
15419 Convert input audio to a video output, representing the audio frequency
15420 spectrum.
15421
15422 The filter accepts the following options:
15423
15424 @table @option
15425 @item size, s
15426 Specify the video size for the output. For the syntax of this option, check the
15427 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15428 Default value is @code{640x512}.
15429
15430 @item slide
15431 Specify how the spectrum should slide along the window.
15432
15433 It accepts the following values:
15434 @table @samp
15435 @item replace
15436 the samples start again on the left when they reach the right
15437 @item scroll
15438 the samples scroll from right to left
15439 @item rscroll
15440 the samples scroll from left to right
15441 @item fullframe
15442 frames are only produced when the samples reach the right
15443 @end table
15444
15445 Default value is @code{replace}.
15446
15447 @item mode
15448 Specify display mode.
15449
15450 It accepts the following values:
15451 @table @samp
15452 @item combined
15453 all channels are displayed in the same row
15454 @item separate
15455 all channels are displayed in separate rows
15456 @end table
15457
15458 Default value is @samp{combined}.
15459
15460 @item color
15461 Specify display color mode.
15462
15463 It accepts the following values:
15464 @table @samp
15465 @item channel
15466 each channel is displayed in a separate color
15467 @item intensity
15468 each channel is displayed using the same color scheme
15469 @item rainbow
15470 each channel is displayed using the rainbow color scheme
15471 @item moreland
15472 each channel is displayed using the moreland color scheme
15473 @item nebulae
15474 each channel is displayed using the nebulae color scheme
15475 @item fire
15476 each channel is displayed using the fire color scheme
15477 @item fiery
15478 each channel is displayed using the fiery color scheme
15479 @item fruit
15480 each channel is displayed using the fruit color scheme
15481 @item cool
15482 each channel is displayed using the cool color scheme
15483 @end table
15484
15485 Default value is @samp{channel}.
15486
15487 @item scale
15488 Specify scale used for calculating intensity color values.
15489
15490 It accepts the following values:
15491 @table @samp
15492 @item lin
15493 linear
15494 @item sqrt
15495 square root, default
15496 @item cbrt
15497 cubic root
15498 @item 4thrt
15499 4th root
15500 @item 5thrt
15501 5th root
15502 @item log
15503 logarithmic
15504 @end table
15505
15506 Default value is @samp{sqrt}.
15507
15508 @item saturation
15509 Set saturation modifier for displayed colors. Negative values provide
15510 alternative color scheme. @code{0} is no saturation at all.
15511 Saturation must be in [-10.0, 10.0] range.
15512 Default value is @code{1}.
15513
15514 @item win_func
15515 Set window function.
15516
15517 It accepts the following values:
15518 @table @samp
15519 @item rect
15520 @item bartlett
15521 @item hann
15522 @item hanning
15523 @item hamming
15524 @item blackman
15525 @item welch
15526 @item flattop
15527 @item bharris
15528 @item bnuttall
15529 @item bhann
15530 @item sine
15531 @item nuttall
15532 @item lanczos
15533 @item gauss
15534 @item tukey
15535 @end table
15536
15537 Default value is @code{hann}.
15538
15539 @item orientation
15540 Set orientation of time vs frequency axis. Can be @code{vertical} or
15541 @code{horizontal}. Default is @code{vertical}.
15542
15543 @item overlap
15544 Set ratio of overlap window. Default value is @code{0}.
15545 When value is @code{1} overlap is set to recommended size for specific
15546 window function currently used.
15547
15548 @item gain
15549 Set scale gain for calculating intensity color values.
15550 Default value is @code{1}.
15551
15552 @item data
15553 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
15554 @end table
15555
15556 The usage is very similar to the showwaves filter; see the examples in that
15557 section.
15558
15559 @subsection Examples
15560
15561 @itemize
15562 @item
15563 Large window with logarithmic color scaling:
15564 @example
15565 showspectrum=s=1280x480:scale=log
15566 @end example
15567
15568 @item
15569 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
15570 @example
15571 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
15572              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
15573 @end example
15574 @end itemize
15575
15576 @section showspectrumpic
15577
15578 Convert input audio to a single video frame, representing the audio frequency
15579 spectrum.
15580
15581 The filter accepts the following options:
15582
15583 @table @option
15584 @item size, s
15585 Specify the video size for the output. For the syntax of this option, check the
15586 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15587 Default value is @code{4096x2048}.
15588
15589 @item mode
15590 Specify display mode.
15591
15592 It accepts the following values:
15593 @table @samp
15594 @item combined
15595 all channels are displayed in the same row
15596 @item separate
15597 all channels are displayed in separate rows
15598 @end table
15599 Default value is @samp{combined}.
15600
15601 @item color
15602 Specify display color mode.
15603
15604 It accepts the following values:
15605 @table @samp
15606 @item channel
15607 each channel is displayed in a separate color
15608 @item intensity
15609 each channel is displayed using the same color scheme
15610 @item rainbow
15611 each channel is displayed using the rainbow color scheme
15612 @item moreland
15613 each channel is displayed using the moreland color scheme
15614 @item nebulae
15615 each channel is displayed using the nebulae color scheme
15616 @item fire
15617 each channel is displayed using the fire color scheme
15618 @item fiery
15619 each channel is displayed using the fiery color scheme
15620 @item fruit
15621 each channel is displayed using the fruit color scheme
15622 @item cool
15623 each channel is displayed using the cool color scheme
15624 @end table
15625 Default value is @samp{intensity}.
15626
15627 @item scale
15628 Specify scale used for calculating intensity color values.
15629
15630 It accepts the following values:
15631 @table @samp
15632 @item lin
15633 linear
15634 @item sqrt
15635 square root, default
15636 @item cbrt
15637 cubic root
15638 @item 4thrt
15639 4th root
15640 @item 5thrt
15641 5th root
15642 @item log
15643 logarithmic
15644 @end table
15645 Default value is @samp{log}.
15646
15647 @item saturation
15648 Set saturation modifier for displayed colors. Negative values provide
15649 alternative color scheme. @code{0} is no saturation at all.
15650 Saturation must be in [-10.0, 10.0] range.
15651 Default value is @code{1}.
15652
15653 @item win_func
15654 Set window function.
15655
15656 It accepts the following values:
15657 @table @samp
15658 @item rect
15659 @item bartlett
15660 @item hann
15661 @item hanning
15662 @item hamming
15663 @item blackman
15664 @item welch
15665 @item flattop
15666 @item bharris
15667 @item bnuttall
15668 @item bhann
15669 @item sine
15670 @item nuttall
15671 @item lanczos
15672 @item gauss
15673 @item tukey
15674 @end table
15675 Default value is @code{hann}.
15676
15677 @item orientation
15678 Set orientation of time vs frequency axis. Can be @code{vertical} or
15679 @code{horizontal}. Default is @code{vertical}.
15680
15681 @item gain
15682 Set scale gain for calculating intensity color values.
15683 Default value is @code{1}.
15684
15685 @item legend
15686 Draw time and frequency axes and legends. Default is enabled.
15687 @end table
15688
15689 @subsection Examples
15690
15691 @itemize
15692 @item
15693 Extract an audio spectrogram of a whole audio track
15694 in a 1024x1024 picture using @command{ffmpeg}:
15695 @example
15696 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
15697 @end example
15698 @end itemize
15699
15700 @section showvolume
15701
15702 Convert input audio volume to a video output.
15703
15704 The filter accepts the following options:
15705
15706 @table @option
15707 @item rate, r
15708 Set video rate.
15709
15710 @item b
15711 Set border width, allowed range is [0, 5]. Default is 1.
15712
15713 @item w
15714 Set channel width, allowed range is [80, 1080]. Default is 400.
15715
15716 @item h
15717 Set channel height, allowed range is [1, 100]. Default is 20.
15718
15719 @item f
15720 Set fade, allowed range is [0.001, 1]. Default is 0.95.
15721
15722 @item c
15723 Set volume color expression.
15724
15725 The expression can use the following variables:
15726
15727 @table @option
15728 @item VOLUME
15729 Current max volume of channel in dB.
15730
15731 @item CHANNEL
15732 Current channel number, starting from 0.
15733 @end table
15734
15735 @item t
15736 If set, displays channel names. Default is enabled.
15737
15738 @item v
15739 If set, displays volume values. Default is enabled.
15740 @end table
15741
15742 @section showwaves
15743
15744 Convert input audio to a video output, representing the samples waves.
15745
15746 The filter accepts the following options:
15747
15748 @table @option
15749 @item size, s
15750 Specify the video size for the output. For the syntax of this option, check the
15751 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15752 Default value is @code{600x240}.
15753
15754 @item mode
15755 Set display mode.
15756
15757 Available values are:
15758 @table @samp
15759 @item point
15760 Draw a point for each sample.
15761
15762 @item line
15763 Draw a vertical line for each sample.
15764
15765 @item p2p
15766 Draw a point for each sample and a line between them.
15767
15768 @item cline
15769 Draw a centered vertical line for each sample.
15770 @end table
15771
15772 Default value is @code{point}.
15773
15774 @item n
15775 Set the number of samples which are printed on the same column. A
15776 larger value will decrease the frame rate. Must be a positive
15777 integer. This option can be set only if the value for @var{rate}
15778 is not explicitly specified.
15779
15780 @item rate, r
15781 Set the (approximate) output frame rate. This is done by setting the
15782 option @var{n}. Default value is "25".
15783
15784 @item split_channels
15785 Set if channels should be drawn separately or overlap. Default value is 0.
15786
15787 @item colors
15788 Set colors separated by '|' which are going to be used for drawing of each channel.
15789
15790 @item scale
15791 Set amplitude scale. Can be linear @code{lin} or logarithmic @code{log}.
15792 Default is linear.
15793
15794 @end table
15795
15796 @subsection Examples
15797
15798 @itemize
15799 @item
15800 Output the input file audio and the corresponding video representation
15801 at the same time:
15802 @example
15803 amovie=a.mp3,asplit[out0],showwaves[out1]
15804 @end example
15805
15806 @item
15807 Create a synthetic signal and show it with showwaves, forcing a
15808 frame rate of 30 frames per second:
15809 @example
15810 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
15811 @end example
15812 @end itemize
15813
15814 @section showwavespic
15815
15816 Convert input audio to a single video frame, representing the samples waves.
15817
15818 The filter accepts the following options:
15819
15820 @table @option
15821 @item size, s
15822 Specify the video size for the output. For the syntax of this option, check the
15823 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15824 Default value is @code{600x240}.
15825
15826 @item split_channels
15827 Set if channels should be drawn separately or overlap. Default value is 0.
15828
15829 @item colors
15830 Set colors separated by '|' which are going to be used for drawing of each channel.
15831
15832 @item scale
15833 Set amplitude scale. Can be linear @code{lin} or logarithmic @code{log}.
15834 Default is linear.
15835 @end table
15836
15837 @subsection Examples
15838
15839 @itemize
15840 @item
15841 Extract a channel split representation of the wave form of a whole audio track
15842 in a 1024x800 picture using @command{ffmpeg}:
15843 @example
15844 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
15845 @end example
15846
15847 @item
15848 Colorize the waveform with colorchannelmixer. This example will make
15849 the waveform a green color approximately RGB(66,217,150). Additional
15850 channels will be shades of this color.
15851 @example
15852 ffmpeg -i audio.mp3 -filter_complex "showwavespic,colorchannelmixer=rr=66/255:gg=217/255:bb=150/255" waveform.png
15853 @end example
15854 @end itemize
15855
15856 @section spectrumsynth
15857
15858 Sythesize audio from 2 input video spectrums, first input stream represents
15859 magnitude across time and second represents phase across time.
15860 The filter will transform from frequency domain as displayed in videos back
15861 to time domain as presented in audio output.
15862
15863 This filter is primarly created for reversing processed @ref{showspectrum}
15864 filter outputs, but can synthesize sound from other spectrograms too.
15865 But in such case results are going to be poor if the phase data is not
15866 available, because in such cases phase data need to be recreated, usually
15867 its just recreated from random noise.
15868 For best results use gray only output (@code{channel} color mode in
15869 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
15870 @code{lin} scale for phase video. To produce phase, for 2nd video, use
15871 @code{data} option. Inputs videos should generally use @code{fullframe}
15872 slide mode as that saves resources needed for decoding video.
15873
15874 The filter accepts the following options:
15875
15876 @table @option
15877 @item sample_rate
15878 Specify sample rate of output audio, the sample rate of audio from which
15879 spectrum was generated may differ.
15880
15881 @item channels
15882 Set number of channels represented in input video spectrums.
15883
15884 @item scale
15885 Set scale which was used when generating magnitude input spectrum.
15886 Can be @code{lin} or @code{log}. Default is @code{log}.
15887
15888 @item slide
15889 Set slide which was used when generating inputs spectrums.
15890 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
15891 Default is @code{fullframe}.
15892
15893 @item win_func
15894 Set window function used for resynthesis.
15895
15896 @item overlap
15897 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
15898 which means optimal overlap for selected window function will be picked.
15899
15900 @item orientation
15901 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
15902 Default is @code{vertical}.
15903 @end table
15904
15905 @subsection Examples
15906
15907 @itemize
15908 @item
15909 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
15910 then resynthesize videos back to audio with spectrumsynth:
15911 @example
15912 ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=log:overlap=0.875:color=channel:slide=fullframe:data=magnitude -an -c:v rawvideo magnitude.nut
15913 ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=lin:overlap=0.875:color=channel:slide=fullframe:data=phase -an -c:v rawvideo phase.nut
15914 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
15915 @end example
15916 @end itemize
15917
15918 @section split, asplit
15919
15920 Split input into several identical outputs.
15921
15922 @code{asplit} works with audio input, @code{split} with video.
15923
15924 The filter accepts a single parameter which specifies the number of outputs. If
15925 unspecified, it defaults to 2.
15926
15927 @subsection Examples
15928
15929 @itemize
15930 @item
15931 Create two separate outputs from the same input:
15932 @example
15933 [in] split [out0][out1]
15934 @end example
15935
15936 @item
15937 To create 3 or more outputs, you need to specify the number of
15938 outputs, like in:
15939 @example
15940 [in] asplit=3 [out0][out1][out2]
15941 @end example
15942
15943 @item
15944 Create two separate outputs from the same input, one cropped and
15945 one padded:
15946 @example
15947 [in] split [splitout1][splitout2];
15948 [splitout1] crop=100:100:0:0    [cropout];
15949 [splitout2] pad=200:200:100:100 [padout];
15950 @end example
15951
15952 @item
15953 Create 5 copies of the input audio with @command{ffmpeg}:
15954 @example
15955 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
15956 @end example
15957 @end itemize
15958
15959 @section zmq, azmq
15960
15961 Receive commands sent through a libzmq client, and forward them to
15962 filters in the filtergraph.
15963
15964 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
15965 must be inserted between two video filters, @code{azmq} between two
15966 audio filters.
15967
15968 To enable these filters you need to install the libzmq library and
15969 headers and configure FFmpeg with @code{--enable-libzmq}.
15970
15971 For more information about libzmq see:
15972 @url{http://www.zeromq.org/}
15973
15974 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
15975 receives messages sent through a network interface defined by the
15976 @option{bind_address} option.
15977
15978 The received message must be in the form:
15979 @example
15980 @var{TARGET} @var{COMMAND} [@var{ARG}]
15981 @end example
15982
15983 @var{TARGET} specifies the target of the command, usually the name of
15984 the filter class or a specific filter instance name.
15985
15986 @var{COMMAND} specifies the name of the command for the target filter.
15987
15988 @var{ARG} is optional and specifies the optional argument list for the
15989 given @var{COMMAND}.
15990
15991 Upon reception, the message is processed and the corresponding command
15992 is injected into the filtergraph. Depending on the result, the filter
15993 will send a reply to the client, adopting the format:
15994 @example
15995 @var{ERROR_CODE} @var{ERROR_REASON}
15996 @var{MESSAGE}
15997 @end example
15998
15999 @var{MESSAGE} is optional.
16000
16001 @subsection Examples
16002
16003 Look at @file{tools/zmqsend} for an example of a zmq client which can
16004 be used to send commands processed by these filters.
16005
16006 Consider the following filtergraph generated by @command{ffplay}
16007 @example
16008 ffplay -dumpgraph 1 -f lavfi "
16009 color=s=100x100:c=red  [l];
16010 color=s=100x100:c=blue [r];
16011 nullsrc=s=200x100, zmq [bg];
16012 [bg][l]   overlay      [bg+l];
16013 [bg+l][r] overlay=x=100 "
16014 @end example
16015
16016 To change the color of the left side of the video, the following
16017 command can be used:
16018 @example
16019 echo Parsed_color_0 c yellow | tools/zmqsend
16020 @end example
16021
16022 To change the right side:
16023 @example
16024 echo Parsed_color_1 c pink | tools/zmqsend
16025 @end example
16026
16027 @c man end MULTIMEDIA FILTERS
16028
16029 @chapter Multimedia Sources
16030 @c man begin MULTIMEDIA SOURCES
16031
16032 Below is a description of the currently available multimedia sources.
16033
16034 @section amovie
16035
16036 This is the same as @ref{movie} source, except it selects an audio
16037 stream by default.
16038
16039 @anchor{movie}
16040 @section movie
16041
16042 Read audio and/or video stream(s) from a movie container.
16043
16044 It accepts the following parameters:
16045
16046 @table @option
16047 @item filename
16048 The name of the resource to read (not necessarily a file; it can also be a
16049 device or a stream accessed through some protocol).
16050
16051 @item format_name, f
16052 Specifies the format assumed for the movie to read, and can be either
16053 the name of a container or an input device. If not specified, the
16054 format is guessed from @var{movie_name} or by probing.
16055
16056 @item seek_point, sp
16057 Specifies the seek point in seconds. The frames will be output
16058 starting from this seek point. The parameter is evaluated with
16059 @code{av_strtod}, so the numerical value may be suffixed by an IS
16060 postfix. The default value is "0".
16061
16062 @item streams, s
16063 Specifies the streams to read. Several streams can be specified,
16064 separated by "+". The source will then have as many outputs, in the
16065 same order. The syntax is explained in the ``Stream specifiers''
16066 section in the ffmpeg manual. Two special names, "dv" and "da" specify
16067 respectively the default (best suited) video and audio stream. Default
16068 is "dv", or "da" if the filter is called as "amovie".
16069
16070 @item stream_index, si
16071 Specifies the index of the video stream to read. If the value is -1,
16072 the most suitable video stream will be automatically selected. The default
16073 value is "-1". Deprecated. If the filter is called "amovie", it will select
16074 audio instead of video.
16075
16076 @item loop
16077 Specifies how many times to read the stream in sequence.
16078 If the value is less than 1, the stream will be read again and again.
16079 Default value is "1".
16080
16081 Note that when the movie is looped the source timestamps are not
16082 changed, so it will generate non monotonically increasing timestamps.
16083 @end table
16084
16085 It allows overlaying a second video on top of the main input of
16086 a filtergraph, as shown in this graph:
16087 @example
16088 input -----------> deltapts0 --> overlay --> output
16089                                     ^
16090                                     |
16091 movie --> scale--> deltapts1 -------+
16092 @end example
16093 @subsection Examples
16094
16095 @itemize
16096 @item
16097 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
16098 on top of the input labelled "in":
16099 @example
16100 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
16101 [in] setpts=PTS-STARTPTS [main];
16102 [main][over] overlay=16:16 [out]
16103 @end example
16104
16105 @item
16106 Read from a video4linux2 device, and overlay it on top of the input
16107 labelled "in":
16108 @example
16109 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
16110 [in] setpts=PTS-STARTPTS [main];
16111 [main][over] overlay=16:16 [out]
16112 @end example
16113
16114 @item
16115 Read the first video stream and the audio stream with id 0x81 from
16116 dvd.vob; the video is connected to the pad named "video" and the audio is
16117 connected to the pad named "audio":
16118 @example
16119 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
16120 @end example
16121 @end itemize
16122
16123 @c man end MULTIMEDIA SOURCES