]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
Merge commit '4a081f224e12f4227ae966bcbdd5384f22121ecf'
[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 acrusher
445
446 Reduce audio bit resolution.
447
448 This filter is bit crusher with enhanced functionality. A bit crusher
449 is used to audibly reduce number of bits an audio signal is sampled
450 with. This doesn't change the bit depth at all, it just produces the
451 effect. Material reduced in bit depth sounds more harsh and "digital".
452 This filter is able to even round to continuous values instead of discrete
453 bit depths.
454 Additionally it has a D/C offset which results in different crushing of
455 the lower and the upper half of the signal.
456 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
457
458 Another feature of this filter is the logarithmic mode.
459 This setting switches from linear distances between bits to logarithmic ones.
460 The result is a much more "natural" sounding crusher which doesn't gate low
461 signals for example. The human ear has a logarithmic perception, too
462 so this kind of crushing is much more pleasant.
463 Logarithmic crushing is also able to get anti-aliased.
464
465 The filter accepts the following options:
466
467 @table @option
468 @item level_in
469 Set level in.
470
471 @item level_out
472 Set level out.
473
474 @item bits
475 Set bit reduction.
476
477 @item mix
478 Set mixing amount.
479
480 @item mode
481 Can be linear: @code{lin} or logarithmic: @code{log}.
482
483 @item dc
484 Set DC.
485
486 @item aa
487 Set anti-aliasing.
488
489 @item samples
490 Set sample reduction.
491
492 @item lfo
493 Enable LFO. By default disabled.
494
495 @item lforange
496 Set LFO range.
497
498 @item lforate
499 Set LFO rate.
500 @end table
501
502 @section adelay
503
504 Delay one or more audio channels.
505
506 Samples in delayed channel are filled with silence.
507
508 The filter accepts the following option:
509
510 @table @option
511 @item delays
512 Set list of delays in milliseconds for each channel separated by '|'.
513 At least one delay greater than 0 should be provided.
514 Unused delays will be silently ignored. If number of given delays is
515 smaller than number of channels all remaining channels will not be delayed.
516 If you want to delay exact number of samples, append 'S' to number.
517 @end table
518
519 @subsection Examples
520
521 @itemize
522 @item
523 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
524 the second channel (and any other channels that may be present) unchanged.
525 @example
526 adelay=1500|0|500
527 @end example
528
529 @item
530 Delay second channel by 500 samples, the third channel by 700 samples and leave
531 the first channel (and any other channels that may be present) unchanged.
532 @example
533 adelay=0|500S|700S
534 @end example
535 @end itemize
536
537 @section aecho
538
539 Apply echoing to the input audio.
540
541 Echoes are reflected sound and can occur naturally amongst mountains
542 (and sometimes large buildings) when talking or shouting; digital echo
543 effects emulate this behaviour and are often used to help fill out the
544 sound of a single instrument or vocal. The time difference between the
545 original signal and the reflection is the @code{delay}, and the
546 loudness of the reflected signal is the @code{decay}.
547 Multiple echoes can have different delays and decays.
548
549 A description of the accepted parameters follows.
550
551 @table @option
552 @item in_gain
553 Set input gain of reflected signal. Default is @code{0.6}.
554
555 @item out_gain
556 Set output gain of reflected signal. Default is @code{0.3}.
557
558 @item delays
559 Set list of time intervals in milliseconds between original signal and reflections
560 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
561 Default is @code{1000}.
562
563 @item decays
564 Set list of loudnesses of reflected signals separated by '|'.
565 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
566 Default is @code{0.5}.
567 @end table
568
569 @subsection Examples
570
571 @itemize
572 @item
573 Make it sound as if there are twice as many instruments as are actually playing:
574 @example
575 aecho=0.8:0.88:60:0.4
576 @end example
577
578 @item
579 If delay is very short, then it sound like a (metallic) robot playing music:
580 @example
581 aecho=0.8:0.88:6:0.4
582 @end example
583
584 @item
585 A longer delay will sound like an open air concert in the mountains:
586 @example
587 aecho=0.8:0.9:1000:0.3
588 @end example
589
590 @item
591 Same as above but with one more mountain:
592 @example
593 aecho=0.8:0.9:1000|1800:0.3|0.25
594 @end example
595 @end itemize
596
597 @section aemphasis
598 Audio emphasis filter creates or restores material directly taken from LPs or
599 emphased CDs with different filter curves. E.g. to store music on vinyl the
600 signal has to be altered by a filter first to even out the disadvantages of
601 this recording medium.
602 Once the material is played back the inverse filter has to be applied to
603 restore the distortion of the frequency response.
604
605 The filter accepts the following options:
606
607 @table @option
608 @item level_in
609 Set input gain.
610
611 @item level_out
612 Set output gain.
613
614 @item mode
615 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
616 use @code{production} mode. Default is @code{reproduction} mode.
617
618 @item type
619 Set filter type. Selects medium. Can be one of the following:
620
621 @table @option
622 @item col
623 select Columbia.
624 @item emi
625 select EMI.
626 @item bsi
627 select BSI (78RPM).
628 @item riaa
629 select RIAA.
630 @item cd
631 select Compact Disc (CD).
632 @item 50fm
633 select 50µs (FM).
634 @item 75fm
635 select 75µs (FM).
636 @item 50kf
637 select 50µs (FM-KF).
638 @item 75kf
639 select 75µs (FM-KF).
640 @end table
641 @end table
642
643 @section aeval
644
645 Modify an audio signal according to the specified expressions.
646
647 This filter accepts one or more expressions (one for each channel),
648 which are evaluated and used to modify a corresponding audio signal.
649
650 It accepts the following parameters:
651
652 @table @option
653 @item exprs
654 Set the '|'-separated expressions list for each separate channel. If
655 the number of input channels is greater than the number of
656 expressions, the last specified expression is used for the remaining
657 output channels.
658
659 @item channel_layout, c
660 Set output channel layout. If not specified, the channel layout is
661 specified by the number of expressions. If set to @samp{same}, it will
662 use by default the same input channel layout.
663 @end table
664
665 Each expression in @var{exprs} can contain the following constants and functions:
666
667 @table @option
668 @item ch
669 channel number of the current expression
670
671 @item n
672 number of the evaluated sample, starting from 0
673
674 @item s
675 sample rate
676
677 @item t
678 time of the evaluated sample expressed in seconds
679
680 @item nb_in_channels
681 @item nb_out_channels
682 input and output number of channels
683
684 @item val(CH)
685 the value of input channel with number @var{CH}
686 @end table
687
688 Note: this filter is slow. For faster processing you should use a
689 dedicated filter.
690
691 @subsection Examples
692
693 @itemize
694 @item
695 Half volume:
696 @example
697 aeval=val(ch)/2:c=same
698 @end example
699
700 @item
701 Invert phase of the second channel:
702 @example
703 aeval=val(0)|-val(1)
704 @end example
705 @end itemize
706
707 @anchor{afade}
708 @section afade
709
710 Apply fade-in/out effect to input audio.
711
712 A description of the accepted parameters follows.
713
714 @table @option
715 @item type, t
716 Specify the effect type, can be either @code{in} for fade-in, or
717 @code{out} for a fade-out effect. Default is @code{in}.
718
719 @item start_sample, ss
720 Specify the number of the start sample for starting to apply the fade
721 effect. Default is 0.
722
723 @item nb_samples, ns
724 Specify the number of samples for which the fade effect has to last. At
725 the end of the fade-in effect the output audio will have the same
726 volume as the input audio, at the end of the fade-out transition
727 the output audio will be silence. Default is 44100.
728
729 @item start_time, st
730 Specify the start time of the fade effect. Default is 0.
731 The value must be specified as a time duration; see
732 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
733 for the accepted syntax.
734 If set this option is used instead of @var{start_sample}.
735
736 @item duration, d
737 Specify the duration of the fade effect. See
738 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
739 for the accepted syntax.
740 At the end of the fade-in effect the output audio will have the same
741 volume as the input audio, at the end of the fade-out transition
742 the output audio will be silence.
743 By default the duration is determined by @var{nb_samples}.
744 If set this option is used instead of @var{nb_samples}.
745
746 @item curve
747 Set curve for fade transition.
748
749 It accepts the following values:
750 @table @option
751 @item tri
752 select triangular, linear slope (default)
753 @item qsin
754 select quarter of sine wave
755 @item hsin
756 select half of sine wave
757 @item esin
758 select exponential sine wave
759 @item log
760 select logarithmic
761 @item ipar
762 select inverted parabola
763 @item qua
764 select quadratic
765 @item cub
766 select cubic
767 @item squ
768 select square root
769 @item cbr
770 select cubic root
771 @item par
772 select parabola
773 @item exp
774 select exponential
775 @item iqsin
776 select inverted quarter of sine wave
777 @item ihsin
778 select inverted half of sine wave
779 @item dese
780 select double-exponential seat
781 @item desi
782 select double-exponential sigmoid
783 @end table
784 @end table
785
786 @subsection Examples
787
788 @itemize
789 @item
790 Fade in first 15 seconds of audio:
791 @example
792 afade=t=in:ss=0:d=15
793 @end example
794
795 @item
796 Fade out last 25 seconds of a 900 seconds audio:
797 @example
798 afade=t=out:st=875:d=25
799 @end example
800 @end itemize
801
802 @section afftfilt
803 Apply arbitrary expressions to samples in frequency domain.
804
805 @table @option
806 @item real
807 Set frequency domain real expression for each separate channel separated
808 by '|'. Default is "1".
809 If the number of input channels is greater than the number of
810 expressions, the last specified expression is used for the remaining
811 output channels.
812
813 @item imag
814 Set frequency domain imaginary expression for each separate channel
815 separated by '|'. If not set, @var{real} option is used.
816
817 Each expression in @var{real} and @var{imag} can contain the following
818 constants:
819
820 @table @option
821 @item sr
822 sample rate
823
824 @item b
825 current frequency bin number
826
827 @item nb
828 number of available bins
829
830 @item ch
831 channel number of the current expression
832
833 @item chs
834 number of channels
835
836 @item pts
837 current frame pts
838 @end table
839
840 @item win_size
841 Set window size.
842
843 It accepts the following values:
844 @table @samp
845 @item w16
846 @item w32
847 @item w64
848 @item w128
849 @item w256
850 @item w512
851 @item w1024
852 @item w2048
853 @item w4096
854 @item w8192
855 @item w16384
856 @item w32768
857 @item w65536
858 @end table
859 Default is @code{w4096}
860
861 @item win_func
862 Set window function. Default is @code{hann}.
863
864 @item overlap
865 Set window overlap. If set to 1, the recommended overlap for selected
866 window function will be picked. Default is @code{0.75}.
867 @end table
868
869 @subsection Examples
870
871 @itemize
872 @item
873 Leave almost only low frequencies in audio:
874 @example
875 afftfilt="1-clip((b/nb)*b,0,1)"
876 @end example
877 @end itemize
878
879 @anchor{aformat}
880 @section aformat
881
882 Set output format constraints for the input audio. The framework will
883 negotiate the most appropriate format to minimize conversions.
884
885 It accepts the following parameters:
886 @table @option
887
888 @item sample_fmts
889 A '|'-separated list of requested sample formats.
890
891 @item sample_rates
892 A '|'-separated list of requested sample rates.
893
894 @item channel_layouts
895 A '|'-separated list of requested channel layouts.
896
897 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
898 for the required syntax.
899 @end table
900
901 If a parameter is omitted, all values are allowed.
902
903 Force the output to either unsigned 8-bit or signed 16-bit stereo
904 @example
905 aformat=sample_fmts=u8|s16:channel_layouts=stereo
906 @end example
907
908 @section agate
909
910 A gate is mainly used to reduce lower parts of a signal. This kind of signal
911 processing reduces disturbing noise between useful signals.
912
913 Gating is done by detecting the volume below a chosen level @var{threshold}
914 and dividing it by the factor set with @var{ratio}. The bottom of the noise
915 floor is set via @var{range}. Because an exact manipulation of the signal
916 would cause distortion of the waveform the reduction can be levelled over
917 time. This is done by setting @var{attack} and @var{release}.
918
919 @var{attack} determines how long the signal has to fall below the threshold
920 before any reduction will occur and @var{release} sets the time the signal
921 has to rise above the threshold to reduce the reduction again.
922 Shorter signals than the chosen attack time will be left untouched.
923
924 @table @option
925 @item level_in
926 Set input level before filtering.
927 Default is 1. Allowed range is from 0.015625 to 64.
928
929 @item range
930 Set the level of gain reduction when the signal is below the threshold.
931 Default is 0.06125. Allowed range is from 0 to 1.
932
933 @item threshold
934 If a signal rises above this level the gain reduction is released.
935 Default is 0.125. Allowed range is from 0 to 1.
936
937 @item ratio
938 Set a ratio by which the signal is reduced.
939 Default is 2. Allowed range is from 1 to 9000.
940
941 @item attack
942 Amount of milliseconds the signal has to rise above the threshold before gain
943 reduction stops.
944 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
945
946 @item release
947 Amount of milliseconds the signal has to fall below the threshold before the
948 reduction is increased again. Default is 250 milliseconds.
949 Allowed range is from 0.01 to 9000.
950
951 @item makeup
952 Set amount of amplification of signal after processing.
953 Default is 1. Allowed range is from 1 to 64.
954
955 @item knee
956 Curve the sharp knee around the threshold to enter gain reduction more softly.
957 Default is 2.828427125. Allowed range is from 1 to 8.
958
959 @item detection
960 Choose if exact signal should be taken for detection or an RMS like one.
961 Default is @code{rms}. Can be @code{peak} or @code{rms}.
962
963 @item link
964 Choose if the average level between all channels or the louder channel affects
965 the reduction.
966 Default is @code{average}. Can be @code{average} or @code{maximum}.
967 @end table
968
969 @section alimiter
970
971 The limiter prevents an input signal from rising over a desired threshold.
972 This limiter uses lookahead technology to prevent your signal from distorting.
973 It means that there is a small delay after the signal is processed. Keep in mind
974 that the delay it produces is the attack time you set.
975
976 The filter accepts the following options:
977
978 @table @option
979 @item level_in
980 Set input gain. Default is 1.
981
982 @item level_out
983 Set output gain. Default is 1.
984
985 @item limit
986 Don't let signals above this level pass the limiter. Default is 1.
987
988 @item attack
989 The limiter will reach its attenuation level in this amount of time in
990 milliseconds. Default is 5 milliseconds.
991
992 @item release
993 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
994 Default is 50 milliseconds.
995
996 @item asc
997 When gain reduction is always needed ASC takes care of releasing to an
998 average reduction level rather than reaching a reduction of 0 in the release
999 time.
1000
1001 @item asc_level
1002 Select how much the release time is affected by ASC, 0 means nearly no changes
1003 in release time while 1 produces higher release times.
1004
1005 @item level
1006 Auto level output signal. Default is enabled.
1007 This normalizes audio back to 0dB if enabled.
1008 @end table
1009
1010 Depending on picked setting it is recommended to upsample input 2x or 4x times
1011 with @ref{aresample} before applying this filter.
1012
1013 @section allpass
1014
1015 Apply a two-pole all-pass filter with central frequency (in Hz)
1016 @var{frequency}, and filter-width @var{width}.
1017 An all-pass filter changes the audio's frequency to phase relationship
1018 without changing its frequency to amplitude relationship.
1019
1020 The filter accepts the following options:
1021
1022 @table @option
1023 @item frequency, f
1024 Set frequency in Hz.
1025
1026 @item width_type
1027 Set method to specify band-width of filter.
1028 @table @option
1029 @item h
1030 Hz
1031 @item q
1032 Q-Factor
1033 @item o
1034 octave
1035 @item s
1036 slope
1037 @end table
1038
1039 @item width, w
1040 Specify the band-width of a filter in width_type units.
1041 @end table
1042
1043 @section aloop
1044
1045 Loop audio samples.
1046
1047 The filter accepts the following options:
1048
1049 @table @option
1050 @item loop
1051 Set the number of loops.
1052
1053 @item size
1054 Set maximal number of samples.
1055
1056 @item start
1057 Set first sample of loop.
1058 @end table
1059
1060 @anchor{amerge}
1061 @section amerge
1062
1063 Merge two or more audio streams into a single multi-channel stream.
1064
1065 The filter accepts the following options:
1066
1067 @table @option
1068
1069 @item inputs
1070 Set the number of inputs. Default is 2.
1071
1072 @end table
1073
1074 If the channel layouts of the inputs are disjoint, and therefore compatible,
1075 the channel layout of the output will be set accordingly and the channels
1076 will be reordered as necessary. If the channel layouts of the inputs are not
1077 disjoint, the output will have all the channels of the first input then all
1078 the channels of the second input, in that order, and the channel layout of
1079 the output will be the default value corresponding to the total number of
1080 channels.
1081
1082 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1083 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1084 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1085 first input, b1 is the first channel of the second input).
1086
1087 On the other hand, if both input are in stereo, the output channels will be
1088 in the default order: a1, a2, b1, b2, and the channel layout will be
1089 arbitrarily set to 4.0, which may or may not be the expected value.
1090
1091 All inputs must have the same sample rate, and format.
1092
1093 If inputs do not have the same duration, the output will stop with the
1094 shortest.
1095
1096 @subsection Examples
1097
1098 @itemize
1099 @item
1100 Merge two mono files into a stereo stream:
1101 @example
1102 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1103 @end example
1104
1105 @item
1106 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1107 @example
1108 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
1109 @end example
1110 @end itemize
1111
1112 @section amix
1113
1114 Mixes multiple audio inputs into a single output.
1115
1116 Note that this filter only supports float samples (the @var{amerge}
1117 and @var{pan} audio filters support many formats). If the @var{amix}
1118 input has integer samples then @ref{aresample} will be automatically
1119 inserted to perform the conversion to float samples.
1120
1121 For example
1122 @example
1123 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1124 @end example
1125 will mix 3 input audio streams to a single output with the same duration as the
1126 first input and a dropout transition time of 3 seconds.
1127
1128 It accepts the following parameters:
1129 @table @option
1130
1131 @item inputs
1132 The number of inputs. If unspecified, it defaults to 2.
1133
1134 @item duration
1135 How to determine the end-of-stream.
1136 @table @option
1137
1138 @item longest
1139 The duration of the longest input. (default)
1140
1141 @item shortest
1142 The duration of the shortest input.
1143
1144 @item first
1145 The duration of the first input.
1146
1147 @end table
1148
1149 @item dropout_transition
1150 The transition time, in seconds, for volume renormalization when an input
1151 stream ends. The default value is 2 seconds.
1152
1153 @end table
1154
1155 @section anequalizer
1156
1157 High-order parametric multiband equalizer for each channel.
1158
1159 It accepts the following parameters:
1160 @table @option
1161 @item params
1162
1163 This option string is in format:
1164 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1165 Each equalizer band is separated by '|'.
1166
1167 @table @option
1168 @item chn
1169 Set channel number to which equalization will be applied.
1170 If input doesn't have that channel the entry is ignored.
1171
1172 @item f
1173 Set central frequency for band.
1174 If input doesn't have that frequency the entry is ignored.
1175
1176 @item w
1177 Set band width in hertz.
1178
1179 @item g
1180 Set band gain in dB.
1181
1182 @item t
1183 Set filter type for band, optional, can be:
1184
1185 @table @samp
1186 @item 0
1187 Butterworth, this is default.
1188
1189 @item 1
1190 Chebyshev type 1.
1191
1192 @item 2
1193 Chebyshev type 2.
1194 @end table
1195 @end table
1196
1197 @item curves
1198 With this option activated frequency response of anequalizer is displayed
1199 in video stream.
1200
1201 @item size
1202 Set video stream size. Only useful if curves option is activated.
1203
1204 @item mgain
1205 Set max gain that will be displayed. Only useful if curves option is activated.
1206 Setting this to a reasonable value makes it possible to display gain which is derived from
1207 neighbour bands which are too close to each other and thus produce higher gain
1208 when both are activated.
1209
1210 @item fscale
1211 Set frequency scale used to draw frequency response in video output.
1212 Can be linear or logarithmic. Default is logarithmic.
1213
1214 @item colors
1215 Set color for each channel curve which is going to be displayed in video stream.
1216 This is list of color names separated by space or by '|'.
1217 Unrecognised or missing colors will be replaced by white color.
1218 @end table
1219
1220 @subsection Examples
1221
1222 @itemize
1223 @item
1224 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1225 for first 2 channels using Chebyshev type 1 filter:
1226 @example
1227 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1228 @end example
1229 @end itemize
1230
1231 @subsection Commands
1232
1233 This filter supports the following commands:
1234 @table @option
1235 @item change
1236 Alter existing filter parameters.
1237 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1238
1239 @var{fN} is existing filter number, starting from 0, if no such filter is available
1240 error is returned.
1241 @var{freq} set new frequency parameter.
1242 @var{width} set new width parameter in herz.
1243 @var{gain} set new gain parameter in dB.
1244
1245 Full filter invocation with asendcmd may look like this:
1246 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1247 @end table
1248
1249 @section anull
1250
1251 Pass the audio source unchanged to the output.
1252
1253 @section apad
1254
1255 Pad the end of an audio stream with silence.
1256
1257 This can be used together with @command{ffmpeg} @option{-shortest} to
1258 extend audio streams to the same length as the video stream.
1259
1260 A description of the accepted options follows.
1261
1262 @table @option
1263 @item packet_size
1264 Set silence packet size. Default value is 4096.
1265
1266 @item pad_len
1267 Set the number of samples of silence to add to the end. After the
1268 value is reached, the stream is terminated. This option is mutually
1269 exclusive with @option{whole_len}.
1270
1271 @item whole_len
1272 Set the minimum total number of samples in the output audio stream. If
1273 the value is longer than the input audio length, silence is added to
1274 the end, until the value is reached. This option is mutually exclusive
1275 with @option{pad_len}.
1276 @end table
1277
1278 If neither the @option{pad_len} nor the @option{whole_len} option is
1279 set, the filter will add silence to the end of the input stream
1280 indefinitely.
1281
1282 @subsection Examples
1283
1284 @itemize
1285 @item
1286 Add 1024 samples of silence to the end of the input:
1287 @example
1288 apad=pad_len=1024
1289 @end example
1290
1291 @item
1292 Make sure the audio output will contain at least 10000 samples, pad
1293 the input with silence if required:
1294 @example
1295 apad=whole_len=10000
1296 @end example
1297
1298 @item
1299 Use @command{ffmpeg} to pad the audio input with silence, so that the
1300 video stream will always result the shortest and will be converted
1301 until the end in the output file when using the @option{shortest}
1302 option:
1303 @example
1304 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1305 @end example
1306 @end itemize
1307
1308 @section aphaser
1309 Add a phasing effect to the input audio.
1310
1311 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1312 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1313
1314 A description of the accepted parameters follows.
1315
1316 @table @option
1317 @item in_gain
1318 Set input gain. Default is 0.4.
1319
1320 @item out_gain
1321 Set output gain. Default is 0.74
1322
1323 @item delay
1324 Set delay in milliseconds. Default is 3.0.
1325
1326 @item decay
1327 Set decay. Default is 0.4.
1328
1329 @item speed
1330 Set modulation speed in Hz. Default is 0.5.
1331
1332 @item type
1333 Set modulation type. Default is triangular.
1334
1335 It accepts the following values:
1336 @table @samp
1337 @item triangular, t
1338 @item sinusoidal, s
1339 @end table
1340 @end table
1341
1342 @section apulsator
1343
1344 Audio pulsator is something between an autopanner and a tremolo.
1345 But it can produce funny stereo effects as well. Pulsator changes the volume
1346 of the left and right channel based on a LFO (low frequency oscillator) with
1347 different waveforms and shifted phases.
1348 This filter have the ability to define an offset between left and right
1349 channel. An offset of 0 means that both LFO shapes match each other.
1350 The left and right channel are altered equally - a conventional tremolo.
1351 An offset of 50% means that the shape of the right channel is exactly shifted
1352 in phase (or moved backwards about half of the frequency) - pulsator acts as
1353 an autopanner. At 1 both curves match again. Every setting in between moves the
1354 phase shift gapless between all stages and produces some "bypassing" sounds with
1355 sine and triangle waveforms. The more you set the offset near 1 (starting from
1356 the 0.5) the faster the signal passes from the left to the right speaker.
1357
1358 The filter accepts the following options:
1359
1360 @table @option
1361 @item level_in
1362 Set input gain. By default it is 1. Range is [0.015625 - 64].
1363
1364 @item level_out
1365 Set output gain. By default it is 1. Range is [0.015625 - 64].
1366
1367 @item mode
1368 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
1369 sawup or sawdown. Default is sine.
1370
1371 @item amount
1372 Set modulation. Define how much of original signal is affected by the LFO.
1373
1374 @item offset_l
1375 Set left channel offset. Default is 0. Allowed range is [0 - 1].
1376
1377 @item offset_r
1378 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
1379
1380 @item width
1381 Set pulse width. Default is 1. Allowed range is [0 - 2].
1382
1383 @item timing
1384 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
1385
1386 @item bpm
1387 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
1388 is set to bpm.
1389
1390 @item ms
1391 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
1392 is set to ms.
1393
1394 @item hz
1395 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
1396 if timing is set to hz.
1397 @end table
1398
1399 @anchor{aresample}
1400 @section aresample
1401
1402 Resample the input audio to the specified parameters, using the
1403 libswresample library. If none are specified then the filter will
1404 automatically convert between its input and output.
1405
1406 This filter is also able to stretch/squeeze the audio data to make it match
1407 the timestamps or to inject silence / cut out audio to make it match the
1408 timestamps, do a combination of both or do neither.
1409
1410 The filter accepts the syntax
1411 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
1412 expresses a sample rate and @var{resampler_options} is a list of
1413 @var{key}=@var{value} pairs, separated by ":". See the
1414 ffmpeg-resampler manual for the complete list of supported options.
1415
1416 @subsection Examples
1417
1418 @itemize
1419 @item
1420 Resample the input audio to 44100Hz:
1421 @example
1422 aresample=44100
1423 @end example
1424
1425 @item
1426 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
1427 samples per second compensation:
1428 @example
1429 aresample=async=1000
1430 @end example
1431 @end itemize
1432
1433 @section areverse
1434
1435 Reverse an audio clip.
1436
1437 Warning: This filter requires memory to buffer the entire clip, so trimming
1438 is suggested.
1439
1440 @subsection Examples
1441
1442 @itemize
1443 @item
1444 Take the first 5 seconds of a clip, and reverse it.
1445 @example
1446 atrim=end=5,areverse
1447 @end example
1448 @end itemize
1449
1450 @section asetnsamples
1451
1452 Set the number of samples per each output audio frame.
1453
1454 The last output packet may contain a different number of samples, as
1455 the filter will flush all the remaining samples when the input audio
1456 signals its end.
1457
1458 The filter accepts the following options:
1459
1460 @table @option
1461
1462 @item nb_out_samples, n
1463 Set the number of frames per each output audio frame. The number is
1464 intended as the number of samples @emph{per each channel}.
1465 Default value is 1024.
1466
1467 @item pad, p
1468 If set to 1, the filter will pad the last audio frame with zeroes, so
1469 that the last frame will contain the same number of samples as the
1470 previous ones. Default value is 1.
1471 @end table
1472
1473 For example, to set the number of per-frame samples to 1234 and
1474 disable padding for the last frame, use:
1475 @example
1476 asetnsamples=n=1234:p=0
1477 @end example
1478
1479 @section asetrate
1480
1481 Set the sample rate without altering the PCM data.
1482 This will result in a change of speed and pitch.
1483
1484 The filter accepts the following options:
1485
1486 @table @option
1487 @item sample_rate, r
1488 Set the output sample rate. Default is 44100 Hz.
1489 @end table
1490
1491 @section ashowinfo
1492
1493 Show a line containing various information for each input audio frame.
1494 The input audio is not modified.
1495
1496 The shown line contains a sequence of key/value pairs of the form
1497 @var{key}:@var{value}.
1498
1499 The following values are shown in the output:
1500
1501 @table @option
1502 @item n
1503 The (sequential) number of the input frame, starting from 0.
1504
1505 @item pts
1506 The presentation timestamp of the input frame, in time base units; the time base
1507 depends on the filter input pad, and is usually 1/@var{sample_rate}.
1508
1509 @item pts_time
1510 The presentation timestamp of the input frame in seconds.
1511
1512 @item pos
1513 position of the frame in the input stream, -1 if this information in
1514 unavailable and/or meaningless (for example in case of synthetic audio)
1515
1516 @item fmt
1517 The sample format.
1518
1519 @item chlayout
1520 The channel layout.
1521
1522 @item rate
1523 The sample rate for the audio frame.
1524
1525 @item nb_samples
1526 The number of samples (per channel) in the frame.
1527
1528 @item checksum
1529 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
1530 audio, the data is treated as if all the planes were concatenated.
1531
1532 @item plane_checksums
1533 A list of Adler-32 checksums for each data plane.
1534 @end table
1535
1536 @anchor{astats}
1537 @section astats
1538
1539 Display time domain statistical information about the audio channels.
1540 Statistics are calculated and displayed for each audio channel and,
1541 where applicable, an overall figure is also given.
1542
1543 It accepts the following option:
1544 @table @option
1545 @item length
1546 Short window length in seconds, used for peak and trough RMS measurement.
1547 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.1 - 10]}.
1548
1549 @item metadata
1550
1551 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
1552 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
1553 disabled.
1554
1555 Available keys for each channel are:
1556 DC_offset
1557 Min_level
1558 Max_level
1559 Min_difference
1560 Max_difference
1561 Mean_difference
1562 Peak_level
1563 RMS_peak
1564 RMS_trough
1565 Crest_factor
1566 Flat_factor
1567 Peak_count
1568 Bit_depth
1569
1570 and for Overall:
1571 DC_offset
1572 Min_level
1573 Max_level
1574 Min_difference
1575 Max_difference
1576 Mean_difference
1577 Peak_level
1578 RMS_level
1579 RMS_peak
1580 RMS_trough
1581 Flat_factor
1582 Peak_count
1583 Bit_depth
1584 Number_of_samples
1585
1586 For example full key look like this @code{lavfi.astats.1.DC_offset} or
1587 this @code{lavfi.astats.Overall.Peak_count}.
1588
1589 For description what each key means read below.
1590
1591 @item reset
1592 Set number of frame after which stats are going to be recalculated.
1593 Default is disabled.
1594 @end table
1595
1596 A description of each shown parameter follows:
1597
1598 @table @option
1599 @item DC offset
1600 Mean amplitude displacement from zero.
1601
1602 @item Min level
1603 Minimal sample level.
1604
1605 @item Max level
1606 Maximal sample level.
1607
1608 @item Min difference
1609 Minimal difference between two consecutive samples.
1610
1611 @item Max difference
1612 Maximal difference between two consecutive samples.
1613
1614 @item Mean difference
1615 Mean difference between two consecutive samples.
1616 The average of each difference between two consecutive samples.
1617
1618 @item Peak level dB
1619 @item RMS level dB
1620 Standard peak and RMS level measured in dBFS.
1621
1622 @item RMS peak dB
1623 @item RMS trough dB
1624 Peak and trough values for RMS level measured over a short window.
1625
1626 @item Crest factor
1627 Standard ratio of peak to RMS level (note: not in dB).
1628
1629 @item Flat factor
1630 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
1631 (i.e. either @var{Min level} or @var{Max level}).
1632
1633 @item Peak count
1634 Number of occasions (not the number of samples) that the signal attained either
1635 @var{Min level} or @var{Max level}.
1636
1637 @item Bit depth
1638 Overall bit depth of audio. Number of bits used for each sample.
1639 @end table
1640
1641 @section asyncts
1642
1643 Synchronize audio data with timestamps by squeezing/stretching it and/or
1644 dropping samples/adding silence when needed.
1645
1646 This filter is not built by default, please use @ref{aresample} to do squeezing/stretching.
1647
1648 It accepts the following parameters:
1649 @table @option
1650
1651 @item compensate
1652 Enable stretching/squeezing the data to make it match the timestamps. Disabled
1653 by default. When disabled, time gaps are covered with silence.
1654
1655 @item min_delta
1656 The minimum difference between timestamps and audio data (in seconds) to trigger
1657 adding/dropping samples. The default value is 0.1. If you get an imperfect
1658 sync with this filter, try setting this parameter to 0.
1659
1660 @item max_comp
1661 The maximum compensation in samples per second. Only relevant with compensate=1.
1662 The default value is 500.
1663
1664 @item first_pts
1665 Assume that the first PTS should be this value. The time base is 1 / sample
1666 rate. This allows for padding/trimming at the start of the stream. By default,
1667 no assumption is made about the first frame's expected PTS, so no padding or
1668 trimming is done. For example, this could be set to 0 to pad the beginning with
1669 silence if an audio stream starts after the video stream or to trim any samples
1670 with a negative PTS due to encoder delay.
1671
1672 @end table
1673
1674 @section atempo
1675
1676 Adjust audio tempo.
1677
1678 The filter accepts exactly one parameter, the audio tempo. If not
1679 specified then the filter will assume nominal 1.0 tempo. Tempo must
1680 be in the [0.5, 2.0] range.
1681
1682 @subsection Examples
1683
1684 @itemize
1685 @item
1686 Slow down audio to 80% tempo:
1687 @example
1688 atempo=0.8
1689 @end example
1690
1691 @item
1692 To speed up audio to 125% tempo:
1693 @example
1694 atempo=1.25
1695 @end example
1696 @end itemize
1697
1698 @section atrim
1699
1700 Trim the input so that the output contains one continuous subpart of the input.
1701
1702 It accepts the following parameters:
1703 @table @option
1704 @item start
1705 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
1706 sample with the timestamp @var{start} will be the first sample in the output.
1707
1708 @item end
1709 Specify time of the first audio sample that will be dropped, i.e. the
1710 audio sample immediately preceding the one with the timestamp @var{end} will be
1711 the last sample in the output.
1712
1713 @item start_pts
1714 Same as @var{start}, except this option sets the start timestamp in samples
1715 instead of seconds.
1716
1717 @item end_pts
1718 Same as @var{end}, except this option sets the end timestamp in samples instead
1719 of seconds.
1720
1721 @item duration
1722 The maximum duration of the output in seconds.
1723
1724 @item start_sample
1725 The number of the first sample that should be output.
1726
1727 @item end_sample
1728 The number of the first sample that should be dropped.
1729 @end table
1730
1731 @option{start}, @option{end}, and @option{duration} are expressed as time
1732 duration specifications; see
1733 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
1734
1735 Note that the first two sets of the start/end options and the @option{duration}
1736 option look at the frame timestamp, while the _sample options simply count the
1737 samples that pass through the filter. So start/end_pts and start/end_sample will
1738 give different results when the timestamps are wrong, inexact or do not start at
1739 zero. Also note that this filter does not modify the timestamps. If you wish
1740 to have the output timestamps start at zero, insert the asetpts filter after the
1741 atrim filter.
1742
1743 If multiple start or end options are set, this filter tries to be greedy and
1744 keep all samples that match at least one of the specified constraints. To keep
1745 only the part that matches all the constraints at once, chain multiple atrim
1746 filters.
1747
1748 The defaults are such that all the input is kept. So it is possible to set e.g.
1749 just the end values to keep everything before the specified time.
1750
1751 Examples:
1752 @itemize
1753 @item
1754 Drop everything except the second minute of input:
1755 @example
1756 ffmpeg -i INPUT -af atrim=60:120
1757 @end example
1758
1759 @item
1760 Keep only the first 1000 samples:
1761 @example
1762 ffmpeg -i INPUT -af atrim=end_sample=1000
1763 @end example
1764
1765 @end itemize
1766
1767 @section bandpass
1768
1769 Apply a two-pole Butterworth band-pass filter with central
1770 frequency @var{frequency}, and (3dB-point) band-width width.
1771 The @var{csg} option selects a constant skirt gain (peak gain = Q)
1772 instead of the default: constant 0dB peak gain.
1773 The filter roll off at 6dB per octave (20dB per decade).
1774
1775 The filter accepts the following options:
1776
1777 @table @option
1778 @item frequency, f
1779 Set the filter's central frequency. Default is @code{3000}.
1780
1781 @item csg
1782 Constant skirt gain if set to 1. Defaults to 0.
1783
1784 @item width_type
1785 Set method to specify band-width of filter.
1786 @table @option
1787 @item h
1788 Hz
1789 @item q
1790 Q-Factor
1791 @item o
1792 octave
1793 @item s
1794 slope
1795 @end table
1796
1797 @item width, w
1798 Specify the band-width of a filter in width_type units.
1799 @end table
1800
1801 @section bandreject
1802
1803 Apply a two-pole Butterworth band-reject filter with central
1804 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
1805 The filter roll off at 6dB per octave (20dB per decade).
1806
1807 The filter accepts the following options:
1808
1809 @table @option
1810 @item frequency, f
1811 Set the filter's central frequency. Default is @code{3000}.
1812
1813 @item width_type
1814 Set method to specify band-width of filter.
1815 @table @option
1816 @item h
1817 Hz
1818 @item q
1819 Q-Factor
1820 @item o
1821 octave
1822 @item s
1823 slope
1824 @end table
1825
1826 @item width, w
1827 Specify the band-width of a filter in width_type units.
1828 @end table
1829
1830 @section bass
1831
1832 Boost or cut the bass (lower) frequencies of the audio using a two-pole
1833 shelving filter with a response similar to that of a standard
1834 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
1835
1836 The filter accepts the following options:
1837
1838 @table @option
1839 @item gain, g
1840 Give the gain at 0 Hz. Its useful range is about -20
1841 (for a large cut) to +20 (for a large boost).
1842 Beware of clipping when using a positive gain.
1843
1844 @item frequency, f
1845 Set the filter's central frequency and so can be used
1846 to extend or reduce the frequency range to be boosted or cut.
1847 The default value is @code{100} Hz.
1848
1849 @item width_type
1850 Set method to specify band-width of filter.
1851 @table @option
1852 @item h
1853 Hz
1854 @item q
1855 Q-Factor
1856 @item o
1857 octave
1858 @item s
1859 slope
1860 @end table
1861
1862 @item width, w
1863 Determine how steep is the filter's shelf transition.
1864 @end table
1865
1866 @section biquad
1867
1868 Apply a biquad IIR filter with the given coefficients.
1869 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
1870 are the numerator and denominator coefficients respectively.
1871
1872 @section bs2b
1873 Bauer stereo to binaural transformation, which improves headphone listening of
1874 stereo audio records.
1875
1876 It accepts the following parameters:
1877 @table @option
1878
1879 @item profile
1880 Pre-defined crossfeed level.
1881 @table @option
1882
1883 @item default
1884 Default level (fcut=700, feed=50).
1885
1886 @item cmoy
1887 Chu Moy circuit (fcut=700, feed=60).
1888
1889 @item jmeier
1890 Jan Meier circuit (fcut=650, feed=95).
1891
1892 @end table
1893
1894 @item fcut
1895 Cut frequency (in Hz).
1896
1897 @item feed
1898 Feed level (in Hz).
1899
1900 @end table
1901
1902 @section channelmap
1903
1904 Remap input channels to new locations.
1905
1906 It accepts the following parameters:
1907 @table @option
1908 @item channel_layout
1909 The channel layout of the output stream.
1910
1911 @item map
1912 Map channels from input to output. The argument is a '|'-separated list of
1913 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
1914 @var{in_channel} form. @var{in_channel} can be either the name of the input
1915 channel (e.g. FL for front left) or its index in the input channel layout.
1916 @var{out_channel} is the name of the output channel or its index in the output
1917 channel layout. If @var{out_channel} is not given then it is implicitly an
1918 index, starting with zero and increasing by one for each mapping.
1919 @end table
1920
1921 If no mapping is present, the filter will implicitly map input channels to
1922 output channels, preserving indices.
1923
1924 For example, assuming a 5.1+downmix input MOV file,
1925 @example
1926 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
1927 @end example
1928 will create an output WAV file tagged as stereo from the downmix channels of
1929 the input.
1930
1931 To fix a 5.1 WAV improperly encoded in AAC's native channel order
1932 @example
1933 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
1934 @end example
1935
1936 @section channelsplit
1937
1938 Split each channel from an input audio stream into a separate output stream.
1939
1940 It accepts the following parameters:
1941 @table @option
1942 @item channel_layout
1943 The channel layout of the input stream. The default is "stereo".
1944 @end table
1945
1946 For example, assuming a stereo input MP3 file,
1947 @example
1948 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
1949 @end example
1950 will create an output Matroska file with two audio streams, one containing only
1951 the left channel and the other the right channel.
1952
1953 Split a 5.1 WAV file into per-channel files:
1954 @example
1955 ffmpeg -i in.wav -filter_complex
1956 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
1957 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
1958 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
1959 side_right.wav
1960 @end example
1961
1962 @section chorus
1963 Add a chorus effect to the audio.
1964
1965 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
1966
1967 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
1968 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
1969 The modulation depth defines the range the modulated delay is played before or after
1970 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
1971 sound tuned around the original one, like in a chorus where some vocals are slightly
1972 off key.
1973
1974 It accepts the following parameters:
1975 @table @option
1976 @item in_gain
1977 Set input gain. Default is 0.4.
1978
1979 @item out_gain
1980 Set output gain. Default is 0.4.
1981
1982 @item delays
1983 Set delays. A typical delay is around 40ms to 60ms.
1984
1985 @item decays
1986 Set decays.
1987
1988 @item speeds
1989 Set speeds.
1990
1991 @item depths
1992 Set depths.
1993 @end table
1994
1995 @subsection Examples
1996
1997 @itemize
1998 @item
1999 A single delay:
2000 @example
2001 chorus=0.7:0.9:55:0.4:0.25:2
2002 @end example
2003
2004 @item
2005 Two delays:
2006 @example
2007 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2008 @end example
2009
2010 @item
2011 Fuller sounding chorus with three delays:
2012 @example
2013 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
2014 @end example
2015 @end itemize
2016
2017 @section compand
2018 Compress or expand the audio's dynamic range.
2019
2020 It accepts the following parameters:
2021
2022 @table @option
2023
2024 @item attacks
2025 @item decays
2026 A list of times in seconds for each channel over which the instantaneous level
2027 of the input signal is averaged to determine its volume. @var{attacks} refers to
2028 increase of volume and @var{decays} refers to decrease of volume. For most
2029 situations, the attack time (response to the audio getting louder) should be
2030 shorter than the decay time, because the human ear is more sensitive to sudden
2031 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2032 a typical value for decay is 0.8 seconds.
2033 If specified number of attacks & decays is lower than number of channels, the last
2034 set attack/decay will be used for all remaining channels.
2035
2036 @item points
2037 A list of points for the transfer function, specified in dB relative to the
2038 maximum possible signal amplitude. Each key points list must be defined using
2039 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2040 @code{x0/y0 x1/y1 x2/y2 ....}
2041
2042 The input values must be in strictly increasing order but the transfer function
2043 does not have to be monotonically rising. The point @code{0/0} is assumed but
2044 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2045 function are @code{-70/-70|-60/-20}.
2046
2047 @item soft-knee
2048 Set the curve radius in dB for all joints. It defaults to 0.01.
2049
2050 @item gain
2051 Set the additional gain in dB to be applied at all points on the transfer
2052 function. This allows for easy adjustment of the overall gain.
2053 It defaults to 0.
2054
2055 @item volume
2056 Set an initial volume, in dB, to be assumed for each channel when filtering
2057 starts. This permits the user to supply a nominal level initially, so that, for
2058 example, a very large gain is not applied to initial signal levels before the
2059 companding has begun to operate. A typical value for audio which is initially
2060 quiet is -90 dB. It defaults to 0.
2061
2062 @item delay
2063 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2064 delayed before being fed to the volume adjuster. Specifying a delay
2065 approximately equal to the attack/decay times allows the filter to effectively
2066 operate in predictive rather than reactive mode. It defaults to 0.
2067
2068 @end table
2069
2070 @subsection Examples
2071
2072 @itemize
2073 @item
2074 Make music with both quiet and loud passages suitable for listening to in a
2075 noisy environment:
2076 @example
2077 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2078 @end example
2079
2080 Another example for audio with whisper and explosion parts:
2081 @example
2082 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2083 @end example
2084
2085 @item
2086 A noise gate for when the noise is at a lower level than the signal:
2087 @example
2088 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2089 @end example
2090
2091 @item
2092 Here is another noise gate, this time for when the noise is at a higher level
2093 than the signal (making it, in some ways, similar to squelch):
2094 @example
2095 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
2096 @end example
2097
2098 @item
2099 2:1 compression starting at -6dB:
2100 @example
2101 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2102 @end example
2103
2104 @item
2105 2:1 compression starting at -9dB:
2106 @example
2107 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
2108 @end example
2109
2110 @item
2111 2:1 compression starting at -12dB:
2112 @example
2113 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
2114 @end example
2115
2116 @item
2117 2:1 compression starting at -18dB:
2118 @example
2119 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
2120 @end example
2121
2122 @item
2123 3:1 compression starting at -15dB:
2124 @example
2125 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
2126 @end example
2127
2128 @item
2129 Compressor/Gate:
2130 @example
2131 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
2132 @end example
2133
2134 @item
2135 Expander:
2136 @example
2137 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
2138 @end example
2139
2140 @item
2141 Hard limiter at -6dB:
2142 @example
2143 compand=attacks=0:points=-80/-80|-6/-6|20/-6
2144 @end example
2145
2146 @item
2147 Hard limiter at -12dB:
2148 @example
2149 compand=attacks=0:points=-80/-80|-12/-12|20/-12
2150 @end example
2151
2152 @item
2153 Hard noise gate at -35 dB:
2154 @example
2155 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
2156 @end example
2157
2158 @item
2159 Soft limiter:
2160 @example
2161 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
2162 @end example
2163 @end itemize
2164
2165 @section compensationdelay
2166
2167 Compensation Delay Line is a metric based delay to compensate differing
2168 positions of microphones or speakers.
2169
2170 For example, you have recorded guitar with two microphones placed in
2171 different location. Because the front of sound wave has fixed speed in
2172 normal conditions, the phasing of microphones can vary and depends on
2173 their location and interposition. The best sound mix can be achieved when
2174 these microphones are in phase (synchronized). Note that distance of
2175 ~30 cm between microphones makes one microphone to capture signal in
2176 antiphase to another microphone. That makes the final mix sounding moody.
2177 This filter helps to solve phasing problems by adding different delays
2178 to each microphone track and make them synchronized.
2179
2180 The best result can be reached when you take one track as base and
2181 synchronize other tracks one by one with it.
2182 Remember that synchronization/delay tolerance depends on sample rate, too.
2183 Higher sample rates will give more tolerance.
2184
2185 It accepts the following parameters:
2186
2187 @table @option
2188 @item mm
2189 Set millimeters distance. This is compensation distance for fine tuning.
2190 Default is 0.
2191
2192 @item cm
2193 Set cm distance. This is compensation distance for tightening distance setup.
2194 Default is 0.
2195
2196 @item m
2197 Set meters distance. This is compensation distance for hard distance setup.
2198 Default is 0.
2199
2200 @item dry
2201 Set dry amount. Amount of unprocessed (dry) signal.
2202 Default is 0.
2203
2204 @item wet
2205 Set wet amount. Amount of processed (wet) signal.
2206 Default is 1.
2207
2208 @item temp
2209 Set temperature degree in Celsius. This is the temperature of the environment.
2210 Default is 20.
2211 @end table
2212
2213 @section crystalizer
2214 Simple algorithm to expand audio dynamic range.
2215
2216 The filter accepts the following options:
2217
2218 @table @option
2219 @item i
2220 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
2221 (unchanged sound) to 10.0 (maximum effect).
2222
2223 @item c
2224 Enable clipping. By default is enabled.
2225 @end table
2226
2227 @section dcshift
2228 Apply a DC shift to the audio.
2229
2230 This can be useful to remove a DC offset (caused perhaps by a hardware problem
2231 in the recording chain) from the audio. The effect of a DC offset is reduced
2232 headroom and hence volume. The @ref{astats} filter can be used to determine if
2233 a signal has a DC offset.
2234
2235 @table @option
2236 @item shift
2237 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
2238 the audio.
2239
2240 @item limitergain
2241 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
2242 used to prevent clipping.
2243 @end table
2244
2245 @section dynaudnorm
2246 Dynamic Audio Normalizer.
2247
2248 This filter applies a certain amount of gain to the input audio in order
2249 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
2250 contrast to more "simple" normalization algorithms, the Dynamic Audio
2251 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
2252 This allows for applying extra gain to the "quiet" sections of the audio
2253 while avoiding distortions or clipping the "loud" sections. In other words:
2254 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
2255 sections, in the sense that the volume of each section is brought to the
2256 same target level. Note, however, that the Dynamic Audio Normalizer achieves
2257 this goal *without* applying "dynamic range compressing". It will retain 100%
2258 of the dynamic range *within* each section of the audio file.
2259
2260 @table @option
2261 @item f
2262 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
2263 Default is 500 milliseconds.
2264 The Dynamic Audio Normalizer processes the input audio in small chunks,
2265 referred to as frames. This is required, because a peak magnitude has no
2266 meaning for just a single sample value. Instead, we need to determine the
2267 peak magnitude for a contiguous sequence of sample values. While a "standard"
2268 normalizer would simply use the peak magnitude of the complete file, the
2269 Dynamic Audio Normalizer determines the peak magnitude individually for each
2270 frame. The length of a frame is specified in milliseconds. By default, the
2271 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
2272 been found to give good results with most files.
2273 Note that the exact frame length, in number of samples, will be determined
2274 automatically, based on the sampling rate of the individual input audio file.
2275
2276 @item g
2277 Set the Gaussian filter window size. In range from 3 to 301, must be odd
2278 number. Default is 31.
2279 Probably the most important parameter of the Dynamic Audio Normalizer is the
2280 @code{window size} of the Gaussian smoothing filter. The filter's window size
2281 is specified in frames, centered around the current frame. For the sake of
2282 simplicity, this must be an odd number. Consequently, the default value of 31
2283 takes into account the current frame, as well as the 15 preceding frames and
2284 the 15 subsequent frames. Using a larger window results in a stronger
2285 smoothing effect and thus in less gain variation, i.e. slower gain
2286 adaptation. Conversely, using a smaller window results in a weaker smoothing
2287 effect and thus in more gain variation, i.e. faster gain adaptation.
2288 In other words, the more you increase this value, the more the Dynamic Audio
2289 Normalizer will behave like a "traditional" normalization filter. On the
2290 contrary, the more you decrease this value, the more the Dynamic Audio
2291 Normalizer will behave like a dynamic range compressor.
2292
2293 @item p
2294 Set the target peak value. This specifies the highest permissible magnitude
2295 level for the normalized audio input. This filter will try to approach the
2296 target peak magnitude as closely as possible, but at the same time it also
2297 makes sure that the normalized signal will never exceed the peak magnitude.
2298 A frame's maximum local gain factor is imposed directly by the target peak
2299 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
2300 It is not recommended to go above this value.
2301
2302 @item m
2303 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
2304 The Dynamic Audio Normalizer determines the maximum possible (local) gain
2305 factor for each input frame, i.e. the maximum gain factor that does not
2306 result in clipping or distortion. The maximum gain factor is determined by
2307 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
2308 additionally bounds the frame's maximum gain factor by a predetermined
2309 (global) maximum gain factor. This is done in order to avoid excessive gain
2310 factors in "silent" or almost silent frames. By default, the maximum gain
2311 factor is 10.0, For most inputs the default value should be sufficient and
2312 it usually is not recommended to increase this value. Though, for input
2313 with an extremely low overall volume level, it may be necessary to allow even
2314 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
2315 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
2316 Instead, a "sigmoid" threshold function will be applied. This way, the
2317 gain factors will smoothly approach the threshold value, but never exceed that
2318 value.
2319
2320 @item r
2321 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
2322 By default, the Dynamic Audio Normalizer performs "peak" normalization.
2323 This means that the maximum local gain factor for each frame is defined
2324 (only) by the frame's highest magnitude sample. This way, the samples can
2325 be amplified as much as possible without exceeding the maximum signal
2326 level, i.e. without clipping. Optionally, however, the Dynamic Audio
2327 Normalizer can also take into account the frame's root mean square,
2328 abbreviated RMS. In electrical engineering, the RMS is commonly used to
2329 determine the power of a time-varying signal. It is therefore considered
2330 that the RMS is a better approximation of the "perceived loudness" than
2331 just looking at the signal's peak magnitude. Consequently, by adjusting all
2332 frames to a constant RMS value, a uniform "perceived loudness" can be
2333 established. If a target RMS value has been specified, a frame's local gain
2334 factor is defined as the factor that would result in exactly that RMS value.
2335 Note, however, that the maximum local gain factor is still restricted by the
2336 frame's highest magnitude sample, in order to prevent clipping.
2337
2338 @item n
2339 Enable channels coupling. By default is enabled.
2340 By default, the Dynamic Audio Normalizer will amplify all channels by the same
2341 amount. This means the same gain factor will be applied to all channels, i.e.
2342 the maximum possible gain factor is determined by the "loudest" channel.
2343 However, in some recordings, it may happen that the volume of the different
2344 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
2345 In this case, this option can be used to disable the channel coupling. This way,
2346 the gain factor will be determined independently for each channel, depending
2347 only on the individual channel's highest magnitude sample. This allows for
2348 harmonizing the volume of the different channels.
2349
2350 @item c
2351 Enable DC bias correction. By default is disabled.
2352 An audio signal (in the time domain) is a sequence of sample values.
2353 In the Dynamic Audio Normalizer these sample values are represented in the
2354 -1.0 to 1.0 range, regardless of the original input format. Normally, the
2355 audio signal, or "waveform", should be centered around the zero point.
2356 That means if we calculate the mean value of all samples in a file, or in a
2357 single frame, then the result should be 0.0 or at least very close to that
2358 value. If, however, there is a significant deviation of the mean value from
2359 0.0, in either positive or negative direction, this is referred to as a
2360 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
2361 Audio Normalizer provides optional DC bias correction.
2362 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
2363 the mean value, or "DC correction" offset, of each input frame and subtract
2364 that value from all of the frame's sample values which ensures those samples
2365 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
2366 boundaries, the DC correction offset values will be interpolated smoothly
2367 between neighbouring frames.
2368
2369 @item b
2370 Enable alternative boundary mode. By default is disabled.
2371 The Dynamic Audio Normalizer takes into account a certain neighbourhood
2372 around each frame. This includes the preceding frames as well as the
2373 subsequent frames. However, for the "boundary" frames, located at the very
2374 beginning and at the very end of the audio file, not all neighbouring
2375 frames are available. In particular, for the first few frames in the audio
2376 file, the preceding frames are not known. And, similarly, for the last few
2377 frames in the audio file, the subsequent frames are not known. Thus, the
2378 question arises which gain factors should be assumed for the missing frames
2379 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
2380 to deal with this situation. The default boundary mode assumes a gain factor
2381 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
2382 "fade out" at the beginning and at the end of the input, respectively.
2383
2384 @item s
2385 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
2386 By default, the Dynamic Audio Normalizer does not apply "traditional"
2387 compression. This means that signal peaks will not be pruned and thus the
2388 full dynamic range will be retained within each local neighbourhood. However,
2389 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
2390 normalization algorithm with a more "traditional" compression.
2391 For this purpose, the Dynamic Audio Normalizer provides an optional compression
2392 (thresholding) function. If (and only if) the compression feature is enabled,
2393 all input frames will be processed by a soft knee thresholding function prior
2394 to the actual normalization process. Put simply, the thresholding function is
2395 going to prune all samples whose magnitude exceeds a certain threshold value.
2396 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
2397 value. Instead, the threshold value will be adjusted for each individual
2398 frame.
2399 In general, smaller parameters result in stronger compression, and vice versa.
2400 Values below 3.0 are not recommended, because audible distortion may appear.
2401 @end table
2402
2403 @section earwax
2404
2405 Make audio easier to listen to on headphones.
2406
2407 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
2408 so that when listened to on headphones the stereo image is moved from
2409 inside your head (standard for headphones) to outside and in front of
2410 the listener (standard for speakers).
2411
2412 Ported from SoX.
2413
2414 @section equalizer
2415
2416 Apply a two-pole peaking equalisation (EQ) filter. With this
2417 filter, the signal-level at and around a selected frequency can
2418 be increased or decreased, whilst (unlike bandpass and bandreject
2419 filters) that at all other frequencies is unchanged.
2420
2421 In order to produce complex equalisation curves, this filter can
2422 be given several times, each with a different central frequency.
2423
2424 The filter accepts the following options:
2425
2426 @table @option
2427 @item frequency, f
2428 Set the filter's central frequency in Hz.
2429
2430 @item width_type
2431 Set method to specify band-width of filter.
2432 @table @option
2433 @item h
2434 Hz
2435 @item q
2436 Q-Factor
2437 @item o
2438 octave
2439 @item s
2440 slope
2441 @end table
2442
2443 @item width, w
2444 Specify the band-width of a filter in width_type units.
2445
2446 @item gain, g
2447 Set the required gain or attenuation in dB.
2448 Beware of clipping when using a positive gain.
2449 @end table
2450
2451 @subsection Examples
2452 @itemize
2453 @item
2454 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
2455 @example
2456 equalizer=f=1000:width_type=h:width=200:g=-10
2457 @end example
2458
2459 @item
2460 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
2461 @example
2462 equalizer=f=1000:width_type=q:width=1:g=2,equalizer=f=100:width_type=q:width=2:g=-5
2463 @end example
2464 @end itemize
2465
2466 @section extrastereo
2467
2468 Linearly increases the difference between left and right channels which
2469 adds some sort of "live" effect to playback.
2470
2471 The filter accepts the following options:
2472
2473 @table @option
2474 @item m
2475 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
2476 (average of both channels), with 1.0 sound will be unchanged, with
2477 -1.0 left and right channels will be swapped.
2478
2479 @item c
2480 Enable clipping. By default is enabled.
2481 @end table
2482
2483 @section firequalizer
2484 Apply FIR Equalization using arbitrary frequency response.
2485
2486 The filter accepts the following option:
2487
2488 @table @option
2489 @item gain
2490 Set gain curve equation (in dB). The expression can contain variables:
2491 @table @option
2492 @item f
2493 the evaluated frequency
2494 @item sr
2495 sample rate
2496 @item ch
2497 channel number, set to 0 when multichannels evaluation is disabled
2498 @item chid
2499 channel id, see libavutil/channel_layout.h, set to the first channel id when
2500 multichannels evaluation is disabled
2501 @item chs
2502 number of channels
2503 @item chlayout
2504 channel_layout, see libavutil/channel_layout.h
2505
2506 @end table
2507 and functions:
2508 @table @option
2509 @item gain_interpolate(f)
2510 interpolate gain on frequency f based on gain_entry
2511 @item cubic_interpolate(f)
2512 same as gain_interpolate, but smoother
2513 @end table
2514 This option is also available as command. Default is @code{gain_interpolate(f)}.
2515
2516 @item gain_entry
2517 Set gain entry for gain_interpolate function. The expression can
2518 contain functions:
2519 @table @option
2520 @item entry(f, g)
2521 store gain entry at frequency f with value g
2522 @end table
2523 This option is also available as command.
2524
2525 @item delay
2526 Set filter delay in seconds. Higher value means more accurate.
2527 Default is @code{0.01}.
2528
2529 @item accuracy
2530 Set filter accuracy in Hz. Lower value means more accurate.
2531 Default is @code{5}.
2532
2533 @item wfunc
2534 Set window function. Acceptable values are:
2535 @table @option
2536 @item rectangular
2537 rectangular window, useful when gain curve is already smooth
2538 @item hann
2539 hann window (default)
2540 @item hamming
2541 hamming window
2542 @item blackman
2543 blackman window
2544 @item nuttall3
2545 3-terms continuous 1st derivative nuttall window
2546 @item mnuttall3
2547 minimum 3-terms discontinuous nuttall window
2548 @item nuttall
2549 4-terms continuous 1st derivative nuttall window
2550 @item bnuttall
2551 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
2552 @item bharris
2553 blackman-harris window
2554 @item tukey
2555 tukey window
2556 @end table
2557
2558 @item fixed
2559 If enabled, use fixed number of audio samples. This improves speed when
2560 filtering with large delay. Default is disabled.
2561
2562 @item multi
2563 Enable multichannels evaluation on gain. Default is disabled.
2564
2565 @item zero_phase
2566 Enable zero phase mode by subtracting timestamp to compensate delay.
2567 Default is disabled.
2568
2569 @item scale
2570 Set scale used by gain. Acceptable values are:
2571 @table @option
2572 @item linlin
2573 linear frequency, linear gain
2574 @item linlog
2575 linear frequency, logarithmic (in dB) gain (default)
2576 @item loglin
2577 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
2578 @item loglog
2579 logarithmic frequency, logarithmic gain
2580 @end table
2581
2582 @item dumpfile
2583 Set file for dumping, suitable for gnuplot.
2584
2585 @item dumpscale
2586 Set scale for dumpfile. Acceptable values are same with scale option.
2587 Default is linlog.
2588
2589 @item fft2
2590 Enable 2-channel convolution using complex FFT. This improves speed significantly.
2591 Default is disabled.
2592 @end table
2593
2594 @subsection Examples
2595 @itemize
2596 @item
2597 lowpass at 1000 Hz:
2598 @example
2599 firequalizer=gain='if(lt(f,1000), 0, -INF)'
2600 @end example
2601 @item
2602 lowpass at 1000 Hz with gain_entry:
2603 @example
2604 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
2605 @end example
2606 @item
2607 custom equalization:
2608 @example
2609 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
2610 @end example
2611 @item
2612 higher delay with zero phase to compensate delay:
2613 @example
2614 firequalizer=delay=0.1:fixed=on:zero_phase=on
2615 @end example
2616 @item
2617 lowpass on left channel, highpass on right channel:
2618 @example
2619 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
2620 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
2621 @end example
2622 @end itemize
2623
2624 @section flanger
2625 Apply a flanging effect to the audio.
2626
2627 The filter accepts the following options:
2628
2629 @table @option
2630 @item delay
2631 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
2632
2633 @item depth
2634 Set added swep delay in milliseconds. Range from 0 to 10. Default value is 2.
2635
2636 @item regen
2637 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
2638 Default value is 0.
2639
2640 @item width
2641 Set percentage of delayed signal mixed with original. Range from 0 to 100.
2642 Default value is 71.
2643
2644 @item speed
2645 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
2646
2647 @item shape
2648 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
2649 Default value is @var{sinusoidal}.
2650
2651 @item phase
2652 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
2653 Default value is 25.
2654
2655 @item interp
2656 Set delay-line interpolation, @var{linear} or @var{quadratic}.
2657 Default is @var{linear}.
2658 @end table
2659
2660 @section hdcd
2661
2662 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
2663 embedded HDCD codes is expanded into a 20-bit PCM stream.
2664
2665 The filter supports the Peak Extend and Low-level Gain Adjustment features
2666 of HDCD, and detects the Transient Filter flag.
2667
2668 @example
2669 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
2670 @end example
2671
2672 When using the filter with wav, note the default encoding for wav is 16-bit,
2673 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
2674 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
2675 @example
2676 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
2677 ffmpeg -i HDCD16.wav -af hdcd -acodec pcm_s24le OUT24.wav
2678 @end example
2679
2680 The filter accepts the following options:
2681
2682 @table @option
2683 @item disable_autoconvert
2684 Disable any automatic format conversion or resampling in the filter graph.
2685
2686 @item process_stereo
2687 Process the stereo channels together. If target_gain does not match between
2688 channels, consider it invalid and use the last valid target_gain.
2689
2690 @item cdt_ms
2691 Set the code detect timer period in ms.
2692
2693 @item force_pe
2694 Always extend peaks above -3dBFS even if PE isn't signaled.
2695
2696 @item analyze_mode
2697 Replace audio with a solid tone and adjust the amplitude to signal some
2698 specific aspect of the decoding process. The output file can be loaded in
2699 an audio editor alongside the original to aid analysis.
2700
2701 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
2702
2703 Modes are:
2704 @table @samp
2705 @item 0, off
2706 Disabled
2707 @item 1, lle
2708 Gain adjustment level at each sample
2709 @item 2, pe
2710 Samples where peak extend occurs
2711 @item 3, cdt
2712 Samples where the code detect timer is active
2713 @item 4, tgm
2714 Samples where the target gain does not match between channels
2715 @end table
2716 @end table
2717
2718 @section highpass
2719
2720 Apply a high-pass filter with 3dB point frequency.
2721 The filter can be either single-pole, or double-pole (the default).
2722 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
2723
2724 The filter accepts the following options:
2725
2726 @table @option
2727 @item frequency, f
2728 Set frequency in Hz. Default is 3000.
2729
2730 @item poles, p
2731 Set number of poles. Default is 2.
2732
2733 @item width_type
2734 Set method to specify band-width of filter.
2735 @table @option
2736 @item h
2737 Hz
2738 @item q
2739 Q-Factor
2740 @item o
2741 octave
2742 @item s
2743 slope
2744 @end table
2745
2746 @item width, w
2747 Specify the band-width of a filter in width_type units.
2748 Applies only to double-pole filter.
2749 The default is 0.707q and gives a Butterworth response.
2750 @end table
2751
2752 @section join
2753
2754 Join multiple input streams into one multi-channel stream.
2755
2756 It accepts the following parameters:
2757 @table @option
2758
2759 @item inputs
2760 The number of input streams. It defaults to 2.
2761
2762 @item channel_layout
2763 The desired output channel layout. It defaults to stereo.
2764
2765 @item map
2766 Map channels from inputs to output. The argument is a '|'-separated list of
2767 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
2768 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
2769 can be either the name of the input channel (e.g. FL for front left) or its
2770 index in the specified input stream. @var{out_channel} is the name of the output
2771 channel.
2772 @end table
2773
2774 The filter will attempt to guess the mappings when they are not specified
2775 explicitly. It does so by first trying to find an unused matching input channel
2776 and if that fails it picks the first unused input channel.
2777
2778 Join 3 inputs (with properly set channel layouts):
2779 @example
2780 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
2781 @end example
2782
2783 Build a 5.1 output from 6 single-channel streams:
2784 @example
2785 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
2786 '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'
2787 out
2788 @end example
2789
2790 @section ladspa
2791
2792 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
2793
2794 To enable compilation of this filter you need to configure FFmpeg with
2795 @code{--enable-ladspa}.
2796
2797 @table @option
2798 @item file, f
2799 Specifies the name of LADSPA plugin library to load. If the environment
2800 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
2801 each one of the directories specified by the colon separated list in
2802 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
2803 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
2804 @file{/usr/lib/ladspa/}.
2805
2806 @item plugin, p
2807 Specifies the plugin within the library. Some libraries contain only
2808 one plugin, but others contain many of them. If this is not set filter
2809 will list all available plugins within the specified library.
2810
2811 @item controls, c
2812 Set the '|' separated list of controls which are zero or more floating point
2813 values that determine the behavior of the loaded plugin (for example delay,
2814 threshold or gain).
2815 Controls need to be defined using the following syntax:
2816 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
2817 @var{valuei} is the value set on the @var{i}-th control.
2818 Alternatively they can be also defined using the following syntax:
2819 @var{value0}|@var{value1}|@var{value2}|..., where
2820 @var{valuei} is the value set on the @var{i}-th control.
2821 If @option{controls} is set to @code{help}, all available controls and
2822 their valid ranges are printed.
2823
2824 @item sample_rate, s
2825 Specify the sample rate, default to 44100. Only used if plugin have
2826 zero inputs.
2827
2828 @item nb_samples, n
2829 Set the number of samples per channel per each output frame, default
2830 is 1024. Only used if plugin have zero inputs.
2831
2832 @item duration, d
2833 Set the minimum duration of the sourced audio. See
2834 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2835 for the accepted syntax.
2836 Note that the resulting duration may be greater than the specified duration,
2837 as the generated audio is always cut at the end of a complete frame.
2838 If not specified, or the expressed duration is negative, the audio is
2839 supposed to be generated forever.
2840 Only used if plugin have zero inputs.
2841
2842 @end table
2843
2844 @subsection Examples
2845
2846 @itemize
2847 @item
2848 List all available plugins within amp (LADSPA example plugin) library:
2849 @example
2850 ladspa=file=amp
2851 @end example
2852
2853 @item
2854 List all available controls and their valid ranges for @code{vcf_notch}
2855 plugin from @code{VCF} library:
2856 @example
2857 ladspa=f=vcf:p=vcf_notch:c=help
2858 @end example
2859
2860 @item
2861 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
2862 plugin library:
2863 @example
2864 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
2865 @end example
2866
2867 @item
2868 Add reverberation to the audio using TAP-plugins
2869 (Tom's Audio Processing plugins):
2870 @example
2871 ladspa=file=tap_reverb:tap_reverb
2872 @end example
2873
2874 @item
2875 Generate white noise, with 0.2 amplitude:
2876 @example
2877 ladspa=file=cmt:noise_source_white:c=c0=.2
2878 @end example
2879
2880 @item
2881 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
2882 @code{C* Audio Plugin Suite} (CAPS) library:
2883 @example
2884 ladspa=file=caps:Click:c=c1=20'
2885 @end example
2886
2887 @item
2888 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
2889 @example
2890 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
2891 @end example
2892
2893 @item
2894 Increase volume by 20dB using fast lookahead limiter from Steve Harris
2895 @code{SWH Plugins} collection:
2896 @example
2897 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
2898 @end example
2899
2900 @item
2901 Attenuate low frequencies using Multiband EQ from Steve Harris
2902 @code{SWH Plugins} collection:
2903 @example
2904 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
2905 @end example
2906 @end itemize
2907
2908 @subsection Commands
2909
2910 This filter supports the following commands:
2911 @table @option
2912 @item cN
2913 Modify the @var{N}-th control value.
2914
2915 If the specified value is not valid, it is ignored and prior one is kept.
2916 @end table
2917
2918 @section loudnorm
2919
2920 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
2921 Support for both single pass (livestreams, files) and double pass (files) modes.
2922 This algorithm can target IL, LRA, and maximum true peak.
2923
2924 The filter accepts the following options:
2925
2926 @table @option
2927 @item I, i
2928 Set integrated loudness target.
2929 Range is -70.0 - -5.0. Default value is -24.0.
2930
2931 @item LRA, lra
2932 Set loudness range target.
2933 Range is 1.0 - 20.0. Default value is 7.0.
2934
2935 @item TP, tp
2936 Set maximum true peak.
2937 Range is -9.0 - +0.0. Default value is -2.0.
2938
2939 @item measured_I, measured_i
2940 Measured IL of input file.
2941 Range is -99.0 - +0.0.
2942
2943 @item measured_LRA, measured_lra
2944 Measured LRA of input file.
2945 Range is  0.0 - 99.0.
2946
2947 @item measured_TP, measured_tp
2948 Measured true peak of input file.
2949 Range is  -99.0 - +99.0.
2950
2951 @item measured_thresh
2952 Measured threshold of input file.
2953 Range is -99.0 - +0.0.
2954
2955 @item offset
2956 Set offset gain. Gain is applied before the true-peak limiter.
2957 Range is  -99.0 - +99.0. Default is +0.0.
2958
2959 @item linear
2960 Normalize linearly if possible.
2961 measured_I, measured_LRA, measured_TP, and measured_thresh must also
2962 to be specified in order to use this mode.
2963 Options are true or false. Default is true.
2964
2965 @item dual_mono
2966 Treat mono input files as "dual-mono". If a mono file is intended for playback
2967 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
2968 If set to @code{true}, this option will compensate for this effect.
2969 Multi-channel input files are not affected by this option.
2970 Options are true or false. Default is false.
2971
2972 @item print_format
2973 Set print format for stats. Options are summary, json, or none.
2974 Default value is none.
2975 @end table
2976
2977 @section lowpass
2978
2979 Apply a low-pass filter with 3dB point frequency.
2980 The filter can be either single-pole or double-pole (the default).
2981 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
2982
2983 The filter accepts the following options:
2984
2985 @table @option
2986 @item frequency, f
2987 Set frequency in Hz. Default is 500.
2988
2989 @item poles, p
2990 Set number of poles. Default is 2.
2991
2992 @item width_type
2993 Set method to specify band-width of filter.
2994 @table @option
2995 @item h
2996 Hz
2997 @item q
2998 Q-Factor
2999 @item o
3000 octave
3001 @item s
3002 slope
3003 @end table
3004
3005 @item width, w
3006 Specify the band-width of a filter in width_type units.
3007 Applies only to double-pole filter.
3008 The default is 0.707q and gives a Butterworth response.
3009 @end table
3010
3011 @anchor{pan}
3012 @section pan
3013
3014 Mix channels with specific gain levels. The filter accepts the output
3015 channel layout followed by a set of channels definitions.
3016
3017 This filter is also designed to efficiently remap the channels of an audio
3018 stream.
3019
3020 The filter accepts parameters of the form:
3021 "@var{l}|@var{outdef}|@var{outdef}|..."
3022
3023 @table @option
3024 @item l
3025 output channel layout or number of channels
3026
3027 @item outdef
3028 output channel specification, of the form:
3029 "@var{out_name}=[@var{gain}*]@var{in_name}[+[@var{gain}*]@var{in_name}...]"
3030
3031 @item out_name
3032 output channel to define, either a channel name (FL, FR, etc.) or a channel
3033 number (c0, c1, etc.)
3034
3035 @item gain
3036 multiplicative coefficient for the channel, 1 leaving the volume unchanged
3037
3038 @item in_name
3039 input channel to use, see out_name for details; it is not possible to mix
3040 named and numbered input channels
3041 @end table
3042
3043 If the `=' in a channel specification is replaced by `<', then the gains for
3044 that specification will be renormalized so that the total is 1, thus
3045 avoiding clipping noise.
3046
3047 @subsection Mixing examples
3048
3049 For example, if you want to down-mix from stereo to mono, but with a bigger
3050 factor for the left channel:
3051 @example
3052 pan=1c|c0=0.9*c0+0.1*c1
3053 @end example
3054
3055 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
3056 7-channels surround:
3057 @example
3058 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
3059 @end example
3060
3061 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
3062 that should be preferred (see "-ac" option) unless you have very specific
3063 needs.
3064
3065 @subsection Remapping examples
3066
3067 The channel remapping will be effective if, and only if:
3068
3069 @itemize
3070 @item gain coefficients are zeroes or ones,
3071 @item only one input per channel output,
3072 @end itemize
3073
3074 If all these conditions are satisfied, the filter will notify the user ("Pure
3075 channel mapping detected"), and use an optimized and lossless method to do the
3076 remapping.
3077
3078 For example, if you have a 5.1 source and want a stereo audio stream by
3079 dropping the extra channels:
3080 @example
3081 pan="stereo| c0=FL | c1=FR"
3082 @end example
3083
3084 Given the same source, you can also switch front left and front right channels
3085 and keep the input channel layout:
3086 @example
3087 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
3088 @end example
3089
3090 If the input is a stereo audio stream, you can mute the front left channel (and
3091 still keep the stereo channel layout) with:
3092 @example
3093 pan="stereo|c1=c1"
3094 @end example
3095
3096 Still with a stereo audio stream input, you can copy the right channel in both
3097 front left and right:
3098 @example
3099 pan="stereo| c0=FR | c1=FR"
3100 @end example
3101
3102 @section replaygain
3103
3104 ReplayGain scanner filter. This filter takes an audio stream as an input and
3105 outputs it unchanged.
3106 At end of filtering it displays @code{track_gain} and @code{track_peak}.
3107
3108 @section resample
3109
3110 Convert the audio sample format, sample rate and channel layout. It is
3111 not meant to be used directly.
3112
3113 @section rubberband
3114 Apply time-stretching and pitch-shifting with librubberband.
3115
3116 The filter accepts the following options:
3117
3118 @table @option
3119 @item tempo
3120 Set tempo scale factor.
3121
3122 @item pitch
3123 Set pitch scale factor.
3124
3125 @item transients
3126 Set transients detector.
3127 Possible values are:
3128 @table @var
3129 @item crisp
3130 @item mixed
3131 @item smooth
3132 @end table
3133
3134 @item detector
3135 Set detector.
3136 Possible values are:
3137 @table @var
3138 @item compound
3139 @item percussive
3140 @item soft
3141 @end table
3142
3143 @item phase
3144 Set phase.
3145 Possible values are:
3146 @table @var
3147 @item laminar
3148 @item independent
3149 @end table
3150
3151 @item window
3152 Set processing window size.
3153 Possible values are:
3154 @table @var
3155 @item standard
3156 @item short
3157 @item long
3158 @end table
3159
3160 @item smoothing
3161 Set smoothing.
3162 Possible values are:
3163 @table @var
3164 @item off
3165 @item on
3166 @end table
3167
3168 @item formant
3169 Enable formant preservation when shift pitching.
3170 Possible values are:
3171 @table @var
3172 @item shifted
3173 @item preserved
3174 @end table
3175
3176 @item pitchq
3177 Set pitch quality.
3178 Possible values are:
3179 @table @var
3180 @item quality
3181 @item speed
3182 @item consistency
3183 @end table
3184
3185 @item channels
3186 Set channels.
3187 Possible values are:
3188 @table @var
3189 @item apart
3190 @item together
3191 @end table
3192 @end table
3193
3194 @section sidechaincompress
3195
3196 This filter acts like normal compressor but has the ability to compress
3197 detected signal using second input signal.
3198 It needs two input streams and returns one output stream.
3199 First input stream will be processed depending on second stream signal.
3200 The filtered signal then can be filtered with other filters in later stages of
3201 processing. See @ref{pan} and @ref{amerge} filter.
3202
3203 The filter accepts the following options:
3204
3205 @table @option
3206 @item level_in
3207 Set input gain. Default is 1. Range is between 0.015625 and 64.
3208
3209 @item threshold
3210 If a signal of second stream raises above this level it will affect the gain
3211 reduction of first stream.
3212 By default is 0.125. Range is between 0.00097563 and 1.
3213
3214 @item ratio
3215 Set a ratio about which the signal is reduced. 1:2 means that if the level
3216 raised 4dB above the threshold, it will be only 2dB above after the reduction.
3217 Default is 2. Range is between 1 and 20.
3218
3219 @item attack
3220 Amount of milliseconds the signal has to rise above the threshold before gain
3221 reduction starts. Default is 20. Range is between 0.01 and 2000.
3222
3223 @item release
3224 Amount of milliseconds the signal has to fall below the threshold before
3225 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
3226
3227 @item makeup
3228 Set the amount by how much signal will be amplified after processing.
3229 Default is 2. Range is from 1 and 64.
3230
3231 @item knee
3232 Curve the sharp knee around the threshold to enter gain reduction more softly.
3233 Default is 2.82843. Range is between 1 and 8.
3234
3235 @item link
3236 Choose if the @code{average} level between all channels of side-chain stream
3237 or the louder(@code{maximum}) channel of side-chain stream affects the
3238 reduction. Default is @code{average}.
3239
3240 @item detection
3241 Should the exact signal be taken in case of @code{peak} or an RMS one in case
3242 of @code{rms}. Default is @code{rms} which is mainly smoother.
3243
3244 @item level_sc
3245 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
3246
3247 @item mix
3248 How much to use compressed signal in output. Default is 1.
3249 Range is between 0 and 1.
3250 @end table
3251
3252 @subsection Examples
3253
3254 @itemize
3255 @item
3256 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
3257 depending on the signal of 2nd input and later compressed signal to be
3258 merged with 2nd input:
3259 @example
3260 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
3261 @end example
3262 @end itemize
3263
3264 @section sidechaingate
3265
3266 A sidechain gate acts like a normal (wideband) gate but has the ability to
3267 filter the detected signal before sending it to the gain reduction stage.
3268 Normally a gate uses the full range signal to detect a level above the
3269 threshold.
3270 For example: If you cut all lower frequencies from your sidechain signal
3271 the gate will decrease the volume of your track only if not enough highs
3272 appear. With this technique you are able to reduce the resonation of a
3273 natural drum or remove "rumbling" of muted strokes from a heavily distorted
3274 guitar.
3275 It needs two input streams and returns one output stream.
3276 First input stream will be processed depending on second stream signal.
3277
3278 The filter accepts the following options:
3279
3280 @table @option
3281 @item level_in
3282 Set input level before filtering.
3283 Default is 1. Allowed range is from 0.015625 to 64.
3284
3285 @item range
3286 Set the level of gain reduction when the signal is below the threshold.
3287 Default is 0.06125. Allowed range is from 0 to 1.
3288
3289 @item threshold
3290 If a signal rises above this level the gain reduction is released.
3291 Default is 0.125. Allowed range is from 0 to 1.
3292
3293 @item ratio
3294 Set a ratio about which the signal is reduced.
3295 Default is 2. Allowed range is from 1 to 9000.
3296
3297 @item attack
3298 Amount of milliseconds the signal has to rise above the threshold before gain
3299 reduction stops.
3300 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
3301
3302 @item release
3303 Amount of milliseconds the signal has to fall below the threshold before the
3304 reduction is increased again. Default is 250 milliseconds.
3305 Allowed range is from 0.01 to 9000.
3306
3307 @item makeup
3308 Set amount of amplification of signal after processing.
3309 Default is 1. Allowed range is from 1 to 64.
3310
3311 @item knee
3312 Curve the sharp knee around the threshold to enter gain reduction more softly.
3313 Default is 2.828427125. Allowed range is from 1 to 8.
3314
3315 @item detection
3316 Choose if exact signal should be taken for detection or an RMS like one.
3317 Default is rms. Can be peak or rms.
3318
3319 @item link
3320 Choose if the average level between all channels or the louder channel affects
3321 the reduction.
3322 Default is average. Can be average or maximum.
3323
3324 @item level_sc
3325 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
3326 @end table
3327
3328 @section silencedetect
3329
3330 Detect silence in an audio stream.
3331
3332 This filter logs a message when it detects that the input audio volume is less
3333 or equal to a noise tolerance value for a duration greater or equal to the
3334 minimum detected noise duration.
3335
3336 The printed times and duration are expressed in seconds.
3337
3338 The filter accepts the following options:
3339
3340 @table @option
3341 @item duration, d
3342 Set silence duration until notification (default is 2 seconds).
3343
3344 @item noise, n
3345 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
3346 specified value) or amplitude ratio. Default is -60dB, or 0.001.
3347 @end table
3348
3349 @subsection Examples
3350
3351 @itemize
3352 @item
3353 Detect 5 seconds of silence with -50dB noise tolerance:
3354 @example
3355 silencedetect=n=-50dB:d=5
3356 @end example
3357
3358 @item
3359 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
3360 tolerance in @file{silence.mp3}:
3361 @example
3362 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
3363 @end example
3364 @end itemize
3365
3366 @section silenceremove
3367
3368 Remove silence from the beginning, middle or end of the audio.
3369
3370 The filter accepts the following options:
3371
3372 @table @option
3373 @item start_periods
3374 This value is used to indicate if audio should be trimmed at beginning of
3375 the audio. A value of zero indicates no silence should be trimmed from the
3376 beginning. When specifying a non-zero value, it trims audio up until it
3377 finds non-silence. Normally, when trimming silence from beginning of audio
3378 the @var{start_periods} will be @code{1} but it can be increased to higher
3379 values to trim all audio up to specific count of non-silence periods.
3380 Default value is @code{0}.
3381
3382 @item start_duration
3383 Specify the amount of time that non-silence must be detected before it stops
3384 trimming audio. By increasing the duration, bursts of noises can be treated
3385 as silence and trimmed off. Default value is @code{0}.
3386
3387 @item start_threshold
3388 This indicates what sample value should be treated as silence. For digital
3389 audio, a value of @code{0} may be fine but for audio recorded from analog,
3390 you may wish to increase the value to account for background noise.
3391 Can be specified in dB (in case "dB" is appended to the specified value)
3392 or amplitude ratio. Default value is @code{0}.
3393
3394 @item stop_periods
3395 Set the count for trimming silence from the end of audio.
3396 To remove silence from the middle of a file, specify a @var{stop_periods}
3397 that is negative. This value is then treated as a positive value and is
3398 used to indicate the effect should restart processing as specified by
3399 @var{start_periods}, making it suitable for removing periods of silence
3400 in the middle of the audio.
3401 Default value is @code{0}.
3402
3403 @item stop_duration
3404 Specify a duration of silence that must exist before audio is not copied any
3405 more. By specifying a higher duration, silence that is wanted can be left in
3406 the audio.
3407 Default value is @code{0}.
3408
3409 @item stop_threshold
3410 This is the same as @option{start_threshold} but for trimming silence from
3411 the end of audio.
3412 Can be specified in dB (in case "dB" is appended to the specified value)
3413 or amplitude ratio. Default value is @code{0}.
3414
3415 @item leave_silence
3416 This indicates that @var{stop_duration} length of audio should be left intact
3417 at the beginning of each period of silence.
3418 For example, if you want to remove long pauses between words but do not want
3419 to remove the pauses completely. Default value is @code{0}.
3420
3421 @item detection
3422 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
3423 and works better with digital silence which is exactly 0.
3424 Default value is @code{rms}.
3425
3426 @item window
3427 Set ratio used to calculate size of window for detecting silence.
3428 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
3429 @end table
3430
3431 @subsection Examples
3432
3433 @itemize
3434 @item
3435 The following example shows how this filter can be used to start a recording
3436 that does not contain the delay at the start which usually occurs between
3437 pressing the record button and the start of the performance:
3438 @example
3439 silenceremove=1:5:0.02
3440 @end example
3441
3442 @item
3443 Trim all silence encountered from beginning to end where there is more than 1
3444 second of silence in audio:
3445 @example
3446 silenceremove=0:0:0:-1:1:-90dB
3447 @end example
3448 @end itemize
3449
3450 @section sofalizer
3451
3452 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
3453 loudspeakers around the user for binaural listening via headphones (audio
3454 formats up to 9 channels supported).
3455 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
3456 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
3457 Austrian Academy of Sciences.
3458
3459 To enable compilation of this filter you need to configure FFmpeg with
3460 @code{--enable-netcdf}.
3461
3462 The filter accepts the following options:
3463
3464 @table @option
3465 @item sofa
3466 Set the SOFA file used for rendering.
3467
3468 @item gain
3469 Set gain applied to audio. Value is in dB. Default is 0.
3470
3471 @item rotation
3472 Set rotation of virtual loudspeakers in deg. Default is 0.
3473
3474 @item elevation
3475 Set elevation of virtual speakers in deg. Default is 0.
3476
3477 @item radius
3478 Set distance in meters between loudspeakers and the listener with near-field
3479 HRTFs. Default is 1.
3480
3481 @item type
3482 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3483 processing audio in time domain which is slow.
3484 @var{freq} is processing audio in frequency domain which is fast.
3485 Default is @var{freq}.
3486
3487 @item speakers
3488 Set custom positions of virtual loudspeakers. Syntax for this option is:
3489 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
3490 Each virtual loudspeaker is described with short channel name following with
3491 azimuth and elevation in degreees.
3492 Each virtual loudspeaker description is separated by '|'.
3493 For example to override front left and front right channel positions use:
3494 'speakers=FL 45 15|FR 345 15'.
3495 Descriptions with unrecognised channel names are ignored.
3496 @end table
3497
3498 @subsection Examples
3499
3500 @itemize
3501 @item
3502 Using ClubFritz6 sofa file:
3503 @example
3504 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
3505 @end example
3506
3507 @item
3508 Using ClubFritz12 sofa file and bigger radius with small rotation:
3509 @example
3510 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
3511 @end example
3512
3513 @item
3514 Similar as above but with custom speaker positions for front left, front right, rear left and rear right
3515 and also with custom gain:
3516 @example
3517 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|RL 135|RR 225:gain=28"
3518 @end example
3519 @end itemize
3520
3521 @section stereotools
3522
3523 This filter has some handy utilities to manage stereo signals, for converting
3524 M/S stereo recordings to L/R signal while having control over the parameters
3525 or spreading the stereo image of master track.
3526
3527 The filter accepts the following options:
3528
3529 @table @option
3530 @item level_in
3531 Set input level before filtering for both channels. Defaults is 1.
3532 Allowed range is from 0.015625 to 64.
3533
3534 @item level_out
3535 Set output level after filtering for both channels. Defaults is 1.
3536 Allowed range is from 0.015625 to 64.
3537
3538 @item balance_in
3539 Set input balance between both channels. Default is 0.
3540 Allowed range is from -1 to 1.
3541
3542 @item balance_out
3543 Set output balance between both channels. Default is 0.
3544 Allowed range is from -1 to 1.
3545
3546 @item softclip
3547 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
3548 clipping. Disabled by default.
3549
3550 @item mutel
3551 Mute the left channel. Disabled by default.
3552
3553 @item muter
3554 Mute the right channel. Disabled by default.
3555
3556 @item phasel
3557 Change the phase of the left channel. Disabled by default.
3558
3559 @item phaser
3560 Change the phase of the right channel. Disabled by default.
3561
3562 @item mode
3563 Set stereo mode. Available values are:
3564
3565 @table @samp
3566 @item lr>lr
3567 Left/Right to Left/Right, this is default.
3568
3569 @item lr>ms
3570 Left/Right to Mid/Side.
3571
3572 @item ms>lr
3573 Mid/Side to Left/Right.
3574
3575 @item lr>ll
3576 Left/Right to Left/Left.
3577
3578 @item lr>rr
3579 Left/Right to Right/Right.
3580
3581 @item lr>l+r
3582 Left/Right to Left + Right.
3583
3584 @item lr>rl
3585 Left/Right to Right/Left.
3586 @end table
3587
3588 @item slev
3589 Set level of side signal. Default is 1.
3590 Allowed range is from 0.015625 to 64.
3591
3592 @item sbal
3593 Set balance of side signal. Default is 0.
3594 Allowed range is from -1 to 1.
3595
3596 @item mlev
3597 Set level of the middle signal. Default is 1.
3598 Allowed range is from 0.015625 to 64.
3599
3600 @item mpan
3601 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
3602
3603 @item base
3604 Set stereo base between mono and inversed channels. Default is 0.
3605 Allowed range is from -1 to 1.
3606
3607 @item delay
3608 Set delay in milliseconds how much to delay left from right channel and
3609 vice versa. Default is 0. Allowed range is from -20 to 20.
3610
3611 @item sclevel
3612 Set S/C level. Default is 1. Allowed range is from 1 to 100.
3613
3614 @item phase
3615 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
3616 @end table
3617
3618 @subsection Examples
3619
3620 @itemize
3621 @item
3622 Apply karaoke like effect:
3623 @example
3624 stereotools=mlev=0.015625
3625 @end example
3626
3627 @item
3628 Convert M/S signal to L/R:
3629 @example
3630 "stereotools=mode=ms>lr"
3631 @end example
3632 @end itemize
3633
3634 @section stereowiden
3635
3636 This filter enhance the stereo effect by suppressing signal common to both
3637 channels and by delaying the signal of left into right and vice versa,
3638 thereby widening the stereo effect.
3639
3640 The filter accepts the following options:
3641
3642 @table @option
3643 @item delay
3644 Time in milliseconds of the delay of left signal into right and vice versa.
3645 Default is 20 milliseconds.
3646
3647 @item feedback
3648 Amount of gain in delayed signal into right and vice versa. Gives a delay
3649 effect of left signal in right output and vice versa which gives widening
3650 effect. Default is 0.3.
3651
3652 @item crossfeed
3653 Cross feed of left into right with inverted phase. This helps in suppressing
3654 the mono. If the value is 1 it will cancel all the signal common to both
3655 channels. Default is 0.3.
3656
3657 @item drymix
3658 Set level of input signal of original channel. Default is 0.8.
3659 @end table
3660
3661 @section treble
3662
3663 Boost or cut treble (upper) frequencies of the audio using a two-pole
3664 shelving filter with a response similar to that of a standard
3665 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
3666
3667 The filter accepts the following options:
3668
3669 @table @option
3670 @item gain, g
3671 Give the gain at whichever is the lower of ~22 kHz and the
3672 Nyquist frequency. Its useful range is about -20 (for a large cut)
3673 to +20 (for a large boost). Beware of clipping when using a positive gain.
3674
3675 @item frequency, f
3676 Set the filter's central frequency and so can be used
3677 to extend or reduce the frequency range to be boosted or cut.
3678 The default value is @code{3000} Hz.
3679
3680 @item width_type
3681 Set method to specify band-width of filter.
3682 @table @option
3683 @item h
3684 Hz
3685 @item q
3686 Q-Factor
3687 @item o
3688 octave
3689 @item s
3690 slope
3691 @end table
3692
3693 @item width, w
3694 Determine how steep is the filter's shelf transition.
3695 @end table
3696
3697 @section tremolo
3698
3699 Sinusoidal amplitude modulation.
3700
3701 The filter accepts the following options:
3702
3703 @table @option
3704 @item f
3705 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
3706 (20 Hz or lower) will result in a tremolo effect.
3707 This filter may also be used as a ring modulator by specifying
3708 a modulation frequency higher than 20 Hz.
3709 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
3710
3711 @item d
3712 Depth of modulation as a percentage. Range is 0.0 - 1.0.
3713 Default value is 0.5.
3714 @end table
3715
3716 @section vibrato
3717
3718 Sinusoidal phase modulation.
3719
3720 The filter accepts the following options:
3721
3722 @table @option
3723 @item f
3724 Modulation frequency in Hertz.
3725 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
3726
3727 @item d
3728 Depth of modulation as a percentage. Range is 0.0 - 1.0.
3729 Default value is 0.5.
3730 @end table
3731
3732 @section volume
3733
3734 Adjust the input audio volume.
3735
3736 It accepts the following parameters:
3737 @table @option
3738
3739 @item volume
3740 Set audio volume expression.
3741
3742 Output values are clipped to the maximum value.
3743
3744 The output audio volume is given by the relation:
3745 @example
3746 @var{output_volume} = @var{volume} * @var{input_volume}
3747 @end example
3748
3749 The default value for @var{volume} is "1.0".
3750
3751 @item precision
3752 This parameter represents the mathematical precision.
3753
3754 It determines which input sample formats will be allowed, which affects the
3755 precision of the volume scaling.
3756
3757 @table @option
3758 @item fixed
3759 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
3760 @item float
3761 32-bit floating-point; this limits input sample format to FLT. (default)
3762 @item double
3763 64-bit floating-point; this limits input sample format to DBL.
3764 @end table
3765
3766 @item replaygain
3767 Choose the behaviour on encountering ReplayGain side data in input frames.
3768
3769 @table @option
3770 @item drop
3771 Remove ReplayGain side data, ignoring its contents (the default).
3772
3773 @item ignore
3774 Ignore ReplayGain side data, but leave it in the frame.
3775
3776 @item track
3777 Prefer the track gain, if present.
3778
3779 @item album
3780 Prefer the album gain, if present.
3781 @end table
3782
3783 @item replaygain_preamp
3784 Pre-amplification gain in dB to apply to the selected replaygain gain.
3785
3786 Default value for @var{replaygain_preamp} is 0.0.
3787
3788 @item eval
3789 Set when the volume expression is evaluated.
3790
3791 It accepts the following values:
3792 @table @samp
3793 @item once
3794 only evaluate expression once during the filter initialization, or
3795 when the @samp{volume} command is sent
3796
3797 @item frame
3798 evaluate expression for each incoming frame
3799 @end table
3800
3801 Default value is @samp{once}.
3802 @end table
3803
3804 The volume expression can contain the following parameters.
3805
3806 @table @option
3807 @item n
3808 frame number (starting at zero)
3809 @item nb_channels
3810 number of channels
3811 @item nb_consumed_samples
3812 number of samples consumed by the filter
3813 @item nb_samples
3814 number of samples in the current frame
3815 @item pos
3816 original frame position in the file
3817 @item pts
3818 frame PTS
3819 @item sample_rate
3820 sample rate
3821 @item startpts
3822 PTS at start of stream
3823 @item startt
3824 time at start of stream
3825 @item t
3826 frame time
3827 @item tb
3828 timestamp timebase
3829 @item volume
3830 last set volume value
3831 @end table
3832
3833 Note that when @option{eval} is set to @samp{once} only the
3834 @var{sample_rate} and @var{tb} variables are available, all other
3835 variables will evaluate to NAN.
3836
3837 @subsection Commands
3838
3839 This filter supports the following commands:
3840 @table @option
3841 @item volume
3842 Modify the volume expression.
3843 The command accepts the same syntax of the corresponding option.
3844
3845 If the specified expression is not valid, it is kept at its current
3846 value.
3847 @item replaygain_noclip
3848 Prevent clipping by limiting the gain applied.
3849
3850 Default value for @var{replaygain_noclip} is 1.
3851
3852 @end table
3853
3854 @subsection Examples
3855
3856 @itemize
3857 @item
3858 Halve the input audio volume:
3859 @example
3860 volume=volume=0.5
3861 volume=volume=1/2
3862 volume=volume=-6.0206dB
3863 @end example
3864
3865 In all the above example the named key for @option{volume} can be
3866 omitted, for example like in:
3867 @example
3868 volume=0.5
3869 @end example
3870
3871 @item
3872 Increase input audio power by 6 decibels using fixed-point precision:
3873 @example
3874 volume=volume=6dB:precision=fixed
3875 @end example
3876
3877 @item
3878 Fade volume after time 10 with an annihilation period of 5 seconds:
3879 @example
3880 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
3881 @end example
3882 @end itemize
3883
3884 @section volumedetect
3885
3886 Detect the volume of the input video.
3887
3888 The filter has no parameters. The input is not modified. Statistics about
3889 the volume will be printed in the log when the input stream end is reached.
3890
3891 In particular it will show the mean volume (root mean square), maximum
3892 volume (on a per-sample basis), and the beginning of a histogram of the
3893 registered volume values (from the maximum value to a cumulated 1/1000 of
3894 the samples).
3895
3896 All volumes are in decibels relative to the maximum PCM value.
3897
3898 @subsection Examples
3899
3900 Here is an excerpt of the output:
3901 @example
3902 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
3903 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
3904 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
3905 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
3906 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
3907 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
3908 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
3909 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
3910 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
3911 @end example
3912
3913 It means that:
3914 @itemize
3915 @item
3916 The mean square energy is approximately -27 dB, or 10^-2.7.
3917 @item
3918 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
3919 @item
3920 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
3921 @end itemize
3922
3923 In other words, raising the volume by +4 dB does not cause any clipping,
3924 raising it by +5 dB causes clipping for 6 samples, etc.
3925
3926 @c man end AUDIO FILTERS
3927
3928 @chapter Audio Sources
3929 @c man begin AUDIO SOURCES
3930
3931 Below is a description of the currently available audio sources.
3932
3933 @section abuffer
3934
3935 Buffer audio frames, and make them available to the filter chain.
3936
3937 This source is mainly intended for a programmatic use, in particular
3938 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
3939
3940 It accepts the following parameters:
3941 @table @option
3942
3943 @item time_base
3944 The timebase which will be used for timestamps of submitted frames. It must be
3945 either a floating-point number or in @var{numerator}/@var{denominator} form.
3946
3947 @item sample_rate
3948 The sample rate of the incoming audio buffers.
3949
3950 @item sample_fmt
3951 The sample format of the incoming audio buffers.
3952 Either a sample format name or its corresponding integer representation from
3953 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
3954
3955 @item channel_layout
3956 The channel layout of the incoming audio buffers.
3957 Either a channel layout name from channel_layout_map in
3958 @file{libavutil/channel_layout.c} or its corresponding integer representation
3959 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
3960
3961 @item channels
3962 The number of channels of the incoming audio buffers.
3963 If both @var{channels} and @var{channel_layout} are specified, then they
3964 must be consistent.
3965
3966 @end table
3967
3968 @subsection Examples
3969
3970 @example
3971 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
3972 @end example
3973
3974 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
3975 Since the sample format with name "s16p" corresponds to the number
3976 6 and the "stereo" channel layout corresponds to the value 0x3, this is
3977 equivalent to:
3978 @example
3979 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
3980 @end example
3981
3982 @section aevalsrc
3983
3984 Generate an audio signal specified by an expression.
3985
3986 This source accepts in input one or more expressions (one for each
3987 channel), which are evaluated and used to generate a corresponding
3988 audio signal.
3989
3990 This source accepts the following options:
3991
3992 @table @option
3993 @item exprs
3994 Set the '|'-separated expressions list for each separate channel. In case the
3995 @option{channel_layout} option is not specified, the selected channel layout
3996 depends on the number of provided expressions. Otherwise the last
3997 specified expression is applied to the remaining output channels.
3998
3999 @item channel_layout, c
4000 Set the channel layout. The number of channels in the specified layout
4001 must be equal to the number of specified expressions.
4002
4003 @item duration, d
4004 Set the minimum duration of the sourced audio. See
4005 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4006 for the accepted syntax.
4007 Note that the resulting duration may be greater than the specified
4008 duration, as the generated audio is always cut at the end of a
4009 complete frame.
4010
4011 If not specified, or the expressed duration is negative, the audio is
4012 supposed to be generated forever.
4013
4014 @item nb_samples, n
4015 Set the number of samples per channel per each output frame,
4016 default to 1024.
4017
4018 @item sample_rate, s
4019 Specify the sample rate, default to 44100.
4020 @end table
4021
4022 Each expression in @var{exprs} can contain the following constants:
4023
4024 @table @option
4025 @item n
4026 number of the evaluated sample, starting from 0
4027
4028 @item t
4029 time of the evaluated sample expressed in seconds, starting from 0
4030
4031 @item s
4032 sample rate
4033
4034 @end table
4035
4036 @subsection Examples
4037
4038 @itemize
4039 @item
4040 Generate silence:
4041 @example
4042 aevalsrc=0
4043 @end example
4044
4045 @item
4046 Generate a sin signal with frequency of 440 Hz, set sample rate to
4047 8000 Hz:
4048 @example
4049 aevalsrc="sin(440*2*PI*t):s=8000"
4050 @end example
4051
4052 @item
4053 Generate a two channels signal, specify the channel layout (Front
4054 Center + Back Center) explicitly:
4055 @example
4056 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
4057 @end example
4058
4059 @item
4060 Generate white noise:
4061 @example
4062 aevalsrc="-2+random(0)"
4063 @end example
4064
4065 @item
4066 Generate an amplitude modulated signal:
4067 @example
4068 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
4069 @end example
4070
4071 @item
4072 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
4073 @example
4074 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
4075 @end example
4076
4077 @end itemize
4078
4079 @section anullsrc
4080
4081 The null audio source, return unprocessed audio frames. It is mainly useful
4082 as a template and to be employed in analysis / debugging tools, or as
4083 the source for filters which ignore the input data (for example the sox
4084 synth filter).
4085
4086 This source accepts the following options:
4087
4088 @table @option
4089
4090 @item channel_layout, cl
4091
4092 Specifies the channel layout, and can be either an integer or a string
4093 representing a channel layout. The default value of @var{channel_layout}
4094 is "stereo".
4095
4096 Check the channel_layout_map definition in
4097 @file{libavutil/channel_layout.c} for the mapping between strings and
4098 channel layout values.
4099
4100 @item sample_rate, r
4101 Specifies the sample rate, and defaults to 44100.
4102
4103 @item nb_samples, n
4104 Set the number of samples per requested frames.
4105
4106 @end table
4107
4108 @subsection Examples
4109
4110 @itemize
4111 @item
4112 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
4113 @example
4114 anullsrc=r=48000:cl=4
4115 @end example
4116
4117 @item
4118 Do the same operation with a more obvious syntax:
4119 @example
4120 anullsrc=r=48000:cl=mono
4121 @end example
4122 @end itemize
4123
4124 All the parameters need to be explicitly defined.
4125
4126 @section flite
4127
4128 Synthesize a voice utterance using the libflite library.
4129
4130 To enable compilation of this filter you need to configure FFmpeg with
4131 @code{--enable-libflite}.
4132
4133 Note that the flite library is not thread-safe.
4134
4135 The filter accepts the following options:
4136
4137 @table @option
4138
4139 @item list_voices
4140 If set to 1, list the names of the available voices and exit
4141 immediately. Default value is 0.
4142
4143 @item nb_samples, n
4144 Set the maximum number of samples per frame. Default value is 512.
4145
4146 @item textfile
4147 Set the filename containing the text to speak.
4148
4149 @item text
4150 Set the text to speak.
4151
4152 @item voice, v
4153 Set the voice to use for the speech synthesis. Default value is
4154 @code{kal}. See also the @var{list_voices} option.
4155 @end table
4156
4157 @subsection Examples
4158
4159 @itemize
4160 @item
4161 Read from file @file{speech.txt}, and synthesize the text using the
4162 standard flite voice:
4163 @example
4164 flite=textfile=speech.txt
4165 @end example
4166
4167 @item
4168 Read the specified text selecting the @code{slt} voice:
4169 @example
4170 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
4171 @end example
4172
4173 @item
4174 Input text to ffmpeg:
4175 @example
4176 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
4177 @end example
4178
4179 @item
4180 Make @file{ffplay} speak the specified text, using @code{flite} and
4181 the @code{lavfi} device:
4182 @example
4183 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
4184 @end example
4185 @end itemize
4186
4187 For more information about libflite, check:
4188 @url{http://www.speech.cs.cmu.edu/flite/}
4189
4190 @section anoisesrc
4191
4192 Generate a noise audio signal.
4193
4194 The filter accepts the following options:
4195
4196 @table @option
4197 @item sample_rate, r
4198 Specify the sample rate. Default value is 48000 Hz.
4199
4200 @item amplitude, a
4201 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
4202 is 1.0.
4203
4204 @item duration, d
4205 Specify the duration of the generated audio stream. Not specifying this option
4206 results in noise with an infinite length.
4207
4208 @item color, colour, c
4209 Specify the color of noise. Available noise colors are white, pink, and brown.
4210 Default color is white.
4211
4212 @item seed, s
4213 Specify a value used to seed the PRNG.
4214
4215 @item nb_samples, n
4216 Set the number of samples per each output frame, default is 1024.
4217 @end table
4218
4219 @subsection Examples
4220
4221 @itemize
4222
4223 @item
4224 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
4225 @example
4226 anoisesrc=d=60:c=pink:r=44100:a=0.5
4227 @end example
4228 @end itemize
4229
4230 @section sine
4231
4232 Generate an audio signal made of a sine wave with amplitude 1/8.
4233
4234 The audio signal is bit-exact.
4235
4236 The filter accepts the following options:
4237
4238 @table @option
4239
4240 @item frequency, f
4241 Set the carrier frequency. Default is 440 Hz.
4242
4243 @item beep_factor, b
4244 Enable a periodic beep every second with frequency @var{beep_factor} times
4245 the carrier frequency. Default is 0, meaning the beep is disabled.
4246
4247 @item sample_rate, r
4248 Specify the sample rate, default is 44100.
4249
4250 @item duration, d
4251 Specify the duration of the generated audio stream.
4252
4253 @item samples_per_frame
4254 Set the number of samples per output frame.
4255
4256 The expression can contain the following constants:
4257
4258 @table @option
4259 @item n
4260 The (sequential) number of the output audio frame, starting from 0.
4261
4262 @item pts
4263 The PTS (Presentation TimeStamp) of the output audio frame,
4264 expressed in @var{TB} units.
4265
4266 @item t
4267 The PTS of the output audio frame, expressed in seconds.
4268
4269 @item TB
4270 The timebase of the output audio frames.
4271 @end table
4272
4273 Default is @code{1024}.
4274 @end table
4275
4276 @subsection Examples
4277
4278 @itemize
4279
4280 @item
4281 Generate a simple 440 Hz sine wave:
4282 @example
4283 sine
4284 @end example
4285
4286 @item
4287 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
4288 @example
4289 sine=220:4:d=5
4290 sine=f=220:b=4:d=5
4291 sine=frequency=220:beep_factor=4:duration=5
4292 @end example
4293
4294 @item
4295 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
4296 pattern:
4297 @example
4298 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
4299 @end example
4300 @end itemize
4301
4302 @c man end AUDIO SOURCES
4303
4304 @chapter Audio Sinks
4305 @c man begin AUDIO SINKS
4306
4307 Below is a description of the currently available audio sinks.
4308
4309 @section abuffersink
4310
4311 Buffer audio frames, and make them available to the end of filter chain.
4312
4313 This sink is mainly intended for programmatic use, in particular
4314 through the interface defined in @file{libavfilter/buffersink.h}
4315 or the options system.
4316
4317 It accepts a pointer to an AVABufferSinkContext structure, which
4318 defines the incoming buffers' formats, to be passed as the opaque
4319 parameter to @code{avfilter_init_filter} for initialization.
4320 @section anullsink
4321
4322 Null audio sink; do absolutely nothing with the input audio. It is
4323 mainly useful as a template and for use in analysis / debugging
4324 tools.
4325
4326 @c man end AUDIO SINKS
4327
4328 @chapter Video Filters
4329 @c man begin VIDEO FILTERS
4330
4331 When you configure your FFmpeg build, you can disable any of the
4332 existing filters using @code{--disable-filters}.
4333 The configure output will show the video filters included in your
4334 build.
4335
4336 Below is a description of the currently available video filters.
4337
4338 @section alphaextract
4339
4340 Extract the alpha component from the input as a grayscale video. This
4341 is especially useful with the @var{alphamerge} filter.
4342
4343 @section alphamerge
4344
4345 Add or replace the alpha component of the primary input with the
4346 grayscale value of a second input. This is intended for use with
4347 @var{alphaextract} to allow the transmission or storage of frame
4348 sequences that have alpha in a format that doesn't support an alpha
4349 channel.
4350
4351 For example, to reconstruct full frames from a normal YUV-encoded video
4352 and a separate video created with @var{alphaextract}, you might use:
4353 @example
4354 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
4355 @end example
4356
4357 Since this filter is designed for reconstruction, it operates on frame
4358 sequences without considering timestamps, and terminates when either
4359 input reaches end of stream. This will cause problems if your encoding
4360 pipeline drops frames. If you're trying to apply an image as an
4361 overlay to a video stream, consider the @var{overlay} filter instead.
4362
4363 @section ass
4364
4365 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
4366 and libavformat to work. On the other hand, it is limited to ASS (Advanced
4367 Substation Alpha) subtitles files.
4368
4369 This filter accepts the following option in addition to the common options from
4370 the @ref{subtitles} filter:
4371
4372 @table @option
4373 @item shaping
4374 Set the shaping engine
4375
4376 Available values are:
4377 @table @samp
4378 @item auto
4379 The default libass shaping engine, which is the best available.
4380 @item simple
4381 Fast, font-agnostic shaper that can do only substitutions
4382 @item complex
4383 Slower shaper using OpenType for substitutions and positioning
4384 @end table
4385
4386 The default is @code{auto}.
4387 @end table
4388
4389 @section atadenoise
4390 Apply an Adaptive Temporal Averaging Denoiser to the video input.
4391
4392 The filter accepts the following options:
4393
4394 @table @option
4395 @item 0a
4396 Set threshold A for 1st plane. Default is 0.02.
4397 Valid range is 0 to 0.3.
4398
4399 @item 0b
4400 Set threshold B for 1st plane. Default is 0.04.
4401 Valid range is 0 to 5.
4402
4403 @item 1a
4404 Set threshold A for 2nd plane. Default is 0.02.
4405 Valid range is 0 to 0.3.
4406
4407 @item 1b
4408 Set threshold B for 2nd plane. Default is 0.04.
4409 Valid range is 0 to 5.
4410
4411 @item 2a
4412 Set threshold A for 3rd plane. Default is 0.02.
4413 Valid range is 0 to 0.3.
4414
4415 @item 2b
4416 Set threshold B for 3rd plane. Default is 0.04.
4417 Valid range is 0 to 5.
4418
4419 Threshold A is designed to react on abrupt changes in the input signal and
4420 threshold B is designed to react on continuous changes in the input signal.
4421
4422 @item s
4423 Set number of frames filter will use for averaging. Default is 33. Must be odd
4424 number in range [5, 129].
4425
4426 @item p
4427 Set what planes of frame filter will use for averaging. Default is all.
4428 @end table
4429
4430 @section avgblur
4431
4432 Apply average blur filter.
4433
4434 The filter accepts the following options:
4435
4436 @table @option
4437 @item sizeX
4438 Set horizontal kernel size.
4439
4440 @item planes
4441 Set which planes to filter. By default all planes are filtered.
4442
4443 @item sizeY
4444 Set vertical kernel size, if zero it will be same as @code{sizeX}.
4445 Default is @code{0}.
4446 @end table
4447
4448 @section bbox
4449
4450 Compute the bounding box for the non-black pixels in the input frame
4451 luminance plane.
4452
4453 This filter computes the bounding box containing all the pixels with a
4454 luminance value greater than the minimum allowed value.
4455 The parameters describing the bounding box are printed on the filter
4456 log.
4457
4458 The filter accepts the following option:
4459
4460 @table @option
4461 @item min_val
4462 Set the minimal luminance value. Default is @code{16}.
4463 @end table
4464
4465 @section bitplanenoise
4466
4467 Show and measure bit plane noise.
4468
4469 The filter accepts the following options:
4470
4471 @table @option
4472 @item bitplane
4473 Set which plane to analyze. Default is @code{1}.
4474
4475 @item filter
4476 Filter out noisy pixels from @code{bitplane} set above.
4477 Default is disabled.
4478 @end table
4479
4480 @section blackdetect
4481
4482 Detect video intervals that are (almost) completely black. Can be
4483 useful to detect chapter transitions, commercials, or invalid
4484 recordings. Output lines contains the time for the start, end and
4485 duration of the detected black interval expressed in seconds.
4486
4487 In order to display the output lines, you need to set the loglevel at
4488 least to the AV_LOG_INFO value.
4489
4490 The filter accepts the following options:
4491
4492 @table @option
4493 @item black_min_duration, d
4494 Set the minimum detected black duration expressed in seconds. It must
4495 be a non-negative floating point number.
4496
4497 Default value is 2.0.
4498
4499 @item picture_black_ratio_th, pic_th
4500 Set the threshold for considering a picture "black".
4501 Express the minimum value for the ratio:
4502 @example
4503 @var{nb_black_pixels} / @var{nb_pixels}
4504 @end example
4505
4506 for which a picture is considered black.
4507 Default value is 0.98.
4508
4509 @item pixel_black_th, pix_th
4510 Set the threshold for considering a pixel "black".
4511
4512 The threshold expresses the maximum pixel luminance value for which a
4513 pixel is considered "black". The provided value is scaled according to
4514 the following equation:
4515 @example
4516 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
4517 @end example
4518
4519 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
4520 the input video format, the range is [0-255] for YUV full-range
4521 formats and [16-235] for YUV non full-range formats.
4522
4523 Default value is 0.10.
4524 @end table
4525
4526 The following example sets the maximum pixel threshold to the minimum
4527 value, and detects only black intervals of 2 or more seconds:
4528 @example
4529 blackdetect=d=2:pix_th=0.00
4530 @end example
4531
4532 @section blackframe
4533
4534 Detect frames that are (almost) completely black. Can be useful to
4535 detect chapter transitions or commercials. Output lines consist of
4536 the frame number of the detected frame, the percentage of blackness,
4537 the position in the file if known or -1 and the timestamp in seconds.
4538
4539 In order to display the output lines, you need to set the loglevel at
4540 least to the AV_LOG_INFO value.
4541
4542 It accepts the following parameters:
4543
4544 @table @option
4545
4546 @item amount
4547 The percentage of the pixels that have to be below the threshold; it defaults to
4548 @code{98}.
4549
4550 @item threshold, thresh
4551 The threshold below which a pixel value is considered black; it defaults to
4552 @code{32}.
4553
4554 @end table
4555
4556 @section blend, tblend
4557
4558 Blend two video frames into each other.
4559
4560 The @code{blend} filter takes two input streams and outputs one
4561 stream, the first input is the "top" layer and second input is
4562 "bottom" layer.  By default, the output terminates when the longest input terminates.
4563
4564 The @code{tblend} (time blend) filter takes two consecutive frames
4565 from one single stream, and outputs the result obtained by blending
4566 the new frame on top of the old frame.
4567
4568 A description of the accepted options follows.
4569
4570 @table @option
4571 @item c0_mode
4572 @item c1_mode
4573 @item c2_mode
4574 @item c3_mode
4575 @item all_mode
4576 Set blend mode for specific pixel component or all pixel components in case
4577 of @var{all_mode}. Default value is @code{normal}.
4578
4579 Available values for component modes are:
4580 @table @samp
4581 @item addition
4582 @item addition128
4583 @item and
4584 @item average
4585 @item burn
4586 @item darken
4587 @item difference
4588 @item difference128
4589 @item divide
4590 @item dodge
4591 @item freeze
4592 @item exclusion
4593 @item glow
4594 @item hardlight
4595 @item hardmix
4596 @item heat
4597 @item lighten
4598 @item linearlight
4599 @item multiply
4600 @item multiply128
4601 @item negation
4602 @item normal
4603 @item or
4604 @item overlay
4605 @item phoenix
4606 @item pinlight
4607 @item reflect
4608 @item screen
4609 @item softlight
4610 @item subtract
4611 @item vividlight
4612 @item xor
4613 @end table
4614
4615 @item c0_opacity
4616 @item c1_opacity
4617 @item c2_opacity
4618 @item c3_opacity
4619 @item all_opacity
4620 Set blend opacity for specific pixel component or all pixel components in case
4621 of @var{all_opacity}. Only used in combination with pixel component blend modes.
4622
4623 @item c0_expr
4624 @item c1_expr
4625 @item c2_expr
4626 @item c3_expr
4627 @item all_expr
4628 Set blend expression for specific pixel component or all pixel components in case
4629 of @var{all_expr}. Note that related mode options will be ignored if those are set.
4630
4631 The expressions can use the following variables:
4632
4633 @table @option
4634 @item N
4635 The sequential number of the filtered frame, starting from @code{0}.
4636
4637 @item X
4638 @item Y
4639 the coordinates of the current sample
4640
4641 @item W
4642 @item H
4643 the width and height of currently filtered plane
4644
4645 @item SW
4646 @item SH
4647 Width and height scale depending on the currently filtered plane. It is the
4648 ratio between the corresponding luma plane number of pixels and the current
4649 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
4650 @code{0.5,0.5} for chroma planes.
4651
4652 @item T
4653 Time of the current frame, expressed in seconds.
4654
4655 @item TOP, A
4656 Value of pixel component at current location for first video frame (top layer).
4657
4658 @item BOTTOM, B
4659 Value of pixel component at current location for second video frame (bottom layer).
4660 @end table
4661
4662 @item shortest
4663 Force termination when the shortest input terminates. Default is
4664 @code{0}. This option is only defined for the @code{blend} filter.
4665
4666 @item repeatlast
4667 Continue applying the last bottom frame after the end of the stream. A value of
4668 @code{0} disable the filter after the last frame of the bottom layer is reached.
4669 Default is @code{1}. This option is only defined for the @code{blend} filter.
4670 @end table
4671
4672 @subsection Examples
4673
4674 @itemize
4675 @item
4676 Apply transition from bottom layer to top layer in first 10 seconds:
4677 @example
4678 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
4679 @end example
4680
4681 @item
4682 Apply 1x1 checkerboard effect:
4683 @example
4684 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
4685 @end example
4686
4687 @item
4688 Apply uncover left effect:
4689 @example
4690 blend=all_expr='if(gte(N*SW+X,W),A,B)'
4691 @end example
4692
4693 @item
4694 Apply uncover down effect:
4695 @example
4696 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
4697 @end example
4698
4699 @item
4700 Apply uncover up-left effect:
4701 @example
4702 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
4703 @end example
4704
4705 @item
4706 Split diagonally video and shows top and bottom layer on each side:
4707 @example
4708 blend=all_expr=if(gt(X,Y*(W/H)),A,B)
4709 @end example
4710
4711 @item
4712 Display differences between the current and the previous frame:
4713 @example
4714 tblend=all_mode=difference128
4715 @end example
4716 @end itemize
4717
4718 @section boxblur
4719
4720 Apply a boxblur algorithm to the input video.
4721
4722 It accepts the following parameters:
4723
4724 @table @option
4725
4726 @item luma_radius, lr
4727 @item luma_power, lp
4728 @item chroma_radius, cr
4729 @item chroma_power, cp
4730 @item alpha_radius, ar
4731 @item alpha_power, ap
4732
4733 @end table
4734
4735 A description of the accepted options follows.
4736
4737 @table @option
4738 @item luma_radius, lr
4739 @item chroma_radius, cr
4740 @item alpha_radius, ar
4741 Set an expression for the box radius in pixels used for blurring the
4742 corresponding input plane.
4743
4744 The radius value must be a non-negative number, and must not be
4745 greater than the value of the expression @code{min(w,h)/2} for the
4746 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
4747 planes.
4748
4749 Default value for @option{luma_radius} is "2". If not specified,
4750 @option{chroma_radius} and @option{alpha_radius} default to the
4751 corresponding value set for @option{luma_radius}.
4752
4753 The expressions can contain the following constants:
4754 @table @option
4755 @item w
4756 @item h
4757 The input width and height in pixels.
4758
4759 @item cw
4760 @item ch
4761 The input chroma image width and height in pixels.
4762
4763 @item hsub
4764 @item vsub
4765 The horizontal and vertical chroma subsample values. For example, for the
4766 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
4767 @end table
4768
4769 @item luma_power, lp
4770 @item chroma_power, cp
4771 @item alpha_power, ap
4772 Specify how many times the boxblur filter is applied to the
4773 corresponding plane.
4774
4775 Default value for @option{luma_power} is 2. If not specified,
4776 @option{chroma_power} and @option{alpha_power} default to the
4777 corresponding value set for @option{luma_power}.
4778
4779 A value of 0 will disable the effect.
4780 @end table
4781
4782 @subsection Examples
4783
4784 @itemize
4785 @item
4786 Apply a boxblur filter with the luma, chroma, and alpha radii
4787 set to 2:
4788 @example
4789 boxblur=luma_radius=2:luma_power=1
4790 boxblur=2:1
4791 @end example
4792
4793 @item
4794 Set the luma radius to 2, and alpha and chroma radius to 0:
4795 @example
4796 boxblur=2:1:cr=0:ar=0
4797 @end example
4798
4799 @item
4800 Set the luma and chroma radii to a fraction of the video dimension:
4801 @example
4802 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
4803 @end example
4804 @end itemize
4805
4806 @section bwdif
4807
4808 Deinterlace the input video ("bwdif" stands for "Bob Weaver
4809 Deinterlacing Filter").
4810
4811 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
4812 interpolation algorithms.
4813 It accepts the following parameters:
4814
4815 @table @option
4816 @item mode
4817 The interlacing mode to adopt. It accepts one of the following values:
4818
4819 @table @option
4820 @item 0, send_frame
4821 Output one frame for each frame.
4822 @item 1, send_field
4823 Output one frame for each field.
4824 @end table
4825
4826 The default value is @code{send_field}.
4827
4828 @item parity
4829 The picture field parity assumed for the input interlaced video. It accepts one
4830 of the following values:
4831
4832 @table @option
4833 @item 0, tff
4834 Assume the top field is first.
4835 @item 1, bff
4836 Assume the bottom field is first.
4837 @item -1, auto
4838 Enable automatic detection of field parity.
4839 @end table
4840
4841 The default value is @code{auto}.
4842 If the interlacing is unknown or the decoder does not export this information,
4843 top field first will be assumed.
4844
4845 @item deint
4846 Specify which frames to deinterlace. Accept one of the following
4847 values:
4848
4849 @table @option
4850 @item 0, all
4851 Deinterlace all frames.
4852 @item 1, interlaced
4853 Only deinterlace frames marked as interlaced.
4854 @end table
4855
4856 The default value is @code{all}.
4857 @end table
4858
4859 @section chromakey
4860 YUV colorspace color/chroma keying.
4861
4862 The filter accepts the following options:
4863
4864 @table @option
4865 @item color
4866 The color which will be replaced with transparency.
4867
4868 @item similarity
4869 Similarity percentage with the key color.
4870
4871 0.01 matches only the exact key color, while 1.0 matches everything.
4872
4873 @item blend
4874 Blend percentage.
4875
4876 0.0 makes pixels either fully transparent, or not transparent at all.
4877
4878 Higher values result in semi-transparent pixels, with a higher transparency
4879 the more similar the pixels color is to the key color.
4880
4881 @item yuv
4882 Signals that the color passed is already in YUV instead of RGB.
4883
4884 Litteral colors like "green" or "red" don't make sense with this enabled anymore.
4885 This can be used to pass exact YUV values as hexadecimal numbers.
4886 @end table
4887
4888 @subsection Examples
4889
4890 @itemize
4891 @item
4892 Make every green pixel in the input image transparent:
4893 @example
4894 ffmpeg -i input.png -vf chromakey=green out.png
4895 @end example
4896
4897 @item
4898 Overlay a greenscreen-video on top of a static black background.
4899 @example
4900 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
4901 @end example
4902 @end itemize
4903
4904 @section ciescope
4905
4906 Display CIE color diagram with pixels overlaid onto it.
4907
4908 The filter accepts the following options:
4909
4910 @table @option
4911 @item system
4912 Set color system.
4913
4914 @table @samp
4915 @item ntsc, 470m
4916 @item ebu, 470bg
4917 @item smpte
4918 @item 240m
4919 @item apple
4920 @item widergb
4921 @item cie1931
4922 @item rec709, hdtv
4923 @item uhdtv, rec2020
4924 @end table
4925
4926 @item cie
4927 Set CIE system.
4928
4929 @table @samp
4930 @item xyy
4931 @item ucs
4932 @item luv
4933 @end table
4934
4935 @item gamuts
4936 Set what gamuts to draw.
4937
4938 See @code{system} option for available values.
4939
4940 @item size, s
4941 Set ciescope size, by default set to 512.
4942
4943 @item intensity, i
4944 Set intensity used to map input pixel values to CIE diagram.
4945
4946 @item contrast
4947 Set contrast used to draw tongue colors that are out of active color system gamut.
4948
4949 @item corrgamma
4950 Correct gamma displayed on scope, by default enabled.
4951
4952 @item showwhite
4953 Show white point on CIE diagram, by default disabled.
4954
4955 @item gamma
4956 Set input gamma. Used only with XYZ input color space.
4957 @end table
4958
4959 @section codecview
4960
4961 Visualize information exported by some codecs.
4962
4963 Some codecs can export information through frames using side-data or other
4964 means. For example, some MPEG based codecs export motion vectors through the
4965 @var{export_mvs} flag in the codec @option{flags2} option.
4966
4967 The filter accepts the following option:
4968
4969 @table @option
4970 @item mv
4971 Set motion vectors to visualize.
4972
4973 Available flags for @var{mv} are:
4974
4975 @table @samp
4976 @item pf
4977 forward predicted MVs of P-frames
4978 @item bf
4979 forward predicted MVs of B-frames
4980 @item bb
4981 backward predicted MVs of B-frames
4982 @end table
4983
4984 @item qp
4985 Display quantization parameters using the chroma planes.
4986
4987 @item mv_type, mvt
4988 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
4989
4990 Available flags for @var{mv_type} are:
4991
4992 @table @samp
4993 @item fp
4994 forward predicted MVs
4995 @item bp
4996 backward predicted MVs
4997 @end table
4998
4999 @item frame_type, ft
5000 Set frame type to visualize motion vectors of.
5001
5002 Available flags for @var{frame_type} are:
5003
5004 @table @samp
5005 @item if
5006 intra-coded frames (I-frames)
5007 @item pf
5008 predicted frames (P-frames)
5009 @item bf
5010 bi-directionally predicted frames (B-frames)
5011 @end table
5012 @end table
5013
5014 @subsection Examples
5015
5016 @itemize
5017 @item
5018 Visualize forward predicted MVs of all frames using @command{ffplay}:
5019 @example
5020 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
5021 @end example
5022
5023 @item
5024 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
5025 @example
5026 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
5027 @end example
5028 @end itemize
5029
5030 @section colorbalance
5031 Modify intensity of primary colors (red, green and blue) of input frames.
5032
5033 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
5034 regions for the red-cyan, green-magenta or blue-yellow balance.
5035
5036 A positive adjustment value shifts the balance towards the primary color, a negative
5037 value towards the complementary color.
5038
5039 The filter accepts the following options:
5040
5041 @table @option
5042 @item rs
5043 @item gs
5044 @item bs
5045 Adjust red, green and blue shadows (darkest pixels).
5046
5047 @item rm
5048 @item gm
5049 @item bm
5050 Adjust red, green and blue midtones (medium pixels).
5051
5052 @item rh
5053 @item gh
5054 @item bh
5055 Adjust red, green and blue highlights (brightest pixels).
5056
5057 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
5058 @end table
5059
5060 @subsection Examples
5061
5062 @itemize
5063 @item
5064 Add red color cast to shadows:
5065 @example
5066 colorbalance=rs=.3
5067 @end example
5068 @end itemize
5069
5070 @section colorkey
5071 RGB colorspace color keying.
5072
5073 The filter accepts the following options:
5074
5075 @table @option
5076 @item color
5077 The color which will be replaced with transparency.
5078
5079 @item similarity
5080 Similarity percentage with the key color.
5081
5082 0.01 matches only the exact key color, while 1.0 matches everything.
5083
5084 @item blend
5085 Blend percentage.
5086
5087 0.0 makes pixels either fully transparent, or not transparent at all.
5088
5089 Higher values result in semi-transparent pixels, with a higher transparency
5090 the more similar the pixels color is to the key color.
5091 @end table
5092
5093 @subsection Examples
5094
5095 @itemize
5096 @item
5097 Make every green pixel in the input image transparent:
5098 @example
5099 ffmpeg -i input.png -vf colorkey=green out.png
5100 @end example
5101
5102 @item
5103 Overlay a greenscreen-video on top of a static background image.
5104 @example
5105 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
5106 @end example
5107 @end itemize
5108
5109 @section colorlevels
5110
5111 Adjust video input frames using levels.
5112
5113 The filter accepts the following options:
5114
5115 @table @option
5116 @item rimin
5117 @item gimin
5118 @item bimin
5119 @item aimin
5120 Adjust red, green, blue and alpha input black point.
5121 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
5122
5123 @item rimax
5124 @item gimax
5125 @item bimax
5126 @item aimax
5127 Adjust red, green, blue and alpha input white point.
5128 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
5129
5130 Input levels are used to lighten highlights (bright tones), darken shadows
5131 (dark tones), change the balance of bright and dark tones.
5132
5133 @item romin
5134 @item gomin
5135 @item bomin
5136 @item aomin
5137 Adjust red, green, blue and alpha output black point.
5138 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
5139
5140 @item romax
5141 @item gomax
5142 @item bomax
5143 @item aomax
5144 Adjust red, green, blue and alpha output white point.
5145 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
5146
5147 Output levels allows manual selection of a constrained output level range.
5148 @end table
5149
5150 @subsection Examples
5151
5152 @itemize
5153 @item
5154 Make video output darker:
5155 @example
5156 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
5157 @end example
5158
5159 @item
5160 Increase contrast:
5161 @example
5162 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
5163 @end example
5164
5165 @item
5166 Make video output lighter:
5167 @example
5168 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
5169 @end example
5170
5171 @item
5172 Increase brightness:
5173 @example
5174 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
5175 @end example
5176 @end itemize
5177
5178 @section colorchannelmixer
5179
5180 Adjust video input frames by re-mixing color channels.
5181
5182 This filter modifies a color channel by adding the values associated to
5183 the other channels of the same pixels. For example if the value to
5184 modify is red, the output value will be:
5185 @example
5186 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
5187 @end example
5188
5189 The filter accepts the following options:
5190
5191 @table @option
5192 @item rr
5193 @item rg
5194 @item rb
5195 @item ra
5196 Adjust contribution of input red, green, blue and alpha channels for output red channel.
5197 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
5198
5199 @item gr
5200 @item gg
5201 @item gb
5202 @item ga
5203 Adjust contribution of input red, green, blue and alpha channels for output green channel.
5204 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
5205
5206 @item br
5207 @item bg
5208 @item bb
5209 @item ba
5210 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
5211 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
5212
5213 @item ar
5214 @item ag
5215 @item ab
5216 @item aa
5217 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
5218 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
5219
5220 Allowed ranges for options are @code{[-2.0, 2.0]}.
5221 @end table
5222
5223 @subsection Examples
5224
5225 @itemize
5226 @item
5227 Convert source to grayscale:
5228 @example
5229 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
5230 @end example
5231 @item
5232 Simulate sepia tones:
5233 @example
5234 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
5235 @end example
5236 @end itemize
5237
5238 @section colormatrix
5239
5240 Convert color matrix.
5241
5242 The filter accepts the following options:
5243
5244 @table @option
5245 @item src
5246 @item dst
5247 Specify the source and destination color matrix. Both values must be
5248 specified.
5249
5250 The accepted values are:
5251 @table @samp
5252 @item bt709
5253 BT.709
5254
5255 @item bt601
5256 BT.601
5257
5258 @item smpte240m
5259 SMPTE-240M
5260
5261 @item fcc
5262 FCC
5263
5264 @item bt2020
5265 BT.2020
5266 @end table
5267 @end table
5268
5269 For example to convert from BT.601 to SMPTE-240M, use the command:
5270 @example
5271 colormatrix=bt601:smpte240m
5272 @end example
5273
5274 @section colorspace
5275
5276 Convert colorspace, transfer characteristics or color primaries.
5277
5278 The filter accepts the following options:
5279
5280 @table @option
5281 @anchor{all}
5282 @item all
5283 Specify all color properties at once.
5284
5285 The accepted values are:
5286 @table @samp
5287 @item bt470m
5288 BT.470M
5289
5290 @item bt470bg
5291 BT.470BG
5292
5293 @item bt601-6-525
5294 BT.601-6 525
5295
5296 @item bt601-6-625
5297 BT.601-6 625
5298
5299 @item bt709
5300 BT.709
5301
5302 @item smpte170m
5303 SMPTE-170M
5304
5305 @item smpte240m
5306 SMPTE-240M
5307
5308 @item bt2020
5309 BT.2020
5310
5311 @end table
5312
5313 @anchor{space}
5314 @item space
5315 Specify output colorspace.
5316
5317 The accepted values are:
5318 @table @samp
5319 @item bt709
5320 BT.709
5321
5322 @item fcc
5323 FCC
5324
5325 @item bt470bg
5326 BT.470BG or BT.601-6 625
5327
5328 @item smpte170m
5329 SMPTE-170M or BT.601-6 525
5330
5331 @item smpte240m
5332 SMPTE-240M
5333
5334 @item bt2020ncl
5335 BT.2020 with non-constant luminance
5336
5337 @end table
5338
5339 @anchor{trc}
5340 @item trc
5341 Specify output transfer characteristics.
5342
5343 The accepted values are:
5344 @table @samp
5345 @item bt709
5346 BT.709
5347
5348 @item gamma22
5349 Constant gamma of 2.2
5350
5351 @item gamma28
5352 Constant gamma of 2.8
5353
5354 @item smpte170m
5355 SMPTE-170M, BT.601-6 625 or BT.601-6 525
5356
5357 @item smpte240m
5358 SMPTE-240M
5359
5360 @item bt2020-10
5361 BT.2020 for 10-bits content
5362
5363 @item bt2020-12
5364 BT.2020 for 12-bits content
5365
5366 @end table
5367
5368 @anchor{primaries}
5369 @item primaries
5370 Specify output color primaries.
5371
5372 The accepted values are:
5373 @table @samp
5374 @item bt709
5375 BT.709
5376
5377 @item bt470m
5378 BT.470M
5379
5380 @item bt470bg
5381 BT.470BG or BT.601-6 625
5382
5383 @item smpte170m
5384 SMPTE-170M or BT.601-6 525
5385
5386 @item smpte240m
5387 SMPTE-240M
5388
5389 @item bt2020
5390 BT.2020
5391
5392 @end table
5393
5394 @anchor{range}
5395 @item range
5396 Specify output color range.
5397
5398 The accepted values are:
5399 @table @samp
5400 @item mpeg
5401 MPEG (restricted) range
5402
5403 @item jpeg
5404 JPEG (full) range
5405
5406 @end table
5407
5408 @item format
5409 Specify output color format.
5410
5411 The accepted values are:
5412 @table @samp
5413 @item yuv420p
5414 YUV 4:2:0 planar 8-bits
5415
5416 @item yuv420p10
5417 YUV 4:2:0 planar 10-bits
5418
5419 @item yuv420p12
5420 YUV 4:2:0 planar 12-bits
5421
5422 @item yuv422p
5423 YUV 4:2:2 planar 8-bits
5424
5425 @item yuv422p10
5426 YUV 4:2:2 planar 10-bits
5427
5428 @item yuv422p12
5429 YUV 4:2:2 planar 12-bits
5430
5431 @item yuv444p
5432 YUV 4:4:4 planar 8-bits
5433
5434 @item yuv444p10
5435 YUV 4:4:4 planar 10-bits
5436
5437 @item yuv444p12
5438 YUV 4:4:4 planar 12-bits
5439
5440 @end table
5441
5442 @item fast
5443 Do a fast conversion, which skips gamma/primary correction. This will take
5444 significantly less CPU, but will be mathematically incorrect. To get output
5445 compatible with that produced by the colormatrix filter, use fast=1.
5446
5447 @item dither
5448 Specify dithering mode.
5449
5450 The accepted values are:
5451 @table @samp
5452 @item none
5453 No dithering
5454
5455 @item fsb
5456 Floyd-Steinberg dithering
5457 @end table
5458
5459 @item wpadapt
5460 Whitepoint adaptation mode.
5461
5462 The accepted values are:
5463 @table @samp
5464 @item bradford
5465 Bradford whitepoint adaptation
5466
5467 @item vonkries
5468 von Kries whitepoint adaptation
5469
5470 @item identity
5471 identity whitepoint adaptation (i.e. no whitepoint adaptation)
5472 @end table
5473
5474 @item iall
5475 Override all input properties at once. Same accepted values as @ref{all}.
5476
5477 @item ispace
5478 Override input colorspace. Same accepted values as @ref{space}.
5479
5480 @item iprimaries
5481 Override input color primaries. Same accepted values as @ref{primaries}.
5482
5483 @item itrc
5484 Override input transfer characteristics. Same accepted values as @ref{trc}.
5485
5486 @item irange
5487 Override input color range. Same accepted values as @ref{range}.
5488
5489 @end table
5490
5491 The filter converts the transfer characteristics, color space and color
5492 primaries to the specified user values. The output value, if not specified,
5493 is set to a default value based on the "all" property. If that property is
5494 also not specified, the filter will log an error. The output color range and
5495 format default to the same value as the input color range and format. The
5496 input transfer characteristics, color space, color primaries and color range
5497 should be set on the input data. If any of these are missing, the filter will
5498 log an error and no conversion will take place.
5499
5500 For example to convert the input to SMPTE-240M, use the command:
5501 @example
5502 colorspace=smpte240m
5503 @end example
5504
5505 @section convolution
5506
5507 Apply convolution 3x3 or 5x5 filter.
5508
5509 The filter accepts the following options:
5510
5511 @table @option
5512 @item 0m
5513 @item 1m
5514 @item 2m
5515 @item 3m
5516 Set matrix for each plane.
5517 Matrix is sequence of 9 or 25 signed integers.
5518
5519 @item 0rdiv
5520 @item 1rdiv
5521 @item 2rdiv
5522 @item 3rdiv
5523 Set multiplier for calculated value for each plane.
5524
5525 @item 0bias
5526 @item 1bias
5527 @item 2bias
5528 @item 3bias
5529 Set bias for each plane. This value is added to the result of the multiplication.
5530 Useful for making the overall image brighter or darker. Default is 0.0.
5531 @end table
5532
5533 @subsection Examples
5534
5535 @itemize
5536 @item
5537 Apply sharpen:
5538 @example
5539 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"
5540 @end example
5541
5542 @item
5543 Apply blur:
5544 @example
5545 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"
5546 @end example
5547
5548 @item
5549 Apply edge enhance:
5550 @example
5551 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"
5552 @end example
5553
5554 @item
5555 Apply edge detect:
5556 @example
5557 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"
5558 @end example
5559
5560 @item
5561 Apply emboss:
5562 @example
5563 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"
5564 @end example
5565 @end itemize
5566
5567 @section copy
5568
5569 Copy the input source unchanged to the output. This is mainly useful for
5570 testing purposes.
5571
5572 @anchor{coreimage}
5573 @section coreimage
5574 Video filtering on GPU using Apple's CoreImage API on OSX.
5575
5576 Hardware acceleration is based on an OpenGL context. Usually, this means it is
5577 processed by video hardware. However, software-based OpenGL implementations
5578 exist which means there is no guarantee for hardware processing. It depends on
5579 the respective OSX.
5580
5581 There are many filters and image generators provided by Apple that come with a
5582 large variety of options. The filter has to be referenced by its name along
5583 with its options.
5584
5585 The coreimage filter accepts the following options:
5586 @table @option
5587 @item list_filters
5588 List all available filters and generators along with all their respective
5589 options as well as possible minimum and maximum values along with the default
5590 values.
5591 @example
5592 list_filters=true
5593 @end example
5594
5595 @item filter
5596 Specify all filters by their respective name and options.
5597 Use @var{list_filters} to determine all valid filter names and options.
5598 Numerical options are specified by a float value and are automatically clamped
5599 to their respective value range.  Vector and color options have to be specified
5600 by a list of space separated float values. Character escaping has to be done.
5601 A special option name @code{default} is available to use default options for a
5602 filter.
5603
5604 It is required to specify either @code{default} or at least one of the filter options.
5605 All omitted options are used with their default values.
5606 The syntax of the filter string is as follows:
5607 @example
5608 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
5609 @end example
5610
5611 @item output_rect
5612 Specify a rectangle where the output of the filter chain is copied into the
5613 input image. It is given by a list of space separated float values:
5614 @example
5615 output_rect=x\ y\ width\ height
5616 @end example
5617 If not given, the output rectangle equals the dimensions of the input image.
5618 The output rectangle is automatically cropped at the borders of the input
5619 image. Negative values are valid for each component.
5620 @example
5621 output_rect=25\ 25\ 100\ 100
5622 @end example
5623 @end table
5624
5625 Several filters can be chained for successive processing without GPU-HOST
5626 transfers allowing for fast processing of complex filter chains.
5627 Currently, only filters with zero (generators) or exactly one (filters) input
5628 image and one output image are supported. Also, transition filters are not yet
5629 usable as intended.
5630
5631 Some filters generate output images with additional padding depending on the
5632 respective filter kernel. The padding is automatically removed to ensure the
5633 filter output has the same size as the input image.
5634
5635 For image generators, the size of the output image is determined by the
5636 previous output image of the filter chain or the input image of the whole
5637 filterchain, respectively. The generators do not use the pixel information of
5638 this image to generate their output. However, the generated output is
5639 blended onto this image, resulting in partial or complete coverage of the
5640 output image.
5641
5642 The @ref{coreimagesrc} video source can be used for generating input images
5643 which are directly fed into the filter chain. By using it, providing input
5644 images by another video source or an input video is not required.
5645
5646 @subsection Examples
5647
5648 @itemize
5649
5650 @item
5651 List all filters available:
5652 @example
5653 coreimage=list_filters=true
5654 @end example
5655
5656 @item
5657 Use the CIBoxBlur filter with default options to blur an image:
5658 @example
5659 coreimage=filter=CIBoxBlur@@default
5660 @end example
5661
5662 @item
5663 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
5664 its center at 100x100 and a radius of 50 pixels:
5665 @example
5666 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
5667 @end example
5668
5669 @item
5670 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
5671 given as complete and escaped command-line for Apple's standard bash shell:
5672 @example
5673 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
5674 @end example
5675 @end itemize
5676
5677 @section crop
5678
5679 Crop the input video to given dimensions.
5680
5681 It accepts the following parameters:
5682
5683 @table @option
5684 @item w, out_w
5685 The width of the output video. It defaults to @code{iw}.
5686 This expression is evaluated only once during the filter
5687 configuration, or when the @samp{w} or @samp{out_w} command is sent.
5688
5689 @item h, out_h
5690 The height of the output video. It defaults to @code{ih}.
5691 This expression is evaluated only once during the filter
5692 configuration, or when the @samp{h} or @samp{out_h} command is sent.
5693
5694 @item x
5695 The horizontal position, in the input video, of the left edge of the output
5696 video. It defaults to @code{(in_w-out_w)/2}.
5697 This expression is evaluated per-frame.
5698
5699 @item y
5700 The vertical position, in the input video, of the top edge of the output video.
5701 It defaults to @code{(in_h-out_h)/2}.
5702 This expression is evaluated per-frame.
5703
5704 @item keep_aspect
5705 If set to 1 will force the output display aspect ratio
5706 to be the same of the input, by changing the output sample aspect
5707 ratio. It defaults to 0.
5708
5709 @item exact
5710 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
5711 width/height/x/y as specified and will not be rounded to nearest smaller value.
5712 It defaults to 0.
5713 @end table
5714
5715 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
5716 expressions containing the following constants:
5717
5718 @table @option
5719 @item x
5720 @item y
5721 The computed values for @var{x} and @var{y}. They are evaluated for
5722 each new frame.
5723
5724 @item in_w
5725 @item in_h
5726 The input width and height.
5727
5728 @item iw
5729 @item ih
5730 These are the same as @var{in_w} and @var{in_h}.
5731
5732 @item out_w
5733 @item out_h
5734 The output (cropped) width and height.
5735
5736 @item ow
5737 @item oh
5738 These are the same as @var{out_w} and @var{out_h}.
5739
5740 @item a
5741 same as @var{iw} / @var{ih}
5742
5743 @item sar
5744 input sample aspect ratio
5745
5746 @item dar
5747 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
5748
5749 @item hsub
5750 @item vsub
5751 horizontal and vertical chroma subsample values. For example for the
5752 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
5753
5754 @item n
5755 The number of the input frame, starting from 0.
5756
5757 @item pos
5758 the position in the file of the input frame, NAN if unknown
5759
5760 @item t
5761 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
5762
5763 @end table
5764
5765 The expression for @var{out_w} may depend on the value of @var{out_h},
5766 and the expression for @var{out_h} may depend on @var{out_w}, but they
5767 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
5768 evaluated after @var{out_w} and @var{out_h}.
5769
5770 The @var{x} and @var{y} parameters specify the expressions for the
5771 position of the top-left corner of the output (non-cropped) area. They
5772 are evaluated for each frame. If the evaluated value is not valid, it
5773 is approximated to the nearest valid value.
5774
5775 The expression for @var{x} may depend on @var{y}, and the expression
5776 for @var{y} may depend on @var{x}.
5777
5778 @subsection Examples
5779
5780 @itemize
5781 @item
5782 Crop area with size 100x100 at position (12,34).
5783 @example
5784 crop=100:100:12:34
5785 @end example
5786
5787 Using named options, the example above becomes:
5788 @example
5789 crop=w=100:h=100:x=12:y=34
5790 @end example
5791
5792 @item
5793 Crop the central input area with size 100x100:
5794 @example
5795 crop=100:100
5796 @end example
5797
5798 @item
5799 Crop the central input area with size 2/3 of the input video:
5800 @example
5801 crop=2/3*in_w:2/3*in_h
5802 @end example
5803
5804 @item
5805 Crop the input video central square:
5806 @example
5807 crop=out_w=in_h
5808 crop=in_h
5809 @end example
5810
5811 @item
5812 Delimit the rectangle with the top-left corner placed at position
5813 100:100 and the right-bottom corner corresponding to the right-bottom
5814 corner of the input image.
5815 @example
5816 crop=in_w-100:in_h-100:100:100
5817 @end example
5818
5819 @item
5820 Crop 10 pixels from the left and right borders, and 20 pixels from
5821 the top and bottom borders
5822 @example
5823 crop=in_w-2*10:in_h-2*20
5824 @end example
5825
5826 @item
5827 Keep only the bottom right quarter of the input image:
5828 @example
5829 crop=in_w/2:in_h/2:in_w/2:in_h/2
5830 @end example
5831
5832 @item
5833 Crop height for getting Greek harmony:
5834 @example
5835 crop=in_w:1/PHI*in_w
5836 @end example
5837
5838 @item
5839 Apply trembling effect:
5840 @example
5841 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)
5842 @end example
5843
5844 @item
5845 Apply erratic camera effect depending on timestamp:
5846 @example
5847 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)"
5848 @end example
5849
5850 @item
5851 Set x depending on the value of y:
5852 @example
5853 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
5854 @end example
5855 @end itemize
5856
5857 @subsection Commands
5858
5859 This filter supports the following commands:
5860 @table @option
5861 @item w, out_w
5862 @item h, out_h
5863 @item x
5864 @item y
5865 Set width/height of the output video and the horizontal/vertical position
5866 in the input video.
5867 The command accepts the same syntax of the corresponding option.
5868
5869 If the specified expression is not valid, it is kept at its current
5870 value.
5871 @end table
5872
5873 @section cropdetect
5874
5875 Auto-detect the crop size.
5876
5877 It calculates the necessary cropping parameters and prints the
5878 recommended parameters via the logging system. The detected dimensions
5879 correspond to the non-black area of the input video.
5880
5881 It accepts the following parameters:
5882
5883 @table @option
5884
5885 @item limit
5886 Set higher black value threshold, which can be optionally specified
5887 from nothing (0) to everything (255 for 8-bit based formats). An intensity
5888 value greater to the set value is considered non-black. It defaults to 24.
5889 You can also specify a value between 0.0 and 1.0 which will be scaled depending
5890 on the bitdepth of the pixel format.
5891
5892 @item round
5893 The value which the width/height should be divisible by. It defaults to
5894 16. The offset is automatically adjusted to center the video. Use 2 to
5895 get only even dimensions (needed for 4:2:2 video). 16 is best when
5896 encoding to most video codecs.
5897
5898 @item reset_count, reset
5899 Set the counter that determines after how many frames cropdetect will
5900 reset the previously detected largest video area and start over to
5901 detect the current optimal crop area. Default value is 0.
5902
5903 This can be useful when channel logos distort the video area. 0
5904 indicates 'never reset', and returns the largest area encountered during
5905 playback.
5906 @end table
5907
5908 @anchor{curves}
5909 @section curves
5910
5911 Apply color adjustments using curves.
5912
5913 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
5914 component (red, green and blue) has its values defined by @var{N} key points
5915 tied from each other using a smooth curve. The x-axis represents the pixel
5916 values from the input frame, and the y-axis the new pixel values to be set for
5917 the output frame.
5918
5919 By default, a component curve is defined by the two points @var{(0;0)} and
5920 @var{(1;1)}. This creates a straight line where each original pixel value is
5921 "adjusted" to its own value, which means no change to the image.
5922
5923 The filter allows you to redefine these two points and add some more. A new
5924 curve (using a natural cubic spline interpolation) will be define to pass
5925 smoothly through all these new coordinates. The new defined points needs to be
5926 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
5927 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
5928 the vector spaces, the values will be clipped accordingly.
5929
5930 The filter accepts the following options:
5931
5932 @table @option
5933 @item preset
5934 Select one of the available color presets. This option can be used in addition
5935 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
5936 options takes priority on the preset values.
5937 Available presets are:
5938 @table @samp
5939 @item none
5940 @item color_negative
5941 @item cross_process
5942 @item darker
5943 @item increase_contrast
5944 @item lighter
5945 @item linear_contrast
5946 @item medium_contrast
5947 @item negative
5948 @item strong_contrast
5949 @item vintage
5950 @end table
5951 Default is @code{none}.
5952 @item master, m
5953 Set the master key points. These points will define a second pass mapping. It
5954 is sometimes called a "luminance" or "value" mapping. It can be used with
5955 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
5956 post-processing LUT.
5957 @item red, r
5958 Set the key points for the red component.
5959 @item green, g
5960 Set the key points for the green component.
5961 @item blue, b
5962 Set the key points for the blue component.
5963 @item all
5964 Set the key points for all components (not including master).
5965 Can be used in addition to the other key points component
5966 options. In this case, the unset component(s) will fallback on this
5967 @option{all} setting.
5968 @item psfile
5969 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
5970 @item plot
5971 Save Gnuplot script of the curves in specified file.
5972 @end table
5973
5974 To avoid some filtergraph syntax conflicts, each key points list need to be
5975 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
5976
5977 @subsection Examples
5978
5979 @itemize
5980 @item
5981 Increase slightly the middle level of blue:
5982 @example
5983 curves=blue='0/0 0.5/0.58 1/1'
5984 @end example
5985
5986 @item
5987 Vintage effect:
5988 @example
5989 curves=r='0/0.11 .42/.51 1/0.95':g='0/0 0.50/0.48 1/1':b='0/0.22 .49/.44 1/0.8'
5990 @end example
5991 Here we obtain the following coordinates for each components:
5992 @table @var
5993 @item red
5994 @code{(0;0.11) (0.42;0.51) (1;0.95)}
5995 @item green
5996 @code{(0;0) (0.50;0.48) (1;1)}
5997 @item blue
5998 @code{(0;0.22) (0.49;0.44) (1;0.80)}
5999 @end table
6000
6001 @item
6002 The previous example can also be achieved with the associated built-in preset:
6003 @example
6004 curves=preset=vintage
6005 @end example
6006
6007 @item
6008 Or simply:
6009 @example
6010 curves=vintage
6011 @end example
6012
6013 @item
6014 Use a Photoshop preset and redefine the points of the green component:
6015 @example
6016 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
6017 @end example
6018
6019 @item
6020 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
6021 and @command{gnuplot}:
6022 @example
6023 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
6024 gnuplot -p /tmp/curves.plt
6025 @end example
6026 @end itemize
6027
6028 @section datascope
6029
6030 Video data analysis filter.
6031
6032 This filter shows hexadecimal pixel values of part of video.
6033
6034 The filter accepts the following options:
6035
6036 @table @option
6037 @item size, s
6038 Set output video size.
6039
6040 @item x
6041 Set x offset from where to pick pixels.
6042
6043 @item y
6044 Set y offset from where to pick pixels.
6045
6046 @item mode
6047 Set scope mode, can be one of the following:
6048 @table @samp
6049 @item mono
6050 Draw hexadecimal pixel values with white color on black background.
6051
6052 @item color
6053 Draw hexadecimal pixel values with input video pixel color on black
6054 background.
6055
6056 @item color2
6057 Draw hexadecimal pixel values on color background picked from input video,
6058 the text color is picked in such way so its always visible.
6059 @end table
6060
6061 @item axis
6062 Draw rows and columns numbers on left and top of video.
6063
6064 @item opacity
6065 Set background opacity.
6066 @end table
6067
6068 @section dctdnoiz
6069
6070 Denoise frames using 2D DCT (frequency domain filtering).
6071
6072 This filter is not designed for real time.
6073
6074 The filter accepts the following options:
6075
6076 @table @option
6077 @item sigma, s
6078 Set the noise sigma constant.
6079
6080 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
6081 coefficient (absolute value) below this threshold with be dropped.
6082
6083 If you need a more advanced filtering, see @option{expr}.
6084
6085 Default is @code{0}.
6086
6087 @item overlap
6088 Set number overlapping pixels for each block. Since the filter can be slow, you
6089 may want to reduce this value, at the cost of a less effective filter and the
6090 risk of various artefacts.
6091
6092 If the overlapping value doesn't permit processing the whole input width or
6093 height, a warning will be displayed and according borders won't be denoised.
6094
6095 Default value is @var{blocksize}-1, which is the best possible setting.
6096
6097 @item expr, e
6098 Set the coefficient factor expression.
6099
6100 For each coefficient of a DCT block, this expression will be evaluated as a
6101 multiplier value for the coefficient.
6102
6103 If this is option is set, the @option{sigma} option will be ignored.
6104
6105 The absolute value of the coefficient can be accessed through the @var{c}
6106 variable.
6107
6108 @item n
6109 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
6110 @var{blocksize}, which is the width and height of the processed blocks.
6111
6112 The default value is @var{3} (8x8) and can be raised to @var{4} for a
6113 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
6114 on the speed processing. Also, a larger block size does not necessarily means a
6115 better de-noising.
6116 @end table
6117
6118 @subsection Examples
6119
6120 Apply a denoise with a @option{sigma} of @code{4.5}:
6121 @example
6122 dctdnoiz=4.5
6123 @end example
6124
6125 The same operation can be achieved using the expression system:
6126 @example
6127 dctdnoiz=e='gte(c, 4.5*3)'
6128 @end example
6129
6130 Violent denoise using a block size of @code{16x16}:
6131 @example
6132 dctdnoiz=15:n=4
6133 @end example
6134
6135 @section deband
6136
6137 Remove banding artifacts from input video.
6138 It works by replacing banded pixels with average value of referenced pixels.
6139
6140 The filter accepts the following options:
6141
6142 @table @option
6143 @item 1thr
6144 @item 2thr
6145 @item 3thr
6146 @item 4thr
6147 Set banding detection threshold for each plane. Default is 0.02.
6148 Valid range is 0.00003 to 0.5.
6149 If difference between current pixel and reference pixel is less than threshold,
6150 it will be considered as banded.
6151
6152 @item range, r
6153 Banding detection range in pixels. Default is 16. If positive, random number
6154 in range 0 to set value will be used. If negative, exact absolute value
6155 will be used.
6156 The range defines square of four pixels around current pixel.
6157
6158 @item direction, d
6159 Set direction in radians from which four pixel will be compared. If positive,
6160 random direction from 0 to set direction will be picked. If negative, exact of
6161 absolute value will be picked. For example direction 0, -PI or -2*PI radians
6162 will pick only pixels on same row and -PI/2 will pick only pixels on same
6163 column.
6164
6165 @item blur
6166 If enabled, current pixel is compared with average value of all four
6167 surrounding pixels. The default is enabled. If disabled current pixel is
6168 compared with all four surrounding pixels. The pixel is considered banded
6169 if only all four differences with surrounding pixels are less than threshold.
6170 @end table
6171
6172 @anchor{decimate}
6173 @section decimate
6174
6175 Drop duplicated frames at regular intervals.
6176
6177 The filter accepts the following options:
6178
6179 @table @option
6180 @item cycle
6181 Set the number of frames from which one will be dropped. Setting this to
6182 @var{N} means one frame in every batch of @var{N} frames will be dropped.
6183 Default is @code{5}.
6184
6185 @item dupthresh
6186 Set the threshold for duplicate detection. If the difference metric for a frame
6187 is less than or equal to this value, then it is declared as duplicate. Default
6188 is @code{1.1}
6189
6190 @item scthresh
6191 Set scene change threshold. Default is @code{15}.
6192
6193 @item blockx
6194 @item blocky
6195 Set the size of the x and y-axis blocks used during metric calculations.
6196 Larger blocks give better noise suppression, but also give worse detection of
6197 small movements. Must be a power of two. Default is @code{32}.
6198
6199 @item ppsrc
6200 Mark main input as a pre-processed input and activate clean source input
6201 stream. This allows the input to be pre-processed with various filters to help
6202 the metrics calculation while keeping the frame selection lossless. When set to
6203 @code{1}, the first stream is for the pre-processed input, and the second
6204 stream is the clean source from where the kept frames are chosen. Default is
6205 @code{0}.
6206
6207 @item chroma
6208 Set whether or not chroma is considered in the metric calculations. Default is
6209 @code{1}.
6210 @end table
6211
6212 @section deflate
6213
6214 Apply deflate effect to the video.
6215
6216 This filter replaces the pixel by the local(3x3) average by taking into account
6217 only values lower than the pixel.
6218
6219 It accepts the following options:
6220
6221 @table @option
6222 @item threshold0
6223 @item threshold1
6224 @item threshold2
6225 @item threshold3
6226 Limit the maximum change for each plane, default is 65535.
6227 If 0, plane will remain unchanged.
6228 @end table
6229
6230 @section dejudder
6231
6232 Remove judder produced by partially interlaced telecined content.
6233
6234 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
6235 source was partially telecined content then the output of @code{pullup,dejudder}
6236 will have a variable frame rate. May change the recorded frame rate of the
6237 container. Aside from that change, this filter will not affect constant frame
6238 rate video.
6239
6240 The option available in this filter is:
6241 @table @option
6242
6243 @item cycle
6244 Specify the length of the window over which the judder repeats.
6245
6246 Accepts any integer greater than 1. Useful values are:
6247 @table @samp
6248
6249 @item 4
6250 If the original was telecined from 24 to 30 fps (Film to NTSC).
6251
6252 @item 5
6253 If the original was telecined from 25 to 30 fps (PAL to NTSC).
6254
6255 @item 20
6256 If a mixture of the two.
6257 @end table
6258
6259 The default is @samp{4}.
6260 @end table
6261
6262 @section delogo
6263
6264 Suppress a TV station logo by a simple interpolation of the surrounding
6265 pixels. Just set a rectangle covering the logo and watch it disappear
6266 (and sometimes something even uglier appear - your mileage may vary).
6267
6268 It accepts the following parameters:
6269 @table @option
6270
6271 @item x
6272 @item y
6273 Specify the top left corner coordinates of the logo. They must be
6274 specified.
6275
6276 @item w
6277 @item h
6278 Specify the width and height of the logo to clear. They must be
6279 specified.
6280
6281 @item band, t
6282 Specify the thickness of the fuzzy edge of the rectangle (added to
6283 @var{w} and @var{h}). The default value is 1. This option is
6284 deprecated, setting higher values should no longer be necessary and
6285 is not recommended.
6286
6287 @item show
6288 When set to 1, a green rectangle is drawn on the screen to simplify
6289 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
6290 The default value is 0.
6291
6292 The rectangle is drawn on the outermost pixels which will be (partly)
6293 replaced with interpolated values. The values of the next pixels
6294 immediately outside this rectangle in each direction will be used to
6295 compute the interpolated pixel values inside the rectangle.
6296
6297 @end table
6298
6299 @subsection Examples
6300
6301 @itemize
6302 @item
6303 Set a rectangle covering the area with top left corner coordinates 0,0
6304 and size 100x77, and a band of size 10:
6305 @example
6306 delogo=x=0:y=0:w=100:h=77:band=10
6307 @end example
6308
6309 @end itemize
6310
6311 @section deshake
6312
6313 Attempt to fix small changes in horizontal and/or vertical shift. This
6314 filter helps remove camera shake from hand-holding a camera, bumping a
6315 tripod, moving on a vehicle, etc.
6316
6317 The filter accepts the following options:
6318
6319 @table @option
6320
6321 @item x
6322 @item y
6323 @item w
6324 @item h
6325 Specify a rectangular area where to limit the search for motion
6326 vectors.
6327 If desired the search for motion vectors can be limited to a
6328 rectangular area of the frame defined by its top left corner, width
6329 and height. These parameters have the same meaning as the drawbox
6330 filter which can be used to visualise the position of the bounding
6331 box.
6332
6333 This is useful when simultaneous movement of subjects within the frame
6334 might be confused for camera motion by the motion vector search.
6335
6336 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
6337 then the full frame is used. This allows later options to be set
6338 without specifying the bounding box for the motion vector search.
6339
6340 Default - search the whole frame.
6341
6342 @item rx
6343 @item ry
6344 Specify the maximum extent of movement in x and y directions in the
6345 range 0-64 pixels. Default 16.
6346
6347 @item edge
6348 Specify how to generate pixels to fill blanks at the edge of the
6349 frame. Available values are:
6350 @table @samp
6351 @item blank, 0
6352 Fill zeroes at blank locations
6353 @item original, 1
6354 Original image at blank locations
6355 @item clamp, 2
6356 Extruded edge value at blank locations
6357 @item mirror, 3
6358 Mirrored edge at blank locations
6359 @end table
6360 Default value is @samp{mirror}.
6361
6362 @item blocksize
6363 Specify the blocksize to use for motion search. Range 4-128 pixels,
6364 default 8.
6365
6366 @item contrast
6367 Specify the contrast threshold for blocks. Only blocks with more than
6368 the specified contrast (difference between darkest and lightest
6369 pixels) will be considered. Range 1-255, default 125.
6370
6371 @item search
6372 Specify the search strategy. Available values are:
6373 @table @samp
6374 @item exhaustive, 0
6375 Set exhaustive search
6376 @item less, 1
6377 Set less exhaustive search.
6378 @end table
6379 Default value is @samp{exhaustive}.
6380
6381 @item filename
6382 If set then a detailed log of the motion search is written to the
6383 specified file.
6384
6385 @item opencl
6386 If set to 1, specify using OpenCL capabilities, only available if
6387 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
6388
6389 @end table
6390
6391 @section detelecine
6392
6393 Apply an exact inverse of the telecine operation. It requires a predefined
6394 pattern specified using the pattern option which must be the same as that passed
6395 to the telecine filter.
6396
6397 This filter accepts the following options:
6398
6399 @table @option
6400 @item first_field
6401 @table @samp
6402 @item top, t
6403 top field first
6404 @item bottom, b
6405 bottom field first
6406 The default value is @code{top}.
6407 @end table
6408
6409 @item pattern
6410 A string of numbers representing the pulldown pattern you wish to apply.
6411 The default value is @code{23}.
6412
6413 @item start_frame
6414 A number representing position of the first frame with respect to the telecine
6415 pattern. This is to be used if the stream is cut. The default value is @code{0}.
6416 @end table
6417
6418 @section dilation
6419
6420 Apply dilation effect to the video.
6421
6422 This filter replaces the pixel by the local(3x3) maximum.
6423
6424 It accepts the following options:
6425
6426 @table @option
6427 @item threshold0
6428 @item threshold1
6429 @item threshold2
6430 @item threshold3
6431 Limit the maximum change for each plane, default is 65535.
6432 If 0, plane will remain unchanged.
6433
6434 @item coordinates
6435 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
6436 pixels are used.
6437
6438 Flags to local 3x3 coordinates maps like this:
6439
6440     1 2 3
6441     4   5
6442     6 7 8
6443 @end table
6444
6445 @section displace
6446
6447 Displace pixels as indicated by second and third input stream.
6448
6449 It takes three input streams and outputs one stream, the first input is the
6450 source, and second and third input are displacement maps.
6451
6452 The second input specifies how much to displace pixels along the
6453 x-axis, while the third input specifies how much to displace pixels
6454 along the y-axis.
6455 If one of displacement map streams terminates, last frame from that
6456 displacement map will be used.
6457
6458 Note that once generated, displacements maps can be reused over and over again.
6459
6460 A description of the accepted options follows.
6461
6462 @table @option
6463 @item edge
6464 Set displace behavior for pixels that are out of range.
6465
6466 Available values are:
6467 @table @samp
6468 @item blank
6469 Missing pixels are replaced by black pixels.
6470
6471 @item smear
6472 Adjacent pixels will spread out to replace missing pixels.
6473
6474 @item wrap
6475 Out of range pixels are wrapped so they point to pixels of other side.
6476 @end table
6477 Default is @samp{smear}.
6478
6479 @end table
6480
6481 @subsection Examples
6482
6483 @itemize
6484 @item
6485 Add ripple effect to rgb input of video size hd720:
6486 @example
6487 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
6488 @end example
6489
6490 @item
6491 Add wave effect to rgb input of video size hd720:
6492 @example
6493 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
6494 @end example
6495 @end itemize
6496
6497 @section drawbox
6498
6499 Draw a colored box on the input image.
6500
6501 It accepts the following parameters:
6502
6503 @table @option
6504 @item x
6505 @item y
6506 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
6507
6508 @item width, w
6509 @item height, h
6510 The expressions which specify the width and height of the box; if 0 they are interpreted as
6511 the input width and height. It defaults to 0.
6512
6513 @item color, c
6514 Specify the color of the box to write. For the general syntax of this option,
6515 check the "Color" section in the ffmpeg-utils manual. If the special
6516 value @code{invert} is used, the box edge color is the same as the
6517 video with inverted luma.
6518
6519 @item thickness, t
6520 The expression which sets the thickness of the box edge. Default value is @code{3}.
6521
6522 See below for the list of accepted constants.
6523 @end table
6524
6525 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
6526 following constants:
6527
6528 @table @option
6529 @item dar
6530 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
6531
6532 @item hsub
6533 @item vsub
6534 horizontal and vertical chroma subsample values. For example for the
6535 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6536
6537 @item in_h, ih
6538 @item in_w, iw
6539 The input width and height.
6540
6541 @item sar
6542 The input sample aspect ratio.
6543
6544 @item x
6545 @item y
6546 The x and y offset coordinates where the box is drawn.
6547
6548 @item w
6549 @item h
6550 The width and height of the drawn box.
6551
6552 @item t
6553 The thickness of the drawn box.
6554
6555 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
6556 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
6557
6558 @end table
6559
6560 @subsection Examples
6561
6562 @itemize
6563 @item
6564 Draw a black box around the edge of the input image:
6565 @example
6566 drawbox
6567 @end example
6568
6569 @item
6570 Draw a box with color red and an opacity of 50%:
6571 @example
6572 drawbox=10:20:200:60:red@@0.5
6573 @end example
6574
6575 The previous example can be specified as:
6576 @example
6577 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
6578 @end example
6579
6580 @item
6581 Fill the box with pink color:
6582 @example
6583 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=max
6584 @end example
6585
6586 @item
6587 Draw a 2-pixel red 2.40:1 mask:
6588 @example
6589 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
6590 @end example
6591 @end itemize
6592
6593 @section drawgrid
6594
6595 Draw a grid on the input image.
6596
6597 It accepts the following parameters:
6598
6599 @table @option
6600 @item x
6601 @item y
6602 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
6603
6604 @item width, w
6605 @item height, h
6606 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
6607 input width and height, respectively, minus @code{thickness}, so image gets
6608 framed. Default to 0.
6609
6610 @item color, c
6611 Specify the color of the grid. For the general syntax of this option,
6612 check the "Color" section in the ffmpeg-utils manual. If the special
6613 value @code{invert} is used, the grid color is the same as the
6614 video with inverted luma.
6615
6616 @item thickness, t
6617 The expression which sets the thickness of the grid line. Default value is @code{1}.
6618
6619 See below for the list of accepted constants.
6620 @end table
6621
6622 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
6623 following constants:
6624
6625 @table @option
6626 @item dar
6627 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
6628
6629 @item hsub
6630 @item vsub
6631 horizontal and vertical chroma subsample values. For example for the
6632 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6633
6634 @item in_h, ih
6635 @item in_w, iw
6636 The input grid cell width and height.
6637
6638 @item sar
6639 The input sample aspect ratio.
6640
6641 @item x
6642 @item y
6643 The x and y coordinates of some point of grid intersection (meant to configure offset).
6644
6645 @item w
6646 @item h
6647 The width and height of the drawn cell.
6648
6649 @item t
6650 The thickness of the drawn cell.
6651
6652 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
6653 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
6654
6655 @end table
6656
6657 @subsection Examples
6658
6659 @itemize
6660 @item
6661 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
6662 @example
6663 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
6664 @end example
6665
6666 @item
6667 Draw a white 3x3 grid with an opacity of 50%:
6668 @example
6669 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
6670 @end example
6671 @end itemize
6672
6673 @anchor{drawtext}
6674 @section drawtext
6675
6676 Draw a text string or text from a specified file on top of a video, using the
6677 libfreetype library.
6678
6679 To enable compilation of this filter, you need to configure FFmpeg with
6680 @code{--enable-libfreetype}.
6681 To enable default font fallback and the @var{font} option you need to
6682 configure FFmpeg with @code{--enable-libfontconfig}.
6683 To enable the @var{text_shaping} option, you need to configure FFmpeg with
6684 @code{--enable-libfribidi}.
6685
6686 @subsection Syntax
6687
6688 It accepts the following parameters:
6689
6690 @table @option
6691
6692 @item box
6693 Used to draw a box around text using the background color.
6694 The value must be either 1 (enable) or 0 (disable).
6695 The default value of @var{box} is 0.
6696
6697 @item boxborderw
6698 Set the width of the border to be drawn around the box using @var{boxcolor}.
6699 The default value of @var{boxborderw} is 0.
6700
6701 @item boxcolor
6702 The color to be used for drawing box around text. For the syntax of this
6703 option, check the "Color" section in the ffmpeg-utils manual.
6704
6705 The default value of @var{boxcolor} is "white".
6706
6707 @item borderw
6708 Set the width of the border to be drawn around the text using @var{bordercolor}.
6709 The default value of @var{borderw} is 0.
6710
6711 @item bordercolor
6712 Set the color to be used for drawing border around text. For the syntax of this
6713 option, check the "Color" section in the ffmpeg-utils manual.
6714
6715 The default value of @var{bordercolor} is "black".
6716
6717 @item expansion
6718 Select how the @var{text} is expanded. Can be either @code{none},
6719 @code{strftime} (deprecated) or
6720 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
6721 below for details.
6722
6723 @item fix_bounds
6724 If true, check and fix text coords to avoid clipping.
6725
6726 @item fontcolor
6727 The color to be used for drawing fonts. For the syntax of this option, check
6728 the "Color" section in the ffmpeg-utils manual.
6729
6730 The default value of @var{fontcolor} is "black".
6731
6732 @item fontcolor_expr
6733 String which is expanded the same way as @var{text} to obtain dynamic
6734 @var{fontcolor} value. By default this option has empty value and is not
6735 processed. When this option is set, it overrides @var{fontcolor} option.
6736
6737 @item font
6738 The font family to be used for drawing text. By default Sans.
6739
6740 @item fontfile
6741 The font file to be used for drawing text. The path must be included.
6742 This parameter is mandatory if the fontconfig support is disabled.
6743
6744 @item draw
6745 This option does not exist, please see the timeline system
6746
6747 @item alpha
6748 Draw the text applying alpha blending. The value can
6749 be a number between 0.0 and 1.0.
6750 The expression accepts the same variables @var{x, y} as well.
6751 The default value is 1.
6752 Please see @var{fontcolor_expr}.
6753
6754 @item fontsize
6755 The font size to be used for drawing text.
6756 The default value of @var{fontsize} is 16.
6757
6758 @item text_shaping
6759 If set to 1, attempt to shape the text (for example, reverse the order of
6760 right-to-left text and join Arabic characters) before drawing it.
6761 Otherwise, just draw the text exactly as given.
6762 By default 1 (if supported).
6763
6764 @item ft_load_flags
6765 The flags to be used for loading the fonts.
6766
6767 The flags map the corresponding flags supported by libfreetype, and are
6768 a combination of the following values:
6769 @table @var
6770 @item default
6771 @item no_scale
6772 @item no_hinting
6773 @item render
6774 @item no_bitmap
6775 @item vertical_layout
6776 @item force_autohint
6777 @item crop_bitmap
6778 @item pedantic
6779 @item ignore_global_advance_width
6780 @item no_recurse
6781 @item ignore_transform
6782 @item monochrome
6783 @item linear_design
6784 @item no_autohint
6785 @end table
6786
6787 Default value is "default".
6788
6789 For more information consult the documentation for the FT_LOAD_*
6790 libfreetype flags.
6791
6792 @item shadowcolor
6793 The color to be used for drawing a shadow behind the drawn text. For the
6794 syntax of this option, check the "Color" section in the ffmpeg-utils manual.
6795
6796 The default value of @var{shadowcolor} is "black".
6797
6798 @item shadowx
6799 @item shadowy
6800 The x and y offsets for the text shadow position with respect to the
6801 position of the text. They can be either positive or negative
6802 values. The default value for both is "0".
6803
6804 @item start_number
6805 The starting frame number for the n/frame_num variable. The default value
6806 is "0".
6807
6808 @item tabsize
6809 The size in number of spaces to use for rendering the tab.
6810 Default value is 4.
6811
6812 @item timecode
6813 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
6814 format. It can be used with or without text parameter. @var{timecode_rate}
6815 option must be specified.
6816
6817 @item timecode_rate, rate, r
6818 Set the timecode frame rate (timecode only).
6819
6820 @item text
6821 The text string to be drawn. The text must be a sequence of UTF-8
6822 encoded characters.
6823 This parameter is mandatory if no file is specified with the parameter
6824 @var{textfile}.
6825
6826 @item textfile
6827 A text file containing text to be drawn. The text must be a sequence
6828 of UTF-8 encoded characters.
6829
6830 This parameter is mandatory if no text string is specified with the
6831 parameter @var{text}.
6832
6833 If both @var{text} and @var{textfile} are specified, an error is thrown.
6834
6835 @item reload
6836 If set to 1, the @var{textfile} will be reloaded before each frame.
6837 Be sure to update it atomically, or it may be read partially, or even fail.
6838
6839 @item x
6840 @item y
6841 The expressions which specify the offsets where text will be drawn
6842 within the video frame. They are relative to the top/left border of the
6843 output image.
6844
6845 The default value of @var{x} and @var{y} is "0".
6846
6847 See below for the list of accepted constants and functions.
6848 @end table
6849
6850 The parameters for @var{x} and @var{y} are expressions containing the
6851 following constants and functions:
6852
6853 @table @option
6854 @item dar
6855 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
6856
6857 @item hsub
6858 @item vsub
6859 horizontal and vertical chroma subsample values. For example for the
6860 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6861
6862 @item line_h, lh
6863 the height of each text line
6864
6865 @item main_h, h, H
6866 the input height
6867
6868 @item main_w, w, W
6869 the input width
6870
6871 @item max_glyph_a, ascent
6872 the maximum distance from the baseline to the highest/upper grid
6873 coordinate used to place a glyph outline point, for all the rendered
6874 glyphs.
6875 It is a positive value, due to the grid's orientation with the Y axis
6876 upwards.
6877
6878 @item max_glyph_d, descent
6879 the maximum distance from the baseline to the lowest grid coordinate
6880 used to place a glyph outline point, for all the rendered glyphs.
6881 This is a negative value, due to the grid's orientation, with the Y axis
6882 upwards.
6883
6884 @item max_glyph_h
6885 maximum glyph height, that is the maximum height for all the glyphs
6886 contained in the rendered text, it is equivalent to @var{ascent} -
6887 @var{descent}.
6888
6889 @item max_glyph_w
6890 maximum glyph width, that is the maximum width for all the glyphs
6891 contained in the rendered text
6892
6893 @item n
6894 the number of input frame, starting from 0
6895
6896 @item rand(min, max)
6897 return a random number included between @var{min} and @var{max}
6898
6899 @item sar
6900 The input sample aspect ratio.
6901
6902 @item t
6903 timestamp expressed in seconds, NAN if the input timestamp is unknown
6904
6905 @item text_h, th
6906 the height of the rendered text
6907
6908 @item text_w, tw
6909 the width of the rendered text
6910
6911 @item x
6912 @item y
6913 the x and y offset coordinates where the text is drawn.
6914
6915 These parameters allow the @var{x} and @var{y} expressions to refer
6916 each other, so you can for example specify @code{y=x/dar}.
6917 @end table
6918
6919 @anchor{drawtext_expansion}
6920 @subsection Text expansion
6921
6922 If @option{expansion} is set to @code{strftime},
6923 the filter recognizes strftime() sequences in the provided text and
6924 expands them accordingly. Check the documentation of strftime(). This
6925 feature is deprecated.
6926
6927 If @option{expansion} is set to @code{none}, the text is printed verbatim.
6928
6929 If @option{expansion} is set to @code{normal} (which is the default),
6930 the following expansion mechanism is used.
6931
6932 The backslash character @samp{\}, followed by any character, always expands to
6933 the second character.
6934
6935 Sequences of the form @code{%@{...@}} are expanded. The text between the
6936 braces is a function name, possibly followed by arguments separated by ':'.
6937 If the arguments contain special characters or delimiters (':' or '@}'),
6938 they should be escaped.
6939
6940 Note that they probably must also be escaped as the value for the
6941 @option{text} option in the filter argument string and as the filter
6942 argument in the filtergraph description, and possibly also for the shell,
6943 that makes up to four levels of escaping; using a text file avoids these
6944 problems.
6945
6946 The following functions are available:
6947
6948 @table @command
6949
6950 @item expr, e
6951 The expression evaluation result.
6952
6953 It must take one argument specifying the expression to be evaluated,
6954 which accepts the same constants and functions as the @var{x} and
6955 @var{y} values. Note that not all constants should be used, for
6956 example the text size is not known when evaluating the expression, so
6957 the constants @var{text_w} and @var{text_h} will have an undefined
6958 value.
6959
6960 @item expr_int_format, eif
6961 Evaluate the expression's value and output as formatted integer.
6962
6963 The first argument is the expression to be evaluated, just as for the @var{expr} function.
6964 The second argument specifies the output format. Allowed values are @samp{x},
6965 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
6966 @code{printf} function.
6967 The third parameter is optional and sets the number of positions taken by the output.
6968 It can be used to add padding with zeros from the left.
6969
6970 @item gmtime
6971 The time at which the filter is running, expressed in UTC.
6972 It can accept an argument: a strftime() format string.
6973
6974 @item localtime
6975 The time at which the filter is running, expressed in the local time zone.
6976 It can accept an argument: a strftime() format string.
6977
6978 @item metadata
6979 Frame metadata. Takes one or two arguments.
6980
6981 The first argument is mandatory and specifies the metadata key.
6982
6983 The second argument is optional and specifies a default value, used when the
6984 metadata key is not found or empty.
6985
6986 @item n, frame_num
6987 The frame number, starting from 0.
6988
6989 @item pict_type
6990 A 1 character description of the current picture type.
6991
6992 @item pts
6993 The timestamp of the current frame.
6994 It can take up to three arguments.
6995
6996 The first argument is the format of the timestamp; it defaults to @code{flt}
6997 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
6998 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
6999 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
7000 @code{localtime} stands for the timestamp of the frame formatted as
7001 local time zone time.
7002
7003 The second argument is an offset added to the timestamp.
7004
7005 If the format is set to @code{localtime} or @code{gmtime},
7006 a third argument may be supplied: a strftime() format string.
7007 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
7008 @end table
7009
7010 @subsection Examples
7011
7012 @itemize
7013 @item
7014 Draw "Test Text" with font FreeSerif, using the default values for the
7015 optional parameters.
7016
7017 @example
7018 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
7019 @end example
7020
7021 @item
7022 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
7023 and y=50 (counting from the top-left corner of the screen), text is
7024 yellow with a red box around it. Both the text and the box have an
7025 opacity of 20%.
7026
7027 @example
7028 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
7029           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
7030 @end example
7031
7032 Note that the double quotes are not necessary if spaces are not used
7033 within the parameter list.
7034
7035 @item
7036 Show the text at the center of the video frame:
7037 @example
7038 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
7039 @end example
7040
7041 @item
7042 Show the text at a random position, switching to a new position every 30 seconds:
7043 @example
7044 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=if(eq(mod(t\,30)\,0)\,rand(0\,(w-text_w))\,x):y=if(eq(mod(t\,30)\,0)\,rand(0\,(h-text_h))\,y)"
7045 @end example
7046
7047 @item
7048 Show a text line sliding from right to left in the last row of the video
7049 frame. The file @file{LONG_LINE} is assumed to contain a single line
7050 with no newlines.
7051 @example
7052 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
7053 @end example
7054
7055 @item
7056 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
7057 @example
7058 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
7059 @end example
7060
7061 @item
7062 Draw a single green letter "g", at the center of the input video.
7063 The glyph baseline is placed at half screen height.
7064 @example
7065 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
7066 @end example
7067
7068 @item
7069 Show text for 1 second every 3 seconds:
7070 @example
7071 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
7072 @end example
7073
7074 @item
7075 Use fontconfig to set the font. Note that the colons need to be escaped.
7076 @example
7077 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
7078 @end example
7079
7080 @item
7081 Print the date of a real-time encoding (see strftime(3)):
7082 @example
7083 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
7084 @end example
7085
7086 @item
7087 Show text fading in and out (appearing/disappearing):
7088 @example
7089 #!/bin/sh
7090 DS=1.0 # display start
7091 DE=10.0 # display end
7092 FID=1.5 # fade in duration
7093 FOD=5 # fade out duration
7094 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 @}"
7095 @end example
7096
7097 @end itemize
7098
7099 For more information about libfreetype, check:
7100 @url{http://www.freetype.org/}.
7101
7102 For more information about fontconfig, check:
7103 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
7104
7105 For more information about libfribidi, check:
7106 @url{http://fribidi.org/}.
7107
7108 @section edgedetect
7109
7110 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
7111
7112 The filter accepts the following options:
7113
7114 @table @option
7115 @item low
7116 @item high
7117 Set low and high threshold values used by the Canny thresholding
7118 algorithm.
7119
7120 The high threshold selects the "strong" edge pixels, which are then
7121 connected through 8-connectivity with the "weak" edge pixels selected
7122 by the low threshold.
7123
7124 @var{low} and @var{high} threshold values must be chosen in the range
7125 [0,1], and @var{low} should be lesser or equal to @var{high}.
7126
7127 Default value for @var{low} is @code{20/255}, and default value for @var{high}
7128 is @code{50/255}.
7129
7130 @item mode
7131 Define the drawing mode.
7132
7133 @table @samp
7134 @item wires
7135 Draw white/gray wires on black background.
7136
7137 @item colormix
7138 Mix the colors to create a paint/cartoon effect.
7139 @end table
7140
7141 Default value is @var{wires}.
7142 @end table
7143
7144 @subsection Examples
7145
7146 @itemize
7147 @item
7148 Standard edge detection with custom values for the hysteresis thresholding:
7149 @example
7150 edgedetect=low=0.1:high=0.4
7151 @end example
7152
7153 @item
7154 Painting effect without thresholding:
7155 @example
7156 edgedetect=mode=colormix:high=0
7157 @end example
7158 @end itemize
7159
7160 @section eq
7161 Set brightness, contrast, saturation and approximate gamma adjustment.
7162
7163 The filter accepts the following options:
7164
7165 @table @option
7166 @item contrast
7167 Set the contrast expression. The value must be a float value in range
7168 @code{-2.0} to @code{2.0}. The default value is "1".
7169
7170 @item brightness
7171 Set the brightness expression. The value must be a float value in
7172 range @code{-1.0} to @code{1.0}. The default value is "0".
7173
7174 @item saturation
7175 Set the saturation expression. The value must be a float in
7176 range @code{0.0} to @code{3.0}. The default value is "1".
7177
7178 @item gamma
7179 Set the gamma expression. The value must be a float in range
7180 @code{0.1} to @code{10.0}.  The default value is "1".
7181
7182 @item gamma_r
7183 Set the gamma expression for red. The value must be a float in
7184 range @code{0.1} to @code{10.0}. The default value is "1".
7185
7186 @item gamma_g
7187 Set the gamma expression for green. The value must be a float in range
7188 @code{0.1} to @code{10.0}. The default value is "1".
7189
7190 @item gamma_b
7191 Set the gamma expression for blue. The value must be a float in range
7192 @code{0.1} to @code{10.0}. The default value is "1".
7193
7194 @item gamma_weight
7195 Set the gamma weight expression. It can be used to reduce the effect
7196 of a high gamma value on bright image areas, e.g. keep them from
7197 getting overamplified and just plain white. The value must be a float
7198 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
7199 gamma correction all the way down while @code{1.0} leaves it at its
7200 full strength. Default is "1".
7201
7202 @item eval
7203 Set when the expressions for brightness, contrast, saturation and
7204 gamma expressions are evaluated.
7205
7206 It accepts the following values:
7207 @table @samp
7208 @item init
7209 only evaluate expressions once during the filter initialization or
7210 when a command is processed
7211
7212 @item frame
7213 evaluate expressions for each incoming frame
7214 @end table
7215
7216 Default value is @samp{init}.
7217 @end table
7218
7219 The expressions accept the following parameters:
7220 @table @option
7221 @item n
7222 frame count of the input frame starting from 0
7223
7224 @item pos
7225 byte position of the corresponding packet in the input file, NAN if
7226 unspecified
7227
7228 @item r
7229 frame rate of the input video, NAN if the input frame rate is unknown
7230
7231 @item t
7232 timestamp expressed in seconds, NAN if the input timestamp is unknown
7233 @end table
7234
7235 @subsection Commands
7236 The filter supports the following commands:
7237
7238 @table @option
7239 @item contrast
7240 Set the contrast expression.
7241
7242 @item brightness
7243 Set the brightness expression.
7244
7245 @item saturation
7246 Set the saturation expression.
7247
7248 @item gamma
7249 Set the gamma expression.
7250
7251 @item gamma_r
7252 Set the gamma_r expression.
7253
7254 @item gamma_g
7255 Set gamma_g expression.
7256
7257 @item gamma_b
7258 Set gamma_b expression.
7259
7260 @item gamma_weight
7261 Set gamma_weight expression.
7262
7263 The command accepts the same syntax of the corresponding option.
7264
7265 If the specified expression is not valid, it is kept at its current
7266 value.
7267
7268 @end table
7269
7270 @section erosion
7271
7272 Apply erosion effect to the video.
7273
7274 This filter replaces the pixel by the local(3x3) minimum.
7275
7276 It accepts the following options:
7277
7278 @table @option
7279 @item threshold0
7280 @item threshold1
7281 @item threshold2
7282 @item threshold3
7283 Limit the maximum change for each plane, default is 65535.
7284 If 0, plane will remain unchanged.
7285
7286 @item coordinates
7287 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
7288 pixels are used.
7289
7290 Flags to local 3x3 coordinates maps like this:
7291
7292     1 2 3
7293     4   5
7294     6 7 8
7295 @end table
7296
7297 @section extractplanes
7298
7299 Extract color channel components from input video stream into
7300 separate grayscale video streams.
7301
7302 The filter accepts the following option:
7303
7304 @table @option
7305 @item planes
7306 Set plane(s) to extract.
7307
7308 Available values for planes are:
7309 @table @samp
7310 @item y
7311 @item u
7312 @item v
7313 @item a
7314 @item r
7315 @item g
7316 @item b
7317 @end table
7318
7319 Choosing planes not available in the input will result in an error.
7320 That means you cannot select @code{r}, @code{g}, @code{b} planes
7321 with @code{y}, @code{u}, @code{v} planes at same time.
7322 @end table
7323
7324 @subsection Examples
7325
7326 @itemize
7327 @item
7328 Extract luma, u and v color channel component from input video frame
7329 into 3 grayscale outputs:
7330 @example
7331 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
7332 @end example
7333 @end itemize
7334
7335 @section elbg
7336
7337 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
7338
7339 For each input image, the filter will compute the optimal mapping from
7340 the input to the output given the codebook length, that is the number
7341 of distinct output colors.
7342
7343 This filter accepts the following options.
7344
7345 @table @option
7346 @item codebook_length, l
7347 Set codebook length. The value must be a positive integer, and
7348 represents the number of distinct output colors. Default value is 256.
7349
7350 @item nb_steps, n
7351 Set the maximum number of iterations to apply for computing the optimal
7352 mapping. The higher the value the better the result and the higher the
7353 computation time. Default value is 1.
7354
7355 @item seed, s
7356 Set a random seed, must be an integer included between 0 and
7357 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
7358 will try to use a good random seed on a best effort basis.
7359
7360 @item pal8
7361 Set pal8 output pixel format. This option does not work with codebook
7362 length greater than 256.
7363 @end table
7364
7365 @section fade
7366
7367 Apply a fade-in/out effect to the input video.
7368
7369 It accepts the following parameters:
7370
7371 @table @option
7372 @item type, t
7373 The effect type can be either "in" for a fade-in, or "out" for a fade-out
7374 effect.
7375 Default is @code{in}.
7376
7377 @item start_frame, s
7378 Specify the number of the frame to start applying the fade
7379 effect at. Default is 0.
7380
7381 @item nb_frames, n
7382 The number of frames that the fade effect lasts. At the end of the
7383 fade-in effect, the output video will have the same intensity as the input video.
7384 At the end of the fade-out transition, the output video will be filled with the
7385 selected @option{color}.
7386 Default is 25.
7387
7388 @item alpha
7389 If set to 1, fade only alpha channel, if one exists on the input.
7390 Default value is 0.
7391
7392 @item start_time, st
7393 Specify the timestamp (in seconds) of the frame to start to apply the fade
7394 effect. If both start_frame and start_time are specified, the fade will start at
7395 whichever comes last.  Default is 0.
7396
7397 @item duration, d
7398 The number of seconds for which the fade effect has to last. At the end of the
7399 fade-in effect the output video will have the same intensity as the input video,
7400 at the end of the fade-out transition the output video will be filled with the
7401 selected @option{color}.
7402 If both duration and nb_frames are specified, duration is used. Default is 0
7403 (nb_frames is used by default).
7404
7405 @item color, c
7406 Specify the color of the fade. Default is "black".
7407 @end table
7408
7409 @subsection Examples
7410
7411 @itemize
7412 @item
7413 Fade in the first 30 frames of video:
7414 @example
7415 fade=in:0:30
7416 @end example
7417
7418 The command above is equivalent to:
7419 @example
7420 fade=t=in:s=0:n=30
7421 @end example
7422
7423 @item
7424 Fade out the last 45 frames of a 200-frame video:
7425 @example
7426 fade=out:155:45
7427 fade=type=out:start_frame=155:nb_frames=45
7428 @end example
7429
7430 @item
7431 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
7432 @example
7433 fade=in:0:25, fade=out:975:25
7434 @end example
7435
7436 @item
7437 Make the first 5 frames yellow, then fade in from frame 5-24:
7438 @example
7439 fade=in:5:20:color=yellow
7440 @end example
7441
7442 @item
7443 Fade in alpha over first 25 frames of video:
7444 @example
7445 fade=in:0:25:alpha=1
7446 @end example
7447
7448 @item
7449 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
7450 @example
7451 fade=t=in:st=5.5:d=0.5
7452 @end example
7453
7454 @end itemize
7455
7456 @section fftfilt
7457 Apply arbitrary expressions to samples in frequency domain
7458
7459 @table @option
7460 @item dc_Y
7461 Adjust the dc value (gain) of the luma plane of the image. The filter
7462 accepts an integer value in range @code{0} to @code{1000}. The default
7463 value is set to @code{0}.
7464
7465 @item dc_U
7466 Adjust the dc value (gain) of the 1st chroma plane of the image. The
7467 filter accepts an integer value in range @code{0} to @code{1000}. The
7468 default value is set to @code{0}.
7469
7470 @item dc_V
7471 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
7472 filter accepts an integer value in range @code{0} to @code{1000}. The
7473 default value is set to @code{0}.
7474
7475 @item weight_Y
7476 Set the frequency domain weight expression for the luma plane.
7477
7478 @item weight_U
7479 Set the frequency domain weight expression for the 1st chroma plane.
7480
7481 @item weight_V
7482 Set the frequency domain weight expression for the 2nd chroma plane.
7483
7484 The filter accepts the following variables:
7485 @item X
7486 @item Y
7487 The coordinates of the current sample.
7488
7489 @item W
7490 @item H
7491 The width and height of the image.
7492 @end table
7493
7494 @subsection Examples
7495
7496 @itemize
7497 @item
7498 High-pass:
7499 @example
7500 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
7501 @end example
7502
7503 @item
7504 Low-pass:
7505 @example
7506 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
7507 @end example
7508
7509 @item
7510 Sharpen:
7511 @example
7512 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
7513 @end example
7514
7515 @item
7516 Blur:
7517 @example
7518 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
7519 @end example
7520
7521 @end itemize
7522
7523 @section field
7524
7525 Extract a single field from an interlaced image using stride
7526 arithmetic to avoid wasting CPU time. The output frames are marked as
7527 non-interlaced.
7528
7529 The filter accepts the following options:
7530
7531 @table @option
7532 @item type
7533 Specify whether to extract the top (if the value is @code{0} or
7534 @code{top}) or the bottom field (if the value is @code{1} or
7535 @code{bottom}).
7536 @end table
7537
7538 @section fieldhint
7539
7540 Create new frames by copying the top and bottom fields from surrounding frames
7541 supplied as numbers by the hint file.
7542
7543 @table @option
7544 @item hint
7545 Set file containing hints: absolute/relative frame numbers.
7546
7547 There must be one line for each frame in a clip. Each line must contain two
7548 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
7549 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
7550 is current frame number for @code{absolute} mode or out of [-1, 1] range
7551 for @code{relative} mode. First number tells from which frame to pick up top
7552 field and second number tells from which frame to pick up bottom field.
7553
7554 If optionally followed by @code{+} output frame will be marked as interlaced,
7555 else if followed by @code{-} output frame will be marked as progressive, else
7556 it will be marked same as input frame.
7557 If line starts with @code{#} or @code{;} that line is skipped.
7558
7559 @item mode
7560 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
7561 @end table
7562
7563 Example of first several lines of @code{hint} file for @code{relative} mode:
7564 @example
7565 0,0 - # first frame
7566 1,0 - # second frame, use third's frame top field and second's frame bottom field
7567 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
7568 1,0 -
7569 0,0 -
7570 0,0 -
7571 1,0 -
7572 1,0 -
7573 1,0 -
7574 0,0 -
7575 0,0 -
7576 1,0 -
7577 1,0 -
7578 1,0 -
7579 0,0 -
7580 @end example
7581
7582 @section fieldmatch
7583
7584 Field matching filter for inverse telecine. It is meant to reconstruct the
7585 progressive frames from a telecined stream. The filter does not drop duplicated
7586 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
7587 followed by a decimation filter such as @ref{decimate} in the filtergraph.
7588
7589 The separation of the field matching and the decimation is notably motivated by
7590 the possibility of inserting a de-interlacing filter fallback between the two.
7591 If the source has mixed telecined and real interlaced content,
7592 @code{fieldmatch} will not be able to match fields for the interlaced parts.
7593 But these remaining combed frames will be marked as interlaced, and thus can be
7594 de-interlaced by a later filter such as @ref{yadif} before decimation.
7595
7596 In addition to the various configuration options, @code{fieldmatch} can take an
7597 optional second stream, activated through the @option{ppsrc} option. If
7598 enabled, the frames reconstruction will be based on the fields and frames from
7599 this second stream. This allows the first input to be pre-processed in order to
7600 help the various algorithms of the filter, while keeping the output lossless
7601 (assuming the fields are matched properly). Typically, a field-aware denoiser,
7602 or brightness/contrast adjustments can help.
7603
7604 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
7605 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
7606 which @code{fieldmatch} is based on. While the semantic and usage are very
7607 close, some behaviour and options names can differ.
7608
7609 The @ref{decimate} filter currently only works for constant frame rate input.
7610 If your input has mixed telecined (30fps) and progressive content with a lower
7611 framerate like 24fps use the following filterchain to produce the necessary cfr
7612 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
7613
7614 The filter accepts the following options:
7615
7616 @table @option
7617 @item order
7618 Specify the assumed field order of the input stream. Available values are:
7619
7620 @table @samp
7621 @item auto
7622 Auto detect parity (use FFmpeg's internal parity value).
7623 @item bff
7624 Assume bottom field first.
7625 @item tff
7626 Assume top field first.
7627 @end table
7628
7629 Note that it is sometimes recommended not to trust the parity announced by the
7630 stream.
7631
7632 Default value is @var{auto}.
7633
7634 @item mode
7635 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
7636 sense that it won't risk creating jerkiness due to duplicate frames when
7637 possible, but if there are bad edits or blended fields it will end up
7638 outputting combed frames when a good match might actually exist. On the other
7639 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
7640 but will almost always find a good frame if there is one. The other values are
7641 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
7642 jerkiness and creating duplicate frames versus finding good matches in sections
7643 with bad edits, orphaned fields, blended fields, etc.
7644
7645 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
7646
7647 Available values are:
7648
7649 @table @samp
7650 @item pc
7651 2-way matching (p/c)
7652 @item pc_n
7653 2-way matching, and trying 3rd match if still combed (p/c + n)
7654 @item pc_u
7655 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
7656 @item pc_n_ub
7657 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
7658 still combed (p/c + n + u/b)
7659 @item pcn
7660 3-way matching (p/c/n)
7661 @item pcn_ub
7662 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
7663 detected as combed (p/c/n + u/b)
7664 @end table
7665
7666 The parenthesis at the end indicate the matches that would be used for that
7667 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
7668 @var{top}).
7669
7670 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
7671 the slowest.
7672
7673 Default value is @var{pc_n}.
7674
7675 @item ppsrc
7676 Mark the main input stream as a pre-processed input, and enable the secondary
7677 input stream as the clean source to pick the fields from. See the filter
7678 introduction for more details. It is similar to the @option{clip2} feature from
7679 VFM/TFM.
7680
7681 Default value is @code{0} (disabled).
7682
7683 @item field
7684 Set the field to match from. It is recommended to set this to the same value as
7685 @option{order} unless you experience matching failures with that setting. In
7686 certain circumstances changing the field that is used to match from can have a
7687 large impact on matching performance. Available values are:
7688
7689 @table @samp
7690 @item auto
7691 Automatic (same value as @option{order}).
7692 @item bottom
7693 Match from the bottom field.
7694 @item top
7695 Match from the top field.
7696 @end table
7697
7698 Default value is @var{auto}.
7699
7700 @item mchroma
7701 Set whether or not chroma is included during the match comparisons. In most
7702 cases it is recommended to leave this enabled. You should set this to @code{0}
7703 only if your clip has bad chroma problems such as heavy rainbowing or other
7704 artifacts. Setting this to @code{0} could also be used to speed things up at
7705 the cost of some accuracy.
7706
7707 Default value is @code{1}.
7708
7709 @item y0
7710 @item y1
7711 These define an exclusion band which excludes the lines between @option{y0} and
7712 @option{y1} from being included in the field matching decision. An exclusion
7713 band can be used to ignore subtitles, a logo, or other things that may
7714 interfere with the matching. @option{y0} sets the starting scan line and
7715 @option{y1} sets the ending line; all lines in between @option{y0} and
7716 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
7717 @option{y0} and @option{y1} to the same value will disable the feature.
7718 @option{y0} and @option{y1} defaults to @code{0}.
7719
7720 @item scthresh
7721 Set the scene change detection threshold as a percentage of maximum change on
7722 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
7723 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
7724 @option{scthresh} is @code{[0.0, 100.0]}.
7725
7726 Default value is @code{12.0}.
7727
7728 @item combmatch
7729 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
7730 account the combed scores of matches when deciding what match to use as the
7731 final match. Available values are:
7732
7733 @table @samp
7734 @item none
7735 No final matching based on combed scores.
7736 @item sc
7737 Combed scores are only used when a scene change is detected.
7738 @item full
7739 Use combed scores all the time.
7740 @end table
7741
7742 Default is @var{sc}.
7743
7744 @item combdbg
7745 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
7746 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
7747 Available values are:
7748
7749 @table @samp
7750 @item none
7751 No forced calculation.
7752 @item pcn
7753 Force p/c/n calculations.
7754 @item pcnub
7755 Force p/c/n/u/b calculations.
7756 @end table
7757
7758 Default value is @var{none}.
7759
7760 @item cthresh
7761 This is the area combing threshold used for combed frame detection. This
7762 essentially controls how "strong" or "visible" combing must be to be detected.
7763 Larger values mean combing must be more visible and smaller values mean combing
7764 can be less visible or strong and still be detected. Valid settings are from
7765 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
7766 be detected as combed). This is basically a pixel difference value. A good
7767 range is @code{[8, 12]}.
7768
7769 Default value is @code{9}.
7770
7771 @item chroma
7772 Sets whether or not chroma is considered in the combed frame decision.  Only
7773 disable this if your source has chroma problems (rainbowing, etc.) that are
7774 causing problems for the combed frame detection with chroma enabled. Actually,
7775 using @option{chroma}=@var{0} is usually more reliable, except for the case
7776 where there is chroma only combing in the source.
7777
7778 Default value is @code{0}.
7779
7780 @item blockx
7781 @item blocky
7782 Respectively set the x-axis and y-axis size of the window used during combed
7783 frame detection. This has to do with the size of the area in which
7784 @option{combpel} pixels are required to be detected as combed for a frame to be
7785 declared combed. See the @option{combpel} parameter description for more info.
7786 Possible values are any number that is a power of 2 starting at 4 and going up
7787 to 512.
7788
7789 Default value is @code{16}.
7790
7791 @item combpel
7792 The number of combed pixels inside any of the @option{blocky} by
7793 @option{blockx} size blocks on the frame for the frame to be detected as
7794 combed. While @option{cthresh} controls how "visible" the combing must be, this
7795 setting controls "how much" combing there must be in any localized area (a
7796 window defined by the @option{blockx} and @option{blocky} settings) on the
7797 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
7798 which point no frames will ever be detected as combed). This setting is known
7799 as @option{MI} in TFM/VFM vocabulary.
7800
7801 Default value is @code{80}.
7802 @end table
7803
7804 @anchor{p/c/n/u/b meaning}
7805 @subsection p/c/n/u/b meaning
7806
7807 @subsubsection p/c/n
7808
7809 We assume the following telecined stream:
7810
7811 @example
7812 Top fields:     1 2 2 3 4
7813 Bottom fields:  1 2 3 4 4
7814 @end example
7815
7816 The numbers correspond to the progressive frame the fields relate to. Here, the
7817 first two frames are progressive, the 3rd and 4th are combed, and so on.
7818
7819 When @code{fieldmatch} is configured to run a matching from bottom
7820 (@option{field}=@var{bottom}) this is how this input stream get transformed:
7821
7822 @example
7823 Input stream:
7824                 T     1 2 2 3 4
7825                 B     1 2 3 4 4   <-- matching reference
7826
7827 Matches:              c c n n c
7828
7829 Output stream:
7830                 T     1 2 3 4 4
7831                 B     1 2 3 4 4
7832 @end example
7833
7834 As a result of the field matching, we can see that some frames get duplicated.
7835 To perform a complete inverse telecine, you need to rely on a decimation filter
7836 after this operation. See for instance the @ref{decimate} filter.
7837
7838 The same operation now matching from top fields (@option{field}=@var{top})
7839 looks like this:
7840
7841 @example
7842 Input stream:
7843                 T     1 2 2 3 4   <-- matching reference
7844                 B     1 2 3 4 4
7845
7846 Matches:              c c p p c
7847
7848 Output stream:
7849                 T     1 2 2 3 4
7850                 B     1 2 2 3 4
7851 @end example
7852
7853 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
7854 basically, they refer to the frame and field of the opposite parity:
7855
7856 @itemize
7857 @item @var{p} matches the field of the opposite parity in the previous frame
7858 @item @var{c} matches the field of the opposite parity in the current frame
7859 @item @var{n} matches the field of the opposite parity in the next frame
7860 @end itemize
7861
7862 @subsubsection u/b
7863
7864 The @var{u} and @var{b} matching are a bit special in the sense that they match
7865 from the opposite parity flag. In the following examples, we assume that we are
7866 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
7867 'x' is placed above and below each matched fields.
7868
7869 With bottom matching (@option{field}=@var{bottom}):
7870 @example
7871 Match:           c         p           n          b          u
7872
7873                  x       x               x        x          x
7874   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
7875   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
7876                  x         x           x        x              x
7877
7878 Output frames:
7879                  2          1          2          2          2
7880                  2          2          2          1          3
7881 @end example
7882
7883 With top matching (@option{field}=@var{top}):
7884 @example
7885 Match:           c         p           n          b          u
7886
7887                  x         x           x        x              x
7888   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
7889   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
7890                  x       x               x        x          x
7891
7892 Output frames:
7893                  2          2          2          1          2
7894                  2          1          3          2          2
7895 @end example
7896
7897 @subsection Examples
7898
7899 Simple IVTC of a top field first telecined stream:
7900 @example
7901 fieldmatch=order=tff:combmatch=none, decimate
7902 @end example
7903
7904 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
7905 @example
7906 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
7907 @end example
7908
7909 @section fieldorder
7910
7911 Transform the field order of the input video.
7912
7913 It accepts the following parameters:
7914
7915 @table @option
7916
7917 @item order
7918 The output field order. Valid values are @var{tff} for top field first or @var{bff}
7919 for bottom field first.
7920 @end table
7921
7922 The default value is @samp{tff}.
7923
7924 The transformation is done by shifting the picture content up or down
7925 by one line, and filling the remaining line with appropriate picture content.
7926 This method is consistent with most broadcast field order converters.
7927
7928 If the input video is not flagged as being interlaced, or it is already
7929 flagged as being of the required output field order, then this filter does
7930 not alter the incoming video.
7931
7932 It is very useful when converting to or from PAL DV material,
7933 which is bottom field first.
7934
7935 For example:
7936 @example
7937 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
7938 @end example
7939
7940 @section fifo, afifo
7941
7942 Buffer input images and send them when they are requested.
7943
7944 It is mainly useful when auto-inserted by the libavfilter
7945 framework.
7946
7947 It does not take parameters.
7948
7949 @section find_rect
7950
7951 Find a rectangular object
7952
7953 It accepts the following options:
7954
7955 @table @option
7956 @item object
7957 Filepath of the object image, needs to be in gray8.
7958
7959 @item threshold
7960 Detection threshold, default is 0.5.
7961
7962 @item mipmaps
7963 Number of mipmaps, default is 3.
7964
7965 @item xmin, ymin, xmax, ymax
7966 Specifies the rectangle in which to search.
7967 @end table
7968
7969 @subsection Examples
7970
7971 @itemize
7972 @item
7973 Generate a representative palette of a given video using @command{ffmpeg}:
7974 @example
7975 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
7976 @end example
7977 @end itemize
7978
7979 @section cover_rect
7980
7981 Cover a rectangular object
7982
7983 It accepts the following options:
7984
7985 @table @option
7986 @item cover
7987 Filepath of the optional cover image, needs to be in yuv420.
7988
7989 @item mode
7990 Set covering mode.
7991
7992 It accepts the following values:
7993 @table @samp
7994 @item cover
7995 cover it by the supplied image
7996 @item blur
7997 cover it by interpolating the surrounding pixels
7998 @end table
7999
8000 Default value is @var{blur}.
8001 @end table
8002
8003 @subsection Examples
8004
8005 @itemize
8006 @item
8007 Generate a representative palette of a given video using @command{ffmpeg}:
8008 @example
8009 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8010 @end example
8011 @end itemize
8012
8013 @anchor{format}
8014 @section format
8015
8016 Convert the input video to one of the specified pixel formats.
8017 Libavfilter will try to pick one that is suitable as input to
8018 the next filter.
8019
8020 It accepts the following parameters:
8021 @table @option
8022
8023 @item pix_fmts
8024 A '|'-separated list of pixel format names, such as
8025 "pix_fmts=yuv420p|monow|rgb24".
8026
8027 @end table
8028
8029 @subsection Examples
8030
8031 @itemize
8032 @item
8033 Convert the input video to the @var{yuv420p} format
8034 @example
8035 format=pix_fmts=yuv420p
8036 @end example
8037
8038 Convert the input video to any of the formats in the list
8039 @example
8040 format=pix_fmts=yuv420p|yuv444p|yuv410p
8041 @end example
8042 @end itemize
8043
8044 @anchor{fps}
8045 @section fps
8046
8047 Convert the video to specified constant frame rate by duplicating or dropping
8048 frames as necessary.
8049
8050 It accepts the following parameters:
8051 @table @option
8052
8053 @item fps
8054 The desired output frame rate. The default is @code{25}.
8055
8056 @item round
8057 Rounding method.
8058
8059 Possible values are:
8060 @table @option
8061 @item zero
8062 zero round towards 0
8063 @item inf
8064 round away from 0
8065 @item down
8066 round towards -infinity
8067 @item up
8068 round towards +infinity
8069 @item near
8070 round to nearest
8071 @end table
8072 The default is @code{near}.
8073
8074 @item start_time
8075 Assume the first PTS should be the given value, in seconds. This allows for
8076 padding/trimming at the start of stream. By default, no assumption is made
8077 about the first frame's expected PTS, so no padding or trimming is done.
8078 For example, this could be set to 0 to pad the beginning with duplicates of
8079 the first frame if a video stream starts after the audio stream or to trim any
8080 frames with a negative PTS.
8081
8082 @end table
8083
8084 Alternatively, the options can be specified as a flat string:
8085 @var{fps}[:@var{round}].
8086
8087 See also the @ref{setpts} filter.
8088
8089 @subsection Examples
8090
8091 @itemize
8092 @item
8093 A typical usage in order to set the fps to 25:
8094 @example
8095 fps=fps=25
8096 @end example
8097
8098 @item
8099 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
8100 @example
8101 fps=fps=film:round=near
8102 @end example
8103 @end itemize
8104
8105 @section framepack
8106
8107 Pack two different video streams into a stereoscopic video, setting proper
8108 metadata on supported codecs. The two views should have the same size and
8109 framerate and processing will stop when the shorter video ends. Please note
8110 that you may conveniently adjust view properties with the @ref{scale} and
8111 @ref{fps} filters.
8112
8113 It accepts the following parameters:
8114 @table @option
8115
8116 @item format
8117 The desired packing format. Supported values are:
8118
8119 @table @option
8120
8121 @item sbs
8122 The views are next to each other (default).
8123
8124 @item tab
8125 The views are on top of each other.
8126
8127 @item lines
8128 The views are packed by line.
8129
8130 @item columns
8131 The views are packed by column.
8132
8133 @item frameseq
8134 The views are temporally interleaved.
8135
8136 @end table
8137
8138 @end table
8139
8140 Some examples:
8141
8142 @example
8143 # Convert left and right views into a frame-sequential video
8144 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
8145
8146 # Convert views into a side-by-side video with the same output resolution as the input
8147 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
8148 @end example
8149
8150 @section framerate
8151
8152 Change the frame rate by interpolating new video output frames from the source
8153 frames.
8154
8155 This filter is not designed to function correctly with interlaced media. If
8156 you wish to change the frame rate of interlaced media then you are required
8157 to deinterlace before this filter and re-interlace after this filter.
8158
8159 A description of the accepted options follows.
8160
8161 @table @option
8162 @item fps
8163 Specify the output frames per second. This option can also be specified
8164 as a value alone. The default is @code{50}.
8165
8166 @item interp_start
8167 Specify the start of a range where the output frame will be created as a
8168 linear interpolation of two frames. The range is [@code{0}-@code{255}],
8169 the default is @code{15}.
8170
8171 @item interp_end
8172 Specify the end of a range where the output frame will be created as a
8173 linear interpolation of two frames. The range is [@code{0}-@code{255}],
8174 the default is @code{240}.
8175
8176 @item scene
8177 Specify the level at which a scene change is detected as a value between
8178 0 and 100 to indicate a new scene; a low value reflects a low
8179 probability for the current frame to introduce a new scene, while a higher
8180 value means the current frame is more likely to be one.
8181 The default is @code{7}.
8182
8183 @item flags
8184 Specify flags influencing the filter process.
8185
8186 Available value for @var{flags} is:
8187
8188 @table @option
8189 @item scene_change_detect, scd
8190 Enable scene change detection using the value of the option @var{scene}.
8191 This flag is enabled by default.
8192 @end table
8193 @end table
8194
8195 @section framestep
8196
8197 Select one frame every N-th frame.
8198
8199 This filter accepts the following option:
8200 @table @option
8201 @item step
8202 Select frame after every @code{step} frames.
8203 Allowed values are positive integers higher than 0. Default value is @code{1}.
8204 @end table
8205
8206 @anchor{frei0r}
8207 @section frei0r
8208
8209 Apply a frei0r effect to the input video.
8210
8211 To enable the compilation of this filter, you need to install the frei0r
8212 header and configure FFmpeg with @code{--enable-frei0r}.
8213
8214 It accepts the following parameters:
8215
8216 @table @option
8217
8218 @item filter_name
8219 The name of the frei0r effect to load. If the environment variable
8220 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
8221 directories specified by the colon-separated list in @env{FREIOR_PATH}.
8222 Otherwise, the standard frei0r paths are searched, in this order:
8223 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
8224 @file{/usr/lib/frei0r-1/}.
8225
8226 @item filter_params
8227 A '|'-separated list of parameters to pass to the frei0r effect.
8228
8229 @end table
8230
8231 A frei0r effect parameter can be a boolean (its value is either
8232 "y" or "n"), a double, a color (specified as
8233 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
8234 numbers between 0.0 and 1.0, inclusive) or by a color description specified in the "Color"
8235 section in the ffmpeg-utils manual), a position (specified as @var{X}/@var{Y}, where
8236 @var{X} and @var{Y} are floating point numbers) and/or a string.
8237
8238 The number and types of parameters depend on the loaded effect. If an
8239 effect parameter is not specified, the default value is set.
8240
8241 @subsection Examples
8242
8243 @itemize
8244 @item
8245 Apply the distort0r effect, setting the first two double parameters:
8246 @example
8247 frei0r=filter_name=distort0r:filter_params=0.5|0.01
8248 @end example
8249
8250 @item
8251 Apply the colordistance effect, taking a color as the first parameter:
8252 @example
8253 frei0r=colordistance:0.2/0.3/0.4
8254 frei0r=colordistance:violet
8255 frei0r=colordistance:0x112233
8256 @end example
8257
8258 @item
8259 Apply the perspective effect, specifying the top left and top right image
8260 positions:
8261 @example
8262 frei0r=perspective:0.2/0.2|0.8/0.2
8263 @end example
8264 @end itemize
8265
8266 For more information, see
8267 @url{http://frei0r.dyne.org}
8268
8269 @section fspp
8270
8271 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
8272
8273 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
8274 processing filter, one of them is performed once per block, not per pixel.
8275 This allows for much higher speed.
8276
8277 The filter accepts the following options:
8278
8279 @table @option
8280 @item quality
8281 Set quality. This option defines the number of levels for averaging. It accepts
8282 an integer in the range 4-5. Default value is @code{4}.
8283
8284 @item qp
8285 Force a constant quantization parameter. It accepts an integer in range 0-63.
8286 If not set, the filter will use the QP from the video stream (if available).
8287
8288 @item strength
8289 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
8290 more details but also more artifacts, while higher values make the image smoother
8291 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
8292
8293 @item use_bframe_qp
8294 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
8295 option may cause flicker since the B-Frames have often larger QP. Default is
8296 @code{0} (not enabled).
8297
8298 @end table
8299
8300 @section gblur
8301
8302 Apply Gaussian blur filter.
8303
8304 The filter accepts the following options:
8305
8306 @table @option
8307 @item sigma
8308 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
8309
8310 @item steps
8311 Set number of steps for Gaussian approximation. Defauls is @code{1}.
8312
8313 @item planes
8314 Set which planes to filter. By default all planes are filtered.
8315
8316 @item sigmaV
8317 Set vertical sigma, if negative it will be same as @code{sigma}.
8318 Default is @code{-1}.
8319 @end table
8320
8321 @section geq
8322
8323 The filter accepts the following options:
8324
8325 @table @option
8326 @item lum_expr, lum
8327 Set the luminance expression.
8328 @item cb_expr, cb
8329 Set the chrominance blue expression.
8330 @item cr_expr, cr
8331 Set the chrominance red expression.
8332 @item alpha_expr, a
8333 Set the alpha expression.
8334 @item red_expr, r
8335 Set the red expression.
8336 @item green_expr, g
8337 Set the green expression.
8338 @item blue_expr, b
8339 Set the blue expression.
8340 @end table
8341
8342 The colorspace is selected according to the specified options. If one
8343 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
8344 options is specified, the filter will automatically select a YCbCr
8345 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
8346 @option{blue_expr} options is specified, it will select an RGB
8347 colorspace.
8348
8349 If one of the chrominance expression is not defined, it falls back on the other
8350 one. If no alpha expression is specified it will evaluate to opaque value.
8351 If none of chrominance expressions are specified, they will evaluate
8352 to the luminance expression.
8353
8354 The expressions can use the following variables and functions:
8355
8356 @table @option
8357 @item N
8358 The sequential number of the filtered frame, starting from @code{0}.
8359
8360 @item X
8361 @item Y
8362 The coordinates of the current sample.
8363
8364 @item W
8365 @item H
8366 The width and height of the image.
8367
8368 @item SW
8369 @item SH
8370 Width and height scale depending on the currently filtered plane. It is the
8371 ratio between the corresponding luma plane number of pixels and the current
8372 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
8373 @code{0.5,0.5} for chroma planes.
8374
8375 @item T
8376 Time of the current frame, expressed in seconds.
8377
8378 @item p(x, y)
8379 Return the value of the pixel at location (@var{x},@var{y}) of the current
8380 plane.
8381
8382 @item lum(x, y)
8383 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
8384 plane.
8385
8386 @item cb(x, y)
8387 Return the value of the pixel at location (@var{x},@var{y}) of the
8388 blue-difference chroma plane. Return 0 if there is no such plane.
8389
8390 @item cr(x, y)
8391 Return the value of the pixel at location (@var{x},@var{y}) of the
8392 red-difference chroma plane. Return 0 if there is no such plane.
8393
8394 @item r(x, y)
8395 @item g(x, y)
8396 @item b(x, y)
8397 Return the value of the pixel at location (@var{x},@var{y}) of the
8398 red/green/blue component. Return 0 if there is no such component.
8399
8400 @item alpha(x, y)
8401 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
8402 plane. Return 0 if there is no such plane.
8403 @end table
8404
8405 For functions, if @var{x} and @var{y} are outside the area, the value will be
8406 automatically clipped to the closer edge.
8407
8408 @subsection Examples
8409
8410 @itemize
8411 @item
8412 Flip the image horizontally:
8413 @example
8414 geq=p(W-X\,Y)
8415 @end example
8416
8417 @item
8418 Generate a bidimensional sine wave, with angle @code{PI/3} and a
8419 wavelength of 100 pixels:
8420 @example
8421 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
8422 @end example
8423
8424 @item
8425 Generate a fancy enigmatic moving light:
8426 @example
8427 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
8428 @end example
8429
8430 @item
8431 Generate a quick emboss effect:
8432 @example
8433 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
8434 @end example
8435
8436 @item
8437 Modify RGB components depending on pixel position:
8438 @example
8439 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
8440 @end example
8441
8442 @item
8443 Create a radial gradient that is the same size as the input (also see
8444 the @ref{vignette} filter):
8445 @example
8446 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
8447 @end example
8448 @end itemize
8449
8450 @section gradfun
8451
8452 Fix the banding artifacts that are sometimes introduced into nearly flat
8453 regions by truncation to 8-bit color depth.
8454 Interpolate the gradients that should go where the bands are, and
8455 dither them.
8456
8457 It is designed for playback only.  Do not use it prior to
8458 lossy compression, because compression tends to lose the dither and
8459 bring back the bands.
8460
8461 It accepts the following parameters:
8462
8463 @table @option
8464
8465 @item strength
8466 The maximum amount by which the filter will change any one pixel. This is also
8467 the threshold for detecting nearly flat regions. Acceptable values range from
8468 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
8469 valid range.
8470
8471 @item radius
8472 The neighborhood to fit the gradient to. A larger radius makes for smoother
8473 gradients, but also prevents the filter from modifying the pixels near detailed
8474 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
8475 values will be clipped to the valid range.
8476
8477 @end table
8478
8479 Alternatively, the options can be specified as a flat string:
8480 @var{strength}[:@var{radius}]
8481
8482 @subsection Examples
8483
8484 @itemize
8485 @item
8486 Apply the filter with a @code{3.5} strength and radius of @code{8}:
8487 @example
8488 gradfun=3.5:8
8489 @end example
8490
8491 @item
8492 Specify radius, omitting the strength (which will fall-back to the default
8493 value):
8494 @example
8495 gradfun=radius=8
8496 @end example
8497
8498 @end itemize
8499
8500 @anchor{haldclut}
8501 @section haldclut
8502
8503 Apply a Hald CLUT to a video stream.
8504
8505 First input is the video stream to process, and second one is the Hald CLUT.
8506 The Hald CLUT input can be a simple picture or a complete video stream.
8507
8508 The filter accepts the following options:
8509
8510 @table @option
8511 @item shortest
8512 Force termination when the shortest input terminates. Default is @code{0}.
8513 @item repeatlast
8514 Continue applying the last CLUT after the end of the stream. A value of
8515 @code{0} disable the filter after the last frame of the CLUT is reached.
8516 Default is @code{1}.
8517 @end table
8518
8519 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
8520 filters share the same internals).
8521
8522 More information about the Hald CLUT can be found on Eskil Steenberg's website
8523 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
8524
8525 @subsection Workflow examples
8526
8527 @subsubsection Hald CLUT video stream
8528
8529 Generate an identity Hald CLUT stream altered with various effects:
8530 @example
8531 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
8532 @end example
8533
8534 Note: make sure you use a lossless codec.
8535
8536 Then use it with @code{haldclut} to apply it on some random stream:
8537 @example
8538 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
8539 @end example
8540
8541 The Hald CLUT will be applied to the 10 first seconds (duration of
8542 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
8543 to the remaining frames of the @code{mandelbrot} stream.
8544
8545 @subsubsection Hald CLUT with preview
8546
8547 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
8548 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
8549 biggest possible square starting at the top left of the picture. The remaining
8550 padding pixels (bottom or right) will be ignored. This area can be used to add
8551 a preview of the Hald CLUT.
8552
8553 Typically, the following generated Hald CLUT will be supported by the
8554 @code{haldclut} filter:
8555
8556 @example
8557 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
8558    pad=iw+320 [padded_clut];
8559    smptebars=s=320x256, split [a][b];
8560    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
8561    [main][b] overlay=W-320" -frames:v 1 clut.png
8562 @end example
8563
8564 It contains the original and a preview of the effect of the CLUT: SMPTE color
8565 bars are displayed on the right-top, and below the same color bars processed by
8566 the color changes.
8567
8568 Then, the effect of this Hald CLUT can be visualized with:
8569 @example
8570 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
8571 @end example
8572
8573 @section hflip
8574
8575 Flip the input video horizontally.
8576
8577 For example, to horizontally flip the input video with @command{ffmpeg}:
8578 @example
8579 ffmpeg -i in.avi -vf "hflip" out.avi
8580 @end example
8581
8582 @section histeq
8583 This filter applies a global color histogram equalization on a
8584 per-frame basis.
8585
8586 It can be used to correct video that has a compressed range of pixel
8587 intensities.  The filter redistributes the pixel intensities to
8588 equalize their distribution across the intensity range. It may be
8589 viewed as an "automatically adjusting contrast filter". This filter is
8590 useful only for correcting degraded or poorly captured source
8591 video.
8592
8593 The filter accepts the following options:
8594
8595 @table @option
8596 @item strength
8597 Determine the amount of equalization to be applied.  As the strength
8598 is reduced, the distribution of pixel intensities more-and-more
8599 approaches that of the input frame. The value must be a float number
8600 in the range [0,1] and defaults to 0.200.
8601
8602 @item intensity
8603 Set the maximum intensity that can generated and scale the output
8604 values appropriately.  The strength should be set as desired and then
8605 the intensity can be limited if needed to avoid washing-out. The value
8606 must be a float number in the range [0,1] and defaults to 0.210.
8607
8608 @item antibanding
8609 Set the antibanding level. If enabled the filter will randomly vary
8610 the luminance of output pixels by a small amount to avoid banding of
8611 the histogram. Possible values are @code{none}, @code{weak} or
8612 @code{strong}. It defaults to @code{none}.
8613 @end table
8614
8615 @section histogram
8616
8617 Compute and draw a color distribution histogram for the input video.
8618
8619 The computed histogram is a representation of the color component
8620 distribution in an image.
8621
8622 Standard histogram displays the color components distribution in an image.
8623 Displays color graph for each color component. Shows distribution of
8624 the Y, U, V, A or R, G, B components, depending on input format, in the
8625 current frame. Below each graph a color component scale meter is shown.
8626
8627 The filter accepts the following options:
8628
8629 @table @option
8630 @item level_height
8631 Set height of level. Default value is @code{200}.
8632 Allowed range is [50, 2048].
8633
8634 @item scale_height
8635 Set height of color scale. Default value is @code{12}.
8636 Allowed range is [0, 40].
8637
8638 @item display_mode
8639 Set display mode.
8640 It accepts the following values:
8641 @table @samp
8642 @item parade
8643 Per color component graphs are placed below each other.
8644
8645 @item overlay
8646 Presents information identical to that in the @code{parade}, except
8647 that the graphs representing color components are superimposed directly
8648 over one another.
8649 @end table
8650 Default is @code{parade}.
8651
8652 @item levels_mode
8653 Set mode. Can be either @code{linear}, or @code{logarithmic}.
8654 Default is @code{linear}.
8655
8656 @item components
8657 Set what color components to display.
8658 Default is @code{7}.
8659
8660 @item fgopacity
8661 Set foreground opacity. Default is @code{0.7}.
8662
8663 @item bgopacity
8664 Set background opacity. Default is @code{0.5}.
8665 @end table
8666
8667 @subsection Examples
8668
8669 @itemize
8670
8671 @item
8672 Calculate and draw histogram:
8673 @example
8674 ffplay -i input -vf histogram
8675 @end example
8676
8677 @end itemize
8678
8679 @anchor{hqdn3d}
8680 @section hqdn3d
8681
8682 This is a high precision/quality 3d denoise filter. It aims to reduce
8683 image noise, producing smooth images and making still images really
8684 still. It should enhance compressibility.
8685
8686 It accepts the following optional parameters:
8687
8688 @table @option
8689 @item luma_spatial
8690 A non-negative floating point number which specifies spatial luma strength.
8691 It defaults to 4.0.
8692
8693 @item chroma_spatial
8694 A non-negative floating point number which specifies spatial chroma strength.
8695 It defaults to 3.0*@var{luma_spatial}/4.0.
8696
8697 @item luma_tmp
8698 A floating point number which specifies luma temporal strength. It defaults to
8699 6.0*@var{luma_spatial}/4.0.
8700
8701 @item chroma_tmp
8702 A floating point number which specifies chroma temporal strength. It defaults to
8703 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
8704 @end table
8705
8706 @anchor{hwupload_cuda}
8707 @section hwupload_cuda
8708
8709 Upload system memory frames to a CUDA device.
8710
8711 It accepts the following optional parameters:
8712
8713 @table @option
8714 @item device
8715 The number of the CUDA device to use
8716 @end table
8717
8718 @section hqx
8719
8720 Apply a high-quality magnification filter designed for pixel art. This filter
8721 was originally created by Maxim Stepin.
8722
8723 It accepts the following option:
8724
8725 @table @option
8726 @item n
8727 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
8728 @code{hq3x} and @code{4} for @code{hq4x}.
8729 Default is @code{3}.
8730 @end table
8731
8732 @section hstack
8733 Stack input videos horizontally.
8734
8735 All streams must be of same pixel format and of same height.
8736
8737 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
8738 to create same output.
8739
8740 The filter accept the following option:
8741
8742 @table @option
8743 @item inputs
8744 Set number of input streams. Default is 2.
8745
8746 @item shortest
8747 If set to 1, force the output to terminate when the shortest input
8748 terminates. Default value is 0.
8749 @end table
8750
8751 @section hue
8752
8753 Modify the hue and/or the saturation of the input.
8754
8755 It accepts the following parameters:
8756
8757 @table @option
8758 @item h
8759 Specify the hue angle as a number of degrees. It accepts an expression,
8760 and defaults to "0".
8761
8762 @item s
8763 Specify the saturation in the [-10,10] range. It accepts an expression and
8764 defaults to "1".
8765
8766 @item H
8767 Specify the hue angle as a number of radians. It accepts an
8768 expression, and defaults to "0".
8769
8770 @item b
8771 Specify the brightness in the [-10,10] range. It accepts an expression and
8772 defaults to "0".
8773 @end table
8774
8775 @option{h} and @option{H} are mutually exclusive, and can't be
8776 specified at the same time.
8777
8778 The @option{b}, @option{h}, @option{H} and @option{s} option values are
8779 expressions containing the following constants:
8780
8781 @table @option
8782 @item n
8783 frame count of the input frame starting from 0
8784
8785 @item pts
8786 presentation timestamp of the input frame expressed in time base units
8787
8788 @item r
8789 frame rate of the input video, NAN if the input frame rate is unknown
8790
8791 @item t
8792 timestamp expressed in seconds, NAN if the input timestamp is unknown
8793
8794 @item tb
8795 time base of the input video
8796 @end table
8797
8798 @subsection Examples
8799
8800 @itemize
8801 @item
8802 Set the hue to 90 degrees and the saturation to 1.0:
8803 @example
8804 hue=h=90:s=1
8805 @end example
8806
8807 @item
8808 Same command but expressing the hue in radians:
8809 @example
8810 hue=H=PI/2:s=1
8811 @end example
8812
8813 @item
8814 Rotate hue and make the saturation swing between 0
8815 and 2 over a period of 1 second:
8816 @example
8817 hue="H=2*PI*t: s=sin(2*PI*t)+1"
8818 @end example
8819
8820 @item
8821 Apply a 3 seconds saturation fade-in effect starting at 0:
8822 @example
8823 hue="s=min(t/3\,1)"
8824 @end example
8825
8826 The general fade-in expression can be written as:
8827 @example
8828 hue="s=min(0\, max((t-START)/DURATION\, 1))"
8829 @end example
8830
8831 @item
8832 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
8833 @example
8834 hue="s=max(0\, min(1\, (8-t)/3))"
8835 @end example
8836
8837 The general fade-out expression can be written as:
8838 @example
8839 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
8840 @end example
8841
8842 @end itemize
8843
8844 @subsection Commands
8845
8846 This filter supports the following commands:
8847 @table @option
8848 @item b
8849 @item s
8850 @item h
8851 @item H
8852 Modify the hue and/or the saturation and/or brightness of the input video.
8853 The command accepts the same syntax of the corresponding option.
8854
8855 If the specified expression is not valid, it is kept at its current
8856 value.
8857 @end table
8858
8859 @section hysteresis
8860
8861 Grow first stream into second stream by connecting components.
8862 This makes it possible to build more robust edge masks.
8863
8864 This filter accepts the following options:
8865
8866 @table @option
8867 @item planes
8868 Set which planes will be processed as bitmap, unprocessed planes will be
8869 copied from first stream.
8870 By default value 0xf, all planes will be processed.
8871
8872 @item threshold
8873 Set threshold which is used in filtering. If pixel component value is higher than
8874 this value filter algorithm for connecting components is activated.
8875 By default value is 0.
8876 @end table
8877
8878 @section idet
8879
8880 Detect video interlacing type.
8881
8882 This filter tries to detect if the input frames are interlaced, progressive,
8883 top or bottom field first. It will also try to detect fields that are
8884 repeated between adjacent frames (a sign of telecine).
8885
8886 Single frame detection considers only immediately adjacent frames when classifying each frame.
8887 Multiple frame detection incorporates the classification history of previous frames.
8888
8889 The filter will log these metadata values:
8890
8891 @table @option
8892 @item single.current_frame
8893 Detected type of current frame using single-frame detection. One of:
8894 ``tff'' (top field first), ``bff'' (bottom field first),
8895 ``progressive'', or ``undetermined''
8896
8897 @item single.tff
8898 Cumulative number of frames detected as top field first using single-frame detection.
8899
8900 @item multiple.tff
8901 Cumulative number of frames detected as top field first using multiple-frame detection.
8902
8903 @item single.bff
8904 Cumulative number of frames detected as bottom field first using single-frame detection.
8905
8906 @item multiple.current_frame
8907 Detected type of current frame using multiple-frame detection. One of:
8908 ``tff'' (top field first), ``bff'' (bottom field first),
8909 ``progressive'', or ``undetermined''
8910
8911 @item multiple.bff
8912 Cumulative number of frames detected as bottom field first using multiple-frame detection.
8913
8914 @item single.progressive
8915 Cumulative number of frames detected as progressive using single-frame detection.
8916
8917 @item multiple.progressive
8918 Cumulative number of frames detected as progressive using multiple-frame detection.
8919
8920 @item single.undetermined
8921 Cumulative number of frames that could not be classified using single-frame detection.
8922
8923 @item multiple.undetermined
8924 Cumulative number of frames that could not be classified using multiple-frame detection.
8925
8926 @item repeated.current_frame
8927 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
8928
8929 @item repeated.neither
8930 Cumulative number of frames with no repeated field.
8931
8932 @item repeated.top
8933 Cumulative number of frames with the top field repeated from the previous frame's top field.
8934
8935 @item repeated.bottom
8936 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
8937 @end table
8938
8939 The filter accepts the following options:
8940
8941 @table @option
8942 @item intl_thres
8943 Set interlacing threshold.
8944 @item prog_thres
8945 Set progressive threshold.
8946 @item rep_thres
8947 Threshold for repeated field detection.
8948 @item half_life
8949 Number of frames after which a given frame's contribution to the
8950 statistics is halved (i.e., it contributes only 0.5 to its
8951 classification). The default of 0 means that all frames seen are given
8952 full weight of 1.0 forever.
8953 @item analyze_interlaced_flag
8954 When this is not 0 then idet will use the specified number of frames to determine
8955 if the interlaced flag is accurate, it will not count undetermined frames.
8956 If the flag is found to be accurate it will be used without any further
8957 computations, if it is found to be inaccurate it will be cleared without any
8958 further computations. This allows inserting the idet filter as a low computational
8959 method to clean up the interlaced flag
8960 @end table
8961
8962 @section il
8963
8964 Deinterleave or interleave fields.
8965
8966 This filter allows one to process interlaced images fields without
8967 deinterlacing them. Deinterleaving splits the input frame into 2
8968 fields (so called half pictures). Odd lines are moved to the top
8969 half of the output image, even lines to the bottom half.
8970 You can process (filter) them independently and then re-interleave them.
8971
8972 The filter accepts the following options:
8973
8974 @table @option
8975 @item luma_mode, l
8976 @item chroma_mode, c
8977 @item alpha_mode, a
8978 Available values for @var{luma_mode}, @var{chroma_mode} and
8979 @var{alpha_mode} are:
8980
8981 @table @samp
8982 @item none
8983 Do nothing.
8984
8985 @item deinterleave, d
8986 Deinterleave fields, placing one above the other.
8987
8988 @item interleave, i
8989 Interleave fields. Reverse the effect of deinterleaving.
8990 @end table
8991 Default value is @code{none}.
8992
8993 @item luma_swap, ls
8994 @item chroma_swap, cs
8995 @item alpha_swap, as
8996 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
8997 @end table
8998
8999 @section inflate
9000
9001 Apply inflate effect to the video.
9002
9003 This filter replaces the pixel by the local(3x3) average by taking into account
9004 only values higher than the pixel.
9005
9006 It accepts the following options:
9007
9008 @table @option
9009 @item threshold0
9010 @item threshold1
9011 @item threshold2
9012 @item threshold3
9013 Limit the maximum change for each plane, default is 65535.
9014 If 0, plane will remain unchanged.
9015 @end table
9016
9017 @section interlace
9018
9019 Simple interlacing filter from progressive contents. This interleaves upper (or
9020 lower) lines from odd frames with lower (or upper) lines from even frames,
9021 halving the frame rate and preserving image height.
9022
9023 @example
9024    Original        Original             New Frame
9025    Frame 'j'      Frame 'j+1'             (tff)
9026   ==========      ===========       ==================
9027     Line 0  -------------------->    Frame 'j' Line 0
9028     Line 1          Line 1  ---->   Frame 'j+1' Line 1
9029     Line 2 --------------------->    Frame 'j' Line 2
9030     Line 3          Line 3  ---->   Frame 'j+1' Line 3
9031      ...             ...                   ...
9032 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
9033 @end example
9034
9035 It accepts the following optional parameters:
9036
9037 @table @option
9038 @item scan
9039 This determines whether the interlaced frame is taken from the even
9040 (tff - default) or odd (bff) lines of the progressive frame.
9041
9042 @item lowpass
9043 Enable (default) or disable the vertical lowpass filter to avoid twitter
9044 interlacing and reduce moire patterns.
9045 @end table
9046
9047 @section kerndeint
9048
9049 Deinterlace input video by applying Donald Graft's adaptive kernel
9050 deinterling. Work on interlaced parts of a video to produce
9051 progressive frames.
9052
9053 The description of the accepted parameters follows.
9054
9055 @table @option
9056 @item thresh
9057 Set the threshold which affects the filter's tolerance when
9058 determining if a pixel line must be processed. It must be an integer
9059 in the range [0,255] and defaults to 10. A value of 0 will result in
9060 applying the process on every pixels.
9061
9062 @item map
9063 Paint pixels exceeding the threshold value to white if set to 1.
9064 Default is 0.
9065
9066 @item order
9067 Set the fields order. Swap fields if set to 1, leave fields alone if
9068 0. Default is 0.
9069
9070 @item sharp
9071 Enable additional sharpening if set to 1. Default is 0.
9072
9073 @item twoway
9074 Enable twoway sharpening if set to 1. Default is 0.
9075 @end table
9076
9077 @subsection Examples
9078
9079 @itemize
9080 @item
9081 Apply default values:
9082 @example
9083 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
9084 @end example
9085
9086 @item
9087 Enable additional sharpening:
9088 @example
9089 kerndeint=sharp=1
9090 @end example
9091
9092 @item
9093 Paint processed pixels in white:
9094 @example
9095 kerndeint=map=1
9096 @end example
9097 @end itemize
9098
9099 @section lenscorrection
9100
9101 Correct radial lens distortion
9102
9103 This filter can be used to correct for radial distortion as can result from the use
9104 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
9105 one can use tools available for example as part of opencv or simply trial-and-error.
9106 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
9107 and extract the k1 and k2 coefficients from the resulting matrix.
9108
9109 Note that effectively the same filter is available in the open-source tools Krita and
9110 Digikam from the KDE project.
9111
9112 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
9113 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
9114 brightness distribution, so you may want to use both filters together in certain
9115 cases, though you will have to take care of ordering, i.e. whether vignetting should
9116 be applied before or after lens correction.
9117
9118 @subsection Options
9119
9120 The filter accepts the following options:
9121
9122 @table @option
9123 @item cx
9124 Relative x-coordinate of the focal point of the image, and thereby the center of the
9125 distortion. This value has a range [0,1] and is expressed as fractions of the image
9126 width.
9127 @item cy
9128 Relative y-coordinate of the focal point of the image, and thereby the center of the
9129 distortion. This value has a range [0,1] and is expressed as fractions of the image
9130 height.
9131 @item k1
9132 Coefficient of the quadratic correction term. 0.5 means no correction.
9133 @item k2
9134 Coefficient of the double quadratic correction term. 0.5 means no correction.
9135 @end table
9136
9137 The formula that generates the correction is:
9138
9139 @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)
9140
9141 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
9142 distances from the focal point in the source and target images, respectively.
9143
9144 @section loop
9145
9146 Loop video frames.
9147
9148 The filter accepts the following options:
9149
9150 @table @option
9151 @item loop
9152 Set the number of loops.
9153
9154 @item size
9155 Set maximal size in number of frames.
9156
9157 @item start
9158 Set first frame of loop.
9159 @end table
9160
9161 @anchor{lut3d}
9162 @section lut3d
9163
9164 Apply a 3D LUT to an input video.
9165
9166 The filter accepts the following options:
9167
9168 @table @option
9169 @item file
9170 Set the 3D LUT file name.
9171
9172 Currently supported formats:
9173 @table @samp
9174 @item 3dl
9175 AfterEffects
9176 @item cube
9177 Iridas
9178 @item dat
9179 DaVinci
9180 @item m3d
9181 Pandora
9182 @end table
9183 @item interp
9184 Select interpolation mode.
9185
9186 Available values are:
9187
9188 @table @samp
9189 @item nearest
9190 Use values from the nearest defined point.
9191 @item trilinear
9192 Interpolate values using the 8 points defining a cube.
9193 @item tetrahedral
9194 Interpolate values using a tetrahedron.
9195 @end table
9196 @end table
9197
9198 @section lut, lutrgb, lutyuv
9199
9200 Compute a look-up table for binding each pixel component input value
9201 to an output value, and apply it to the input video.
9202
9203 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
9204 to an RGB input video.
9205
9206 These filters accept the following parameters:
9207 @table @option
9208 @item c0
9209 set first pixel component expression
9210 @item c1
9211 set second pixel component expression
9212 @item c2
9213 set third pixel component expression
9214 @item c3
9215 set fourth pixel component expression, corresponds to the alpha component
9216
9217 @item r
9218 set red component expression
9219 @item g
9220 set green component expression
9221 @item b
9222 set blue component expression
9223 @item a
9224 alpha component expression
9225
9226 @item y
9227 set Y/luminance component expression
9228 @item u
9229 set U/Cb component expression
9230 @item v
9231 set V/Cr component expression
9232 @end table
9233
9234 Each of them specifies the expression to use for computing the lookup table for
9235 the corresponding pixel component values.
9236
9237 The exact component associated to each of the @var{c*} options depends on the
9238 format in input.
9239
9240 The @var{lut} filter requires either YUV or RGB pixel formats in input,
9241 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
9242
9243 The expressions can contain the following constants and functions:
9244
9245 @table @option
9246 @item w
9247 @item h
9248 The input width and height.
9249
9250 @item val
9251 The input value for the pixel component.
9252
9253 @item clipval
9254 The input value, clipped to the @var{minval}-@var{maxval} range.
9255
9256 @item maxval
9257 The maximum value for the pixel component.
9258
9259 @item minval
9260 The minimum value for the pixel component.
9261
9262 @item negval
9263 The negated value for the pixel component value, clipped to the
9264 @var{minval}-@var{maxval} range; it corresponds to the expression
9265 "maxval-clipval+minval".
9266
9267 @item clip(val)
9268 The computed value in @var{val}, clipped to the
9269 @var{minval}-@var{maxval} range.
9270
9271 @item gammaval(gamma)
9272 The computed gamma correction value of the pixel component value,
9273 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
9274 expression
9275 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
9276
9277 @end table
9278
9279 All expressions default to "val".
9280
9281 @subsection Examples
9282
9283 @itemize
9284 @item
9285 Negate input video:
9286 @example
9287 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
9288 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
9289 @end example
9290
9291 The above is the same as:
9292 @example
9293 lutrgb="r=negval:g=negval:b=negval"
9294 lutyuv="y=negval:u=negval:v=negval"
9295 @end example
9296
9297 @item
9298 Negate luminance:
9299 @example
9300 lutyuv=y=negval
9301 @end example
9302
9303 @item
9304 Remove chroma components, turning the video into a graytone image:
9305 @example
9306 lutyuv="u=128:v=128"
9307 @end example
9308
9309 @item
9310 Apply a luma burning effect:
9311 @example
9312 lutyuv="y=2*val"
9313 @end example
9314
9315 @item
9316 Remove green and blue components:
9317 @example
9318 lutrgb="g=0:b=0"
9319 @end example
9320
9321 @item
9322 Set a constant alpha channel value on input:
9323 @example
9324 format=rgba,lutrgb=a="maxval-minval/2"
9325 @end example
9326
9327 @item
9328 Correct luminance gamma by a factor of 0.5:
9329 @example
9330 lutyuv=y=gammaval(0.5)
9331 @end example
9332
9333 @item
9334 Discard least significant bits of luma:
9335 @example
9336 lutyuv=y='bitand(val, 128+64+32)'
9337 @end example
9338
9339 @item
9340 Technicolor like effect:
9341 @example
9342 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
9343 @end example
9344 @end itemize
9345
9346 @section lut2
9347
9348 Compute and apply a lookup table from two video inputs.
9349
9350 This filter accepts the following parameters:
9351 @table @option
9352 @item c0
9353 set first pixel component expression
9354 @item c1
9355 set second pixel component expression
9356 @item c2
9357 set third pixel component expression
9358 @item c3
9359 set fourth pixel component expression, corresponds to the alpha component
9360 @end table
9361
9362 Each of them specifies the expression to use for computing the lookup table for
9363 the corresponding pixel component values.
9364
9365 The exact component associated to each of the @var{c*} options depends on the
9366 format in inputs.
9367
9368 The expressions can contain the following constants:
9369
9370 @table @option
9371 @item w
9372 @item h
9373 The input width and height.
9374
9375 @item x
9376 The first input value for the pixel component.
9377
9378 @item y
9379 The second input value for the pixel component.
9380
9381 @item bdx
9382 The first input video bit depth.
9383
9384 @item bdy
9385 The second input video bit depth.
9386 @end table
9387
9388 All expressions default to "x".
9389
9390 @subsection Examples
9391
9392 @itemize
9393 @item
9394 Highlight differences between two RGB video streams:
9395 @example
9396 lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1)'
9397 @end example
9398
9399 @item
9400 Highlight differences between two YUV video streams:
9401 @example
9402 lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1)'
9403 @end example
9404 @end itemize
9405
9406 @section maskedclamp
9407
9408 Clamp the first input stream with the second input and third input stream.
9409
9410 Returns the value of first stream to be between second input
9411 stream - @code{undershoot} and third input stream + @code{overshoot}.
9412
9413 This filter accepts the following options:
9414 @table @option
9415 @item undershoot
9416 Default value is @code{0}.
9417
9418 @item overshoot
9419 Default value is @code{0}.
9420
9421 @item planes
9422 Set which planes will be processed as bitmap, unprocessed planes will be
9423 copied from first stream.
9424 By default value 0xf, all planes will be processed.
9425 @end table
9426
9427 @section maskedmerge
9428
9429 Merge the first input stream with the second input stream using per pixel
9430 weights in the third input stream.
9431
9432 A value of 0 in the third stream pixel component means that pixel component
9433 from first stream is returned unchanged, while maximum value (eg. 255 for
9434 8-bit videos) means that pixel component from second stream is returned
9435 unchanged. Intermediate values define the amount of merging between both
9436 input stream's pixel components.
9437
9438 This filter accepts the following options:
9439 @table @option
9440 @item planes
9441 Set which planes will be processed as bitmap, unprocessed planes will be
9442 copied from first stream.
9443 By default value 0xf, all planes will be processed.
9444 @end table
9445
9446 @section mcdeint
9447
9448 Apply motion-compensation deinterlacing.
9449
9450 It needs one field per frame as input and must thus be used together
9451 with yadif=1/3 or equivalent.
9452
9453 This filter accepts the following options:
9454 @table @option
9455 @item mode
9456 Set the deinterlacing mode.
9457
9458 It accepts one of the following values:
9459 @table @samp
9460 @item fast
9461 @item medium
9462 @item slow
9463 use iterative motion estimation
9464 @item extra_slow
9465 like @samp{slow}, but use multiple reference frames.
9466 @end table
9467 Default value is @samp{fast}.
9468
9469 @item parity
9470 Set the picture field parity assumed for the input video. It must be
9471 one of the following values:
9472
9473 @table @samp
9474 @item 0, tff
9475 assume top field first
9476 @item 1, bff
9477 assume bottom field first
9478 @end table
9479
9480 Default value is @samp{bff}.
9481
9482 @item qp
9483 Set per-block quantization parameter (QP) used by the internal
9484 encoder.
9485
9486 Higher values should result in a smoother motion vector field but less
9487 optimal individual vectors. Default value is 1.
9488 @end table
9489
9490 @section mergeplanes
9491
9492 Merge color channel components from several video streams.
9493
9494 The filter accepts up to 4 input streams, and merge selected input
9495 planes to the output video.
9496
9497 This filter accepts the following options:
9498 @table @option
9499 @item mapping
9500 Set input to output plane mapping. Default is @code{0}.
9501
9502 The mappings is specified as a bitmap. It should be specified as a
9503 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
9504 mapping for the first plane of the output stream. 'A' sets the number of
9505 the input stream to use (from 0 to 3), and 'a' the plane number of the
9506 corresponding input to use (from 0 to 3). The rest of the mappings is
9507 similar, 'Bb' describes the mapping for the output stream second
9508 plane, 'Cc' describes the mapping for the output stream third plane and
9509 'Dd' describes the mapping for the output stream fourth plane.
9510
9511 @item format
9512 Set output pixel format. Default is @code{yuva444p}.
9513 @end table
9514
9515 @subsection Examples
9516
9517 @itemize
9518 @item
9519 Merge three gray video streams of same width and height into single video stream:
9520 @example
9521 [a0][a1][a2]mergeplanes=0x001020:yuv444p
9522 @end example
9523
9524 @item
9525 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
9526 @example
9527 [a0][a1]mergeplanes=0x00010210:yuva444p
9528 @end example
9529
9530 @item
9531 Swap Y and A plane in yuva444p stream:
9532 @example
9533 format=yuva444p,mergeplanes=0x03010200:yuva444p
9534 @end example
9535
9536 @item
9537 Swap U and V plane in yuv420p stream:
9538 @example
9539 format=yuv420p,mergeplanes=0x000201:yuv420p
9540 @end example
9541
9542 @item
9543 Cast a rgb24 clip to yuv444p:
9544 @example
9545 format=rgb24,mergeplanes=0x000102:yuv444p
9546 @end example
9547 @end itemize
9548
9549 @section mestimate
9550
9551 Estimate and export motion vectors using block matching algorithms.
9552 Motion vectors are stored in frame side data to be used by other filters.
9553
9554 This filter accepts the following options:
9555 @table @option
9556 @item method
9557 Specify the motion estimation method. Accepts one of the following values:
9558
9559 @table @samp
9560 @item esa
9561 Exhaustive search algorithm.
9562 @item tss
9563 Three step search algorithm.
9564 @item tdls
9565 Two dimensional logarithmic search algorithm.
9566 @item ntss
9567 New three step search algorithm.
9568 @item fss
9569 Four step search algorithm.
9570 @item ds
9571 Diamond search algorithm.
9572 @item hexbs
9573 Hexagon-based search algorithm.
9574 @item epzs
9575 Enhanced predictive zonal search algorithm.
9576 @item umh
9577 Uneven multi-hexagon search algorithm.
9578 @end table
9579 Default value is @samp{esa}.
9580
9581 @item mb_size
9582 Macroblock size. Default @code{16}.
9583
9584 @item search_param
9585 Search parameter. Default @code{7}.
9586 @end table
9587
9588 @section minterpolate
9589
9590 Convert the video to specified frame rate using motion interpolation.
9591
9592 This filter accepts the following options:
9593 @table @option
9594 @item fps
9595 Specify the output frame rate. This can be rational e.g. @code{60000/1001}. Frames are dropped if @var{fps} is lower than source fps. Default @code{60}.
9596
9597 @item mi_mode
9598 Motion interpolation mode. Following values are accepted:
9599 @table @samp
9600 @item dup
9601 Duplicate previous or next frame for interpolating new ones.
9602 @item blend
9603 Blend source frames. Interpolated frame is mean of previous and next frames.
9604 @item mci
9605 Motion compensated interpolation. Following options are effective when this mode is selected:
9606
9607 @table @samp
9608 @item mc_mode
9609 Motion compensation mode. Following values are accepted:
9610 @table @samp
9611 @item obmc
9612 Overlapped block motion compensation.
9613 @item aobmc
9614 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
9615 @end table
9616 Default mode is @samp{obmc}.
9617
9618 @item me_mode
9619 Motion estimation mode. Following values are accepted:
9620 @table @samp
9621 @item bidir
9622 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
9623 @item bilat
9624 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
9625 @end table
9626 Default mode is @samp{bilat}.
9627
9628 @item me
9629 The algorithm to be used for motion estimation. Following values are accepted:
9630 @table @samp
9631 @item esa
9632 Exhaustive search algorithm.
9633 @item tss
9634 Three step search algorithm.
9635 @item tdls
9636 Two dimensional logarithmic search algorithm.
9637 @item ntss
9638 New three step search algorithm.
9639 @item fss
9640 Four step search algorithm.
9641 @item ds
9642 Diamond search algorithm.
9643 @item hexbs
9644 Hexagon-based search algorithm.
9645 @item epzs
9646 Enhanced predictive zonal search algorithm.
9647 @item umh
9648 Uneven multi-hexagon search algorithm.
9649 @end table
9650 Default algorithm is @samp{epzs}.
9651
9652 @item mb_size
9653 Macroblock size. Default @code{16}.
9654
9655 @item search_param
9656 Motion estimation search parameter. Default @code{32}.
9657
9658 @item vsmbc
9659 Enable variable-size block motion compensation. Motion estimation is applied with smaller block sizes at object boundaries in order to make the them less blur. Default is @code{0} (disabled).
9660 @end table
9661 @end table
9662
9663 @item scd
9664 Scene change detection method. Scene change leads motion vectors to be in random direction. Scene change detection replace interpolated frames by duplicate ones. May not be needed for other modes. Following values are accepted:
9665 @table @samp
9666 @item none
9667 Disable scene change detection.
9668 @item fdiff
9669 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
9670 @end table
9671 Default method is @samp{fdiff}.
9672
9673 @item scd_threshold
9674 Scene change detection threshold. Default is @code{5.0}.
9675 @end table
9676
9677 @section mpdecimate
9678
9679 Drop frames that do not differ greatly from the previous frame in
9680 order to reduce frame rate.
9681
9682 The main use of this filter is for very-low-bitrate encoding
9683 (e.g. streaming over dialup modem), but it could in theory be used for
9684 fixing movies that were inverse-telecined incorrectly.
9685
9686 A description of the accepted options follows.
9687
9688 @table @option
9689 @item max
9690 Set the maximum number of consecutive frames which can be dropped (if
9691 positive), or the minimum interval between dropped frames (if
9692 negative). If the value is 0, the frame is dropped unregarding the
9693 number of previous sequentially dropped frames.
9694
9695 Default value is 0.
9696
9697 @item hi
9698 @item lo
9699 @item frac
9700 Set the dropping threshold values.
9701
9702 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
9703 represent actual pixel value differences, so a threshold of 64
9704 corresponds to 1 unit of difference for each pixel, or the same spread
9705 out differently over the block.
9706
9707 A frame is a candidate for dropping if no 8x8 blocks differ by more
9708 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
9709 meaning the whole image) differ by more than a threshold of @option{lo}.
9710
9711 Default value for @option{hi} is 64*12, default value for @option{lo} is
9712 64*5, and default value for @option{frac} is 0.33.
9713 @end table
9714
9715
9716 @section negate
9717
9718 Negate input video.
9719
9720 It accepts an integer in input; if non-zero it negates the
9721 alpha component (if available). The default value in input is 0.
9722
9723 @section nlmeans
9724
9725 Denoise frames using Non-Local Means algorithm.
9726
9727 Each pixel is adjusted by looking for other pixels with similar contexts. This
9728 context similarity is defined by comparing their surrounding patches of size
9729 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
9730 around the pixel.
9731
9732 Note that the research area defines centers for patches, which means some
9733 patches will be made of pixels outside that research area.
9734
9735 The filter accepts the following options.
9736
9737 @table @option
9738 @item s
9739 Set denoising strength.
9740
9741 @item p
9742 Set patch size.
9743
9744 @item pc
9745 Same as @option{p} but for chroma planes.
9746
9747 The default value is @var{0} and means automatic.
9748
9749 @item r
9750 Set research size.
9751
9752 @item rc
9753 Same as @option{r} but for chroma planes.
9754
9755 The default value is @var{0} and means automatic.
9756 @end table
9757
9758 @section nnedi
9759
9760 Deinterlace video using neural network edge directed interpolation.
9761
9762 This filter accepts the following options:
9763
9764 @table @option
9765 @item weights
9766 Mandatory option, without binary file filter can not work.
9767 Currently file can be found here:
9768 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
9769
9770 @item deint
9771 Set which frames to deinterlace, by default it is @code{all}.
9772 Can be @code{all} or @code{interlaced}.
9773
9774 @item field
9775 Set mode of operation.
9776
9777 Can be one of the following:
9778
9779 @table @samp
9780 @item af
9781 Use frame flags, both fields.
9782 @item a
9783 Use frame flags, single field.
9784 @item t
9785 Use top field only.
9786 @item b
9787 Use bottom field only.
9788 @item tf
9789 Use both fields, top first.
9790 @item bf
9791 Use both fields, bottom first.
9792 @end table
9793
9794 @item planes
9795 Set which planes to process, by default filter process all frames.
9796
9797 @item nsize
9798 Set size of local neighborhood around each pixel, used by the predictor neural
9799 network.
9800
9801 Can be one of the following:
9802
9803 @table @samp
9804 @item s8x6
9805 @item s16x6
9806 @item s32x6
9807 @item s48x6
9808 @item s8x4
9809 @item s16x4
9810 @item s32x4
9811 @end table
9812
9813 @item nns
9814 Set the number of neurons in predicctor neural network.
9815 Can be one of the following:
9816
9817 @table @samp
9818 @item n16
9819 @item n32
9820 @item n64
9821 @item n128
9822 @item n256
9823 @end table
9824
9825 @item qual
9826 Controls the number of different neural network predictions that are blended
9827 together to compute the final output value. Can be @code{fast}, default or
9828 @code{slow}.
9829
9830 @item etype
9831 Set which set of weights to use in the predictor.
9832 Can be one of the following:
9833
9834 @table @samp
9835 @item a
9836 weights trained to minimize absolute error
9837 @item s
9838 weights trained to minimize squared error
9839 @end table
9840
9841 @item pscrn
9842 Controls whether or not the prescreener neural network is used to decide
9843 which pixels should be processed by the predictor neural network and which
9844 can be handled by simple cubic interpolation.
9845 The prescreener is trained to know whether cubic interpolation will be
9846 sufficient for a pixel or whether it should be predicted by the predictor nn.
9847 The computational complexity of the prescreener nn is much less than that of
9848 the predictor nn. Since most pixels can be handled by cubic interpolation,
9849 using the prescreener generally results in much faster processing.
9850 The prescreener is pretty accurate, so the difference between using it and not
9851 using it is almost always unnoticeable.
9852
9853 Can be one of the following:
9854
9855 @table @samp
9856 @item none
9857 @item original
9858 @item new
9859 @end table
9860
9861 Default is @code{new}.
9862
9863 @item fapprox
9864 Set various debugging flags.
9865 @end table
9866
9867 @section noformat
9868
9869 Force libavfilter not to use any of the specified pixel formats for the
9870 input to the next filter.
9871
9872 It accepts the following parameters:
9873 @table @option
9874
9875 @item pix_fmts
9876 A '|'-separated list of pixel format names, such as
9877 apix_fmts=yuv420p|monow|rgb24".
9878
9879 @end table
9880
9881 @subsection Examples
9882
9883 @itemize
9884 @item
9885 Force libavfilter to use a format different from @var{yuv420p} for the
9886 input to the vflip filter:
9887 @example
9888 noformat=pix_fmts=yuv420p,vflip
9889 @end example
9890
9891 @item
9892 Convert the input video to any of the formats not contained in the list:
9893 @example
9894 noformat=yuv420p|yuv444p|yuv410p
9895 @end example
9896 @end itemize
9897
9898 @section noise
9899
9900 Add noise on video input frame.
9901
9902 The filter accepts the following options:
9903
9904 @table @option
9905 @item all_seed
9906 @item c0_seed
9907 @item c1_seed
9908 @item c2_seed
9909 @item c3_seed
9910 Set noise seed for specific pixel component or all pixel components in case
9911 of @var{all_seed}. Default value is @code{123457}.
9912
9913 @item all_strength, alls
9914 @item c0_strength, c0s
9915 @item c1_strength, c1s
9916 @item c2_strength, c2s
9917 @item c3_strength, c3s
9918 Set noise strength for specific pixel component or all pixel components in case
9919 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
9920
9921 @item all_flags, allf
9922 @item c0_flags, c0f
9923 @item c1_flags, c1f
9924 @item c2_flags, c2f
9925 @item c3_flags, c3f
9926 Set pixel component flags or set flags for all components if @var{all_flags}.
9927 Available values for component flags are:
9928 @table @samp
9929 @item a
9930 averaged temporal noise (smoother)
9931 @item p
9932 mix random noise with a (semi)regular pattern
9933 @item t
9934 temporal noise (noise pattern changes between frames)
9935 @item u
9936 uniform noise (gaussian otherwise)
9937 @end table
9938 @end table
9939
9940 @subsection Examples
9941
9942 Add temporal and uniform noise to input video:
9943 @example
9944 noise=alls=20:allf=t+u
9945 @end example
9946
9947 @section null
9948
9949 Pass the video source unchanged to the output.
9950
9951 @section ocr
9952 Optical Character Recognition
9953
9954 This filter uses Tesseract for optical character recognition.
9955
9956 It accepts the following options:
9957
9958 @table @option
9959 @item datapath
9960 Set datapath to tesseract data. Default is to use whatever was
9961 set at installation.
9962
9963 @item language
9964 Set language, default is "eng".
9965
9966 @item whitelist
9967 Set character whitelist.
9968
9969 @item blacklist
9970 Set character blacklist.
9971 @end table
9972
9973 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
9974
9975 @section ocv
9976
9977 Apply a video transform using libopencv.
9978
9979 To enable this filter, install the libopencv library and headers and
9980 configure FFmpeg with @code{--enable-libopencv}.
9981
9982 It accepts the following parameters:
9983
9984 @table @option
9985
9986 @item filter_name
9987 The name of the libopencv filter to apply.
9988
9989 @item filter_params
9990 The parameters to pass to the libopencv filter. If not specified, the default
9991 values are assumed.
9992
9993 @end table
9994
9995 Refer to the official libopencv documentation for more precise
9996 information:
9997 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
9998
9999 Several libopencv filters are supported; see the following subsections.
10000
10001 @anchor{dilate}
10002 @subsection dilate
10003
10004 Dilate an image by using a specific structuring element.
10005 It corresponds to the libopencv function @code{cvDilate}.
10006
10007 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
10008
10009 @var{struct_el} represents a structuring element, and has the syntax:
10010 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
10011
10012 @var{cols} and @var{rows} represent the number of columns and rows of
10013 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
10014 point, and @var{shape} the shape for the structuring element. @var{shape}
10015 must be "rect", "cross", "ellipse", or "custom".
10016
10017 If the value for @var{shape} is "custom", it must be followed by a
10018 string of the form "=@var{filename}". The file with name
10019 @var{filename} is assumed to represent a binary image, with each
10020 printable character corresponding to a bright pixel. When a custom
10021 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
10022 or columns and rows of the read file are assumed instead.
10023
10024 The default value for @var{struct_el} is "3x3+0x0/rect".
10025
10026 @var{nb_iterations} specifies the number of times the transform is
10027 applied to the image, and defaults to 1.
10028
10029 Some examples:
10030 @example
10031 # Use the default values
10032 ocv=dilate
10033
10034 # Dilate using a structuring element with a 5x5 cross, iterating two times
10035 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
10036
10037 # Read the shape from the file diamond.shape, iterating two times.
10038 # The file diamond.shape may contain a pattern of characters like this
10039 #   *
10040 #  ***
10041 # *****
10042 #  ***
10043 #   *
10044 # The specified columns and rows are ignored
10045 # but the anchor point coordinates are not
10046 ocv=dilate:0x0+2x2/custom=diamond.shape|2
10047 @end example
10048
10049 @subsection erode
10050
10051 Erode an image by using a specific structuring element.
10052 It corresponds to the libopencv function @code{cvErode}.
10053
10054 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
10055 with the same syntax and semantics as the @ref{dilate} filter.
10056
10057 @subsection smooth
10058
10059 Smooth the input video.
10060
10061 The filter takes the following parameters:
10062 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
10063
10064 @var{type} is the type of smooth filter to apply, and must be one of
10065 the following values: "blur", "blur_no_scale", "median", "gaussian",
10066 or "bilateral". The default value is "gaussian".
10067
10068 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
10069 depend on the smooth type. @var{param1} and
10070 @var{param2} accept integer positive values or 0. @var{param3} and
10071 @var{param4} accept floating point values.
10072
10073 The default value for @var{param1} is 3. The default value for the
10074 other parameters is 0.
10075
10076 These parameters correspond to the parameters assigned to the
10077 libopencv function @code{cvSmooth}.
10078
10079 @anchor{overlay}
10080 @section overlay
10081
10082 Overlay one video on top of another.
10083
10084 It takes two inputs and has one output. The first input is the "main"
10085 video on which the second input is overlaid.
10086
10087 It accepts the following parameters:
10088
10089 A description of the accepted options follows.
10090
10091 @table @option
10092 @item x
10093 @item y
10094 Set the expression for the x and y coordinates of the overlaid video
10095 on the main video. Default value is "0" for both expressions. In case
10096 the expression is invalid, it is set to a huge value (meaning that the
10097 overlay will not be displayed within the output visible area).
10098
10099 @item eof_action
10100 The action to take when EOF is encountered on the secondary input; it accepts
10101 one of the following values:
10102
10103 @table @option
10104 @item repeat
10105 Repeat the last frame (the default).
10106 @item endall
10107 End both streams.
10108 @item pass
10109 Pass the main input through.
10110 @end table
10111
10112 @item eval
10113 Set when the expressions for @option{x}, and @option{y} are evaluated.
10114
10115 It accepts the following values:
10116 @table @samp
10117 @item init
10118 only evaluate expressions once during the filter initialization or
10119 when a command is processed
10120
10121 @item frame
10122 evaluate expressions for each incoming frame
10123 @end table
10124
10125 Default value is @samp{frame}.
10126
10127 @item shortest
10128 If set to 1, force the output to terminate when the shortest input
10129 terminates. Default value is 0.
10130
10131 @item format
10132 Set the format for the output video.
10133
10134 It accepts the following values:
10135 @table @samp
10136 @item yuv420
10137 force YUV420 output
10138
10139 @item yuv422
10140 force YUV422 output
10141
10142 @item yuv444
10143 force YUV444 output
10144
10145 @item rgb
10146 force RGB output
10147 @end table
10148
10149 Default value is @samp{yuv420}.
10150
10151 @item rgb @emph{(deprecated)}
10152 If set to 1, force the filter to accept inputs in the RGB
10153 color space. Default value is 0. This option is deprecated, use
10154 @option{format} instead.
10155
10156 @item repeatlast
10157 If set to 1, force the filter to draw the last overlay frame over the
10158 main input until the end of the stream. A value of 0 disables this
10159 behavior. Default value is 1.
10160 @end table
10161
10162 The @option{x}, and @option{y} expressions can contain the following
10163 parameters.
10164
10165 @table @option
10166 @item main_w, W
10167 @item main_h, H
10168 The main input width and height.
10169
10170 @item overlay_w, w
10171 @item overlay_h, h
10172 The overlay input width and height.
10173
10174 @item x
10175 @item y
10176 The computed values for @var{x} and @var{y}. They are evaluated for
10177 each new frame.
10178
10179 @item hsub
10180 @item vsub
10181 horizontal and vertical chroma subsample values of the output
10182 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
10183 @var{vsub} is 1.
10184
10185 @item n
10186 the number of input frame, starting from 0
10187
10188 @item pos
10189 the position in the file of the input frame, NAN if unknown
10190
10191 @item t
10192 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
10193
10194 @end table
10195
10196 Note that the @var{n}, @var{pos}, @var{t} variables are available only
10197 when evaluation is done @emph{per frame}, and will evaluate to NAN
10198 when @option{eval} is set to @samp{init}.
10199
10200 Be aware that frames are taken from each input video in timestamp
10201 order, hence, if their initial timestamps differ, it is a good idea
10202 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
10203 have them begin in the same zero timestamp, as the example for
10204 the @var{movie} filter does.
10205
10206 You can chain together more overlays but you should test the
10207 efficiency of such approach.
10208
10209 @subsection Commands
10210
10211 This filter supports the following commands:
10212 @table @option
10213 @item x
10214 @item y
10215 Modify the x and y of the overlay input.
10216 The command accepts the same syntax of the corresponding option.
10217
10218 If the specified expression is not valid, it is kept at its current
10219 value.
10220 @end table
10221
10222 @subsection Examples
10223
10224 @itemize
10225 @item
10226 Draw the overlay at 10 pixels from the bottom right corner of the main
10227 video:
10228 @example
10229 overlay=main_w-overlay_w-10:main_h-overlay_h-10
10230 @end example
10231
10232 Using named options the example above becomes:
10233 @example
10234 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
10235 @end example
10236
10237 @item
10238 Insert a transparent PNG logo in the bottom left corner of the input,
10239 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
10240 @example
10241 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
10242 @end example
10243
10244 @item
10245 Insert 2 different transparent PNG logos (second logo on bottom
10246 right corner) using the @command{ffmpeg} tool:
10247 @example
10248 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
10249 @end example
10250
10251 @item
10252 Add a transparent color layer on top of the main video; @code{WxH}
10253 must specify the size of the main input to the overlay filter:
10254 @example
10255 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
10256 @end example
10257
10258 @item
10259 Play an original video and a filtered version (here with the deshake
10260 filter) side by side using the @command{ffplay} tool:
10261 @example
10262 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
10263 @end example
10264
10265 The above command is the same as:
10266 @example
10267 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
10268 @end example
10269
10270 @item
10271 Make a sliding overlay appearing from the left to the right top part of the
10272 screen starting since time 2:
10273 @example
10274 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
10275 @end example
10276
10277 @item
10278 Compose output by putting two input videos side to side:
10279 @example
10280 ffmpeg -i left.avi -i right.avi -filter_complex "
10281 nullsrc=size=200x100 [background];
10282 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
10283 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
10284 [background][left]       overlay=shortest=1       [background+left];
10285 [background+left][right] overlay=shortest=1:x=100 [left+right]
10286 "
10287 @end example
10288
10289 @item
10290 Mask 10-20 seconds of a video by applying the delogo filter to a section
10291 @example
10292 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
10293 -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]'
10294 masked.avi
10295 @end example
10296
10297 @item
10298 Chain several overlays in cascade:
10299 @example
10300 nullsrc=s=200x200 [bg];
10301 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
10302 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
10303 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
10304 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
10305 [in3] null,       [mid2] overlay=100:100 [out0]
10306 @end example
10307
10308 @end itemize
10309
10310 @section owdenoise
10311
10312 Apply Overcomplete Wavelet denoiser.
10313
10314 The filter accepts the following options:
10315
10316 @table @option
10317 @item depth
10318 Set depth.
10319
10320 Larger depth values will denoise lower frequency components more, but
10321 slow down filtering.
10322
10323 Must be an int in the range 8-16, default is @code{8}.
10324
10325 @item luma_strength, ls
10326 Set luma strength.
10327
10328 Must be a double value in the range 0-1000, default is @code{1.0}.
10329
10330 @item chroma_strength, cs
10331 Set chroma strength.
10332
10333 Must be a double value in the range 0-1000, default is @code{1.0}.
10334 @end table
10335
10336 @anchor{pad}
10337 @section pad
10338
10339 Add paddings to the input image, and place the original input at the
10340 provided @var{x}, @var{y} coordinates.
10341
10342 It accepts the following parameters:
10343
10344 @table @option
10345 @item width, w
10346 @item height, h
10347 Specify an expression for the size of the output image with the
10348 paddings added. If the value for @var{width} or @var{height} is 0, the
10349 corresponding input size is used for the output.
10350
10351 The @var{width} expression can reference the value set by the
10352 @var{height} expression, and vice versa.
10353
10354 The default value of @var{width} and @var{height} is 0.
10355
10356 @item x
10357 @item y
10358 Specify the offsets to place the input image at within the padded area,
10359 with respect to the top/left border of the output image.
10360
10361 The @var{x} expression can reference the value set by the @var{y}
10362 expression, and vice versa.
10363
10364 The default value of @var{x} and @var{y} is 0.
10365
10366 @item color
10367 Specify the color of the padded area. For the syntax of this option,
10368 check the "Color" section in the ffmpeg-utils manual.
10369
10370 The default value of @var{color} is "black".
10371 @end table
10372
10373 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
10374 options are expressions containing the following constants:
10375
10376 @table @option
10377 @item in_w
10378 @item in_h
10379 The input video width and height.
10380
10381 @item iw
10382 @item ih
10383 These are the same as @var{in_w} and @var{in_h}.
10384
10385 @item out_w
10386 @item out_h
10387 The output width and height (the size of the padded area), as
10388 specified by the @var{width} and @var{height} expressions.
10389
10390 @item ow
10391 @item oh
10392 These are the same as @var{out_w} and @var{out_h}.
10393
10394 @item x
10395 @item y
10396 The x and y offsets as specified by the @var{x} and @var{y}
10397 expressions, or NAN if not yet specified.
10398
10399 @item a
10400 same as @var{iw} / @var{ih}
10401
10402 @item sar
10403 input sample aspect ratio
10404
10405 @item dar
10406 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
10407
10408 @item hsub
10409 @item vsub
10410 The horizontal and vertical chroma subsample values. For example for the
10411 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10412 @end table
10413
10414 @subsection Examples
10415
10416 @itemize
10417 @item
10418 Add paddings with the color "violet" to the input video. The output video
10419 size is 640x480, and the top-left corner of the input video is placed at
10420 column 0, row 40
10421 @example
10422 pad=640:480:0:40:violet
10423 @end example
10424
10425 The example above is equivalent to the following command:
10426 @example
10427 pad=width=640:height=480:x=0:y=40:color=violet
10428 @end example
10429
10430 @item
10431 Pad the input to get an output with dimensions increased by 3/2,
10432 and put the input video at the center of the padded area:
10433 @example
10434 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
10435 @end example
10436
10437 @item
10438 Pad the input to get a squared output with size equal to the maximum
10439 value between the input width and height, and put the input video at
10440 the center of the padded area:
10441 @example
10442 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
10443 @end example
10444
10445 @item
10446 Pad the input to get a final w/h ratio of 16:9:
10447 @example
10448 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
10449 @end example
10450
10451 @item
10452 In case of anamorphic video, in order to set the output display aspect
10453 correctly, it is necessary to use @var{sar} in the expression,
10454 according to the relation:
10455 @example
10456 (ih * X / ih) * sar = output_dar
10457 X = output_dar / sar
10458 @end example
10459
10460 Thus the previous example needs to be modified to:
10461 @example
10462 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
10463 @end example
10464
10465 @item
10466 Double the output size and put the input video in the bottom-right
10467 corner of the output padded area:
10468 @example
10469 pad="2*iw:2*ih:ow-iw:oh-ih"
10470 @end example
10471 @end itemize
10472
10473 @anchor{palettegen}
10474 @section palettegen
10475
10476 Generate one palette for a whole video stream.
10477
10478 It accepts the following options:
10479
10480 @table @option
10481 @item max_colors
10482 Set the maximum number of colors to quantize in the palette.
10483 Note: the palette will still contain 256 colors; the unused palette entries
10484 will be black.
10485
10486 @item reserve_transparent
10487 Create a palette of 255 colors maximum and reserve the last one for
10488 transparency. Reserving the transparency color is useful for GIF optimization.
10489 If not set, the maximum of colors in the palette will be 256. You probably want
10490 to disable this option for a standalone image.
10491 Set by default.
10492
10493 @item stats_mode
10494 Set statistics mode.
10495
10496 It accepts the following values:
10497 @table @samp
10498 @item full
10499 Compute full frame histograms.
10500 @item diff
10501 Compute histograms only for the part that differs from previous frame. This
10502 might be relevant to give more importance to the moving part of your input if
10503 the background is static.
10504 @item single
10505 Compute new histogram for each frame.
10506 @end table
10507
10508 Default value is @var{full}.
10509 @end table
10510
10511 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
10512 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
10513 color quantization of the palette. This information is also visible at
10514 @var{info} logging level.
10515
10516 @subsection Examples
10517
10518 @itemize
10519 @item
10520 Generate a representative palette of a given video using @command{ffmpeg}:
10521 @example
10522 ffmpeg -i input.mkv -vf palettegen palette.png
10523 @end example
10524 @end itemize
10525
10526 @section paletteuse
10527
10528 Use a palette to downsample an input video stream.
10529
10530 The filter takes two inputs: one video stream and a palette. The palette must
10531 be a 256 pixels image.
10532
10533 It accepts the following options:
10534
10535 @table @option
10536 @item dither
10537 Select dithering mode. Available algorithms are:
10538 @table @samp
10539 @item bayer
10540 Ordered 8x8 bayer dithering (deterministic)
10541 @item heckbert
10542 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
10543 Note: this dithering is sometimes considered "wrong" and is included as a
10544 reference.
10545 @item floyd_steinberg
10546 Floyd and Steingberg dithering (error diffusion)
10547 @item sierra2
10548 Frankie Sierra dithering v2 (error diffusion)
10549 @item sierra2_4a
10550 Frankie Sierra dithering v2 "Lite" (error diffusion)
10551 @end table
10552
10553 Default is @var{sierra2_4a}.
10554
10555 @item bayer_scale
10556 When @var{bayer} dithering is selected, this option defines the scale of the
10557 pattern (how much the crosshatch pattern is visible). A low value means more
10558 visible pattern for less banding, and higher value means less visible pattern
10559 at the cost of more banding.
10560
10561 The option must be an integer value in the range [0,5]. Default is @var{2}.
10562
10563 @item diff_mode
10564 If set, define the zone to process
10565
10566 @table @samp
10567 @item rectangle
10568 Only the changing rectangle will be reprocessed. This is similar to GIF
10569 cropping/offsetting compression mechanism. This option can be useful for speed
10570 if only a part of the image is changing, and has use cases such as limiting the
10571 scope of the error diffusal @option{dither} to the rectangle that bounds the
10572 moving scene (it leads to more deterministic output if the scene doesn't change
10573 much, and as a result less moving noise and better GIF compression).
10574 @end table
10575
10576 Default is @var{none}.
10577
10578 @item new
10579 Take new palette for each output frame.
10580 @end table
10581
10582 @subsection Examples
10583
10584 @itemize
10585 @item
10586 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
10587 using @command{ffmpeg}:
10588 @example
10589 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
10590 @end example
10591 @end itemize
10592
10593 @section perspective
10594
10595 Correct perspective of video not recorded perpendicular to the screen.
10596
10597 A description of the accepted parameters follows.
10598
10599 @table @option
10600 @item x0
10601 @item y0
10602 @item x1
10603 @item y1
10604 @item x2
10605 @item y2
10606 @item x3
10607 @item y3
10608 Set coordinates expression for top left, top right, bottom left and bottom right corners.
10609 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
10610 If the @code{sense} option is set to @code{source}, then the specified points will be sent
10611 to the corners of the destination. If the @code{sense} option is set to @code{destination},
10612 then the corners of the source will be sent to the specified coordinates.
10613
10614 The expressions can use the following variables:
10615
10616 @table @option
10617 @item W
10618 @item H
10619 the width and height of video frame.
10620 @item in
10621 Input frame count.
10622 @item on
10623 Output frame count.
10624 @end table
10625
10626 @item interpolation
10627 Set interpolation for perspective correction.
10628
10629 It accepts the following values:
10630 @table @samp
10631 @item linear
10632 @item cubic
10633 @end table
10634
10635 Default value is @samp{linear}.
10636
10637 @item sense
10638 Set interpretation of coordinate options.
10639
10640 It accepts the following values:
10641 @table @samp
10642 @item 0, source
10643
10644 Send point in the source specified by the given coordinates to
10645 the corners of the destination.
10646
10647 @item 1, destination
10648
10649 Send the corners of the source to the point in the destination specified
10650 by the given coordinates.
10651
10652 Default value is @samp{source}.
10653 @end table
10654
10655 @item eval
10656 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
10657
10658 It accepts the following values:
10659 @table @samp
10660 @item init
10661 only evaluate expressions once during the filter initialization or
10662 when a command is processed
10663
10664 @item frame
10665 evaluate expressions for each incoming frame
10666 @end table
10667
10668 Default value is @samp{init}.
10669 @end table
10670
10671 @section phase
10672
10673 Delay interlaced video by one field time so that the field order changes.
10674
10675 The intended use is to fix PAL movies that have been captured with the
10676 opposite field order to the film-to-video transfer.
10677
10678 A description of the accepted parameters follows.
10679
10680 @table @option
10681 @item mode
10682 Set phase mode.
10683
10684 It accepts the following values:
10685 @table @samp
10686 @item t
10687 Capture field order top-first, transfer bottom-first.
10688 Filter will delay the bottom field.
10689
10690 @item b
10691 Capture field order bottom-first, transfer top-first.
10692 Filter will delay the top field.
10693
10694 @item p
10695 Capture and transfer with the same field order. This mode only exists
10696 for the documentation of the other options to refer to, but if you
10697 actually select it, the filter will faithfully do nothing.
10698
10699 @item a
10700 Capture field order determined automatically by field flags, transfer
10701 opposite.
10702 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
10703 basis using field flags. If no field information is available,
10704 then this works just like @samp{u}.
10705
10706 @item u
10707 Capture unknown or varying, transfer opposite.
10708 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
10709 analyzing the images and selecting the alternative that produces best
10710 match between the fields.
10711
10712 @item T
10713 Capture top-first, transfer unknown or varying.
10714 Filter selects among @samp{t} and @samp{p} using image analysis.
10715
10716 @item B
10717 Capture bottom-first, transfer unknown or varying.
10718 Filter selects among @samp{b} and @samp{p} using image analysis.
10719
10720 @item A
10721 Capture determined by field flags, transfer unknown or varying.
10722 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
10723 image analysis. If no field information is available, then this works just
10724 like @samp{U}. This is the default mode.
10725
10726 @item U
10727 Both capture and transfer unknown or varying.
10728 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
10729 @end table
10730 @end table
10731
10732 @section pixdesctest
10733
10734 Pixel format descriptor test filter, mainly useful for internal
10735 testing. The output video should be equal to the input video.
10736
10737 For example:
10738 @example
10739 format=monow, pixdesctest
10740 @end example
10741
10742 can be used to test the monowhite pixel format descriptor definition.
10743
10744 @section pp
10745
10746 Enable the specified chain of postprocessing subfilters using libpostproc. This
10747 library should be automatically selected with a GPL build (@code{--enable-gpl}).
10748 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
10749 Each subfilter and some options have a short and a long name that can be used
10750 interchangeably, i.e. dr/dering are the same.
10751
10752 The filters accept the following options:
10753
10754 @table @option
10755 @item subfilters
10756 Set postprocessing subfilters string.
10757 @end table
10758
10759 All subfilters share common options to determine their scope:
10760
10761 @table @option
10762 @item a/autoq
10763 Honor the quality commands for this subfilter.
10764
10765 @item c/chrom
10766 Do chrominance filtering, too (default).
10767
10768 @item y/nochrom
10769 Do luminance filtering only (no chrominance).
10770
10771 @item n/noluma
10772 Do chrominance filtering only (no luminance).
10773 @end table
10774
10775 These options can be appended after the subfilter name, separated by a '|'.
10776
10777 Available subfilters are:
10778
10779 @table @option
10780 @item hb/hdeblock[|difference[|flatness]]
10781 Horizontal deblocking filter
10782 @table @option
10783 @item difference
10784 Difference factor where higher values mean more deblocking (default: @code{32}).
10785 @item flatness
10786 Flatness threshold where lower values mean more deblocking (default: @code{39}).
10787 @end table
10788
10789 @item vb/vdeblock[|difference[|flatness]]
10790 Vertical deblocking filter
10791 @table @option
10792 @item difference
10793 Difference factor where higher values mean more deblocking (default: @code{32}).
10794 @item flatness
10795 Flatness threshold where lower values mean more deblocking (default: @code{39}).
10796 @end table
10797
10798 @item ha/hadeblock[|difference[|flatness]]
10799 Accurate horizontal deblocking filter
10800 @table @option
10801 @item difference
10802 Difference factor where higher values mean more deblocking (default: @code{32}).
10803 @item flatness
10804 Flatness threshold where lower values mean more deblocking (default: @code{39}).
10805 @end table
10806
10807 @item va/vadeblock[|difference[|flatness]]
10808 Accurate vertical deblocking filter
10809 @table @option
10810 @item difference
10811 Difference factor where higher values mean more deblocking (default: @code{32}).
10812 @item flatness
10813 Flatness threshold where lower values mean more deblocking (default: @code{39}).
10814 @end table
10815 @end table
10816
10817 The horizontal and vertical deblocking filters share the difference and
10818 flatness values so you cannot set different horizontal and vertical
10819 thresholds.
10820
10821 @table @option
10822 @item h1/x1hdeblock
10823 Experimental horizontal deblocking filter
10824
10825 @item v1/x1vdeblock
10826 Experimental vertical deblocking filter
10827
10828 @item dr/dering
10829 Deringing filter
10830
10831 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
10832 @table @option
10833 @item threshold1
10834 larger -> stronger filtering
10835 @item threshold2
10836 larger -> stronger filtering
10837 @item threshold3
10838 larger -> stronger filtering
10839 @end table
10840
10841 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
10842 @table @option
10843 @item f/fullyrange
10844 Stretch luminance to @code{0-255}.
10845 @end table
10846
10847 @item lb/linblenddeint
10848 Linear blend deinterlacing filter that deinterlaces the given block by
10849 filtering all lines with a @code{(1 2 1)} filter.
10850
10851 @item li/linipoldeint
10852 Linear interpolating deinterlacing filter that deinterlaces the given block by
10853 linearly interpolating every second line.
10854
10855 @item ci/cubicipoldeint
10856 Cubic interpolating deinterlacing filter deinterlaces the given block by
10857 cubically interpolating every second line.
10858
10859 @item md/mediandeint
10860 Median deinterlacing filter that deinterlaces the given block by applying a
10861 median filter to every second line.
10862
10863 @item fd/ffmpegdeint
10864 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
10865 second line with a @code{(-1 4 2 4 -1)} filter.
10866
10867 @item l5/lowpass5
10868 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
10869 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
10870
10871 @item fq/forceQuant[|quantizer]
10872 Overrides the quantizer table from the input with the constant quantizer you
10873 specify.
10874 @table @option
10875 @item quantizer
10876 Quantizer to use
10877 @end table
10878
10879 @item de/default
10880 Default pp filter combination (@code{hb|a,vb|a,dr|a})
10881
10882 @item fa/fast
10883 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
10884
10885 @item ac
10886 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
10887 @end table
10888
10889 @subsection Examples
10890
10891 @itemize
10892 @item
10893 Apply horizontal and vertical deblocking, deringing and automatic
10894 brightness/contrast:
10895 @example
10896 pp=hb/vb/dr/al
10897 @end example
10898
10899 @item
10900 Apply default filters without brightness/contrast correction:
10901 @example
10902 pp=de/-al
10903 @end example
10904
10905 @item
10906 Apply default filters and temporal denoiser:
10907 @example
10908 pp=default/tmpnoise|1|2|3
10909 @end example
10910
10911 @item
10912 Apply deblocking on luminance only, and switch vertical deblocking on or off
10913 automatically depending on available CPU time:
10914 @example
10915 pp=hb|y/vb|a
10916 @end example
10917 @end itemize
10918
10919 @section pp7
10920 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
10921 similar to spp = 6 with 7 point DCT, where only the center sample is
10922 used after IDCT.
10923
10924 The filter accepts the following options:
10925
10926 @table @option
10927 @item qp
10928 Force a constant quantization parameter. It accepts an integer in range
10929 0 to 63. If not set, the filter will use the QP from the video stream
10930 (if available).
10931
10932 @item mode
10933 Set thresholding mode. Available modes are:
10934
10935 @table @samp
10936 @item hard
10937 Set hard thresholding.
10938 @item soft
10939 Set soft thresholding (better de-ringing effect, but likely blurrier).
10940 @item medium
10941 Set medium thresholding (good results, default).
10942 @end table
10943 @end table
10944
10945 @section prewitt
10946 Apply prewitt operator to input video stream.
10947
10948 The filter accepts the following option:
10949
10950 @table @option
10951 @item planes
10952 Set which planes will be processed, unprocessed planes will be copied.
10953 By default value 0xf, all planes will be processed.
10954
10955 @item scale
10956 Set value which will be multiplied with filtered result.
10957
10958 @item delta
10959 Set value which will be added to filtered result.
10960 @end table
10961
10962 @section psnr
10963
10964 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
10965 Ratio) between two input videos.
10966
10967 This filter takes in input two input videos, the first input is
10968 considered the "main" source and is passed unchanged to the
10969 output. The second input is used as a "reference" video for computing
10970 the PSNR.
10971
10972 Both video inputs must have the same resolution and pixel format for
10973 this filter to work correctly. Also it assumes that both inputs
10974 have the same number of frames, which are compared one by one.
10975
10976 The obtained average PSNR is printed through the logging system.
10977
10978 The filter stores the accumulated MSE (mean squared error) of each
10979 frame, and at the end of the processing it is averaged across all frames
10980 equally, and the following formula is applied to obtain the PSNR:
10981
10982 @example
10983 PSNR = 10*log10(MAX^2/MSE)
10984 @end example
10985
10986 Where MAX is the average of the maximum values of each component of the
10987 image.
10988
10989 The description of the accepted parameters follows.
10990
10991 @table @option
10992 @item stats_file, f
10993 If specified the filter will use the named file to save the PSNR of
10994 each individual frame. When filename equals "-" the data is sent to
10995 standard output.
10996
10997 @item stats_version
10998 Specifies which version of the stats file format to use. Details of
10999 each format are written below.
11000 Default value is 1.
11001
11002 @item stats_add_max
11003 Determines whether the max value is output to the stats log.
11004 Default value is 0.
11005 Requires stats_version >= 2. If this is set and stats_version < 2,
11006 the filter will return an error.
11007 @end table
11008
11009 The file printed if @var{stats_file} is selected, contains a sequence of
11010 key/value pairs of the form @var{key}:@var{value} for each compared
11011 couple of frames.
11012
11013 If a @var{stats_version} greater than 1 is specified, a header line precedes
11014 the list of per-frame-pair stats, with key value pairs following the frame
11015 format with the following parameters:
11016
11017 @table @option
11018 @item psnr_log_version
11019 The version of the log file format. Will match @var{stats_version}.
11020
11021 @item fields
11022 A comma separated list of the per-frame-pair parameters included in
11023 the log.
11024 @end table
11025
11026 A description of each shown per-frame-pair parameter follows:
11027
11028 @table @option
11029 @item n
11030 sequential number of the input frame, starting from 1
11031
11032 @item mse_avg
11033 Mean Square Error pixel-by-pixel average difference of the compared
11034 frames, averaged over all the image components.
11035
11036 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_g, mse_a
11037 Mean Square Error pixel-by-pixel average difference of the compared
11038 frames for the component specified by the suffix.
11039
11040 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
11041 Peak Signal to Noise ratio of the compared frames for the component
11042 specified by the suffix.
11043
11044 @item max_avg, max_y, max_u, max_v
11045 Maximum allowed value for each channel, and average over all
11046 channels.
11047 @end table
11048
11049 For example:
11050 @example
11051 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
11052 [main][ref] psnr="stats_file=stats.log" [out]
11053 @end example
11054
11055 On this example the input file being processed is compared with the
11056 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
11057 is stored in @file{stats.log}.
11058
11059 @anchor{pullup}
11060 @section pullup
11061
11062 Pulldown reversal (inverse telecine) filter, capable of handling mixed
11063 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
11064 content.
11065
11066 The pullup filter is designed to take advantage of future context in making
11067 its decisions. This filter is stateless in the sense that it does not lock
11068 onto a pattern to follow, but it instead looks forward to the following
11069 fields in order to identify matches and rebuild progressive frames.
11070
11071 To produce content with an even framerate, insert the fps filter after
11072 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
11073 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
11074
11075 The filter accepts the following options:
11076
11077 @table @option
11078 @item jl
11079 @item jr
11080 @item jt
11081 @item jb
11082 These options set the amount of "junk" to ignore at the left, right, top, and
11083 bottom of the image, respectively. Left and right are in units of 8 pixels,
11084 while top and bottom are in units of 2 lines.
11085 The default is 8 pixels on each side.
11086
11087 @item sb
11088 Set the strict breaks. Setting this option to 1 will reduce the chances of
11089 filter generating an occasional mismatched frame, but it may also cause an
11090 excessive number of frames to be dropped during high motion sequences.
11091 Conversely, setting it to -1 will make filter match fields more easily.
11092 This may help processing of video where there is slight blurring between
11093 the fields, but may also cause there to be interlaced frames in the output.
11094 Default value is @code{0}.
11095
11096 @item mp
11097 Set the metric plane to use. It accepts the following values:
11098 @table @samp
11099 @item l
11100 Use luma plane.
11101
11102 @item u
11103 Use chroma blue plane.
11104
11105 @item v
11106 Use chroma red plane.
11107 @end table
11108
11109 This option may be set to use chroma plane instead of the default luma plane
11110 for doing filter's computations. This may improve accuracy on very clean
11111 source material, but more likely will decrease accuracy, especially if there
11112 is chroma noise (rainbow effect) or any grayscale video.
11113 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
11114 load and make pullup usable in realtime on slow machines.
11115 @end table
11116
11117 For best results (without duplicated frames in the output file) it is
11118 necessary to change the output frame rate. For example, to inverse
11119 telecine NTSC input:
11120 @example
11121 ffmpeg -i input -vf pullup -r 24000/1001 ...
11122 @end example
11123
11124 @section qp
11125
11126 Change video quantization parameters (QP).
11127
11128 The filter accepts the following option:
11129
11130 @table @option
11131 @item qp
11132 Set expression for quantization parameter.
11133 @end table
11134
11135 The expression is evaluated through the eval API and can contain, among others,
11136 the following constants:
11137
11138 @table @var
11139 @item known
11140 1 if index is not 129, 0 otherwise.
11141
11142 @item qp
11143 Sequentional index starting from -129 to 128.
11144 @end table
11145
11146 @subsection Examples
11147
11148 @itemize
11149 @item
11150 Some equation like:
11151 @example
11152 qp=2+2*sin(PI*qp)
11153 @end example
11154 @end itemize
11155
11156 @section random
11157
11158 Flush video frames from internal cache of frames into a random order.
11159 No frame is discarded.
11160 Inspired by @ref{frei0r} nervous filter.
11161
11162 @table @option
11163 @item frames
11164 Set size in number of frames of internal cache, in range from @code{2} to
11165 @code{512}. Default is @code{30}.
11166
11167 @item seed
11168 Set seed for random number generator, must be an integer included between
11169 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
11170 less than @code{0}, the filter will try to use a good random seed on a
11171 best effort basis.
11172 @end table
11173
11174 @section readvitc
11175
11176 Read vertical interval timecode (VITC) information from the top lines of a
11177 video frame.
11178
11179 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
11180 timecode value, if a valid timecode has been detected. Further metadata key
11181 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
11182 timecode data has been found or not.
11183
11184 This filter accepts the following options:
11185
11186 @table @option
11187 @item scan_max
11188 Set the maximum number of lines to scan for VITC data. If the value is set to
11189 @code{-1} the full video frame is scanned. Default is @code{45}.
11190
11191 @item thr_b
11192 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
11193 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
11194
11195 @item thr_w
11196 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
11197 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
11198 @end table
11199
11200 @subsection Examples
11201
11202 @itemize
11203 @item
11204 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
11205 draw @code{--:--:--:--} as a placeholder:
11206 @example
11207 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
11208 @end example
11209 @end itemize
11210
11211 @section remap
11212
11213 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
11214
11215 Destination pixel at position (X, Y) will be picked from source (x, y) position
11216 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
11217 value for pixel will be used for destination pixel.
11218
11219 Xmap and Ymap input video streams must be of same dimensions. Output video stream
11220 will have Xmap/Ymap video stream dimensions.
11221 Xmap and Ymap input video streams are 16bit depth, single channel.
11222
11223 @section removegrain
11224
11225 The removegrain filter is a spatial denoiser for progressive video.
11226
11227 @table @option
11228 @item m0
11229 Set mode for the first plane.
11230
11231 @item m1
11232 Set mode for the second plane.
11233
11234 @item m2
11235 Set mode for the third plane.
11236
11237 @item m3
11238 Set mode for the fourth plane.
11239 @end table
11240
11241 Range of mode is from 0 to 24. Description of each mode follows:
11242
11243 @table @var
11244 @item 0
11245 Leave input plane unchanged. Default.
11246
11247 @item 1
11248 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
11249
11250 @item 2
11251 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
11252
11253 @item 3
11254 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
11255
11256 @item 4
11257 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
11258 This is equivalent to a median filter.
11259
11260 @item 5
11261 Line-sensitive clipping giving the minimal change.
11262
11263 @item 6
11264 Line-sensitive clipping, intermediate.
11265
11266 @item 7
11267 Line-sensitive clipping, intermediate.
11268
11269 @item 8
11270 Line-sensitive clipping, intermediate.
11271
11272 @item 9
11273 Line-sensitive clipping on a line where the neighbours pixels are the closest.
11274
11275 @item 10
11276 Replaces the target pixel with the closest neighbour.
11277
11278 @item 11
11279 [1 2 1] horizontal and vertical kernel blur.
11280
11281 @item 12
11282 Same as mode 11.
11283
11284 @item 13
11285 Bob mode, interpolates top field from the line where the neighbours
11286 pixels are the closest.
11287
11288 @item 14
11289 Bob mode, interpolates bottom field from the line where the neighbours
11290 pixels are the closest.
11291
11292 @item 15
11293 Bob mode, interpolates top field. Same as 13 but with a more complicated
11294 interpolation formula.
11295
11296 @item 16
11297 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
11298 interpolation formula.
11299
11300 @item 17
11301 Clips the pixel with the minimum and maximum of respectively the maximum and
11302 minimum of each pair of opposite neighbour pixels.
11303
11304 @item 18
11305 Line-sensitive clipping using opposite neighbours whose greatest distance from
11306 the current pixel is minimal.
11307
11308 @item 19
11309 Replaces the pixel with the average of its 8 neighbours.
11310
11311 @item 20
11312 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
11313
11314 @item 21
11315 Clips pixels using the averages of opposite neighbour.
11316
11317 @item 22
11318 Same as mode 21 but simpler and faster.
11319
11320 @item 23
11321 Small edge and halo removal, but reputed useless.
11322
11323 @item 24
11324 Similar as 23.
11325 @end table
11326
11327 @section removelogo
11328
11329 Suppress a TV station logo, using an image file to determine which
11330 pixels comprise the logo. It works by filling in the pixels that
11331 comprise the logo with neighboring pixels.
11332
11333 The filter accepts the following options:
11334
11335 @table @option
11336 @item filename, f
11337 Set the filter bitmap file, which can be any image format supported by
11338 libavformat. The width and height of the image file must match those of the
11339 video stream being processed.
11340 @end table
11341
11342 Pixels in the provided bitmap image with a value of zero are not
11343 considered part of the logo, non-zero pixels are considered part of
11344 the logo. If you use white (255) for the logo and black (0) for the
11345 rest, you will be safe. For making the filter bitmap, it is
11346 recommended to take a screen capture of a black frame with the logo
11347 visible, and then using a threshold filter followed by the erode
11348 filter once or twice.
11349
11350 If needed, little splotches can be fixed manually. Remember that if
11351 logo pixels are not covered, the filter quality will be much
11352 reduced. Marking too many pixels as part of the logo does not hurt as
11353 much, but it will increase the amount of blurring needed to cover over
11354 the image and will destroy more information than necessary, and extra
11355 pixels will slow things down on a large logo.
11356
11357 @section repeatfields
11358
11359 This filter uses the repeat_field flag from the Video ES headers and hard repeats
11360 fields based on its value.
11361
11362 @section reverse
11363
11364 Reverse a video clip.
11365
11366 Warning: This filter requires memory to buffer the entire clip, so trimming
11367 is suggested.
11368
11369 @subsection Examples
11370
11371 @itemize
11372 @item
11373 Take the first 5 seconds of a clip, and reverse it.
11374 @example
11375 trim=end=5,reverse
11376 @end example
11377 @end itemize
11378
11379 @section rotate
11380
11381 Rotate video by an arbitrary angle expressed in radians.
11382
11383 The filter accepts the following options:
11384
11385 A description of the optional parameters follows.
11386 @table @option
11387 @item angle, a
11388 Set an expression for the angle by which to rotate the input video
11389 clockwise, expressed as a number of radians. A negative value will
11390 result in a counter-clockwise rotation. By default it is set to "0".
11391
11392 This expression is evaluated for each frame.
11393
11394 @item out_w, ow
11395 Set the output width expression, default value is "iw".
11396 This expression is evaluated just once during configuration.
11397
11398 @item out_h, oh
11399 Set the output height expression, default value is "ih".
11400 This expression is evaluated just once during configuration.
11401
11402 @item bilinear
11403 Enable bilinear interpolation if set to 1, a value of 0 disables
11404 it. Default value is 1.
11405
11406 @item fillcolor, c
11407 Set the color used to fill the output area not covered by the rotated
11408 image. For the general syntax of this option, check the "Color" section in the
11409 ffmpeg-utils manual. If the special value "none" is selected then no
11410 background is printed (useful for example if the background is never shown).
11411
11412 Default value is "black".
11413 @end table
11414
11415 The expressions for the angle and the output size can contain the
11416 following constants and functions:
11417
11418 @table @option
11419 @item n
11420 sequential number of the input frame, starting from 0. It is always NAN
11421 before the first frame is filtered.
11422
11423 @item t
11424 time in seconds of the input frame, it is set to 0 when the filter is
11425 configured. It is always NAN before the first frame is filtered.
11426
11427 @item hsub
11428 @item vsub
11429 horizontal and vertical chroma subsample values. For example for the
11430 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
11431
11432 @item in_w, iw
11433 @item in_h, ih
11434 the input video width and height
11435
11436 @item out_w, ow
11437 @item out_h, oh
11438 the output width and height, that is the size of the padded area as
11439 specified by the @var{width} and @var{height} expressions
11440
11441 @item rotw(a)
11442 @item roth(a)
11443 the minimal width/height required for completely containing the input
11444 video rotated by @var{a} radians.
11445
11446 These are only available when computing the @option{out_w} and
11447 @option{out_h} expressions.
11448 @end table
11449
11450 @subsection Examples
11451
11452 @itemize
11453 @item
11454 Rotate the input by PI/6 radians clockwise:
11455 @example
11456 rotate=PI/6
11457 @end example
11458
11459 @item
11460 Rotate the input by PI/6 radians counter-clockwise:
11461 @example
11462 rotate=-PI/6
11463 @end example
11464
11465 @item
11466 Rotate the input by 45 degrees clockwise:
11467 @example
11468 rotate=45*PI/180
11469 @end example
11470
11471 @item
11472 Apply a constant rotation with period T, starting from an angle of PI/3:
11473 @example
11474 rotate=PI/3+2*PI*t/T
11475 @end example
11476
11477 @item
11478 Make the input video rotation oscillating with a period of T
11479 seconds and an amplitude of A radians:
11480 @example
11481 rotate=A*sin(2*PI/T*t)
11482 @end example
11483
11484 @item
11485 Rotate the video, output size is chosen so that the whole rotating
11486 input video is always completely contained in the output:
11487 @example
11488 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
11489 @end example
11490
11491 @item
11492 Rotate the video, reduce the output size so that no background is ever
11493 shown:
11494 @example
11495 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
11496 @end example
11497 @end itemize
11498
11499 @subsection Commands
11500
11501 The filter supports the following commands:
11502
11503 @table @option
11504 @item a, angle
11505 Set the angle expression.
11506 The command accepts the same syntax of the corresponding option.
11507
11508 If the specified expression is not valid, it is kept at its current
11509 value.
11510 @end table
11511
11512 @section sab
11513
11514 Apply Shape Adaptive Blur.
11515
11516 The filter accepts the following options:
11517
11518 @table @option
11519 @item luma_radius, lr
11520 Set luma blur filter strength, must be a value in range 0.1-4.0, default
11521 value is 1.0. A greater value will result in a more blurred image, and
11522 in slower processing.
11523
11524 @item luma_pre_filter_radius, lpfr
11525 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
11526 value is 1.0.
11527
11528 @item luma_strength, ls
11529 Set luma maximum difference between pixels to still be considered, must
11530 be a value in the 0.1-100.0 range, default value is 1.0.
11531
11532 @item chroma_radius, cr
11533 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
11534 greater value will result in a more blurred image, and in slower
11535 processing.
11536
11537 @item chroma_pre_filter_radius, cpfr
11538 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
11539
11540 @item chroma_strength, cs
11541 Set chroma maximum difference between pixels to still be considered,
11542 must be a value in the -0.9-100.0 range.
11543 @end table
11544
11545 Each chroma option value, if not explicitly specified, is set to the
11546 corresponding luma option value.
11547
11548 @anchor{scale}
11549 @section scale
11550
11551 Scale (resize) the input video, using the libswscale library.
11552
11553 The scale filter forces the output display aspect ratio to be the same
11554 of the input, by changing the output sample aspect ratio.
11555
11556 If the input image format is different from the format requested by
11557 the next filter, the scale filter will convert the input to the
11558 requested format.
11559
11560 @subsection Options
11561 The filter accepts the following options, or any of the options
11562 supported by the libswscale scaler.
11563
11564 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
11565 the complete list of scaler options.
11566
11567 @table @option
11568 @item width, w
11569 @item height, h
11570 Set the output video dimension expression. Default value is the input
11571 dimension.
11572
11573 If the value is 0, the input width is used for the output.
11574
11575 If one of the values is -1, the scale filter will use a value that
11576 maintains the aspect ratio of the input image, calculated from the
11577 other specified dimension. If both of them are -1, the input size is
11578 used
11579
11580 If one of the values is -n with n > 1, the scale filter will also use a value
11581 that maintains the aspect ratio of the input image, calculated from the other
11582 specified dimension. After that it will, however, make sure that the calculated
11583 dimension is divisible by n and adjust the value if necessary.
11584
11585 See below for the list of accepted constants for use in the dimension
11586 expression.
11587
11588 @item eval
11589 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
11590
11591 @table @samp
11592 @item init
11593 Only evaluate expressions once during the filter initialization or when a command is processed.
11594
11595 @item frame
11596 Evaluate expressions for each incoming frame.
11597
11598 @end table
11599
11600 Default value is @samp{init}.
11601
11602
11603 @item interl
11604 Set the interlacing mode. It accepts the following values:
11605
11606 @table @samp
11607 @item 1
11608 Force interlaced aware scaling.
11609
11610 @item 0
11611 Do not apply interlaced scaling.
11612
11613 @item -1
11614 Select interlaced aware scaling depending on whether the source frames
11615 are flagged as interlaced or not.
11616 @end table
11617
11618 Default value is @samp{0}.
11619
11620 @item flags
11621 Set libswscale scaling flags. See
11622 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
11623 complete list of values. If not explicitly specified the filter applies
11624 the default flags.
11625
11626
11627 @item param0, param1
11628 Set libswscale input parameters for scaling algorithms that need them. See
11629 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
11630 complete documentation. If not explicitly specified the filter applies
11631 empty parameters.
11632
11633
11634
11635 @item size, s
11636 Set the video size. For the syntax of this option, check the
11637 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
11638
11639 @item in_color_matrix
11640 @item out_color_matrix
11641 Set in/output YCbCr color space type.
11642
11643 This allows the autodetected value to be overridden as well as allows forcing
11644 a specific value used for the output and encoder.
11645
11646 If not specified, the color space type depends on the pixel format.
11647
11648 Possible values:
11649
11650 @table @samp
11651 @item auto
11652 Choose automatically.
11653
11654 @item bt709
11655 Format conforming to International Telecommunication Union (ITU)
11656 Recommendation BT.709.
11657
11658 @item fcc
11659 Set color space conforming to the United States Federal Communications
11660 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
11661
11662 @item bt601
11663 Set color space conforming to:
11664
11665 @itemize
11666 @item
11667 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
11668
11669 @item
11670 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
11671
11672 @item
11673 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
11674
11675 @end itemize
11676
11677 @item smpte240m
11678 Set color space conforming to SMPTE ST 240:1999.
11679 @end table
11680
11681 @item in_range
11682 @item out_range
11683 Set in/output YCbCr sample range.
11684
11685 This allows the autodetected value to be overridden as well as allows forcing
11686 a specific value used for the output and encoder. If not specified, the
11687 range depends on the pixel format. Possible values:
11688
11689 @table @samp
11690 @item auto
11691 Choose automatically.
11692
11693 @item jpeg/full/pc
11694 Set full range (0-255 in case of 8-bit luma).
11695
11696 @item mpeg/tv
11697 Set "MPEG" range (16-235 in case of 8-bit luma).
11698 @end table
11699
11700 @item force_original_aspect_ratio
11701 Enable decreasing or increasing output video width or height if necessary to
11702 keep the original aspect ratio. Possible values:
11703
11704 @table @samp
11705 @item disable
11706 Scale the video as specified and disable this feature.
11707
11708 @item decrease
11709 The output video dimensions will automatically be decreased if needed.
11710
11711 @item increase
11712 The output video dimensions will automatically be increased if needed.
11713
11714 @end table
11715
11716 One useful instance of this option is that when you know a specific device's
11717 maximum allowed resolution, you can use this to limit the output video to
11718 that, while retaining the aspect ratio. For example, device A allows
11719 1280x720 playback, and your video is 1920x800. Using this option (set it to
11720 decrease) and specifying 1280x720 to the command line makes the output
11721 1280x533.
11722
11723 Please note that this is a different thing than specifying -1 for @option{w}
11724 or @option{h}, you still need to specify the output resolution for this option
11725 to work.
11726
11727 @end table
11728
11729 The values of the @option{w} and @option{h} options are expressions
11730 containing the following constants:
11731
11732 @table @var
11733 @item in_w
11734 @item in_h
11735 The input width and height
11736
11737 @item iw
11738 @item ih
11739 These are the same as @var{in_w} and @var{in_h}.
11740
11741 @item out_w
11742 @item out_h
11743 The output (scaled) width and height
11744
11745 @item ow
11746 @item oh
11747 These are the same as @var{out_w} and @var{out_h}
11748
11749 @item a
11750 The same as @var{iw} / @var{ih}
11751
11752 @item sar
11753 input sample aspect ratio
11754
11755 @item dar
11756 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
11757
11758 @item hsub
11759 @item vsub
11760 horizontal and vertical input chroma subsample values. For example for the
11761 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
11762
11763 @item ohsub
11764 @item ovsub
11765 horizontal and vertical output chroma subsample values. For example for the
11766 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
11767 @end table
11768
11769 @subsection Examples
11770
11771 @itemize
11772 @item
11773 Scale the input video to a size of 200x100
11774 @example
11775 scale=w=200:h=100
11776 @end example
11777
11778 This is equivalent to:
11779 @example
11780 scale=200:100
11781 @end example
11782
11783 or:
11784 @example
11785 scale=200x100
11786 @end example
11787
11788 @item
11789 Specify a size abbreviation for the output size:
11790 @example
11791 scale=qcif
11792 @end example
11793
11794 which can also be written as:
11795 @example
11796 scale=size=qcif
11797 @end example
11798
11799 @item
11800 Scale the input to 2x:
11801 @example
11802 scale=w=2*iw:h=2*ih
11803 @end example
11804
11805 @item
11806 The above is the same as:
11807 @example
11808 scale=2*in_w:2*in_h
11809 @end example
11810
11811 @item
11812 Scale the input to 2x with forced interlaced scaling:
11813 @example
11814 scale=2*iw:2*ih:interl=1
11815 @end example
11816
11817 @item
11818 Scale the input to half size:
11819 @example
11820 scale=w=iw/2:h=ih/2
11821 @end example
11822
11823 @item
11824 Increase the width, and set the height to the same size:
11825 @example
11826 scale=3/2*iw:ow
11827 @end example
11828
11829 @item
11830 Seek Greek harmony:
11831 @example
11832 scale=iw:1/PHI*iw
11833 scale=ih*PHI:ih
11834 @end example
11835
11836 @item
11837 Increase the height, and set the width to 3/2 of the height:
11838 @example
11839 scale=w=3/2*oh:h=3/5*ih
11840 @end example
11841
11842 @item
11843 Increase the size, making the size a multiple of the chroma
11844 subsample values:
11845 @example
11846 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
11847 @end example
11848
11849 @item
11850 Increase the width to a maximum of 500 pixels,
11851 keeping the same aspect ratio as the input:
11852 @example
11853 scale=w='min(500\, iw*3/2):h=-1'
11854 @end example
11855 @end itemize
11856
11857 @subsection Commands
11858
11859 This filter supports the following commands:
11860 @table @option
11861 @item width, w
11862 @item height, h
11863 Set the output video dimension expression.
11864 The command accepts the same syntax of the corresponding option.
11865
11866 If the specified expression is not valid, it is kept at its current
11867 value.
11868 @end table
11869
11870 @section scale_npp
11871
11872 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
11873 format conversion on CUDA video frames. Setting the output width and height
11874 works in the same way as for the @var{scale} filter.
11875
11876 The following additional options are accepted:
11877 @table @option
11878 @item format
11879 The pixel format of the output CUDA frames. If set to the string "same" (the
11880 default), the input format will be kept. Note that automatic format negotiation
11881 and conversion is not yet supported for hardware frames
11882
11883 @item interp_algo
11884 The interpolation algorithm used for resizing. One of the following:
11885 @table @option
11886 @item nn
11887 Nearest neighbour.
11888
11889 @item linear
11890 @item cubic
11891 @item cubic2p_bspline
11892 2-parameter cubic (B=1, C=0)
11893
11894 @item cubic2p_catmullrom
11895 2-parameter cubic (B=0, C=1/2)
11896
11897 @item cubic2p_b05c03
11898 2-parameter cubic (B=1/2, C=3/10)
11899
11900 @item super
11901 Supersampling
11902
11903 @item lanczos
11904 @end table
11905
11906 @end table
11907
11908 @section scale2ref
11909
11910 Scale (resize) the input video, based on a reference video.
11911
11912 See the scale filter for available options, scale2ref supports the same but
11913 uses the reference video instead of the main input as basis.
11914
11915 @subsection Examples
11916
11917 @itemize
11918 @item
11919 Scale a subtitle stream to match the main video in size before overlaying
11920 @example
11921 'scale2ref[b][a];[a][b]overlay'
11922 @end example
11923 @end itemize
11924
11925 @anchor{selectivecolor}
11926 @section selectivecolor
11927
11928 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
11929 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
11930 by the "purity" of the color (that is, how saturated it already is).
11931
11932 This filter is similar to the Adobe Photoshop Selective Color tool.
11933
11934 The filter accepts the following options:
11935
11936 @table @option
11937 @item correction_method
11938 Select color correction method.
11939
11940 Available values are:
11941 @table @samp
11942 @item absolute
11943 Specified adjustments are applied "as-is" (added/subtracted to original pixel
11944 component value).
11945 @item relative
11946 Specified adjustments are relative to the original component value.
11947 @end table
11948 Default is @code{absolute}.
11949 @item reds
11950 Adjustments for red pixels (pixels where the red component is the maximum)
11951 @item yellows
11952 Adjustments for yellow pixels (pixels where the blue component is the minimum)
11953 @item greens
11954 Adjustments for green pixels (pixels where the green component is the maximum)
11955 @item cyans
11956 Adjustments for cyan pixels (pixels where the red component is the minimum)
11957 @item blues
11958 Adjustments for blue pixels (pixels where the blue component is the maximum)
11959 @item magentas
11960 Adjustments for magenta pixels (pixels where the green component is the minimum)
11961 @item whites
11962 Adjustments for white pixels (pixels where all components are greater than 128)
11963 @item neutrals
11964 Adjustments for all pixels except pure black and pure white
11965 @item blacks
11966 Adjustments for black pixels (pixels where all components are lesser than 128)
11967 @item psfile
11968 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
11969 @end table
11970
11971 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
11972 4 space separated floating point adjustment values in the [-1,1] range,
11973 respectively to adjust the amount of cyan, magenta, yellow and black for the
11974 pixels of its range.
11975
11976 @subsection Examples
11977
11978 @itemize
11979 @item
11980 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
11981 increase magenta by 27% in blue areas:
11982 @example
11983 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
11984 @end example
11985
11986 @item
11987 Use a Photoshop selective color preset:
11988 @example
11989 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
11990 @end example
11991 @end itemize
11992
11993 @anchor{separatefields}
11994 @section separatefields
11995
11996 The @code{separatefields} takes a frame-based video input and splits
11997 each frame into its components fields, producing a new half height clip
11998 with twice the frame rate and twice the frame count.
11999
12000 This filter use field-dominance information in frame to decide which
12001 of each pair of fields to place first in the output.
12002 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
12003
12004 @section setdar, setsar
12005
12006 The @code{setdar} filter sets the Display Aspect Ratio for the filter
12007 output video.
12008
12009 This is done by changing the specified Sample (aka Pixel) Aspect
12010 Ratio, according to the following equation:
12011 @example
12012 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
12013 @end example
12014
12015 Keep in mind that the @code{setdar} filter does not modify the pixel
12016 dimensions of the video frame. Also, the display aspect ratio set by
12017 this filter may be changed by later filters in the filterchain,
12018 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
12019 applied.
12020
12021 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
12022 the filter output video.
12023
12024 Note that as a consequence of the application of this filter, the
12025 output display aspect ratio will change according to the equation
12026 above.
12027
12028 Keep in mind that the sample aspect ratio set by the @code{setsar}
12029 filter may be changed by later filters in the filterchain, e.g. if
12030 another "setsar" or a "setdar" filter is applied.
12031
12032 It accepts the following parameters:
12033
12034 @table @option
12035 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
12036 Set the aspect ratio used by the filter.
12037
12038 The parameter can be a floating point number string, an expression, or
12039 a string of the form @var{num}:@var{den}, where @var{num} and
12040 @var{den} are the numerator and denominator of the aspect ratio. If
12041 the parameter is not specified, it is assumed the value "0".
12042 In case the form "@var{num}:@var{den}" is used, the @code{:} character
12043 should be escaped.
12044
12045 @item max
12046 Set the maximum integer value to use for expressing numerator and
12047 denominator when reducing the expressed aspect ratio to a rational.
12048 Default value is @code{100}.
12049
12050 @end table
12051
12052 The parameter @var{sar} is an expression containing
12053 the following constants:
12054
12055 @table @option
12056 @item E, PI, PHI
12057 These are approximated values for the mathematical constants e
12058 (Euler's number), pi (Greek pi), and phi (the golden ratio).
12059
12060 @item w, h
12061 The input width and height.
12062
12063 @item a
12064 These are the same as @var{w} / @var{h}.
12065
12066 @item sar
12067 The input sample aspect ratio.
12068
12069 @item dar
12070 The input display aspect ratio. It is the same as
12071 (@var{w} / @var{h}) * @var{sar}.
12072
12073 @item hsub, vsub
12074 Horizontal and vertical chroma subsample values. For example, for the
12075 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
12076 @end table
12077
12078 @subsection Examples
12079
12080 @itemize
12081
12082 @item
12083 To change the display aspect ratio to 16:9, specify one of the following:
12084 @example
12085 setdar=dar=1.77777
12086 setdar=dar=16/9
12087 @end example
12088
12089 @item
12090 To change the sample aspect ratio to 10:11, specify:
12091 @example
12092 setsar=sar=10/11
12093 @end example
12094
12095 @item
12096 To set a display aspect ratio of 16:9, and specify a maximum integer value of
12097 1000 in the aspect ratio reduction, use the command:
12098 @example
12099 setdar=ratio=16/9:max=1000
12100 @end example
12101
12102 @end itemize
12103
12104 @anchor{setfield}
12105 @section setfield
12106
12107 Force field for the output video frame.
12108
12109 The @code{setfield} filter marks the interlace type field for the
12110 output frames. It does not change the input frame, but only sets the
12111 corresponding property, which affects how the frame is treated by
12112 following filters (e.g. @code{fieldorder} or @code{yadif}).
12113
12114 The filter accepts the following options:
12115
12116 @table @option
12117
12118 @item mode
12119 Available values are:
12120
12121 @table @samp
12122 @item auto
12123 Keep the same field property.
12124
12125 @item bff
12126 Mark the frame as bottom-field-first.
12127
12128 @item tff
12129 Mark the frame as top-field-first.
12130
12131 @item prog
12132 Mark the frame as progressive.
12133 @end table
12134 @end table
12135
12136 @section showinfo
12137
12138 Show a line containing various information for each input video frame.
12139 The input video is not modified.
12140
12141 The shown line contains a sequence of key/value pairs of the form
12142 @var{key}:@var{value}.
12143
12144 The following values are shown in the output:
12145
12146 @table @option
12147 @item n
12148 The (sequential) number of the input frame, starting from 0.
12149
12150 @item pts
12151 The Presentation TimeStamp of the input frame, expressed as a number of
12152 time base units. The time base unit depends on the filter input pad.
12153
12154 @item pts_time
12155 The Presentation TimeStamp of the input frame, expressed as a number of
12156 seconds.
12157
12158 @item pos
12159 The position of the frame in the input stream, or -1 if this information is
12160 unavailable and/or meaningless (for example in case of synthetic video).
12161
12162 @item fmt
12163 The pixel format name.
12164
12165 @item sar
12166 The sample aspect ratio of the input frame, expressed in the form
12167 @var{num}/@var{den}.
12168
12169 @item s
12170 The size of the input frame. For the syntax of this option, check the
12171 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
12172
12173 @item i
12174 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
12175 for bottom field first).
12176
12177 @item iskey
12178 This is 1 if the frame is a key frame, 0 otherwise.
12179
12180 @item type
12181 The picture type of the input frame ("I" for an I-frame, "P" for a
12182 P-frame, "B" for a B-frame, or "?" for an unknown type).
12183 Also refer to the documentation of the @code{AVPictureType} enum and of
12184 the @code{av_get_picture_type_char} function defined in
12185 @file{libavutil/avutil.h}.
12186
12187 @item checksum
12188 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
12189
12190 @item plane_checksum
12191 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
12192 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
12193 @end table
12194
12195 @section showpalette
12196
12197 Displays the 256 colors palette of each frame. This filter is only relevant for
12198 @var{pal8} pixel format frames.
12199
12200 It accepts the following option:
12201
12202 @table @option
12203 @item s
12204 Set the size of the box used to represent one palette color entry. Default is
12205 @code{30} (for a @code{30x30} pixel box).
12206 @end table
12207
12208 @section shuffleframes
12209
12210 Reorder and/or duplicate video frames.
12211
12212 It accepts the following parameters:
12213
12214 @table @option
12215 @item mapping
12216 Set the destination indexes of input frames.
12217 This is space or '|' separated list of indexes that maps input frames to output
12218 frames. Number of indexes also sets maximal value that each index may have.
12219 @end table
12220
12221 The first frame has the index 0. The default is to keep the input unchanged.
12222
12223 @subsection Examples
12224
12225 @itemize
12226 @item
12227 Swap second and third frame of every three frames of the input:
12228 @example
12229 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
12230 @end example
12231
12232 @item
12233 Swap 10th and 1st frame of every ten frames of the input:
12234 @example
12235 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
12236 @end example
12237 @end itemize
12238
12239 @section shuffleplanes
12240
12241 Reorder and/or duplicate video planes.
12242
12243 It accepts the following parameters:
12244
12245 @table @option
12246
12247 @item map0
12248 The index of the input plane to be used as the first output plane.
12249
12250 @item map1
12251 The index of the input plane to be used as the second output plane.
12252
12253 @item map2
12254 The index of the input plane to be used as the third output plane.
12255
12256 @item map3
12257 The index of the input plane to be used as the fourth output plane.
12258
12259 @end table
12260
12261 The first plane has the index 0. The default is to keep the input unchanged.
12262
12263 @subsection Examples
12264
12265 @itemize
12266 @item
12267 Swap the second and third planes of the input:
12268 @example
12269 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
12270 @end example
12271 @end itemize
12272
12273 @anchor{signalstats}
12274 @section signalstats
12275 Evaluate various visual metrics that assist in determining issues associated
12276 with the digitization of analog video media.
12277
12278 By default the filter will log these metadata values:
12279
12280 @table @option
12281 @item YMIN
12282 Display the minimal Y value contained within the input frame. Expressed in
12283 range of [0-255].
12284
12285 @item YLOW
12286 Display the Y value at the 10% percentile within the input frame. Expressed in
12287 range of [0-255].
12288
12289 @item YAVG
12290 Display the average Y value within the input frame. Expressed in range of
12291 [0-255].
12292
12293 @item YHIGH
12294 Display the Y value at the 90% percentile within the input frame. Expressed in
12295 range of [0-255].
12296
12297 @item YMAX
12298 Display the maximum Y value contained within the input frame. Expressed in
12299 range of [0-255].
12300
12301 @item UMIN
12302 Display the minimal U value contained within the input frame. Expressed in
12303 range of [0-255].
12304
12305 @item ULOW
12306 Display the U value at the 10% percentile within the input frame. Expressed in
12307 range of [0-255].
12308
12309 @item UAVG
12310 Display the average U value within the input frame. Expressed in range of
12311 [0-255].
12312
12313 @item UHIGH
12314 Display the U value at the 90% percentile within the input frame. Expressed in
12315 range of [0-255].
12316
12317 @item UMAX
12318 Display the maximum U value contained within the input frame. Expressed in
12319 range of [0-255].
12320
12321 @item VMIN
12322 Display the minimal V value contained within the input frame. Expressed in
12323 range of [0-255].
12324
12325 @item VLOW
12326 Display the V value at the 10% percentile within the input frame. Expressed in
12327 range of [0-255].
12328
12329 @item VAVG
12330 Display the average V value within the input frame. Expressed in range of
12331 [0-255].
12332
12333 @item VHIGH
12334 Display the V value at the 90% percentile within the input frame. Expressed in
12335 range of [0-255].
12336
12337 @item VMAX
12338 Display the maximum V value contained within the input frame. Expressed in
12339 range of [0-255].
12340
12341 @item SATMIN
12342 Display the minimal saturation value contained within the input frame.
12343 Expressed in range of [0-~181.02].
12344
12345 @item SATLOW
12346 Display the saturation value at the 10% percentile within the input frame.
12347 Expressed in range of [0-~181.02].
12348
12349 @item SATAVG
12350 Display the average saturation value within the input frame. Expressed in range
12351 of [0-~181.02].
12352
12353 @item SATHIGH
12354 Display the saturation value at the 90% percentile within the input frame.
12355 Expressed in range of [0-~181.02].
12356
12357 @item SATMAX
12358 Display the maximum saturation value contained within the input frame.
12359 Expressed in range of [0-~181.02].
12360
12361 @item HUEMED
12362 Display the median value for hue within the input frame. Expressed in range of
12363 [0-360].
12364
12365 @item HUEAVG
12366 Display the average value for hue within the input frame. Expressed in range of
12367 [0-360].
12368
12369 @item YDIF
12370 Display the average of sample value difference between all values of the Y
12371 plane in the current frame and corresponding values of the previous input frame.
12372 Expressed in range of [0-255].
12373
12374 @item UDIF
12375 Display the average of sample value difference between all values of the U
12376 plane in the current frame and corresponding values of the previous input frame.
12377 Expressed in range of [0-255].
12378
12379 @item VDIF
12380 Display the average of sample value difference between all values of the V
12381 plane in the current frame and corresponding values of the previous input frame.
12382 Expressed in range of [0-255].
12383
12384 @item YBITDEPTH
12385 Display bit depth of Y plane in current frame.
12386 Expressed in range of [0-16].
12387
12388 @item UBITDEPTH
12389 Display bit depth of U plane in current frame.
12390 Expressed in range of [0-16].
12391
12392 @item VBITDEPTH
12393 Display bit depth of V plane in current frame.
12394 Expressed in range of [0-16].
12395 @end table
12396
12397 The filter accepts the following options:
12398
12399 @table @option
12400 @item stat
12401 @item out
12402
12403 @option{stat} specify an additional form of image analysis.
12404 @option{out} output video with the specified type of pixel highlighted.
12405
12406 Both options accept the following values:
12407
12408 @table @samp
12409 @item tout
12410 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
12411 unlike the neighboring pixels of the same field. Examples of temporal outliers
12412 include the results of video dropouts, head clogs, or tape tracking issues.
12413
12414 @item vrep
12415 Identify @var{vertical line repetition}. Vertical line repetition includes
12416 similar rows of pixels within a frame. In born-digital video vertical line
12417 repetition is common, but this pattern is uncommon in video digitized from an
12418 analog source. When it occurs in video that results from the digitization of an
12419 analog source it can indicate concealment from a dropout compensator.
12420
12421 @item brng
12422 Identify pixels that fall outside of legal broadcast range.
12423 @end table
12424
12425 @item color, c
12426 Set the highlight color for the @option{out} option. The default color is
12427 yellow.
12428 @end table
12429
12430 @subsection Examples
12431
12432 @itemize
12433 @item
12434 Output data of various video metrics:
12435 @example
12436 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
12437 @end example
12438
12439 @item
12440 Output specific data about the minimum and maximum values of the Y plane per frame:
12441 @example
12442 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
12443 @end example
12444
12445 @item
12446 Playback video while highlighting pixels that are outside of broadcast range in red.
12447 @example
12448 ffplay example.mov -vf signalstats="out=brng:color=red"
12449 @end example
12450
12451 @item
12452 Playback video with signalstats metadata drawn over the frame.
12453 @example
12454 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
12455 @end example
12456
12457 The contents of signalstat_drawtext.txt used in the command are:
12458 @example
12459 time %@{pts:hms@}
12460 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
12461 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
12462 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
12463 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
12464
12465 @end example
12466 @end itemize
12467
12468 @anchor{smartblur}
12469 @section smartblur
12470
12471 Blur the input video without impacting the outlines.
12472
12473 It accepts the following options:
12474
12475 @table @option
12476 @item luma_radius, lr
12477 Set the luma radius. The option value must be a float number in
12478 the range [0.1,5.0] that specifies the variance of the gaussian filter
12479 used to blur the image (slower if larger). Default value is 1.0.
12480
12481 @item luma_strength, ls
12482 Set the luma strength. The option value must be a float number
12483 in the range [-1.0,1.0] that configures the blurring. A value included
12484 in [0.0,1.0] will blur the image whereas a value included in
12485 [-1.0,0.0] will sharpen the image. Default value is 1.0.
12486
12487 @item luma_threshold, lt
12488 Set the luma threshold used as a coefficient to determine
12489 whether a pixel should be blurred or not. The option value must be an
12490 integer in the range [-30,30]. A value of 0 will filter all the image,
12491 a value included in [0,30] will filter flat areas and a value included
12492 in [-30,0] will filter edges. Default value is 0.
12493
12494 @item chroma_radius, cr
12495 Set the chroma radius. The option value must be a float number in
12496 the range [0.1,5.0] that specifies the variance of the gaussian filter
12497 used to blur the image (slower if larger). Default value is 1.0.
12498
12499 @item chroma_strength, cs
12500 Set the chroma strength. The option value must be a float number
12501 in the range [-1.0,1.0] that configures the blurring. A value included
12502 in [0.0,1.0] will blur the image whereas a value included in
12503 [-1.0,0.0] will sharpen the image. Default value is 1.0.
12504
12505 @item chroma_threshold, ct
12506 Set the chroma threshold used as a coefficient to determine
12507 whether a pixel should be blurred or not. The option value must be an
12508 integer in the range [-30,30]. A value of 0 will filter all the image,
12509 a value included in [0,30] will filter flat areas and a value included
12510 in [-30,0] will filter edges. Default value is 0.
12511 @end table
12512
12513 If a chroma option is not explicitly set, the corresponding luma value
12514 is set.
12515
12516 @section ssim
12517
12518 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
12519
12520 This filter takes in input two input videos, the first input is
12521 considered the "main" source and is passed unchanged to the
12522 output. The second input is used as a "reference" video for computing
12523 the SSIM.
12524
12525 Both video inputs must have the same resolution and pixel format for
12526 this filter to work correctly. Also it assumes that both inputs
12527 have the same number of frames, which are compared one by one.
12528
12529 The filter stores the calculated SSIM of each frame.
12530
12531 The description of the accepted parameters follows.
12532
12533 @table @option
12534 @item stats_file, f
12535 If specified the filter will use the named file to save the SSIM of
12536 each individual frame. When filename equals "-" the data is sent to
12537 standard output.
12538 @end table
12539
12540 The file printed if @var{stats_file} is selected, contains a sequence of
12541 key/value pairs of the form @var{key}:@var{value} for each compared
12542 couple of frames.
12543
12544 A description of each shown parameter follows:
12545
12546 @table @option
12547 @item n
12548 sequential number of the input frame, starting from 1
12549
12550 @item Y, U, V, R, G, B
12551 SSIM of the compared frames for the component specified by the suffix.
12552
12553 @item All
12554 SSIM of the compared frames for the whole frame.
12555
12556 @item dB
12557 Same as above but in dB representation.
12558 @end table
12559
12560 For example:
12561 @example
12562 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
12563 [main][ref] ssim="stats_file=stats.log" [out]
12564 @end example
12565
12566 On this example the input file being processed is compared with the
12567 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
12568 is stored in @file{stats.log}.
12569
12570 Another example with both psnr and ssim at same time:
12571 @example
12572 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
12573 @end example
12574
12575 @section stereo3d
12576
12577 Convert between different stereoscopic image formats.
12578
12579 The filters accept the following options:
12580
12581 @table @option
12582 @item in
12583 Set stereoscopic image format of input.
12584
12585 Available values for input image formats are:
12586 @table @samp
12587 @item sbsl
12588 side by side parallel (left eye left, right eye right)
12589
12590 @item sbsr
12591 side by side crosseye (right eye left, left eye right)
12592
12593 @item sbs2l
12594 side by side parallel with half width resolution
12595 (left eye left, right eye right)
12596
12597 @item sbs2r
12598 side by side crosseye with half width resolution
12599 (right eye left, left eye right)
12600
12601 @item abl
12602 above-below (left eye above, right eye below)
12603
12604 @item abr
12605 above-below (right eye above, left eye below)
12606
12607 @item ab2l
12608 above-below with half height resolution
12609 (left eye above, right eye below)
12610
12611 @item ab2r
12612 above-below with half height resolution
12613 (right eye above, left eye below)
12614
12615 @item al
12616 alternating frames (left eye first, right eye second)
12617
12618 @item ar
12619 alternating frames (right eye first, left eye second)
12620
12621 @item irl
12622 interleaved rows (left eye has top row, right eye starts on next row)
12623
12624 @item irr
12625 interleaved rows (right eye has top row, left eye starts on next row)
12626
12627 @item icl
12628 interleaved columns, left eye first
12629
12630 @item icr
12631 interleaved columns, right eye first
12632
12633 Default value is @samp{sbsl}.
12634 @end table
12635
12636 @item out
12637 Set stereoscopic image format of output.
12638
12639 @table @samp
12640 @item sbsl
12641 side by side parallel (left eye left, right eye right)
12642
12643 @item sbsr
12644 side by side crosseye (right eye left, left eye right)
12645
12646 @item sbs2l
12647 side by side parallel with half width resolution
12648 (left eye left, right eye right)
12649
12650 @item sbs2r
12651 side by side crosseye with half width resolution
12652 (right eye left, left eye right)
12653
12654 @item abl
12655 above-below (left eye above, right eye below)
12656
12657 @item abr
12658 above-below (right eye above, left eye below)
12659
12660 @item ab2l
12661 above-below with half height resolution
12662 (left eye above, right eye below)
12663
12664 @item ab2r
12665 above-below with half height resolution
12666 (right eye above, left eye below)
12667
12668 @item al
12669 alternating frames (left eye first, right eye second)
12670
12671 @item ar
12672 alternating frames (right eye first, left eye second)
12673
12674 @item irl
12675 interleaved rows (left eye has top row, right eye starts on next row)
12676
12677 @item irr
12678 interleaved rows (right eye has top row, left eye starts on next row)
12679
12680 @item arbg
12681 anaglyph red/blue gray
12682 (red filter on left eye, blue filter on right eye)
12683
12684 @item argg
12685 anaglyph red/green gray
12686 (red filter on left eye, green filter on right eye)
12687
12688 @item arcg
12689 anaglyph red/cyan gray
12690 (red filter on left eye, cyan filter on right eye)
12691
12692 @item arch
12693 anaglyph red/cyan half colored
12694 (red filter on left eye, cyan filter on right eye)
12695
12696 @item arcc
12697 anaglyph red/cyan color
12698 (red filter on left eye, cyan filter on right eye)
12699
12700 @item arcd
12701 anaglyph red/cyan color optimized with the least squares projection of dubois
12702 (red filter on left eye, cyan filter on right eye)
12703
12704 @item agmg
12705 anaglyph green/magenta gray
12706 (green filter on left eye, magenta filter on right eye)
12707
12708 @item agmh
12709 anaglyph green/magenta half colored
12710 (green filter on left eye, magenta filter on right eye)
12711
12712 @item agmc
12713 anaglyph green/magenta colored
12714 (green filter on left eye, magenta filter on right eye)
12715
12716 @item agmd
12717 anaglyph green/magenta color optimized with the least squares projection of dubois
12718 (green filter on left eye, magenta filter on right eye)
12719
12720 @item aybg
12721 anaglyph yellow/blue gray
12722 (yellow filter on left eye, blue filter on right eye)
12723
12724 @item aybh
12725 anaglyph yellow/blue half colored
12726 (yellow filter on left eye, blue filter on right eye)
12727
12728 @item aybc
12729 anaglyph yellow/blue colored
12730 (yellow filter on left eye, blue filter on right eye)
12731
12732 @item aybd
12733 anaglyph yellow/blue color optimized with the least squares projection of dubois
12734 (yellow filter on left eye, blue filter on right eye)
12735
12736 @item ml
12737 mono output (left eye only)
12738
12739 @item mr
12740 mono output (right eye only)
12741
12742 @item chl
12743 checkerboard, left eye first
12744
12745 @item chr
12746 checkerboard, right eye first
12747
12748 @item icl
12749 interleaved columns, left eye first
12750
12751 @item icr
12752 interleaved columns, right eye first
12753
12754 @item hdmi
12755 HDMI frame pack
12756 @end table
12757
12758 Default value is @samp{arcd}.
12759 @end table
12760
12761 @subsection Examples
12762
12763 @itemize
12764 @item
12765 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
12766 @example
12767 stereo3d=sbsl:aybd
12768 @end example
12769
12770 @item
12771 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
12772 @example
12773 stereo3d=abl:sbsr
12774 @end example
12775 @end itemize
12776
12777 @section streamselect, astreamselect
12778 Select video or audio streams.
12779
12780 The filter accepts the following options:
12781
12782 @table @option
12783 @item inputs
12784 Set number of inputs. Default is 2.
12785
12786 @item map
12787 Set input indexes to remap to outputs.
12788 @end table
12789
12790 @subsection Commands
12791
12792 The @code{streamselect} and @code{astreamselect} filter supports the following
12793 commands:
12794
12795 @table @option
12796 @item map
12797 Set input indexes to remap to outputs.
12798 @end table
12799
12800 @subsection Examples
12801
12802 @itemize
12803 @item
12804 Select first 5 seconds 1st stream and rest of time 2nd stream:
12805 @example
12806 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
12807 @end example
12808
12809 @item
12810 Same as above, but for audio:
12811 @example
12812 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
12813 @end example
12814 @end itemize
12815
12816 @section sobel
12817 Apply sobel operator to input video stream.
12818
12819 The filter accepts the following option:
12820
12821 @table @option
12822 @item planes
12823 Set which planes will be processed, unprocessed planes will be copied.
12824 By default value 0xf, all planes will be processed.
12825
12826 @item scale
12827 Set value which will be multiplied with filtered result.
12828
12829 @item delta
12830 Set value which will be added to filtered result.
12831 @end table
12832
12833 @anchor{spp}
12834 @section spp
12835
12836 Apply a simple postprocessing filter that compresses and decompresses the image
12837 at several (or - in the case of @option{quality} level @code{6} - all) shifts
12838 and average the results.
12839
12840 The filter accepts the following options:
12841
12842 @table @option
12843 @item quality
12844 Set quality. This option defines the number of levels for averaging. It accepts
12845 an integer in the range 0-6. If set to @code{0}, the filter will have no
12846 effect. A value of @code{6} means the higher quality. For each increment of
12847 that value the speed drops by a factor of approximately 2.  Default value is
12848 @code{3}.
12849
12850 @item qp
12851 Force a constant quantization parameter. If not set, the filter will use the QP
12852 from the video stream (if available).
12853
12854 @item mode
12855 Set thresholding mode. Available modes are:
12856
12857 @table @samp
12858 @item hard
12859 Set hard thresholding (default).
12860 @item soft
12861 Set soft thresholding (better de-ringing effect, but likely blurrier).
12862 @end table
12863
12864 @item use_bframe_qp
12865 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
12866 option may cause flicker since the B-Frames have often larger QP. Default is
12867 @code{0} (not enabled).
12868 @end table
12869
12870 @anchor{subtitles}
12871 @section subtitles
12872
12873 Draw subtitles on top of input video using the libass library.
12874
12875 To enable compilation of this filter you need to configure FFmpeg with
12876 @code{--enable-libass}. This filter also requires a build with libavcodec and
12877 libavformat to convert the passed subtitles file to ASS (Advanced Substation
12878 Alpha) subtitles format.
12879
12880 The filter accepts the following options:
12881
12882 @table @option
12883 @item filename, f
12884 Set the filename of the subtitle file to read. It must be specified.
12885
12886 @item original_size
12887 Specify the size of the original video, the video for which the ASS file
12888 was composed. For the syntax of this option, check the
12889 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
12890 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
12891 correctly scale the fonts if the aspect ratio has been changed.
12892
12893 @item fontsdir
12894 Set a directory path containing fonts that can be used by the filter.
12895 These fonts will be used in addition to whatever the font provider uses.
12896
12897 @item charenc
12898 Set subtitles input character encoding. @code{subtitles} filter only. Only
12899 useful if not UTF-8.
12900
12901 @item stream_index, si
12902 Set subtitles stream index. @code{subtitles} filter only.
12903
12904 @item force_style
12905 Override default style or script info parameters of the subtitles. It accepts a
12906 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
12907 @end table
12908
12909 If the first key is not specified, it is assumed that the first value
12910 specifies the @option{filename}.
12911
12912 For example, to render the file @file{sub.srt} on top of the input
12913 video, use the command:
12914 @example
12915 subtitles=sub.srt
12916 @end example
12917
12918 which is equivalent to:
12919 @example
12920 subtitles=filename=sub.srt
12921 @end example
12922
12923 To render the default subtitles stream from file @file{video.mkv}, use:
12924 @example
12925 subtitles=video.mkv
12926 @end example
12927
12928 To render the second subtitles stream from that file, use:
12929 @example
12930 subtitles=video.mkv:si=1
12931 @end example
12932
12933 To make the subtitles stream from @file{sub.srt} appear in transparent green
12934 @code{DejaVu Serif}, use:
12935 @example
12936 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HAA00FF00'
12937 @end example
12938
12939 @section super2xsai
12940
12941 Scale the input by 2x and smooth using the Super2xSaI (Scale and
12942 Interpolate) pixel art scaling algorithm.
12943
12944 Useful for enlarging pixel art images without reducing sharpness.
12945
12946 @section swaprect
12947
12948 Swap two rectangular objects in video.
12949
12950 This filter accepts the following options:
12951
12952 @table @option
12953 @item w
12954 Set object width.
12955
12956 @item h
12957 Set object height.
12958
12959 @item x1
12960 Set 1st rect x coordinate.
12961
12962 @item y1
12963 Set 1st rect y coordinate.
12964
12965 @item x2
12966 Set 2nd rect x coordinate.
12967
12968 @item y2
12969 Set 2nd rect y coordinate.
12970
12971 All expressions are evaluated once for each frame.
12972 @end table
12973
12974 The all options are expressions containing the following constants:
12975
12976 @table @option
12977 @item w
12978 @item h
12979 The input width and height.
12980
12981 @item a
12982 same as @var{w} / @var{h}
12983
12984 @item sar
12985 input sample aspect ratio
12986
12987 @item dar
12988 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
12989
12990 @item n
12991 The number of the input frame, starting from 0.
12992
12993 @item t
12994 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
12995
12996 @item pos
12997 the position in the file of the input frame, NAN if unknown
12998 @end table
12999
13000 @section swapuv
13001 Swap U & V plane.
13002
13003 @section telecine
13004
13005 Apply telecine process to the video.
13006
13007 This filter accepts the following options:
13008
13009 @table @option
13010 @item first_field
13011 @table @samp
13012 @item top, t
13013 top field first
13014 @item bottom, b
13015 bottom field first
13016 The default value is @code{top}.
13017 @end table
13018
13019 @item pattern
13020 A string of numbers representing the pulldown pattern you wish to apply.
13021 The default value is @code{23}.
13022 @end table
13023
13024 @example
13025 Some typical patterns:
13026
13027 NTSC output (30i):
13028 27.5p: 32222
13029 24p: 23 (classic)
13030 24p: 2332 (preferred)
13031 20p: 33
13032 18p: 334
13033 16p: 3444
13034
13035 PAL output (25i):
13036 27.5p: 12222
13037 24p: 222222222223 ("Euro pulldown")
13038 16.67p: 33
13039 16p: 33333334
13040 @end example
13041
13042 @section thumbnail
13043 Select the most representative frame in a given sequence of consecutive frames.
13044
13045 The filter accepts the following options:
13046
13047 @table @option
13048 @item n
13049 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
13050 will pick one of them, and then handle the next batch of @var{n} frames until
13051 the end. Default is @code{100}.
13052 @end table
13053
13054 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
13055 value will result in a higher memory usage, so a high value is not recommended.
13056
13057 @subsection Examples
13058
13059 @itemize
13060 @item
13061 Extract one picture each 50 frames:
13062 @example
13063 thumbnail=50
13064 @end example
13065
13066 @item
13067 Complete example of a thumbnail creation with @command{ffmpeg}:
13068 @example
13069 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
13070 @end example
13071 @end itemize
13072
13073 @section tile
13074
13075 Tile several successive frames together.
13076
13077 The filter accepts the following options:
13078
13079 @table @option
13080
13081 @item layout
13082 Set the grid size (i.e. the number of lines and columns). For the syntax of
13083 this option, check the
13084 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
13085
13086 @item nb_frames
13087 Set the maximum number of frames to render in the given area. It must be less
13088 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
13089 the area will be used.
13090
13091 @item margin
13092 Set the outer border margin in pixels.
13093
13094 @item padding
13095 Set the inner border thickness (i.e. the number of pixels between frames). For
13096 more advanced padding options (such as having different values for the edges),
13097 refer to the pad video filter.
13098
13099 @item color
13100 Specify the color of the unused area. For the syntax of this option, check the
13101 "Color" section in the ffmpeg-utils manual. The default value of @var{color}
13102 is "black".
13103 @end table
13104
13105 @subsection Examples
13106
13107 @itemize
13108 @item
13109 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
13110 @example
13111 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
13112 @end example
13113 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
13114 duplicating each output frame to accommodate the originally detected frame
13115 rate.
13116
13117 @item
13118 Display @code{5} pictures in an area of @code{3x2} frames,
13119 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
13120 mixed flat and named options:
13121 @example
13122 tile=3x2:nb_frames=5:padding=7:margin=2
13123 @end example
13124 @end itemize
13125
13126 @section tinterlace
13127
13128 Perform various types of temporal field interlacing.
13129
13130 Frames are counted starting from 1, so the first input frame is
13131 considered odd.
13132
13133 The filter accepts the following options:
13134
13135 @table @option
13136
13137 @item mode
13138 Specify the mode of the interlacing. This option can also be specified
13139 as a value alone. See below for a list of values for this option.
13140
13141 Available values are:
13142
13143 @table @samp
13144 @item merge, 0
13145 Move odd frames into the upper field, even into the lower field,
13146 generating a double height frame at half frame rate.
13147 @example
13148  ------> time
13149 Input:
13150 Frame 1         Frame 2         Frame 3         Frame 4
13151
13152 11111           22222           33333           44444
13153 11111           22222           33333           44444
13154 11111           22222           33333           44444
13155 11111           22222           33333           44444
13156
13157 Output:
13158 11111                           33333
13159 22222                           44444
13160 11111                           33333
13161 22222                           44444
13162 11111                           33333
13163 22222                           44444
13164 11111                           33333
13165 22222                           44444
13166 @end example
13167
13168 @item drop_even, 1
13169 Only output odd frames, even frames are dropped, generating a frame with
13170 unchanged height at half frame rate.
13171
13172 @example
13173  ------> time
13174 Input:
13175 Frame 1         Frame 2         Frame 3         Frame 4
13176
13177 11111           22222           33333           44444
13178 11111           22222           33333           44444
13179 11111           22222           33333           44444
13180 11111           22222           33333           44444
13181
13182 Output:
13183 11111                           33333
13184 11111                           33333
13185 11111                           33333
13186 11111                           33333
13187 @end example
13188
13189 @item drop_odd, 2
13190 Only output even frames, odd frames are dropped, generating a frame with
13191 unchanged height at half frame rate.
13192
13193 @example
13194  ------> time
13195 Input:
13196 Frame 1         Frame 2         Frame 3         Frame 4
13197
13198 11111           22222           33333           44444
13199 11111           22222           33333           44444
13200 11111           22222           33333           44444
13201 11111           22222           33333           44444
13202
13203 Output:
13204                 22222                           44444
13205                 22222                           44444
13206                 22222                           44444
13207                 22222                           44444
13208 @end example
13209
13210 @item pad, 3
13211 Expand each frame to full height, but pad alternate lines with black,
13212 generating a frame with double height at the same input frame rate.
13213
13214 @example
13215  ------> time
13216 Input:
13217 Frame 1         Frame 2         Frame 3         Frame 4
13218
13219 11111           22222           33333           44444
13220 11111           22222           33333           44444
13221 11111           22222           33333           44444
13222 11111           22222           33333           44444
13223
13224 Output:
13225 11111           .....           33333           .....
13226 .....           22222           .....           44444
13227 11111           .....           33333           .....
13228 .....           22222           .....           44444
13229 11111           .....           33333           .....
13230 .....           22222           .....           44444
13231 11111           .....           33333           .....
13232 .....           22222           .....           44444
13233 @end example
13234
13235
13236 @item interleave_top, 4
13237 Interleave the upper field from odd frames with the lower field from
13238 even frames, generating a frame with unchanged height at half frame rate.
13239
13240 @example
13241  ------> time
13242 Input:
13243 Frame 1         Frame 2         Frame 3         Frame 4
13244
13245 11111<-         22222           33333<-         44444
13246 11111           22222<-         33333           44444<-
13247 11111<-         22222           33333<-         44444
13248 11111           22222<-         33333           44444<-
13249
13250 Output:
13251 11111                           33333
13252 22222                           44444
13253 11111                           33333
13254 22222                           44444
13255 @end example
13256
13257
13258 @item interleave_bottom, 5
13259 Interleave the lower field from odd frames with the upper field from
13260 even frames, generating a frame with unchanged height at half frame rate.
13261
13262 @example
13263  ------> time
13264 Input:
13265 Frame 1         Frame 2         Frame 3         Frame 4
13266
13267 11111           22222<-         33333           44444<-
13268 11111<-         22222           33333<-         44444
13269 11111           22222<-         33333           44444<-
13270 11111<-         22222           33333<-         44444
13271
13272 Output:
13273 22222                           44444
13274 11111                           33333
13275 22222                           44444
13276 11111                           33333
13277 @end example
13278
13279
13280 @item interlacex2, 6
13281 Double frame rate with unchanged height. Frames are inserted each
13282 containing the second temporal field from the previous input frame and
13283 the first temporal field from the next input frame. This mode relies on
13284 the top_field_first flag. Useful for interlaced video displays with no
13285 field synchronisation.
13286
13287 @example
13288  ------> time
13289 Input:
13290 Frame 1         Frame 2         Frame 3         Frame 4
13291
13292 11111           22222           33333           44444
13293  11111           22222           33333           44444
13294 11111           22222           33333           44444
13295  11111           22222           33333           44444
13296
13297 Output:
13298 11111   22222   22222   33333   33333   44444   44444
13299  11111   11111   22222   22222   33333   33333   44444
13300 11111   22222   22222   33333   33333   44444   44444
13301  11111   11111   22222   22222   33333   33333   44444
13302 @end example
13303
13304
13305 @item mergex2, 7
13306 Move odd frames into the upper field, even into the lower field,
13307 generating a double height frame at same frame rate.
13308
13309 @example
13310  ------> time
13311 Input:
13312 Frame 1         Frame 2         Frame 3         Frame 4
13313
13314 11111           22222           33333           44444
13315 11111           22222           33333           44444
13316 11111           22222           33333           44444
13317 11111           22222           33333           44444
13318
13319 Output:
13320 11111           33333           33333           55555
13321 22222           22222           44444           44444
13322 11111           33333           33333           55555
13323 22222           22222           44444           44444
13324 11111           33333           33333           55555
13325 22222           22222           44444           44444
13326 11111           33333           33333           55555
13327 22222           22222           44444           44444
13328 @end example
13329
13330 @end table
13331
13332 Numeric values are deprecated but are accepted for backward
13333 compatibility reasons.
13334
13335 Default mode is @code{merge}.
13336
13337 @item flags
13338 Specify flags influencing the filter process.
13339
13340 Available value for @var{flags} is:
13341
13342 @table @option
13343 @item low_pass_filter, vlfp
13344 Enable vertical low-pass filtering in the filter.
13345 Vertical low-pass filtering is required when creating an interlaced
13346 destination from a progressive source which contains high-frequency
13347 vertical detail. Filtering will reduce interlace 'twitter' and Moire
13348 patterning.
13349
13350 Vertical low-pass filtering can only be enabled for @option{mode}
13351 @var{interleave_top} and @var{interleave_bottom}.
13352
13353 @end table
13354 @end table
13355
13356 @section transpose
13357
13358 Transpose rows with columns in the input video and optionally flip it.
13359
13360 It accepts the following parameters:
13361
13362 @table @option
13363
13364 @item dir
13365 Specify the transposition direction.
13366
13367 Can assume the following values:
13368 @table @samp
13369 @item 0, 4, cclock_flip
13370 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
13371 @example
13372 L.R     L.l
13373 . . ->  . .
13374 l.r     R.r
13375 @end example
13376
13377 @item 1, 5, clock
13378 Rotate by 90 degrees clockwise, that is:
13379 @example
13380 L.R     l.L
13381 . . ->  . .
13382 l.r     r.R
13383 @end example
13384
13385 @item 2, 6, cclock
13386 Rotate by 90 degrees counterclockwise, that is:
13387 @example
13388 L.R     R.r
13389 . . ->  . .
13390 l.r     L.l
13391 @end example
13392
13393 @item 3, 7, clock_flip
13394 Rotate by 90 degrees clockwise and vertically flip, that is:
13395 @example
13396 L.R     r.R
13397 . . ->  . .
13398 l.r     l.L
13399 @end example
13400 @end table
13401
13402 For values between 4-7, the transposition is only done if the input
13403 video geometry is portrait and not landscape. These values are
13404 deprecated, the @code{passthrough} option should be used instead.
13405
13406 Numerical values are deprecated, and should be dropped in favor of
13407 symbolic constants.
13408
13409 @item passthrough
13410 Do not apply the transposition if the input geometry matches the one
13411 specified by the specified value. It accepts the following values:
13412 @table @samp
13413 @item none
13414 Always apply transposition.
13415 @item portrait
13416 Preserve portrait geometry (when @var{height} >= @var{width}).
13417 @item landscape
13418 Preserve landscape geometry (when @var{width} >= @var{height}).
13419 @end table
13420
13421 Default value is @code{none}.
13422 @end table
13423
13424 For example to rotate by 90 degrees clockwise and preserve portrait
13425 layout:
13426 @example
13427 transpose=dir=1:passthrough=portrait
13428 @end example
13429
13430 The command above can also be specified as:
13431 @example
13432 transpose=1:portrait
13433 @end example
13434
13435 @section trim
13436 Trim the input so that the output contains one continuous subpart of the input.
13437
13438 It accepts the following parameters:
13439 @table @option
13440 @item start
13441 Specify the time of the start of the kept section, i.e. the frame with the
13442 timestamp @var{start} will be the first frame in the output.
13443
13444 @item end
13445 Specify the time of the first frame that will be dropped, i.e. the frame
13446 immediately preceding the one with the timestamp @var{end} will be the last
13447 frame in the output.
13448
13449 @item start_pts
13450 This is the same as @var{start}, except this option sets the start timestamp
13451 in timebase units instead of seconds.
13452
13453 @item end_pts
13454 This is the same as @var{end}, except this option sets the end timestamp
13455 in timebase units instead of seconds.
13456
13457 @item duration
13458 The maximum duration of the output in seconds.
13459
13460 @item start_frame
13461 The number of the first frame that should be passed to the output.
13462
13463 @item end_frame
13464 The number of the first frame that should be dropped.
13465 @end table
13466
13467 @option{start}, @option{end}, and @option{duration} are expressed as time
13468 duration specifications; see
13469 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
13470 for the accepted syntax.
13471
13472 Note that the first two sets of the start/end options and the @option{duration}
13473 option look at the frame timestamp, while the _frame variants simply count the
13474 frames that pass through the filter. Also note that this filter does not modify
13475 the timestamps. If you wish for the output timestamps to start at zero, insert a
13476 setpts filter after the trim filter.
13477
13478 If multiple start or end options are set, this filter tries to be greedy and
13479 keep all the frames that match at least one of the specified constraints. To keep
13480 only the part that matches all the constraints at once, chain multiple trim
13481 filters.
13482
13483 The defaults are such that all the input is kept. So it is possible to set e.g.
13484 just the end values to keep everything before the specified time.
13485
13486 Examples:
13487 @itemize
13488 @item
13489 Drop everything except the second minute of input:
13490 @example
13491 ffmpeg -i INPUT -vf trim=60:120
13492 @end example
13493
13494 @item
13495 Keep only the first second:
13496 @example
13497 ffmpeg -i INPUT -vf trim=duration=1
13498 @end example
13499
13500 @end itemize
13501
13502
13503 @anchor{unsharp}
13504 @section unsharp
13505
13506 Sharpen or blur the input video.
13507
13508 It accepts the following parameters:
13509
13510 @table @option
13511 @item luma_msize_x, lx
13512 Set the luma matrix horizontal size. It must be an odd integer between
13513 3 and 23. The default value is 5.
13514
13515 @item luma_msize_y, ly
13516 Set the luma matrix vertical size. It must be an odd integer between 3
13517 and 23. The default value is 5.
13518
13519 @item luma_amount, la
13520 Set the luma effect strength. It must be a floating point number, reasonable
13521 values lay between -1.5 and 1.5.
13522
13523 Negative values will blur the input video, while positive values will
13524 sharpen it, a value of zero will disable the effect.
13525
13526 Default value is 1.0.
13527
13528 @item chroma_msize_x, cx
13529 Set the chroma matrix horizontal size. It must be an odd integer
13530 between 3 and 23. The default value is 5.
13531
13532 @item chroma_msize_y, cy
13533 Set the chroma matrix vertical size. It must be an odd integer
13534 between 3 and 23. The default value is 5.
13535
13536 @item chroma_amount, ca
13537 Set the chroma effect strength. It must be a floating point number, reasonable
13538 values lay between -1.5 and 1.5.
13539
13540 Negative values will blur the input video, while positive values will
13541 sharpen it, a value of zero will disable the effect.
13542
13543 Default value is 0.0.
13544
13545 @item opencl
13546 If set to 1, specify using OpenCL capabilities, only available if
13547 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
13548
13549 @end table
13550
13551 All parameters are optional and default to the equivalent of the
13552 string '5:5:1.0:5:5:0.0'.
13553
13554 @subsection Examples
13555
13556 @itemize
13557 @item
13558 Apply strong luma sharpen effect:
13559 @example
13560 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
13561 @end example
13562
13563 @item
13564 Apply a strong blur of both luma and chroma parameters:
13565 @example
13566 unsharp=7:7:-2:7:7:-2
13567 @end example
13568 @end itemize
13569
13570 @section uspp
13571
13572 Apply ultra slow/simple postprocessing filter that compresses and decompresses
13573 the image at several (or - in the case of @option{quality} level @code{8} - all)
13574 shifts and average the results.
13575
13576 The way this differs from the behavior of spp is that uspp actually encodes &
13577 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
13578 DCT similar to MJPEG.
13579
13580 The filter accepts the following options:
13581
13582 @table @option
13583 @item quality
13584 Set quality. This option defines the number of levels for averaging. It accepts
13585 an integer in the range 0-8. If set to @code{0}, the filter will have no
13586 effect. A value of @code{8} means the higher quality. For each increment of
13587 that value the speed drops by a factor of approximately 2.  Default value is
13588 @code{3}.
13589
13590 @item qp
13591 Force a constant quantization parameter. If not set, the filter will use the QP
13592 from the video stream (if available).
13593 @end table
13594
13595 @section vaguedenoiser
13596
13597 Apply a wavelet based denoiser.
13598
13599 It transforms each frame from the video input into the wavelet domain,
13600 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
13601 the obtained coefficients. It does an inverse wavelet transform after.
13602 Due to wavelet properties, it should give a nice smoothed result, and
13603 reduced noise, without blurring picture features.
13604
13605 This filter accepts the following options:
13606
13607 @table @option
13608 @item threshold
13609 The filtering strength. The higher, the more filtered the video will be.
13610 Hard thresholding can use a higher threshold than soft thresholding
13611 before the video looks overfiltered.
13612
13613 @item method
13614 The filtering method the filter will use.
13615
13616 It accepts the following values:
13617 @table @samp
13618 @item hard
13619 All values under the threshold will be zeroed.
13620
13621 @item soft
13622 All values under the threshold will be zeroed. All values above will be
13623 reduced by the threshold.
13624
13625 @item garrote
13626 Scales or nullifies coefficients - intermediary between (more) soft and
13627 (less) hard thresholding.
13628 @end table
13629
13630 @item nsteps
13631 Number of times, the wavelet will decompose the picture. Picture can't
13632 be decomposed beyond a particular point (typically, 8 for a 640x480
13633 frame - as 2^9 = 512 > 480)
13634
13635 @item percent
13636 Partial of full denoising (limited coefficients shrinking), from 0 to 100.
13637
13638 @item planes
13639 A list of the planes to process. By default all planes are processed.
13640 @end table
13641
13642 @section vectorscope
13643
13644 Display 2 color component values in the two dimensional graph (which is called
13645 a vectorscope).
13646
13647 This filter accepts the following options:
13648
13649 @table @option
13650 @item mode, m
13651 Set vectorscope mode.
13652
13653 It accepts the following values:
13654 @table @samp
13655 @item gray
13656 Gray values are displayed on graph, higher brightness means more pixels have
13657 same component color value on location in graph. This is the default mode.
13658
13659 @item color
13660 Gray values are displayed on graph. Surrounding pixels values which are not
13661 present in video frame are drawn in gradient of 2 color components which are
13662 set by option @code{x} and @code{y}. The 3rd color component is static.
13663
13664 @item color2
13665 Actual color components values present in video frame are displayed on graph.
13666
13667 @item color3
13668 Similar as color2 but higher frequency of same values @code{x} and @code{y}
13669 on graph increases value of another color component, which is luminance by
13670 default values of @code{x} and @code{y}.
13671
13672 @item color4
13673 Actual colors present in video frame are displayed on graph. If two different
13674 colors map to same position on graph then color with higher value of component
13675 not present in graph is picked.
13676
13677 @item color5
13678 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
13679 component picked from radial gradient.
13680 @end table
13681
13682 @item x
13683 Set which color component will be represented on X-axis. Default is @code{1}.
13684
13685 @item y
13686 Set which color component will be represented on Y-axis. Default is @code{2}.
13687
13688 @item intensity, i
13689 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
13690 of color component which represents frequency of (X, Y) location in graph.
13691
13692 @item envelope, e
13693 @table @samp
13694 @item none
13695 No envelope, this is default.
13696
13697 @item instant
13698 Instant envelope, even darkest single pixel will be clearly highlighted.
13699
13700 @item peak
13701 Hold maximum and minimum values presented in graph over time. This way you
13702 can still spot out of range values without constantly looking at vectorscope.
13703
13704 @item peak+instant
13705 Peak and instant envelope combined together.
13706 @end table
13707
13708 @item graticule, g
13709 Set what kind of graticule to draw.
13710 @table @samp
13711 @item none
13712 @item green
13713 @item color
13714 @end table
13715
13716 @item opacity, o
13717 Set graticule opacity.
13718
13719 @item flags, f
13720 Set graticule flags.
13721
13722 @table @samp
13723 @item white
13724 Draw graticule for white point.
13725
13726 @item black
13727 Draw graticule for black point.
13728
13729 @item name
13730 Draw color points short names.
13731 @end table
13732
13733 @item bgopacity, b
13734 Set background opacity.
13735
13736 @item lthreshold, l
13737 Set low threshold for color component not represented on X or Y axis.
13738 Values lower than this value will be ignored. Default is 0.
13739 Note this value is multiplied with actual max possible value one pixel component
13740 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
13741 is 0.1 * 255 = 25.
13742
13743 @item hthreshold, h
13744 Set high threshold for color component not represented on X or Y axis.
13745 Values higher than this value will be ignored. Default is 1.
13746 Note this value is multiplied with actual max possible value one pixel component
13747 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
13748 is 0.9 * 255 = 230.
13749
13750 @item colorspace, c
13751 Set what kind of colorspace to use when drawing graticule.
13752 @table @samp
13753 @item auto
13754 @item 601
13755 @item 709
13756 @end table
13757 Default is auto.
13758 @end table
13759
13760 @anchor{vidstabdetect}
13761 @section vidstabdetect
13762
13763 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
13764 @ref{vidstabtransform} for pass 2.
13765
13766 This filter generates a file with relative translation and rotation
13767 transform information about subsequent frames, which is then used by
13768 the @ref{vidstabtransform} filter.
13769
13770 To enable compilation of this filter you need to configure FFmpeg with
13771 @code{--enable-libvidstab}.
13772
13773 This filter accepts the following options:
13774
13775 @table @option
13776 @item result
13777 Set the path to the file used to write the transforms information.
13778 Default value is @file{transforms.trf}.
13779
13780 @item shakiness
13781 Set how shaky the video is and how quick the camera is. It accepts an
13782 integer in the range 1-10, a value of 1 means little shakiness, a
13783 value of 10 means strong shakiness. Default value is 5.
13784
13785 @item accuracy
13786 Set the accuracy of the detection process. It must be a value in the
13787 range 1-15. A value of 1 means low accuracy, a value of 15 means high
13788 accuracy. Default value is 15.
13789
13790 @item stepsize
13791 Set stepsize of the search process. The region around minimum is
13792 scanned with 1 pixel resolution. Default value is 6.
13793
13794 @item mincontrast
13795 Set minimum contrast. Below this value a local measurement field is
13796 discarded. Must be a floating point value in the range 0-1. Default
13797 value is 0.3.
13798
13799 @item tripod
13800 Set reference frame number for tripod mode.
13801
13802 If enabled, the motion of the frames is compared to a reference frame
13803 in the filtered stream, identified by the specified number. The idea
13804 is to compensate all movements in a more-or-less static scene and keep
13805 the camera view absolutely still.
13806
13807 If set to 0, it is disabled. The frames are counted starting from 1.
13808
13809 @item show
13810 Show fields and transforms in the resulting frames. It accepts an
13811 integer in the range 0-2. Default value is 0, which disables any
13812 visualization.
13813 @end table
13814
13815 @subsection Examples
13816
13817 @itemize
13818 @item
13819 Use default values:
13820 @example
13821 vidstabdetect
13822 @end example
13823
13824 @item
13825 Analyze strongly shaky movie and put the results in file
13826 @file{mytransforms.trf}:
13827 @example
13828 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
13829 @end example
13830
13831 @item
13832 Visualize the result of internal transformations in the resulting
13833 video:
13834 @example
13835 vidstabdetect=show=1
13836 @end example
13837
13838 @item
13839 Analyze a video with medium shakiness using @command{ffmpeg}:
13840 @example
13841 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
13842 @end example
13843 @end itemize
13844
13845 @anchor{vidstabtransform}
13846 @section vidstabtransform
13847
13848 Video stabilization/deshaking: pass 2 of 2,
13849 see @ref{vidstabdetect} for pass 1.
13850
13851 Read a file with transform information for each frame and
13852 apply/compensate them. Together with the @ref{vidstabdetect}
13853 filter this can be used to deshake videos. See also
13854 @url{http://public.hronopik.de/vid.stab}. It is important to also use
13855 the @ref{unsharp} filter, see below.
13856
13857 To enable compilation of this filter you need to configure FFmpeg with
13858 @code{--enable-libvidstab}.
13859
13860 @subsection Options
13861
13862 @table @option
13863 @item input
13864 Set path to the file used to read the transforms. Default value is
13865 @file{transforms.trf}.
13866
13867 @item smoothing
13868 Set the number of frames (value*2 + 1) used for lowpass filtering the
13869 camera movements. Default value is 10.
13870
13871 For example a number of 10 means that 21 frames are used (10 in the
13872 past and 10 in the future) to smoothen the motion in the video. A
13873 larger value leads to a smoother video, but limits the acceleration of
13874 the camera (pan/tilt movements). 0 is a special case where a static
13875 camera is simulated.
13876
13877 @item optalgo
13878 Set the camera path optimization algorithm.
13879
13880 Accepted values are:
13881 @table @samp
13882 @item gauss
13883 gaussian kernel low-pass filter on camera motion (default)
13884 @item avg
13885 averaging on transformations
13886 @end table
13887
13888 @item maxshift
13889 Set maximal number of pixels to translate frames. Default value is -1,
13890 meaning no limit.
13891
13892 @item maxangle
13893 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
13894 value is -1, meaning no limit.
13895
13896 @item crop
13897 Specify how to deal with borders that may be visible due to movement
13898 compensation.
13899
13900 Available values are:
13901 @table @samp
13902 @item keep
13903 keep image information from previous frame (default)
13904 @item black
13905 fill the border black
13906 @end table
13907
13908 @item invert
13909 Invert transforms if set to 1. Default value is 0.
13910
13911 @item relative
13912 Consider transforms as relative to previous frame if set to 1,
13913 absolute if set to 0. Default value is 0.
13914
13915 @item zoom
13916 Set percentage to zoom. A positive value will result in a zoom-in
13917 effect, a negative value in a zoom-out effect. Default value is 0 (no
13918 zoom).
13919
13920 @item optzoom
13921 Set optimal zooming to avoid borders.
13922
13923 Accepted values are:
13924 @table @samp
13925 @item 0
13926 disabled
13927 @item 1
13928 optimal static zoom value is determined (only very strong movements
13929 will lead to visible borders) (default)
13930 @item 2
13931 optimal adaptive zoom value is determined (no borders will be
13932 visible), see @option{zoomspeed}
13933 @end table
13934
13935 Note that the value given at zoom is added to the one calculated here.
13936
13937 @item zoomspeed
13938 Set percent to zoom maximally each frame (enabled when
13939 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
13940 0.25.
13941
13942 @item interpol
13943 Specify type of interpolation.
13944
13945 Available values are:
13946 @table @samp
13947 @item no
13948 no interpolation
13949 @item linear
13950 linear only horizontal
13951 @item bilinear
13952 linear in both directions (default)
13953 @item bicubic
13954 cubic in both directions (slow)
13955 @end table
13956
13957 @item tripod
13958 Enable virtual tripod mode if set to 1, which is equivalent to
13959 @code{relative=0:smoothing=0}. Default value is 0.
13960
13961 Use also @code{tripod} option of @ref{vidstabdetect}.
13962
13963 @item debug
13964 Increase log verbosity if set to 1. Also the detected global motions
13965 are written to the temporary file @file{global_motions.trf}. Default
13966 value is 0.
13967 @end table
13968
13969 @subsection Examples
13970
13971 @itemize
13972 @item
13973 Use @command{ffmpeg} for a typical stabilization with default values:
13974 @example
13975 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
13976 @end example
13977
13978 Note the use of the @ref{unsharp} filter which is always recommended.
13979
13980 @item
13981 Zoom in a bit more and load transform data from a given file:
13982 @example
13983 vidstabtransform=zoom=5:input="mytransforms.trf"
13984 @end example
13985
13986 @item
13987 Smoothen the video even more:
13988 @example
13989 vidstabtransform=smoothing=30
13990 @end example
13991 @end itemize
13992
13993 @section vflip
13994
13995 Flip the input video vertically.
13996
13997 For example, to vertically flip a video with @command{ffmpeg}:
13998 @example
13999 ffmpeg -i in.avi -vf "vflip" out.avi
14000 @end example
14001
14002 @anchor{vignette}
14003 @section vignette
14004
14005 Make or reverse a natural vignetting effect.
14006
14007 The filter accepts the following options:
14008
14009 @table @option
14010 @item angle, a
14011 Set lens angle expression as a number of radians.
14012
14013 The value is clipped in the @code{[0,PI/2]} range.
14014
14015 Default value: @code{"PI/5"}
14016
14017 @item x0
14018 @item y0
14019 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
14020 by default.
14021
14022 @item mode
14023 Set forward/backward mode.
14024
14025 Available modes are:
14026 @table @samp
14027 @item forward
14028 The larger the distance from the central point, the darker the image becomes.
14029
14030 @item backward
14031 The larger the distance from the central point, the brighter the image becomes.
14032 This can be used to reverse a vignette effect, though there is no automatic
14033 detection to extract the lens @option{angle} and other settings (yet). It can
14034 also be used to create a burning effect.
14035 @end table
14036
14037 Default value is @samp{forward}.
14038
14039 @item eval
14040 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
14041
14042 It accepts the following values:
14043 @table @samp
14044 @item init
14045 Evaluate expressions only once during the filter initialization.
14046
14047 @item frame
14048 Evaluate expressions for each incoming frame. This is way slower than the
14049 @samp{init} mode since it requires all the scalers to be re-computed, but it
14050 allows advanced dynamic expressions.
14051 @end table
14052
14053 Default value is @samp{init}.
14054
14055 @item dither
14056 Set dithering to reduce the circular banding effects. Default is @code{1}
14057 (enabled).
14058
14059 @item aspect
14060 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
14061 Setting this value to the SAR of the input will make a rectangular vignetting
14062 following the dimensions of the video.
14063
14064 Default is @code{1/1}.
14065 @end table
14066
14067 @subsection Expressions
14068
14069 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
14070 following parameters.
14071
14072 @table @option
14073 @item w
14074 @item h
14075 input width and height
14076
14077 @item n
14078 the number of input frame, starting from 0
14079
14080 @item pts
14081 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
14082 @var{TB} units, NAN if undefined
14083
14084 @item r
14085 frame rate of the input video, NAN if the input frame rate is unknown
14086
14087 @item t
14088 the PTS (Presentation TimeStamp) of the filtered video frame,
14089 expressed in seconds, NAN if undefined
14090
14091 @item tb
14092 time base of the input video
14093 @end table
14094
14095
14096 @subsection Examples
14097
14098 @itemize
14099 @item
14100 Apply simple strong vignetting effect:
14101 @example
14102 vignette=PI/4
14103 @end example
14104
14105 @item
14106 Make a flickering vignetting:
14107 @example
14108 vignette='PI/4+random(1)*PI/50':eval=frame
14109 @end example
14110
14111 @end itemize
14112
14113 @section vstack
14114 Stack input videos vertically.
14115
14116 All streams must be of same pixel format and of same width.
14117
14118 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
14119 to create same output.
14120
14121 The filter accept the following option:
14122
14123 @table @option
14124 @item inputs
14125 Set number of input streams. Default is 2.
14126
14127 @item shortest
14128 If set to 1, force the output to terminate when the shortest input
14129 terminates. Default value is 0.
14130 @end table
14131
14132 @section w3fdif
14133
14134 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
14135 Deinterlacing Filter").
14136
14137 Based on the process described by Martin Weston for BBC R&D, and
14138 implemented based on the de-interlace algorithm written by Jim
14139 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
14140 uses filter coefficients calculated by BBC R&D.
14141
14142 There are two sets of filter coefficients, so called "simple":
14143 and "complex". Which set of filter coefficients is used can
14144 be set by passing an optional parameter:
14145
14146 @table @option
14147 @item filter
14148 Set the interlacing filter coefficients. Accepts one of the following values:
14149
14150 @table @samp
14151 @item simple
14152 Simple filter coefficient set.
14153 @item complex
14154 More-complex filter coefficient set.
14155 @end table
14156 Default value is @samp{complex}.
14157
14158 @item deint
14159 Specify which frames to deinterlace. Accept one of the following values:
14160
14161 @table @samp
14162 @item all
14163 Deinterlace all frames,
14164 @item interlaced
14165 Only deinterlace frames marked as interlaced.
14166 @end table
14167
14168 Default value is @samp{all}.
14169 @end table
14170
14171 @section waveform
14172 Video waveform monitor.
14173
14174 The waveform monitor plots color component intensity. By default luminance
14175 only. Each column of the waveform corresponds to a column of pixels in the
14176 source video.
14177
14178 It accepts the following options:
14179
14180 @table @option
14181 @item mode, m
14182 Can be either @code{row}, or @code{column}. Default is @code{column}.
14183 In row mode, the graph on the left side represents color component value 0 and
14184 the right side represents value = 255. In column mode, the top side represents
14185 color component value = 0 and bottom side represents value = 255.
14186
14187 @item intensity, i
14188 Set intensity. Smaller values are useful to find out how many values of the same
14189 luminance are distributed across input rows/columns.
14190 Default value is @code{0.04}. Allowed range is [0, 1].
14191
14192 @item mirror, r
14193 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
14194 In mirrored mode, higher values will be represented on the left
14195 side for @code{row} mode and at the top for @code{column} mode. Default is
14196 @code{1} (mirrored).
14197
14198 @item display, d
14199 Set display mode.
14200 It accepts the following values:
14201 @table @samp
14202 @item overlay
14203 Presents information identical to that in the @code{parade}, except
14204 that the graphs representing color components are superimposed directly
14205 over one another.
14206
14207 This display mode makes it easier to spot relative differences or similarities
14208 in overlapping areas of the color components that are supposed to be identical,
14209 such as neutral whites, grays, or blacks.
14210
14211 @item stack
14212 Display separate graph for the color components side by side in
14213 @code{row} mode or one below the other in @code{column} mode.
14214
14215 @item parade
14216 Display separate graph for the color components side by side in
14217 @code{column} mode or one below the other in @code{row} mode.
14218
14219 Using this display mode makes it easy to spot color casts in the highlights
14220 and shadows of an image, by comparing the contours of the top and the bottom
14221 graphs of each waveform. Since whites, grays, and blacks are characterized
14222 by exactly equal amounts of red, green, and blue, neutral areas of the picture
14223 should display three waveforms of roughly equal width/height. If not, the
14224 correction is easy to perform by making level adjustments the three waveforms.
14225 @end table
14226 Default is @code{stack}.
14227
14228 @item components, c
14229 Set which color components to display. Default is 1, which means only luminance
14230 or red color component if input is in RGB colorspace. If is set for example to
14231 7 it will display all 3 (if) available color components.
14232
14233 @item envelope, e
14234 @table @samp
14235 @item none
14236 No envelope, this is default.
14237
14238 @item instant
14239 Instant envelope, minimum and maximum values presented in graph will be easily
14240 visible even with small @code{step} value.
14241
14242 @item peak
14243 Hold minimum and maximum values presented in graph across time. This way you
14244 can still spot out of range values without constantly looking at waveforms.
14245
14246 @item peak+instant
14247 Peak and instant envelope combined together.
14248 @end table
14249
14250 @item filter, f
14251 @table @samp
14252 @item lowpass
14253 No filtering, this is default.
14254
14255 @item flat
14256 Luma and chroma combined together.
14257
14258 @item aflat
14259 Similar as above, but shows difference between blue and red chroma.
14260
14261 @item chroma
14262 Displays only chroma.
14263
14264 @item color
14265 Displays actual color value on waveform.
14266
14267 @item acolor
14268 Similar as above, but with luma showing frequency of chroma values.
14269 @end table
14270
14271 @item graticule, g
14272 Set which graticule to display.
14273
14274 @table @samp
14275 @item none
14276 Do not display graticule.
14277
14278 @item green
14279 Display green graticule showing legal broadcast ranges.
14280 @end table
14281
14282 @item opacity, o
14283 Set graticule opacity.
14284
14285 @item flags, fl
14286 Set graticule flags.
14287
14288 @table @samp
14289 @item numbers
14290 Draw numbers above lines. By default enabled.
14291
14292 @item dots
14293 Draw dots instead of lines.
14294 @end table
14295
14296 @item scale, s
14297 Set scale used for displaying graticule.
14298
14299 @table @samp
14300 @item digital
14301 @item millivolts
14302 @item ire
14303 @end table
14304 Default is digital.
14305
14306 @item bgopacity, b
14307 Set background opacity.
14308 @end table
14309
14310 @section weave
14311
14312 The @code{weave} takes a field-based video input and join
14313 each two sequential fields into single frame, producing a new double
14314 height clip with half the frame rate and half the frame count.
14315
14316 It accepts the following option:
14317
14318 @table @option
14319 @item first_field
14320 Set first field. Available values are:
14321
14322 @table @samp
14323 @item top, t
14324 Set the frame as top-field-first.
14325
14326 @item bottom, b
14327 Set the frame as bottom-field-first.
14328 @end table
14329 @end table
14330
14331 @subsection Examples
14332
14333 @itemize
14334 @item
14335 Interlace video using @ref{select} and @ref{separatefields} filter:
14336 @example
14337 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
14338 @end example
14339 @end itemize
14340
14341 @section xbr
14342 Apply the xBR high-quality magnification filter which is designed for pixel
14343 art. It follows a set of edge-detection rules, see
14344 @url{http://www.libretro.com/forums/viewtopic.php?f=6&t=134}.
14345
14346 It accepts the following option:
14347
14348 @table @option
14349 @item n
14350 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
14351 @code{3xBR} and @code{4} for @code{4xBR}.
14352 Default is @code{3}.
14353 @end table
14354
14355 @anchor{yadif}
14356 @section yadif
14357
14358 Deinterlace the input video ("yadif" means "yet another deinterlacing
14359 filter").
14360
14361 It accepts the following parameters:
14362
14363
14364 @table @option
14365
14366 @item mode
14367 The interlacing mode to adopt. It accepts one of the following values:
14368
14369 @table @option
14370 @item 0, send_frame
14371 Output one frame for each frame.
14372 @item 1, send_field
14373 Output one frame for each field.
14374 @item 2, send_frame_nospatial
14375 Like @code{send_frame}, but it skips the spatial interlacing check.
14376 @item 3, send_field_nospatial
14377 Like @code{send_field}, but it skips the spatial interlacing check.
14378 @end table
14379
14380 The default value is @code{send_frame}.
14381
14382 @item parity
14383 The picture field parity assumed for the input interlaced video. It accepts one
14384 of the following values:
14385
14386 @table @option
14387 @item 0, tff
14388 Assume the top field is first.
14389 @item 1, bff
14390 Assume the bottom field is first.
14391 @item -1, auto
14392 Enable automatic detection of field parity.
14393 @end table
14394
14395 The default value is @code{auto}.
14396 If the interlacing is unknown or the decoder does not export this information,
14397 top field first will be assumed.
14398
14399 @item deint
14400 Specify which frames to deinterlace. Accept one of the following
14401 values:
14402
14403 @table @option
14404 @item 0, all
14405 Deinterlace all frames.
14406 @item 1, interlaced
14407 Only deinterlace frames marked as interlaced.
14408 @end table
14409
14410 The default value is @code{all}.
14411 @end table
14412
14413 @section zoompan
14414
14415 Apply Zoom & Pan effect.
14416
14417 This filter accepts the following options:
14418
14419 @table @option
14420 @item zoom, z
14421 Set the zoom expression. Default is 1.
14422
14423 @item x
14424 @item y
14425 Set the x and y expression. Default is 0.
14426
14427 @item d
14428 Set the duration expression in number of frames.
14429 This sets for how many number of frames effect will last for
14430 single input image.
14431
14432 @item s
14433 Set the output image size, default is 'hd720'.
14434
14435 @item fps
14436 Set the output frame rate, default is '25'.
14437 @end table
14438
14439 Each expression can contain the following constants:
14440
14441 @table @option
14442 @item in_w, iw
14443 Input width.
14444
14445 @item in_h, ih
14446 Input height.
14447
14448 @item out_w, ow
14449 Output width.
14450
14451 @item out_h, oh
14452 Output height.
14453
14454 @item in
14455 Input frame count.
14456
14457 @item on
14458 Output frame count.
14459
14460 @item x
14461 @item y
14462 Last calculated 'x' and 'y' position from 'x' and 'y' expression
14463 for current input frame.
14464
14465 @item px
14466 @item py
14467 'x' and 'y' of last output frame of previous input frame or 0 when there was
14468 not yet such frame (first input frame).
14469
14470 @item zoom
14471 Last calculated zoom from 'z' expression for current input frame.
14472
14473 @item pzoom
14474 Last calculated zoom of last output frame of previous input frame.
14475
14476 @item duration
14477 Number of output frames for current input frame. Calculated from 'd' expression
14478 for each input frame.
14479
14480 @item pduration
14481 number of output frames created for previous input frame
14482
14483 @item a
14484 Rational number: input width / input height
14485
14486 @item sar
14487 sample aspect ratio
14488
14489 @item dar
14490 display aspect ratio
14491
14492 @end table
14493
14494 @subsection Examples
14495
14496 @itemize
14497 @item
14498 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
14499 @example
14500 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
14501 @end example
14502
14503 @item
14504 Zoom-in up to 1.5 and pan always at center of picture:
14505 @example
14506 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
14507 @end example
14508
14509 @item
14510 Same as above but without pausing:
14511 @example
14512 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
14513 @end example
14514 @end itemize
14515
14516 @section zscale
14517 Scale (resize) the input video, using the z.lib library:
14518 https://github.com/sekrit-twc/zimg.
14519
14520 The zscale filter forces the output display aspect ratio to be the same
14521 as the input, by changing the output sample aspect ratio.
14522
14523 If the input image format is different from the format requested by
14524 the next filter, the zscale filter will convert the input to the
14525 requested format.
14526
14527 @subsection Options
14528 The filter accepts the following options.
14529
14530 @table @option
14531 @item width, w
14532 @item height, h
14533 Set the output video dimension expression. Default value is the input
14534 dimension.
14535
14536 If the @var{width} or @var{w} is 0, the input width is used for the output.
14537 If the @var{height} or @var{h} is 0, the input height is used for the output.
14538
14539 If one of the values is -1, the zscale filter will use a value that
14540 maintains the aspect ratio of the input image, calculated from the
14541 other specified dimension. If both of them are -1, the input size is
14542 used
14543
14544 If one of the values is -n with n > 1, the zscale filter will also use a value
14545 that maintains the aspect ratio of the input image, calculated from the other
14546 specified dimension. After that it will, however, make sure that the calculated
14547 dimension is divisible by n and adjust the value if necessary.
14548
14549 See below for the list of accepted constants for use in the dimension
14550 expression.
14551
14552 @item size, s
14553 Set the video size. For the syntax of this option, check the
14554 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14555
14556 @item dither, d
14557 Set the dither type.
14558
14559 Possible values are:
14560 @table @var
14561 @item none
14562 @item ordered
14563 @item random
14564 @item error_diffusion
14565 @end table
14566
14567 Default is none.
14568
14569 @item filter, f
14570 Set the resize filter type.
14571
14572 Possible values are:
14573 @table @var
14574 @item point
14575 @item bilinear
14576 @item bicubic
14577 @item spline16
14578 @item spline36
14579 @item lanczos
14580 @end table
14581
14582 Default is bilinear.
14583
14584 @item range, r
14585 Set the color range.
14586
14587 Possible values are:
14588 @table @var
14589 @item input
14590 @item limited
14591 @item full
14592 @end table
14593
14594 Default is same as input.
14595
14596 @item primaries, p
14597 Set the color primaries.
14598
14599 Possible values are:
14600 @table @var
14601 @item input
14602 @item 709
14603 @item unspecified
14604 @item 170m
14605 @item 240m
14606 @item 2020
14607 @end table
14608
14609 Default is same as input.
14610
14611 @item transfer, t
14612 Set the transfer characteristics.
14613
14614 Possible values are:
14615 @table @var
14616 @item input
14617 @item 709
14618 @item unspecified
14619 @item 601
14620 @item linear
14621 @item 2020_10
14622 @item 2020_12
14623 @end table
14624
14625 Default is same as input.
14626
14627 @item matrix, m
14628 Set the colorspace matrix.
14629
14630 Possible value are:
14631 @table @var
14632 @item input
14633 @item 709
14634 @item unspecified
14635 @item 470bg
14636 @item 170m
14637 @item 2020_ncl
14638 @item 2020_cl
14639 @end table
14640
14641 Default is same as input.
14642
14643 @item rangein, rin
14644 Set the input color range.
14645
14646 Possible values are:
14647 @table @var
14648 @item input
14649 @item limited
14650 @item full
14651 @end table
14652
14653 Default is same as input.
14654
14655 @item primariesin, pin
14656 Set the input color primaries.
14657
14658 Possible values are:
14659 @table @var
14660 @item input
14661 @item 709
14662 @item unspecified
14663 @item 170m
14664 @item 240m
14665 @item 2020
14666 @end table
14667
14668 Default is same as input.
14669
14670 @item transferin, tin
14671 Set the input transfer characteristics.
14672
14673 Possible values are:
14674 @table @var
14675 @item input
14676 @item 709
14677 @item unspecified
14678 @item 601
14679 @item linear
14680 @item 2020_10
14681 @item 2020_12
14682 @end table
14683
14684 Default is same as input.
14685
14686 @item matrixin, min
14687 Set the input colorspace matrix.
14688
14689 Possible value are:
14690 @table @var
14691 @item input
14692 @item 709
14693 @item unspecified
14694 @item 470bg
14695 @item 170m
14696 @item 2020_ncl
14697 @item 2020_cl
14698 @end table
14699
14700 @item chromal, c
14701 Set the output chroma location.
14702
14703 Possible values are:
14704 @table @var
14705 @item input
14706 @item left
14707 @item center
14708 @item topleft
14709 @item top
14710 @item bottomleft
14711 @item bottom
14712 @end table
14713
14714 @item chromalin, cin
14715 Set the input chroma location.
14716
14717 Possible values are:
14718 @table @var
14719 @item input
14720 @item left
14721 @item center
14722 @item topleft
14723 @item top
14724 @item bottomleft
14725 @item bottom
14726 @end table
14727 @end table
14728
14729 The values of the @option{w} and @option{h} options are expressions
14730 containing the following constants:
14731
14732 @table @var
14733 @item in_w
14734 @item in_h
14735 The input width and height
14736
14737 @item iw
14738 @item ih
14739 These are the same as @var{in_w} and @var{in_h}.
14740
14741 @item out_w
14742 @item out_h
14743 The output (scaled) width and height
14744
14745 @item ow
14746 @item oh
14747 These are the same as @var{out_w} and @var{out_h}
14748
14749 @item a
14750 The same as @var{iw} / @var{ih}
14751
14752 @item sar
14753 input sample aspect ratio
14754
14755 @item dar
14756 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
14757
14758 @item hsub
14759 @item vsub
14760 horizontal and vertical input chroma subsample values. For example for the
14761 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14762
14763 @item ohsub
14764 @item ovsub
14765 horizontal and vertical output chroma subsample values. For example for the
14766 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14767 @end table
14768
14769 @table @option
14770 @end table
14771
14772 @c man end VIDEO FILTERS
14773
14774 @chapter Video Sources
14775 @c man begin VIDEO SOURCES
14776
14777 Below is a description of the currently available video sources.
14778
14779 @section buffer
14780
14781 Buffer video frames, and make them available to the filter chain.
14782
14783 This source is mainly intended for a programmatic use, in particular
14784 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
14785
14786 It accepts the following parameters:
14787
14788 @table @option
14789
14790 @item video_size
14791 Specify the size (width and height) of the buffered video frames. For the
14792 syntax of this option, check the
14793 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14794
14795 @item width
14796 The input video width.
14797
14798 @item height
14799 The input video height.
14800
14801 @item pix_fmt
14802 A string representing the pixel format of the buffered video frames.
14803 It may be a number corresponding to a pixel format, or a pixel format
14804 name.
14805
14806 @item time_base
14807 Specify the timebase assumed by the timestamps of the buffered frames.
14808
14809 @item frame_rate
14810 Specify the frame rate expected for the video stream.
14811
14812 @item pixel_aspect, sar
14813 The sample (pixel) aspect ratio of the input video.
14814
14815 @item sws_param
14816 Specify the optional parameters to be used for the scale filter which
14817 is automatically inserted when an input change is detected in the
14818 input size or format.
14819
14820 @item hw_frames_ctx
14821 When using a hardware pixel format, this should be a reference to an
14822 AVHWFramesContext describing input frames.
14823 @end table
14824
14825 For example:
14826 @example
14827 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
14828 @end example
14829
14830 will instruct the source to accept video frames with size 320x240 and
14831 with format "yuv410p", assuming 1/24 as the timestamps timebase and
14832 square pixels (1:1 sample aspect ratio).
14833 Since the pixel format with name "yuv410p" corresponds to the number 6
14834 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
14835 this example corresponds to:
14836 @example
14837 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
14838 @end example
14839
14840 Alternatively, the options can be specified as a flat string, but this
14841 syntax is deprecated:
14842
14843 @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}]
14844
14845 @section cellauto
14846
14847 Create a pattern generated by an elementary cellular automaton.
14848
14849 The initial state of the cellular automaton can be defined through the
14850 @option{filename} and @option{pattern} options. If such options are
14851 not specified an initial state is created randomly.
14852
14853 At each new frame a new row in the video is filled with the result of
14854 the cellular automaton next generation. The behavior when the whole
14855 frame is filled is defined by the @option{scroll} option.
14856
14857 This source accepts the following options:
14858
14859 @table @option
14860 @item filename, f
14861 Read the initial cellular automaton state, i.e. the starting row, from
14862 the specified file.
14863 In the file, each non-whitespace character is considered an alive
14864 cell, a newline will terminate the row, and further characters in the
14865 file will be ignored.
14866
14867 @item pattern, p
14868 Read the initial cellular automaton state, i.e. the starting row, from
14869 the specified string.
14870
14871 Each non-whitespace character in the string is considered an alive
14872 cell, a newline will terminate the row, and further characters in the
14873 string will be ignored.
14874
14875 @item rate, r
14876 Set the video rate, that is the number of frames generated per second.
14877 Default is 25.
14878
14879 @item random_fill_ratio, ratio
14880 Set the random fill ratio for the initial cellular automaton row. It
14881 is a floating point number value ranging from 0 to 1, defaults to
14882 1/PHI.
14883
14884 This option is ignored when a file or a pattern is specified.
14885
14886 @item random_seed, seed
14887 Set the seed for filling randomly the initial row, must be an integer
14888 included between 0 and UINT32_MAX. If not specified, or if explicitly
14889 set to -1, the filter will try to use a good random seed on a best
14890 effort basis.
14891
14892 @item rule
14893 Set the cellular automaton rule, it is a number ranging from 0 to 255.
14894 Default value is 110.
14895
14896 @item size, s
14897 Set the size of the output video. For the syntax of this option, check the
14898 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14899
14900 If @option{filename} or @option{pattern} is specified, the size is set
14901 by default to the width of the specified initial state row, and the
14902 height is set to @var{width} * PHI.
14903
14904 If @option{size} is set, it must contain the width of the specified
14905 pattern string, and the specified pattern will be centered in the
14906 larger row.
14907
14908 If a filename or a pattern string is not specified, the size value
14909 defaults to "320x518" (used for a randomly generated initial state).
14910
14911 @item scroll
14912 If set to 1, scroll the output upward when all the rows in the output
14913 have been already filled. If set to 0, the new generated row will be
14914 written over the top row just after the bottom row is filled.
14915 Defaults to 1.
14916
14917 @item start_full, full
14918 If set to 1, completely fill the output with generated rows before
14919 outputting the first frame.
14920 This is the default behavior, for disabling set the value to 0.
14921
14922 @item stitch
14923 If set to 1, stitch the left and right row edges together.
14924 This is the default behavior, for disabling set the value to 0.
14925 @end table
14926
14927 @subsection Examples
14928
14929 @itemize
14930 @item
14931 Read the initial state from @file{pattern}, and specify an output of
14932 size 200x400.
14933 @example
14934 cellauto=f=pattern:s=200x400
14935 @end example
14936
14937 @item
14938 Generate a random initial row with a width of 200 cells, with a fill
14939 ratio of 2/3:
14940 @example
14941 cellauto=ratio=2/3:s=200x200
14942 @end example
14943
14944 @item
14945 Create a pattern generated by rule 18 starting by a single alive cell
14946 centered on an initial row with width 100:
14947 @example
14948 cellauto=p=@@:s=100x400:full=0:rule=18
14949 @end example
14950
14951 @item
14952 Specify a more elaborated initial pattern:
14953 @example
14954 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
14955 @end example
14956
14957 @end itemize
14958
14959 @anchor{coreimagesrc}
14960 @section coreimagesrc
14961 Video source generated on GPU using Apple's CoreImage API on OSX.
14962
14963 This video source is a specialized version of the @ref{coreimage} video filter.
14964 Use a core image generator at the beginning of the applied filterchain to
14965 generate the content.
14966
14967 The coreimagesrc video source accepts the following options:
14968 @table @option
14969 @item list_generators
14970 List all available generators along with all their respective options as well as
14971 possible minimum and maximum values along with the default values.
14972 @example
14973 list_generators=true
14974 @end example
14975
14976 @item size, s
14977 Specify the size of the sourced video. For the syntax of this option, check the
14978 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14979 The default value is @code{320x240}.
14980
14981 @item rate, r
14982 Specify the frame rate of the sourced video, as the number of frames
14983 generated per second. It has to be a string in the format
14984 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
14985 number or a valid video frame rate abbreviation. The default value is
14986 "25".
14987
14988 @item sar
14989 Set the sample aspect ratio of the sourced video.
14990
14991 @item duration, d
14992 Set the duration of the sourced video. See
14993 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
14994 for the accepted syntax.
14995
14996 If not specified, or the expressed duration is negative, the video is
14997 supposed to be generated forever.
14998 @end table
14999
15000 Additionally, all options of the @ref{coreimage} video filter are accepted.
15001 A complete filterchain can be used for further processing of the
15002 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
15003 and examples for details.
15004
15005 @subsection Examples
15006
15007 @itemize
15008
15009 @item
15010 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
15011 given as complete and escaped command-line for Apple's standard bash shell:
15012 @example
15013 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
15014 @end example
15015 This example is equivalent to the QRCode example of @ref{coreimage} without the
15016 need for a nullsrc video source.
15017 @end itemize
15018
15019
15020 @section mandelbrot
15021
15022 Generate a Mandelbrot set fractal, and progressively zoom towards the
15023 point specified with @var{start_x} and @var{start_y}.
15024
15025 This source accepts the following options:
15026
15027 @table @option
15028
15029 @item end_pts
15030 Set the terminal pts value. Default value is 400.
15031
15032 @item end_scale
15033 Set the terminal scale value.
15034 Must be a floating point value. Default value is 0.3.
15035
15036 @item inner
15037 Set the inner coloring mode, that is the algorithm used to draw the
15038 Mandelbrot fractal internal region.
15039
15040 It shall assume one of the following values:
15041 @table @option
15042 @item black
15043 Set black mode.
15044 @item convergence
15045 Show time until convergence.
15046 @item mincol
15047 Set color based on point closest to the origin of the iterations.
15048 @item period
15049 Set period mode.
15050 @end table
15051
15052 Default value is @var{mincol}.
15053
15054 @item bailout
15055 Set the bailout value. Default value is 10.0.
15056
15057 @item maxiter
15058 Set the maximum of iterations performed by the rendering
15059 algorithm. Default value is 7189.
15060
15061 @item outer
15062 Set outer coloring mode.
15063 It shall assume one of following values:
15064 @table @option
15065 @item iteration_count
15066 Set iteration cound mode.
15067 @item normalized_iteration_count
15068 set normalized iteration count mode.
15069 @end table
15070 Default value is @var{normalized_iteration_count}.
15071
15072 @item rate, r
15073 Set frame rate, expressed as number of frames per second. Default
15074 value is "25".
15075
15076 @item size, s
15077 Set frame size. For the syntax of this option, check the "Video
15078 size" section in the ffmpeg-utils manual. Default value is "640x480".
15079
15080 @item start_scale
15081 Set the initial scale value. Default value is 3.0.
15082
15083 @item start_x
15084 Set the initial x position. Must be a floating point value between
15085 -100 and 100. Default value is -0.743643887037158704752191506114774.
15086
15087 @item start_y
15088 Set the initial y position. Must be a floating point value between
15089 -100 and 100. Default value is -0.131825904205311970493132056385139.
15090 @end table
15091
15092 @section mptestsrc
15093
15094 Generate various test patterns, as generated by the MPlayer test filter.
15095
15096 The size of the generated video is fixed, and is 256x256.
15097 This source is useful in particular for testing encoding features.
15098
15099 This source accepts the following options:
15100
15101 @table @option
15102
15103 @item rate, r
15104 Specify the frame rate of the sourced video, as the number of frames
15105 generated per second. It has to be a string in the format
15106 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
15107 number or a valid video frame rate abbreviation. The default value is
15108 "25".
15109
15110 @item duration, d
15111 Set the duration of the sourced video. See
15112 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
15113 for the accepted syntax.
15114
15115 If not specified, or the expressed duration is negative, the video is
15116 supposed to be generated forever.
15117
15118 @item test, t
15119
15120 Set the number or the name of the test to perform. Supported tests are:
15121 @table @option
15122 @item dc_luma
15123 @item dc_chroma
15124 @item freq_luma
15125 @item freq_chroma
15126 @item amp_luma
15127 @item amp_chroma
15128 @item cbp
15129 @item mv
15130 @item ring1
15131 @item ring2
15132 @item all
15133
15134 @end table
15135
15136 Default value is "all", which will cycle through the list of all tests.
15137 @end table
15138
15139 Some examples:
15140 @example
15141 mptestsrc=t=dc_luma
15142 @end example
15143
15144 will generate a "dc_luma" test pattern.
15145
15146 @section frei0r_src
15147
15148 Provide a frei0r source.
15149
15150 To enable compilation of this filter you need to install the frei0r
15151 header and configure FFmpeg with @code{--enable-frei0r}.
15152
15153 This source accepts the following parameters:
15154
15155 @table @option
15156
15157 @item size
15158 The size of the video to generate. For the syntax of this option, check the
15159 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15160
15161 @item framerate
15162 The framerate of the generated video. It may be a string of the form
15163 @var{num}/@var{den} or a frame rate abbreviation.
15164
15165 @item filter_name
15166 The name to the frei0r source to load. For more information regarding frei0r and
15167 how to set the parameters, read the @ref{frei0r} section in the video filters
15168 documentation.
15169
15170 @item filter_params
15171 A '|'-separated list of parameters to pass to the frei0r source.
15172
15173 @end table
15174
15175 For example, to generate a frei0r partik0l source with size 200x200
15176 and frame rate 10 which is overlaid on the overlay filter main input:
15177 @example
15178 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
15179 @end example
15180
15181 @section life
15182
15183 Generate a life pattern.
15184
15185 This source is based on a generalization of John Conway's life game.
15186
15187 The sourced input represents a life grid, each pixel represents a cell
15188 which can be in one of two possible states, alive or dead. Every cell
15189 interacts with its eight neighbours, which are the cells that are
15190 horizontally, vertically, or diagonally adjacent.
15191
15192 At each interaction the grid evolves according to the adopted rule,
15193 which specifies the number of neighbor alive cells which will make a
15194 cell stay alive or born. The @option{rule} option allows one to specify
15195 the rule to adopt.
15196
15197 This source accepts the following options:
15198
15199 @table @option
15200 @item filename, f
15201 Set the file from which to read the initial grid state. In the file,
15202 each non-whitespace character is considered an alive cell, and newline
15203 is used to delimit the end of each row.
15204
15205 If this option is not specified, the initial grid is generated
15206 randomly.
15207
15208 @item rate, r
15209 Set the video rate, that is the number of frames generated per second.
15210 Default is 25.
15211
15212 @item random_fill_ratio, ratio
15213 Set the random fill ratio for the initial random grid. It is a
15214 floating point number value ranging from 0 to 1, defaults to 1/PHI.
15215 It is ignored when a file is specified.
15216
15217 @item random_seed, seed
15218 Set the seed for filling the initial random grid, must be an integer
15219 included between 0 and UINT32_MAX. If not specified, or if explicitly
15220 set to -1, the filter will try to use a good random seed on a best
15221 effort basis.
15222
15223 @item rule
15224 Set the life rule.
15225
15226 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
15227 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
15228 @var{NS} specifies the number of alive neighbor cells which make a
15229 live cell stay alive, and @var{NB} the number of alive neighbor cells
15230 which make a dead cell to become alive (i.e. to "born").
15231 "s" and "b" can be used in place of "S" and "B", respectively.
15232
15233 Alternatively a rule can be specified by an 18-bits integer. The 9
15234 high order bits are used to encode the next cell state if it is alive
15235 for each number of neighbor alive cells, the low order bits specify
15236 the rule for "borning" new cells. Higher order bits encode for an
15237 higher number of neighbor cells.
15238 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
15239 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
15240
15241 Default value is "S23/B3", which is the original Conway's game of life
15242 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
15243 cells, and will born a new cell if there are three alive cells around
15244 a dead cell.
15245
15246 @item size, s
15247 Set the size of the output video. For the syntax of this option, check the
15248 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15249
15250 If @option{filename} is specified, the size is set by default to the
15251 same size of the input file. If @option{size} is set, it must contain
15252 the size specified in the input file, and the initial grid defined in
15253 that file is centered in the larger resulting area.
15254
15255 If a filename is not specified, the size value defaults to "320x240"
15256 (used for a randomly generated initial grid).
15257
15258 @item stitch
15259 If set to 1, stitch the left and right grid edges together, and the
15260 top and bottom edges also. Defaults to 1.
15261
15262 @item mold
15263 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
15264 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
15265 value from 0 to 255.
15266
15267 @item life_color
15268 Set the color of living (or new born) cells.
15269
15270 @item death_color
15271 Set the color of dead cells. If @option{mold} is set, this is the first color
15272 used to represent a dead cell.
15273
15274 @item mold_color
15275 Set mold color, for definitely dead and moldy cells.
15276
15277 For the syntax of these 3 color options, check the "Color" section in the
15278 ffmpeg-utils manual.
15279 @end table
15280
15281 @subsection Examples
15282
15283 @itemize
15284 @item
15285 Read a grid from @file{pattern}, and center it on a grid of size
15286 300x300 pixels:
15287 @example
15288 life=f=pattern:s=300x300
15289 @end example
15290
15291 @item
15292 Generate a random grid of size 200x200, with a fill ratio of 2/3:
15293 @example
15294 life=ratio=2/3:s=200x200
15295 @end example
15296
15297 @item
15298 Specify a custom rule for evolving a randomly generated grid:
15299 @example
15300 life=rule=S14/B34
15301 @end example
15302
15303 @item
15304 Full example with slow death effect (mold) using @command{ffplay}:
15305 @example
15306 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
15307 @end example
15308 @end itemize
15309
15310 @anchor{allrgb}
15311 @anchor{allyuv}
15312 @anchor{color}
15313 @anchor{haldclutsrc}
15314 @anchor{nullsrc}
15315 @anchor{rgbtestsrc}
15316 @anchor{smptebars}
15317 @anchor{smptehdbars}
15318 @anchor{testsrc}
15319 @anchor{testsrc2}
15320 @anchor{yuvtestsrc}
15321 @section allrgb, allyuv, color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
15322
15323 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
15324
15325 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
15326
15327 The @code{color} source provides an uniformly colored input.
15328
15329 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
15330 @ref{haldclut} filter.
15331
15332 The @code{nullsrc} source returns unprocessed video frames. It is
15333 mainly useful to be employed in analysis / debugging tools, or as the
15334 source for filters which ignore the input data.
15335
15336 The @code{rgbtestsrc} source generates an RGB test pattern useful for
15337 detecting RGB vs BGR issues. You should see a red, green and blue
15338 stripe from top to bottom.
15339
15340 The @code{smptebars} source generates a color bars pattern, based on
15341 the SMPTE Engineering Guideline EG 1-1990.
15342
15343 The @code{smptehdbars} source generates a color bars pattern, based on
15344 the SMPTE RP 219-2002.
15345
15346 The @code{testsrc} source generates a test video pattern, showing a
15347 color pattern, a scrolling gradient and a timestamp. This is mainly
15348 intended for testing purposes.
15349
15350 The @code{testsrc2} source is similar to testsrc, but supports more
15351 pixel formats instead of just @code{rgb24}. This allows using it as an
15352 input for other tests without requiring a format conversion.
15353
15354 The @code{yuvtestsrc} source generates an YUV test pattern. You should
15355 see a y, cb and cr stripe from top to bottom.
15356
15357 The sources accept the following parameters:
15358
15359 @table @option
15360
15361 @item color, c
15362 Specify the color of the source, only available in the @code{color}
15363 source. For the syntax of this option, check the "Color" section in the
15364 ffmpeg-utils manual.
15365
15366 @item level
15367 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
15368 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
15369 pixels to be used as identity matrix for 3D lookup tables. Each component is
15370 coded on a @code{1/(N*N)} scale.
15371
15372 @item size, s
15373 Specify the size of the sourced video. For the syntax of this option, check the
15374 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15375 The default value is @code{320x240}.
15376
15377 This option is not available with the @code{haldclutsrc} filter.
15378
15379 @item rate, r
15380 Specify the frame rate of the sourced video, as the number of frames
15381 generated per second. It has to be a string in the format
15382 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
15383 number or a valid video frame rate abbreviation. The default value is
15384 "25".
15385
15386 @item sar
15387 Set the sample aspect ratio of the sourced video.
15388
15389 @item duration, d
15390 Set the duration of the sourced video. See
15391 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
15392 for the accepted syntax.
15393
15394 If not specified, or the expressed duration is negative, the video is
15395 supposed to be generated forever.
15396
15397 @item decimals, n
15398 Set the number of decimals to show in the timestamp, only available in the
15399 @code{testsrc} source.
15400
15401 The displayed timestamp value will correspond to the original
15402 timestamp value multiplied by the power of 10 of the specified
15403 value. Default value is 0.
15404 @end table
15405
15406 For example the following:
15407 @example
15408 testsrc=duration=5.3:size=qcif:rate=10
15409 @end example
15410
15411 will generate a video with a duration of 5.3 seconds, with size
15412 176x144 and a frame rate of 10 frames per second.
15413
15414 The following graph description will generate a red source
15415 with an opacity of 0.2, with size "qcif" and a frame rate of 10
15416 frames per second.
15417 @example
15418 color=c=red@@0.2:s=qcif:r=10
15419 @end example
15420
15421 If the input content is to be ignored, @code{nullsrc} can be used. The
15422 following command generates noise in the luminance plane by employing
15423 the @code{geq} filter:
15424 @example
15425 nullsrc=s=256x256, geq=random(1)*255:128:128
15426 @end example
15427
15428 @subsection Commands
15429
15430 The @code{color} source supports the following commands:
15431
15432 @table @option
15433 @item c, color
15434 Set the color of the created image. Accepts the same syntax of the
15435 corresponding @option{color} option.
15436 @end table
15437
15438 @c man end VIDEO SOURCES
15439
15440 @chapter Video Sinks
15441 @c man begin VIDEO SINKS
15442
15443 Below is a description of the currently available video sinks.
15444
15445 @section buffersink
15446
15447 Buffer video frames, and make them available to the end of the filter
15448 graph.
15449
15450 This sink is mainly intended for programmatic use, in particular
15451 through the interface defined in @file{libavfilter/buffersink.h}
15452 or the options system.
15453
15454 It accepts a pointer to an AVBufferSinkContext structure, which
15455 defines the incoming buffers' formats, to be passed as the opaque
15456 parameter to @code{avfilter_init_filter} for initialization.
15457
15458 @section nullsink
15459
15460 Null video sink: do absolutely nothing with the input video. It is
15461 mainly useful as a template and for use in analysis / debugging
15462 tools.
15463
15464 @c man end VIDEO SINKS
15465
15466 @chapter Multimedia Filters
15467 @c man begin MULTIMEDIA FILTERS
15468
15469 Below is a description of the currently available multimedia filters.
15470
15471 @section ahistogram
15472
15473 Convert input audio to a video output, displaying the volume histogram.
15474
15475 The filter accepts the following options:
15476
15477 @table @option
15478 @item dmode
15479 Specify how histogram is calculated.
15480
15481 It accepts the following values:
15482 @table @samp
15483 @item single
15484 Use single histogram for all channels.
15485 @item separate
15486 Use separate histogram for each channel.
15487 @end table
15488 Default is @code{single}.
15489
15490 @item rate, r
15491 Set frame rate, expressed as number of frames per second. Default
15492 value is "25".
15493
15494 @item size, s
15495 Specify the video size for the output. For the syntax of this option, check the
15496 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15497 Default value is @code{hd720}.
15498
15499 @item scale
15500 Set display scale.
15501
15502 It accepts the following values:
15503 @table @samp
15504 @item log
15505 logarithmic
15506 @item sqrt
15507 square root
15508 @item cbrt
15509 cubic root
15510 @item lin
15511 linear
15512 @item rlog
15513 reverse logarithmic
15514 @end table
15515 Default is @code{log}.
15516
15517 @item ascale
15518 Set amplitude scale.
15519
15520 It accepts the following values:
15521 @table @samp
15522 @item log
15523 logarithmic
15524 @item lin
15525 linear
15526 @end table
15527 Default is @code{log}.
15528
15529 @item acount
15530 Set how much frames to accumulate in histogram.
15531 Defauls is 1. Setting this to -1 accumulates all frames.
15532
15533 @item rheight
15534 Set histogram ratio of window height.
15535
15536 @item slide
15537 Set sonogram sliding.
15538
15539 It accepts the following values:
15540 @table @samp
15541 @item replace
15542 replace old rows with new ones.
15543 @item scroll
15544 scroll from top to bottom.
15545 @end table
15546 Default is @code{replace}.
15547 @end table
15548
15549 @section aphasemeter
15550
15551 Convert input audio to a video output, displaying the audio phase.
15552
15553 The filter accepts the following options:
15554
15555 @table @option
15556 @item rate, r
15557 Set the output frame rate. Default value is @code{25}.
15558
15559 @item size, s
15560 Set the video size for the output. For the syntax of this option, check the
15561 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15562 Default value is @code{800x400}.
15563
15564 @item rc
15565 @item gc
15566 @item bc
15567 Specify the red, green, blue contrast. Default values are @code{2},
15568 @code{7} and @code{1}.
15569 Allowed range is @code{[0, 255]}.
15570
15571 @item mpc
15572 Set color which will be used for drawing median phase. If color is
15573 @code{none} which is default, no median phase value will be drawn.
15574 @end table
15575
15576 The filter also exports the frame metadata @code{lavfi.aphasemeter.phase} which
15577 represents mean phase of current audio frame. Value is in range @code{[-1, 1]}.
15578 The @code{-1} means left and right channels are completely out of phase and
15579 @code{1} means channels are in phase.
15580
15581 @section avectorscope
15582
15583 Convert input audio to a video output, representing the audio vector
15584 scope.
15585
15586 The filter is used to measure the difference between channels of stereo
15587 audio stream. A monoaural signal, consisting of identical left and right
15588 signal, results in straight vertical line. Any stereo separation is visible
15589 as a deviation from this line, creating a Lissajous figure.
15590 If the straight (or deviation from it) but horizontal line appears this
15591 indicates that the left and right channels are out of phase.
15592
15593 The filter accepts the following options:
15594
15595 @table @option
15596 @item mode, m
15597 Set the vectorscope mode.
15598
15599 Available values are:
15600 @table @samp
15601 @item lissajous
15602 Lissajous rotated by 45 degrees.
15603
15604 @item lissajous_xy
15605 Same as above but not rotated.
15606
15607 @item polar
15608 Shape resembling half of circle.
15609 @end table
15610
15611 Default value is @samp{lissajous}.
15612
15613 @item size, s
15614 Set the video size for the output. For the syntax of this option, check the
15615 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15616 Default value is @code{400x400}.
15617
15618 @item rate, r
15619 Set the output frame rate. Default value is @code{25}.
15620
15621 @item rc
15622 @item gc
15623 @item bc
15624 @item ac
15625 Specify the red, green, blue and alpha contrast. Default values are @code{40},
15626 @code{160}, @code{80} and @code{255}.
15627 Allowed range is @code{[0, 255]}.
15628
15629 @item rf
15630 @item gf
15631 @item bf
15632 @item af
15633 Specify the red, green, blue and alpha fade. Default values are @code{15},
15634 @code{10}, @code{5} and @code{5}.
15635 Allowed range is @code{[0, 255]}.
15636
15637 @item zoom
15638 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[1, 10]}.
15639
15640 @item draw
15641 Set the vectorscope drawing mode.
15642
15643 Available values are:
15644 @table @samp
15645 @item dot
15646 Draw dot for each sample.
15647
15648 @item line
15649 Draw line between previous and current sample.
15650 @end table
15651
15652 Default value is @samp{dot}.
15653
15654 @item scale
15655 Specify amplitude scale of audio samples.
15656
15657 Available values are:
15658 @table @samp
15659 @item lin
15660 Linear.
15661
15662 @item sqrt
15663 Square root.
15664
15665 @item cbrt
15666 Cubic root.
15667
15668 @item log
15669 Logarithmic.
15670 @end table
15671
15672 @end table
15673
15674 @subsection Examples
15675
15676 @itemize
15677 @item
15678 Complete example using @command{ffplay}:
15679 @example
15680 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
15681              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
15682 @end example
15683 @end itemize
15684
15685 @section bench, abench
15686
15687 Benchmark part of a filtergraph.
15688
15689 The filter accepts the following options:
15690
15691 @table @option
15692 @item action
15693 Start or stop a timer.
15694
15695 Available values are:
15696 @table @samp
15697 @item start
15698 Get the current time, set it as frame metadata (using the key
15699 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
15700
15701 @item stop
15702 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
15703 the input frame metadata to get the time difference. Time difference, average,
15704 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
15705 @code{min}) are then printed. The timestamps are expressed in seconds.
15706 @end table
15707 @end table
15708
15709 @subsection Examples
15710
15711 @itemize
15712 @item
15713 Benchmark @ref{selectivecolor} filter:
15714 @example
15715 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
15716 @end example
15717 @end itemize
15718
15719 @section concat
15720
15721 Concatenate audio and video streams, joining them together one after the
15722 other.
15723
15724 The filter works on segments of synchronized video and audio streams. All
15725 segments must have the same number of streams of each type, and that will
15726 also be the number of streams at output.
15727
15728 The filter accepts the following options:
15729
15730 @table @option
15731
15732 @item n
15733 Set the number of segments. Default is 2.
15734
15735 @item v
15736 Set the number of output video streams, that is also the number of video
15737 streams in each segment. Default is 1.
15738
15739 @item a
15740 Set the number of output audio streams, that is also the number of audio
15741 streams in each segment. Default is 0.
15742
15743 @item unsafe
15744 Activate unsafe mode: do not fail if segments have a different format.
15745
15746 @end table
15747
15748 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
15749 @var{a} audio outputs.
15750
15751 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
15752 segment, in the same order as the outputs, then the inputs for the second
15753 segment, etc.
15754
15755 Related streams do not always have exactly the same duration, for various
15756 reasons including codec frame size or sloppy authoring. For that reason,
15757 related synchronized streams (e.g. a video and its audio track) should be
15758 concatenated at once. The concat filter will use the duration of the longest
15759 stream in each segment (except the last one), and if necessary pad shorter
15760 audio streams with silence.
15761
15762 For this filter to work correctly, all segments must start at timestamp 0.
15763
15764 All corresponding streams must have the same parameters in all segments; the
15765 filtering system will automatically select a common pixel format for video
15766 streams, and a common sample format, sample rate and channel layout for
15767 audio streams, but other settings, such as resolution, must be converted
15768 explicitly by the user.
15769
15770 Different frame rates are acceptable but will result in variable frame rate
15771 at output; be sure to configure the output file to handle it.
15772
15773 @subsection Examples
15774
15775 @itemize
15776 @item
15777 Concatenate an opening, an episode and an ending, all in bilingual version
15778 (video in stream 0, audio in streams 1 and 2):
15779 @example
15780 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
15781   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
15782    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
15783   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
15784 @end example
15785
15786 @item
15787 Concatenate two parts, handling audio and video separately, using the
15788 (a)movie sources, and adjusting the resolution:
15789 @example
15790 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
15791 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
15792 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
15793 @end example
15794 Note that a desync will happen at the stitch if the audio and video streams
15795 do not have exactly the same duration in the first file.
15796
15797 @end itemize
15798
15799 @section drawgraph, adrawgraph
15800
15801 Draw a graph using input video or audio metadata.
15802
15803 It accepts the following parameters:
15804
15805 @table @option
15806 @item m1
15807 Set 1st frame metadata key from which metadata values will be used to draw a graph.
15808
15809 @item fg1
15810 Set 1st foreground color expression.
15811
15812 @item m2
15813 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
15814
15815 @item fg2
15816 Set 2nd foreground color expression.
15817
15818 @item m3
15819 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
15820
15821 @item fg3
15822 Set 3rd foreground color expression.
15823
15824 @item m4
15825 Set 4th frame metadata key from which metadata values will be used to draw a graph.
15826
15827 @item fg4
15828 Set 4th foreground color expression.
15829
15830 @item min
15831 Set minimal value of metadata value.
15832
15833 @item max
15834 Set maximal value of metadata value.
15835
15836 @item bg
15837 Set graph background color. Default is white.
15838
15839 @item mode
15840 Set graph mode.
15841
15842 Available values for mode is:
15843 @table @samp
15844 @item bar
15845 @item dot
15846 @item line
15847 @end table
15848
15849 Default is @code{line}.
15850
15851 @item slide
15852 Set slide mode.
15853
15854 Available values for slide is:
15855 @table @samp
15856 @item frame
15857 Draw new frame when right border is reached.
15858
15859 @item replace
15860 Replace old columns with new ones.
15861
15862 @item scroll
15863 Scroll from right to left.
15864
15865 @item rscroll
15866 Scroll from left to right.
15867
15868 @item picture
15869 Draw single picture.
15870 @end table
15871
15872 Default is @code{frame}.
15873
15874 @item size
15875 Set size of graph video. For the syntax of this option, check the
15876 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15877 The default value is @code{900x256}.
15878
15879 The foreground color expressions can use the following variables:
15880 @table @option
15881 @item MIN
15882 Minimal value of metadata value.
15883
15884 @item MAX
15885 Maximal value of metadata value.
15886
15887 @item VAL
15888 Current metadata key value.
15889 @end table
15890
15891 The color is defined as 0xAABBGGRR.
15892 @end table
15893
15894 Example using metadata from @ref{signalstats} filter:
15895 @example
15896 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
15897 @end example
15898
15899 Example using metadata from @ref{ebur128} filter:
15900 @example
15901 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
15902 @end example
15903
15904 @anchor{ebur128}
15905 @section ebur128
15906
15907 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
15908 it unchanged. By default, it logs a message at a frequency of 10Hz with the
15909 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
15910 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
15911
15912 The filter also has a video output (see the @var{video} option) with a real
15913 time graph to observe the loudness evolution. The graphic contains the logged
15914 message mentioned above, so it is not printed anymore when this option is set,
15915 unless the verbose logging is set. The main graphing area contains the
15916 short-term loudness (3 seconds of analysis), and the gauge on the right is for
15917 the momentary loudness (400 milliseconds).
15918
15919 More information about the Loudness Recommendation EBU R128 on
15920 @url{http://tech.ebu.ch/loudness}.
15921
15922 The filter accepts the following options:
15923
15924 @table @option
15925
15926 @item video
15927 Activate the video output. The audio stream is passed unchanged whether this
15928 option is set or no. The video stream will be the first output stream if
15929 activated. Default is @code{0}.
15930
15931 @item size
15932 Set the video size. This option is for video only. For the syntax of this
15933 option, check the
15934 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15935 Default and minimum resolution is @code{640x480}.
15936
15937 @item meter
15938 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
15939 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
15940 other integer value between this range is allowed.
15941
15942 @item metadata
15943 Set metadata injection. If set to @code{1}, the audio input will be segmented
15944 into 100ms output frames, each of them containing various loudness information
15945 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
15946
15947 Default is @code{0}.
15948
15949 @item framelog
15950 Force the frame logging level.
15951
15952 Available values are:
15953 @table @samp
15954 @item info
15955 information logging level
15956 @item verbose
15957 verbose logging level
15958 @end table
15959
15960 By default, the logging level is set to @var{info}. If the @option{video} or
15961 the @option{metadata} options are set, it switches to @var{verbose}.
15962
15963 @item peak
15964 Set peak mode(s).
15965
15966 Available modes can be cumulated (the option is a @code{flag} type). Possible
15967 values are:
15968 @table @samp
15969 @item none
15970 Disable any peak mode (default).
15971 @item sample
15972 Enable sample-peak mode.
15973
15974 Simple peak mode looking for the higher sample value. It logs a message
15975 for sample-peak (identified by @code{SPK}).
15976 @item true
15977 Enable true-peak mode.
15978
15979 If enabled, the peak lookup is done on an over-sampled version of the input
15980 stream for better peak accuracy. It logs a message for true-peak.
15981 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
15982 This mode requires a build with @code{libswresample}.
15983 @end table
15984
15985 @item dualmono
15986 Treat mono input files as "dual mono". If a mono file is intended for playback
15987 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
15988 If set to @code{true}, this option will compensate for this effect.
15989 Multi-channel input files are not affected by this option.
15990
15991 @item panlaw
15992 Set a specific pan law to be used for the measurement of dual mono files.
15993 This parameter is optional, and has a default value of -3.01dB.
15994 @end table
15995
15996 @subsection Examples
15997
15998 @itemize
15999 @item
16000 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
16001 @example
16002 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
16003 @end example
16004
16005 @item
16006 Run an analysis with @command{ffmpeg}:
16007 @example
16008 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
16009 @end example
16010 @end itemize
16011
16012 @section interleave, ainterleave
16013
16014 Temporally interleave frames from several inputs.
16015
16016 @code{interleave} works with video inputs, @code{ainterleave} with audio.
16017
16018 These filters read frames from several inputs and send the oldest
16019 queued frame to the output.
16020
16021 Input streams must have well defined, monotonically increasing frame
16022 timestamp values.
16023
16024 In order to submit one frame to output, these filters need to enqueue
16025 at least one frame for each input, so they cannot work in case one
16026 input is not yet terminated and will not receive incoming frames.
16027
16028 For example consider the case when one input is a @code{select} filter
16029 which always drops input frames. The @code{interleave} filter will keep
16030 reading from that input, but it will never be able to send new frames
16031 to output until the input sends an end-of-stream signal.
16032
16033 Also, depending on inputs synchronization, the filters will drop
16034 frames in case one input receives more frames than the other ones, and
16035 the queue is already filled.
16036
16037 These filters accept the following options:
16038
16039 @table @option
16040 @item nb_inputs, n
16041 Set the number of different inputs, it is 2 by default.
16042 @end table
16043
16044 @subsection Examples
16045
16046 @itemize
16047 @item
16048 Interleave frames belonging to different streams using @command{ffmpeg}:
16049 @example
16050 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
16051 @end example
16052
16053 @item
16054 Add flickering blur effect:
16055 @example
16056 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
16057 @end example
16058 @end itemize
16059
16060 @section metadata, ametadata
16061
16062 Manipulate frame metadata.
16063
16064 This filter accepts the following options:
16065
16066 @table @option
16067 @item mode
16068 Set mode of operation of the filter.
16069
16070 Can be one of the following:
16071
16072 @table @samp
16073 @item select
16074 If both @code{value} and @code{key} is set, select frames
16075 which have such metadata. If only @code{key} is set, select
16076 every frame that has such key in metadata.
16077
16078 @item add
16079 Add new metadata @code{key} and @code{value}. If key is already available
16080 do nothing.
16081
16082 @item modify
16083 Modify value of already present key.
16084
16085 @item delete
16086 If @code{value} is set, delete only keys that have such value.
16087 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
16088 the frame.
16089
16090 @item print
16091 Print key and its value if metadata was found. If @code{key} is not set print all
16092 metadata values available in frame.
16093 @end table
16094
16095 @item key
16096 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
16097
16098 @item value
16099 Set metadata value which will be used. This option is mandatory for
16100 @code{modify} and @code{add} mode.
16101
16102 @item function
16103 Which function to use when comparing metadata value and @code{value}.
16104
16105 Can be one of following:
16106
16107 @table @samp
16108 @item same_str
16109 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
16110
16111 @item starts_with
16112 Values are interpreted as strings, returns true if metadata value starts with
16113 the @code{value} option string.
16114
16115 @item less
16116 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
16117
16118 @item equal
16119 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
16120
16121 @item greater
16122 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
16123
16124 @item expr
16125 Values are interpreted as floats, returns true if expression from option @code{expr}
16126 evaluates to true.
16127 @end table
16128
16129 @item expr
16130 Set expression which is used when @code{function} is set to @code{expr}.
16131 The expression is evaluated through the eval API and can contain the following
16132 constants:
16133
16134 @table @option
16135 @item VALUE1
16136 Float representation of @code{value} from metadata key.
16137
16138 @item VALUE2
16139 Float representation of @code{value} as supplied by user in @code{value} option.
16140
16141 @item file
16142 If specified in @code{print} mode, output is written to the named file. Instead of
16143 plain filename any writable url can be specified. Filename ``-'' is a shorthand
16144 for standard output. If @code{file} option is not set, output is written to the log
16145 with AV_LOG_INFO loglevel.
16146 @end table
16147
16148 @end table
16149
16150 @subsection Examples
16151
16152 @itemize
16153 @item
16154 Print all metadata values for frames with key @code{lavfi.singnalstats.YDIF} with values
16155 between 0 and 1.
16156 @example
16157 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
16158 @end example
16159 @item
16160 Print silencedetect output to file @file{metadata.txt}.
16161 @example
16162 silencedetect,ametadata=mode=print:file=metadata.txt
16163 @end example
16164 @item
16165 Direct all metadata to a pipe with file descriptor 4.
16166 @example
16167 metadata=mode=print:file='pipe\:4'
16168 @end example
16169 @end itemize
16170
16171 @section perms, aperms
16172
16173 Set read/write permissions for the output frames.
16174
16175 These filters are mainly aimed at developers to test direct path in the
16176 following filter in the filtergraph.
16177
16178 The filters accept the following options:
16179
16180 @table @option
16181 @item mode
16182 Select the permissions mode.
16183
16184 It accepts the following values:
16185 @table @samp
16186 @item none
16187 Do nothing. This is the default.
16188 @item ro
16189 Set all the output frames read-only.
16190 @item rw
16191 Set all the output frames directly writable.
16192 @item toggle
16193 Make the frame read-only if writable, and writable if read-only.
16194 @item random
16195 Set each output frame read-only or writable randomly.
16196 @end table
16197
16198 @item seed
16199 Set the seed for the @var{random} mode, must be an integer included between
16200 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
16201 @code{-1}, the filter will try to use a good random seed on a best effort
16202 basis.
16203 @end table
16204
16205 Note: in case of auto-inserted filter between the permission filter and the
16206 following one, the permission might not be received as expected in that
16207 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
16208 perms/aperms filter can avoid this problem.
16209
16210 @section realtime, arealtime
16211
16212 Slow down filtering to match real time approximatively.
16213
16214 These filters will pause the filtering for a variable amount of time to
16215 match the output rate with the input timestamps.
16216 They are similar to the @option{re} option to @code{ffmpeg}.
16217
16218 They accept the following options:
16219
16220 @table @option
16221 @item limit
16222 Time limit for the pauses. Any pause longer than that will be considered
16223 a timestamp discontinuity and reset the timer. Default is 2 seconds.
16224 @end table
16225
16226 @anchor{select}
16227 @section select, aselect
16228
16229 Select frames to pass in output.
16230
16231 This filter accepts the following options:
16232
16233 @table @option
16234
16235 @item expr, e
16236 Set expression, which is evaluated for each input frame.
16237
16238 If the expression is evaluated to zero, the frame is discarded.
16239
16240 If the evaluation result is negative or NaN, the frame is sent to the
16241 first output; otherwise it is sent to the output with index
16242 @code{ceil(val)-1}, assuming that the input index starts from 0.
16243
16244 For example a value of @code{1.2} corresponds to the output with index
16245 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
16246
16247 @item outputs, n
16248 Set the number of outputs. The output to which to send the selected
16249 frame is based on the result of the evaluation. Default value is 1.
16250 @end table
16251
16252 The expression can contain the following constants:
16253
16254 @table @option
16255 @item n
16256 The (sequential) number of the filtered frame, starting from 0.
16257
16258 @item selected_n
16259 The (sequential) number of the selected frame, starting from 0.
16260
16261 @item prev_selected_n
16262 The sequential number of the last selected frame. It's NAN if undefined.
16263
16264 @item TB
16265 The timebase of the input timestamps.
16266
16267 @item pts
16268 The PTS (Presentation TimeStamp) of the filtered video frame,
16269 expressed in @var{TB} units. It's NAN if undefined.
16270
16271 @item t
16272 The PTS of the filtered video frame,
16273 expressed in seconds. It's NAN if undefined.
16274
16275 @item prev_pts
16276 The PTS of the previously filtered video frame. It's NAN if undefined.
16277
16278 @item prev_selected_pts
16279 The PTS of the last previously filtered video frame. It's NAN if undefined.
16280
16281 @item prev_selected_t
16282 The PTS of the last previously selected video frame. It's NAN if undefined.
16283
16284 @item start_pts
16285 The PTS of the first video frame in the video. It's NAN if undefined.
16286
16287 @item start_t
16288 The time of the first video frame in the video. It's NAN if undefined.
16289
16290 @item pict_type @emph{(video only)}
16291 The type of the filtered frame. It can assume one of the following
16292 values:
16293 @table @option
16294 @item I
16295 @item P
16296 @item B
16297 @item S
16298 @item SI
16299 @item SP
16300 @item BI
16301 @end table
16302
16303 @item interlace_type @emph{(video only)}
16304 The frame interlace type. It can assume one of the following values:
16305 @table @option
16306 @item PROGRESSIVE
16307 The frame is progressive (not interlaced).
16308 @item TOPFIRST
16309 The frame is top-field-first.
16310 @item BOTTOMFIRST
16311 The frame is bottom-field-first.
16312 @end table
16313
16314 @item consumed_sample_n @emph{(audio only)}
16315 the number of selected samples before the current frame
16316
16317 @item samples_n @emph{(audio only)}
16318 the number of samples in the current frame
16319
16320 @item sample_rate @emph{(audio only)}
16321 the input sample rate
16322
16323 @item key
16324 This is 1 if the filtered frame is a key-frame, 0 otherwise.
16325
16326 @item pos
16327 the position in the file of the filtered frame, -1 if the information
16328 is not available (e.g. for synthetic video)
16329
16330 @item scene @emph{(video only)}
16331 value between 0 and 1 to indicate a new scene; a low value reflects a low
16332 probability for the current frame to introduce a new scene, while a higher
16333 value means the current frame is more likely to be one (see the example below)
16334
16335 @item concatdec_select
16336 The concat demuxer can select only part of a concat input file by setting an
16337 inpoint and an outpoint, but the output packets may not be entirely contained
16338 in the selected interval. By using this variable, it is possible to skip frames
16339 generated by the concat demuxer which are not exactly contained in the selected
16340 interval.
16341
16342 This works by comparing the frame pts against the @var{lavf.concat.start_time}
16343 and the @var{lavf.concat.duration} packet metadata values which are also
16344 present in the decoded frames.
16345
16346 The @var{concatdec_select} variable is -1 if the frame pts is at least
16347 start_time and either the duration metadata is missing or the frame pts is less
16348 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
16349 missing.
16350
16351 That basically means that an input frame is selected if its pts is within the
16352 interval set by the concat demuxer.
16353
16354 @end table
16355
16356 The default value of the select expression is "1".
16357
16358 @subsection Examples
16359
16360 @itemize
16361 @item
16362 Select all frames in input:
16363 @example
16364 select
16365 @end example
16366
16367 The example above is the same as:
16368 @example
16369 select=1
16370 @end example
16371
16372 @item
16373 Skip all frames:
16374 @example
16375 select=0
16376 @end example
16377
16378 @item
16379 Select only I-frames:
16380 @example
16381 select='eq(pict_type\,I)'
16382 @end example
16383
16384 @item
16385 Select one frame every 100:
16386 @example
16387 select='not(mod(n\,100))'
16388 @end example
16389
16390 @item
16391 Select only frames contained in the 10-20 time interval:
16392 @example
16393 select=between(t\,10\,20)
16394 @end example
16395
16396 @item
16397 Select only I-frames contained in the 10-20 time interval:
16398 @example
16399 select=between(t\,10\,20)*eq(pict_type\,I)
16400 @end example
16401
16402 @item
16403 Select frames with a minimum distance of 10 seconds:
16404 @example
16405 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
16406 @end example
16407
16408 @item
16409 Use aselect to select only audio frames with samples number > 100:
16410 @example
16411 aselect='gt(samples_n\,100)'
16412 @end example
16413
16414 @item
16415 Create a mosaic of the first scenes:
16416 @example
16417 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
16418 @end example
16419
16420 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
16421 choice.
16422
16423 @item
16424 Send even and odd frames to separate outputs, and compose them:
16425 @example
16426 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
16427 @end example
16428
16429 @item
16430 Select useful frames from an ffconcat file which is using inpoints and
16431 outpoints but where the source files are not intra frame only.
16432 @example
16433 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
16434 @end example
16435 @end itemize
16436
16437 @section sendcmd, asendcmd
16438
16439 Send commands to filters in the filtergraph.
16440
16441 These filters read commands to be sent to other filters in the
16442 filtergraph.
16443
16444 @code{sendcmd} must be inserted between two video filters,
16445 @code{asendcmd} must be inserted between two audio filters, but apart
16446 from that they act the same way.
16447
16448 The specification of commands can be provided in the filter arguments
16449 with the @var{commands} option, or in a file specified by the
16450 @var{filename} option.
16451
16452 These filters accept the following options:
16453 @table @option
16454 @item commands, c
16455 Set the commands to be read and sent to the other filters.
16456 @item filename, f
16457 Set the filename of the commands to be read and sent to the other
16458 filters.
16459 @end table
16460
16461 @subsection Commands syntax
16462
16463 A commands description consists of a sequence of interval
16464 specifications, comprising a list of commands to be executed when a
16465 particular event related to that interval occurs. The occurring event
16466 is typically the current frame time entering or leaving a given time
16467 interval.
16468
16469 An interval is specified by the following syntax:
16470 @example
16471 @var{START}[-@var{END}] @var{COMMANDS};
16472 @end example
16473
16474 The time interval is specified by the @var{START} and @var{END} times.
16475 @var{END} is optional and defaults to the maximum time.
16476
16477 The current frame time is considered within the specified interval if
16478 it is included in the interval [@var{START}, @var{END}), that is when
16479 the time is greater or equal to @var{START} and is lesser than
16480 @var{END}.
16481
16482 @var{COMMANDS} consists of a sequence of one or more command
16483 specifications, separated by ",", relating to that interval.  The
16484 syntax of a command specification is given by:
16485 @example
16486 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
16487 @end example
16488
16489 @var{FLAGS} is optional and specifies the type of events relating to
16490 the time interval which enable sending the specified command, and must
16491 be a non-null sequence of identifier flags separated by "+" or "|" and
16492 enclosed between "[" and "]".
16493
16494 The following flags are recognized:
16495 @table @option
16496 @item enter
16497 The command is sent when the current frame timestamp enters the
16498 specified interval. In other words, the command is sent when the
16499 previous frame timestamp was not in the given interval, and the
16500 current is.
16501
16502 @item leave
16503 The command is sent when the current frame timestamp leaves the
16504 specified interval. In other words, the command is sent when the
16505 previous frame timestamp was in the given interval, and the
16506 current is not.
16507 @end table
16508
16509 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
16510 assumed.
16511
16512 @var{TARGET} specifies the target of the command, usually the name of
16513 the filter class or a specific filter instance name.
16514
16515 @var{COMMAND} specifies the name of the command for the target filter.
16516
16517 @var{ARG} is optional and specifies the optional list of argument for
16518 the given @var{COMMAND}.
16519
16520 Between one interval specification and another, whitespaces, or
16521 sequences of characters starting with @code{#} until the end of line,
16522 are ignored and can be used to annotate comments.
16523
16524 A simplified BNF description of the commands specification syntax
16525 follows:
16526 @example
16527 @var{COMMAND_FLAG}  ::= "enter" | "leave"
16528 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
16529 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
16530 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
16531 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
16532 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
16533 @end example
16534
16535 @subsection Examples
16536
16537 @itemize
16538 @item
16539 Specify audio tempo change at second 4:
16540 @example
16541 asendcmd=c='4.0 atempo tempo 1.5',atempo
16542 @end example
16543
16544 @item
16545 Specify a list of drawtext and hue commands in a file.
16546 @example
16547 # show text in the interval 5-10
16548 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
16549          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
16550
16551 # desaturate the image in the interval 15-20
16552 15.0-20.0 [enter] hue s 0,
16553           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
16554           [leave] hue s 1,
16555           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
16556
16557 # apply an exponential saturation fade-out effect, starting from time 25
16558 25 [enter] hue s exp(25-t)
16559 @end example
16560
16561 A filtergraph allowing to read and process the above command list
16562 stored in a file @file{test.cmd}, can be specified with:
16563 @example
16564 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
16565 @end example
16566 @end itemize
16567
16568 @anchor{setpts}
16569 @section setpts, asetpts
16570
16571 Change the PTS (presentation timestamp) of the input frames.
16572
16573 @code{setpts} works on video frames, @code{asetpts} on audio frames.
16574
16575 This filter accepts the following options:
16576
16577 @table @option
16578
16579 @item expr
16580 The expression which is evaluated for each frame to construct its timestamp.
16581
16582 @end table
16583
16584 The expression is evaluated through the eval API and can contain the following
16585 constants:
16586
16587 @table @option
16588 @item FRAME_RATE
16589 frame rate, only defined for constant frame-rate video
16590
16591 @item PTS
16592 The presentation timestamp in input
16593
16594 @item N
16595 The count of the input frame for video or the number of consumed samples,
16596 not including the current frame for audio, starting from 0.
16597
16598 @item NB_CONSUMED_SAMPLES
16599 The number of consumed samples, not including the current frame (only
16600 audio)
16601
16602 @item NB_SAMPLES, S
16603 The number of samples in the current frame (only audio)
16604
16605 @item SAMPLE_RATE, SR
16606 The audio sample rate.
16607
16608 @item STARTPTS
16609 The PTS of the first frame.
16610
16611 @item STARTT
16612 the time in seconds of the first frame
16613
16614 @item INTERLACED
16615 State whether the current frame is interlaced.
16616
16617 @item T
16618 the time in seconds of the current frame
16619
16620 @item POS
16621 original position in the file of the frame, or undefined if undefined
16622 for the current frame
16623
16624 @item PREV_INPTS
16625 The previous input PTS.
16626
16627 @item PREV_INT
16628 previous input time in seconds
16629
16630 @item PREV_OUTPTS
16631 The previous output PTS.
16632
16633 @item PREV_OUTT
16634 previous output time in seconds
16635
16636 @item RTCTIME
16637 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
16638 instead.
16639
16640 @item RTCSTART
16641 The wallclock (RTC) time at the start of the movie in microseconds.
16642
16643 @item TB
16644 The timebase of the input timestamps.
16645
16646 @end table
16647
16648 @subsection Examples
16649
16650 @itemize
16651 @item
16652 Start counting PTS from zero
16653 @example
16654 setpts=PTS-STARTPTS
16655 @end example
16656
16657 @item
16658 Apply fast motion effect:
16659 @example
16660 setpts=0.5*PTS
16661 @end example
16662
16663 @item
16664 Apply slow motion effect:
16665 @example
16666 setpts=2.0*PTS
16667 @end example
16668
16669 @item
16670 Set fixed rate of 25 frames per second:
16671 @example
16672 setpts=N/(25*TB)
16673 @end example
16674
16675 @item
16676 Set fixed rate 25 fps with some jitter:
16677 @example
16678 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
16679 @end example
16680
16681 @item
16682 Apply an offset of 10 seconds to the input PTS:
16683 @example
16684 setpts=PTS+10/TB
16685 @end example
16686
16687 @item
16688 Generate timestamps from a "live source" and rebase onto the current timebase:
16689 @example
16690 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
16691 @end example
16692
16693 @item
16694 Generate timestamps by counting samples:
16695 @example
16696 asetpts=N/SR/TB
16697 @end example
16698
16699 @end itemize
16700
16701 @section settb, asettb
16702
16703 Set the timebase to use for the output frames timestamps.
16704 It is mainly useful for testing timebase configuration.
16705
16706 It accepts the following parameters:
16707
16708 @table @option
16709
16710 @item expr, tb
16711 The expression which is evaluated into the output timebase.
16712
16713 @end table
16714
16715 The value for @option{tb} is an arithmetic expression representing a
16716 rational. The expression can contain the constants "AVTB" (the default
16717 timebase), "intb" (the input timebase) and "sr" (the sample rate,
16718 audio only). Default value is "intb".
16719
16720 @subsection Examples
16721
16722 @itemize
16723 @item
16724 Set the timebase to 1/25:
16725 @example
16726 settb=expr=1/25
16727 @end example
16728
16729 @item
16730 Set the timebase to 1/10:
16731 @example
16732 settb=expr=0.1
16733 @end example
16734
16735 @item
16736 Set the timebase to 1001/1000:
16737 @example
16738 settb=1+0.001
16739 @end example
16740
16741 @item
16742 Set the timebase to 2*intb:
16743 @example
16744 settb=2*intb
16745 @end example
16746
16747 @item
16748 Set the default timebase value:
16749 @example
16750 settb=AVTB
16751 @end example
16752 @end itemize
16753
16754 @section showcqt
16755 Convert input audio to a video output representing frequency spectrum
16756 logarithmically using Brown-Puckette constant Q transform algorithm with
16757 direct frequency domain coefficient calculation (but the transform itself
16758 is not really constant Q, instead the Q factor is actually variable/clamped),
16759 with musical tone scale, from E0 to D#10.
16760
16761 The filter accepts the following options:
16762
16763 @table @option
16764 @item size, s
16765 Specify the video size for the output. It must be even. For the syntax of this option,
16766 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16767 Default value is @code{1920x1080}.
16768
16769 @item fps, rate, r
16770 Set the output frame rate. Default value is @code{25}.
16771
16772 @item bar_h
16773 Set the bargraph height. It must be even. Default value is @code{-1} which
16774 computes the bargraph height automatically.
16775
16776 @item axis_h
16777 Set the axis height. It must be even. Default value is @code{-1} which computes
16778 the axis height automatically.
16779
16780 @item sono_h
16781 Set the sonogram height. It must be even. Default value is @code{-1} which
16782 computes the sonogram height automatically.
16783
16784 @item fullhd
16785 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
16786 instead. Default value is @code{1}.
16787
16788 @item sono_v, volume
16789 Specify the sonogram volume expression. It can contain variables:
16790 @table @option
16791 @item bar_v
16792 the @var{bar_v} evaluated expression
16793 @item frequency, freq, f
16794 the frequency where it is evaluated
16795 @item timeclamp, tc
16796 the value of @var{timeclamp} option
16797 @end table
16798 and functions:
16799 @table @option
16800 @item a_weighting(f)
16801 A-weighting of equal loudness
16802 @item b_weighting(f)
16803 B-weighting of equal loudness
16804 @item c_weighting(f)
16805 C-weighting of equal loudness.
16806 @end table
16807 Default value is @code{16}.
16808
16809 @item bar_v, volume2
16810 Specify the bargraph volume expression. It can contain variables:
16811 @table @option
16812 @item sono_v
16813 the @var{sono_v} evaluated expression
16814 @item frequency, freq, f
16815 the frequency where it is evaluated
16816 @item timeclamp, tc
16817 the value of @var{timeclamp} option
16818 @end table
16819 and functions:
16820 @table @option
16821 @item a_weighting(f)
16822 A-weighting of equal loudness
16823 @item b_weighting(f)
16824 B-weighting of equal loudness
16825 @item c_weighting(f)
16826 C-weighting of equal loudness.
16827 @end table
16828 Default value is @code{sono_v}.
16829
16830 @item sono_g, gamma
16831 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
16832 higher gamma makes the spectrum having more range. Default value is @code{3}.
16833 Acceptable range is @code{[1, 7]}.
16834
16835 @item bar_g, gamma2
16836 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
16837 @code{[1, 7]}.
16838
16839 @item bar_t
16840 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
16841 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
16842
16843 @item timeclamp, tc
16844 Specify the transform timeclamp. At low frequency, there is trade-off between
16845 accuracy in time domain and frequency domain. If timeclamp is lower,
16846 event in time domain is represented more accurately (such as fast bass drum),
16847 otherwise event in frequency domain is represented more accurately
16848 (such as bass guitar). Acceptable range is @code{[0.1, 1]}. Default value is @code{0.17}.
16849
16850 @item basefreq
16851 Specify the transform base frequency. Default value is @code{20.01523126408007475},
16852 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
16853
16854 @item endfreq
16855 Specify the transform end frequency. Default value is @code{20495.59681441799654},
16856 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
16857
16858 @item coeffclamp
16859 This option is deprecated and ignored.
16860
16861 @item tlength
16862 Specify the transform length in time domain. Use this option to control accuracy
16863 trade-off between time domain and frequency domain at every frequency sample.
16864 It can contain variables:
16865 @table @option
16866 @item frequency, freq, f
16867 the frequency where it is evaluated
16868 @item timeclamp, tc
16869 the value of @var{timeclamp} option.
16870 @end table
16871 Default value is @code{384*tc/(384+tc*f)}.
16872
16873 @item count
16874 Specify the transform count for every video frame. Default value is @code{6}.
16875 Acceptable range is @code{[1, 30]}.
16876
16877 @item fcount
16878 Specify the transform count for every single pixel. Default value is @code{0},
16879 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
16880
16881 @item fontfile
16882 Specify font file for use with freetype to draw the axis. If not specified,
16883 use embedded font. Note that drawing with font file or embedded font is not
16884 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
16885 option instead.
16886
16887 @item font
16888 Specify fontconfig pattern. This has lower priority than @var{fontfile}.
16889 The : in the pattern may be replaced by | to avoid unnecessary escaping.
16890
16891 @item fontcolor
16892 Specify font color expression. This is arithmetic expression that should return
16893 integer value 0xRRGGBB. It can contain variables:
16894 @table @option
16895 @item frequency, freq, f
16896 the frequency where it is evaluated
16897 @item timeclamp, tc
16898 the value of @var{timeclamp} option
16899 @end table
16900 and functions:
16901 @table @option
16902 @item midi(f)
16903 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
16904 @item r(x), g(x), b(x)
16905 red, green, and blue value of intensity x.
16906 @end table
16907 Default value is @code{st(0, (midi(f)-59.5)/12);
16908 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
16909 r(1-ld(1)) + b(ld(1))}.
16910
16911 @item axisfile
16912 Specify image file to draw the axis. This option override @var{fontfile} and
16913 @var{fontcolor} option.
16914
16915 @item axis, text
16916 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
16917 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
16918 Default value is @code{1}.
16919
16920 @item csp
16921 Set colorspace. The accepted values are:
16922 @table @samp
16923 @item unspecified
16924 Unspecified (default)
16925
16926 @item bt709
16927 BT.709
16928
16929 @item fcc
16930 FCC
16931
16932 @item bt470bg
16933 BT.470BG or BT.601-6 625
16934
16935 @item smpte170m
16936 SMPTE-170M or BT.601-6 525
16937
16938 @item smpte240m
16939 SMPTE-240M
16940
16941 @item bt2020ncl
16942 BT.2020 with non-constant luminance
16943
16944 @end table
16945
16946 @item cscheme
16947 Set spectrogram color scheme. This is list of floating point values with format
16948 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
16949 The default is @code{1|0.5|0|0|0.5|1}.
16950
16951 @end table
16952
16953 @subsection Examples
16954
16955 @itemize
16956 @item
16957 Playing audio while showing the spectrum:
16958 @example
16959 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
16960 @end example
16961
16962 @item
16963 Same as above, but with frame rate 30 fps:
16964 @example
16965 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
16966 @end example
16967
16968 @item
16969 Playing at 1280x720:
16970 @example
16971 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
16972 @end example
16973
16974 @item
16975 Disable sonogram display:
16976 @example
16977 sono_h=0
16978 @end example
16979
16980 @item
16981 A1 and its harmonics: A1, A2, (near)E3, A3:
16982 @example
16983 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),
16984                  asplit[a][out1]; [a] showcqt [out0]'
16985 @end example
16986
16987 @item
16988 Same as above, but with more accuracy in frequency domain:
16989 @example
16990 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),
16991                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
16992 @end example
16993
16994 @item
16995 Custom volume:
16996 @example
16997 bar_v=10:sono_v=bar_v*a_weighting(f)
16998 @end example
16999
17000 @item
17001 Custom gamma, now spectrum is linear to the amplitude.
17002 @example
17003 bar_g=2:sono_g=2
17004 @end example
17005
17006 @item
17007 Custom tlength equation:
17008 @example
17009 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)))'
17010 @end example
17011
17012 @item
17013 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
17014 @example
17015 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
17016 @end example
17017
17018 @item
17019 Custom font using fontconfig:
17020 @example
17021 font='Courier New,Monospace,mono|bold'
17022 @end example
17023
17024 @item
17025 Custom frequency range with custom axis using image file:
17026 @example
17027 axisfile=myaxis.png:basefreq=40:endfreq=10000
17028 @end example
17029 @end itemize
17030
17031 @section showfreqs
17032
17033 Convert input audio to video output representing the audio power spectrum.
17034 Audio amplitude is on Y-axis while frequency is on X-axis.
17035
17036 The filter accepts the following options:
17037
17038 @table @option
17039 @item size, s
17040 Specify size of video. For the syntax of this option, check the
17041 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17042 Default is @code{1024x512}.
17043
17044 @item mode
17045 Set display mode.
17046 This set how each frequency bin will be represented.
17047
17048 It accepts the following values:
17049 @table @samp
17050 @item line
17051 @item bar
17052 @item dot
17053 @end table
17054 Default is @code{bar}.
17055
17056 @item ascale
17057 Set amplitude scale.
17058
17059 It accepts the following values:
17060 @table @samp
17061 @item lin
17062 Linear scale.
17063
17064 @item sqrt
17065 Square root scale.
17066
17067 @item cbrt
17068 Cubic root scale.
17069
17070 @item log
17071 Logarithmic scale.
17072 @end table
17073 Default is @code{log}.
17074
17075 @item fscale
17076 Set frequency scale.
17077
17078 It accepts the following values:
17079 @table @samp
17080 @item lin
17081 Linear scale.
17082
17083 @item log
17084 Logarithmic scale.
17085
17086 @item rlog
17087 Reverse logarithmic scale.
17088 @end table
17089 Default is @code{lin}.
17090
17091 @item win_size
17092 Set window size.
17093
17094 It accepts the following values:
17095 @table @samp
17096 @item w16
17097 @item w32
17098 @item w64
17099 @item w128
17100 @item w256
17101 @item w512
17102 @item w1024
17103 @item w2048
17104 @item w4096
17105 @item w8192
17106 @item w16384
17107 @item w32768
17108 @item w65536
17109 @end table
17110 Default is @code{w2048}
17111
17112 @item win_func
17113 Set windowing function.
17114
17115 It accepts the following values:
17116 @table @samp
17117 @item rect
17118 @item bartlett
17119 @item hanning
17120 @item hamming
17121 @item blackman
17122 @item welch
17123 @item flattop
17124 @item bharris
17125 @item bnuttall
17126 @item bhann
17127 @item sine
17128 @item nuttall
17129 @item lanczos
17130 @item gauss
17131 @item tukey
17132 @item dolph
17133 @item cauchy
17134 @item parzen
17135 @item poisson
17136 @end table
17137 Default is @code{hanning}.
17138
17139 @item overlap
17140 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
17141 which means optimal overlap for selected window function will be picked.
17142
17143 @item averaging
17144 Set time averaging. Setting this to 0 will display current maximal peaks.
17145 Default is @code{1}, which means time averaging is disabled.
17146
17147 @item colors
17148 Specify list of colors separated by space or by '|' which will be used to
17149 draw channel frequencies. Unrecognized or missing colors will be replaced
17150 by white color.
17151
17152 @item cmode
17153 Set channel display mode.
17154
17155 It accepts the following values:
17156 @table @samp
17157 @item combined
17158 @item separate
17159 @end table
17160 Default is @code{combined}.
17161
17162 @item minamp
17163 Set minimum amplitude used in @code{log} amplitude scaler.
17164
17165 @end table
17166
17167 @anchor{showspectrum}
17168 @section showspectrum
17169
17170 Convert input audio to a video output, representing the audio frequency
17171 spectrum.
17172
17173 The filter accepts the following options:
17174
17175 @table @option
17176 @item size, s
17177 Specify the video size for the output. For the syntax of this option, check the
17178 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17179 Default value is @code{640x512}.
17180
17181 @item slide
17182 Specify how the spectrum should slide along the window.
17183
17184 It accepts the following values:
17185 @table @samp
17186 @item replace
17187 the samples start again on the left when they reach the right
17188 @item scroll
17189 the samples scroll from right to left
17190 @item fullframe
17191 frames are only produced when the samples reach the right
17192 @item rscroll
17193 the samples scroll from left to right
17194 @end table
17195
17196 Default value is @code{replace}.
17197
17198 @item mode
17199 Specify display mode.
17200
17201 It accepts the following values:
17202 @table @samp
17203 @item combined
17204 all channels are displayed in the same row
17205 @item separate
17206 all channels are displayed in separate rows
17207 @end table
17208
17209 Default value is @samp{combined}.
17210
17211 @item color
17212 Specify display color mode.
17213
17214 It accepts the following values:
17215 @table @samp
17216 @item channel
17217 each channel is displayed in a separate color
17218 @item intensity
17219 each channel is displayed using the same color scheme
17220 @item rainbow
17221 each channel is displayed using the rainbow color scheme
17222 @item moreland
17223 each channel is displayed using the moreland color scheme
17224 @item nebulae
17225 each channel is displayed using the nebulae color scheme
17226 @item fire
17227 each channel is displayed using the fire color scheme
17228 @item fiery
17229 each channel is displayed using the fiery color scheme
17230 @item fruit
17231 each channel is displayed using the fruit color scheme
17232 @item cool
17233 each channel is displayed using the cool color scheme
17234 @end table
17235
17236 Default value is @samp{channel}.
17237
17238 @item scale
17239 Specify scale used for calculating intensity color values.
17240
17241 It accepts the following values:
17242 @table @samp
17243 @item lin
17244 linear
17245 @item sqrt
17246 square root, default
17247 @item cbrt
17248 cubic root
17249 @item log
17250 logarithmic
17251 @item 4thrt
17252 4th root
17253 @item 5thrt
17254 5th root
17255 @end table
17256
17257 Default value is @samp{sqrt}.
17258
17259 @item saturation
17260 Set saturation modifier for displayed colors. Negative values provide
17261 alternative color scheme. @code{0} is no saturation at all.
17262 Saturation must be in [-10.0, 10.0] range.
17263 Default value is @code{1}.
17264
17265 @item win_func
17266 Set window function.
17267
17268 It accepts the following values:
17269 @table @samp
17270 @item rect
17271 @item bartlett
17272 @item hann
17273 @item hanning
17274 @item hamming
17275 @item blackman
17276 @item welch
17277 @item flattop
17278 @item bharris
17279 @item bnuttall
17280 @item bhann
17281 @item sine
17282 @item nuttall
17283 @item lanczos
17284 @item gauss
17285 @item tukey
17286 @item dolph
17287 @item cauchy
17288 @item parzen
17289 @item poisson
17290 @end table
17291
17292 Default value is @code{hann}.
17293
17294 @item orientation
17295 Set orientation of time vs frequency axis. Can be @code{vertical} or
17296 @code{horizontal}. Default is @code{vertical}.
17297
17298 @item overlap
17299 Set ratio of overlap window. Default value is @code{0}.
17300 When value is @code{1} overlap is set to recommended size for specific
17301 window function currently used.
17302
17303 @item gain
17304 Set scale gain for calculating intensity color values.
17305 Default value is @code{1}.
17306
17307 @item data
17308 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
17309
17310 @item rotation
17311 Set color rotation, must be in [-1.0, 1.0] range.
17312 Default value is @code{0}.
17313 @end table
17314
17315 The usage is very similar to the showwaves filter; see the examples in that
17316 section.
17317
17318 @subsection Examples
17319
17320 @itemize
17321 @item
17322 Large window with logarithmic color scaling:
17323 @example
17324 showspectrum=s=1280x480:scale=log
17325 @end example
17326
17327 @item
17328 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
17329 @example
17330 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
17331              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
17332 @end example
17333 @end itemize
17334
17335 @section showspectrumpic
17336
17337 Convert input audio to a single video frame, representing the audio frequency
17338 spectrum.
17339
17340 The filter accepts the following options:
17341
17342 @table @option
17343 @item size, s
17344 Specify the video size for the output. For the syntax of this option, check the
17345 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17346 Default value is @code{4096x2048}.
17347
17348 @item mode
17349 Specify display mode.
17350
17351 It accepts the following values:
17352 @table @samp
17353 @item combined
17354 all channels are displayed in the same row
17355 @item separate
17356 all channels are displayed in separate rows
17357 @end table
17358 Default value is @samp{combined}.
17359
17360 @item color
17361 Specify display color mode.
17362
17363 It accepts the following values:
17364 @table @samp
17365 @item channel
17366 each channel is displayed in a separate color
17367 @item intensity
17368 each channel is displayed using the same color scheme
17369 @item rainbow
17370 each channel is displayed using the rainbow color scheme
17371 @item moreland
17372 each channel is displayed using the moreland color scheme
17373 @item nebulae
17374 each channel is displayed using the nebulae color scheme
17375 @item fire
17376 each channel is displayed using the fire color scheme
17377 @item fiery
17378 each channel is displayed using the fiery color scheme
17379 @item fruit
17380 each channel is displayed using the fruit color scheme
17381 @item cool
17382 each channel is displayed using the cool color scheme
17383 @end table
17384 Default value is @samp{intensity}.
17385
17386 @item scale
17387 Specify scale used for calculating intensity color values.
17388
17389 It accepts the following values:
17390 @table @samp
17391 @item lin
17392 linear
17393 @item sqrt
17394 square root, default
17395 @item cbrt
17396 cubic root
17397 @item log
17398 logarithmic
17399 @item 4thrt
17400 4th root
17401 @item 5thrt
17402 5th root
17403 @end table
17404 Default value is @samp{log}.
17405
17406 @item saturation
17407 Set saturation modifier for displayed colors. Negative values provide
17408 alternative color scheme. @code{0} is no saturation at all.
17409 Saturation must be in [-10.0, 10.0] range.
17410 Default value is @code{1}.
17411
17412 @item win_func
17413 Set window function.
17414
17415 It accepts the following values:
17416 @table @samp
17417 @item rect
17418 @item bartlett
17419 @item hann
17420 @item hanning
17421 @item hamming
17422 @item blackman
17423 @item welch
17424 @item flattop
17425 @item bharris
17426 @item bnuttall
17427 @item bhann
17428 @item sine
17429 @item nuttall
17430 @item lanczos
17431 @item gauss
17432 @item tukey
17433 @item dolph
17434 @item cauchy
17435 @item parzen
17436 @item poisson
17437 @end table
17438 Default value is @code{hann}.
17439
17440 @item orientation
17441 Set orientation of time vs frequency axis. Can be @code{vertical} or
17442 @code{horizontal}. Default is @code{vertical}.
17443
17444 @item gain
17445 Set scale gain for calculating intensity color values.
17446 Default value is @code{1}.
17447
17448 @item legend
17449 Draw time and frequency axes and legends. Default is enabled.
17450
17451 @item rotation
17452 Set color rotation, must be in [-1.0, 1.0] range.
17453 Default value is @code{0}.
17454 @end table
17455
17456 @subsection Examples
17457
17458 @itemize
17459 @item
17460 Extract an audio spectrogram of a whole audio track
17461 in a 1024x1024 picture using @command{ffmpeg}:
17462 @example
17463 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
17464 @end example
17465 @end itemize
17466
17467 @section showvolume
17468
17469 Convert input audio volume to a video output.
17470
17471 The filter accepts the following options:
17472
17473 @table @option
17474 @item rate, r
17475 Set video rate.
17476
17477 @item b
17478 Set border width, allowed range is [0, 5]. Default is 1.
17479
17480 @item w
17481 Set channel width, allowed range is [80, 8192]. Default is 400.
17482
17483 @item h
17484 Set channel height, allowed range is [1, 900]. Default is 20.
17485
17486 @item f
17487 Set fade, allowed range is [0.001, 1]. Default is 0.95.
17488
17489 @item c
17490 Set volume color expression.
17491
17492 The expression can use the following variables:
17493
17494 @table @option
17495 @item VOLUME
17496 Current max volume of channel in dB.
17497
17498 @item PEAK
17499 Current peak.
17500
17501 @item CHANNEL
17502 Current channel number, starting from 0.
17503 @end table
17504
17505 @item t
17506 If set, displays channel names. Default is enabled.
17507
17508 @item v
17509 If set, displays volume values. Default is enabled.
17510
17511 @item o
17512 Set orientation, can be @code{horizontal} or @code{vertical},
17513 default is @code{horizontal}.
17514
17515 @item s
17516 Set step size, allowed range s [0, 5]. Default is 0, which means
17517 step is disabled.
17518 @end table
17519
17520 @section showwaves
17521
17522 Convert input audio to a video output, representing the samples waves.
17523
17524 The filter accepts the following options:
17525
17526 @table @option
17527 @item size, s
17528 Specify the video size for the output. For the syntax of this option, check the
17529 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17530 Default value is @code{600x240}.
17531
17532 @item mode
17533 Set display mode.
17534
17535 Available values are:
17536 @table @samp
17537 @item point
17538 Draw a point for each sample.
17539
17540 @item line
17541 Draw a vertical line for each sample.
17542
17543 @item p2p
17544 Draw a point for each sample and a line between them.
17545
17546 @item cline
17547 Draw a centered vertical line for each sample.
17548 @end table
17549
17550 Default value is @code{point}.
17551
17552 @item n
17553 Set the number of samples which are printed on the same column. A
17554 larger value will decrease the frame rate. Must be a positive
17555 integer. This option can be set only if the value for @var{rate}
17556 is not explicitly specified.
17557
17558 @item rate, r
17559 Set the (approximate) output frame rate. This is done by setting the
17560 option @var{n}. Default value is "25".
17561
17562 @item split_channels
17563 Set if channels should be drawn separately or overlap. Default value is 0.
17564
17565 @item colors
17566 Set colors separated by '|' which are going to be used for drawing of each channel.
17567
17568 @item scale
17569 Set amplitude scale.
17570
17571 Available values are:
17572 @table @samp
17573 @item lin
17574 Linear.
17575
17576 @item log
17577 Logarithmic.
17578
17579 @item sqrt
17580 Square root.
17581
17582 @item cbrt
17583 Cubic root.
17584 @end table
17585
17586 Default is linear.
17587 @end table
17588
17589 @subsection Examples
17590
17591 @itemize
17592 @item
17593 Output the input file audio and the corresponding video representation
17594 at the same time:
17595 @example
17596 amovie=a.mp3,asplit[out0],showwaves[out1]
17597 @end example
17598
17599 @item
17600 Create a synthetic signal and show it with showwaves, forcing a
17601 frame rate of 30 frames per second:
17602 @example
17603 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
17604 @end example
17605 @end itemize
17606
17607 @section showwavespic
17608
17609 Convert input audio to a single video frame, representing the samples waves.
17610
17611 The filter accepts the following options:
17612
17613 @table @option
17614 @item size, s
17615 Specify the video size for the output. For the syntax of this option, check the
17616 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17617 Default value is @code{600x240}.
17618
17619 @item split_channels
17620 Set if channels should be drawn separately or overlap. Default value is 0.
17621
17622 @item colors
17623 Set colors separated by '|' which are going to be used for drawing of each channel.
17624
17625 @item scale
17626 Set amplitude scale. Can be linear @code{lin} or logarithmic @code{log}.
17627 Default is linear.
17628 @end table
17629
17630 @subsection Examples
17631
17632 @itemize
17633 @item
17634 Extract a channel split representation of the wave form of a whole audio track
17635 in a 1024x800 picture using @command{ffmpeg}:
17636 @example
17637 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
17638 @end example
17639 @end itemize
17640
17641 @section sidedata, asidedata
17642
17643 Delete frame side data, or select frames based on it.
17644
17645 This filter accepts the following options:
17646
17647 @table @option
17648 @item mode
17649 Set mode of operation of the filter.
17650
17651 Can be one of the following:
17652
17653 @table @samp
17654 @item select
17655 Select every frame with side data of @code{type}.
17656
17657 @item delete
17658 Delete side data of @code{type}. If @code{type} is not set, delete all side
17659 data in the frame.
17660
17661 @end table
17662
17663 @item type
17664 Set side data type used with all modes. Must be set for @code{select} mode. For
17665 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
17666 in @file{libavutil/frame.h}. For example, to choose
17667 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
17668
17669 @end table
17670
17671 @section spectrumsynth
17672
17673 Sythesize audio from 2 input video spectrums, first input stream represents
17674 magnitude across time and second represents phase across time.
17675 The filter will transform from frequency domain as displayed in videos back
17676 to time domain as presented in audio output.
17677
17678 This filter is primarily created for reversing processed @ref{showspectrum}
17679 filter outputs, but can synthesize sound from other spectrograms too.
17680 But in such case results are going to be poor if the phase data is not
17681 available, because in such cases phase data need to be recreated, usually
17682 its just recreated from random noise.
17683 For best results use gray only output (@code{channel} color mode in
17684 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
17685 @code{lin} scale for phase video. To produce phase, for 2nd video, use
17686 @code{data} option. Inputs videos should generally use @code{fullframe}
17687 slide mode as that saves resources needed for decoding video.
17688
17689 The filter accepts the following options:
17690
17691 @table @option
17692 @item sample_rate
17693 Specify sample rate of output audio, the sample rate of audio from which
17694 spectrum was generated may differ.
17695
17696 @item channels
17697 Set number of channels represented in input video spectrums.
17698
17699 @item scale
17700 Set scale which was used when generating magnitude input spectrum.
17701 Can be @code{lin} or @code{log}. Default is @code{log}.
17702
17703 @item slide
17704 Set slide which was used when generating inputs spectrums.
17705 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
17706 Default is @code{fullframe}.
17707
17708 @item win_func
17709 Set window function used for resynthesis.
17710
17711 @item overlap
17712 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
17713 which means optimal overlap for selected window function will be picked.
17714
17715 @item orientation
17716 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
17717 Default is @code{vertical}.
17718 @end table
17719
17720 @subsection Examples
17721
17722 @itemize
17723 @item
17724 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
17725 then resynthesize videos back to audio with spectrumsynth:
17726 @example
17727 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
17728 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
17729 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
17730 @end example
17731 @end itemize
17732
17733 @section split, asplit
17734
17735 Split input into several identical outputs.
17736
17737 @code{asplit} works with audio input, @code{split} with video.
17738
17739 The filter accepts a single parameter which specifies the number of outputs. If
17740 unspecified, it defaults to 2.
17741
17742 @subsection Examples
17743
17744 @itemize
17745 @item
17746 Create two separate outputs from the same input:
17747 @example
17748 [in] split [out0][out1]
17749 @end example
17750
17751 @item
17752 To create 3 or more outputs, you need to specify the number of
17753 outputs, like in:
17754 @example
17755 [in] asplit=3 [out0][out1][out2]
17756 @end example
17757
17758 @item
17759 Create two separate outputs from the same input, one cropped and
17760 one padded:
17761 @example
17762 [in] split [splitout1][splitout2];
17763 [splitout1] crop=100:100:0:0    [cropout];
17764 [splitout2] pad=200:200:100:100 [padout];
17765 @end example
17766
17767 @item
17768 Create 5 copies of the input audio with @command{ffmpeg}:
17769 @example
17770 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
17771 @end example
17772 @end itemize
17773
17774 @section zmq, azmq
17775
17776 Receive commands sent through a libzmq client, and forward them to
17777 filters in the filtergraph.
17778
17779 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
17780 must be inserted between two video filters, @code{azmq} between two
17781 audio filters.
17782
17783 To enable these filters you need to install the libzmq library and
17784 headers and configure FFmpeg with @code{--enable-libzmq}.
17785
17786 For more information about libzmq see:
17787 @url{http://www.zeromq.org/}
17788
17789 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
17790 receives messages sent through a network interface defined by the
17791 @option{bind_address} option.
17792
17793 The received message must be in the form:
17794 @example
17795 @var{TARGET} @var{COMMAND} [@var{ARG}]
17796 @end example
17797
17798 @var{TARGET} specifies the target of the command, usually the name of
17799 the filter class or a specific filter instance name.
17800
17801 @var{COMMAND} specifies the name of the command for the target filter.
17802
17803 @var{ARG} is optional and specifies the optional argument list for the
17804 given @var{COMMAND}.
17805
17806 Upon reception, the message is processed and the corresponding command
17807 is injected into the filtergraph. Depending on the result, the filter
17808 will send a reply to the client, adopting the format:
17809 @example
17810 @var{ERROR_CODE} @var{ERROR_REASON}
17811 @var{MESSAGE}
17812 @end example
17813
17814 @var{MESSAGE} is optional.
17815
17816 @subsection Examples
17817
17818 Look at @file{tools/zmqsend} for an example of a zmq client which can
17819 be used to send commands processed by these filters.
17820
17821 Consider the following filtergraph generated by @command{ffplay}
17822 @example
17823 ffplay -dumpgraph 1 -f lavfi "
17824 color=s=100x100:c=red  [l];
17825 color=s=100x100:c=blue [r];
17826 nullsrc=s=200x100, zmq [bg];
17827 [bg][l]   overlay      [bg+l];
17828 [bg+l][r] overlay=x=100 "
17829 @end example
17830
17831 To change the color of the left side of the video, the following
17832 command can be used:
17833 @example
17834 echo Parsed_color_0 c yellow | tools/zmqsend
17835 @end example
17836
17837 To change the right side:
17838 @example
17839 echo Parsed_color_1 c pink | tools/zmqsend
17840 @end example
17841
17842 @c man end MULTIMEDIA FILTERS
17843
17844 @chapter Multimedia Sources
17845 @c man begin MULTIMEDIA SOURCES
17846
17847 Below is a description of the currently available multimedia sources.
17848
17849 @section amovie
17850
17851 This is the same as @ref{movie} source, except it selects an audio
17852 stream by default.
17853
17854 @anchor{movie}
17855 @section movie
17856
17857 Read audio and/or video stream(s) from a movie container.
17858
17859 It accepts the following parameters:
17860
17861 @table @option
17862 @item filename
17863 The name of the resource to read (not necessarily a file; it can also be a
17864 device or a stream accessed through some protocol).
17865
17866 @item format_name, f
17867 Specifies the format assumed for the movie to read, and can be either
17868 the name of a container or an input device. If not specified, the
17869 format is guessed from @var{movie_name} or by probing.
17870
17871 @item seek_point, sp
17872 Specifies the seek point in seconds. The frames will be output
17873 starting from this seek point. The parameter is evaluated with
17874 @code{av_strtod}, so the numerical value may be suffixed by an IS
17875 postfix. The default value is "0".
17876
17877 @item streams, s
17878 Specifies the streams to read. Several streams can be specified,
17879 separated by "+". The source will then have as many outputs, in the
17880 same order. The syntax is explained in the ``Stream specifiers''
17881 section in the ffmpeg manual. Two special names, "dv" and "da" specify
17882 respectively the default (best suited) video and audio stream. Default
17883 is "dv", or "da" if the filter is called as "amovie".
17884
17885 @item stream_index, si
17886 Specifies the index of the video stream to read. If the value is -1,
17887 the most suitable video stream will be automatically selected. The default
17888 value is "-1". Deprecated. If the filter is called "amovie", it will select
17889 audio instead of video.
17890
17891 @item loop
17892 Specifies how many times to read the stream in sequence.
17893 If the value is less than 1, the stream will be read again and again.
17894 Default value is "1".
17895
17896 Note that when the movie is looped the source timestamps are not
17897 changed, so it will generate non monotonically increasing timestamps.
17898
17899 @item discontinuity
17900 Specifies the time difference between frames above which the point is
17901 considered a timestamp discontinuity which is removed by adjusting the later
17902 timestamps.
17903 @end table
17904
17905 It allows overlaying a second video on top of the main input of
17906 a filtergraph, as shown in this graph:
17907 @example
17908 input -----------> deltapts0 --> overlay --> output
17909                                     ^
17910                                     |
17911 movie --> scale--> deltapts1 -------+
17912 @end example
17913 @subsection Examples
17914
17915 @itemize
17916 @item
17917 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
17918 on top of the input labelled "in":
17919 @example
17920 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
17921 [in] setpts=PTS-STARTPTS [main];
17922 [main][over] overlay=16:16 [out]
17923 @end example
17924
17925 @item
17926 Read from a video4linux2 device, and overlay it on top of the input
17927 labelled "in":
17928 @example
17929 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
17930 [in] setpts=PTS-STARTPTS [main];
17931 [main][over] overlay=16:16 [out]
17932 @end example
17933
17934 @item
17935 Read the first video stream and the audio stream with id 0x81 from
17936 dvd.vob; the video is connected to the pad named "video" and the audio is
17937 connected to the pad named "audio":
17938 @example
17939 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
17940 @end example
17941 @end itemize
17942
17943 @subsection Commands
17944
17945 Both movie and amovie support the following commands:
17946 @table @option
17947 @item seek
17948 Perform seek using "av_seek_frame".
17949 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
17950 @itemize
17951 @item
17952 @var{stream_index}: If stream_index is -1, a default
17953 stream is selected, and @var{timestamp} is automatically converted
17954 from AV_TIME_BASE units to the stream specific time_base.
17955 @item
17956 @var{timestamp}: Timestamp in AVStream.time_base units
17957 or, if no stream is specified, in AV_TIME_BASE units.
17958 @item
17959 @var{flags}: Flags which select direction and seeking mode.
17960 @end itemize
17961
17962 @item get_duration
17963 Get movie duration in AV_TIME_BASE units.
17964
17965 @end table
17966
17967 @c man end MULTIMEDIA SOURCES