]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avfilter/af_firequalizer: add fft2 option
[ffmpeg] / doc / filters.texi
1 @chapter Filtering Introduction
2 @c man begin FILTERING INTRODUCTION
3
4 Filtering in FFmpeg is enabled through the libavfilter library.
5
6 In libavfilter, a filter can have multiple inputs and multiple
7 outputs.
8 To illustrate the sorts of things that are possible, we consider the
9 following filtergraph.
10
11 @verbatim
12                 [main]
13 input --> split ---------------------> overlay --> output
14             |                             ^
15             |[tmp]                  [flip]|
16             +-----> crop --> vflip -------+
17 @end verbatim
18
19 This filtergraph splits the input stream in two streams, then sends one
20 stream through the crop filter and the vflip filter, before merging it
21 back with the other stream by overlaying it on top. You can use the
22 following command to achieve this:
23
24 @example
25 ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
26 @end example
27
28 The result will be that the top half of the video is mirrored
29 onto the bottom half of the output video.
30
31 Filters in the same linear chain are separated by commas, and distinct
32 linear chains of filters are separated by semicolons. In our example,
33 @var{crop,vflip} are in one linear chain, @var{split} and
34 @var{overlay} are separately in another. The points where the linear
35 chains join are labelled by names enclosed in square brackets. In the
36 example, the split filter generates two outputs that are associated to
37 the labels @var{[main]} and @var{[tmp]}.
38
39 The stream sent to the second output of @var{split}, labelled as
40 @var{[tmp]}, is processed through the @var{crop} filter, which crops
41 away the lower half part of the video, and then vertically flipped. The
42 @var{overlay} filter takes in input the first unchanged output of the
43 split filter (which was labelled as @var{[main]}), and overlay on its
44 lower half the output generated by the @var{crop,vflip} filterchain.
45
46 Some filters take in input a list of parameters: they are specified
47 after the filter name and an equal sign, and are separated from each other
48 by a colon.
49
50 There exist so-called @var{source filters} that do not have an
51 audio/video input, and @var{sink filters} that will not have audio/video
52 output.
53
54 @c man end FILTERING INTRODUCTION
55
56 @chapter graph2dot
57 @c man begin GRAPH2DOT
58
59 The @file{graph2dot} program included in the FFmpeg @file{tools}
60 directory can be used to parse a filtergraph description and issue a
61 corresponding textual representation in the dot language.
62
63 Invoke the command:
64 @example
65 graph2dot -h
66 @end example
67
68 to see how to use @file{graph2dot}.
69
70 You can then pass the dot description to the @file{dot} program (from
71 the graphviz suite of programs) and obtain a graphical representation
72 of the filtergraph.
73
74 For example the sequence of commands:
75 @example
76 echo @var{GRAPH_DESCRIPTION} | \
77 tools/graph2dot -o graph.tmp && \
78 dot -Tpng graph.tmp -o graph.png && \
79 display graph.png
80 @end example
81
82 can be used to create and display an image representing the graph
83 described by the @var{GRAPH_DESCRIPTION} string. Note that this string must be
84 a complete self-contained graph, with its inputs and outputs explicitly defined.
85 For example if your command line is of the form:
86 @example
87 ffmpeg -i infile -vf scale=640:360 outfile
88 @end example
89 your @var{GRAPH_DESCRIPTION} string will need to be of the form:
90 @example
91 nullsrc,scale=640:360,nullsink
92 @end example
93 you may also need to set the @var{nullsrc} parameters and add a @var{format}
94 filter in order to simulate a specific input file.
95
96 @c man end GRAPH2DOT
97
98 @chapter Filtergraph description
99 @c man begin FILTERGRAPH DESCRIPTION
100
101 A filtergraph is a directed graph of connected filters. It can contain
102 cycles, and there can be multiple links between a pair of
103 filters. Each link has one input pad on one side connecting it to one
104 filter from which it takes its input, and one output pad on the other
105 side connecting it to one filter accepting its output.
106
107 Each filter in a filtergraph is an instance of a filter class
108 registered in the application, which defines the features and the
109 number of input and output pads of the filter.
110
111 A filter with no input pads is called a "source", and a filter with no
112 output pads is called a "sink".
113
114 @anchor{Filtergraph syntax}
115 @section Filtergraph syntax
116
117 A filtergraph has a textual representation, which is recognized by the
118 @option{-filter}/@option{-vf}/@option{-af} and
119 @option{-filter_complex} options in @command{ffmpeg} and
120 @option{-vf}/@option{-af} in @command{ffplay}, and by the
121 @code{avfilter_graph_parse_ptr()} function defined in
122 @file{libavfilter/avfilter.h}.
123
124 A filterchain consists of a sequence of connected filters, each one
125 connected to the previous one in the sequence. A filterchain is
126 represented by a list of ","-separated filter descriptions.
127
128 A filtergraph consists of a sequence of filterchains. A sequence of
129 filterchains is represented by a list of ";"-separated filterchain
130 descriptions.
131
132 A filter is represented by a string of the form:
133 [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}=@var{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 To enable compilation of this filter you need to configure FFmpeg with
2925 @code{--enable-libebur128}.
2926
2927 The filter accepts the following options:
2928
2929 @table @option
2930 @item I, i
2931 Set integrated loudness target.
2932 Range is -70.0 - -5.0. Default value is -24.0.
2933
2934 @item LRA, lra
2935 Set loudness range target.
2936 Range is 1.0 - 20.0. Default value is 7.0.
2937
2938 @item TP, tp
2939 Set maximum true peak.
2940 Range is -9.0 - +0.0. Default value is -2.0.
2941
2942 @item measured_I, measured_i
2943 Measured IL of input file.
2944 Range is -99.0 - +0.0.
2945
2946 @item measured_LRA, measured_lra
2947 Measured LRA of input file.
2948 Range is  0.0 - 99.0.
2949
2950 @item measured_TP, measured_tp
2951 Measured true peak of input file.
2952 Range is  -99.0 - +99.0.
2953
2954 @item measured_thresh
2955 Measured threshold of input file.
2956 Range is -99.0 - +0.0.
2957
2958 @item offset
2959 Set offset gain. Gain is applied before the true-peak limiter.
2960 Range is  -99.0 - +99.0. Default is +0.0.
2961
2962 @item linear
2963 Normalize linearly if possible.
2964 measured_I, measured_LRA, measured_TP, and measured_thresh must also
2965 to be specified in order to use this mode.
2966 Options are true or false. Default is true.
2967
2968 @item dual_mono
2969 Treat mono input files as "dual-mono". If a mono file is intended for playback
2970 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
2971 If set to @code{true}, this option will compensate for this effect.
2972 Multi-channel input files are not affected by this option.
2973 Options are true or false. Default is false.
2974
2975 @item print_format
2976 Set print format for stats. Options are summary, json, or none.
2977 Default value is none.
2978 @end table
2979
2980 @section lowpass
2981
2982 Apply a low-pass filter with 3dB point frequency.
2983 The filter can be either single-pole or double-pole (the default).
2984 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
2985
2986 The filter accepts the following options:
2987
2988 @table @option
2989 @item frequency, f
2990 Set frequency in Hz. Default is 500.
2991
2992 @item poles, p
2993 Set number of poles. Default is 2.
2994
2995 @item width_type
2996 Set method to specify band-width of filter.
2997 @table @option
2998 @item h
2999 Hz
3000 @item q
3001 Q-Factor
3002 @item o
3003 octave
3004 @item s
3005 slope
3006 @end table
3007
3008 @item width, w
3009 Specify the band-width of a filter in width_type units.
3010 Applies only to double-pole filter.
3011 The default is 0.707q and gives a Butterworth response.
3012 @end table
3013
3014 @anchor{pan}
3015 @section pan
3016
3017 Mix channels with specific gain levels. The filter accepts the output
3018 channel layout followed by a set of channels definitions.
3019
3020 This filter is also designed to efficiently remap the channels of an audio
3021 stream.
3022
3023 The filter accepts parameters of the form:
3024 "@var{l}|@var{outdef}|@var{outdef}|..."
3025
3026 @table @option
3027 @item l
3028 output channel layout or number of channels
3029
3030 @item outdef
3031 output channel specification, of the form:
3032 "@var{out_name}=[@var{gain}*]@var{in_name}[+[@var{gain}*]@var{in_name}...]"
3033
3034 @item out_name
3035 output channel to define, either a channel name (FL, FR, etc.) or a channel
3036 number (c0, c1, etc.)
3037
3038 @item gain
3039 multiplicative coefficient for the channel, 1 leaving the volume unchanged
3040
3041 @item in_name
3042 input channel to use, see out_name for details; it is not possible to mix
3043 named and numbered input channels
3044 @end table
3045
3046 If the `=' in a channel specification is replaced by `<', then the gains for
3047 that specification will be renormalized so that the total is 1, thus
3048 avoiding clipping noise.
3049
3050 @subsection Mixing examples
3051
3052 For example, if you want to down-mix from stereo to mono, but with a bigger
3053 factor for the left channel:
3054 @example
3055 pan=1c|c0=0.9*c0+0.1*c1
3056 @end example
3057
3058 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
3059 7-channels surround:
3060 @example
3061 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
3062 @end example
3063
3064 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
3065 that should be preferred (see "-ac" option) unless you have very specific
3066 needs.
3067
3068 @subsection Remapping examples
3069
3070 The channel remapping will be effective if, and only if:
3071
3072 @itemize
3073 @item gain coefficients are zeroes or ones,
3074 @item only one input per channel output,
3075 @end itemize
3076
3077 If all these conditions are satisfied, the filter will notify the user ("Pure
3078 channel mapping detected"), and use an optimized and lossless method to do the
3079 remapping.
3080
3081 For example, if you have a 5.1 source and want a stereo audio stream by
3082 dropping the extra channels:
3083 @example
3084 pan="stereo| c0=FL | c1=FR"
3085 @end example
3086
3087 Given the same source, you can also switch front left and front right channels
3088 and keep the input channel layout:
3089 @example
3090 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
3091 @end example
3092
3093 If the input is a stereo audio stream, you can mute the front left channel (and
3094 still keep the stereo channel layout) with:
3095 @example
3096 pan="stereo|c1=c1"
3097 @end example
3098
3099 Still with a stereo audio stream input, you can copy the right channel in both
3100 front left and right:
3101 @example
3102 pan="stereo| c0=FR | c1=FR"
3103 @end example
3104
3105 @section replaygain
3106
3107 ReplayGain scanner filter. This filter takes an audio stream as an input and
3108 outputs it unchanged.
3109 At end of filtering it displays @code{track_gain} and @code{track_peak}.
3110
3111 @section resample
3112
3113 Convert the audio sample format, sample rate and channel layout. It is
3114 not meant to be used directly.
3115
3116 @section rubberband
3117 Apply time-stretching and pitch-shifting with librubberband.
3118
3119 The filter accepts the following options:
3120
3121 @table @option
3122 @item tempo
3123 Set tempo scale factor.
3124
3125 @item pitch
3126 Set pitch scale factor.
3127
3128 @item transients
3129 Set transients detector.
3130 Possible values are:
3131 @table @var
3132 @item crisp
3133 @item mixed
3134 @item smooth
3135 @end table
3136
3137 @item detector
3138 Set detector.
3139 Possible values are:
3140 @table @var
3141 @item compound
3142 @item percussive
3143 @item soft
3144 @end table
3145
3146 @item phase
3147 Set phase.
3148 Possible values are:
3149 @table @var
3150 @item laminar
3151 @item independent
3152 @end table
3153
3154 @item window
3155 Set processing window size.
3156 Possible values are:
3157 @table @var
3158 @item standard
3159 @item short
3160 @item long
3161 @end table
3162
3163 @item smoothing
3164 Set smoothing.
3165 Possible values are:
3166 @table @var
3167 @item off
3168 @item on
3169 @end table
3170
3171 @item formant
3172 Enable formant preservation when shift pitching.
3173 Possible values are:
3174 @table @var
3175 @item shifted
3176 @item preserved
3177 @end table
3178
3179 @item pitchq
3180 Set pitch quality.
3181 Possible values are:
3182 @table @var
3183 @item quality
3184 @item speed
3185 @item consistency
3186 @end table
3187
3188 @item channels
3189 Set channels.
3190 Possible values are:
3191 @table @var
3192 @item apart
3193 @item together
3194 @end table
3195 @end table
3196
3197 @section sidechaincompress
3198
3199 This filter acts like normal compressor but has the ability to compress
3200 detected signal using second input signal.
3201 It needs two input streams and returns one output stream.
3202 First input stream will be processed depending on second stream signal.
3203 The filtered signal then can be filtered with other filters in later stages of
3204 processing. See @ref{pan} and @ref{amerge} filter.
3205
3206 The filter accepts the following options:
3207
3208 @table @option
3209 @item level_in
3210 Set input gain. Default is 1. Range is between 0.015625 and 64.
3211
3212 @item threshold
3213 If a signal of second stream raises above this level it will affect the gain
3214 reduction of first stream.
3215 By default is 0.125. Range is between 0.00097563 and 1.
3216
3217 @item ratio
3218 Set a ratio about which the signal is reduced. 1:2 means that if the level
3219 raised 4dB above the threshold, it will be only 2dB above after the reduction.
3220 Default is 2. Range is between 1 and 20.
3221
3222 @item attack
3223 Amount of milliseconds the signal has to rise above the threshold before gain
3224 reduction starts. Default is 20. Range is between 0.01 and 2000.
3225
3226 @item release
3227 Amount of milliseconds the signal has to fall below the threshold before
3228 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
3229
3230 @item makeup
3231 Set the amount by how much signal will be amplified after processing.
3232 Default is 2. Range is from 1 and 64.
3233
3234 @item knee
3235 Curve the sharp knee around the threshold to enter gain reduction more softly.
3236 Default is 2.82843. Range is between 1 and 8.
3237
3238 @item link
3239 Choose if the @code{average} level between all channels of side-chain stream
3240 or the louder(@code{maximum}) channel of side-chain stream affects the
3241 reduction. Default is @code{average}.
3242
3243 @item detection
3244 Should the exact signal be taken in case of @code{peak} or an RMS one in case
3245 of @code{rms}. Default is @code{rms} which is mainly smoother.
3246
3247 @item level_sc
3248 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
3249
3250 @item mix
3251 How much to use compressed signal in output. Default is 1.
3252 Range is between 0 and 1.
3253 @end table
3254
3255 @subsection Examples
3256
3257 @itemize
3258 @item
3259 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
3260 depending on the signal of 2nd input and later compressed signal to be
3261 merged with 2nd input:
3262 @example
3263 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
3264 @end example
3265 @end itemize
3266
3267 @section sidechaingate
3268
3269 A sidechain gate acts like a normal (wideband) gate but has the ability to
3270 filter the detected signal before sending it to the gain reduction stage.
3271 Normally a gate uses the full range signal to detect a level above the
3272 threshold.
3273 For example: If you cut all lower frequencies from your sidechain signal
3274 the gate will decrease the volume of your track only if not enough highs
3275 appear. With this technique you are able to reduce the resonation of a
3276 natural drum or remove "rumbling" of muted strokes from a heavily distorted
3277 guitar.
3278 It needs two input streams and returns one output stream.
3279 First input stream will be processed depending on second stream signal.
3280
3281 The filter accepts the following options:
3282
3283 @table @option
3284 @item level_in
3285 Set input level before filtering.
3286 Default is 1. Allowed range is from 0.015625 to 64.
3287
3288 @item range
3289 Set the level of gain reduction when the signal is below the threshold.
3290 Default is 0.06125. Allowed range is from 0 to 1.
3291
3292 @item threshold
3293 If a signal rises above this level the gain reduction is released.
3294 Default is 0.125. Allowed range is from 0 to 1.
3295
3296 @item ratio
3297 Set a ratio about which the signal is reduced.
3298 Default is 2. Allowed range is from 1 to 9000.
3299
3300 @item attack
3301 Amount of milliseconds the signal has to rise above the threshold before gain
3302 reduction stops.
3303 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
3304
3305 @item release
3306 Amount of milliseconds the signal has to fall below the threshold before the
3307 reduction is increased again. Default is 250 milliseconds.
3308 Allowed range is from 0.01 to 9000.
3309
3310 @item makeup
3311 Set amount of amplification of signal after processing.
3312 Default is 1. Allowed range is from 1 to 64.
3313
3314 @item knee
3315 Curve the sharp knee around the threshold to enter gain reduction more softly.
3316 Default is 2.828427125. Allowed range is from 1 to 8.
3317
3318 @item detection
3319 Choose if exact signal should be taken for detection or an RMS like one.
3320 Default is rms. Can be peak or rms.
3321
3322 @item link
3323 Choose if the average level between all channels or the louder channel affects
3324 the reduction.
3325 Default is average. Can be average or maximum.
3326
3327 @item level_sc
3328 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
3329 @end table
3330
3331 @section silencedetect
3332
3333 Detect silence in an audio stream.
3334
3335 This filter logs a message when it detects that the input audio volume is less
3336 or equal to a noise tolerance value for a duration greater or equal to the
3337 minimum detected noise duration.
3338
3339 The printed times and duration are expressed in seconds.
3340
3341 The filter accepts the following options:
3342
3343 @table @option
3344 @item duration, d
3345 Set silence duration until notification (default is 2 seconds).
3346
3347 @item noise, n
3348 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
3349 specified value) or amplitude ratio. Default is -60dB, or 0.001.
3350 @end table
3351
3352 @subsection Examples
3353
3354 @itemize
3355 @item
3356 Detect 5 seconds of silence with -50dB noise tolerance:
3357 @example
3358 silencedetect=n=-50dB:d=5
3359 @end example
3360
3361 @item
3362 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
3363 tolerance in @file{silence.mp3}:
3364 @example
3365 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
3366 @end example
3367 @end itemize
3368
3369 @section silenceremove
3370
3371 Remove silence from the beginning, middle or end of the audio.
3372
3373 The filter accepts the following options:
3374
3375 @table @option
3376 @item start_periods
3377 This value is used to indicate if audio should be trimmed at beginning of
3378 the audio. A value of zero indicates no silence should be trimmed from the
3379 beginning. When specifying a non-zero value, it trims audio up until it
3380 finds non-silence. Normally, when trimming silence from beginning of audio
3381 the @var{start_periods} will be @code{1} but it can be increased to higher
3382 values to trim all audio up to specific count of non-silence periods.
3383 Default value is @code{0}.
3384
3385 @item start_duration
3386 Specify the amount of time that non-silence must be detected before it stops
3387 trimming audio. By increasing the duration, bursts of noises can be treated
3388 as silence and trimmed off. Default value is @code{0}.
3389
3390 @item start_threshold
3391 This indicates what sample value should be treated as silence. For digital
3392 audio, a value of @code{0} may be fine but for audio recorded from analog,
3393 you may wish to increase the value to account for background noise.
3394 Can be specified in dB (in case "dB" is appended to the specified value)
3395 or amplitude ratio. Default value is @code{0}.
3396
3397 @item stop_periods
3398 Set the count for trimming silence from the end of audio.
3399 To remove silence from the middle of a file, specify a @var{stop_periods}
3400 that is negative. This value is then treated as a positive value and is
3401 used to indicate the effect should restart processing as specified by
3402 @var{start_periods}, making it suitable for removing periods of silence
3403 in the middle of the audio.
3404 Default value is @code{0}.
3405
3406 @item stop_duration
3407 Specify a duration of silence that must exist before audio is not copied any
3408 more. By specifying a higher duration, silence that is wanted can be left in
3409 the audio.
3410 Default value is @code{0}.
3411
3412 @item stop_threshold
3413 This is the same as @option{start_threshold} but for trimming silence from
3414 the end of audio.
3415 Can be specified in dB (in case "dB" is appended to the specified value)
3416 or amplitude ratio. Default value is @code{0}.
3417
3418 @item leave_silence
3419 This indicates that @var{stop_duration} length of audio should be left intact
3420 at the beginning of each period of silence.
3421 For example, if you want to remove long pauses between words but do not want
3422 to remove the pauses completely. Default value is @code{0}.
3423
3424 @item detection
3425 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
3426 and works better with digital silence which is exactly 0.
3427 Default value is @code{rms}.
3428
3429 @item window
3430 Set ratio used to calculate size of window for detecting silence.
3431 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
3432 @end table
3433
3434 @subsection Examples
3435
3436 @itemize
3437 @item
3438 The following example shows how this filter can be used to start a recording
3439 that does not contain the delay at the start which usually occurs between
3440 pressing the record button and the start of the performance:
3441 @example
3442 silenceremove=1:5:0.02
3443 @end example
3444
3445 @item
3446 Trim all silence encountered from beginning to end where there is more than 1
3447 second of silence in audio:
3448 @example
3449 silenceremove=0:0:0:-1:1:-90dB
3450 @end example
3451 @end itemize
3452
3453 @section sofalizer
3454
3455 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
3456 loudspeakers around the user for binaural listening via headphones (audio
3457 formats up to 9 channels supported).
3458 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
3459 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
3460 Austrian Academy of Sciences.
3461
3462 To enable compilation of this filter you need to configure FFmpeg with
3463 @code{--enable-netcdf}.
3464
3465 The filter accepts the following options:
3466
3467 @table @option
3468 @item sofa
3469 Set the SOFA file used for rendering.
3470
3471 @item gain
3472 Set gain applied to audio. Value is in dB. Default is 0.
3473
3474 @item rotation
3475 Set rotation of virtual loudspeakers in deg. Default is 0.
3476
3477 @item elevation
3478 Set elevation of virtual speakers in deg. Default is 0.
3479
3480 @item radius
3481 Set distance in meters between loudspeakers and the listener with near-field
3482 HRTFs. Default is 1.
3483
3484 @item type
3485 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3486 processing audio in time domain which is slow.
3487 @var{freq} is processing audio in frequency domain which is fast.
3488 Default is @var{freq}.
3489
3490 @item speakers
3491 Set custom positions of virtual loudspeakers. Syntax for this option is:
3492 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
3493 Each virtual loudspeaker is described with short channel name following with
3494 azimuth and elevation in degreees.
3495 Each virtual loudspeaker description is separated by '|'.
3496 For example to override front left and front right channel positions use:
3497 'speakers=FL 45 15|FR 345 15'.
3498 Descriptions with unrecognised channel names are ignored.
3499 @end table
3500
3501 @subsection Examples
3502
3503 @itemize
3504 @item
3505 Using ClubFritz6 sofa file:
3506 @example
3507 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
3508 @end example
3509
3510 @item
3511 Using ClubFritz12 sofa file and bigger radius with small rotation:
3512 @example
3513 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
3514 @end example
3515
3516 @item
3517 Similar as above but with custom speaker positions for front left, front right, rear left and rear right
3518 and also with custom gain:
3519 @example
3520 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|RL 135|RR 225:gain=28"
3521 @end example
3522 @end itemize
3523
3524 @section stereotools
3525
3526 This filter has some handy utilities to manage stereo signals, for converting
3527 M/S stereo recordings to L/R signal while having control over the parameters
3528 or spreading the stereo image of master track.
3529
3530 The filter accepts the following options:
3531
3532 @table @option
3533 @item level_in
3534 Set input level before filtering for both channels. Defaults is 1.
3535 Allowed range is from 0.015625 to 64.
3536
3537 @item level_out
3538 Set output level after filtering for both channels. Defaults is 1.
3539 Allowed range is from 0.015625 to 64.
3540
3541 @item balance_in
3542 Set input balance between both channels. Default is 0.
3543 Allowed range is from -1 to 1.
3544
3545 @item balance_out
3546 Set output balance between both channels. Default is 0.
3547 Allowed range is from -1 to 1.
3548
3549 @item softclip
3550 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
3551 clipping. Disabled by default.
3552
3553 @item mutel
3554 Mute the left channel. Disabled by default.
3555
3556 @item muter
3557 Mute the right channel. Disabled by default.
3558
3559 @item phasel
3560 Change the phase of the left channel. Disabled by default.
3561
3562 @item phaser
3563 Change the phase of the right channel. Disabled by default.
3564
3565 @item mode
3566 Set stereo mode. Available values are:
3567
3568 @table @samp
3569 @item lr>lr
3570 Left/Right to Left/Right, this is default.
3571
3572 @item lr>ms
3573 Left/Right to Mid/Side.
3574
3575 @item ms>lr
3576 Mid/Side to Left/Right.
3577
3578 @item lr>ll
3579 Left/Right to Left/Left.
3580
3581 @item lr>rr
3582 Left/Right to Right/Right.
3583
3584 @item lr>l+r
3585 Left/Right to Left + Right.
3586
3587 @item lr>rl
3588 Left/Right to Right/Left.
3589 @end table
3590
3591 @item slev
3592 Set level of side signal. Default is 1.
3593 Allowed range is from 0.015625 to 64.
3594
3595 @item sbal
3596 Set balance of side signal. Default is 0.
3597 Allowed range is from -1 to 1.
3598
3599 @item mlev
3600 Set level of the middle signal. Default is 1.
3601 Allowed range is from 0.015625 to 64.
3602
3603 @item mpan
3604 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
3605
3606 @item base
3607 Set stereo base between mono and inversed channels. Default is 0.
3608 Allowed range is from -1 to 1.
3609
3610 @item delay
3611 Set delay in milliseconds how much to delay left from right channel and
3612 vice versa. Default is 0. Allowed range is from -20 to 20.
3613
3614 @item sclevel
3615 Set S/C level. Default is 1. Allowed range is from 1 to 100.
3616
3617 @item phase
3618 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
3619 @end table
3620
3621 @subsection Examples
3622
3623 @itemize
3624 @item
3625 Apply karaoke like effect:
3626 @example
3627 stereotools=mlev=0.015625
3628 @end example
3629
3630 @item
3631 Convert M/S signal to L/R:
3632 @example
3633 "stereotools=mode=ms>lr"
3634 @end example
3635 @end itemize
3636
3637 @section stereowiden
3638
3639 This filter enhance the stereo effect by suppressing signal common to both
3640 channels and by delaying the signal of left into right and vice versa,
3641 thereby widening the stereo effect.
3642
3643 The filter accepts the following options:
3644
3645 @table @option
3646 @item delay
3647 Time in milliseconds of the delay of left signal into right and vice versa.
3648 Default is 20 milliseconds.
3649
3650 @item feedback
3651 Amount of gain in delayed signal into right and vice versa. Gives a delay
3652 effect of left signal in right output and vice versa which gives widening
3653 effect. Default is 0.3.
3654
3655 @item crossfeed
3656 Cross feed of left into right with inverted phase. This helps in suppressing
3657 the mono. If the value is 1 it will cancel all the signal common to both
3658 channels. Default is 0.3.
3659
3660 @item drymix
3661 Set level of input signal of original channel. Default is 0.8.
3662 @end table
3663
3664 @section treble
3665
3666 Boost or cut treble (upper) frequencies of the audio using a two-pole
3667 shelving filter with a response similar to that of a standard
3668 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
3669
3670 The filter accepts the following options:
3671
3672 @table @option
3673 @item gain, g
3674 Give the gain at whichever is the lower of ~22 kHz and the
3675 Nyquist frequency. Its useful range is about -20 (for a large cut)
3676 to +20 (for a large boost). Beware of clipping when using a positive gain.
3677
3678 @item frequency, f
3679 Set the filter's central frequency and so can be used
3680 to extend or reduce the frequency range to be boosted or cut.
3681 The default value is @code{3000} Hz.
3682
3683 @item width_type
3684 Set method to specify band-width of filter.
3685 @table @option
3686 @item h
3687 Hz
3688 @item q
3689 Q-Factor
3690 @item o
3691 octave
3692 @item s
3693 slope
3694 @end table
3695
3696 @item width, w
3697 Determine how steep is the filter's shelf transition.
3698 @end table
3699
3700 @section tremolo
3701
3702 Sinusoidal amplitude modulation.
3703
3704 The filter accepts the following options:
3705
3706 @table @option
3707 @item f
3708 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
3709 (20 Hz or lower) will result in a tremolo effect.
3710 This filter may also be used as a ring modulator by specifying
3711 a modulation frequency higher than 20 Hz.
3712 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
3713
3714 @item d
3715 Depth of modulation as a percentage. Range is 0.0 - 1.0.
3716 Default value is 0.5.
3717 @end table
3718
3719 @section vibrato
3720
3721 Sinusoidal phase modulation.
3722
3723 The filter accepts the following options:
3724
3725 @table @option
3726 @item f
3727 Modulation frequency in Hertz.
3728 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
3729
3730 @item d
3731 Depth of modulation as a percentage. Range is 0.0 - 1.0.
3732 Default value is 0.5.
3733 @end table
3734
3735 @section volume
3736
3737 Adjust the input audio volume.
3738
3739 It accepts the following parameters:
3740 @table @option
3741
3742 @item volume
3743 Set audio volume expression.
3744
3745 Output values are clipped to the maximum value.
3746
3747 The output audio volume is given by the relation:
3748 @example
3749 @var{output_volume} = @var{volume} * @var{input_volume}
3750 @end example
3751
3752 The default value for @var{volume} is "1.0".
3753
3754 @item precision
3755 This parameter represents the mathematical precision.
3756
3757 It determines which input sample formats will be allowed, which affects the
3758 precision of the volume scaling.
3759
3760 @table @option
3761 @item fixed
3762 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
3763 @item float
3764 32-bit floating-point; this limits input sample format to FLT. (default)
3765 @item double
3766 64-bit floating-point; this limits input sample format to DBL.
3767 @end table
3768
3769 @item replaygain
3770 Choose the behaviour on encountering ReplayGain side data in input frames.
3771
3772 @table @option
3773 @item drop
3774 Remove ReplayGain side data, ignoring its contents (the default).
3775
3776 @item ignore
3777 Ignore ReplayGain side data, but leave it in the frame.
3778
3779 @item track
3780 Prefer the track gain, if present.
3781
3782 @item album
3783 Prefer the album gain, if present.
3784 @end table
3785
3786 @item replaygain_preamp
3787 Pre-amplification gain in dB to apply to the selected replaygain gain.
3788
3789 Default value for @var{replaygain_preamp} is 0.0.
3790
3791 @item eval
3792 Set when the volume expression is evaluated.
3793
3794 It accepts the following values:
3795 @table @samp
3796 @item once
3797 only evaluate expression once during the filter initialization, or
3798 when the @samp{volume} command is sent
3799
3800 @item frame
3801 evaluate expression for each incoming frame
3802 @end table
3803
3804 Default value is @samp{once}.
3805 @end table
3806
3807 The volume expression can contain the following parameters.
3808
3809 @table @option
3810 @item n
3811 frame number (starting at zero)
3812 @item nb_channels
3813 number of channels
3814 @item nb_consumed_samples
3815 number of samples consumed by the filter
3816 @item nb_samples
3817 number of samples in the current frame
3818 @item pos
3819 original frame position in the file
3820 @item pts
3821 frame PTS
3822 @item sample_rate
3823 sample rate
3824 @item startpts
3825 PTS at start of stream
3826 @item startt
3827 time at start of stream
3828 @item t
3829 frame time
3830 @item tb
3831 timestamp timebase
3832 @item volume
3833 last set volume value
3834 @end table
3835
3836 Note that when @option{eval} is set to @samp{once} only the
3837 @var{sample_rate} and @var{tb} variables are available, all other
3838 variables will evaluate to NAN.
3839
3840 @subsection Commands
3841
3842 This filter supports the following commands:
3843 @table @option
3844 @item volume
3845 Modify the volume expression.
3846 The command accepts the same syntax of the corresponding option.
3847
3848 If the specified expression is not valid, it is kept at its current
3849 value.
3850 @item replaygain_noclip
3851 Prevent clipping by limiting the gain applied.
3852
3853 Default value for @var{replaygain_noclip} is 1.
3854
3855 @end table
3856
3857 @subsection Examples
3858
3859 @itemize
3860 @item
3861 Halve the input audio volume:
3862 @example
3863 volume=volume=0.5
3864 volume=volume=1/2
3865 volume=volume=-6.0206dB
3866 @end example
3867
3868 In all the above example the named key for @option{volume} can be
3869 omitted, for example like in:
3870 @example
3871 volume=0.5
3872 @end example
3873
3874 @item
3875 Increase input audio power by 6 decibels using fixed-point precision:
3876 @example
3877 volume=volume=6dB:precision=fixed
3878 @end example
3879
3880 @item
3881 Fade volume after time 10 with an annihilation period of 5 seconds:
3882 @example
3883 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
3884 @end example
3885 @end itemize
3886
3887 @section volumedetect
3888
3889 Detect the volume of the input video.
3890
3891 The filter has no parameters. The input is not modified. Statistics about
3892 the volume will be printed in the log when the input stream end is reached.
3893
3894 In particular it will show the mean volume (root mean square), maximum
3895 volume (on a per-sample basis), and the beginning of a histogram of the
3896 registered volume values (from the maximum value to a cumulated 1/1000 of
3897 the samples).
3898
3899 All volumes are in decibels relative to the maximum PCM value.
3900
3901 @subsection Examples
3902
3903 Here is an excerpt of the output:
3904 @example
3905 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
3906 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
3907 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
3908 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
3909 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
3910 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
3911 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
3912 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
3913 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
3914 @end example
3915
3916 It means that:
3917 @itemize
3918 @item
3919 The mean square energy is approximately -27 dB, or 10^-2.7.
3920 @item
3921 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
3922 @item
3923 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
3924 @end itemize
3925
3926 In other words, raising the volume by +4 dB does not cause any clipping,
3927 raising it by +5 dB causes clipping for 6 samples, etc.
3928
3929 @c man end AUDIO FILTERS
3930
3931 @chapter Audio Sources
3932 @c man begin AUDIO SOURCES
3933
3934 Below is a description of the currently available audio sources.
3935
3936 @section abuffer
3937
3938 Buffer audio frames, and make them available to the filter chain.
3939
3940 This source is mainly intended for a programmatic use, in particular
3941 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
3942
3943 It accepts the following parameters:
3944 @table @option
3945
3946 @item time_base
3947 The timebase which will be used for timestamps of submitted frames. It must be
3948 either a floating-point number or in @var{numerator}/@var{denominator} form.
3949
3950 @item sample_rate
3951 The sample rate of the incoming audio buffers.
3952
3953 @item sample_fmt
3954 The sample format of the incoming audio buffers.
3955 Either a sample format name or its corresponding integer representation from
3956 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
3957
3958 @item channel_layout
3959 The channel layout of the incoming audio buffers.
3960 Either a channel layout name from channel_layout_map in
3961 @file{libavutil/channel_layout.c} or its corresponding integer representation
3962 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
3963
3964 @item channels
3965 The number of channels of the incoming audio buffers.
3966 If both @var{channels} and @var{channel_layout} are specified, then they
3967 must be consistent.
3968
3969 @end table
3970
3971 @subsection Examples
3972
3973 @example
3974 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
3975 @end example
3976
3977 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
3978 Since the sample format with name "s16p" corresponds to the number
3979 6 and the "stereo" channel layout corresponds to the value 0x3, this is
3980 equivalent to:
3981 @example
3982 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
3983 @end example
3984
3985 @section aevalsrc
3986
3987 Generate an audio signal specified by an expression.
3988
3989 This source accepts in input one or more expressions (one for each
3990 channel), which are evaluated and used to generate a corresponding
3991 audio signal.
3992
3993 This source accepts the following options:
3994
3995 @table @option
3996 @item exprs
3997 Set the '|'-separated expressions list for each separate channel. In case the
3998 @option{channel_layout} option is not specified, the selected channel layout
3999 depends on the number of provided expressions. Otherwise the last
4000 specified expression is applied to the remaining output channels.
4001
4002 @item channel_layout, c
4003 Set the channel layout. The number of channels in the specified layout
4004 must be equal to the number of specified expressions.
4005
4006 @item duration, d
4007 Set the minimum duration of the sourced audio. See
4008 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4009 for the accepted syntax.
4010 Note that the resulting duration may be greater than the specified
4011 duration, as the generated audio is always cut at the end of a
4012 complete frame.
4013
4014 If not specified, or the expressed duration is negative, the audio is
4015 supposed to be generated forever.
4016
4017 @item nb_samples, n
4018 Set the number of samples per channel per each output frame,
4019 default to 1024.
4020
4021 @item sample_rate, s
4022 Specify the sample rate, default to 44100.
4023 @end table
4024
4025 Each expression in @var{exprs} can contain the following constants:
4026
4027 @table @option
4028 @item n
4029 number of the evaluated sample, starting from 0
4030
4031 @item t
4032 time of the evaluated sample expressed in seconds, starting from 0
4033
4034 @item s
4035 sample rate
4036
4037 @end table
4038
4039 @subsection Examples
4040
4041 @itemize
4042 @item
4043 Generate silence:
4044 @example
4045 aevalsrc=0
4046 @end example
4047
4048 @item
4049 Generate a sin signal with frequency of 440 Hz, set sample rate to
4050 8000 Hz:
4051 @example
4052 aevalsrc="sin(440*2*PI*t):s=8000"
4053 @end example
4054
4055 @item
4056 Generate a two channels signal, specify the channel layout (Front
4057 Center + Back Center) explicitly:
4058 @example
4059 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
4060 @end example
4061
4062 @item
4063 Generate white noise:
4064 @example
4065 aevalsrc="-2+random(0)"
4066 @end example
4067
4068 @item
4069 Generate an amplitude modulated signal:
4070 @example
4071 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
4072 @end example
4073
4074 @item
4075 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
4076 @example
4077 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
4078 @end example
4079
4080 @end itemize
4081
4082 @section anullsrc
4083
4084 The null audio source, return unprocessed audio frames. It is mainly useful
4085 as a template and to be employed in analysis / debugging tools, or as
4086 the source for filters which ignore the input data (for example the sox
4087 synth filter).
4088
4089 This source accepts the following options:
4090
4091 @table @option
4092
4093 @item channel_layout, cl
4094
4095 Specifies the channel layout, and can be either an integer or a string
4096 representing a channel layout. The default value of @var{channel_layout}
4097 is "stereo".
4098
4099 Check the channel_layout_map definition in
4100 @file{libavutil/channel_layout.c} for the mapping between strings and
4101 channel layout values.
4102
4103 @item sample_rate, r
4104 Specifies the sample rate, and defaults to 44100.
4105
4106 @item nb_samples, n
4107 Set the number of samples per requested frames.
4108
4109 @end table
4110
4111 @subsection Examples
4112
4113 @itemize
4114 @item
4115 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
4116 @example
4117 anullsrc=r=48000:cl=4
4118 @end example
4119
4120 @item
4121 Do the same operation with a more obvious syntax:
4122 @example
4123 anullsrc=r=48000:cl=mono
4124 @end example
4125 @end itemize
4126
4127 All the parameters need to be explicitly defined.
4128
4129 @section flite
4130
4131 Synthesize a voice utterance using the libflite library.
4132
4133 To enable compilation of this filter you need to configure FFmpeg with
4134 @code{--enable-libflite}.
4135
4136 Note that the flite library is not thread-safe.
4137
4138 The filter accepts the following options:
4139
4140 @table @option
4141
4142 @item list_voices
4143 If set to 1, list the names of the available voices and exit
4144 immediately. Default value is 0.
4145
4146 @item nb_samples, n
4147 Set the maximum number of samples per frame. Default value is 512.
4148
4149 @item textfile
4150 Set the filename containing the text to speak.
4151
4152 @item text
4153 Set the text to speak.
4154
4155 @item voice, v
4156 Set the voice to use for the speech synthesis. Default value is
4157 @code{kal}. See also the @var{list_voices} option.
4158 @end table
4159
4160 @subsection Examples
4161
4162 @itemize
4163 @item
4164 Read from file @file{speech.txt}, and synthesize the text using the
4165 standard flite voice:
4166 @example
4167 flite=textfile=speech.txt
4168 @end example
4169
4170 @item
4171 Read the specified text selecting the @code{slt} voice:
4172 @example
4173 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
4174 @end example
4175
4176 @item
4177 Input text to ffmpeg:
4178 @example
4179 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
4180 @end example
4181
4182 @item
4183 Make @file{ffplay} speak the specified text, using @code{flite} and
4184 the @code{lavfi} device:
4185 @example
4186 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
4187 @end example
4188 @end itemize
4189
4190 For more information about libflite, check:
4191 @url{http://www.speech.cs.cmu.edu/flite/}
4192
4193 @section anoisesrc
4194
4195 Generate a noise audio signal.
4196
4197 The filter accepts the following options:
4198
4199 @table @option
4200 @item sample_rate, r
4201 Specify the sample rate. Default value is 48000 Hz.
4202
4203 @item amplitude, a
4204 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
4205 is 1.0.
4206
4207 @item duration, d
4208 Specify the duration of the generated audio stream. Not specifying this option
4209 results in noise with an infinite length.
4210
4211 @item color, colour, c
4212 Specify the color of noise. Available noise colors are white, pink, and brown.
4213 Default color is white.
4214
4215 @item seed, s
4216 Specify a value used to seed the PRNG.
4217
4218 @item nb_samples, n
4219 Set the number of samples per each output frame, default is 1024.
4220 @end table
4221
4222 @subsection Examples
4223
4224 @itemize
4225
4226 @item
4227 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
4228 @example
4229 anoisesrc=d=60:c=pink:r=44100:a=0.5
4230 @end example
4231 @end itemize
4232
4233 @section sine
4234
4235 Generate an audio signal made of a sine wave with amplitude 1/8.
4236
4237 The audio signal is bit-exact.
4238
4239 The filter accepts the following options:
4240
4241 @table @option
4242
4243 @item frequency, f
4244 Set the carrier frequency. Default is 440 Hz.
4245
4246 @item beep_factor, b
4247 Enable a periodic beep every second with frequency @var{beep_factor} times
4248 the carrier frequency. Default is 0, meaning the beep is disabled.
4249
4250 @item sample_rate, r
4251 Specify the sample rate, default is 44100.
4252
4253 @item duration, d
4254 Specify the duration of the generated audio stream.
4255
4256 @item samples_per_frame
4257 Set the number of samples per output frame.
4258
4259 The expression can contain the following constants:
4260
4261 @table @option
4262 @item n
4263 The (sequential) number of the output audio frame, starting from 0.
4264
4265 @item pts
4266 The PTS (Presentation TimeStamp) of the output audio frame,
4267 expressed in @var{TB} units.
4268
4269 @item t
4270 The PTS of the output audio frame, expressed in seconds.
4271
4272 @item TB
4273 The timebase of the output audio frames.
4274 @end table
4275
4276 Default is @code{1024}.
4277 @end table
4278
4279 @subsection Examples
4280
4281 @itemize
4282
4283 @item
4284 Generate a simple 440 Hz sine wave:
4285 @example
4286 sine
4287 @end example
4288
4289 @item
4290 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
4291 @example
4292 sine=220:4:d=5
4293 sine=f=220:b=4:d=5
4294 sine=frequency=220:beep_factor=4:duration=5
4295 @end example
4296
4297 @item
4298 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
4299 pattern:
4300 @example
4301 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
4302 @end example
4303 @end itemize
4304
4305 @c man end AUDIO SOURCES
4306
4307 @chapter Audio Sinks
4308 @c man begin AUDIO SINKS
4309
4310 Below is a description of the currently available audio sinks.
4311
4312 @section abuffersink
4313
4314 Buffer audio frames, and make them available to the end of filter chain.
4315
4316 This sink is mainly intended for programmatic use, in particular
4317 through the interface defined in @file{libavfilter/buffersink.h}
4318 or the options system.
4319
4320 It accepts a pointer to an AVABufferSinkContext structure, which
4321 defines the incoming buffers' formats, to be passed as the opaque
4322 parameter to @code{avfilter_init_filter} for initialization.
4323 @section anullsink
4324
4325 Null audio sink; do absolutely nothing with the input audio. It is
4326 mainly useful as a template and for use in analysis / debugging
4327 tools.
4328
4329 @c man end AUDIO SINKS
4330
4331 @chapter Video Filters
4332 @c man begin VIDEO FILTERS
4333
4334 When you configure your FFmpeg build, you can disable any of the
4335 existing filters using @code{--disable-filters}.
4336 The configure output will show the video filters included in your
4337 build.
4338
4339 Below is a description of the currently available video filters.
4340
4341 @section alphaextract
4342
4343 Extract the alpha component from the input as a grayscale video. This
4344 is especially useful with the @var{alphamerge} filter.
4345
4346 @section alphamerge
4347
4348 Add or replace the alpha component of the primary input with the
4349 grayscale value of a second input. This is intended for use with
4350 @var{alphaextract} to allow the transmission or storage of frame
4351 sequences that have alpha in a format that doesn't support an alpha
4352 channel.
4353
4354 For example, to reconstruct full frames from a normal YUV-encoded video
4355 and a separate video created with @var{alphaextract}, you might use:
4356 @example
4357 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
4358 @end example
4359
4360 Since this filter is designed for reconstruction, it operates on frame
4361 sequences without considering timestamps, and terminates when either
4362 input reaches end of stream. This will cause problems if your encoding
4363 pipeline drops frames. If you're trying to apply an image as an
4364 overlay to a video stream, consider the @var{overlay} filter instead.
4365
4366 @section ass
4367
4368 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
4369 and libavformat to work. On the other hand, it is limited to ASS (Advanced
4370 Substation Alpha) subtitles files.
4371
4372 This filter accepts the following option in addition to the common options from
4373 the @ref{subtitles} filter:
4374
4375 @table @option
4376 @item shaping
4377 Set the shaping engine
4378
4379 Available values are:
4380 @table @samp
4381 @item auto
4382 The default libass shaping engine, which is the best available.
4383 @item simple
4384 Fast, font-agnostic shaper that can do only substitutions
4385 @item complex
4386 Slower shaper using OpenType for substitutions and positioning
4387 @end table
4388
4389 The default is @code{auto}.
4390 @end table
4391
4392 @section atadenoise
4393 Apply an Adaptive Temporal Averaging Denoiser to the video input.
4394
4395 The filter accepts the following options:
4396
4397 @table @option
4398 @item 0a
4399 Set threshold A for 1st plane. Default is 0.02.
4400 Valid range is 0 to 0.3.
4401
4402 @item 0b
4403 Set threshold B for 1st plane. Default is 0.04.
4404 Valid range is 0 to 5.
4405
4406 @item 1a
4407 Set threshold A for 2nd plane. Default is 0.02.
4408 Valid range is 0 to 0.3.
4409
4410 @item 1b
4411 Set threshold B for 2nd plane. Default is 0.04.
4412 Valid range is 0 to 5.
4413
4414 @item 2a
4415 Set threshold A for 3rd plane. Default is 0.02.
4416 Valid range is 0 to 0.3.
4417
4418 @item 2b
4419 Set threshold B for 3rd plane. Default is 0.04.
4420 Valid range is 0 to 5.
4421
4422 Threshold A is designed to react on abrupt changes in the input signal and
4423 threshold B is designed to react on continuous changes in the input signal.
4424
4425 @item s
4426 Set number of frames filter will use for averaging. Default is 33. Must be odd
4427 number in range [5, 129].
4428
4429 @item p
4430 Set what planes of frame filter will use for averaging. Default is all.
4431 @end table
4432
4433 @section avgblur
4434
4435 Apply average blur filter.
4436
4437 The filter accepts the following options:
4438
4439 @table @option
4440 @item sizeX
4441 Set horizontal kernel size.
4442
4443 @item planes
4444 Set which planes to filter. By default all planes are filtered.
4445
4446 @item sizeY
4447 Set vertical kernel size, if zero it will be same as @code{sizeX}.
4448 Default is @code{0}.
4449 @end table
4450
4451 @section bbox
4452
4453 Compute the bounding box for the non-black pixels in the input frame
4454 luminance plane.
4455
4456 This filter computes the bounding box containing all the pixels with a
4457 luminance value greater than the minimum allowed value.
4458 The parameters describing the bounding box are printed on the filter
4459 log.
4460
4461 The filter accepts the following option:
4462
4463 @table @option
4464 @item min_val
4465 Set the minimal luminance value. Default is @code{16}.
4466 @end table
4467
4468 @section bitplanenoise
4469
4470 Show and measure bit plane noise.
4471
4472 The filter accepts the following options:
4473
4474 @table @option
4475 @item bitplane
4476 Set which plane to analyze. Default is @code{1}.
4477
4478 @item filter
4479 Filter out noisy pixels from @code{bitplane} set above.
4480 Default is disabled.
4481 @end table
4482
4483 @section blackdetect
4484
4485 Detect video intervals that are (almost) completely black. Can be
4486 useful to detect chapter transitions, commercials, or invalid
4487 recordings. Output lines contains the time for the start, end and
4488 duration of the detected black interval expressed in seconds.
4489
4490 In order to display the output lines, you need to set the loglevel at
4491 least to the AV_LOG_INFO value.
4492
4493 The filter accepts the following options:
4494
4495 @table @option
4496 @item black_min_duration, d
4497 Set the minimum detected black duration expressed in seconds. It must
4498 be a non-negative floating point number.
4499
4500 Default value is 2.0.
4501
4502 @item picture_black_ratio_th, pic_th
4503 Set the threshold for considering a picture "black".
4504 Express the minimum value for the ratio:
4505 @example
4506 @var{nb_black_pixels} / @var{nb_pixels}
4507 @end example
4508
4509 for which a picture is considered black.
4510 Default value is 0.98.
4511
4512 @item pixel_black_th, pix_th
4513 Set the threshold for considering a pixel "black".
4514
4515 The threshold expresses the maximum pixel luminance value for which a
4516 pixel is considered "black". The provided value is scaled according to
4517 the following equation:
4518 @example
4519 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
4520 @end example
4521
4522 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
4523 the input video format, the range is [0-255] for YUV full-range
4524 formats and [16-235] for YUV non full-range formats.
4525
4526 Default value is 0.10.
4527 @end table
4528
4529 The following example sets the maximum pixel threshold to the minimum
4530 value, and detects only black intervals of 2 or more seconds:
4531 @example
4532 blackdetect=d=2:pix_th=0.00
4533 @end example
4534
4535 @section blackframe
4536
4537 Detect frames that are (almost) completely black. Can be useful to
4538 detect chapter transitions or commercials. Output lines consist of
4539 the frame number of the detected frame, the percentage of blackness,
4540 the position in the file if known or -1 and the timestamp in seconds.
4541
4542 In order to display the output lines, you need to set the loglevel at
4543 least to the AV_LOG_INFO value.
4544
4545 It accepts the following parameters:
4546
4547 @table @option
4548
4549 @item amount
4550 The percentage of the pixels that have to be below the threshold; it defaults to
4551 @code{98}.
4552
4553 @item threshold, thresh
4554 The threshold below which a pixel value is considered black; it defaults to
4555 @code{32}.
4556
4557 @end table
4558
4559 @section blend, tblend
4560
4561 Blend two video frames into each other.
4562
4563 The @code{blend} filter takes two input streams and outputs one
4564 stream, the first input is the "top" layer and second input is
4565 "bottom" layer.  By default, the output terminates when the longest input terminates.
4566
4567 The @code{tblend} (time blend) filter takes two consecutive frames
4568 from one single stream, and outputs the result obtained by blending
4569 the new frame on top of the old frame.
4570
4571 A description of the accepted options follows.
4572
4573 @table @option
4574 @item c0_mode
4575 @item c1_mode
4576 @item c2_mode
4577 @item c3_mode
4578 @item all_mode
4579 Set blend mode for specific pixel component or all pixel components in case
4580 of @var{all_mode}. Default value is @code{normal}.
4581
4582 Available values for component modes are:
4583 @table @samp
4584 @item addition
4585 @item addition128
4586 @item and
4587 @item average
4588 @item burn
4589 @item darken
4590 @item difference
4591 @item difference128
4592 @item divide
4593 @item dodge
4594 @item freeze
4595 @item exclusion
4596 @item glow
4597 @item hardlight
4598 @item hardmix
4599 @item heat
4600 @item lighten
4601 @item linearlight
4602 @item multiply
4603 @item multiply128
4604 @item negation
4605 @item normal
4606 @item or
4607 @item overlay
4608 @item phoenix
4609 @item pinlight
4610 @item reflect
4611 @item screen
4612 @item softlight
4613 @item subtract
4614 @item vividlight
4615 @item xor
4616 @end table
4617
4618 @item c0_opacity
4619 @item c1_opacity
4620 @item c2_opacity
4621 @item c3_opacity
4622 @item all_opacity
4623 Set blend opacity for specific pixel component or all pixel components in case
4624 of @var{all_opacity}. Only used in combination with pixel component blend modes.
4625
4626 @item c0_expr
4627 @item c1_expr
4628 @item c2_expr
4629 @item c3_expr
4630 @item all_expr
4631 Set blend expression for specific pixel component or all pixel components in case
4632 of @var{all_expr}. Note that related mode options will be ignored if those are set.
4633
4634 The expressions can use the following variables:
4635
4636 @table @option
4637 @item N
4638 The sequential number of the filtered frame, starting from @code{0}.
4639
4640 @item X
4641 @item Y
4642 the coordinates of the current sample
4643
4644 @item W
4645 @item H
4646 the width and height of currently filtered plane
4647
4648 @item SW
4649 @item SH
4650 Width and height scale depending on the currently filtered plane. It is the
4651 ratio between the corresponding luma plane number of pixels and the current
4652 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
4653 @code{0.5,0.5} for chroma planes.
4654
4655 @item T
4656 Time of the current frame, expressed in seconds.
4657
4658 @item TOP, A
4659 Value of pixel component at current location for first video frame (top layer).
4660
4661 @item BOTTOM, B
4662 Value of pixel component at current location for second video frame (bottom layer).
4663 @end table
4664
4665 @item shortest
4666 Force termination when the shortest input terminates. Default is
4667 @code{0}. This option is only defined for the @code{blend} filter.
4668
4669 @item repeatlast
4670 Continue applying the last bottom frame after the end of the stream. A value of
4671 @code{0} disable the filter after the last frame of the bottom layer is reached.
4672 Default is @code{1}. This option is only defined for the @code{blend} filter.
4673 @end table
4674
4675 @subsection Examples
4676
4677 @itemize
4678 @item
4679 Apply transition from bottom layer to top layer in first 10 seconds:
4680 @example
4681 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
4682 @end example
4683
4684 @item
4685 Apply 1x1 checkerboard effect:
4686 @example
4687 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
4688 @end example
4689
4690 @item
4691 Apply uncover left effect:
4692 @example
4693 blend=all_expr='if(gte(N*SW+X,W),A,B)'
4694 @end example
4695
4696 @item
4697 Apply uncover down effect:
4698 @example
4699 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
4700 @end example
4701
4702 @item
4703 Apply uncover up-left effect:
4704 @example
4705 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
4706 @end example
4707
4708 @item
4709 Split diagonally video and shows top and bottom layer on each side:
4710 @example
4711 blend=all_expr=if(gt(X,Y*(W/H)),A,B)
4712 @end example
4713
4714 @item
4715 Display differences between the current and the previous frame:
4716 @example
4717 tblend=all_mode=difference128
4718 @end example
4719 @end itemize
4720
4721 @section boxblur
4722
4723 Apply a boxblur algorithm to the input video.
4724
4725 It accepts the following parameters:
4726
4727 @table @option
4728
4729 @item luma_radius, lr
4730 @item luma_power, lp
4731 @item chroma_radius, cr
4732 @item chroma_power, cp
4733 @item alpha_radius, ar
4734 @item alpha_power, ap
4735
4736 @end table
4737
4738 A description of the accepted options follows.
4739
4740 @table @option
4741 @item luma_radius, lr
4742 @item chroma_radius, cr
4743 @item alpha_radius, ar
4744 Set an expression for the box radius in pixels used for blurring the
4745 corresponding input plane.
4746
4747 The radius value must be a non-negative number, and must not be
4748 greater than the value of the expression @code{min(w,h)/2} for the
4749 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
4750 planes.
4751
4752 Default value for @option{luma_radius} is "2". If not specified,
4753 @option{chroma_radius} and @option{alpha_radius} default to the
4754 corresponding value set for @option{luma_radius}.
4755
4756 The expressions can contain the following constants:
4757 @table @option
4758 @item w
4759 @item h
4760 The input width and height in pixels.
4761
4762 @item cw
4763 @item ch
4764 The input chroma image width and height in pixels.
4765
4766 @item hsub
4767 @item vsub
4768 The horizontal and vertical chroma subsample values. For example, for the
4769 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
4770 @end table
4771
4772 @item luma_power, lp
4773 @item chroma_power, cp
4774 @item alpha_power, ap
4775 Specify how many times the boxblur filter is applied to the
4776 corresponding plane.
4777
4778 Default value for @option{luma_power} is 2. If not specified,
4779 @option{chroma_power} and @option{alpha_power} default to the
4780 corresponding value set for @option{luma_power}.
4781
4782 A value of 0 will disable the effect.
4783 @end table
4784
4785 @subsection Examples
4786
4787 @itemize
4788 @item
4789 Apply a boxblur filter with the luma, chroma, and alpha radii
4790 set to 2:
4791 @example
4792 boxblur=luma_radius=2:luma_power=1
4793 boxblur=2:1
4794 @end example
4795
4796 @item
4797 Set the luma radius to 2, and alpha and chroma radius to 0:
4798 @example
4799 boxblur=2:1:cr=0:ar=0
4800 @end example
4801
4802 @item
4803 Set the luma and chroma radii to a fraction of the video dimension:
4804 @example
4805 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
4806 @end example
4807 @end itemize
4808
4809 @section bwdif
4810
4811 Deinterlace the input video ("bwdif" stands for "Bob Weaver
4812 Deinterlacing Filter").
4813
4814 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
4815 interpolation algorithms.
4816 It accepts the following parameters:
4817
4818 @table @option
4819 @item mode
4820 The interlacing mode to adopt. It accepts one of the following values:
4821
4822 @table @option
4823 @item 0, send_frame
4824 Output one frame for each frame.
4825 @item 1, send_field
4826 Output one frame for each field.
4827 @end table
4828
4829 The default value is @code{send_field}.
4830
4831 @item parity
4832 The picture field parity assumed for the input interlaced video. It accepts one
4833 of the following values:
4834
4835 @table @option
4836 @item 0, tff
4837 Assume the top field is first.
4838 @item 1, bff
4839 Assume the bottom field is first.
4840 @item -1, auto
4841 Enable automatic detection of field parity.
4842 @end table
4843
4844 The default value is @code{auto}.
4845 If the interlacing is unknown or the decoder does not export this information,
4846 top field first will be assumed.
4847
4848 @item deint
4849 Specify which frames to deinterlace. Accept one of the following
4850 values:
4851
4852 @table @option
4853 @item 0, all
4854 Deinterlace all frames.
4855 @item 1, interlaced
4856 Only deinterlace frames marked as interlaced.
4857 @end table
4858
4859 The default value is @code{all}.
4860 @end table
4861
4862 @section chromakey
4863 YUV colorspace color/chroma keying.
4864
4865 The filter accepts the following options:
4866
4867 @table @option
4868 @item color
4869 The color which will be replaced with transparency.
4870
4871 @item similarity
4872 Similarity percentage with the key color.
4873
4874 0.01 matches only the exact key color, while 1.0 matches everything.
4875
4876 @item blend
4877 Blend percentage.
4878
4879 0.0 makes pixels either fully transparent, or not transparent at all.
4880
4881 Higher values result in semi-transparent pixels, with a higher transparency
4882 the more similar the pixels color is to the key color.
4883
4884 @item yuv
4885 Signals that the color passed is already in YUV instead of RGB.
4886
4887 Litteral colors like "green" or "red" don't make sense with this enabled anymore.
4888 This can be used to pass exact YUV values as hexadecimal numbers.
4889 @end table
4890
4891 @subsection Examples
4892
4893 @itemize
4894 @item
4895 Make every green pixel in the input image transparent:
4896 @example
4897 ffmpeg -i input.png -vf chromakey=green out.png
4898 @end example
4899
4900 @item
4901 Overlay a greenscreen-video on top of a static black background.
4902 @example
4903 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
4904 @end example
4905 @end itemize
4906
4907 @section ciescope
4908
4909 Display CIE color diagram with pixels overlaid onto it.
4910
4911 The filter accepts the following options:
4912
4913 @table @option
4914 @item system
4915 Set color system.
4916
4917 @table @samp
4918 @item ntsc, 470m
4919 @item ebu, 470bg
4920 @item smpte
4921 @item 240m
4922 @item apple
4923 @item widergb
4924 @item cie1931
4925 @item rec709, hdtv
4926 @item uhdtv, rec2020
4927 @end table
4928
4929 @item cie
4930 Set CIE system.
4931
4932 @table @samp
4933 @item xyy
4934 @item ucs
4935 @item luv
4936 @end table
4937
4938 @item gamuts
4939 Set what gamuts to draw.
4940
4941 See @code{system} option for available values.
4942
4943 @item size, s
4944 Set ciescope size, by default set to 512.
4945
4946 @item intensity, i
4947 Set intensity used to map input pixel values to CIE diagram.
4948
4949 @item contrast
4950 Set contrast used to draw tongue colors that are out of active color system gamut.
4951
4952 @item corrgamma
4953 Correct gamma displayed on scope, by default enabled.
4954
4955 @item showwhite
4956 Show white point on CIE diagram, by default disabled.
4957
4958 @item gamma
4959 Set input gamma. Used only with XYZ input color space.
4960 @end table
4961
4962 @section codecview
4963
4964 Visualize information exported by some codecs.
4965
4966 Some codecs can export information through frames using side-data or other
4967 means. For example, some MPEG based codecs export motion vectors through the
4968 @var{export_mvs} flag in the codec @option{flags2} option.
4969
4970 The filter accepts the following option:
4971
4972 @table @option
4973 @item mv
4974 Set motion vectors to visualize.
4975
4976 Available flags for @var{mv} are:
4977
4978 @table @samp
4979 @item pf
4980 forward predicted MVs of P-frames
4981 @item bf
4982 forward predicted MVs of B-frames
4983 @item bb
4984 backward predicted MVs of B-frames
4985 @end table
4986
4987 @item qp
4988 Display quantization parameters using the chroma planes.
4989
4990 @item mv_type, mvt
4991 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
4992
4993 Available flags for @var{mv_type} are:
4994
4995 @table @samp
4996 @item fp
4997 forward predicted MVs
4998 @item bp
4999 backward predicted MVs
5000 @end table
5001
5002 @item frame_type, ft
5003 Set frame type to visualize motion vectors of.
5004
5005 Available flags for @var{frame_type} are:
5006
5007 @table @samp
5008 @item if
5009 intra-coded frames (I-frames)
5010 @item pf
5011 predicted frames (P-frames)
5012 @item bf
5013 bi-directionally predicted frames (B-frames)
5014 @end table
5015 @end table
5016
5017 @subsection Examples
5018
5019 @itemize
5020 @item
5021 Visualize forward predicted MVs of all frames using @command{ffplay}:
5022 @example
5023 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
5024 @end example
5025
5026 @item
5027 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
5028 @example
5029 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
5030 @end example
5031 @end itemize
5032
5033 @section colorbalance
5034 Modify intensity of primary colors (red, green and blue) of input frames.
5035
5036 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
5037 regions for the red-cyan, green-magenta or blue-yellow balance.
5038
5039 A positive adjustment value shifts the balance towards the primary color, a negative
5040 value towards the complementary color.
5041
5042 The filter accepts the following options:
5043
5044 @table @option
5045 @item rs
5046 @item gs
5047 @item bs
5048 Adjust red, green and blue shadows (darkest pixels).
5049
5050 @item rm
5051 @item gm
5052 @item bm
5053 Adjust red, green and blue midtones (medium pixels).
5054
5055 @item rh
5056 @item gh
5057 @item bh
5058 Adjust red, green and blue highlights (brightest pixels).
5059
5060 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
5061 @end table
5062
5063 @subsection Examples
5064
5065 @itemize
5066 @item
5067 Add red color cast to shadows:
5068 @example
5069 colorbalance=rs=.3
5070 @end example
5071 @end itemize
5072
5073 @section colorkey
5074 RGB colorspace color keying.
5075
5076 The filter accepts the following options:
5077
5078 @table @option
5079 @item color
5080 The color which will be replaced with transparency.
5081
5082 @item similarity
5083 Similarity percentage with the key color.
5084
5085 0.01 matches only the exact key color, while 1.0 matches everything.
5086
5087 @item blend
5088 Blend percentage.
5089
5090 0.0 makes pixels either fully transparent, or not transparent at all.
5091
5092 Higher values result in semi-transparent pixels, with a higher transparency
5093 the more similar the pixels color is to the key color.
5094 @end table
5095
5096 @subsection Examples
5097
5098 @itemize
5099 @item
5100 Make every green pixel in the input image transparent:
5101 @example
5102 ffmpeg -i input.png -vf colorkey=green out.png
5103 @end example
5104
5105 @item
5106 Overlay a greenscreen-video on top of a static background image.
5107 @example
5108 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
5109 @end example
5110 @end itemize
5111
5112 @section colorlevels
5113
5114 Adjust video input frames using levels.
5115
5116 The filter accepts the following options:
5117
5118 @table @option
5119 @item rimin
5120 @item gimin
5121 @item bimin
5122 @item aimin
5123 Adjust red, green, blue and alpha input black point.
5124 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
5125
5126 @item rimax
5127 @item gimax
5128 @item bimax
5129 @item aimax
5130 Adjust red, green, blue and alpha input white point.
5131 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
5132
5133 Input levels are used to lighten highlights (bright tones), darken shadows
5134 (dark tones), change the balance of bright and dark tones.
5135
5136 @item romin
5137 @item gomin
5138 @item bomin
5139 @item aomin
5140 Adjust red, green, blue and alpha output black point.
5141 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
5142
5143 @item romax
5144 @item gomax
5145 @item bomax
5146 @item aomax
5147 Adjust red, green, blue and alpha output white point.
5148 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
5149
5150 Output levels allows manual selection of a constrained output level range.
5151 @end table
5152
5153 @subsection Examples
5154
5155 @itemize
5156 @item
5157 Make video output darker:
5158 @example
5159 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
5160 @end example
5161
5162 @item
5163 Increase contrast:
5164 @example
5165 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
5166 @end example
5167
5168 @item
5169 Make video output lighter:
5170 @example
5171 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
5172 @end example
5173
5174 @item
5175 Increase brightness:
5176 @example
5177 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
5178 @end example
5179 @end itemize
5180
5181 @section colorchannelmixer
5182
5183 Adjust video input frames by re-mixing color channels.
5184
5185 This filter modifies a color channel by adding the values associated to
5186 the other channels of the same pixels. For example if the value to
5187 modify is red, the output value will be:
5188 @example
5189 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
5190 @end example
5191
5192 The filter accepts the following options:
5193
5194 @table @option
5195 @item rr
5196 @item rg
5197 @item rb
5198 @item ra
5199 Adjust contribution of input red, green, blue and alpha channels for output red channel.
5200 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
5201
5202 @item gr
5203 @item gg
5204 @item gb
5205 @item ga
5206 Adjust contribution of input red, green, blue and alpha channels for output green channel.
5207 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
5208
5209 @item br
5210 @item bg
5211 @item bb
5212 @item ba
5213 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
5214 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
5215
5216 @item ar
5217 @item ag
5218 @item ab
5219 @item aa
5220 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
5221 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
5222
5223 Allowed ranges for options are @code{[-2.0, 2.0]}.
5224 @end table
5225
5226 @subsection Examples
5227
5228 @itemize
5229 @item
5230 Convert source to grayscale:
5231 @example
5232 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
5233 @end example
5234 @item
5235 Simulate sepia tones:
5236 @example
5237 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
5238 @end example
5239 @end itemize
5240
5241 @section colormatrix
5242
5243 Convert color matrix.
5244
5245 The filter accepts the following options:
5246
5247 @table @option
5248 @item src
5249 @item dst
5250 Specify the source and destination color matrix. Both values must be
5251 specified.
5252
5253 The accepted values are:
5254 @table @samp
5255 @item bt709
5256 BT.709
5257
5258 @item bt601
5259 BT.601
5260
5261 @item smpte240m
5262 SMPTE-240M
5263
5264 @item fcc
5265 FCC
5266
5267 @item bt2020
5268 BT.2020
5269 @end table
5270 @end table
5271
5272 For example to convert from BT.601 to SMPTE-240M, use the command:
5273 @example
5274 colormatrix=bt601:smpte240m
5275 @end example
5276
5277 @section colorspace
5278
5279 Convert colorspace, transfer characteristics or color primaries.
5280
5281 The filter accepts the following options:
5282
5283 @table @option
5284 @anchor{all}
5285 @item all
5286 Specify all color properties at once.
5287
5288 The accepted values are:
5289 @table @samp
5290 @item bt470m
5291 BT.470M
5292
5293 @item bt470bg
5294 BT.470BG
5295
5296 @item bt601-6-525
5297 BT.601-6 525
5298
5299 @item bt601-6-625
5300 BT.601-6 625
5301
5302 @item bt709
5303 BT.709
5304
5305 @item smpte170m
5306 SMPTE-170M
5307
5308 @item smpte240m
5309 SMPTE-240M
5310
5311 @item bt2020
5312 BT.2020
5313
5314 @end table
5315
5316 @anchor{space}
5317 @item space
5318 Specify output colorspace.
5319
5320 The accepted values are:
5321 @table @samp
5322 @item bt709
5323 BT.709
5324
5325 @item fcc
5326 FCC
5327
5328 @item bt470bg
5329 BT.470BG or BT.601-6 625
5330
5331 @item smpte170m
5332 SMPTE-170M or BT.601-6 525
5333
5334 @item smpte240m
5335 SMPTE-240M
5336
5337 @item bt2020ncl
5338 BT.2020 with non-constant luminance
5339
5340 @end table
5341
5342 @anchor{trc}
5343 @item trc
5344 Specify output transfer characteristics.
5345
5346 The accepted values are:
5347 @table @samp
5348 @item bt709
5349 BT.709
5350
5351 @item gamma22
5352 Constant gamma of 2.2
5353
5354 @item gamma28
5355 Constant gamma of 2.8
5356
5357 @item smpte170m
5358 SMPTE-170M, BT.601-6 625 or BT.601-6 525
5359
5360 @item smpte240m
5361 SMPTE-240M
5362
5363 @item bt2020-10
5364 BT.2020 for 10-bits content
5365
5366 @item bt2020-12
5367 BT.2020 for 12-bits content
5368
5369 @end table
5370
5371 @anchor{primaries}
5372 @item primaries
5373 Specify output color primaries.
5374
5375 The accepted values are:
5376 @table @samp
5377 @item bt709
5378 BT.709
5379
5380 @item bt470m
5381 BT.470M
5382
5383 @item bt470bg
5384 BT.470BG or BT.601-6 625
5385
5386 @item smpte170m
5387 SMPTE-170M or BT.601-6 525
5388
5389 @item smpte240m
5390 SMPTE-240M
5391
5392 @item bt2020
5393 BT.2020
5394
5395 @end table
5396
5397 @anchor{range}
5398 @item range
5399 Specify output color range.
5400
5401 The accepted values are:
5402 @table @samp
5403 @item mpeg
5404 MPEG (restricted) range
5405
5406 @item jpeg
5407 JPEG (full) range
5408
5409 @end table
5410
5411 @item format
5412 Specify output color format.
5413
5414 The accepted values are:
5415 @table @samp
5416 @item yuv420p
5417 YUV 4:2:0 planar 8-bits
5418
5419 @item yuv420p10
5420 YUV 4:2:0 planar 10-bits
5421
5422 @item yuv420p12
5423 YUV 4:2:0 planar 12-bits
5424
5425 @item yuv422p
5426 YUV 4:2:2 planar 8-bits
5427
5428 @item yuv422p10
5429 YUV 4:2:2 planar 10-bits
5430
5431 @item yuv422p12
5432 YUV 4:2:2 planar 12-bits
5433
5434 @item yuv444p
5435 YUV 4:4:4 planar 8-bits
5436
5437 @item yuv444p10
5438 YUV 4:4:4 planar 10-bits
5439
5440 @item yuv444p12
5441 YUV 4:4:4 planar 12-bits
5442
5443 @end table
5444
5445 @item fast
5446 Do a fast conversion, which skips gamma/primary correction. This will take
5447 significantly less CPU, but will be mathematically incorrect. To get output
5448 compatible with that produced by the colormatrix filter, use fast=1.
5449
5450 @item dither
5451 Specify dithering mode.
5452
5453 The accepted values are:
5454 @table @samp
5455 @item none
5456 No dithering
5457
5458 @item fsb
5459 Floyd-Steinberg dithering
5460 @end table
5461
5462 @item wpadapt
5463 Whitepoint adaptation mode.
5464
5465 The accepted values are:
5466 @table @samp
5467 @item bradford
5468 Bradford whitepoint adaptation
5469
5470 @item vonkries
5471 von Kries whitepoint adaptation
5472
5473 @item identity
5474 identity whitepoint adaptation (i.e. no whitepoint adaptation)
5475 @end table
5476
5477 @item iall
5478 Override all input properties at once. Same accepted values as @ref{all}.
5479
5480 @item ispace
5481 Override input colorspace. Same accepted values as @ref{space}.
5482
5483 @item iprimaries
5484 Override input color primaries. Same accepted values as @ref{primaries}.
5485
5486 @item itrc
5487 Override input transfer characteristics. Same accepted values as @ref{trc}.
5488
5489 @item irange
5490 Override input color range. Same accepted values as @ref{range}.
5491
5492 @end table
5493
5494 The filter converts the transfer characteristics, color space and color
5495 primaries to the specified user values. The output value, if not specified,
5496 is set to a default value based on the "all" property. If that property is
5497 also not specified, the filter will log an error. The output color range and
5498 format default to the same value as the input color range and format. The
5499 input transfer characteristics, color space, color primaries and color range
5500 should be set on the input data. If any of these are missing, the filter will
5501 log an error and no conversion will take place.
5502
5503 For example to convert the input to SMPTE-240M, use the command:
5504 @example
5505 colorspace=smpte240m
5506 @end example
5507
5508 @section convolution
5509
5510 Apply convolution 3x3 or 5x5 filter.
5511
5512 The filter accepts the following options:
5513
5514 @table @option
5515 @item 0m
5516 @item 1m
5517 @item 2m
5518 @item 3m
5519 Set matrix for each plane.
5520 Matrix is sequence of 9 or 25 signed integers.
5521
5522 @item 0rdiv
5523 @item 1rdiv
5524 @item 2rdiv
5525 @item 3rdiv
5526 Set multiplier for calculated value for each plane.
5527
5528 @item 0bias
5529 @item 1bias
5530 @item 2bias
5531 @item 3bias
5532 Set bias for each plane. This value is added to the result of the multiplication.
5533 Useful for making the overall image brighter or darker. Default is 0.0.
5534 @end table
5535
5536 @subsection Examples
5537
5538 @itemize
5539 @item
5540 Apply sharpen:
5541 @example
5542 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"
5543 @end example
5544
5545 @item
5546 Apply blur:
5547 @example
5548 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"
5549 @end example
5550
5551 @item
5552 Apply edge enhance:
5553 @example
5554 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"
5555 @end example
5556
5557 @item
5558 Apply edge detect:
5559 @example
5560 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"
5561 @end example
5562
5563 @item
5564 Apply emboss:
5565 @example
5566 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"
5567 @end example
5568 @end itemize
5569
5570 @section copy
5571
5572 Copy the input source unchanged to the output. This is mainly useful for
5573 testing purposes.
5574
5575 @anchor{coreimage}
5576 @section coreimage
5577 Video filtering on GPU using Apple's CoreImage API on OSX.
5578
5579 Hardware acceleration is based on an OpenGL context. Usually, this means it is
5580 processed by video hardware. However, software-based OpenGL implementations
5581 exist which means there is no guarantee for hardware processing. It depends on
5582 the respective OSX.
5583
5584 There are many filters and image generators provided by Apple that come with a
5585 large variety of options. The filter has to be referenced by its name along
5586 with its options.
5587
5588 The coreimage filter accepts the following options:
5589 @table @option
5590 @item list_filters
5591 List all available filters and generators along with all their respective
5592 options as well as possible minimum and maximum values along with the default
5593 values.
5594 @example
5595 list_filters=true
5596 @end example
5597
5598 @item filter
5599 Specify all filters by their respective name and options.
5600 Use @var{list_filters} to determine all valid filter names and options.
5601 Numerical options are specified by a float value and are automatically clamped
5602 to their respective value range.  Vector and color options have to be specified
5603 by a list of space separated float values. Character escaping has to be done.
5604 A special option name @code{default} is available to use default options for a
5605 filter.
5606
5607 It is required to specify either @code{default} or at least one of the filter options.
5608 All omitted options are used with their default values.
5609 The syntax of the filter string is as follows:
5610 @example
5611 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
5612 @end example
5613
5614 @item output_rect
5615 Specify a rectangle where the output of the filter chain is copied into the
5616 input image. It is given by a list of space separated float values:
5617 @example
5618 output_rect=x\ y\ width\ height
5619 @end example
5620 If not given, the output rectangle equals the dimensions of the input image.
5621 The output rectangle is automatically cropped at the borders of the input
5622 image. Negative values are valid for each component.
5623 @example
5624 output_rect=25\ 25\ 100\ 100
5625 @end example
5626 @end table
5627
5628 Several filters can be chained for successive processing without GPU-HOST
5629 transfers allowing for fast processing of complex filter chains.
5630 Currently, only filters with zero (generators) or exactly one (filters) input
5631 image and one output image are supported. Also, transition filters are not yet
5632 usable as intended.
5633
5634 Some filters generate output images with additional padding depending on the
5635 respective filter kernel. The padding is automatically removed to ensure the
5636 filter output has the same size as the input image.
5637
5638 For image generators, the size of the output image is determined by the
5639 previous output image of the filter chain or the input image of the whole
5640 filterchain, respectively. The generators do not use the pixel information of
5641 this image to generate their output. However, the generated output is
5642 blended onto this image, resulting in partial or complete coverage of the
5643 output image.
5644
5645 The @ref{coreimagesrc} video source can be used for generating input images
5646 which are directly fed into the filter chain. By using it, providing input
5647 images by another video source or an input video is not required.
5648
5649 @subsection Examples
5650
5651 @itemize
5652
5653 @item
5654 List all filters available:
5655 @example
5656 coreimage=list_filters=true
5657 @end example
5658
5659 @item
5660 Use the CIBoxBlur filter with default options to blur an image:
5661 @example
5662 coreimage=filter=CIBoxBlur@@default
5663 @end example
5664
5665 @item
5666 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
5667 its center at 100x100 and a radius of 50 pixels:
5668 @example
5669 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
5670 @end example
5671
5672 @item
5673 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
5674 given as complete and escaped command-line for Apple's standard bash shell:
5675 @example
5676 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
5677 @end example
5678 @end itemize
5679
5680 @section crop
5681
5682 Crop the input video to given dimensions.
5683
5684 It accepts the following parameters:
5685
5686 @table @option
5687 @item w, out_w
5688 The width of the output video. It defaults to @code{iw}.
5689 This expression is evaluated only once during the filter
5690 configuration, or when the @samp{w} or @samp{out_w} command is sent.
5691
5692 @item h, out_h
5693 The height of the output video. It defaults to @code{ih}.
5694 This expression is evaluated only once during the filter
5695 configuration, or when the @samp{h} or @samp{out_h} command is sent.
5696
5697 @item x
5698 The horizontal position, in the input video, of the left edge of the output
5699 video. It defaults to @code{(in_w-out_w)/2}.
5700 This expression is evaluated per-frame.
5701
5702 @item y
5703 The vertical position, in the input video, of the top edge of the output video.
5704 It defaults to @code{(in_h-out_h)/2}.
5705 This expression is evaluated per-frame.
5706
5707 @item keep_aspect
5708 If set to 1 will force the output display aspect ratio
5709 to be the same of the input, by changing the output sample aspect
5710 ratio. It defaults to 0.
5711
5712 @item exact
5713 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
5714 width/height/x/y as specified and will not be rounded to nearest smaller value.
5715 It defaults to 0.
5716 @end table
5717
5718 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
5719 expressions containing the following constants:
5720
5721 @table @option
5722 @item x
5723 @item y
5724 The computed values for @var{x} and @var{y}. They are evaluated for
5725 each new frame.
5726
5727 @item in_w
5728 @item in_h
5729 The input width and height.
5730
5731 @item iw
5732 @item ih
5733 These are the same as @var{in_w} and @var{in_h}.
5734
5735 @item out_w
5736 @item out_h
5737 The output (cropped) width and height.
5738
5739 @item ow
5740 @item oh
5741 These are the same as @var{out_w} and @var{out_h}.
5742
5743 @item a
5744 same as @var{iw} / @var{ih}
5745
5746 @item sar
5747 input sample aspect ratio
5748
5749 @item dar
5750 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
5751
5752 @item hsub
5753 @item vsub
5754 horizontal and vertical chroma subsample values. For example for the
5755 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
5756
5757 @item n
5758 The number of the input frame, starting from 0.
5759
5760 @item pos
5761 the position in the file of the input frame, NAN if unknown
5762
5763 @item t
5764 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
5765
5766 @end table
5767
5768 The expression for @var{out_w} may depend on the value of @var{out_h},
5769 and the expression for @var{out_h} may depend on @var{out_w}, but they
5770 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
5771 evaluated after @var{out_w} and @var{out_h}.
5772
5773 The @var{x} and @var{y} parameters specify the expressions for the
5774 position of the top-left corner of the output (non-cropped) area. They
5775 are evaluated for each frame. If the evaluated value is not valid, it
5776 is approximated to the nearest valid value.
5777
5778 The expression for @var{x} may depend on @var{y}, and the expression
5779 for @var{y} may depend on @var{x}.
5780
5781 @subsection Examples
5782
5783 @itemize
5784 @item
5785 Crop area with size 100x100 at position (12,34).
5786 @example
5787 crop=100:100:12:34
5788 @end example
5789
5790 Using named options, the example above becomes:
5791 @example
5792 crop=w=100:h=100:x=12:y=34
5793 @end example
5794
5795 @item
5796 Crop the central input area with size 100x100:
5797 @example
5798 crop=100:100
5799 @end example
5800
5801 @item
5802 Crop the central input area with size 2/3 of the input video:
5803 @example
5804 crop=2/3*in_w:2/3*in_h
5805 @end example
5806
5807 @item
5808 Crop the input video central square:
5809 @example
5810 crop=out_w=in_h
5811 crop=in_h
5812 @end example
5813
5814 @item
5815 Delimit the rectangle with the top-left corner placed at position
5816 100:100 and the right-bottom corner corresponding to the right-bottom
5817 corner of the input image.
5818 @example
5819 crop=in_w-100:in_h-100:100:100
5820 @end example
5821
5822 @item
5823 Crop 10 pixels from the left and right borders, and 20 pixels from
5824 the top and bottom borders
5825 @example
5826 crop=in_w-2*10:in_h-2*20
5827 @end example
5828
5829 @item
5830 Keep only the bottom right quarter of the input image:
5831 @example
5832 crop=in_w/2:in_h/2:in_w/2:in_h/2
5833 @end example
5834
5835 @item
5836 Crop height for getting Greek harmony:
5837 @example
5838 crop=in_w:1/PHI*in_w
5839 @end example
5840
5841 @item
5842 Apply trembling effect:
5843 @example
5844 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)
5845 @end example
5846
5847 @item
5848 Apply erratic camera effect depending on timestamp:
5849 @example
5850 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)"
5851 @end example
5852
5853 @item
5854 Set x depending on the value of y:
5855 @example
5856 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
5857 @end example
5858 @end itemize
5859
5860 @subsection Commands
5861
5862 This filter supports the following commands:
5863 @table @option
5864 @item w, out_w
5865 @item h, out_h
5866 @item x
5867 @item y
5868 Set width/height of the output video and the horizontal/vertical position
5869 in the input video.
5870 The command accepts the same syntax of the corresponding option.
5871
5872 If the specified expression is not valid, it is kept at its current
5873 value.
5874 @end table
5875
5876 @section cropdetect
5877
5878 Auto-detect the crop size.
5879
5880 It calculates the necessary cropping parameters and prints the
5881 recommended parameters via the logging system. The detected dimensions
5882 correspond to the non-black area of the input video.
5883
5884 It accepts the following parameters:
5885
5886 @table @option
5887
5888 @item limit
5889 Set higher black value threshold, which can be optionally specified
5890 from nothing (0) to everything (255 for 8-bit based formats). An intensity
5891 value greater to the set value is considered non-black. It defaults to 24.
5892 You can also specify a value between 0.0 and 1.0 which will be scaled depending
5893 on the bitdepth of the pixel format.
5894
5895 @item round
5896 The value which the width/height should be divisible by. It defaults to
5897 16. The offset is automatically adjusted to center the video. Use 2 to
5898 get only even dimensions (needed for 4:2:2 video). 16 is best when
5899 encoding to most video codecs.
5900
5901 @item reset_count, reset
5902 Set the counter that determines after how many frames cropdetect will
5903 reset the previously detected largest video area and start over to
5904 detect the current optimal crop area. Default value is 0.
5905
5906 This can be useful when channel logos distort the video area. 0
5907 indicates 'never reset', and returns the largest area encountered during
5908 playback.
5909 @end table
5910
5911 @anchor{curves}
5912 @section curves
5913
5914 Apply color adjustments using curves.
5915
5916 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
5917 component (red, green and blue) has its values defined by @var{N} key points
5918 tied from each other using a smooth curve. The x-axis represents the pixel
5919 values from the input frame, and the y-axis the new pixel values to be set for
5920 the output frame.
5921
5922 By default, a component curve is defined by the two points @var{(0;0)} and
5923 @var{(1;1)}. This creates a straight line where each original pixel value is
5924 "adjusted" to its own value, which means no change to the image.
5925
5926 The filter allows you to redefine these two points and add some more. A new
5927 curve (using a natural cubic spline interpolation) will be define to pass
5928 smoothly through all these new coordinates. The new defined points needs to be
5929 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
5930 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
5931 the vector spaces, the values will be clipped accordingly.
5932
5933 The filter accepts the following options:
5934
5935 @table @option
5936 @item preset
5937 Select one of the available color presets. This option can be used in addition
5938 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
5939 options takes priority on the preset values.
5940 Available presets are:
5941 @table @samp
5942 @item none
5943 @item color_negative
5944 @item cross_process
5945 @item darker
5946 @item increase_contrast
5947 @item lighter
5948 @item linear_contrast
5949 @item medium_contrast
5950 @item negative
5951 @item strong_contrast
5952 @item vintage
5953 @end table
5954 Default is @code{none}.
5955 @item master, m
5956 Set the master key points. These points will define a second pass mapping. It
5957 is sometimes called a "luminance" or "value" mapping. It can be used with
5958 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
5959 post-processing LUT.
5960 @item red, r
5961 Set the key points for the red component.
5962 @item green, g
5963 Set the key points for the green component.
5964 @item blue, b
5965 Set the key points for the blue component.
5966 @item all
5967 Set the key points for all components (not including master).
5968 Can be used in addition to the other key points component
5969 options. In this case, the unset component(s) will fallback on this
5970 @option{all} setting.
5971 @item psfile
5972 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
5973 @item plot
5974 Save Gnuplot script of the curves in specified file.
5975 @end table
5976
5977 To avoid some filtergraph syntax conflicts, each key points list need to be
5978 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
5979
5980 @subsection Examples
5981
5982 @itemize
5983 @item
5984 Increase slightly the middle level of blue:
5985 @example
5986 curves=blue='0/0 0.5/0.58 1/1'
5987 @end example
5988
5989 @item
5990 Vintage effect:
5991 @example
5992 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'
5993 @end example
5994 Here we obtain the following coordinates for each components:
5995 @table @var
5996 @item red
5997 @code{(0;0.11) (0.42;0.51) (1;0.95)}
5998 @item green
5999 @code{(0;0) (0.50;0.48) (1;1)}
6000 @item blue
6001 @code{(0;0.22) (0.49;0.44) (1;0.80)}
6002 @end table
6003
6004 @item
6005 The previous example can also be achieved with the associated built-in preset:
6006 @example
6007 curves=preset=vintage
6008 @end example
6009
6010 @item
6011 Or simply:
6012 @example
6013 curves=vintage
6014 @end example
6015
6016 @item
6017 Use a Photoshop preset and redefine the points of the green component:
6018 @example
6019 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
6020 @end example
6021
6022 @item
6023 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
6024 and @command{gnuplot}:
6025 @example
6026 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
6027 gnuplot -p /tmp/curves.plt
6028 @end example
6029 @end itemize
6030
6031 @section datascope
6032
6033 Video data analysis filter.
6034
6035 This filter shows hexadecimal pixel values of part of video.
6036
6037 The filter accepts the following options:
6038
6039 @table @option
6040 @item size, s
6041 Set output video size.
6042
6043 @item x
6044 Set x offset from where to pick pixels.
6045
6046 @item y
6047 Set y offset from where to pick pixels.
6048
6049 @item mode
6050 Set scope mode, can be one of the following:
6051 @table @samp
6052 @item mono
6053 Draw hexadecimal pixel values with white color on black background.
6054
6055 @item color
6056 Draw hexadecimal pixel values with input video pixel color on black
6057 background.
6058
6059 @item color2
6060 Draw hexadecimal pixel values on color background picked from input video,
6061 the text color is picked in such way so its always visible.
6062 @end table
6063
6064 @item axis
6065 Draw rows and columns numbers on left and top of video.
6066
6067 @item opacity
6068 Set background opacity.
6069 @end table
6070
6071 @section dctdnoiz
6072
6073 Denoise frames using 2D DCT (frequency domain filtering).
6074
6075 This filter is not designed for real time.
6076
6077 The filter accepts the following options:
6078
6079 @table @option
6080 @item sigma, s
6081 Set the noise sigma constant.
6082
6083 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
6084 coefficient (absolute value) below this threshold with be dropped.
6085
6086 If you need a more advanced filtering, see @option{expr}.
6087
6088 Default is @code{0}.
6089
6090 @item overlap
6091 Set number overlapping pixels for each block. Since the filter can be slow, you
6092 may want to reduce this value, at the cost of a less effective filter and the
6093 risk of various artefacts.
6094
6095 If the overlapping value doesn't permit processing the whole input width or
6096 height, a warning will be displayed and according borders won't be denoised.
6097
6098 Default value is @var{blocksize}-1, which is the best possible setting.
6099
6100 @item expr, e
6101 Set the coefficient factor expression.
6102
6103 For each coefficient of a DCT block, this expression will be evaluated as a
6104 multiplier value for the coefficient.
6105
6106 If this is option is set, the @option{sigma} option will be ignored.
6107
6108 The absolute value of the coefficient can be accessed through the @var{c}
6109 variable.
6110
6111 @item n
6112 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
6113 @var{blocksize}, which is the width and height of the processed blocks.
6114
6115 The default value is @var{3} (8x8) and can be raised to @var{4} for a
6116 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
6117 on the speed processing. Also, a larger block size does not necessarily means a
6118 better de-noising.
6119 @end table
6120
6121 @subsection Examples
6122
6123 Apply a denoise with a @option{sigma} of @code{4.5}:
6124 @example
6125 dctdnoiz=4.5
6126 @end example
6127
6128 The same operation can be achieved using the expression system:
6129 @example
6130 dctdnoiz=e='gte(c, 4.5*3)'
6131 @end example
6132
6133 Violent denoise using a block size of @code{16x16}:
6134 @example
6135 dctdnoiz=15:n=4
6136 @end example
6137
6138 @section deband
6139
6140 Remove banding artifacts from input video.
6141 It works by replacing banded pixels with average value of referenced pixels.
6142
6143 The filter accepts the following options:
6144
6145 @table @option
6146 @item 1thr
6147 @item 2thr
6148 @item 3thr
6149 @item 4thr
6150 Set banding detection threshold for each plane. Default is 0.02.
6151 Valid range is 0.00003 to 0.5.
6152 If difference between current pixel and reference pixel is less than threshold,
6153 it will be considered as banded.
6154
6155 @item range, r
6156 Banding detection range in pixels. Default is 16. If positive, random number
6157 in range 0 to set value will be used. If negative, exact absolute value
6158 will be used.
6159 The range defines square of four pixels around current pixel.
6160
6161 @item direction, d
6162 Set direction in radians from which four pixel will be compared. If positive,
6163 random direction from 0 to set direction will be picked. If negative, exact of
6164 absolute value will be picked. For example direction 0, -PI or -2*PI radians
6165 will pick only pixels on same row and -PI/2 will pick only pixels on same
6166 column.
6167
6168 @item blur
6169 If enabled, current pixel is compared with average value of all four
6170 surrounding pixels. The default is enabled. If disabled current pixel is
6171 compared with all four surrounding pixels. The pixel is considered banded
6172 if only all four differences with surrounding pixels are less than threshold.
6173 @end table
6174
6175 @anchor{decimate}
6176 @section decimate
6177
6178 Drop duplicated frames at regular intervals.
6179
6180 The filter accepts the following options:
6181
6182 @table @option
6183 @item cycle
6184 Set the number of frames from which one will be dropped. Setting this to
6185 @var{N} means one frame in every batch of @var{N} frames will be dropped.
6186 Default is @code{5}.
6187
6188 @item dupthresh
6189 Set the threshold for duplicate detection. If the difference metric for a frame
6190 is less than or equal to this value, then it is declared as duplicate. Default
6191 is @code{1.1}
6192
6193 @item scthresh
6194 Set scene change threshold. Default is @code{15}.
6195
6196 @item blockx
6197 @item blocky
6198 Set the size of the x and y-axis blocks used during metric calculations.
6199 Larger blocks give better noise suppression, but also give worse detection of
6200 small movements. Must be a power of two. Default is @code{32}.
6201
6202 @item ppsrc
6203 Mark main input as a pre-processed input and activate clean source input
6204 stream. This allows the input to be pre-processed with various filters to help
6205 the metrics calculation while keeping the frame selection lossless. When set to
6206 @code{1}, the first stream is for the pre-processed input, and the second
6207 stream is the clean source from where the kept frames are chosen. Default is
6208 @code{0}.
6209
6210 @item chroma
6211 Set whether or not chroma is considered in the metric calculations. Default is
6212 @code{1}.
6213 @end table
6214
6215 @section deflate
6216
6217 Apply deflate effect to the video.
6218
6219 This filter replaces the pixel by the local(3x3) average by taking into account
6220 only values lower than the pixel.
6221
6222 It accepts the following options:
6223
6224 @table @option
6225 @item threshold0
6226 @item threshold1
6227 @item threshold2
6228 @item threshold3
6229 Limit the maximum change for each plane, default is 65535.
6230 If 0, plane will remain unchanged.
6231 @end table
6232
6233 @section dejudder
6234
6235 Remove judder produced by partially interlaced telecined content.
6236
6237 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
6238 source was partially telecined content then the output of @code{pullup,dejudder}
6239 will have a variable frame rate. May change the recorded frame rate of the
6240 container. Aside from that change, this filter will not affect constant frame
6241 rate video.
6242
6243 The option available in this filter is:
6244 @table @option
6245
6246 @item cycle
6247 Specify the length of the window over which the judder repeats.
6248
6249 Accepts any integer greater than 1. Useful values are:
6250 @table @samp
6251
6252 @item 4
6253 If the original was telecined from 24 to 30 fps (Film to NTSC).
6254
6255 @item 5
6256 If the original was telecined from 25 to 30 fps (PAL to NTSC).
6257
6258 @item 20
6259 If a mixture of the two.
6260 @end table
6261
6262 The default is @samp{4}.
6263 @end table
6264
6265 @section delogo
6266
6267 Suppress a TV station logo by a simple interpolation of the surrounding
6268 pixels. Just set a rectangle covering the logo and watch it disappear
6269 (and sometimes something even uglier appear - your mileage may vary).
6270
6271 It accepts the following parameters:
6272 @table @option
6273
6274 @item x
6275 @item y
6276 Specify the top left corner coordinates of the logo. They must be
6277 specified.
6278
6279 @item w
6280 @item h
6281 Specify the width and height of the logo to clear. They must be
6282 specified.
6283
6284 @item band, t
6285 Specify the thickness of the fuzzy edge of the rectangle (added to
6286 @var{w} and @var{h}). The default value is 1. This option is
6287 deprecated, setting higher values should no longer be necessary and
6288 is not recommended.
6289
6290 @item show
6291 When set to 1, a green rectangle is drawn on the screen to simplify
6292 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
6293 The default value is 0.
6294
6295 The rectangle is drawn on the outermost pixels which will be (partly)
6296 replaced with interpolated values. The values of the next pixels
6297 immediately outside this rectangle in each direction will be used to
6298 compute the interpolated pixel values inside the rectangle.
6299
6300 @end table
6301
6302 @subsection Examples
6303
6304 @itemize
6305 @item
6306 Set a rectangle covering the area with top left corner coordinates 0,0
6307 and size 100x77, and a band of size 10:
6308 @example
6309 delogo=x=0:y=0:w=100:h=77:band=10
6310 @end example
6311
6312 @end itemize
6313
6314 @section deshake
6315
6316 Attempt to fix small changes in horizontal and/or vertical shift. This
6317 filter helps remove camera shake from hand-holding a camera, bumping a
6318 tripod, moving on a vehicle, etc.
6319
6320 The filter accepts the following options:
6321
6322 @table @option
6323
6324 @item x
6325 @item y
6326 @item w
6327 @item h
6328 Specify a rectangular area where to limit the search for motion
6329 vectors.
6330 If desired the search for motion vectors can be limited to a
6331 rectangular area of the frame defined by its top left corner, width
6332 and height. These parameters have the same meaning as the drawbox
6333 filter which can be used to visualise the position of the bounding
6334 box.
6335
6336 This is useful when simultaneous movement of subjects within the frame
6337 might be confused for camera motion by the motion vector search.
6338
6339 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
6340 then the full frame is used. This allows later options to be set
6341 without specifying the bounding box for the motion vector search.
6342
6343 Default - search the whole frame.
6344
6345 @item rx
6346 @item ry
6347 Specify the maximum extent of movement in x and y directions in the
6348 range 0-64 pixels. Default 16.
6349
6350 @item edge
6351 Specify how to generate pixels to fill blanks at the edge of the
6352 frame. Available values are:
6353 @table @samp
6354 @item blank, 0
6355 Fill zeroes at blank locations
6356 @item original, 1
6357 Original image at blank locations
6358 @item clamp, 2
6359 Extruded edge value at blank locations
6360 @item mirror, 3
6361 Mirrored edge at blank locations
6362 @end table
6363 Default value is @samp{mirror}.
6364
6365 @item blocksize
6366 Specify the blocksize to use for motion search. Range 4-128 pixels,
6367 default 8.
6368
6369 @item contrast
6370 Specify the contrast threshold for blocks. Only blocks with more than
6371 the specified contrast (difference between darkest and lightest
6372 pixels) will be considered. Range 1-255, default 125.
6373
6374 @item search
6375 Specify the search strategy. Available values are:
6376 @table @samp
6377 @item exhaustive, 0
6378 Set exhaustive search
6379 @item less, 1
6380 Set less exhaustive search.
6381 @end table
6382 Default value is @samp{exhaustive}.
6383
6384 @item filename
6385 If set then a detailed log of the motion search is written to the
6386 specified file.
6387
6388 @item opencl
6389 If set to 1, specify using OpenCL capabilities, only available if
6390 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
6391
6392 @end table
6393
6394 @section detelecine
6395
6396 Apply an exact inverse of the telecine operation. It requires a predefined
6397 pattern specified using the pattern option which must be the same as that passed
6398 to the telecine filter.
6399
6400 This filter accepts the following options:
6401
6402 @table @option
6403 @item first_field
6404 @table @samp
6405 @item top, t
6406 top field first
6407 @item bottom, b
6408 bottom field first
6409 The default value is @code{top}.
6410 @end table
6411
6412 @item pattern
6413 A string of numbers representing the pulldown pattern you wish to apply.
6414 The default value is @code{23}.
6415
6416 @item start_frame
6417 A number representing position of the first frame with respect to the telecine
6418 pattern. This is to be used if the stream is cut. The default value is @code{0}.
6419 @end table
6420
6421 @section dilation
6422
6423 Apply dilation effect to the video.
6424
6425 This filter replaces the pixel by the local(3x3) maximum.
6426
6427 It accepts the following options:
6428
6429 @table @option
6430 @item threshold0
6431 @item threshold1
6432 @item threshold2
6433 @item threshold3
6434 Limit the maximum change for each plane, default is 65535.
6435 If 0, plane will remain unchanged.
6436
6437 @item coordinates
6438 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
6439 pixels are used.
6440
6441 Flags to local 3x3 coordinates maps like this:
6442
6443     1 2 3
6444     4   5
6445     6 7 8
6446 @end table
6447
6448 @section displace
6449
6450 Displace pixels as indicated by second and third input stream.
6451
6452 It takes three input streams and outputs one stream, the first input is the
6453 source, and second and third input are displacement maps.
6454
6455 The second input specifies how much to displace pixels along the
6456 x-axis, while the third input specifies how much to displace pixels
6457 along the y-axis.
6458 If one of displacement map streams terminates, last frame from that
6459 displacement map will be used.
6460
6461 Note that once generated, displacements maps can be reused over and over again.
6462
6463 A description of the accepted options follows.
6464
6465 @table @option
6466 @item edge
6467 Set displace behavior for pixels that are out of range.
6468
6469 Available values are:
6470 @table @samp
6471 @item blank
6472 Missing pixels are replaced by black pixels.
6473
6474 @item smear
6475 Adjacent pixels will spread out to replace missing pixels.
6476
6477 @item wrap
6478 Out of range pixels are wrapped so they point to pixels of other side.
6479 @end table
6480 Default is @samp{smear}.
6481
6482 @end table
6483
6484 @subsection Examples
6485
6486 @itemize
6487 @item
6488 Add ripple effect to rgb input of video size hd720:
6489 @example
6490 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
6491 @end example
6492
6493 @item
6494 Add wave effect to rgb input of video size hd720:
6495 @example
6496 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
6497 @end example
6498 @end itemize
6499
6500 @section drawbox
6501
6502 Draw a colored box on the input image.
6503
6504 It accepts the following parameters:
6505
6506 @table @option
6507 @item x
6508 @item y
6509 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
6510
6511 @item width, w
6512 @item height, h
6513 The expressions which specify the width and height of the box; if 0 they are interpreted as
6514 the input width and height. It defaults to 0.
6515
6516 @item color, c
6517 Specify the color of the box to write. For the general syntax of this option,
6518 check the "Color" section in the ffmpeg-utils manual. If the special
6519 value @code{invert} is used, the box edge color is the same as the
6520 video with inverted luma.
6521
6522 @item thickness, t
6523 The expression which sets the thickness of the box edge. Default value is @code{3}.
6524
6525 See below for the list of accepted constants.
6526 @end table
6527
6528 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
6529 following constants:
6530
6531 @table @option
6532 @item dar
6533 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
6534
6535 @item hsub
6536 @item vsub
6537 horizontal and vertical chroma subsample values. For example for the
6538 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6539
6540 @item in_h, ih
6541 @item in_w, iw
6542 The input width and height.
6543
6544 @item sar
6545 The input sample aspect ratio.
6546
6547 @item x
6548 @item y
6549 The x and y offset coordinates where the box is drawn.
6550
6551 @item w
6552 @item h
6553 The width and height of the drawn box.
6554
6555 @item t
6556 The thickness of the drawn box.
6557
6558 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
6559 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
6560
6561 @end table
6562
6563 @subsection Examples
6564
6565 @itemize
6566 @item
6567 Draw a black box around the edge of the input image:
6568 @example
6569 drawbox
6570 @end example
6571
6572 @item
6573 Draw a box with color red and an opacity of 50%:
6574 @example
6575 drawbox=10:20:200:60:red@@0.5
6576 @end example
6577
6578 The previous example can be specified as:
6579 @example
6580 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
6581 @end example
6582
6583 @item
6584 Fill the box with pink color:
6585 @example
6586 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=max
6587 @end example
6588
6589 @item
6590 Draw a 2-pixel red 2.40:1 mask:
6591 @example
6592 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
6593 @end example
6594 @end itemize
6595
6596 @section drawgrid
6597
6598 Draw a grid on the input image.
6599
6600 It accepts the following parameters:
6601
6602 @table @option
6603 @item x
6604 @item y
6605 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
6606
6607 @item width, w
6608 @item height, h
6609 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
6610 input width and height, respectively, minus @code{thickness}, so image gets
6611 framed. Default to 0.
6612
6613 @item color, c
6614 Specify the color of the grid. For the general syntax of this option,
6615 check the "Color" section in the ffmpeg-utils manual. If the special
6616 value @code{invert} is used, the grid color is the same as the
6617 video with inverted luma.
6618
6619 @item thickness, t
6620 The expression which sets the thickness of the grid line. Default value is @code{1}.
6621
6622 See below for the list of accepted constants.
6623 @end table
6624
6625 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
6626 following constants:
6627
6628 @table @option
6629 @item dar
6630 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
6631
6632 @item hsub
6633 @item vsub
6634 horizontal and vertical chroma subsample values. For example for the
6635 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6636
6637 @item in_h, ih
6638 @item in_w, iw
6639 The input grid cell width and height.
6640
6641 @item sar
6642 The input sample aspect ratio.
6643
6644 @item x
6645 @item y
6646 The x and y coordinates of some point of grid intersection (meant to configure offset).
6647
6648 @item w
6649 @item h
6650 The width and height of the drawn cell.
6651
6652 @item t
6653 The thickness of the drawn cell.
6654
6655 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
6656 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
6657
6658 @end table
6659
6660 @subsection Examples
6661
6662 @itemize
6663 @item
6664 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
6665 @example
6666 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
6667 @end example
6668
6669 @item
6670 Draw a white 3x3 grid with an opacity of 50%:
6671 @example
6672 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
6673 @end example
6674 @end itemize
6675
6676 @anchor{drawtext}
6677 @section drawtext
6678
6679 Draw a text string or text from a specified file on top of a video, using the
6680 libfreetype library.
6681
6682 To enable compilation of this filter, you need to configure FFmpeg with
6683 @code{--enable-libfreetype}.
6684 To enable default font fallback and the @var{font} option you need to
6685 configure FFmpeg with @code{--enable-libfontconfig}.
6686 To enable the @var{text_shaping} option, you need to configure FFmpeg with
6687 @code{--enable-libfribidi}.
6688
6689 @subsection Syntax
6690
6691 It accepts the following parameters:
6692
6693 @table @option
6694
6695 @item box
6696 Used to draw a box around text using the background color.
6697 The value must be either 1 (enable) or 0 (disable).
6698 The default value of @var{box} is 0.
6699
6700 @item boxborderw
6701 Set the width of the border to be drawn around the box using @var{boxcolor}.
6702 The default value of @var{boxborderw} is 0.
6703
6704 @item boxcolor
6705 The color to be used for drawing box around text. For the syntax of this
6706 option, check the "Color" section in the ffmpeg-utils manual.
6707
6708 The default value of @var{boxcolor} is "white".
6709
6710 @item borderw
6711 Set the width of the border to be drawn around the text using @var{bordercolor}.
6712 The default value of @var{borderw} is 0.
6713
6714 @item bordercolor
6715 Set the color to be used for drawing border around text. For the syntax of this
6716 option, check the "Color" section in the ffmpeg-utils manual.
6717
6718 The default value of @var{bordercolor} is "black".
6719
6720 @item expansion
6721 Select how the @var{text} is expanded. Can be either @code{none},
6722 @code{strftime} (deprecated) or
6723 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
6724 below for details.
6725
6726 @item fix_bounds
6727 If true, check and fix text coords to avoid clipping.
6728
6729 @item fontcolor
6730 The color to be used for drawing fonts. For the syntax of this option, check
6731 the "Color" section in the ffmpeg-utils manual.
6732
6733 The default value of @var{fontcolor} is "black".
6734
6735 @item fontcolor_expr
6736 String which is expanded the same way as @var{text} to obtain dynamic
6737 @var{fontcolor} value. By default this option has empty value and is not
6738 processed. When this option is set, it overrides @var{fontcolor} option.
6739
6740 @item font
6741 The font family to be used for drawing text. By default Sans.
6742
6743 @item fontfile
6744 The font file to be used for drawing text. The path must be included.
6745 This parameter is mandatory if the fontconfig support is disabled.
6746
6747 @item draw
6748 This option does not exist, please see the timeline system
6749
6750 @item alpha
6751 Draw the text applying alpha blending. The value can
6752 be a number between 0.0 and 1.0.
6753 The expression accepts the same variables @var{x, y} as well.
6754 The default value is 1.
6755 Please see @var{fontcolor_expr}.
6756
6757 @item fontsize
6758 The font size to be used for drawing text.
6759 The default value of @var{fontsize} is 16.
6760
6761 @item text_shaping
6762 If set to 1, attempt to shape the text (for example, reverse the order of
6763 right-to-left text and join Arabic characters) before drawing it.
6764 Otherwise, just draw the text exactly as given.
6765 By default 1 (if supported).
6766
6767 @item ft_load_flags
6768 The flags to be used for loading the fonts.
6769
6770 The flags map the corresponding flags supported by libfreetype, and are
6771 a combination of the following values:
6772 @table @var
6773 @item default
6774 @item no_scale
6775 @item no_hinting
6776 @item render
6777 @item no_bitmap
6778 @item vertical_layout
6779 @item force_autohint
6780 @item crop_bitmap
6781 @item pedantic
6782 @item ignore_global_advance_width
6783 @item no_recurse
6784 @item ignore_transform
6785 @item monochrome
6786 @item linear_design
6787 @item no_autohint
6788 @end table
6789
6790 Default value is "default".
6791
6792 For more information consult the documentation for the FT_LOAD_*
6793 libfreetype flags.
6794
6795 @item shadowcolor
6796 The color to be used for drawing a shadow behind the drawn text. For the
6797 syntax of this option, check the "Color" section in the ffmpeg-utils manual.
6798
6799 The default value of @var{shadowcolor} is "black".
6800
6801 @item shadowx
6802 @item shadowy
6803 The x and y offsets for the text shadow position with respect to the
6804 position of the text. They can be either positive or negative
6805 values. The default value for both is "0".
6806
6807 @item start_number
6808 The starting frame number for the n/frame_num variable. The default value
6809 is "0".
6810
6811 @item tabsize
6812 The size in number of spaces to use for rendering the tab.
6813 Default value is 4.
6814
6815 @item timecode
6816 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
6817 format. It can be used with or without text parameter. @var{timecode_rate}
6818 option must be specified.
6819
6820 @item timecode_rate, rate, r
6821 Set the timecode frame rate (timecode only).
6822
6823 @item text
6824 The text string to be drawn. The text must be a sequence of UTF-8
6825 encoded characters.
6826 This parameter is mandatory if no file is specified with the parameter
6827 @var{textfile}.
6828
6829 @item textfile
6830 A text file containing text to be drawn. The text must be a sequence
6831 of UTF-8 encoded characters.
6832
6833 This parameter is mandatory if no text string is specified with the
6834 parameter @var{text}.
6835
6836 If both @var{text} and @var{textfile} are specified, an error is thrown.
6837
6838 @item reload
6839 If set to 1, the @var{textfile} will be reloaded before each frame.
6840 Be sure to update it atomically, or it may be read partially, or even fail.
6841
6842 @item x
6843 @item y
6844 The expressions which specify the offsets where text will be drawn
6845 within the video frame. They are relative to the top/left border of the
6846 output image.
6847
6848 The default value of @var{x} and @var{y} is "0".
6849
6850 See below for the list of accepted constants and functions.
6851 @end table
6852
6853 The parameters for @var{x} and @var{y} are expressions containing the
6854 following constants and functions:
6855
6856 @table @option
6857 @item dar
6858 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
6859
6860 @item hsub
6861 @item vsub
6862 horizontal and vertical chroma subsample values. For example for the
6863 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6864
6865 @item line_h, lh
6866 the height of each text line
6867
6868 @item main_h, h, H
6869 the input height
6870
6871 @item main_w, w, W
6872 the input width
6873
6874 @item max_glyph_a, ascent
6875 the maximum distance from the baseline to the highest/upper grid
6876 coordinate used to place a glyph outline point, for all the rendered
6877 glyphs.
6878 It is a positive value, due to the grid's orientation with the Y axis
6879 upwards.
6880
6881 @item max_glyph_d, descent
6882 the maximum distance from the baseline to the lowest grid coordinate
6883 used to place a glyph outline point, for all the rendered glyphs.
6884 This is a negative value, due to the grid's orientation, with the Y axis
6885 upwards.
6886
6887 @item max_glyph_h
6888 maximum glyph height, that is the maximum height for all the glyphs
6889 contained in the rendered text, it is equivalent to @var{ascent} -
6890 @var{descent}.
6891
6892 @item max_glyph_w
6893 maximum glyph width, that is the maximum width for all the glyphs
6894 contained in the rendered text
6895
6896 @item n
6897 the number of input frame, starting from 0
6898
6899 @item rand(min, max)
6900 return a random number included between @var{min} and @var{max}
6901
6902 @item sar
6903 The input sample aspect ratio.
6904
6905 @item t
6906 timestamp expressed in seconds, NAN if the input timestamp is unknown
6907
6908 @item text_h, th
6909 the height of the rendered text
6910
6911 @item text_w, tw
6912 the width of the rendered text
6913
6914 @item x
6915 @item y
6916 the x and y offset coordinates where the text is drawn.
6917
6918 These parameters allow the @var{x} and @var{y} expressions to refer
6919 each other, so you can for example specify @code{y=x/dar}.
6920 @end table
6921
6922 @anchor{drawtext_expansion}
6923 @subsection Text expansion
6924
6925 If @option{expansion} is set to @code{strftime},
6926 the filter recognizes strftime() sequences in the provided text and
6927 expands them accordingly. Check the documentation of strftime(). This
6928 feature is deprecated.
6929
6930 If @option{expansion} is set to @code{none}, the text is printed verbatim.
6931
6932 If @option{expansion} is set to @code{normal} (which is the default),
6933 the following expansion mechanism is used.
6934
6935 The backslash character @samp{\}, followed by any character, always expands to
6936 the second character.
6937
6938 Sequences of the form @code{%@{...@}} are expanded. The text between the
6939 braces is a function name, possibly followed by arguments separated by ':'.
6940 If the arguments contain special characters or delimiters (':' or '@}'),
6941 they should be escaped.
6942
6943 Note that they probably must also be escaped as the value for the
6944 @option{text} option in the filter argument string and as the filter
6945 argument in the filtergraph description, and possibly also for the shell,
6946 that makes up to four levels of escaping; using a text file avoids these
6947 problems.
6948
6949 The following functions are available:
6950
6951 @table @command
6952
6953 @item expr, e
6954 The expression evaluation result.
6955
6956 It must take one argument specifying the expression to be evaluated,
6957 which accepts the same constants and functions as the @var{x} and
6958 @var{y} values. Note that not all constants should be used, for
6959 example the text size is not known when evaluating the expression, so
6960 the constants @var{text_w} and @var{text_h} will have an undefined
6961 value.
6962
6963 @item expr_int_format, eif
6964 Evaluate the expression's value and output as formatted integer.
6965
6966 The first argument is the expression to be evaluated, just as for the @var{expr} function.
6967 The second argument specifies the output format. Allowed values are @samp{x},
6968 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
6969 @code{printf} function.
6970 The third parameter is optional and sets the number of positions taken by the output.
6971 It can be used to add padding with zeros from the left.
6972
6973 @item gmtime
6974 The time at which the filter is running, expressed in UTC.
6975 It can accept an argument: a strftime() format string.
6976
6977 @item localtime
6978 The time at which the filter is running, expressed in the local time zone.
6979 It can accept an argument: a strftime() format string.
6980
6981 @item metadata
6982 Frame metadata. Takes one or two arguments.
6983
6984 The first argument is mandatory and specifies the metadata key.
6985
6986 The second argument is optional and specifies a default value, used when the
6987 metadata key is not found or empty.
6988
6989 @item n, frame_num
6990 The frame number, starting from 0.
6991
6992 @item pict_type
6993 A 1 character description of the current picture type.
6994
6995 @item pts
6996 The timestamp of the current frame.
6997 It can take up to three arguments.
6998
6999 The first argument is the format of the timestamp; it defaults to @code{flt}
7000 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
7001 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
7002 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
7003 @code{localtime} stands for the timestamp of the frame formatted as
7004 local time zone time.
7005
7006 The second argument is an offset added to the timestamp.
7007
7008 If the format is set to @code{localtime} or @code{gmtime},
7009 a third argument may be supplied: a strftime() format string.
7010 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
7011 @end table
7012
7013 @subsection Examples
7014
7015 @itemize
7016 @item
7017 Draw "Test Text" with font FreeSerif, using the default values for the
7018 optional parameters.
7019
7020 @example
7021 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
7022 @end example
7023
7024 @item
7025 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
7026 and y=50 (counting from the top-left corner of the screen), text is
7027 yellow with a red box around it. Both the text and the box have an
7028 opacity of 20%.
7029
7030 @example
7031 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
7032           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
7033 @end example
7034
7035 Note that the double quotes are not necessary if spaces are not used
7036 within the parameter list.
7037
7038 @item
7039 Show the text at the center of the video frame:
7040 @example
7041 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
7042 @end example
7043
7044 @item
7045 Show the text at a random position, switching to a new position every 30 seconds:
7046 @example
7047 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)"
7048 @end example
7049
7050 @item
7051 Show a text line sliding from right to left in the last row of the video
7052 frame. The file @file{LONG_LINE} is assumed to contain a single line
7053 with no newlines.
7054 @example
7055 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
7056 @end example
7057
7058 @item
7059 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
7060 @example
7061 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
7062 @end example
7063
7064 @item
7065 Draw a single green letter "g", at the center of the input video.
7066 The glyph baseline is placed at half screen height.
7067 @example
7068 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
7069 @end example
7070
7071 @item
7072 Show text for 1 second every 3 seconds:
7073 @example
7074 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
7075 @end example
7076
7077 @item
7078 Use fontconfig to set the font. Note that the colons need to be escaped.
7079 @example
7080 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
7081 @end example
7082
7083 @item
7084 Print the date of a real-time encoding (see strftime(3)):
7085 @example
7086 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
7087 @end example
7088
7089 @item
7090 Show text fading in and out (appearing/disappearing):
7091 @example
7092 #!/bin/sh
7093 DS=1.0 # display start
7094 DE=10.0 # display end
7095 FID=1.5 # fade in duration
7096 FOD=5 # fade out duration
7097 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 @}"
7098 @end example
7099
7100 @end itemize
7101
7102 For more information about libfreetype, check:
7103 @url{http://www.freetype.org/}.
7104
7105 For more information about fontconfig, check:
7106 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
7107
7108 For more information about libfribidi, check:
7109 @url{http://fribidi.org/}.
7110
7111 @section edgedetect
7112
7113 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
7114
7115 The filter accepts the following options:
7116
7117 @table @option
7118 @item low
7119 @item high
7120 Set low and high threshold values used by the Canny thresholding
7121 algorithm.
7122
7123 The high threshold selects the "strong" edge pixels, which are then
7124 connected through 8-connectivity with the "weak" edge pixels selected
7125 by the low threshold.
7126
7127 @var{low} and @var{high} threshold values must be chosen in the range
7128 [0,1], and @var{low} should be lesser or equal to @var{high}.
7129
7130 Default value for @var{low} is @code{20/255}, and default value for @var{high}
7131 is @code{50/255}.
7132
7133 @item mode
7134 Define the drawing mode.
7135
7136 @table @samp
7137 @item wires
7138 Draw white/gray wires on black background.
7139
7140 @item colormix
7141 Mix the colors to create a paint/cartoon effect.
7142 @end table
7143
7144 Default value is @var{wires}.
7145 @end table
7146
7147 @subsection Examples
7148
7149 @itemize
7150 @item
7151 Standard edge detection with custom values for the hysteresis thresholding:
7152 @example
7153 edgedetect=low=0.1:high=0.4
7154 @end example
7155
7156 @item
7157 Painting effect without thresholding:
7158 @example
7159 edgedetect=mode=colormix:high=0
7160 @end example
7161 @end itemize
7162
7163 @section eq
7164 Set brightness, contrast, saturation and approximate gamma adjustment.
7165
7166 The filter accepts the following options:
7167
7168 @table @option
7169 @item contrast
7170 Set the contrast expression. The value must be a float value in range
7171 @code{-2.0} to @code{2.0}. The default value is "1".
7172
7173 @item brightness
7174 Set the brightness expression. The value must be a float value in
7175 range @code{-1.0} to @code{1.0}. The default value is "0".
7176
7177 @item saturation
7178 Set the saturation expression. The value must be a float in
7179 range @code{0.0} to @code{3.0}. The default value is "1".
7180
7181 @item gamma
7182 Set the gamma expression. The value must be a float in range
7183 @code{0.1} to @code{10.0}.  The default value is "1".
7184
7185 @item gamma_r
7186 Set the gamma expression for red. The value must be a float in
7187 range @code{0.1} to @code{10.0}. The default value is "1".
7188
7189 @item gamma_g
7190 Set the gamma expression for green. The value must be a float in range
7191 @code{0.1} to @code{10.0}. The default value is "1".
7192
7193 @item gamma_b
7194 Set the gamma expression for blue. The value must be a float in range
7195 @code{0.1} to @code{10.0}. The default value is "1".
7196
7197 @item gamma_weight
7198 Set the gamma weight expression. It can be used to reduce the effect
7199 of a high gamma value on bright image areas, e.g. keep them from
7200 getting overamplified and just plain white. The value must be a float
7201 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
7202 gamma correction all the way down while @code{1.0} leaves it at its
7203 full strength. Default is "1".
7204
7205 @item eval
7206 Set when the expressions for brightness, contrast, saturation and
7207 gamma expressions are evaluated.
7208
7209 It accepts the following values:
7210 @table @samp
7211 @item init
7212 only evaluate expressions once during the filter initialization or
7213 when a command is processed
7214
7215 @item frame
7216 evaluate expressions for each incoming frame
7217 @end table
7218
7219 Default value is @samp{init}.
7220 @end table
7221
7222 The expressions accept the following parameters:
7223 @table @option
7224 @item n
7225 frame count of the input frame starting from 0
7226
7227 @item pos
7228 byte position of the corresponding packet in the input file, NAN if
7229 unspecified
7230
7231 @item r
7232 frame rate of the input video, NAN if the input frame rate is unknown
7233
7234 @item t
7235 timestamp expressed in seconds, NAN if the input timestamp is unknown
7236 @end table
7237
7238 @subsection Commands
7239 The filter supports the following commands:
7240
7241 @table @option
7242 @item contrast
7243 Set the contrast expression.
7244
7245 @item brightness
7246 Set the brightness expression.
7247
7248 @item saturation
7249 Set the saturation expression.
7250
7251 @item gamma
7252 Set the gamma expression.
7253
7254 @item gamma_r
7255 Set the gamma_r expression.
7256
7257 @item gamma_g
7258 Set gamma_g expression.
7259
7260 @item gamma_b
7261 Set gamma_b expression.
7262
7263 @item gamma_weight
7264 Set gamma_weight expression.
7265
7266 The command accepts the same syntax of the corresponding option.
7267
7268 If the specified expression is not valid, it is kept at its current
7269 value.
7270
7271 @end table
7272
7273 @section erosion
7274
7275 Apply erosion effect to the video.
7276
7277 This filter replaces the pixel by the local(3x3) minimum.
7278
7279 It accepts the following options:
7280
7281 @table @option
7282 @item threshold0
7283 @item threshold1
7284 @item threshold2
7285 @item threshold3
7286 Limit the maximum change for each plane, default is 65535.
7287 If 0, plane will remain unchanged.
7288
7289 @item coordinates
7290 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
7291 pixels are used.
7292
7293 Flags to local 3x3 coordinates maps like this:
7294
7295     1 2 3
7296     4   5
7297     6 7 8
7298 @end table
7299
7300 @section extractplanes
7301
7302 Extract color channel components from input video stream into
7303 separate grayscale video streams.
7304
7305 The filter accepts the following option:
7306
7307 @table @option
7308 @item planes
7309 Set plane(s) to extract.
7310
7311 Available values for planes are:
7312 @table @samp
7313 @item y
7314 @item u
7315 @item v
7316 @item a
7317 @item r
7318 @item g
7319 @item b
7320 @end table
7321
7322 Choosing planes not available in the input will result in an error.
7323 That means you cannot select @code{r}, @code{g}, @code{b} planes
7324 with @code{y}, @code{u}, @code{v} planes at same time.
7325 @end table
7326
7327 @subsection Examples
7328
7329 @itemize
7330 @item
7331 Extract luma, u and v color channel component from input video frame
7332 into 3 grayscale outputs:
7333 @example
7334 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
7335 @end example
7336 @end itemize
7337
7338 @section elbg
7339
7340 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
7341
7342 For each input image, the filter will compute the optimal mapping from
7343 the input to the output given the codebook length, that is the number
7344 of distinct output colors.
7345
7346 This filter accepts the following options.
7347
7348 @table @option
7349 @item codebook_length, l
7350 Set codebook length. The value must be a positive integer, and
7351 represents the number of distinct output colors. Default value is 256.
7352
7353 @item nb_steps, n
7354 Set the maximum number of iterations to apply for computing the optimal
7355 mapping. The higher the value the better the result and the higher the
7356 computation time. Default value is 1.
7357
7358 @item seed, s
7359 Set a random seed, must be an integer included between 0 and
7360 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
7361 will try to use a good random seed on a best effort basis.
7362
7363 @item pal8
7364 Set pal8 output pixel format. This option does not work with codebook
7365 length greater than 256.
7366 @end table
7367
7368 @section fade
7369
7370 Apply a fade-in/out effect to the input video.
7371
7372 It accepts the following parameters:
7373
7374 @table @option
7375 @item type, t
7376 The effect type can be either "in" for a fade-in, or "out" for a fade-out
7377 effect.
7378 Default is @code{in}.
7379
7380 @item start_frame, s
7381 Specify the number of the frame to start applying the fade
7382 effect at. Default is 0.
7383
7384 @item nb_frames, n
7385 The number of frames that the fade effect lasts. At the end of the
7386 fade-in effect, the output video will have the same intensity as the input video.
7387 At the end of the fade-out transition, the output video will be filled with the
7388 selected @option{color}.
7389 Default is 25.
7390
7391 @item alpha
7392 If set to 1, fade only alpha channel, if one exists on the input.
7393 Default value is 0.
7394
7395 @item start_time, st
7396 Specify the timestamp (in seconds) of the frame to start to apply the fade
7397 effect. If both start_frame and start_time are specified, the fade will start at
7398 whichever comes last.  Default is 0.
7399
7400 @item duration, d
7401 The number of seconds for which the fade effect has to last. At the end of the
7402 fade-in effect the output video will have the same intensity as the input video,
7403 at the end of the fade-out transition the output video will be filled with the
7404 selected @option{color}.
7405 If both duration and nb_frames are specified, duration is used. Default is 0
7406 (nb_frames is used by default).
7407
7408 @item color, c
7409 Specify the color of the fade. Default is "black".
7410 @end table
7411
7412 @subsection Examples
7413
7414 @itemize
7415 @item
7416 Fade in the first 30 frames of video:
7417 @example
7418 fade=in:0:30
7419 @end example
7420
7421 The command above is equivalent to:
7422 @example
7423 fade=t=in:s=0:n=30
7424 @end example
7425
7426 @item
7427 Fade out the last 45 frames of a 200-frame video:
7428 @example
7429 fade=out:155:45
7430 fade=type=out:start_frame=155:nb_frames=45
7431 @end example
7432
7433 @item
7434 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
7435 @example
7436 fade=in:0:25, fade=out:975:25
7437 @end example
7438
7439 @item
7440 Make the first 5 frames yellow, then fade in from frame 5-24:
7441 @example
7442 fade=in:5:20:color=yellow
7443 @end example
7444
7445 @item
7446 Fade in alpha over first 25 frames of video:
7447 @example
7448 fade=in:0:25:alpha=1
7449 @end example
7450
7451 @item
7452 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
7453 @example
7454 fade=t=in:st=5.5:d=0.5
7455 @end example
7456
7457 @end itemize
7458
7459 @section fftfilt
7460 Apply arbitrary expressions to samples in frequency domain
7461
7462 @table @option
7463 @item dc_Y
7464 Adjust the dc value (gain) of the luma plane of the image. The filter
7465 accepts an integer value in range @code{0} to @code{1000}. The default
7466 value is set to @code{0}.
7467
7468 @item dc_U
7469 Adjust the dc value (gain) of the 1st chroma plane of the image. The
7470 filter accepts an integer value in range @code{0} to @code{1000}. The
7471 default value is set to @code{0}.
7472
7473 @item dc_V
7474 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
7475 filter accepts an integer value in range @code{0} to @code{1000}. The
7476 default value is set to @code{0}.
7477
7478 @item weight_Y
7479 Set the frequency domain weight expression for the luma plane.
7480
7481 @item weight_U
7482 Set the frequency domain weight expression for the 1st chroma plane.
7483
7484 @item weight_V
7485 Set the frequency domain weight expression for the 2nd chroma plane.
7486
7487 The filter accepts the following variables:
7488 @item X
7489 @item Y
7490 The coordinates of the current sample.
7491
7492 @item W
7493 @item H
7494 The width and height of the image.
7495 @end table
7496
7497 @subsection Examples
7498
7499 @itemize
7500 @item
7501 High-pass:
7502 @example
7503 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
7504 @end example
7505
7506 @item
7507 Low-pass:
7508 @example
7509 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
7510 @end example
7511
7512 @item
7513 Sharpen:
7514 @example
7515 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
7516 @end example
7517
7518 @item
7519 Blur:
7520 @example
7521 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
7522 @end example
7523
7524 @end itemize
7525
7526 @section field
7527
7528 Extract a single field from an interlaced image using stride
7529 arithmetic to avoid wasting CPU time. The output frames are marked as
7530 non-interlaced.
7531
7532 The filter accepts the following options:
7533
7534 @table @option
7535 @item type
7536 Specify whether to extract the top (if the value is @code{0} or
7537 @code{top}) or the bottom field (if the value is @code{1} or
7538 @code{bottom}).
7539 @end table
7540
7541 @section fieldhint
7542
7543 Create new frames by copying the top and bottom fields from surrounding frames
7544 supplied as numbers by the hint file.
7545
7546 @table @option
7547 @item hint
7548 Set file containing hints: absolute/relative frame numbers.
7549
7550 There must be one line for each frame in a clip. Each line must contain two
7551 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
7552 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
7553 is current frame number for @code{absolute} mode or out of [-1, 1] range
7554 for @code{relative} mode. First number tells from which frame to pick up top
7555 field and second number tells from which frame to pick up bottom field.
7556
7557 If optionally followed by @code{+} output frame will be marked as interlaced,
7558 else if followed by @code{-} output frame will be marked as progressive, else
7559 it will be marked same as input frame.
7560 If line starts with @code{#} or @code{;} that line is skipped.
7561
7562 @item mode
7563 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
7564 @end table
7565
7566 Example of first several lines of @code{hint} file for @code{relative} mode:
7567 @example
7568 0,0 - # first frame
7569 1,0 - # second frame, use third's frame top field and second's frame bottom field
7570 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
7571 1,0 -
7572 0,0 -
7573 0,0 -
7574 1,0 -
7575 1,0 -
7576 1,0 -
7577 0,0 -
7578 0,0 -
7579 1,0 -
7580 1,0 -
7581 1,0 -
7582 0,0 -
7583 @end example
7584
7585 @section fieldmatch
7586
7587 Field matching filter for inverse telecine. It is meant to reconstruct the
7588 progressive frames from a telecined stream. The filter does not drop duplicated
7589 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
7590 followed by a decimation filter such as @ref{decimate} in the filtergraph.
7591
7592 The separation of the field matching and the decimation is notably motivated by
7593 the possibility of inserting a de-interlacing filter fallback between the two.
7594 If the source has mixed telecined and real interlaced content,
7595 @code{fieldmatch} will not be able to match fields for the interlaced parts.
7596 But these remaining combed frames will be marked as interlaced, and thus can be
7597 de-interlaced by a later filter such as @ref{yadif} before decimation.
7598
7599 In addition to the various configuration options, @code{fieldmatch} can take an
7600 optional second stream, activated through the @option{ppsrc} option. If
7601 enabled, the frames reconstruction will be based on the fields and frames from
7602 this second stream. This allows the first input to be pre-processed in order to
7603 help the various algorithms of the filter, while keeping the output lossless
7604 (assuming the fields are matched properly). Typically, a field-aware denoiser,
7605 or brightness/contrast adjustments can help.
7606
7607 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
7608 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
7609 which @code{fieldmatch} is based on. While the semantic and usage are very
7610 close, some behaviour and options names can differ.
7611
7612 The @ref{decimate} filter currently only works for constant frame rate input.
7613 If your input has mixed telecined (30fps) and progressive content with a lower
7614 framerate like 24fps use the following filterchain to produce the necessary cfr
7615 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
7616
7617 The filter accepts the following options:
7618
7619 @table @option
7620 @item order
7621 Specify the assumed field order of the input stream. Available values are:
7622
7623 @table @samp
7624 @item auto
7625 Auto detect parity (use FFmpeg's internal parity value).
7626 @item bff
7627 Assume bottom field first.
7628 @item tff
7629 Assume top field first.
7630 @end table
7631
7632 Note that it is sometimes recommended not to trust the parity announced by the
7633 stream.
7634
7635 Default value is @var{auto}.
7636
7637 @item mode
7638 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
7639 sense that it won't risk creating jerkiness due to duplicate frames when
7640 possible, but if there are bad edits or blended fields it will end up
7641 outputting combed frames when a good match might actually exist. On the other
7642 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
7643 but will almost always find a good frame if there is one. The other values are
7644 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
7645 jerkiness and creating duplicate frames versus finding good matches in sections
7646 with bad edits, orphaned fields, blended fields, etc.
7647
7648 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
7649
7650 Available values are:
7651
7652 @table @samp
7653 @item pc
7654 2-way matching (p/c)
7655 @item pc_n
7656 2-way matching, and trying 3rd match if still combed (p/c + n)
7657 @item pc_u
7658 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
7659 @item pc_n_ub
7660 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
7661 still combed (p/c + n + u/b)
7662 @item pcn
7663 3-way matching (p/c/n)
7664 @item pcn_ub
7665 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
7666 detected as combed (p/c/n + u/b)
7667 @end table
7668
7669 The parenthesis at the end indicate the matches that would be used for that
7670 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
7671 @var{top}).
7672
7673 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
7674 the slowest.
7675
7676 Default value is @var{pc_n}.
7677
7678 @item ppsrc
7679 Mark the main input stream as a pre-processed input, and enable the secondary
7680 input stream as the clean source to pick the fields from. See the filter
7681 introduction for more details. It is similar to the @option{clip2} feature from
7682 VFM/TFM.
7683
7684 Default value is @code{0} (disabled).
7685
7686 @item field
7687 Set the field to match from. It is recommended to set this to the same value as
7688 @option{order} unless you experience matching failures with that setting. In
7689 certain circumstances changing the field that is used to match from can have a
7690 large impact on matching performance. Available values are:
7691
7692 @table @samp
7693 @item auto
7694 Automatic (same value as @option{order}).
7695 @item bottom
7696 Match from the bottom field.
7697 @item top
7698 Match from the top field.
7699 @end table
7700
7701 Default value is @var{auto}.
7702
7703 @item mchroma
7704 Set whether or not chroma is included during the match comparisons. In most
7705 cases it is recommended to leave this enabled. You should set this to @code{0}
7706 only if your clip has bad chroma problems such as heavy rainbowing or other
7707 artifacts. Setting this to @code{0} could also be used to speed things up at
7708 the cost of some accuracy.
7709
7710 Default value is @code{1}.
7711
7712 @item y0
7713 @item y1
7714 These define an exclusion band which excludes the lines between @option{y0} and
7715 @option{y1} from being included in the field matching decision. An exclusion
7716 band can be used to ignore subtitles, a logo, or other things that may
7717 interfere with the matching. @option{y0} sets the starting scan line and
7718 @option{y1} sets the ending line; all lines in between @option{y0} and
7719 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
7720 @option{y0} and @option{y1} to the same value will disable the feature.
7721 @option{y0} and @option{y1} defaults to @code{0}.
7722
7723 @item scthresh
7724 Set the scene change detection threshold as a percentage of maximum change on
7725 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
7726 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
7727 @option{scthresh} is @code{[0.0, 100.0]}.
7728
7729 Default value is @code{12.0}.
7730
7731 @item combmatch
7732 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
7733 account the combed scores of matches when deciding what match to use as the
7734 final match. Available values are:
7735
7736 @table @samp
7737 @item none
7738 No final matching based on combed scores.
7739 @item sc
7740 Combed scores are only used when a scene change is detected.
7741 @item full
7742 Use combed scores all the time.
7743 @end table
7744
7745 Default is @var{sc}.
7746
7747 @item combdbg
7748 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
7749 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
7750 Available values are:
7751
7752 @table @samp
7753 @item none
7754 No forced calculation.
7755 @item pcn
7756 Force p/c/n calculations.
7757 @item pcnub
7758 Force p/c/n/u/b calculations.
7759 @end table
7760
7761 Default value is @var{none}.
7762
7763 @item cthresh
7764 This is the area combing threshold used for combed frame detection. This
7765 essentially controls how "strong" or "visible" combing must be to be detected.
7766 Larger values mean combing must be more visible and smaller values mean combing
7767 can be less visible or strong and still be detected. Valid settings are from
7768 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
7769 be detected as combed). This is basically a pixel difference value. A good
7770 range is @code{[8, 12]}.
7771
7772 Default value is @code{9}.
7773
7774 @item chroma
7775 Sets whether or not chroma is considered in the combed frame decision.  Only
7776 disable this if your source has chroma problems (rainbowing, etc.) that are
7777 causing problems for the combed frame detection with chroma enabled. Actually,
7778 using @option{chroma}=@var{0} is usually more reliable, except for the case
7779 where there is chroma only combing in the source.
7780
7781 Default value is @code{0}.
7782
7783 @item blockx
7784 @item blocky
7785 Respectively set the x-axis and y-axis size of the window used during combed
7786 frame detection. This has to do with the size of the area in which
7787 @option{combpel} pixels are required to be detected as combed for a frame to be
7788 declared combed. See the @option{combpel} parameter description for more info.
7789 Possible values are any number that is a power of 2 starting at 4 and going up
7790 to 512.
7791
7792 Default value is @code{16}.
7793
7794 @item combpel
7795 The number of combed pixels inside any of the @option{blocky} by
7796 @option{blockx} size blocks on the frame for the frame to be detected as
7797 combed. While @option{cthresh} controls how "visible" the combing must be, this
7798 setting controls "how much" combing there must be in any localized area (a
7799 window defined by the @option{blockx} and @option{blocky} settings) on the
7800 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
7801 which point no frames will ever be detected as combed). This setting is known
7802 as @option{MI} in TFM/VFM vocabulary.
7803
7804 Default value is @code{80}.
7805 @end table
7806
7807 @anchor{p/c/n/u/b meaning}
7808 @subsection p/c/n/u/b meaning
7809
7810 @subsubsection p/c/n
7811
7812 We assume the following telecined stream:
7813
7814 @example
7815 Top fields:     1 2 2 3 4
7816 Bottom fields:  1 2 3 4 4
7817 @end example
7818
7819 The numbers correspond to the progressive frame the fields relate to. Here, the
7820 first two frames are progressive, the 3rd and 4th are combed, and so on.
7821
7822 When @code{fieldmatch} is configured to run a matching from bottom
7823 (@option{field}=@var{bottom}) this is how this input stream get transformed:
7824
7825 @example
7826 Input stream:
7827                 T     1 2 2 3 4
7828                 B     1 2 3 4 4   <-- matching reference
7829
7830 Matches:              c c n n c
7831
7832 Output stream:
7833                 T     1 2 3 4 4
7834                 B     1 2 3 4 4
7835 @end example
7836
7837 As a result of the field matching, we can see that some frames get duplicated.
7838 To perform a complete inverse telecine, you need to rely on a decimation filter
7839 after this operation. See for instance the @ref{decimate} filter.
7840
7841 The same operation now matching from top fields (@option{field}=@var{top})
7842 looks like this:
7843
7844 @example
7845 Input stream:
7846                 T     1 2 2 3 4   <-- matching reference
7847                 B     1 2 3 4 4
7848
7849 Matches:              c c p p c
7850
7851 Output stream:
7852                 T     1 2 2 3 4
7853                 B     1 2 2 3 4
7854 @end example
7855
7856 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
7857 basically, they refer to the frame and field of the opposite parity:
7858
7859 @itemize
7860 @item @var{p} matches the field of the opposite parity in the previous frame
7861 @item @var{c} matches the field of the opposite parity in the current frame
7862 @item @var{n} matches the field of the opposite parity in the next frame
7863 @end itemize
7864
7865 @subsubsection u/b
7866
7867 The @var{u} and @var{b} matching are a bit special in the sense that they match
7868 from the opposite parity flag. In the following examples, we assume that we are
7869 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
7870 'x' is placed above and below each matched fields.
7871
7872 With bottom matching (@option{field}=@var{bottom}):
7873 @example
7874 Match:           c         p           n          b          u
7875
7876                  x       x               x        x          x
7877   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
7878   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
7879                  x         x           x        x              x
7880
7881 Output frames:
7882                  2          1          2          2          2
7883                  2          2          2          1          3
7884 @end example
7885
7886 With top matching (@option{field}=@var{top}):
7887 @example
7888 Match:           c         p           n          b          u
7889
7890                  x         x           x        x              x
7891   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
7892   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
7893                  x       x               x        x          x
7894
7895 Output frames:
7896                  2          2          2          1          2
7897                  2          1          3          2          2
7898 @end example
7899
7900 @subsection Examples
7901
7902 Simple IVTC of a top field first telecined stream:
7903 @example
7904 fieldmatch=order=tff:combmatch=none, decimate
7905 @end example
7906
7907 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
7908 @example
7909 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
7910 @end example
7911
7912 @section fieldorder
7913
7914 Transform the field order of the input video.
7915
7916 It accepts the following parameters:
7917
7918 @table @option
7919
7920 @item order
7921 The output field order. Valid values are @var{tff} for top field first or @var{bff}
7922 for bottom field first.
7923 @end table
7924
7925 The default value is @samp{tff}.
7926
7927 The transformation is done by shifting the picture content up or down
7928 by one line, and filling the remaining line with appropriate picture content.
7929 This method is consistent with most broadcast field order converters.
7930
7931 If the input video is not flagged as being interlaced, or it is already
7932 flagged as being of the required output field order, then this filter does
7933 not alter the incoming video.
7934
7935 It is very useful when converting to or from PAL DV material,
7936 which is bottom field first.
7937
7938 For example:
7939 @example
7940 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
7941 @end example
7942
7943 @section fifo, afifo
7944
7945 Buffer input images and send them when they are requested.
7946
7947 It is mainly useful when auto-inserted by the libavfilter
7948 framework.
7949
7950 It does not take parameters.
7951
7952 @section find_rect
7953
7954 Find a rectangular object
7955
7956 It accepts the following options:
7957
7958 @table @option
7959 @item object
7960 Filepath of the object image, needs to be in gray8.
7961
7962 @item threshold
7963 Detection threshold, default is 0.5.
7964
7965 @item mipmaps
7966 Number of mipmaps, default is 3.
7967
7968 @item xmin, ymin, xmax, ymax
7969 Specifies the rectangle in which to search.
7970 @end table
7971
7972 @subsection Examples
7973
7974 @itemize
7975 @item
7976 Generate a representative palette of a given video using @command{ffmpeg}:
7977 @example
7978 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
7979 @end example
7980 @end itemize
7981
7982 @section cover_rect
7983
7984 Cover a rectangular object
7985
7986 It accepts the following options:
7987
7988 @table @option
7989 @item cover
7990 Filepath of the optional cover image, needs to be in yuv420.
7991
7992 @item mode
7993 Set covering mode.
7994
7995 It accepts the following values:
7996 @table @samp
7997 @item cover
7998 cover it by the supplied image
7999 @item blur
8000 cover it by interpolating the surrounding pixels
8001 @end table
8002
8003 Default value is @var{blur}.
8004 @end table
8005
8006 @subsection Examples
8007
8008 @itemize
8009 @item
8010 Generate a representative palette of a given video using @command{ffmpeg}:
8011 @example
8012 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8013 @end example
8014 @end itemize
8015
8016 @anchor{format}
8017 @section format
8018
8019 Convert the input video to one of the specified pixel formats.
8020 Libavfilter will try to pick one that is suitable as input to
8021 the next filter.
8022
8023 It accepts the following parameters:
8024 @table @option
8025
8026 @item pix_fmts
8027 A '|'-separated list of pixel format names, such as
8028 "pix_fmts=yuv420p|monow|rgb24".
8029
8030 @end table
8031
8032 @subsection Examples
8033
8034 @itemize
8035 @item
8036 Convert the input video to the @var{yuv420p} format
8037 @example
8038 format=pix_fmts=yuv420p
8039 @end example
8040
8041 Convert the input video to any of the formats in the list
8042 @example
8043 format=pix_fmts=yuv420p|yuv444p|yuv410p
8044 @end example
8045 @end itemize
8046
8047 @anchor{fps}
8048 @section fps
8049
8050 Convert the video to specified constant frame rate by duplicating or dropping
8051 frames as necessary.
8052
8053 It accepts the following parameters:
8054 @table @option
8055
8056 @item fps
8057 The desired output frame rate. The default is @code{25}.
8058
8059 @item round
8060 Rounding method.
8061
8062 Possible values are:
8063 @table @option
8064 @item zero
8065 zero round towards 0
8066 @item inf
8067 round away from 0
8068 @item down
8069 round towards -infinity
8070 @item up
8071 round towards +infinity
8072 @item near
8073 round to nearest
8074 @end table
8075 The default is @code{near}.
8076
8077 @item start_time
8078 Assume the first PTS should be the given value, in seconds. This allows for
8079 padding/trimming at the start of stream. By default, no assumption is made
8080 about the first frame's expected PTS, so no padding or trimming is done.
8081 For example, this could be set to 0 to pad the beginning with duplicates of
8082 the first frame if a video stream starts after the audio stream or to trim any
8083 frames with a negative PTS.
8084
8085 @end table
8086
8087 Alternatively, the options can be specified as a flat string:
8088 @var{fps}[:@var{round}].
8089
8090 See also the @ref{setpts} filter.
8091
8092 @subsection Examples
8093
8094 @itemize
8095 @item
8096 A typical usage in order to set the fps to 25:
8097 @example
8098 fps=fps=25
8099 @end example
8100
8101 @item
8102 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
8103 @example
8104 fps=fps=film:round=near
8105 @end example
8106 @end itemize
8107
8108 @section framepack
8109
8110 Pack two different video streams into a stereoscopic video, setting proper
8111 metadata on supported codecs. The two views should have the same size and
8112 framerate and processing will stop when the shorter video ends. Please note
8113 that you may conveniently adjust view properties with the @ref{scale} and
8114 @ref{fps} filters.
8115
8116 It accepts the following parameters:
8117 @table @option
8118
8119 @item format
8120 The desired packing format. Supported values are:
8121
8122 @table @option
8123
8124 @item sbs
8125 The views are next to each other (default).
8126
8127 @item tab
8128 The views are on top of each other.
8129
8130 @item lines
8131 The views are packed by line.
8132
8133 @item columns
8134 The views are packed by column.
8135
8136 @item frameseq
8137 The views are temporally interleaved.
8138
8139 @end table
8140
8141 @end table
8142
8143 Some examples:
8144
8145 @example
8146 # Convert left and right views into a frame-sequential video
8147 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
8148
8149 # Convert views into a side-by-side video with the same output resolution as the input
8150 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
8151 @end example
8152
8153 @section framerate
8154
8155 Change the frame rate by interpolating new video output frames from the source
8156 frames.
8157
8158 This filter is not designed to function correctly with interlaced media. If
8159 you wish to change the frame rate of interlaced media then you are required
8160 to deinterlace before this filter and re-interlace after this filter.
8161
8162 A description of the accepted options follows.
8163
8164 @table @option
8165 @item fps
8166 Specify the output frames per second. This option can also be specified
8167 as a value alone. The default is @code{50}.
8168
8169 @item interp_start
8170 Specify the start of a range where the output frame will be created as a
8171 linear interpolation of two frames. The range is [@code{0}-@code{255}],
8172 the default is @code{15}.
8173
8174 @item interp_end
8175 Specify the end of a range where the output frame will be created as a
8176 linear interpolation of two frames. The range is [@code{0}-@code{255}],
8177 the default is @code{240}.
8178
8179 @item scene
8180 Specify the level at which a scene change is detected as a value between
8181 0 and 100 to indicate a new scene; a low value reflects a low
8182 probability for the current frame to introduce a new scene, while a higher
8183 value means the current frame is more likely to be one.
8184 The default is @code{7}.
8185
8186 @item flags
8187 Specify flags influencing the filter process.
8188
8189 Available value for @var{flags} is:
8190
8191 @table @option
8192 @item scene_change_detect, scd
8193 Enable scene change detection using the value of the option @var{scene}.
8194 This flag is enabled by default.
8195 @end table
8196 @end table
8197
8198 @section framestep
8199
8200 Select one frame every N-th frame.
8201
8202 This filter accepts the following option:
8203 @table @option
8204 @item step
8205 Select frame after every @code{step} frames.
8206 Allowed values are positive integers higher than 0. Default value is @code{1}.
8207 @end table
8208
8209 @anchor{frei0r}
8210 @section frei0r
8211
8212 Apply a frei0r effect to the input video.
8213
8214 To enable the compilation of this filter, you need to install the frei0r
8215 header and configure FFmpeg with @code{--enable-frei0r}.
8216
8217 It accepts the following parameters:
8218
8219 @table @option
8220
8221 @item filter_name
8222 The name of the frei0r effect to load. If the environment variable
8223 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
8224 directories specified by the colon-separated list in @env{FREIOR_PATH}.
8225 Otherwise, the standard frei0r paths are searched, in this order:
8226 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
8227 @file{/usr/lib/frei0r-1/}.
8228
8229 @item filter_params
8230 A '|'-separated list of parameters to pass to the frei0r effect.
8231
8232 @end table
8233
8234 A frei0r effect parameter can be a boolean (its value is either
8235 "y" or "n"), a double, a color (specified as
8236 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
8237 numbers between 0.0 and 1.0, inclusive) or by a color description specified in the "Color"
8238 section in the ffmpeg-utils manual), a position (specified as @var{X}/@var{Y}, where
8239 @var{X} and @var{Y} are floating point numbers) and/or a string.
8240
8241 The number and types of parameters depend on the loaded effect. If an
8242 effect parameter is not specified, the default value is set.
8243
8244 @subsection Examples
8245
8246 @itemize
8247 @item
8248 Apply the distort0r effect, setting the first two double parameters:
8249 @example
8250 frei0r=filter_name=distort0r:filter_params=0.5|0.01
8251 @end example
8252
8253 @item
8254 Apply the colordistance effect, taking a color as the first parameter:
8255 @example
8256 frei0r=colordistance:0.2/0.3/0.4
8257 frei0r=colordistance:violet
8258 frei0r=colordistance:0x112233
8259 @end example
8260
8261 @item
8262 Apply the perspective effect, specifying the top left and top right image
8263 positions:
8264 @example
8265 frei0r=perspective:0.2/0.2|0.8/0.2
8266 @end example
8267 @end itemize
8268
8269 For more information, see
8270 @url{http://frei0r.dyne.org}
8271
8272 @section fspp
8273
8274 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
8275
8276 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
8277 processing filter, one of them is performed once per block, not per pixel.
8278 This allows for much higher speed.
8279
8280 The filter accepts the following options:
8281
8282 @table @option
8283 @item quality
8284 Set quality. This option defines the number of levels for averaging. It accepts
8285 an integer in the range 4-5. Default value is @code{4}.
8286
8287 @item qp
8288 Force a constant quantization parameter. It accepts an integer in range 0-63.
8289 If not set, the filter will use the QP from the video stream (if available).
8290
8291 @item strength
8292 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
8293 more details but also more artifacts, while higher values make the image smoother
8294 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
8295
8296 @item use_bframe_qp
8297 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
8298 option may cause flicker since the B-Frames have often larger QP. Default is
8299 @code{0} (not enabled).
8300
8301 @end table
8302
8303 @section gblur
8304
8305 Apply Gaussian blur filter.
8306
8307 The filter accepts the following options:
8308
8309 @table @option
8310 @item sigma
8311 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
8312
8313 @item steps
8314 Set number of steps for Gaussian approximation. Defauls is @code{1}.
8315
8316 @item planes
8317 Set which planes to filter. By default all planes are filtered.
8318
8319 @item sigmaV
8320 Set vertical sigma, if negative it will be same as @code{sigma}.
8321 Default is @code{-1}.
8322 @end table
8323
8324 @section geq
8325
8326 The filter accepts the following options:
8327
8328 @table @option
8329 @item lum_expr, lum
8330 Set the luminance expression.
8331 @item cb_expr, cb
8332 Set the chrominance blue expression.
8333 @item cr_expr, cr
8334 Set the chrominance red expression.
8335 @item alpha_expr, a
8336 Set the alpha expression.
8337 @item red_expr, r
8338 Set the red expression.
8339 @item green_expr, g
8340 Set the green expression.
8341 @item blue_expr, b
8342 Set the blue expression.
8343 @end table
8344
8345 The colorspace is selected according to the specified options. If one
8346 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
8347 options is specified, the filter will automatically select a YCbCr
8348 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
8349 @option{blue_expr} options is specified, it will select an RGB
8350 colorspace.
8351
8352 If one of the chrominance expression is not defined, it falls back on the other
8353 one. If no alpha expression is specified it will evaluate to opaque value.
8354 If none of chrominance expressions are specified, they will evaluate
8355 to the luminance expression.
8356
8357 The expressions can use the following variables and functions:
8358
8359 @table @option
8360 @item N
8361 The sequential number of the filtered frame, starting from @code{0}.
8362
8363 @item X
8364 @item Y
8365 The coordinates of the current sample.
8366
8367 @item W
8368 @item H
8369 The width and height of the image.
8370
8371 @item SW
8372 @item SH
8373 Width and height scale depending on the currently filtered plane. It is the
8374 ratio between the corresponding luma plane number of pixels and the current
8375 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
8376 @code{0.5,0.5} for chroma planes.
8377
8378 @item T
8379 Time of the current frame, expressed in seconds.
8380
8381 @item p(x, y)
8382 Return the value of the pixel at location (@var{x},@var{y}) of the current
8383 plane.
8384
8385 @item lum(x, y)
8386 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
8387 plane.
8388
8389 @item cb(x, y)
8390 Return the value of the pixel at location (@var{x},@var{y}) of the
8391 blue-difference chroma plane. Return 0 if there is no such plane.
8392
8393 @item cr(x, y)
8394 Return the value of the pixel at location (@var{x},@var{y}) of the
8395 red-difference chroma plane. Return 0 if there is no such plane.
8396
8397 @item r(x, y)
8398 @item g(x, y)
8399 @item b(x, y)
8400 Return the value of the pixel at location (@var{x},@var{y}) of the
8401 red/green/blue component. Return 0 if there is no such component.
8402
8403 @item alpha(x, y)
8404 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
8405 plane. Return 0 if there is no such plane.
8406 @end table
8407
8408 For functions, if @var{x} and @var{y} are outside the area, the value will be
8409 automatically clipped to the closer edge.
8410
8411 @subsection Examples
8412
8413 @itemize
8414 @item
8415 Flip the image horizontally:
8416 @example
8417 geq=p(W-X\,Y)
8418 @end example
8419
8420 @item
8421 Generate a bidimensional sine wave, with angle @code{PI/3} and a
8422 wavelength of 100 pixels:
8423 @example
8424 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
8425 @end example
8426
8427 @item
8428 Generate a fancy enigmatic moving light:
8429 @example
8430 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
8431 @end example
8432
8433 @item
8434 Generate a quick emboss effect:
8435 @example
8436 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
8437 @end example
8438
8439 @item
8440 Modify RGB components depending on pixel position:
8441 @example
8442 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
8443 @end example
8444
8445 @item
8446 Create a radial gradient that is the same size as the input (also see
8447 the @ref{vignette} filter):
8448 @example
8449 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
8450 @end example
8451 @end itemize
8452
8453 @section gradfun
8454
8455 Fix the banding artifacts that are sometimes introduced into nearly flat
8456 regions by truncation to 8-bit color depth.
8457 Interpolate the gradients that should go where the bands are, and
8458 dither them.
8459
8460 It is designed for playback only.  Do not use it prior to
8461 lossy compression, because compression tends to lose the dither and
8462 bring back the bands.
8463
8464 It accepts the following parameters:
8465
8466 @table @option
8467
8468 @item strength
8469 The maximum amount by which the filter will change any one pixel. This is also
8470 the threshold for detecting nearly flat regions. Acceptable values range from
8471 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
8472 valid range.
8473
8474 @item radius
8475 The neighborhood to fit the gradient to. A larger radius makes for smoother
8476 gradients, but also prevents the filter from modifying the pixels near detailed
8477 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
8478 values will be clipped to the valid range.
8479
8480 @end table
8481
8482 Alternatively, the options can be specified as a flat string:
8483 @var{strength}[:@var{radius}]
8484
8485 @subsection Examples
8486
8487 @itemize
8488 @item
8489 Apply the filter with a @code{3.5} strength and radius of @code{8}:
8490 @example
8491 gradfun=3.5:8
8492 @end example
8493
8494 @item
8495 Specify radius, omitting the strength (which will fall-back to the default
8496 value):
8497 @example
8498 gradfun=radius=8
8499 @end example
8500
8501 @end itemize
8502
8503 @anchor{haldclut}
8504 @section haldclut
8505
8506 Apply a Hald CLUT to a video stream.
8507
8508 First input is the video stream to process, and second one is the Hald CLUT.
8509 The Hald CLUT input can be a simple picture or a complete video stream.
8510
8511 The filter accepts the following options:
8512
8513 @table @option
8514 @item shortest
8515 Force termination when the shortest input terminates. Default is @code{0}.
8516 @item repeatlast
8517 Continue applying the last CLUT after the end of the stream. A value of
8518 @code{0} disable the filter after the last frame of the CLUT is reached.
8519 Default is @code{1}.
8520 @end table
8521
8522 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
8523 filters share the same internals).
8524
8525 More information about the Hald CLUT can be found on Eskil Steenberg's website
8526 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
8527
8528 @subsection Workflow examples
8529
8530 @subsubsection Hald CLUT video stream
8531
8532 Generate an identity Hald CLUT stream altered with various effects:
8533 @example
8534 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
8535 @end example
8536
8537 Note: make sure you use a lossless codec.
8538
8539 Then use it with @code{haldclut} to apply it on some random stream:
8540 @example
8541 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
8542 @end example
8543
8544 The Hald CLUT will be applied to the 10 first seconds (duration of
8545 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
8546 to the remaining frames of the @code{mandelbrot} stream.
8547
8548 @subsubsection Hald CLUT with preview
8549
8550 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
8551 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
8552 biggest possible square starting at the top left of the picture. The remaining
8553 padding pixels (bottom or right) will be ignored. This area can be used to add
8554 a preview of the Hald CLUT.
8555
8556 Typically, the following generated Hald CLUT will be supported by the
8557 @code{haldclut} filter:
8558
8559 @example
8560 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
8561    pad=iw+320 [padded_clut];
8562    smptebars=s=320x256, split [a][b];
8563    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
8564    [main][b] overlay=W-320" -frames:v 1 clut.png
8565 @end example
8566
8567 It contains the original and a preview of the effect of the CLUT: SMPTE color
8568 bars are displayed on the right-top, and below the same color bars processed by
8569 the color changes.
8570
8571 Then, the effect of this Hald CLUT can be visualized with:
8572 @example
8573 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
8574 @end example
8575
8576 @section hflip
8577
8578 Flip the input video horizontally.
8579
8580 For example, to horizontally flip the input video with @command{ffmpeg}:
8581 @example
8582 ffmpeg -i in.avi -vf "hflip" out.avi
8583 @end example
8584
8585 @section histeq
8586 This filter applies a global color histogram equalization on a
8587 per-frame basis.
8588
8589 It can be used to correct video that has a compressed range of pixel
8590 intensities.  The filter redistributes the pixel intensities to
8591 equalize their distribution across the intensity range. It may be
8592 viewed as an "automatically adjusting contrast filter". This filter is
8593 useful only for correcting degraded or poorly captured source
8594 video.
8595
8596 The filter accepts the following options:
8597
8598 @table @option
8599 @item strength
8600 Determine the amount of equalization to be applied.  As the strength
8601 is reduced, the distribution of pixel intensities more-and-more
8602 approaches that of the input frame. The value must be a float number
8603 in the range [0,1] and defaults to 0.200.
8604
8605 @item intensity
8606 Set the maximum intensity that can generated and scale the output
8607 values appropriately.  The strength should be set as desired and then
8608 the intensity can be limited if needed to avoid washing-out. The value
8609 must be a float number in the range [0,1] and defaults to 0.210.
8610
8611 @item antibanding
8612 Set the antibanding level. If enabled the filter will randomly vary
8613 the luminance of output pixels by a small amount to avoid banding of
8614 the histogram. Possible values are @code{none}, @code{weak} or
8615 @code{strong}. It defaults to @code{none}.
8616 @end table
8617
8618 @section histogram
8619
8620 Compute and draw a color distribution histogram for the input video.
8621
8622 The computed histogram is a representation of the color component
8623 distribution in an image.
8624
8625 Standard histogram displays the color components distribution in an image.
8626 Displays color graph for each color component. Shows distribution of
8627 the Y, U, V, A or R, G, B components, depending on input format, in the
8628 current frame. Below each graph a color component scale meter is shown.
8629
8630 The filter accepts the following options:
8631
8632 @table @option
8633 @item level_height
8634 Set height of level. Default value is @code{200}.
8635 Allowed range is [50, 2048].
8636
8637 @item scale_height
8638 Set height of color scale. Default value is @code{12}.
8639 Allowed range is [0, 40].
8640
8641 @item display_mode
8642 Set display mode.
8643 It accepts the following values:
8644 @table @samp
8645 @item parade
8646 Per color component graphs are placed below each other.
8647
8648 @item overlay
8649 Presents information identical to that in the @code{parade}, except
8650 that the graphs representing color components are superimposed directly
8651 over one another.
8652 @end table
8653 Default is @code{parade}.
8654
8655 @item levels_mode
8656 Set mode. Can be either @code{linear}, or @code{logarithmic}.
8657 Default is @code{linear}.
8658
8659 @item components
8660 Set what color components to display.
8661 Default is @code{7}.
8662
8663 @item fgopacity
8664 Set foreground opacity. Default is @code{0.7}.
8665
8666 @item bgopacity
8667 Set background opacity. Default is @code{0.5}.
8668 @end table
8669
8670 @subsection Examples
8671
8672 @itemize
8673
8674 @item
8675 Calculate and draw histogram:
8676 @example
8677 ffplay -i input -vf histogram
8678 @end example
8679
8680 @end itemize
8681
8682 @anchor{hqdn3d}
8683 @section hqdn3d
8684
8685 This is a high precision/quality 3d denoise filter. It aims to reduce
8686 image noise, producing smooth images and making still images really
8687 still. It should enhance compressibility.
8688
8689 It accepts the following optional parameters:
8690
8691 @table @option
8692 @item luma_spatial
8693 A non-negative floating point number which specifies spatial luma strength.
8694 It defaults to 4.0.
8695
8696 @item chroma_spatial
8697 A non-negative floating point number which specifies spatial chroma strength.
8698 It defaults to 3.0*@var{luma_spatial}/4.0.
8699
8700 @item luma_tmp
8701 A floating point number which specifies luma temporal strength. It defaults to
8702 6.0*@var{luma_spatial}/4.0.
8703
8704 @item chroma_tmp
8705 A floating point number which specifies chroma temporal strength. It defaults to
8706 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
8707 @end table
8708
8709 @anchor{hwupload_cuda}
8710 @section hwupload_cuda
8711
8712 Upload system memory frames to a CUDA device.
8713
8714 It accepts the following optional parameters:
8715
8716 @table @option
8717 @item device
8718 The number of the CUDA device to use
8719 @end table
8720
8721 @section hqx
8722
8723 Apply a high-quality magnification filter designed for pixel art. This filter
8724 was originally created by Maxim Stepin.
8725
8726 It accepts the following option:
8727
8728 @table @option
8729 @item n
8730 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
8731 @code{hq3x} and @code{4} for @code{hq4x}.
8732 Default is @code{3}.
8733 @end table
8734
8735 @section hstack
8736 Stack input videos horizontally.
8737
8738 All streams must be of same pixel format and of same height.
8739
8740 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
8741 to create same output.
8742
8743 The filter accept the following option:
8744
8745 @table @option
8746 @item inputs
8747 Set number of input streams. Default is 2.
8748
8749 @item shortest
8750 If set to 1, force the output to terminate when the shortest input
8751 terminates. Default value is 0.
8752 @end table
8753
8754 @section hue
8755
8756 Modify the hue and/or the saturation of the input.
8757
8758 It accepts the following parameters:
8759
8760 @table @option
8761 @item h
8762 Specify the hue angle as a number of degrees. It accepts an expression,
8763 and defaults to "0".
8764
8765 @item s
8766 Specify the saturation in the [-10,10] range. It accepts an expression and
8767 defaults to "1".
8768
8769 @item H
8770 Specify the hue angle as a number of radians. It accepts an
8771 expression, and defaults to "0".
8772
8773 @item b
8774 Specify the brightness in the [-10,10] range. It accepts an expression and
8775 defaults to "0".
8776 @end table
8777
8778 @option{h} and @option{H} are mutually exclusive, and can't be
8779 specified at the same time.
8780
8781 The @option{b}, @option{h}, @option{H} and @option{s} option values are
8782 expressions containing the following constants:
8783
8784 @table @option
8785 @item n
8786 frame count of the input frame starting from 0
8787
8788 @item pts
8789 presentation timestamp of the input frame expressed in time base units
8790
8791 @item r
8792 frame rate of the input video, NAN if the input frame rate is unknown
8793
8794 @item t
8795 timestamp expressed in seconds, NAN if the input timestamp is unknown
8796
8797 @item tb
8798 time base of the input video
8799 @end table
8800
8801 @subsection Examples
8802
8803 @itemize
8804 @item
8805 Set the hue to 90 degrees and the saturation to 1.0:
8806 @example
8807 hue=h=90:s=1
8808 @end example
8809
8810 @item
8811 Same command but expressing the hue in radians:
8812 @example
8813 hue=H=PI/2:s=1
8814 @end example
8815
8816 @item
8817 Rotate hue and make the saturation swing between 0
8818 and 2 over a period of 1 second:
8819 @example
8820 hue="H=2*PI*t: s=sin(2*PI*t)+1"
8821 @end example
8822
8823 @item
8824 Apply a 3 seconds saturation fade-in effect starting at 0:
8825 @example
8826 hue="s=min(t/3\,1)"
8827 @end example
8828
8829 The general fade-in expression can be written as:
8830 @example
8831 hue="s=min(0\, max((t-START)/DURATION\, 1))"
8832 @end example
8833
8834 @item
8835 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
8836 @example
8837 hue="s=max(0\, min(1\, (8-t)/3))"
8838 @end example
8839
8840 The general fade-out expression can be written as:
8841 @example
8842 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
8843 @end example
8844
8845 @end itemize
8846
8847 @subsection Commands
8848
8849 This filter supports the following commands:
8850 @table @option
8851 @item b
8852 @item s
8853 @item h
8854 @item H
8855 Modify the hue and/or the saturation and/or brightness of the input video.
8856 The command accepts the same syntax of the corresponding option.
8857
8858 If the specified expression is not valid, it is kept at its current
8859 value.
8860 @end table
8861
8862 @section hysteresis
8863
8864 Grow first stream into second stream by connecting components.
8865 This makes it possible to build more robust edge masks.
8866
8867 This filter accepts the following options:
8868
8869 @table @option
8870 @item planes
8871 Set which planes will be processed as bitmap, unprocessed planes will be
8872 copied from first stream.
8873 By default value 0xf, all planes will be processed.
8874
8875 @item threshold
8876 Set threshold which is used in filtering. If pixel component value is higher than
8877 this value filter algorithm for connecting components is activated.
8878 By default value is 0.
8879 @end table
8880
8881 @section idet
8882
8883 Detect video interlacing type.
8884
8885 This filter tries to detect if the input frames are interlaced, progressive,
8886 top or bottom field first. It will also try to detect fields that are
8887 repeated between adjacent frames (a sign of telecine).
8888
8889 Single frame detection considers only immediately adjacent frames when classifying each frame.
8890 Multiple frame detection incorporates the classification history of previous frames.
8891
8892 The filter will log these metadata values:
8893
8894 @table @option
8895 @item single.current_frame
8896 Detected type of current frame using single-frame detection. One of:
8897 ``tff'' (top field first), ``bff'' (bottom field first),
8898 ``progressive'', or ``undetermined''
8899
8900 @item single.tff
8901 Cumulative number of frames detected as top field first using single-frame detection.
8902
8903 @item multiple.tff
8904 Cumulative number of frames detected as top field first using multiple-frame detection.
8905
8906 @item single.bff
8907 Cumulative number of frames detected as bottom field first using single-frame detection.
8908
8909 @item multiple.current_frame
8910 Detected type of current frame using multiple-frame detection. One of:
8911 ``tff'' (top field first), ``bff'' (bottom field first),
8912 ``progressive'', or ``undetermined''
8913
8914 @item multiple.bff
8915 Cumulative number of frames detected as bottom field first using multiple-frame detection.
8916
8917 @item single.progressive
8918 Cumulative number of frames detected as progressive using single-frame detection.
8919
8920 @item multiple.progressive
8921 Cumulative number of frames detected as progressive using multiple-frame detection.
8922
8923 @item single.undetermined
8924 Cumulative number of frames that could not be classified using single-frame detection.
8925
8926 @item multiple.undetermined
8927 Cumulative number of frames that could not be classified using multiple-frame detection.
8928
8929 @item repeated.current_frame
8930 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
8931
8932 @item repeated.neither
8933 Cumulative number of frames with no repeated field.
8934
8935 @item repeated.top
8936 Cumulative number of frames with the top field repeated from the previous frame's top field.
8937
8938 @item repeated.bottom
8939 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
8940 @end table
8941
8942 The filter accepts the following options:
8943
8944 @table @option
8945 @item intl_thres
8946 Set interlacing threshold.
8947 @item prog_thres
8948 Set progressive threshold.
8949 @item rep_thres
8950 Threshold for repeated field detection.
8951 @item half_life
8952 Number of frames after which a given frame's contribution to the
8953 statistics is halved (i.e., it contributes only 0.5 to its
8954 classification). The default of 0 means that all frames seen are given
8955 full weight of 1.0 forever.
8956 @item analyze_interlaced_flag
8957 When this is not 0 then idet will use the specified number of frames to determine
8958 if the interlaced flag is accurate, it will not count undetermined frames.
8959 If the flag is found to be accurate it will be used without any further
8960 computations, if it is found to be inaccurate it will be cleared without any
8961 further computations. This allows inserting the idet filter as a low computational
8962 method to clean up the interlaced flag
8963 @end table
8964
8965 @section il
8966
8967 Deinterleave or interleave fields.
8968
8969 This filter allows one to process interlaced images fields without
8970 deinterlacing them. Deinterleaving splits the input frame into 2
8971 fields (so called half pictures). Odd lines are moved to the top
8972 half of the output image, even lines to the bottom half.
8973 You can process (filter) them independently and then re-interleave them.
8974
8975 The filter accepts the following options:
8976
8977 @table @option
8978 @item luma_mode, l
8979 @item chroma_mode, c
8980 @item alpha_mode, a
8981 Available values for @var{luma_mode}, @var{chroma_mode} and
8982 @var{alpha_mode} are:
8983
8984 @table @samp
8985 @item none
8986 Do nothing.
8987
8988 @item deinterleave, d
8989 Deinterleave fields, placing one above the other.
8990
8991 @item interleave, i
8992 Interleave fields. Reverse the effect of deinterleaving.
8993 @end table
8994 Default value is @code{none}.
8995
8996 @item luma_swap, ls
8997 @item chroma_swap, cs
8998 @item alpha_swap, as
8999 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
9000 @end table
9001
9002 @section inflate
9003
9004 Apply inflate effect to the video.
9005
9006 This filter replaces the pixel by the local(3x3) average by taking into account
9007 only values higher than the pixel.
9008
9009 It accepts the following options:
9010
9011 @table @option
9012 @item threshold0
9013 @item threshold1
9014 @item threshold2
9015 @item threshold3
9016 Limit the maximum change for each plane, default is 65535.
9017 If 0, plane will remain unchanged.
9018 @end table
9019
9020 @section interlace
9021
9022 Simple interlacing filter from progressive contents. This interleaves upper (or
9023 lower) lines from odd frames with lower (or upper) lines from even frames,
9024 halving the frame rate and preserving image height.
9025
9026 @example
9027    Original        Original             New Frame
9028    Frame 'j'      Frame 'j+1'             (tff)
9029   ==========      ===========       ==================
9030     Line 0  -------------------->    Frame 'j' Line 0
9031     Line 1          Line 1  ---->   Frame 'j+1' Line 1
9032     Line 2 --------------------->    Frame 'j' Line 2
9033     Line 3          Line 3  ---->   Frame 'j+1' Line 3
9034      ...             ...                   ...
9035 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
9036 @end example
9037
9038 It accepts the following optional parameters:
9039
9040 @table @option
9041 @item scan
9042 This determines whether the interlaced frame is taken from the even
9043 (tff - default) or odd (bff) lines of the progressive frame.
9044
9045 @item lowpass
9046 Enable (default) or disable the vertical lowpass filter to avoid twitter
9047 interlacing and reduce moire patterns.
9048 @end table
9049
9050 @section kerndeint
9051
9052 Deinterlace input video by applying Donald Graft's adaptive kernel
9053 deinterling. Work on interlaced parts of a video to produce
9054 progressive frames.
9055
9056 The description of the accepted parameters follows.
9057
9058 @table @option
9059 @item thresh
9060 Set the threshold which affects the filter's tolerance when
9061 determining if a pixel line must be processed. It must be an integer
9062 in the range [0,255] and defaults to 10. A value of 0 will result in
9063 applying the process on every pixels.
9064
9065 @item map
9066 Paint pixels exceeding the threshold value to white if set to 1.
9067 Default is 0.
9068
9069 @item order
9070 Set the fields order. Swap fields if set to 1, leave fields alone if
9071 0. Default is 0.
9072
9073 @item sharp
9074 Enable additional sharpening if set to 1. Default is 0.
9075
9076 @item twoway
9077 Enable twoway sharpening if set to 1. Default is 0.
9078 @end table
9079
9080 @subsection Examples
9081
9082 @itemize
9083 @item
9084 Apply default values:
9085 @example
9086 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
9087 @end example
9088
9089 @item
9090 Enable additional sharpening:
9091 @example
9092 kerndeint=sharp=1
9093 @end example
9094
9095 @item
9096 Paint processed pixels in white:
9097 @example
9098 kerndeint=map=1
9099 @end example
9100 @end itemize
9101
9102 @section lenscorrection
9103
9104 Correct radial lens distortion
9105
9106 This filter can be used to correct for radial distortion as can result from the use
9107 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
9108 one can use tools available for example as part of opencv or simply trial-and-error.
9109 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
9110 and extract the k1 and k2 coefficients from the resulting matrix.
9111
9112 Note that effectively the same filter is available in the open-source tools Krita and
9113 Digikam from the KDE project.
9114
9115 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
9116 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
9117 brightness distribution, so you may want to use both filters together in certain
9118 cases, though you will have to take care of ordering, i.e. whether vignetting should
9119 be applied before or after lens correction.
9120
9121 @subsection Options
9122
9123 The filter accepts the following options:
9124
9125 @table @option
9126 @item cx
9127 Relative x-coordinate of the focal point of the image, and thereby the center of the
9128 distortion. This value has a range [0,1] and is expressed as fractions of the image
9129 width.
9130 @item cy
9131 Relative y-coordinate of the focal point of the image, and thereby the center of the
9132 distortion. This value has a range [0,1] and is expressed as fractions of the image
9133 height.
9134 @item k1
9135 Coefficient of the quadratic correction term. 0.5 means no correction.
9136 @item k2
9137 Coefficient of the double quadratic correction term. 0.5 means no correction.
9138 @end table
9139
9140 The formula that generates the correction is:
9141
9142 @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)
9143
9144 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
9145 distances from the focal point in the source and target images, respectively.
9146
9147 @section loop
9148
9149 Loop video frames.
9150
9151 The filter accepts the following options:
9152
9153 @table @option
9154 @item loop
9155 Set the number of loops.
9156
9157 @item size
9158 Set maximal size in number of frames.
9159
9160 @item start
9161 Set first frame of loop.
9162 @end table
9163
9164 @anchor{lut3d}
9165 @section lut3d
9166
9167 Apply a 3D LUT to an input video.
9168
9169 The filter accepts the following options:
9170
9171 @table @option
9172 @item file
9173 Set the 3D LUT file name.
9174
9175 Currently supported formats:
9176 @table @samp
9177 @item 3dl
9178 AfterEffects
9179 @item cube
9180 Iridas
9181 @item dat
9182 DaVinci
9183 @item m3d
9184 Pandora
9185 @end table
9186 @item interp
9187 Select interpolation mode.
9188
9189 Available values are:
9190
9191 @table @samp
9192 @item nearest
9193 Use values from the nearest defined point.
9194 @item trilinear
9195 Interpolate values using the 8 points defining a cube.
9196 @item tetrahedral
9197 Interpolate values using a tetrahedron.
9198 @end table
9199 @end table
9200
9201 @section lut, lutrgb, lutyuv
9202
9203 Compute a look-up table for binding each pixel component input value
9204 to an output value, and apply it to the input video.
9205
9206 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
9207 to an RGB input video.
9208
9209 These filters accept the following parameters:
9210 @table @option
9211 @item c0
9212 set first pixel component expression
9213 @item c1
9214 set second pixel component expression
9215 @item c2
9216 set third pixel component expression
9217 @item c3
9218 set fourth pixel component expression, corresponds to the alpha component
9219
9220 @item r
9221 set red component expression
9222 @item g
9223 set green component expression
9224 @item b
9225 set blue component expression
9226 @item a
9227 alpha component expression
9228
9229 @item y
9230 set Y/luminance component expression
9231 @item u
9232 set U/Cb component expression
9233 @item v
9234 set V/Cr component expression
9235 @end table
9236
9237 Each of them specifies the expression to use for computing the lookup table for
9238 the corresponding pixel component values.
9239
9240 The exact component associated to each of the @var{c*} options depends on the
9241 format in input.
9242
9243 The @var{lut} filter requires either YUV or RGB pixel formats in input,
9244 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
9245
9246 The expressions can contain the following constants and functions:
9247
9248 @table @option
9249 @item w
9250 @item h
9251 The input width and height.
9252
9253 @item val
9254 The input value for the pixel component.
9255
9256 @item clipval
9257 The input value, clipped to the @var{minval}-@var{maxval} range.
9258
9259 @item maxval
9260 The maximum value for the pixel component.
9261
9262 @item minval
9263 The minimum value for the pixel component.
9264
9265 @item negval
9266 The negated value for the pixel component value, clipped to the
9267 @var{minval}-@var{maxval} range; it corresponds to the expression
9268 "maxval-clipval+minval".
9269
9270 @item clip(val)
9271 The computed value in @var{val}, clipped to the
9272 @var{minval}-@var{maxval} range.
9273
9274 @item gammaval(gamma)
9275 The computed gamma correction value of the pixel component value,
9276 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
9277 expression
9278 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
9279
9280 @end table
9281
9282 All expressions default to "val".
9283
9284 @subsection Examples
9285
9286 @itemize
9287 @item
9288 Negate input video:
9289 @example
9290 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
9291 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
9292 @end example
9293
9294 The above is the same as:
9295 @example
9296 lutrgb="r=negval:g=negval:b=negval"
9297 lutyuv="y=negval:u=negval:v=negval"
9298 @end example
9299
9300 @item
9301 Negate luminance:
9302 @example
9303 lutyuv=y=negval
9304 @end example
9305
9306 @item
9307 Remove chroma components, turning the video into a graytone image:
9308 @example
9309 lutyuv="u=128:v=128"
9310 @end example
9311
9312 @item
9313 Apply a luma burning effect:
9314 @example
9315 lutyuv="y=2*val"
9316 @end example
9317
9318 @item
9319 Remove green and blue components:
9320 @example
9321 lutrgb="g=0:b=0"
9322 @end example
9323
9324 @item
9325 Set a constant alpha channel value on input:
9326 @example
9327 format=rgba,lutrgb=a="maxval-minval/2"
9328 @end example
9329
9330 @item
9331 Correct luminance gamma by a factor of 0.5:
9332 @example
9333 lutyuv=y=gammaval(0.5)
9334 @end example
9335
9336 @item
9337 Discard least significant bits of luma:
9338 @example
9339 lutyuv=y='bitand(val, 128+64+32)'
9340 @end example
9341
9342 @item
9343 Technicolor like effect:
9344 @example
9345 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
9346 @end example
9347 @end itemize
9348
9349 @section lut2
9350
9351 Compute and apply a lookup table from two video inputs.
9352
9353 This filter accepts the following parameters:
9354 @table @option
9355 @item c0
9356 set first pixel component expression
9357 @item c1
9358 set second pixel component expression
9359 @item c2
9360 set third pixel component expression
9361 @item c3
9362 set fourth pixel component expression, corresponds to the alpha component
9363 @end table
9364
9365 Each of them specifies the expression to use for computing the lookup table for
9366 the corresponding pixel component values.
9367
9368 The exact component associated to each of the @var{c*} options depends on the
9369 format in inputs.
9370
9371 The expressions can contain the following constants:
9372
9373 @table @option
9374 @item w
9375 @item h
9376 The input width and height.
9377
9378 @item x
9379 The first input value for the pixel component.
9380
9381 @item y
9382 The second input value for the pixel component.
9383
9384 @item bdx
9385 The first input video bit depth.
9386
9387 @item bdy
9388 The second input video bit depth.
9389 @end table
9390
9391 All expressions default to "x".
9392
9393 @subsection Examples
9394
9395 @itemize
9396 @item
9397 Highlight differences between two RGB video streams:
9398 @example
9399 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)'
9400 @end example
9401
9402 @item
9403 Highlight differences between two YUV video streams:
9404 @example
9405 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)'
9406 @end example
9407 @end itemize
9408
9409 @section maskedclamp
9410
9411 Clamp the first input stream with the second input and third input stream.
9412
9413 Returns the value of first stream to be between second input
9414 stream - @code{undershoot} and third input stream + @code{overshoot}.
9415
9416 This filter accepts the following options:
9417 @table @option
9418 @item undershoot
9419 Default value is @code{0}.
9420
9421 @item overshoot
9422 Default value is @code{0}.
9423
9424 @item planes
9425 Set which planes will be processed as bitmap, unprocessed planes will be
9426 copied from first stream.
9427 By default value 0xf, all planes will be processed.
9428 @end table
9429
9430 @section maskedmerge
9431
9432 Merge the first input stream with the second input stream using per pixel
9433 weights in the third input stream.
9434
9435 A value of 0 in the third stream pixel component means that pixel component
9436 from first stream is returned unchanged, while maximum value (eg. 255 for
9437 8-bit videos) means that pixel component from second stream is returned
9438 unchanged. Intermediate values define the amount of merging between both
9439 input stream's pixel components.
9440
9441 This filter accepts the following options:
9442 @table @option
9443 @item planes
9444 Set which planes will be processed as bitmap, unprocessed planes will be
9445 copied from first stream.
9446 By default value 0xf, all planes will be processed.
9447 @end table
9448
9449 @section mcdeint
9450
9451 Apply motion-compensation deinterlacing.
9452
9453 It needs one field per frame as input and must thus be used together
9454 with yadif=1/3 or equivalent.
9455
9456 This filter accepts the following options:
9457 @table @option
9458 @item mode
9459 Set the deinterlacing mode.
9460
9461 It accepts one of the following values:
9462 @table @samp
9463 @item fast
9464 @item medium
9465 @item slow
9466 use iterative motion estimation
9467 @item extra_slow
9468 like @samp{slow}, but use multiple reference frames.
9469 @end table
9470 Default value is @samp{fast}.
9471
9472 @item parity
9473 Set the picture field parity assumed for the input video. It must be
9474 one of the following values:
9475
9476 @table @samp
9477 @item 0, tff
9478 assume top field first
9479 @item 1, bff
9480 assume bottom field first
9481 @end table
9482
9483 Default value is @samp{bff}.
9484
9485 @item qp
9486 Set per-block quantization parameter (QP) used by the internal
9487 encoder.
9488
9489 Higher values should result in a smoother motion vector field but less
9490 optimal individual vectors. Default value is 1.
9491 @end table
9492
9493 @section mergeplanes
9494
9495 Merge color channel components from several video streams.
9496
9497 The filter accepts up to 4 input streams, and merge selected input
9498 planes to the output video.
9499
9500 This filter accepts the following options:
9501 @table @option
9502 @item mapping
9503 Set input to output plane mapping. Default is @code{0}.
9504
9505 The mappings is specified as a bitmap. It should be specified as a
9506 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
9507 mapping for the first plane of the output stream. 'A' sets the number of
9508 the input stream to use (from 0 to 3), and 'a' the plane number of the
9509 corresponding input to use (from 0 to 3). The rest of the mappings is
9510 similar, 'Bb' describes the mapping for the output stream second
9511 plane, 'Cc' describes the mapping for the output stream third plane and
9512 'Dd' describes the mapping for the output stream fourth plane.
9513
9514 @item format
9515 Set output pixel format. Default is @code{yuva444p}.
9516 @end table
9517
9518 @subsection Examples
9519
9520 @itemize
9521 @item
9522 Merge three gray video streams of same width and height into single video stream:
9523 @example
9524 [a0][a1][a2]mergeplanes=0x001020:yuv444p
9525 @end example
9526
9527 @item
9528 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
9529 @example
9530 [a0][a1]mergeplanes=0x00010210:yuva444p
9531 @end example
9532
9533 @item
9534 Swap Y and A plane in yuva444p stream:
9535 @example
9536 format=yuva444p,mergeplanes=0x03010200:yuva444p
9537 @end example
9538
9539 @item
9540 Swap U and V plane in yuv420p stream:
9541 @example
9542 format=yuv420p,mergeplanes=0x000201:yuv420p
9543 @end example
9544
9545 @item
9546 Cast a rgb24 clip to yuv444p:
9547 @example
9548 format=rgb24,mergeplanes=0x000102:yuv444p
9549 @end example
9550 @end itemize
9551
9552 @section mestimate
9553
9554 Estimate and export motion vectors using block matching algorithms.
9555 Motion vectors are stored in frame side data to be used by other filters.
9556
9557 This filter accepts the following options:
9558 @table @option
9559 @item method
9560 Specify the motion estimation method. Accepts one of the following values:
9561
9562 @table @samp
9563 @item esa
9564 Exhaustive search algorithm.
9565 @item tss
9566 Three step search algorithm.
9567 @item tdls
9568 Two dimensional logarithmic search algorithm.
9569 @item ntss
9570 New three step search algorithm.
9571 @item fss
9572 Four step search algorithm.
9573 @item ds
9574 Diamond search algorithm.
9575 @item hexbs
9576 Hexagon-based search algorithm.
9577 @item epzs
9578 Enhanced predictive zonal search algorithm.
9579 @item umh
9580 Uneven multi-hexagon search algorithm.
9581 @end table
9582 Default value is @samp{esa}.
9583
9584 @item mb_size
9585 Macroblock size. Default @code{16}.
9586
9587 @item search_param
9588 Search parameter. Default @code{7}.
9589 @end table
9590
9591 @section minterpolate
9592
9593 Convert the video to specified frame rate using motion interpolation.
9594
9595 This filter accepts the following options:
9596 @table @option
9597 @item fps
9598 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}.
9599
9600 @item mi_mode
9601 Motion interpolation mode. Following values are accepted:
9602 @table @samp
9603 @item dup
9604 Duplicate previous or next frame for interpolating new ones.
9605 @item blend
9606 Blend source frames. Interpolated frame is mean of previous and next frames.
9607 @item mci
9608 Motion compensated interpolation. Following options are effective when this mode is selected:
9609
9610 @table @samp
9611 @item mc_mode
9612 Motion compensation mode. Following values are accepted:
9613 @table @samp
9614 @item obmc
9615 Overlapped block motion compensation.
9616 @item aobmc
9617 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
9618 @end table
9619 Default mode is @samp{obmc}.
9620
9621 @item me_mode
9622 Motion estimation mode. Following values are accepted:
9623 @table @samp
9624 @item bidir
9625 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
9626 @item bilat
9627 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
9628 @end table
9629 Default mode is @samp{bilat}.
9630
9631 @item me
9632 The algorithm to be used for motion estimation. Following values are accepted:
9633 @table @samp
9634 @item esa
9635 Exhaustive search algorithm.
9636 @item tss
9637 Three step search algorithm.
9638 @item tdls
9639 Two dimensional logarithmic search algorithm.
9640 @item ntss
9641 New three step search algorithm.
9642 @item fss
9643 Four step search algorithm.
9644 @item ds
9645 Diamond search algorithm.
9646 @item hexbs
9647 Hexagon-based search algorithm.
9648 @item epzs
9649 Enhanced predictive zonal search algorithm.
9650 @item umh
9651 Uneven multi-hexagon search algorithm.
9652 @end table
9653 Default algorithm is @samp{epzs}.
9654
9655 @item mb_size
9656 Macroblock size. Default @code{16}.
9657
9658 @item search_param
9659 Motion estimation search parameter. Default @code{32}.
9660
9661 @item vsmbc
9662 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).
9663 @end table
9664 @end table
9665
9666 @item scd
9667 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:
9668 @table @samp
9669 @item none
9670 Disable scene change detection.
9671 @item fdiff
9672 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
9673 @end table
9674 Default method is @samp{fdiff}.
9675
9676 @item scd_threshold
9677 Scene change detection threshold. Default is @code{5.0}.
9678 @end table
9679
9680 @section mpdecimate
9681
9682 Drop frames that do not differ greatly from the previous frame in
9683 order to reduce frame rate.
9684
9685 The main use of this filter is for very-low-bitrate encoding
9686 (e.g. streaming over dialup modem), but it could in theory be used for
9687 fixing movies that were inverse-telecined incorrectly.
9688
9689 A description of the accepted options follows.
9690
9691 @table @option
9692 @item max
9693 Set the maximum number of consecutive frames which can be dropped (if
9694 positive), or the minimum interval between dropped frames (if
9695 negative). If the value is 0, the frame is dropped unregarding the
9696 number of previous sequentially dropped frames.
9697
9698 Default value is 0.
9699
9700 @item hi
9701 @item lo
9702 @item frac
9703 Set the dropping threshold values.
9704
9705 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
9706 represent actual pixel value differences, so a threshold of 64
9707 corresponds to 1 unit of difference for each pixel, or the same spread
9708 out differently over the block.
9709
9710 A frame is a candidate for dropping if no 8x8 blocks differ by more
9711 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
9712 meaning the whole image) differ by more than a threshold of @option{lo}.
9713
9714 Default value for @option{hi} is 64*12, default value for @option{lo} is
9715 64*5, and default value for @option{frac} is 0.33.
9716 @end table
9717
9718
9719 @section negate
9720
9721 Negate input video.
9722
9723 It accepts an integer in input; if non-zero it negates the
9724 alpha component (if available). The default value in input is 0.
9725
9726 @section nlmeans
9727
9728 Denoise frames using Non-Local Means algorithm.
9729
9730 Each pixel is adjusted by looking for other pixels with similar contexts. This
9731 context similarity is defined by comparing their surrounding patches of size
9732 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
9733 around the pixel.
9734
9735 Note that the research area defines centers for patches, which means some
9736 patches will be made of pixels outside that research area.
9737
9738 The filter accepts the following options.
9739
9740 @table @option
9741 @item s
9742 Set denoising strength.
9743
9744 @item p
9745 Set patch size.
9746
9747 @item pc
9748 Same as @option{p} but for chroma planes.
9749
9750 The default value is @var{0} and means automatic.
9751
9752 @item r
9753 Set research size.
9754
9755 @item rc
9756 Same as @option{r} but for chroma planes.
9757
9758 The default value is @var{0} and means automatic.
9759 @end table
9760
9761 @section nnedi
9762
9763 Deinterlace video using neural network edge directed interpolation.
9764
9765 This filter accepts the following options:
9766
9767 @table @option
9768 @item weights
9769 Mandatory option, without binary file filter can not work.
9770 Currently file can be found here:
9771 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
9772
9773 @item deint
9774 Set which frames to deinterlace, by default it is @code{all}.
9775 Can be @code{all} or @code{interlaced}.
9776
9777 @item field
9778 Set mode of operation.
9779
9780 Can be one of the following:
9781
9782 @table @samp
9783 @item af
9784 Use frame flags, both fields.
9785 @item a
9786 Use frame flags, single field.
9787 @item t
9788 Use top field only.
9789 @item b
9790 Use bottom field only.
9791 @item tf
9792 Use both fields, top first.
9793 @item bf
9794 Use both fields, bottom first.
9795 @end table
9796
9797 @item planes
9798 Set which planes to process, by default filter process all frames.
9799
9800 @item nsize
9801 Set size of local neighborhood around each pixel, used by the predictor neural
9802 network.
9803
9804 Can be one of the following:
9805
9806 @table @samp
9807 @item s8x6
9808 @item s16x6
9809 @item s32x6
9810 @item s48x6
9811 @item s8x4
9812 @item s16x4
9813 @item s32x4
9814 @end table
9815
9816 @item nns
9817 Set the number of neurons in predicctor neural network.
9818 Can be one of the following:
9819
9820 @table @samp
9821 @item n16
9822 @item n32
9823 @item n64
9824 @item n128
9825 @item n256
9826 @end table
9827
9828 @item qual
9829 Controls the number of different neural network predictions that are blended
9830 together to compute the final output value. Can be @code{fast}, default or
9831 @code{slow}.
9832
9833 @item etype
9834 Set which set of weights to use in the predictor.
9835 Can be one of the following:
9836
9837 @table @samp
9838 @item a
9839 weights trained to minimize absolute error
9840 @item s
9841 weights trained to minimize squared error
9842 @end table
9843
9844 @item pscrn
9845 Controls whether or not the prescreener neural network is used to decide
9846 which pixels should be processed by the predictor neural network and which
9847 can be handled by simple cubic interpolation.
9848 The prescreener is trained to know whether cubic interpolation will be
9849 sufficient for a pixel or whether it should be predicted by the predictor nn.
9850 The computational complexity of the prescreener nn is much less than that of
9851 the predictor nn. Since most pixels can be handled by cubic interpolation,
9852 using the prescreener generally results in much faster processing.
9853 The prescreener is pretty accurate, so the difference between using it and not
9854 using it is almost always unnoticeable.
9855
9856 Can be one of the following:
9857
9858 @table @samp
9859 @item none
9860 @item original
9861 @item new
9862 @end table
9863
9864 Default is @code{new}.
9865
9866 @item fapprox
9867 Set various debugging flags.
9868 @end table
9869
9870 @section noformat
9871
9872 Force libavfilter not to use any of the specified pixel formats for the
9873 input to the next filter.
9874
9875 It accepts the following parameters:
9876 @table @option
9877
9878 @item pix_fmts
9879 A '|'-separated list of pixel format names, such as
9880 apix_fmts=yuv420p|monow|rgb24".
9881
9882 @end table
9883
9884 @subsection Examples
9885
9886 @itemize
9887 @item
9888 Force libavfilter to use a format different from @var{yuv420p} for the
9889 input to the vflip filter:
9890 @example
9891 noformat=pix_fmts=yuv420p,vflip
9892 @end example
9893
9894 @item
9895 Convert the input video to any of the formats not contained in the list:
9896 @example
9897 noformat=yuv420p|yuv444p|yuv410p
9898 @end example
9899 @end itemize
9900
9901 @section noise
9902
9903 Add noise on video input frame.
9904
9905 The filter accepts the following options:
9906
9907 @table @option
9908 @item all_seed
9909 @item c0_seed
9910 @item c1_seed
9911 @item c2_seed
9912 @item c3_seed
9913 Set noise seed for specific pixel component or all pixel components in case
9914 of @var{all_seed}. Default value is @code{123457}.
9915
9916 @item all_strength, alls
9917 @item c0_strength, c0s
9918 @item c1_strength, c1s
9919 @item c2_strength, c2s
9920 @item c3_strength, c3s
9921 Set noise strength for specific pixel component or all pixel components in case
9922 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
9923
9924 @item all_flags, allf
9925 @item c0_flags, c0f
9926 @item c1_flags, c1f
9927 @item c2_flags, c2f
9928 @item c3_flags, c3f
9929 Set pixel component flags or set flags for all components if @var{all_flags}.
9930 Available values for component flags are:
9931 @table @samp
9932 @item a
9933 averaged temporal noise (smoother)
9934 @item p
9935 mix random noise with a (semi)regular pattern
9936 @item t
9937 temporal noise (noise pattern changes between frames)
9938 @item u
9939 uniform noise (gaussian otherwise)
9940 @end table
9941 @end table
9942
9943 @subsection Examples
9944
9945 Add temporal and uniform noise to input video:
9946 @example
9947 noise=alls=20:allf=t+u
9948 @end example
9949
9950 @section null
9951
9952 Pass the video source unchanged to the output.
9953
9954 @section ocr
9955 Optical Character Recognition
9956
9957 This filter uses Tesseract for optical character recognition.
9958
9959 It accepts the following options:
9960
9961 @table @option
9962 @item datapath
9963 Set datapath to tesseract data. Default is to use whatever was
9964 set at installation.
9965
9966 @item language
9967 Set language, default is "eng".
9968
9969 @item whitelist
9970 Set character whitelist.
9971
9972 @item blacklist
9973 Set character blacklist.
9974 @end table
9975
9976 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
9977
9978 @section ocv
9979
9980 Apply a video transform using libopencv.
9981
9982 To enable this filter, install the libopencv library and headers and
9983 configure FFmpeg with @code{--enable-libopencv}.
9984
9985 It accepts the following parameters:
9986
9987 @table @option
9988
9989 @item filter_name
9990 The name of the libopencv filter to apply.
9991
9992 @item filter_params
9993 The parameters to pass to the libopencv filter. If not specified, the default
9994 values are assumed.
9995
9996 @end table
9997
9998 Refer to the official libopencv documentation for more precise
9999 information:
10000 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
10001
10002 Several libopencv filters are supported; see the following subsections.
10003
10004 @anchor{dilate}
10005 @subsection dilate
10006
10007 Dilate an image by using a specific structuring element.
10008 It corresponds to the libopencv function @code{cvDilate}.
10009
10010 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
10011
10012 @var{struct_el} represents a structuring element, and has the syntax:
10013 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
10014
10015 @var{cols} and @var{rows} represent the number of columns and rows of
10016 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
10017 point, and @var{shape} the shape for the structuring element. @var{shape}
10018 must be "rect", "cross", "ellipse", or "custom".
10019
10020 If the value for @var{shape} is "custom", it must be followed by a
10021 string of the form "=@var{filename}". The file with name
10022 @var{filename} is assumed to represent a binary image, with each
10023 printable character corresponding to a bright pixel. When a custom
10024 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
10025 or columns and rows of the read file are assumed instead.
10026
10027 The default value for @var{struct_el} is "3x3+0x0/rect".
10028
10029 @var{nb_iterations} specifies the number of times the transform is
10030 applied to the image, and defaults to 1.
10031
10032 Some examples:
10033 @example
10034 # Use the default values
10035 ocv=dilate
10036
10037 # Dilate using a structuring element with a 5x5 cross, iterating two times
10038 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
10039
10040 # Read the shape from the file diamond.shape, iterating two times.
10041 # The file diamond.shape may contain a pattern of characters like this
10042 #   *
10043 #  ***
10044 # *****
10045 #  ***
10046 #   *
10047 # The specified columns and rows are ignored
10048 # but the anchor point coordinates are not
10049 ocv=dilate:0x0+2x2/custom=diamond.shape|2
10050 @end example
10051
10052 @subsection erode
10053
10054 Erode an image by using a specific structuring element.
10055 It corresponds to the libopencv function @code{cvErode}.
10056
10057 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
10058 with the same syntax and semantics as the @ref{dilate} filter.
10059
10060 @subsection smooth
10061
10062 Smooth the input video.
10063
10064 The filter takes the following parameters:
10065 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
10066
10067 @var{type} is the type of smooth filter to apply, and must be one of
10068 the following values: "blur", "blur_no_scale", "median", "gaussian",
10069 or "bilateral". The default value is "gaussian".
10070
10071 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
10072 depend on the smooth type. @var{param1} and
10073 @var{param2} accept integer positive values or 0. @var{param3} and
10074 @var{param4} accept floating point values.
10075
10076 The default value for @var{param1} is 3. The default value for the
10077 other parameters is 0.
10078
10079 These parameters correspond to the parameters assigned to the
10080 libopencv function @code{cvSmooth}.
10081
10082 @anchor{overlay}
10083 @section overlay
10084
10085 Overlay one video on top of another.
10086
10087 It takes two inputs and has one output. The first input is the "main"
10088 video on which the second input is overlaid.
10089
10090 It accepts the following parameters:
10091
10092 A description of the accepted options follows.
10093
10094 @table @option
10095 @item x
10096 @item y
10097 Set the expression for the x and y coordinates of the overlaid video
10098 on the main video. Default value is "0" for both expressions. In case
10099 the expression is invalid, it is set to a huge value (meaning that the
10100 overlay will not be displayed within the output visible area).
10101
10102 @item eof_action
10103 The action to take when EOF is encountered on the secondary input; it accepts
10104 one of the following values:
10105
10106 @table @option
10107 @item repeat
10108 Repeat the last frame (the default).
10109 @item endall
10110 End both streams.
10111 @item pass
10112 Pass the main input through.
10113 @end table
10114
10115 @item eval
10116 Set when the expressions for @option{x}, and @option{y} are evaluated.
10117
10118 It accepts the following values:
10119 @table @samp
10120 @item init
10121 only evaluate expressions once during the filter initialization or
10122 when a command is processed
10123
10124 @item frame
10125 evaluate expressions for each incoming frame
10126 @end table
10127
10128 Default value is @samp{frame}.
10129
10130 @item shortest
10131 If set to 1, force the output to terminate when the shortest input
10132 terminates. Default value is 0.
10133
10134 @item format
10135 Set the format for the output video.
10136
10137 It accepts the following values:
10138 @table @samp
10139 @item yuv420
10140 force YUV420 output
10141
10142 @item yuv422
10143 force YUV422 output
10144
10145 @item yuv444
10146 force YUV444 output
10147
10148 @item rgb
10149 force RGB output
10150 @end table
10151
10152 Default value is @samp{yuv420}.
10153
10154 @item rgb @emph{(deprecated)}
10155 If set to 1, force the filter to accept inputs in the RGB
10156 color space. Default value is 0. This option is deprecated, use
10157 @option{format} instead.
10158
10159 @item repeatlast
10160 If set to 1, force the filter to draw the last overlay frame over the
10161 main input until the end of the stream. A value of 0 disables this
10162 behavior. Default value is 1.
10163 @end table
10164
10165 The @option{x}, and @option{y} expressions can contain the following
10166 parameters.
10167
10168 @table @option
10169 @item main_w, W
10170 @item main_h, H
10171 The main input width and height.
10172
10173 @item overlay_w, w
10174 @item overlay_h, h
10175 The overlay input width and height.
10176
10177 @item x
10178 @item y
10179 The computed values for @var{x} and @var{y}. They are evaluated for
10180 each new frame.
10181
10182 @item hsub
10183 @item vsub
10184 horizontal and vertical chroma subsample values of the output
10185 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
10186 @var{vsub} is 1.
10187
10188 @item n
10189 the number of input frame, starting from 0
10190
10191 @item pos
10192 the position in the file of the input frame, NAN if unknown
10193
10194 @item t
10195 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
10196
10197 @end table
10198
10199 Note that the @var{n}, @var{pos}, @var{t} variables are available only
10200 when evaluation is done @emph{per frame}, and will evaluate to NAN
10201 when @option{eval} is set to @samp{init}.
10202
10203 Be aware that frames are taken from each input video in timestamp
10204 order, hence, if their initial timestamps differ, it is a good idea
10205 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
10206 have them begin in the same zero timestamp, as the example for
10207 the @var{movie} filter does.
10208
10209 You can chain together more overlays but you should test the
10210 efficiency of such approach.
10211
10212 @subsection Commands
10213
10214 This filter supports the following commands:
10215 @table @option
10216 @item x
10217 @item y
10218 Modify the x and y of the overlay input.
10219 The command accepts the same syntax of the corresponding option.
10220
10221 If the specified expression is not valid, it is kept at its current
10222 value.
10223 @end table
10224
10225 @subsection Examples
10226
10227 @itemize
10228 @item
10229 Draw the overlay at 10 pixels from the bottom right corner of the main
10230 video:
10231 @example
10232 overlay=main_w-overlay_w-10:main_h-overlay_h-10
10233 @end example
10234
10235 Using named options the example above becomes:
10236 @example
10237 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
10238 @end example
10239
10240 @item
10241 Insert a transparent PNG logo in the bottom left corner of the input,
10242 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
10243 @example
10244 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
10245 @end example
10246
10247 @item
10248 Insert 2 different transparent PNG logos (second logo on bottom
10249 right corner) using the @command{ffmpeg} tool:
10250 @example
10251 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
10252 @end example
10253
10254 @item
10255 Add a transparent color layer on top of the main video; @code{WxH}
10256 must specify the size of the main input to the overlay filter:
10257 @example
10258 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
10259 @end example
10260
10261 @item
10262 Play an original video and a filtered version (here with the deshake
10263 filter) side by side using the @command{ffplay} tool:
10264 @example
10265 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
10266 @end example
10267
10268 The above command is the same as:
10269 @example
10270 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
10271 @end example
10272
10273 @item
10274 Make a sliding overlay appearing from the left to the right top part of the
10275 screen starting since time 2:
10276 @example
10277 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
10278 @end example
10279
10280 @item
10281 Compose output by putting two input videos side to side:
10282 @example
10283 ffmpeg -i left.avi -i right.avi -filter_complex "
10284 nullsrc=size=200x100 [background];
10285 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
10286 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
10287 [background][left]       overlay=shortest=1       [background+left];
10288 [background+left][right] overlay=shortest=1:x=100 [left+right]
10289 "
10290 @end example
10291
10292 @item
10293 Mask 10-20 seconds of a video by applying the delogo filter to a section
10294 @example
10295 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
10296 -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]'
10297 masked.avi
10298 @end example
10299
10300 @item
10301 Chain several overlays in cascade:
10302 @example
10303 nullsrc=s=200x200 [bg];
10304 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
10305 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
10306 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
10307 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
10308 [in3] null,       [mid2] overlay=100:100 [out0]
10309 @end example
10310
10311 @end itemize
10312
10313 @section owdenoise
10314
10315 Apply Overcomplete Wavelet denoiser.
10316
10317 The filter accepts the following options:
10318
10319 @table @option
10320 @item depth
10321 Set depth.
10322
10323 Larger depth values will denoise lower frequency components more, but
10324 slow down filtering.
10325
10326 Must be an int in the range 8-16, default is @code{8}.
10327
10328 @item luma_strength, ls
10329 Set luma strength.
10330
10331 Must be a double value in the range 0-1000, default is @code{1.0}.
10332
10333 @item chroma_strength, cs
10334 Set chroma strength.
10335
10336 Must be a double value in the range 0-1000, default is @code{1.0}.
10337 @end table
10338
10339 @anchor{pad}
10340 @section pad
10341
10342 Add paddings to the input image, and place the original input at the
10343 provided @var{x}, @var{y} coordinates.
10344
10345 It accepts the following parameters:
10346
10347 @table @option
10348 @item width, w
10349 @item height, h
10350 Specify an expression for the size of the output image with the
10351 paddings added. If the value for @var{width} or @var{height} is 0, the
10352 corresponding input size is used for the output.
10353
10354 The @var{width} expression can reference the value set by the
10355 @var{height} expression, and vice versa.
10356
10357 The default value of @var{width} and @var{height} is 0.
10358
10359 @item x
10360 @item y
10361 Specify the offsets to place the input image at within the padded area,
10362 with respect to the top/left border of the output image.
10363
10364 The @var{x} expression can reference the value set by the @var{y}
10365 expression, and vice versa.
10366
10367 The default value of @var{x} and @var{y} is 0.
10368
10369 @item color
10370 Specify the color of the padded area. For the syntax of this option,
10371 check the "Color" section in the ffmpeg-utils manual.
10372
10373 The default value of @var{color} is "black".
10374 @end table
10375
10376 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
10377 options are expressions containing the following constants:
10378
10379 @table @option
10380 @item in_w
10381 @item in_h
10382 The input video width and height.
10383
10384 @item iw
10385 @item ih
10386 These are the same as @var{in_w} and @var{in_h}.
10387
10388 @item out_w
10389 @item out_h
10390 The output width and height (the size of the padded area), as
10391 specified by the @var{width} and @var{height} expressions.
10392
10393 @item ow
10394 @item oh
10395 These are the same as @var{out_w} and @var{out_h}.
10396
10397 @item x
10398 @item y
10399 The x and y offsets as specified by the @var{x} and @var{y}
10400 expressions, or NAN if not yet specified.
10401
10402 @item a
10403 same as @var{iw} / @var{ih}
10404
10405 @item sar
10406 input sample aspect ratio
10407
10408 @item dar
10409 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
10410
10411 @item hsub
10412 @item vsub
10413 The horizontal and vertical chroma subsample values. For example for the
10414 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10415 @end table
10416
10417 @subsection Examples
10418
10419 @itemize
10420 @item
10421 Add paddings with the color "violet" to the input video. The output video
10422 size is 640x480, and the top-left corner of the input video is placed at
10423 column 0, row 40
10424 @example
10425 pad=640:480:0:40:violet
10426 @end example
10427
10428 The example above is equivalent to the following command:
10429 @example
10430 pad=width=640:height=480:x=0:y=40:color=violet
10431 @end example
10432
10433 @item
10434 Pad the input to get an output with dimensions increased by 3/2,
10435 and put the input video at the center of the padded area:
10436 @example
10437 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
10438 @end example
10439
10440 @item
10441 Pad the input to get a squared output with size equal to the maximum
10442 value between the input width and height, and put the input video at
10443 the center of the padded area:
10444 @example
10445 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
10446 @end example
10447
10448 @item
10449 Pad the input to get a final w/h ratio of 16:9:
10450 @example
10451 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
10452 @end example
10453
10454 @item
10455 In case of anamorphic video, in order to set the output display aspect
10456 correctly, it is necessary to use @var{sar} in the expression,
10457 according to the relation:
10458 @example
10459 (ih * X / ih) * sar = output_dar
10460 X = output_dar / sar
10461 @end example
10462
10463 Thus the previous example needs to be modified to:
10464 @example
10465 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
10466 @end example
10467
10468 @item
10469 Double the output size and put the input video in the bottom-right
10470 corner of the output padded area:
10471 @example
10472 pad="2*iw:2*ih:ow-iw:oh-ih"
10473 @end example
10474 @end itemize
10475
10476 @anchor{palettegen}
10477 @section palettegen
10478
10479 Generate one palette for a whole video stream.
10480
10481 It accepts the following options:
10482
10483 @table @option
10484 @item max_colors
10485 Set the maximum number of colors to quantize in the palette.
10486 Note: the palette will still contain 256 colors; the unused palette entries
10487 will be black.
10488
10489 @item reserve_transparent
10490 Create a palette of 255 colors maximum and reserve the last one for
10491 transparency. Reserving the transparency color is useful for GIF optimization.
10492 If not set, the maximum of colors in the palette will be 256. You probably want
10493 to disable this option for a standalone image.
10494 Set by default.
10495
10496 @item stats_mode
10497 Set statistics mode.
10498
10499 It accepts the following values:
10500 @table @samp
10501 @item full
10502 Compute full frame histograms.
10503 @item diff
10504 Compute histograms only for the part that differs from previous frame. This
10505 might be relevant to give more importance to the moving part of your input if
10506 the background is static.
10507 @item single
10508 Compute new histogram for each frame.
10509 @end table
10510
10511 Default value is @var{full}.
10512 @end table
10513
10514 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
10515 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
10516 color quantization of the palette. This information is also visible at
10517 @var{info} logging level.
10518
10519 @subsection Examples
10520
10521 @itemize
10522 @item
10523 Generate a representative palette of a given video using @command{ffmpeg}:
10524 @example
10525 ffmpeg -i input.mkv -vf palettegen palette.png
10526 @end example
10527 @end itemize
10528
10529 @section paletteuse
10530
10531 Use a palette to downsample an input video stream.
10532
10533 The filter takes two inputs: one video stream and a palette. The palette must
10534 be a 256 pixels image.
10535
10536 It accepts the following options:
10537
10538 @table @option
10539 @item dither
10540 Select dithering mode. Available algorithms are:
10541 @table @samp
10542 @item bayer
10543 Ordered 8x8 bayer dithering (deterministic)
10544 @item heckbert
10545 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
10546 Note: this dithering is sometimes considered "wrong" and is included as a
10547 reference.
10548 @item floyd_steinberg
10549 Floyd and Steingberg dithering (error diffusion)
10550 @item sierra2
10551 Frankie Sierra dithering v2 (error diffusion)
10552 @item sierra2_4a
10553 Frankie Sierra dithering v2 "Lite" (error diffusion)
10554 @end table
10555
10556 Default is @var{sierra2_4a}.
10557
10558 @item bayer_scale
10559 When @var{bayer} dithering is selected, this option defines the scale of the
10560 pattern (how much the crosshatch pattern is visible). A low value means more
10561 visible pattern for less banding, and higher value means less visible pattern
10562 at the cost of more banding.
10563
10564 The option must be an integer value in the range [0,5]. Default is @var{2}.
10565
10566 @item diff_mode
10567 If set, define the zone to process
10568
10569 @table @samp
10570 @item rectangle
10571 Only the changing rectangle will be reprocessed. This is similar to GIF
10572 cropping/offsetting compression mechanism. This option can be useful for speed
10573 if only a part of the image is changing, and has use cases such as limiting the
10574 scope of the error diffusal @option{dither} to the rectangle that bounds the
10575 moving scene (it leads to more deterministic output if the scene doesn't change
10576 much, and as a result less moving noise and better GIF compression).
10577 @end table
10578
10579 Default is @var{none}.
10580
10581 @item new
10582 Take new palette for each output frame.
10583 @end table
10584
10585 @subsection Examples
10586
10587 @itemize
10588 @item
10589 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
10590 using @command{ffmpeg}:
10591 @example
10592 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
10593 @end example
10594 @end itemize
10595
10596 @section perspective
10597
10598 Correct perspective of video not recorded perpendicular to the screen.
10599
10600 A description of the accepted parameters follows.
10601
10602 @table @option
10603 @item x0
10604 @item y0
10605 @item x1
10606 @item y1
10607 @item x2
10608 @item y2
10609 @item x3
10610 @item y3
10611 Set coordinates expression for top left, top right, bottom left and bottom right corners.
10612 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
10613 If the @code{sense} option is set to @code{source}, then the specified points will be sent
10614 to the corners of the destination. If the @code{sense} option is set to @code{destination},
10615 then the corners of the source will be sent to the specified coordinates.
10616
10617 The expressions can use the following variables:
10618
10619 @table @option
10620 @item W
10621 @item H
10622 the width and height of video frame.
10623 @item in
10624 Input frame count.
10625 @item on
10626 Output frame count.
10627 @end table
10628
10629 @item interpolation
10630 Set interpolation for perspective correction.
10631
10632 It accepts the following values:
10633 @table @samp
10634 @item linear
10635 @item cubic
10636 @end table
10637
10638 Default value is @samp{linear}.
10639
10640 @item sense
10641 Set interpretation of coordinate options.
10642
10643 It accepts the following values:
10644 @table @samp
10645 @item 0, source
10646
10647 Send point in the source specified by the given coordinates to
10648 the corners of the destination.
10649
10650 @item 1, destination
10651
10652 Send the corners of the source to the point in the destination specified
10653 by the given coordinates.
10654
10655 Default value is @samp{source}.
10656 @end table
10657
10658 @item eval
10659 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
10660
10661 It accepts the following values:
10662 @table @samp
10663 @item init
10664 only evaluate expressions once during the filter initialization or
10665 when a command is processed
10666
10667 @item frame
10668 evaluate expressions for each incoming frame
10669 @end table
10670
10671 Default value is @samp{init}.
10672 @end table
10673
10674 @section phase
10675
10676 Delay interlaced video by one field time so that the field order changes.
10677
10678 The intended use is to fix PAL movies that have been captured with the
10679 opposite field order to the film-to-video transfer.
10680
10681 A description of the accepted parameters follows.
10682
10683 @table @option
10684 @item mode
10685 Set phase mode.
10686
10687 It accepts the following values:
10688 @table @samp
10689 @item t
10690 Capture field order top-first, transfer bottom-first.
10691 Filter will delay the bottom field.
10692
10693 @item b
10694 Capture field order bottom-first, transfer top-first.
10695 Filter will delay the top field.
10696
10697 @item p
10698 Capture and transfer with the same field order. This mode only exists
10699 for the documentation of the other options to refer to, but if you
10700 actually select it, the filter will faithfully do nothing.
10701
10702 @item a
10703 Capture field order determined automatically by field flags, transfer
10704 opposite.
10705 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
10706 basis using field flags. If no field information is available,
10707 then this works just like @samp{u}.
10708
10709 @item u
10710 Capture unknown or varying, transfer opposite.
10711 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
10712 analyzing the images and selecting the alternative that produces best
10713 match between the fields.
10714
10715 @item T
10716 Capture top-first, transfer unknown or varying.
10717 Filter selects among @samp{t} and @samp{p} using image analysis.
10718
10719 @item B
10720 Capture bottom-first, transfer unknown or varying.
10721 Filter selects among @samp{b} and @samp{p} using image analysis.
10722
10723 @item A
10724 Capture determined by field flags, transfer unknown or varying.
10725 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
10726 image analysis. If no field information is available, then this works just
10727 like @samp{U}. This is the default mode.
10728
10729 @item U
10730 Both capture and transfer unknown or varying.
10731 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
10732 @end table
10733 @end table
10734
10735 @section pixdesctest
10736
10737 Pixel format descriptor test filter, mainly useful for internal
10738 testing. The output video should be equal to the input video.
10739
10740 For example:
10741 @example
10742 format=monow, pixdesctest
10743 @end example
10744
10745 can be used to test the monowhite pixel format descriptor definition.
10746
10747 @section pp
10748
10749 Enable the specified chain of postprocessing subfilters using libpostproc. This
10750 library should be automatically selected with a GPL build (@code{--enable-gpl}).
10751 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
10752 Each subfilter and some options have a short and a long name that can be used
10753 interchangeably, i.e. dr/dering are the same.
10754
10755 The filters accept the following options:
10756
10757 @table @option
10758 @item subfilters
10759 Set postprocessing subfilters string.
10760 @end table
10761
10762 All subfilters share common options to determine their scope:
10763
10764 @table @option
10765 @item a/autoq
10766 Honor the quality commands for this subfilter.
10767
10768 @item c/chrom
10769 Do chrominance filtering, too (default).
10770
10771 @item y/nochrom
10772 Do luminance filtering only (no chrominance).
10773
10774 @item n/noluma
10775 Do chrominance filtering only (no luminance).
10776 @end table
10777
10778 These options can be appended after the subfilter name, separated by a '|'.
10779
10780 Available subfilters are:
10781
10782 @table @option
10783 @item hb/hdeblock[|difference[|flatness]]
10784 Horizontal deblocking filter
10785 @table @option
10786 @item difference
10787 Difference factor where higher values mean more deblocking (default: @code{32}).
10788 @item flatness
10789 Flatness threshold where lower values mean more deblocking (default: @code{39}).
10790 @end table
10791
10792 @item vb/vdeblock[|difference[|flatness]]
10793 Vertical deblocking filter
10794 @table @option
10795 @item difference
10796 Difference factor where higher values mean more deblocking (default: @code{32}).
10797 @item flatness
10798 Flatness threshold where lower values mean more deblocking (default: @code{39}).
10799 @end table
10800
10801 @item ha/hadeblock[|difference[|flatness]]
10802 Accurate horizontal deblocking filter
10803 @table @option
10804 @item difference
10805 Difference factor where higher values mean more deblocking (default: @code{32}).
10806 @item flatness
10807 Flatness threshold where lower values mean more deblocking (default: @code{39}).
10808 @end table
10809
10810 @item va/vadeblock[|difference[|flatness]]
10811 Accurate vertical deblocking filter
10812 @table @option
10813 @item difference
10814 Difference factor where higher values mean more deblocking (default: @code{32}).
10815 @item flatness
10816 Flatness threshold where lower values mean more deblocking (default: @code{39}).
10817 @end table
10818 @end table
10819
10820 The horizontal and vertical deblocking filters share the difference and
10821 flatness values so you cannot set different horizontal and vertical
10822 thresholds.
10823
10824 @table @option
10825 @item h1/x1hdeblock
10826 Experimental horizontal deblocking filter
10827
10828 @item v1/x1vdeblock
10829 Experimental vertical deblocking filter
10830
10831 @item dr/dering
10832 Deringing filter
10833
10834 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
10835 @table @option
10836 @item threshold1
10837 larger -> stronger filtering
10838 @item threshold2
10839 larger -> stronger filtering
10840 @item threshold3
10841 larger -> stronger filtering
10842 @end table
10843
10844 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
10845 @table @option
10846 @item f/fullyrange
10847 Stretch luminance to @code{0-255}.
10848 @end table
10849
10850 @item lb/linblenddeint
10851 Linear blend deinterlacing filter that deinterlaces the given block by
10852 filtering all lines with a @code{(1 2 1)} filter.
10853
10854 @item li/linipoldeint
10855 Linear interpolating deinterlacing filter that deinterlaces the given block by
10856 linearly interpolating every second line.
10857
10858 @item ci/cubicipoldeint
10859 Cubic interpolating deinterlacing filter deinterlaces the given block by
10860 cubically interpolating every second line.
10861
10862 @item md/mediandeint
10863 Median deinterlacing filter that deinterlaces the given block by applying a
10864 median filter to every second line.
10865
10866 @item fd/ffmpegdeint
10867 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
10868 second line with a @code{(-1 4 2 4 -1)} filter.
10869
10870 @item l5/lowpass5
10871 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
10872 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
10873
10874 @item fq/forceQuant[|quantizer]
10875 Overrides the quantizer table from the input with the constant quantizer you
10876 specify.
10877 @table @option
10878 @item quantizer
10879 Quantizer to use
10880 @end table
10881
10882 @item de/default
10883 Default pp filter combination (@code{hb|a,vb|a,dr|a})
10884
10885 @item fa/fast
10886 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
10887
10888 @item ac
10889 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
10890 @end table
10891
10892 @subsection Examples
10893
10894 @itemize
10895 @item
10896 Apply horizontal and vertical deblocking, deringing and automatic
10897 brightness/contrast:
10898 @example
10899 pp=hb/vb/dr/al
10900 @end example
10901
10902 @item
10903 Apply default filters without brightness/contrast correction:
10904 @example
10905 pp=de/-al
10906 @end example
10907
10908 @item
10909 Apply default filters and temporal denoiser:
10910 @example
10911 pp=default/tmpnoise|1|2|3
10912 @end example
10913
10914 @item
10915 Apply deblocking on luminance only, and switch vertical deblocking on or off
10916 automatically depending on available CPU time:
10917 @example
10918 pp=hb|y/vb|a
10919 @end example
10920 @end itemize
10921
10922 @section pp7
10923 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
10924 similar to spp = 6 with 7 point DCT, where only the center sample is
10925 used after IDCT.
10926
10927 The filter accepts the following options:
10928
10929 @table @option
10930 @item qp
10931 Force a constant quantization parameter. It accepts an integer in range
10932 0 to 63. If not set, the filter will use the QP from the video stream
10933 (if available).
10934
10935 @item mode
10936 Set thresholding mode. Available modes are:
10937
10938 @table @samp
10939 @item hard
10940 Set hard thresholding.
10941 @item soft
10942 Set soft thresholding (better de-ringing effect, but likely blurrier).
10943 @item medium
10944 Set medium thresholding (good results, default).
10945 @end table
10946 @end table
10947
10948 @section prewitt
10949 Apply prewitt operator to input video stream.
10950
10951 The filter accepts the following option:
10952
10953 @table @option
10954 @item planes
10955 Set which planes will be processed, unprocessed planes will be copied.
10956 By default value 0xf, all planes will be processed.
10957
10958 @item scale
10959 Set value which will be multiplied with filtered result.
10960
10961 @item delta
10962 Set value which will be added to filtered result.
10963 @end table
10964
10965 @section psnr
10966
10967 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
10968 Ratio) between two input videos.
10969
10970 This filter takes in input two input videos, the first input is
10971 considered the "main" source and is passed unchanged to the
10972 output. The second input is used as a "reference" video for computing
10973 the PSNR.
10974
10975 Both video inputs must have the same resolution and pixel format for
10976 this filter to work correctly. Also it assumes that both inputs
10977 have the same number of frames, which are compared one by one.
10978
10979 The obtained average PSNR is printed through the logging system.
10980
10981 The filter stores the accumulated MSE (mean squared error) of each
10982 frame, and at the end of the processing it is averaged across all frames
10983 equally, and the following formula is applied to obtain the PSNR:
10984
10985 @example
10986 PSNR = 10*log10(MAX^2/MSE)
10987 @end example
10988
10989 Where MAX is the average of the maximum values of each component of the
10990 image.
10991
10992 The description of the accepted parameters follows.
10993
10994 @table @option
10995 @item stats_file, f
10996 If specified the filter will use the named file to save the PSNR of
10997 each individual frame. When filename equals "-" the data is sent to
10998 standard output.
10999
11000 @item stats_version
11001 Specifies which version of the stats file format to use. Details of
11002 each format are written below.
11003 Default value is 1.
11004
11005 @item stats_add_max
11006 Determines whether the max value is output to the stats log.
11007 Default value is 0.
11008 Requires stats_version >= 2. If this is set and stats_version < 2,
11009 the filter will return an error.
11010 @end table
11011
11012 The file printed if @var{stats_file} is selected, contains a sequence of
11013 key/value pairs of the form @var{key}:@var{value} for each compared
11014 couple of frames.
11015
11016 If a @var{stats_version} greater than 1 is specified, a header line precedes
11017 the list of per-frame-pair stats, with key value pairs following the frame
11018 format with the following parameters:
11019
11020 @table @option
11021 @item psnr_log_version
11022 The version of the log file format. Will match @var{stats_version}.
11023
11024 @item fields
11025 A comma separated list of the per-frame-pair parameters included in
11026 the log.
11027 @end table
11028
11029 A description of each shown per-frame-pair parameter follows:
11030
11031 @table @option
11032 @item n
11033 sequential number of the input frame, starting from 1
11034
11035 @item mse_avg
11036 Mean Square Error pixel-by-pixel average difference of the compared
11037 frames, averaged over all the image components.
11038
11039 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_g, mse_a
11040 Mean Square Error pixel-by-pixel average difference of the compared
11041 frames for the component specified by the suffix.
11042
11043 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
11044 Peak Signal to Noise ratio of the compared frames for the component
11045 specified by the suffix.
11046
11047 @item max_avg, max_y, max_u, max_v
11048 Maximum allowed value for each channel, and average over all
11049 channels.
11050 @end table
11051
11052 For example:
11053 @example
11054 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
11055 [main][ref] psnr="stats_file=stats.log" [out]
11056 @end example
11057
11058 On this example the input file being processed is compared with the
11059 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
11060 is stored in @file{stats.log}.
11061
11062 @anchor{pullup}
11063 @section pullup
11064
11065 Pulldown reversal (inverse telecine) filter, capable of handling mixed
11066 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
11067 content.
11068
11069 The pullup filter is designed to take advantage of future context in making
11070 its decisions. This filter is stateless in the sense that it does not lock
11071 onto a pattern to follow, but it instead looks forward to the following
11072 fields in order to identify matches and rebuild progressive frames.
11073
11074 To produce content with an even framerate, insert the fps filter after
11075 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
11076 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
11077
11078 The filter accepts the following options:
11079
11080 @table @option
11081 @item jl
11082 @item jr
11083 @item jt
11084 @item jb
11085 These options set the amount of "junk" to ignore at the left, right, top, and
11086 bottom of the image, respectively. Left and right are in units of 8 pixels,
11087 while top and bottom are in units of 2 lines.
11088 The default is 8 pixels on each side.
11089
11090 @item sb
11091 Set the strict breaks. Setting this option to 1 will reduce the chances of
11092 filter generating an occasional mismatched frame, but it may also cause an
11093 excessive number of frames to be dropped during high motion sequences.
11094 Conversely, setting it to -1 will make filter match fields more easily.
11095 This may help processing of video where there is slight blurring between
11096 the fields, but may also cause there to be interlaced frames in the output.
11097 Default value is @code{0}.
11098
11099 @item mp
11100 Set the metric plane to use. It accepts the following values:
11101 @table @samp
11102 @item l
11103 Use luma plane.
11104
11105 @item u
11106 Use chroma blue plane.
11107
11108 @item v
11109 Use chroma red plane.
11110 @end table
11111
11112 This option may be set to use chroma plane instead of the default luma plane
11113 for doing filter's computations. This may improve accuracy on very clean
11114 source material, but more likely will decrease accuracy, especially if there
11115 is chroma noise (rainbow effect) or any grayscale video.
11116 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
11117 load and make pullup usable in realtime on slow machines.
11118 @end table
11119
11120 For best results (without duplicated frames in the output file) it is
11121 necessary to change the output frame rate. For example, to inverse
11122 telecine NTSC input:
11123 @example
11124 ffmpeg -i input -vf pullup -r 24000/1001 ...
11125 @end example
11126
11127 @section qp
11128
11129 Change video quantization parameters (QP).
11130
11131 The filter accepts the following option:
11132
11133 @table @option
11134 @item qp
11135 Set expression for quantization parameter.
11136 @end table
11137
11138 The expression is evaluated through the eval API and can contain, among others,
11139 the following constants:
11140
11141 @table @var
11142 @item known
11143 1 if index is not 129, 0 otherwise.
11144
11145 @item qp
11146 Sequentional index starting from -129 to 128.
11147 @end table
11148
11149 @subsection Examples
11150
11151 @itemize
11152 @item
11153 Some equation like:
11154 @example
11155 qp=2+2*sin(PI*qp)
11156 @end example
11157 @end itemize
11158
11159 @section random
11160
11161 Flush video frames from internal cache of frames into a random order.
11162 No frame is discarded.
11163 Inspired by @ref{frei0r} nervous filter.
11164
11165 @table @option
11166 @item frames
11167 Set size in number of frames of internal cache, in range from @code{2} to
11168 @code{512}. Default is @code{30}.
11169
11170 @item seed
11171 Set seed for random number generator, must be an integer included between
11172 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
11173 less than @code{0}, the filter will try to use a good random seed on a
11174 best effort basis.
11175 @end table
11176
11177 @section readvitc
11178
11179 Read vertical interval timecode (VITC) information from the top lines of a
11180 video frame.
11181
11182 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
11183 timecode value, if a valid timecode has been detected. Further metadata key
11184 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
11185 timecode data has been found or not.
11186
11187 This filter accepts the following options:
11188
11189 @table @option
11190 @item scan_max
11191 Set the maximum number of lines to scan for VITC data. If the value is set to
11192 @code{-1} the full video frame is scanned. Default is @code{45}.
11193
11194 @item thr_b
11195 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
11196 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
11197
11198 @item thr_w
11199 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
11200 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
11201 @end table
11202
11203 @subsection Examples
11204
11205 @itemize
11206 @item
11207 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
11208 draw @code{--:--:--:--} as a placeholder:
11209 @example
11210 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
11211 @end example
11212 @end itemize
11213
11214 @section remap
11215
11216 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
11217
11218 Destination pixel at position (X, Y) will be picked from source (x, y) position
11219 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
11220 value for pixel will be used for destination pixel.
11221
11222 Xmap and Ymap input video streams must be of same dimensions. Output video stream
11223 will have Xmap/Ymap video stream dimensions.
11224 Xmap and Ymap input video streams are 16bit depth, single channel.
11225
11226 @section removegrain
11227
11228 The removegrain filter is a spatial denoiser for progressive video.
11229
11230 @table @option
11231 @item m0
11232 Set mode for the first plane.
11233
11234 @item m1
11235 Set mode for the second plane.
11236
11237 @item m2
11238 Set mode for the third plane.
11239
11240 @item m3
11241 Set mode for the fourth plane.
11242 @end table
11243
11244 Range of mode is from 0 to 24. Description of each mode follows:
11245
11246 @table @var
11247 @item 0
11248 Leave input plane unchanged. Default.
11249
11250 @item 1
11251 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
11252
11253 @item 2
11254 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
11255
11256 @item 3
11257 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
11258
11259 @item 4
11260 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
11261 This is equivalent to a median filter.
11262
11263 @item 5
11264 Line-sensitive clipping giving the minimal change.
11265
11266 @item 6
11267 Line-sensitive clipping, intermediate.
11268
11269 @item 7
11270 Line-sensitive clipping, intermediate.
11271
11272 @item 8
11273 Line-sensitive clipping, intermediate.
11274
11275 @item 9
11276 Line-sensitive clipping on a line where the neighbours pixels are the closest.
11277
11278 @item 10
11279 Replaces the target pixel with the closest neighbour.
11280
11281 @item 11
11282 [1 2 1] horizontal and vertical kernel blur.
11283
11284 @item 12
11285 Same as mode 11.
11286
11287 @item 13
11288 Bob mode, interpolates top field from the line where the neighbours
11289 pixels are the closest.
11290
11291 @item 14
11292 Bob mode, interpolates bottom field from the line where the neighbours
11293 pixels are the closest.
11294
11295 @item 15
11296 Bob mode, interpolates top field. Same as 13 but with a more complicated
11297 interpolation formula.
11298
11299 @item 16
11300 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
11301 interpolation formula.
11302
11303 @item 17
11304 Clips the pixel with the minimum and maximum of respectively the maximum and
11305 minimum of each pair of opposite neighbour pixels.
11306
11307 @item 18
11308 Line-sensitive clipping using opposite neighbours whose greatest distance from
11309 the current pixel is minimal.
11310
11311 @item 19
11312 Replaces the pixel with the average of its 8 neighbours.
11313
11314 @item 20
11315 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
11316
11317 @item 21
11318 Clips pixels using the averages of opposite neighbour.
11319
11320 @item 22
11321 Same as mode 21 but simpler and faster.
11322
11323 @item 23
11324 Small edge and halo removal, but reputed useless.
11325
11326 @item 24
11327 Similar as 23.
11328 @end table
11329
11330 @section removelogo
11331
11332 Suppress a TV station logo, using an image file to determine which
11333 pixels comprise the logo. It works by filling in the pixels that
11334 comprise the logo with neighboring pixels.
11335
11336 The filter accepts the following options:
11337
11338 @table @option
11339 @item filename, f
11340 Set the filter bitmap file, which can be any image format supported by
11341 libavformat. The width and height of the image file must match those of the
11342 video stream being processed.
11343 @end table
11344
11345 Pixels in the provided bitmap image with a value of zero are not
11346 considered part of the logo, non-zero pixels are considered part of
11347 the logo. If you use white (255) for the logo and black (0) for the
11348 rest, you will be safe. For making the filter bitmap, it is
11349 recommended to take a screen capture of a black frame with the logo
11350 visible, and then using a threshold filter followed by the erode
11351 filter once or twice.
11352
11353 If needed, little splotches can be fixed manually. Remember that if
11354 logo pixels are not covered, the filter quality will be much
11355 reduced. Marking too many pixels as part of the logo does not hurt as
11356 much, but it will increase the amount of blurring needed to cover over
11357 the image and will destroy more information than necessary, and extra
11358 pixels will slow things down on a large logo.
11359
11360 @section repeatfields
11361
11362 This filter uses the repeat_field flag from the Video ES headers and hard repeats
11363 fields based on its value.
11364
11365 @section reverse
11366
11367 Reverse a video clip.
11368
11369 Warning: This filter requires memory to buffer the entire clip, so trimming
11370 is suggested.
11371
11372 @subsection Examples
11373
11374 @itemize
11375 @item
11376 Take the first 5 seconds of a clip, and reverse it.
11377 @example
11378 trim=end=5,reverse
11379 @end example
11380 @end itemize
11381
11382 @section rotate
11383
11384 Rotate video by an arbitrary angle expressed in radians.
11385
11386 The filter accepts the following options:
11387
11388 A description of the optional parameters follows.
11389 @table @option
11390 @item angle, a
11391 Set an expression for the angle by which to rotate the input video
11392 clockwise, expressed as a number of radians. A negative value will
11393 result in a counter-clockwise rotation. By default it is set to "0".
11394
11395 This expression is evaluated for each frame.
11396
11397 @item out_w, ow
11398 Set the output width expression, default value is "iw".
11399 This expression is evaluated just once during configuration.
11400
11401 @item out_h, oh
11402 Set the output height expression, default value is "ih".
11403 This expression is evaluated just once during configuration.
11404
11405 @item bilinear
11406 Enable bilinear interpolation if set to 1, a value of 0 disables
11407 it. Default value is 1.
11408
11409 @item fillcolor, c
11410 Set the color used to fill the output area not covered by the rotated
11411 image. For the general syntax of this option, check the "Color" section in the
11412 ffmpeg-utils manual. If the special value "none" is selected then no
11413 background is printed (useful for example if the background is never shown).
11414
11415 Default value is "black".
11416 @end table
11417
11418 The expressions for the angle and the output size can contain the
11419 following constants and functions:
11420
11421 @table @option
11422 @item n
11423 sequential number of the input frame, starting from 0. It is always NAN
11424 before the first frame is filtered.
11425
11426 @item t
11427 time in seconds of the input frame, it is set to 0 when the filter is
11428 configured. It is always NAN before the first frame is filtered.
11429
11430 @item hsub
11431 @item vsub
11432 horizontal and vertical chroma subsample values. For example for the
11433 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
11434
11435 @item in_w, iw
11436 @item in_h, ih
11437 the input video width and height
11438
11439 @item out_w, ow
11440 @item out_h, oh
11441 the output width and height, that is the size of the padded area as
11442 specified by the @var{width} and @var{height} expressions
11443
11444 @item rotw(a)
11445 @item roth(a)
11446 the minimal width/height required for completely containing the input
11447 video rotated by @var{a} radians.
11448
11449 These are only available when computing the @option{out_w} and
11450 @option{out_h} expressions.
11451 @end table
11452
11453 @subsection Examples
11454
11455 @itemize
11456 @item
11457 Rotate the input by PI/6 radians clockwise:
11458 @example
11459 rotate=PI/6
11460 @end example
11461
11462 @item
11463 Rotate the input by PI/6 radians counter-clockwise:
11464 @example
11465 rotate=-PI/6
11466 @end example
11467
11468 @item
11469 Rotate the input by 45 degrees clockwise:
11470 @example
11471 rotate=45*PI/180
11472 @end example
11473
11474 @item
11475 Apply a constant rotation with period T, starting from an angle of PI/3:
11476 @example
11477 rotate=PI/3+2*PI*t/T
11478 @end example
11479
11480 @item
11481 Make the input video rotation oscillating with a period of T
11482 seconds and an amplitude of A radians:
11483 @example
11484 rotate=A*sin(2*PI/T*t)
11485 @end example
11486
11487 @item
11488 Rotate the video, output size is chosen so that the whole rotating
11489 input video is always completely contained in the output:
11490 @example
11491 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
11492 @end example
11493
11494 @item
11495 Rotate the video, reduce the output size so that no background is ever
11496 shown:
11497 @example
11498 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
11499 @end example
11500 @end itemize
11501
11502 @subsection Commands
11503
11504 The filter supports the following commands:
11505
11506 @table @option
11507 @item a, angle
11508 Set the angle expression.
11509 The command accepts the same syntax of the corresponding option.
11510
11511 If the specified expression is not valid, it is kept at its current
11512 value.
11513 @end table
11514
11515 @section sab
11516
11517 Apply Shape Adaptive Blur.
11518
11519 The filter accepts the following options:
11520
11521 @table @option
11522 @item luma_radius, lr
11523 Set luma blur filter strength, must be a value in range 0.1-4.0, default
11524 value is 1.0. A greater value will result in a more blurred image, and
11525 in slower processing.
11526
11527 @item luma_pre_filter_radius, lpfr
11528 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
11529 value is 1.0.
11530
11531 @item luma_strength, ls
11532 Set luma maximum difference between pixels to still be considered, must
11533 be a value in the 0.1-100.0 range, default value is 1.0.
11534
11535 @item chroma_radius, cr
11536 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
11537 greater value will result in a more blurred image, and in slower
11538 processing.
11539
11540 @item chroma_pre_filter_radius, cpfr
11541 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
11542
11543 @item chroma_strength, cs
11544 Set chroma maximum difference between pixels to still be considered,
11545 must be a value in the -0.9-100.0 range.
11546 @end table
11547
11548 Each chroma option value, if not explicitly specified, is set to the
11549 corresponding luma option value.
11550
11551 @anchor{scale}
11552 @section scale
11553
11554 Scale (resize) the input video, using the libswscale library.
11555
11556 The scale filter forces the output display aspect ratio to be the same
11557 of the input, by changing the output sample aspect ratio.
11558
11559 If the input image format is different from the format requested by
11560 the next filter, the scale filter will convert the input to the
11561 requested format.
11562
11563 @subsection Options
11564 The filter accepts the following options, or any of the options
11565 supported by the libswscale scaler.
11566
11567 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
11568 the complete list of scaler options.
11569
11570 @table @option
11571 @item width, w
11572 @item height, h
11573 Set the output video dimension expression. Default value is the input
11574 dimension.
11575
11576 If the value is 0, the input width is used for the output.
11577
11578 If one of the values is -1, the scale filter will use a value that
11579 maintains the aspect ratio of the input image, calculated from the
11580 other specified dimension. If both of them are -1, the input size is
11581 used
11582
11583 If one of the values is -n with n > 1, the scale filter will also use a value
11584 that maintains the aspect ratio of the input image, calculated from the other
11585 specified dimension. After that it will, however, make sure that the calculated
11586 dimension is divisible by n and adjust the value if necessary.
11587
11588 See below for the list of accepted constants for use in the dimension
11589 expression.
11590
11591 @item eval
11592 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
11593
11594 @table @samp
11595 @item init
11596 Only evaluate expressions once during the filter initialization or when a command is processed.
11597
11598 @item frame
11599 Evaluate expressions for each incoming frame.
11600
11601 @end table
11602
11603 Default value is @samp{init}.
11604
11605
11606 @item interl
11607 Set the interlacing mode. It accepts the following values:
11608
11609 @table @samp
11610 @item 1
11611 Force interlaced aware scaling.
11612
11613 @item 0
11614 Do not apply interlaced scaling.
11615
11616 @item -1
11617 Select interlaced aware scaling depending on whether the source frames
11618 are flagged as interlaced or not.
11619 @end table
11620
11621 Default value is @samp{0}.
11622
11623 @item flags
11624 Set libswscale scaling flags. See
11625 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
11626 complete list of values. If not explicitly specified the filter applies
11627 the default flags.
11628
11629
11630 @item param0, param1
11631 Set libswscale input parameters for scaling algorithms that need them. See
11632 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
11633 complete documentation. If not explicitly specified the filter applies
11634 empty parameters.
11635
11636
11637
11638 @item size, s
11639 Set the video size. For the syntax of this option, check the
11640 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
11641
11642 @item in_color_matrix
11643 @item out_color_matrix
11644 Set in/output YCbCr color space type.
11645
11646 This allows the autodetected value to be overridden as well as allows forcing
11647 a specific value used for the output and encoder.
11648
11649 If not specified, the color space type depends on the pixel format.
11650
11651 Possible values:
11652
11653 @table @samp
11654 @item auto
11655 Choose automatically.
11656
11657 @item bt709
11658 Format conforming to International Telecommunication Union (ITU)
11659 Recommendation BT.709.
11660
11661 @item fcc
11662 Set color space conforming to the United States Federal Communications
11663 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
11664
11665 @item bt601
11666 Set color space conforming to:
11667
11668 @itemize
11669 @item
11670 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
11671
11672 @item
11673 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
11674
11675 @item
11676 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
11677
11678 @end itemize
11679
11680 @item smpte240m
11681 Set color space conforming to SMPTE ST 240:1999.
11682 @end table
11683
11684 @item in_range
11685 @item out_range
11686 Set in/output YCbCr sample range.
11687
11688 This allows the autodetected value to be overridden as well as allows forcing
11689 a specific value used for the output and encoder. If not specified, the
11690 range depends on the pixel format. Possible values:
11691
11692 @table @samp
11693 @item auto
11694 Choose automatically.
11695
11696 @item jpeg/full/pc
11697 Set full range (0-255 in case of 8-bit luma).
11698
11699 @item mpeg/tv
11700 Set "MPEG" range (16-235 in case of 8-bit luma).
11701 @end table
11702
11703 @item force_original_aspect_ratio
11704 Enable decreasing or increasing output video width or height if necessary to
11705 keep the original aspect ratio. Possible values:
11706
11707 @table @samp
11708 @item disable
11709 Scale the video as specified and disable this feature.
11710
11711 @item decrease
11712 The output video dimensions will automatically be decreased if needed.
11713
11714 @item increase
11715 The output video dimensions will automatically be increased if needed.
11716
11717 @end table
11718
11719 One useful instance of this option is that when you know a specific device's
11720 maximum allowed resolution, you can use this to limit the output video to
11721 that, while retaining the aspect ratio. For example, device A allows
11722 1280x720 playback, and your video is 1920x800. Using this option (set it to
11723 decrease) and specifying 1280x720 to the command line makes the output
11724 1280x533.
11725
11726 Please note that this is a different thing than specifying -1 for @option{w}
11727 or @option{h}, you still need to specify the output resolution for this option
11728 to work.
11729
11730 @end table
11731
11732 The values of the @option{w} and @option{h} options are expressions
11733 containing the following constants:
11734
11735 @table @var
11736 @item in_w
11737 @item in_h
11738 The input width and height
11739
11740 @item iw
11741 @item ih
11742 These are the same as @var{in_w} and @var{in_h}.
11743
11744 @item out_w
11745 @item out_h
11746 The output (scaled) width and height
11747
11748 @item ow
11749 @item oh
11750 These are the same as @var{out_w} and @var{out_h}
11751
11752 @item a
11753 The same as @var{iw} / @var{ih}
11754
11755 @item sar
11756 input sample aspect ratio
11757
11758 @item dar
11759 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
11760
11761 @item hsub
11762 @item vsub
11763 horizontal and vertical input chroma subsample values. For example for the
11764 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
11765
11766 @item ohsub
11767 @item ovsub
11768 horizontal and vertical output chroma subsample values. For example for the
11769 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
11770 @end table
11771
11772 @subsection Examples
11773
11774 @itemize
11775 @item
11776 Scale the input video to a size of 200x100
11777 @example
11778 scale=w=200:h=100
11779 @end example
11780
11781 This is equivalent to:
11782 @example
11783 scale=200:100
11784 @end example
11785
11786 or:
11787 @example
11788 scale=200x100
11789 @end example
11790
11791 @item
11792 Specify a size abbreviation for the output size:
11793 @example
11794 scale=qcif
11795 @end example
11796
11797 which can also be written as:
11798 @example
11799 scale=size=qcif
11800 @end example
11801
11802 @item
11803 Scale the input to 2x:
11804 @example
11805 scale=w=2*iw:h=2*ih
11806 @end example
11807
11808 @item
11809 The above is the same as:
11810 @example
11811 scale=2*in_w:2*in_h
11812 @end example
11813
11814 @item
11815 Scale the input to 2x with forced interlaced scaling:
11816 @example
11817 scale=2*iw:2*ih:interl=1
11818 @end example
11819
11820 @item
11821 Scale the input to half size:
11822 @example
11823 scale=w=iw/2:h=ih/2
11824 @end example
11825
11826 @item
11827 Increase the width, and set the height to the same size:
11828 @example
11829 scale=3/2*iw:ow
11830 @end example
11831
11832 @item
11833 Seek Greek harmony:
11834 @example
11835 scale=iw:1/PHI*iw
11836 scale=ih*PHI:ih
11837 @end example
11838
11839 @item
11840 Increase the height, and set the width to 3/2 of the height:
11841 @example
11842 scale=w=3/2*oh:h=3/5*ih
11843 @end example
11844
11845 @item
11846 Increase the size, making the size a multiple of the chroma
11847 subsample values:
11848 @example
11849 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
11850 @end example
11851
11852 @item
11853 Increase the width to a maximum of 500 pixels,
11854 keeping the same aspect ratio as the input:
11855 @example
11856 scale=w='min(500\, iw*3/2):h=-1'
11857 @end example
11858 @end itemize
11859
11860 @subsection Commands
11861
11862 This filter supports the following commands:
11863 @table @option
11864 @item width, w
11865 @item height, h
11866 Set the output video dimension expression.
11867 The command accepts the same syntax of the corresponding option.
11868
11869 If the specified expression is not valid, it is kept at its current
11870 value.
11871 @end table
11872
11873 @section scale_npp
11874
11875 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
11876 format conversion on CUDA video frames. Setting the output width and height
11877 works in the same way as for the @var{scale} filter.
11878
11879 The following additional options are accepted:
11880 @table @option
11881 @item format
11882 The pixel format of the output CUDA frames. If set to the string "same" (the
11883 default), the input format will be kept. Note that automatic format negotiation
11884 and conversion is not yet supported for hardware frames
11885
11886 @item interp_algo
11887 The interpolation algorithm used for resizing. One of the following:
11888 @table @option
11889 @item nn
11890 Nearest neighbour.
11891
11892 @item linear
11893 @item cubic
11894 @item cubic2p_bspline
11895 2-parameter cubic (B=1, C=0)
11896
11897 @item cubic2p_catmullrom
11898 2-parameter cubic (B=0, C=1/2)
11899
11900 @item cubic2p_b05c03
11901 2-parameter cubic (B=1/2, C=3/10)
11902
11903 @item super
11904 Supersampling
11905
11906 @item lanczos
11907 @end table
11908
11909 @end table
11910
11911 @section scale2ref
11912
11913 Scale (resize) the input video, based on a reference video.
11914
11915 See the scale filter for available options, scale2ref supports the same but
11916 uses the reference video instead of the main input as basis.
11917
11918 @subsection Examples
11919
11920 @itemize
11921 @item
11922 Scale a subtitle stream to match the main video in size before overlaying
11923 @example
11924 'scale2ref[b][a];[a][b]overlay'
11925 @end example
11926 @end itemize
11927
11928 @anchor{selectivecolor}
11929 @section selectivecolor
11930
11931 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
11932 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
11933 by the "purity" of the color (that is, how saturated it already is).
11934
11935 This filter is similar to the Adobe Photoshop Selective Color tool.
11936
11937 The filter accepts the following options:
11938
11939 @table @option
11940 @item correction_method
11941 Select color correction method.
11942
11943 Available values are:
11944 @table @samp
11945 @item absolute
11946 Specified adjustments are applied "as-is" (added/subtracted to original pixel
11947 component value).
11948 @item relative
11949 Specified adjustments are relative to the original component value.
11950 @end table
11951 Default is @code{absolute}.
11952 @item reds
11953 Adjustments for red pixels (pixels where the red component is the maximum)
11954 @item yellows
11955 Adjustments for yellow pixels (pixels where the blue component is the minimum)
11956 @item greens
11957 Adjustments for green pixels (pixels where the green component is the maximum)
11958 @item cyans
11959 Adjustments for cyan pixels (pixels where the red component is the minimum)
11960 @item blues
11961 Adjustments for blue pixels (pixels where the blue component is the maximum)
11962 @item magentas
11963 Adjustments for magenta pixels (pixels where the green component is the minimum)
11964 @item whites
11965 Adjustments for white pixels (pixels where all components are greater than 128)
11966 @item neutrals
11967 Adjustments for all pixels except pure black and pure white
11968 @item blacks
11969 Adjustments for black pixels (pixels where all components are lesser than 128)
11970 @item psfile
11971 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
11972 @end table
11973
11974 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
11975 4 space separated floating point adjustment values in the [-1,1] range,
11976 respectively to adjust the amount of cyan, magenta, yellow and black for the
11977 pixels of its range.
11978
11979 @subsection Examples
11980
11981 @itemize
11982 @item
11983 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
11984 increase magenta by 27% in blue areas:
11985 @example
11986 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
11987 @end example
11988
11989 @item
11990 Use a Photoshop selective color preset:
11991 @example
11992 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
11993 @end example
11994 @end itemize
11995
11996 @anchor{separatefields}
11997 @section separatefields
11998
11999 The @code{separatefields} takes a frame-based video input and splits
12000 each frame into its components fields, producing a new half height clip
12001 with twice the frame rate and twice the frame count.
12002
12003 This filter use field-dominance information in frame to decide which
12004 of each pair of fields to place first in the output.
12005 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
12006
12007 @section setdar, setsar
12008
12009 The @code{setdar} filter sets the Display Aspect Ratio for the filter
12010 output video.
12011
12012 This is done by changing the specified Sample (aka Pixel) Aspect
12013 Ratio, according to the following equation:
12014 @example
12015 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
12016 @end example
12017
12018 Keep in mind that the @code{setdar} filter does not modify the pixel
12019 dimensions of the video frame. Also, the display aspect ratio set by
12020 this filter may be changed by later filters in the filterchain,
12021 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
12022 applied.
12023
12024 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
12025 the filter output video.
12026
12027 Note that as a consequence of the application of this filter, the
12028 output display aspect ratio will change according to the equation
12029 above.
12030
12031 Keep in mind that the sample aspect ratio set by the @code{setsar}
12032 filter may be changed by later filters in the filterchain, e.g. if
12033 another "setsar" or a "setdar" filter is applied.
12034
12035 It accepts the following parameters:
12036
12037 @table @option
12038 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
12039 Set the aspect ratio used by the filter.
12040
12041 The parameter can be a floating point number string, an expression, or
12042 a string of the form @var{num}:@var{den}, where @var{num} and
12043 @var{den} are the numerator and denominator of the aspect ratio. If
12044 the parameter is not specified, it is assumed the value "0".
12045 In case the form "@var{num}:@var{den}" is used, the @code{:} character
12046 should be escaped.
12047
12048 @item max
12049 Set the maximum integer value to use for expressing numerator and
12050 denominator when reducing the expressed aspect ratio to a rational.
12051 Default value is @code{100}.
12052
12053 @end table
12054
12055 The parameter @var{sar} is an expression containing
12056 the following constants:
12057
12058 @table @option
12059 @item E, PI, PHI
12060 These are approximated values for the mathematical constants e
12061 (Euler's number), pi (Greek pi), and phi (the golden ratio).
12062
12063 @item w, h
12064 The input width and height.
12065
12066 @item a
12067 These are the same as @var{w} / @var{h}.
12068
12069 @item sar
12070 The input sample aspect ratio.
12071
12072 @item dar
12073 The input display aspect ratio. It is the same as
12074 (@var{w} / @var{h}) * @var{sar}.
12075
12076 @item hsub, vsub
12077 Horizontal and vertical chroma subsample values. For example, for the
12078 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
12079 @end table
12080
12081 @subsection Examples
12082
12083 @itemize
12084
12085 @item
12086 To change the display aspect ratio to 16:9, specify one of the following:
12087 @example
12088 setdar=dar=1.77777
12089 setdar=dar=16/9
12090 @end example
12091
12092 @item
12093 To change the sample aspect ratio to 10:11, specify:
12094 @example
12095 setsar=sar=10/11
12096 @end example
12097
12098 @item
12099 To set a display aspect ratio of 16:9, and specify a maximum integer value of
12100 1000 in the aspect ratio reduction, use the command:
12101 @example
12102 setdar=ratio=16/9:max=1000
12103 @end example
12104
12105 @end itemize
12106
12107 @anchor{setfield}
12108 @section setfield
12109
12110 Force field for the output video frame.
12111
12112 The @code{setfield} filter marks the interlace type field for the
12113 output frames. It does not change the input frame, but only sets the
12114 corresponding property, which affects how the frame is treated by
12115 following filters (e.g. @code{fieldorder} or @code{yadif}).
12116
12117 The filter accepts the following options:
12118
12119 @table @option
12120
12121 @item mode
12122 Available values are:
12123
12124 @table @samp
12125 @item auto
12126 Keep the same field property.
12127
12128 @item bff
12129 Mark the frame as bottom-field-first.
12130
12131 @item tff
12132 Mark the frame as top-field-first.
12133
12134 @item prog
12135 Mark the frame as progressive.
12136 @end table
12137 @end table
12138
12139 @section showinfo
12140
12141 Show a line containing various information for each input video frame.
12142 The input video is not modified.
12143
12144 The shown line contains a sequence of key/value pairs of the form
12145 @var{key}:@var{value}.
12146
12147 The following values are shown in the output:
12148
12149 @table @option
12150 @item n
12151 The (sequential) number of the input frame, starting from 0.
12152
12153 @item pts
12154 The Presentation TimeStamp of the input frame, expressed as a number of
12155 time base units. The time base unit depends on the filter input pad.
12156
12157 @item pts_time
12158 The Presentation TimeStamp of the input frame, expressed as a number of
12159 seconds.
12160
12161 @item pos
12162 The position of the frame in the input stream, or -1 if this information is
12163 unavailable and/or meaningless (for example in case of synthetic video).
12164
12165 @item fmt
12166 The pixel format name.
12167
12168 @item sar
12169 The sample aspect ratio of the input frame, expressed in the form
12170 @var{num}/@var{den}.
12171
12172 @item s
12173 The size of the input frame. For the syntax of this option, check the
12174 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
12175
12176 @item i
12177 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
12178 for bottom field first).
12179
12180 @item iskey
12181 This is 1 if the frame is a key frame, 0 otherwise.
12182
12183 @item type
12184 The picture type of the input frame ("I" for an I-frame, "P" for a
12185 P-frame, "B" for a B-frame, or "?" for an unknown type).
12186 Also refer to the documentation of the @code{AVPictureType} enum and of
12187 the @code{av_get_picture_type_char} function defined in
12188 @file{libavutil/avutil.h}.
12189
12190 @item checksum
12191 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
12192
12193 @item plane_checksum
12194 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
12195 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
12196 @end table
12197
12198 @section showpalette
12199
12200 Displays the 256 colors palette of each frame. This filter is only relevant for
12201 @var{pal8} pixel format frames.
12202
12203 It accepts the following option:
12204
12205 @table @option
12206 @item s
12207 Set the size of the box used to represent one palette color entry. Default is
12208 @code{30} (for a @code{30x30} pixel box).
12209 @end table
12210
12211 @section shuffleframes
12212
12213 Reorder and/or duplicate video frames.
12214
12215 It accepts the following parameters:
12216
12217 @table @option
12218 @item mapping
12219 Set the destination indexes of input frames.
12220 This is space or '|' separated list of indexes that maps input frames to output
12221 frames. Number of indexes also sets maximal value that each index may have.
12222 @end table
12223
12224 The first frame has the index 0. The default is to keep the input unchanged.
12225
12226 @subsection Examples
12227
12228 @itemize
12229 @item
12230 Swap second and third frame of every three frames of the input:
12231 @example
12232 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
12233 @end example
12234
12235 @item
12236 Swap 10th and 1st frame of every ten frames of the input:
12237 @example
12238 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
12239 @end example
12240 @end itemize
12241
12242 @section shuffleplanes
12243
12244 Reorder and/or duplicate video planes.
12245
12246 It accepts the following parameters:
12247
12248 @table @option
12249
12250 @item map0
12251 The index of the input plane to be used as the first output plane.
12252
12253 @item map1
12254 The index of the input plane to be used as the second output plane.
12255
12256 @item map2
12257 The index of the input plane to be used as the third output plane.
12258
12259 @item map3
12260 The index of the input plane to be used as the fourth output plane.
12261
12262 @end table
12263
12264 The first plane has the index 0. The default is to keep the input unchanged.
12265
12266 @subsection Examples
12267
12268 @itemize
12269 @item
12270 Swap the second and third planes of the input:
12271 @example
12272 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
12273 @end example
12274 @end itemize
12275
12276 @anchor{signalstats}
12277 @section signalstats
12278 Evaluate various visual metrics that assist in determining issues associated
12279 with the digitization of analog video media.
12280
12281 By default the filter will log these metadata values:
12282
12283 @table @option
12284 @item YMIN
12285 Display the minimal Y value contained within the input frame. Expressed in
12286 range of [0-255].
12287
12288 @item YLOW
12289 Display the Y value at the 10% percentile within the input frame. Expressed in
12290 range of [0-255].
12291
12292 @item YAVG
12293 Display the average Y value within the input frame. Expressed in range of
12294 [0-255].
12295
12296 @item YHIGH
12297 Display the Y value at the 90% percentile within the input frame. Expressed in
12298 range of [0-255].
12299
12300 @item YMAX
12301 Display the maximum Y value contained within the input frame. Expressed in
12302 range of [0-255].
12303
12304 @item UMIN
12305 Display the minimal U value contained within the input frame. Expressed in
12306 range of [0-255].
12307
12308 @item ULOW
12309 Display the U value at the 10% percentile within the input frame. Expressed in
12310 range of [0-255].
12311
12312 @item UAVG
12313 Display the average U value within the input frame. Expressed in range of
12314 [0-255].
12315
12316 @item UHIGH
12317 Display the U value at the 90% percentile within the input frame. Expressed in
12318 range of [0-255].
12319
12320 @item UMAX
12321 Display the maximum U value contained within the input frame. Expressed in
12322 range of [0-255].
12323
12324 @item VMIN
12325 Display the minimal V value contained within the input frame. Expressed in
12326 range of [0-255].
12327
12328 @item VLOW
12329 Display the V value at the 10% percentile within the input frame. Expressed in
12330 range of [0-255].
12331
12332 @item VAVG
12333 Display the average V value within the input frame. Expressed in range of
12334 [0-255].
12335
12336 @item VHIGH
12337 Display the V value at the 90% percentile within the input frame. Expressed in
12338 range of [0-255].
12339
12340 @item VMAX
12341 Display the maximum V value contained within the input frame. Expressed in
12342 range of [0-255].
12343
12344 @item SATMIN
12345 Display the minimal saturation value contained within the input frame.
12346 Expressed in range of [0-~181.02].
12347
12348 @item SATLOW
12349 Display the saturation value at the 10% percentile within the input frame.
12350 Expressed in range of [0-~181.02].
12351
12352 @item SATAVG
12353 Display the average saturation value within the input frame. Expressed in range
12354 of [0-~181.02].
12355
12356 @item SATHIGH
12357 Display the saturation value at the 90% percentile within the input frame.
12358 Expressed in range of [0-~181.02].
12359
12360 @item SATMAX
12361 Display the maximum saturation value contained within the input frame.
12362 Expressed in range of [0-~181.02].
12363
12364 @item HUEMED
12365 Display the median value for hue within the input frame. Expressed in range of
12366 [0-360].
12367
12368 @item HUEAVG
12369 Display the average value for hue within the input frame. Expressed in range of
12370 [0-360].
12371
12372 @item YDIF
12373 Display the average of sample value difference between all values of the Y
12374 plane in the current frame and corresponding values of the previous input frame.
12375 Expressed in range of [0-255].
12376
12377 @item UDIF
12378 Display the average of sample value difference between all values of the U
12379 plane in the current frame and corresponding values of the previous input frame.
12380 Expressed in range of [0-255].
12381
12382 @item VDIF
12383 Display the average of sample value difference between all values of the V
12384 plane in the current frame and corresponding values of the previous input frame.
12385 Expressed in range of [0-255].
12386
12387 @item YBITDEPTH
12388 Display bit depth of Y plane in current frame.
12389 Expressed in range of [0-16].
12390
12391 @item UBITDEPTH
12392 Display bit depth of U plane in current frame.
12393 Expressed in range of [0-16].
12394
12395 @item VBITDEPTH
12396 Display bit depth of V plane in current frame.
12397 Expressed in range of [0-16].
12398 @end table
12399
12400 The filter accepts the following options:
12401
12402 @table @option
12403 @item stat
12404 @item out
12405
12406 @option{stat} specify an additional form of image analysis.
12407 @option{out} output video with the specified type of pixel highlighted.
12408
12409 Both options accept the following values:
12410
12411 @table @samp
12412 @item tout
12413 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
12414 unlike the neighboring pixels of the same field. Examples of temporal outliers
12415 include the results of video dropouts, head clogs, or tape tracking issues.
12416
12417 @item vrep
12418 Identify @var{vertical line repetition}. Vertical line repetition includes
12419 similar rows of pixels within a frame. In born-digital video vertical line
12420 repetition is common, but this pattern is uncommon in video digitized from an
12421 analog source. When it occurs in video that results from the digitization of an
12422 analog source it can indicate concealment from a dropout compensator.
12423
12424 @item brng
12425 Identify pixels that fall outside of legal broadcast range.
12426 @end table
12427
12428 @item color, c
12429 Set the highlight color for the @option{out} option. The default color is
12430 yellow.
12431 @end table
12432
12433 @subsection Examples
12434
12435 @itemize
12436 @item
12437 Output data of various video metrics:
12438 @example
12439 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
12440 @end example
12441
12442 @item
12443 Output specific data about the minimum and maximum values of the Y plane per frame:
12444 @example
12445 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
12446 @end example
12447
12448 @item
12449 Playback video while highlighting pixels that are outside of broadcast range in red.
12450 @example
12451 ffplay example.mov -vf signalstats="out=brng:color=red"
12452 @end example
12453
12454 @item
12455 Playback video with signalstats metadata drawn over the frame.
12456 @example
12457 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
12458 @end example
12459
12460 The contents of signalstat_drawtext.txt used in the command are:
12461 @example
12462 time %@{pts:hms@}
12463 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
12464 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
12465 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
12466 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
12467
12468 @end example
12469 @end itemize
12470
12471 @anchor{smartblur}
12472 @section smartblur
12473
12474 Blur the input video without impacting the outlines.
12475
12476 It accepts the following options:
12477
12478 @table @option
12479 @item luma_radius, lr
12480 Set the luma radius. The option value must be a float number in
12481 the range [0.1,5.0] that specifies the variance of the gaussian filter
12482 used to blur the image (slower if larger). Default value is 1.0.
12483
12484 @item luma_strength, ls
12485 Set the luma strength. The option value must be a float number
12486 in the range [-1.0,1.0] that configures the blurring. A value included
12487 in [0.0,1.0] will blur the image whereas a value included in
12488 [-1.0,0.0] will sharpen the image. Default value is 1.0.
12489
12490 @item luma_threshold, lt
12491 Set the luma threshold used as a coefficient to determine
12492 whether a pixel should be blurred or not. The option value must be an
12493 integer in the range [-30,30]. A value of 0 will filter all the image,
12494 a value included in [0,30] will filter flat areas and a value included
12495 in [-30,0] will filter edges. Default value is 0.
12496
12497 @item chroma_radius, cr
12498 Set the chroma radius. The option value must be a float number in
12499 the range [0.1,5.0] that specifies the variance of the gaussian filter
12500 used to blur the image (slower if larger). Default value is 1.0.
12501
12502 @item chroma_strength, cs
12503 Set the chroma strength. The option value must be a float number
12504 in the range [-1.0,1.0] that configures the blurring. A value included
12505 in [0.0,1.0] will blur the image whereas a value included in
12506 [-1.0,0.0] will sharpen the image. Default value is 1.0.
12507
12508 @item chroma_threshold, ct
12509 Set the chroma threshold used as a coefficient to determine
12510 whether a pixel should be blurred or not. The option value must be an
12511 integer in the range [-30,30]. A value of 0 will filter all the image,
12512 a value included in [0,30] will filter flat areas and a value included
12513 in [-30,0] will filter edges. Default value is 0.
12514 @end table
12515
12516 If a chroma option is not explicitly set, the corresponding luma value
12517 is set.
12518
12519 @section ssim
12520
12521 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
12522
12523 This filter takes in input two input videos, the first input is
12524 considered the "main" source and is passed unchanged to the
12525 output. The second input is used as a "reference" video for computing
12526 the SSIM.
12527
12528 Both video inputs must have the same resolution and pixel format for
12529 this filter to work correctly. Also it assumes that both inputs
12530 have the same number of frames, which are compared one by one.
12531
12532 The filter stores the calculated SSIM of each frame.
12533
12534 The description of the accepted parameters follows.
12535
12536 @table @option
12537 @item stats_file, f
12538 If specified the filter will use the named file to save the SSIM of
12539 each individual frame. When filename equals "-" the data is sent to
12540 standard output.
12541 @end table
12542
12543 The file printed if @var{stats_file} is selected, contains a sequence of
12544 key/value pairs of the form @var{key}:@var{value} for each compared
12545 couple of frames.
12546
12547 A description of each shown parameter follows:
12548
12549 @table @option
12550 @item n
12551 sequential number of the input frame, starting from 1
12552
12553 @item Y, U, V, R, G, B
12554 SSIM of the compared frames for the component specified by the suffix.
12555
12556 @item All
12557 SSIM of the compared frames for the whole frame.
12558
12559 @item dB
12560 Same as above but in dB representation.
12561 @end table
12562
12563 For example:
12564 @example
12565 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
12566 [main][ref] ssim="stats_file=stats.log" [out]
12567 @end example
12568
12569 On this example the input file being processed is compared with the
12570 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
12571 is stored in @file{stats.log}.
12572
12573 Another example with both psnr and ssim at same time:
12574 @example
12575 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
12576 @end example
12577
12578 @section stereo3d
12579
12580 Convert between different stereoscopic image formats.
12581
12582 The filters accept the following options:
12583
12584 @table @option
12585 @item in
12586 Set stereoscopic image format of input.
12587
12588 Available values for input image formats are:
12589 @table @samp
12590 @item sbsl
12591 side by side parallel (left eye left, right eye right)
12592
12593 @item sbsr
12594 side by side crosseye (right eye left, left eye right)
12595
12596 @item sbs2l
12597 side by side parallel with half width resolution
12598 (left eye left, right eye right)
12599
12600 @item sbs2r
12601 side by side crosseye with half width resolution
12602 (right eye left, left eye right)
12603
12604 @item abl
12605 above-below (left eye above, right eye below)
12606
12607 @item abr
12608 above-below (right eye above, left eye below)
12609
12610 @item ab2l
12611 above-below with half height resolution
12612 (left eye above, right eye below)
12613
12614 @item ab2r
12615 above-below with half height resolution
12616 (right eye above, left eye below)
12617
12618 @item al
12619 alternating frames (left eye first, right eye second)
12620
12621 @item ar
12622 alternating frames (right eye first, left eye second)
12623
12624 @item irl
12625 interleaved rows (left eye has top row, right eye starts on next row)
12626
12627 @item irr
12628 interleaved rows (right eye has top row, left eye starts on next row)
12629
12630 @item icl
12631 interleaved columns, left eye first
12632
12633 @item icr
12634 interleaved columns, right eye first
12635
12636 Default value is @samp{sbsl}.
12637 @end table
12638
12639 @item out
12640 Set stereoscopic image format of output.
12641
12642 @table @samp
12643 @item sbsl
12644 side by side parallel (left eye left, right eye right)
12645
12646 @item sbsr
12647 side by side crosseye (right eye left, left eye right)
12648
12649 @item sbs2l
12650 side by side parallel with half width resolution
12651 (left eye left, right eye right)
12652
12653 @item sbs2r
12654 side by side crosseye with half width resolution
12655 (right eye left, left eye right)
12656
12657 @item abl
12658 above-below (left eye above, right eye below)
12659
12660 @item abr
12661 above-below (right eye above, left eye below)
12662
12663 @item ab2l
12664 above-below with half height resolution
12665 (left eye above, right eye below)
12666
12667 @item ab2r
12668 above-below with half height resolution
12669 (right eye above, left eye below)
12670
12671 @item al
12672 alternating frames (left eye first, right eye second)
12673
12674 @item ar
12675 alternating frames (right eye first, left eye second)
12676
12677 @item irl
12678 interleaved rows (left eye has top row, right eye starts on next row)
12679
12680 @item irr
12681 interleaved rows (right eye has top row, left eye starts on next row)
12682
12683 @item arbg
12684 anaglyph red/blue gray
12685 (red filter on left eye, blue filter on right eye)
12686
12687 @item argg
12688 anaglyph red/green gray
12689 (red filter on left eye, green filter on right eye)
12690
12691 @item arcg
12692 anaglyph red/cyan gray
12693 (red filter on left eye, cyan filter on right eye)
12694
12695 @item arch
12696 anaglyph red/cyan half colored
12697 (red filter on left eye, cyan filter on right eye)
12698
12699 @item arcc
12700 anaglyph red/cyan color
12701 (red filter on left eye, cyan filter on right eye)
12702
12703 @item arcd
12704 anaglyph red/cyan color optimized with the least squares projection of dubois
12705 (red filter on left eye, cyan filter on right eye)
12706
12707 @item agmg
12708 anaglyph green/magenta gray
12709 (green filter on left eye, magenta filter on right eye)
12710
12711 @item agmh
12712 anaglyph green/magenta half colored
12713 (green filter on left eye, magenta filter on right eye)
12714
12715 @item agmc
12716 anaglyph green/magenta colored
12717 (green filter on left eye, magenta filter on right eye)
12718
12719 @item agmd
12720 anaglyph green/magenta color optimized with the least squares projection of dubois
12721 (green filter on left eye, magenta filter on right eye)
12722
12723 @item aybg
12724 anaglyph yellow/blue gray
12725 (yellow filter on left eye, blue filter on right eye)
12726
12727 @item aybh
12728 anaglyph yellow/blue half colored
12729 (yellow filter on left eye, blue filter on right eye)
12730
12731 @item aybc
12732 anaglyph yellow/blue colored
12733 (yellow filter on left eye, blue filter on right eye)
12734
12735 @item aybd
12736 anaglyph yellow/blue color optimized with the least squares projection of dubois
12737 (yellow filter on left eye, blue filter on right eye)
12738
12739 @item ml
12740 mono output (left eye only)
12741
12742 @item mr
12743 mono output (right eye only)
12744
12745 @item chl
12746 checkerboard, left eye first
12747
12748 @item chr
12749 checkerboard, right eye first
12750
12751 @item icl
12752 interleaved columns, left eye first
12753
12754 @item icr
12755 interleaved columns, right eye first
12756
12757 @item hdmi
12758 HDMI frame pack
12759 @end table
12760
12761 Default value is @samp{arcd}.
12762 @end table
12763
12764 @subsection Examples
12765
12766 @itemize
12767 @item
12768 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
12769 @example
12770 stereo3d=sbsl:aybd
12771 @end example
12772
12773 @item
12774 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
12775 @example
12776 stereo3d=abl:sbsr
12777 @end example
12778 @end itemize
12779
12780 @section streamselect, astreamselect
12781 Select video or audio streams.
12782
12783 The filter accepts the following options:
12784
12785 @table @option
12786 @item inputs
12787 Set number of inputs. Default is 2.
12788
12789 @item map
12790 Set input indexes to remap to outputs.
12791 @end table
12792
12793 @subsection Commands
12794
12795 The @code{streamselect} and @code{astreamselect} filter supports the following
12796 commands:
12797
12798 @table @option
12799 @item map
12800 Set input indexes to remap to outputs.
12801 @end table
12802
12803 @subsection Examples
12804
12805 @itemize
12806 @item
12807 Select first 5 seconds 1st stream and rest of time 2nd stream:
12808 @example
12809 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
12810 @end example
12811
12812 @item
12813 Same as above, but for audio:
12814 @example
12815 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
12816 @end example
12817 @end itemize
12818
12819 @section sobel
12820 Apply sobel operator to input video stream.
12821
12822 The filter accepts the following option:
12823
12824 @table @option
12825 @item planes
12826 Set which planes will be processed, unprocessed planes will be copied.
12827 By default value 0xf, all planes will be processed.
12828
12829 @item scale
12830 Set value which will be multiplied with filtered result.
12831
12832 @item delta
12833 Set value which will be added to filtered result.
12834 @end table
12835
12836 @anchor{spp}
12837 @section spp
12838
12839 Apply a simple postprocessing filter that compresses and decompresses the image
12840 at several (or - in the case of @option{quality} level @code{6} - all) shifts
12841 and average the results.
12842
12843 The filter accepts the following options:
12844
12845 @table @option
12846 @item quality
12847 Set quality. This option defines the number of levels for averaging. It accepts
12848 an integer in the range 0-6. If set to @code{0}, the filter will have no
12849 effect. A value of @code{6} means the higher quality. For each increment of
12850 that value the speed drops by a factor of approximately 2.  Default value is
12851 @code{3}.
12852
12853 @item qp
12854 Force a constant quantization parameter. If not set, the filter will use the QP
12855 from the video stream (if available).
12856
12857 @item mode
12858 Set thresholding mode. Available modes are:
12859
12860 @table @samp
12861 @item hard
12862 Set hard thresholding (default).
12863 @item soft
12864 Set soft thresholding (better de-ringing effect, but likely blurrier).
12865 @end table
12866
12867 @item use_bframe_qp
12868 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
12869 option may cause flicker since the B-Frames have often larger QP. Default is
12870 @code{0} (not enabled).
12871 @end table
12872
12873 @anchor{subtitles}
12874 @section subtitles
12875
12876 Draw subtitles on top of input video using the libass library.
12877
12878 To enable compilation of this filter you need to configure FFmpeg with
12879 @code{--enable-libass}. This filter also requires a build with libavcodec and
12880 libavformat to convert the passed subtitles file to ASS (Advanced Substation
12881 Alpha) subtitles format.
12882
12883 The filter accepts the following options:
12884
12885 @table @option
12886 @item filename, f
12887 Set the filename of the subtitle file to read. It must be specified.
12888
12889 @item original_size
12890 Specify the size of the original video, the video for which the ASS file
12891 was composed. For the syntax of this option, check the
12892 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
12893 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
12894 correctly scale the fonts if the aspect ratio has been changed.
12895
12896 @item fontsdir
12897 Set a directory path containing fonts that can be used by the filter.
12898 These fonts will be used in addition to whatever the font provider uses.
12899
12900 @item charenc
12901 Set subtitles input character encoding. @code{subtitles} filter only. Only
12902 useful if not UTF-8.
12903
12904 @item stream_index, si
12905 Set subtitles stream index. @code{subtitles} filter only.
12906
12907 @item force_style
12908 Override default style or script info parameters of the subtitles. It accepts a
12909 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
12910 @end table
12911
12912 If the first key is not specified, it is assumed that the first value
12913 specifies the @option{filename}.
12914
12915 For example, to render the file @file{sub.srt} on top of the input
12916 video, use the command:
12917 @example
12918 subtitles=sub.srt
12919 @end example
12920
12921 which is equivalent to:
12922 @example
12923 subtitles=filename=sub.srt
12924 @end example
12925
12926 To render the default subtitles stream from file @file{video.mkv}, use:
12927 @example
12928 subtitles=video.mkv
12929 @end example
12930
12931 To render the second subtitles stream from that file, use:
12932 @example
12933 subtitles=video.mkv:si=1
12934 @end example
12935
12936 To make the subtitles stream from @file{sub.srt} appear in transparent green
12937 @code{DejaVu Serif}, use:
12938 @example
12939 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HAA00FF00'
12940 @end example
12941
12942 @section super2xsai
12943
12944 Scale the input by 2x and smooth using the Super2xSaI (Scale and
12945 Interpolate) pixel art scaling algorithm.
12946
12947 Useful for enlarging pixel art images without reducing sharpness.
12948
12949 @section swaprect
12950
12951 Swap two rectangular objects in video.
12952
12953 This filter accepts the following options:
12954
12955 @table @option
12956 @item w
12957 Set object width.
12958
12959 @item h
12960 Set object height.
12961
12962 @item x1
12963 Set 1st rect x coordinate.
12964
12965 @item y1
12966 Set 1st rect y coordinate.
12967
12968 @item x2
12969 Set 2nd rect x coordinate.
12970
12971 @item y2
12972 Set 2nd rect y coordinate.
12973
12974 All expressions are evaluated once for each frame.
12975 @end table
12976
12977 The all options are expressions containing the following constants:
12978
12979 @table @option
12980 @item w
12981 @item h
12982 The input width and height.
12983
12984 @item a
12985 same as @var{w} / @var{h}
12986
12987 @item sar
12988 input sample aspect ratio
12989
12990 @item dar
12991 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
12992
12993 @item n
12994 The number of the input frame, starting from 0.
12995
12996 @item t
12997 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
12998
12999 @item pos
13000 the position in the file of the input frame, NAN if unknown
13001 @end table
13002
13003 @section swapuv
13004 Swap U & V plane.
13005
13006 @section telecine
13007
13008 Apply telecine process to the video.
13009
13010 This filter accepts the following options:
13011
13012 @table @option
13013 @item first_field
13014 @table @samp
13015 @item top, t
13016 top field first
13017 @item bottom, b
13018 bottom field first
13019 The default value is @code{top}.
13020 @end table
13021
13022 @item pattern
13023 A string of numbers representing the pulldown pattern you wish to apply.
13024 The default value is @code{23}.
13025 @end table
13026
13027 @example
13028 Some typical patterns:
13029
13030 NTSC output (30i):
13031 27.5p: 32222
13032 24p: 23 (classic)
13033 24p: 2332 (preferred)
13034 20p: 33
13035 18p: 334
13036 16p: 3444
13037
13038 PAL output (25i):
13039 27.5p: 12222
13040 24p: 222222222223 ("Euro pulldown")
13041 16.67p: 33
13042 16p: 33333334
13043 @end example
13044
13045 @section thumbnail
13046 Select the most representative frame in a given sequence of consecutive frames.
13047
13048 The filter accepts the following options:
13049
13050 @table @option
13051 @item n
13052 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
13053 will pick one of them, and then handle the next batch of @var{n} frames until
13054 the end. Default is @code{100}.
13055 @end table
13056
13057 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
13058 value will result in a higher memory usage, so a high value is not recommended.
13059
13060 @subsection Examples
13061
13062 @itemize
13063 @item
13064 Extract one picture each 50 frames:
13065 @example
13066 thumbnail=50
13067 @end example
13068
13069 @item
13070 Complete example of a thumbnail creation with @command{ffmpeg}:
13071 @example
13072 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
13073 @end example
13074 @end itemize
13075
13076 @section tile
13077
13078 Tile several successive frames together.
13079
13080 The filter accepts the following options:
13081
13082 @table @option
13083
13084 @item layout
13085 Set the grid size (i.e. the number of lines and columns). For the syntax of
13086 this option, check the
13087 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
13088
13089 @item nb_frames
13090 Set the maximum number of frames to render in the given area. It must be less
13091 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
13092 the area will be used.
13093
13094 @item margin
13095 Set the outer border margin in pixels.
13096
13097 @item padding
13098 Set the inner border thickness (i.e. the number of pixels between frames). For
13099 more advanced padding options (such as having different values for the edges),
13100 refer to the pad video filter.
13101
13102 @item color
13103 Specify the color of the unused area. For the syntax of this option, check the
13104 "Color" section in the ffmpeg-utils manual. The default value of @var{color}
13105 is "black".
13106 @end table
13107
13108 @subsection Examples
13109
13110 @itemize
13111 @item
13112 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
13113 @example
13114 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
13115 @end example
13116 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
13117 duplicating each output frame to accommodate the originally detected frame
13118 rate.
13119
13120 @item
13121 Display @code{5} pictures in an area of @code{3x2} frames,
13122 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
13123 mixed flat and named options:
13124 @example
13125 tile=3x2:nb_frames=5:padding=7:margin=2
13126 @end example
13127 @end itemize
13128
13129 @section tinterlace
13130
13131 Perform various types of temporal field interlacing.
13132
13133 Frames are counted starting from 1, so the first input frame is
13134 considered odd.
13135
13136 The filter accepts the following options:
13137
13138 @table @option
13139
13140 @item mode
13141 Specify the mode of the interlacing. This option can also be specified
13142 as a value alone. See below for a list of values for this option.
13143
13144 Available values are:
13145
13146 @table @samp
13147 @item merge, 0
13148 Move odd frames into the upper field, even into the lower field,
13149 generating a double height frame at half frame rate.
13150 @example
13151  ------> time
13152 Input:
13153 Frame 1         Frame 2         Frame 3         Frame 4
13154
13155 11111           22222           33333           44444
13156 11111           22222           33333           44444
13157 11111           22222           33333           44444
13158 11111           22222           33333           44444
13159
13160 Output:
13161 11111                           33333
13162 22222                           44444
13163 11111                           33333
13164 22222                           44444
13165 11111                           33333
13166 22222                           44444
13167 11111                           33333
13168 22222                           44444
13169 @end example
13170
13171 @item drop_even, 1
13172 Only output odd frames, even frames are dropped, generating a frame with
13173 unchanged height at half frame rate.
13174
13175 @example
13176  ------> time
13177 Input:
13178 Frame 1         Frame 2         Frame 3         Frame 4
13179
13180 11111           22222           33333           44444
13181 11111           22222           33333           44444
13182 11111           22222           33333           44444
13183 11111           22222           33333           44444
13184
13185 Output:
13186 11111                           33333
13187 11111                           33333
13188 11111                           33333
13189 11111                           33333
13190 @end example
13191
13192 @item drop_odd, 2
13193 Only output even frames, odd frames are dropped, generating a frame with
13194 unchanged height at half frame rate.
13195
13196 @example
13197  ------> time
13198 Input:
13199 Frame 1         Frame 2         Frame 3         Frame 4
13200
13201 11111           22222           33333           44444
13202 11111           22222           33333           44444
13203 11111           22222           33333           44444
13204 11111           22222           33333           44444
13205
13206 Output:
13207                 22222                           44444
13208                 22222                           44444
13209                 22222                           44444
13210                 22222                           44444
13211 @end example
13212
13213 @item pad, 3
13214 Expand each frame to full height, but pad alternate lines with black,
13215 generating a frame with double height at the same input frame rate.
13216
13217 @example
13218  ------> time
13219 Input:
13220 Frame 1         Frame 2         Frame 3         Frame 4
13221
13222 11111           22222           33333           44444
13223 11111           22222           33333           44444
13224 11111           22222           33333           44444
13225 11111           22222           33333           44444
13226
13227 Output:
13228 11111           .....           33333           .....
13229 .....           22222           .....           44444
13230 11111           .....           33333           .....
13231 .....           22222           .....           44444
13232 11111           .....           33333           .....
13233 .....           22222           .....           44444
13234 11111           .....           33333           .....
13235 .....           22222           .....           44444
13236 @end example
13237
13238
13239 @item interleave_top, 4
13240 Interleave the upper field from odd frames with the lower field from
13241 even frames, generating a frame with unchanged height at half frame rate.
13242
13243 @example
13244  ------> time
13245 Input:
13246 Frame 1         Frame 2         Frame 3         Frame 4
13247
13248 11111<-         22222           33333<-         44444
13249 11111           22222<-         33333           44444<-
13250 11111<-         22222           33333<-         44444
13251 11111           22222<-         33333           44444<-
13252
13253 Output:
13254 11111                           33333
13255 22222                           44444
13256 11111                           33333
13257 22222                           44444
13258 @end example
13259
13260
13261 @item interleave_bottom, 5
13262 Interleave the lower field from odd frames with the upper field from
13263 even frames, generating a frame with unchanged height at half frame rate.
13264
13265 @example
13266  ------> time
13267 Input:
13268 Frame 1         Frame 2         Frame 3         Frame 4
13269
13270 11111           22222<-         33333           44444<-
13271 11111<-         22222           33333<-         44444
13272 11111           22222<-         33333           44444<-
13273 11111<-         22222           33333<-         44444
13274
13275 Output:
13276 22222                           44444
13277 11111                           33333
13278 22222                           44444
13279 11111                           33333
13280 @end example
13281
13282
13283 @item interlacex2, 6
13284 Double frame rate with unchanged height. Frames are inserted each
13285 containing the second temporal field from the previous input frame and
13286 the first temporal field from the next input frame. This mode relies on
13287 the top_field_first flag. Useful for interlaced video displays with no
13288 field synchronisation.
13289
13290 @example
13291  ------> time
13292 Input:
13293 Frame 1         Frame 2         Frame 3         Frame 4
13294
13295 11111           22222           33333           44444
13296  11111           22222           33333           44444
13297 11111           22222           33333           44444
13298  11111           22222           33333           44444
13299
13300 Output:
13301 11111   22222   22222   33333   33333   44444   44444
13302  11111   11111   22222   22222   33333   33333   44444
13303 11111   22222   22222   33333   33333   44444   44444
13304  11111   11111   22222   22222   33333   33333   44444
13305 @end example
13306
13307
13308 @item mergex2, 7
13309 Move odd frames into the upper field, even into the lower field,
13310 generating a double height frame at same frame rate.
13311
13312 @example
13313  ------> time
13314 Input:
13315 Frame 1         Frame 2         Frame 3         Frame 4
13316
13317 11111           22222           33333           44444
13318 11111           22222           33333           44444
13319 11111           22222           33333           44444
13320 11111           22222           33333           44444
13321
13322 Output:
13323 11111           33333           33333           55555
13324 22222           22222           44444           44444
13325 11111           33333           33333           55555
13326 22222           22222           44444           44444
13327 11111           33333           33333           55555
13328 22222           22222           44444           44444
13329 11111           33333           33333           55555
13330 22222           22222           44444           44444
13331 @end example
13332
13333 @end table
13334
13335 Numeric values are deprecated but are accepted for backward
13336 compatibility reasons.
13337
13338 Default mode is @code{merge}.
13339
13340 @item flags
13341 Specify flags influencing the filter process.
13342
13343 Available value for @var{flags} is:
13344
13345 @table @option
13346 @item low_pass_filter, vlfp
13347 Enable vertical low-pass filtering in the filter.
13348 Vertical low-pass filtering is required when creating an interlaced
13349 destination from a progressive source which contains high-frequency
13350 vertical detail. Filtering will reduce interlace 'twitter' and Moire
13351 patterning.
13352
13353 Vertical low-pass filtering can only be enabled for @option{mode}
13354 @var{interleave_top} and @var{interleave_bottom}.
13355
13356 @end table
13357 @end table
13358
13359 @section transpose
13360
13361 Transpose rows with columns in the input video and optionally flip it.
13362
13363 It accepts the following parameters:
13364
13365 @table @option
13366
13367 @item dir
13368 Specify the transposition direction.
13369
13370 Can assume the following values:
13371 @table @samp
13372 @item 0, 4, cclock_flip
13373 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
13374 @example
13375 L.R     L.l
13376 . . ->  . .
13377 l.r     R.r
13378 @end example
13379
13380 @item 1, 5, clock
13381 Rotate by 90 degrees clockwise, that is:
13382 @example
13383 L.R     l.L
13384 . . ->  . .
13385 l.r     r.R
13386 @end example
13387
13388 @item 2, 6, cclock
13389 Rotate by 90 degrees counterclockwise, that is:
13390 @example
13391 L.R     R.r
13392 . . ->  . .
13393 l.r     L.l
13394 @end example
13395
13396 @item 3, 7, clock_flip
13397 Rotate by 90 degrees clockwise and vertically flip, that is:
13398 @example
13399 L.R     r.R
13400 . . ->  . .
13401 l.r     l.L
13402 @end example
13403 @end table
13404
13405 For values between 4-7, the transposition is only done if the input
13406 video geometry is portrait and not landscape. These values are
13407 deprecated, the @code{passthrough} option should be used instead.
13408
13409 Numerical values are deprecated, and should be dropped in favor of
13410 symbolic constants.
13411
13412 @item passthrough
13413 Do not apply the transposition if the input geometry matches the one
13414 specified by the specified value. It accepts the following values:
13415 @table @samp
13416 @item none
13417 Always apply transposition.
13418 @item portrait
13419 Preserve portrait geometry (when @var{height} >= @var{width}).
13420 @item landscape
13421 Preserve landscape geometry (when @var{width} >= @var{height}).
13422 @end table
13423
13424 Default value is @code{none}.
13425 @end table
13426
13427 For example to rotate by 90 degrees clockwise and preserve portrait
13428 layout:
13429 @example
13430 transpose=dir=1:passthrough=portrait
13431 @end example
13432
13433 The command above can also be specified as:
13434 @example
13435 transpose=1:portrait
13436 @end example
13437
13438 @section trim
13439 Trim the input so that the output contains one continuous subpart of the input.
13440
13441 It accepts the following parameters:
13442 @table @option
13443 @item start
13444 Specify the time of the start of the kept section, i.e. the frame with the
13445 timestamp @var{start} will be the first frame in the output.
13446
13447 @item end
13448 Specify the time of the first frame that will be dropped, i.e. the frame
13449 immediately preceding the one with the timestamp @var{end} will be the last
13450 frame in the output.
13451
13452 @item start_pts
13453 This is the same as @var{start}, except this option sets the start timestamp
13454 in timebase units instead of seconds.
13455
13456 @item end_pts
13457 This is the same as @var{end}, except this option sets the end timestamp
13458 in timebase units instead of seconds.
13459
13460 @item duration
13461 The maximum duration of the output in seconds.
13462
13463 @item start_frame
13464 The number of the first frame that should be passed to the output.
13465
13466 @item end_frame
13467 The number of the first frame that should be dropped.
13468 @end table
13469
13470 @option{start}, @option{end}, and @option{duration} are expressed as time
13471 duration specifications; see
13472 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
13473 for the accepted syntax.
13474
13475 Note that the first two sets of the start/end options and the @option{duration}
13476 option look at the frame timestamp, while the _frame variants simply count the
13477 frames that pass through the filter. Also note that this filter does not modify
13478 the timestamps. If you wish for the output timestamps to start at zero, insert a
13479 setpts filter after the trim filter.
13480
13481 If multiple start or end options are set, this filter tries to be greedy and
13482 keep all the frames that match at least one of the specified constraints. To keep
13483 only the part that matches all the constraints at once, chain multiple trim
13484 filters.
13485
13486 The defaults are such that all the input is kept. So it is possible to set e.g.
13487 just the end values to keep everything before the specified time.
13488
13489 Examples:
13490 @itemize
13491 @item
13492 Drop everything except the second minute of input:
13493 @example
13494 ffmpeg -i INPUT -vf trim=60:120
13495 @end example
13496
13497 @item
13498 Keep only the first second:
13499 @example
13500 ffmpeg -i INPUT -vf trim=duration=1
13501 @end example
13502
13503 @end itemize
13504
13505
13506 @anchor{unsharp}
13507 @section unsharp
13508
13509 Sharpen or blur the input video.
13510
13511 It accepts the following parameters:
13512
13513 @table @option
13514 @item luma_msize_x, lx
13515 Set the luma matrix horizontal size. It must be an odd integer between
13516 3 and 23. The default value is 5.
13517
13518 @item luma_msize_y, ly
13519 Set the luma matrix vertical size. It must be an odd integer between 3
13520 and 23. The default value is 5.
13521
13522 @item luma_amount, la
13523 Set the luma effect strength. It must be a floating point number, reasonable
13524 values lay between -1.5 and 1.5.
13525
13526 Negative values will blur the input video, while positive values will
13527 sharpen it, a value of zero will disable the effect.
13528
13529 Default value is 1.0.
13530
13531 @item chroma_msize_x, cx
13532 Set the chroma matrix horizontal size. It must be an odd integer
13533 between 3 and 23. The default value is 5.
13534
13535 @item chroma_msize_y, cy
13536 Set the chroma matrix vertical size. It must be an odd integer
13537 between 3 and 23. The default value is 5.
13538
13539 @item chroma_amount, ca
13540 Set the chroma effect strength. It must be a floating point number, reasonable
13541 values lay between -1.5 and 1.5.
13542
13543 Negative values will blur the input video, while positive values will
13544 sharpen it, a value of zero will disable the effect.
13545
13546 Default value is 0.0.
13547
13548 @item opencl
13549 If set to 1, specify using OpenCL capabilities, only available if
13550 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
13551
13552 @end table
13553
13554 All parameters are optional and default to the equivalent of the
13555 string '5:5:1.0:5:5:0.0'.
13556
13557 @subsection Examples
13558
13559 @itemize
13560 @item
13561 Apply strong luma sharpen effect:
13562 @example
13563 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
13564 @end example
13565
13566 @item
13567 Apply a strong blur of both luma and chroma parameters:
13568 @example
13569 unsharp=7:7:-2:7:7:-2
13570 @end example
13571 @end itemize
13572
13573 @section uspp
13574
13575 Apply ultra slow/simple postprocessing filter that compresses and decompresses
13576 the image at several (or - in the case of @option{quality} level @code{8} - all)
13577 shifts and average the results.
13578
13579 The way this differs from the behavior of spp is that uspp actually encodes &
13580 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
13581 DCT similar to MJPEG.
13582
13583 The filter accepts the following options:
13584
13585 @table @option
13586 @item quality
13587 Set quality. This option defines the number of levels for averaging. It accepts
13588 an integer in the range 0-8. If set to @code{0}, the filter will have no
13589 effect. A value of @code{8} means the higher quality. For each increment of
13590 that value the speed drops by a factor of approximately 2.  Default value is
13591 @code{3}.
13592
13593 @item qp
13594 Force a constant quantization parameter. If not set, the filter will use the QP
13595 from the video stream (if available).
13596 @end table
13597
13598 @section vaguedenoiser
13599
13600 Apply a wavelet based denoiser.
13601
13602 It transforms each frame from the video input into the wavelet domain,
13603 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
13604 the obtained coefficients. It does an inverse wavelet transform after.
13605 Due to wavelet properties, it should give a nice smoothed result, and
13606 reduced noise, without blurring picture features.
13607
13608 This filter accepts the following options:
13609
13610 @table @option
13611 @item threshold
13612 The filtering strength. The higher, the more filtered the video will be.
13613 Hard thresholding can use a higher threshold than soft thresholding
13614 before the video looks overfiltered.
13615
13616 @item method
13617 The filtering method the filter will use.
13618
13619 It accepts the following values:
13620 @table @samp
13621 @item hard
13622 All values under the threshold will be zeroed.
13623
13624 @item soft
13625 All values under the threshold will be zeroed. All values above will be
13626 reduced by the threshold.
13627
13628 @item garrote
13629 Scales or nullifies coefficients - intermediary between (more) soft and
13630 (less) hard thresholding.
13631 @end table
13632
13633 @item nsteps
13634 Number of times, the wavelet will decompose the picture. Picture can't
13635 be decomposed beyond a particular point (typically, 8 for a 640x480
13636 frame - as 2^9 = 512 > 480)
13637
13638 @item percent
13639 Partial of full denoising (limited coefficients shrinking), from 0 to 100.
13640
13641 @item planes
13642 A list of the planes to process. By default all planes are processed.
13643 @end table
13644
13645 @section vectorscope
13646
13647 Display 2 color component values in the two dimensional graph (which is called
13648 a vectorscope).
13649
13650 This filter accepts the following options:
13651
13652 @table @option
13653 @item mode, m
13654 Set vectorscope mode.
13655
13656 It accepts the following values:
13657 @table @samp
13658 @item gray
13659 Gray values are displayed on graph, higher brightness means more pixels have
13660 same component color value on location in graph. This is the default mode.
13661
13662 @item color
13663 Gray values are displayed on graph. Surrounding pixels values which are not
13664 present in video frame are drawn in gradient of 2 color components which are
13665 set by option @code{x} and @code{y}. The 3rd color component is static.
13666
13667 @item color2
13668 Actual color components values present in video frame are displayed on graph.
13669
13670 @item color3
13671 Similar as color2 but higher frequency of same values @code{x} and @code{y}
13672 on graph increases value of another color component, which is luminance by
13673 default values of @code{x} and @code{y}.
13674
13675 @item color4
13676 Actual colors present in video frame are displayed on graph. If two different
13677 colors map to same position on graph then color with higher value of component
13678 not present in graph is picked.
13679
13680 @item color5
13681 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
13682 component picked from radial gradient.
13683 @end table
13684
13685 @item x
13686 Set which color component will be represented on X-axis. Default is @code{1}.
13687
13688 @item y
13689 Set which color component will be represented on Y-axis. Default is @code{2}.
13690
13691 @item intensity, i
13692 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
13693 of color component which represents frequency of (X, Y) location in graph.
13694
13695 @item envelope, e
13696 @table @samp
13697 @item none
13698 No envelope, this is default.
13699
13700 @item instant
13701 Instant envelope, even darkest single pixel will be clearly highlighted.
13702
13703 @item peak
13704 Hold maximum and minimum values presented in graph over time. This way you
13705 can still spot out of range values without constantly looking at vectorscope.
13706
13707 @item peak+instant
13708 Peak and instant envelope combined together.
13709 @end table
13710
13711 @item graticule, g
13712 Set what kind of graticule to draw.
13713 @table @samp
13714 @item none
13715 @item green
13716 @item color
13717 @end table
13718
13719 @item opacity, o
13720 Set graticule opacity.
13721
13722 @item flags, f
13723 Set graticule flags.
13724
13725 @table @samp
13726 @item white
13727 Draw graticule for white point.
13728
13729 @item black
13730 Draw graticule for black point.
13731
13732 @item name
13733 Draw color points short names.
13734 @end table
13735
13736 @item bgopacity, b
13737 Set background opacity.
13738
13739 @item lthreshold, l
13740 Set low threshold for color component not represented on X or Y axis.
13741 Values lower than this value will be ignored. Default is 0.
13742 Note this value is multiplied with actual max possible value one pixel component
13743 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
13744 is 0.1 * 255 = 25.
13745
13746 @item hthreshold, h
13747 Set high threshold for color component not represented on X or Y axis.
13748 Values higher than this value will be ignored. Default is 1.
13749 Note this value is multiplied with actual max possible value one pixel component
13750 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
13751 is 0.9 * 255 = 230.
13752
13753 @item colorspace, c
13754 Set what kind of colorspace to use when drawing graticule.
13755 @table @samp
13756 @item auto
13757 @item 601
13758 @item 709
13759 @end table
13760 Default is auto.
13761 @end table
13762
13763 @anchor{vidstabdetect}
13764 @section vidstabdetect
13765
13766 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
13767 @ref{vidstabtransform} for pass 2.
13768
13769 This filter generates a file with relative translation and rotation
13770 transform information about subsequent frames, which is then used by
13771 the @ref{vidstabtransform} filter.
13772
13773 To enable compilation of this filter you need to configure FFmpeg with
13774 @code{--enable-libvidstab}.
13775
13776 This filter accepts the following options:
13777
13778 @table @option
13779 @item result
13780 Set the path to the file used to write the transforms information.
13781 Default value is @file{transforms.trf}.
13782
13783 @item shakiness
13784 Set how shaky the video is and how quick the camera is. It accepts an
13785 integer in the range 1-10, a value of 1 means little shakiness, a
13786 value of 10 means strong shakiness. Default value is 5.
13787
13788 @item accuracy
13789 Set the accuracy of the detection process. It must be a value in the
13790 range 1-15. A value of 1 means low accuracy, a value of 15 means high
13791 accuracy. Default value is 15.
13792
13793 @item stepsize
13794 Set stepsize of the search process. The region around minimum is
13795 scanned with 1 pixel resolution. Default value is 6.
13796
13797 @item mincontrast
13798 Set minimum contrast. Below this value a local measurement field is
13799 discarded. Must be a floating point value in the range 0-1. Default
13800 value is 0.3.
13801
13802 @item tripod
13803 Set reference frame number for tripod mode.
13804
13805 If enabled, the motion of the frames is compared to a reference frame
13806 in the filtered stream, identified by the specified number. The idea
13807 is to compensate all movements in a more-or-less static scene and keep
13808 the camera view absolutely still.
13809
13810 If set to 0, it is disabled. The frames are counted starting from 1.
13811
13812 @item show
13813 Show fields and transforms in the resulting frames. It accepts an
13814 integer in the range 0-2. Default value is 0, which disables any
13815 visualization.
13816 @end table
13817
13818 @subsection Examples
13819
13820 @itemize
13821 @item
13822 Use default values:
13823 @example
13824 vidstabdetect
13825 @end example
13826
13827 @item
13828 Analyze strongly shaky movie and put the results in file
13829 @file{mytransforms.trf}:
13830 @example
13831 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
13832 @end example
13833
13834 @item
13835 Visualize the result of internal transformations in the resulting
13836 video:
13837 @example
13838 vidstabdetect=show=1
13839 @end example
13840
13841 @item
13842 Analyze a video with medium shakiness using @command{ffmpeg}:
13843 @example
13844 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
13845 @end example
13846 @end itemize
13847
13848 @anchor{vidstabtransform}
13849 @section vidstabtransform
13850
13851 Video stabilization/deshaking: pass 2 of 2,
13852 see @ref{vidstabdetect} for pass 1.
13853
13854 Read a file with transform information for each frame and
13855 apply/compensate them. Together with the @ref{vidstabdetect}
13856 filter this can be used to deshake videos. See also
13857 @url{http://public.hronopik.de/vid.stab}. It is important to also use
13858 the @ref{unsharp} filter, see below.
13859
13860 To enable compilation of this filter you need to configure FFmpeg with
13861 @code{--enable-libvidstab}.
13862
13863 @subsection Options
13864
13865 @table @option
13866 @item input
13867 Set path to the file used to read the transforms. Default value is
13868 @file{transforms.trf}.
13869
13870 @item smoothing
13871 Set the number of frames (value*2 + 1) used for lowpass filtering the
13872 camera movements. Default value is 10.
13873
13874 For example a number of 10 means that 21 frames are used (10 in the
13875 past and 10 in the future) to smoothen the motion in the video. A
13876 larger value leads to a smoother video, but limits the acceleration of
13877 the camera (pan/tilt movements). 0 is a special case where a static
13878 camera is simulated.
13879
13880 @item optalgo
13881 Set the camera path optimization algorithm.
13882
13883 Accepted values are:
13884 @table @samp
13885 @item gauss
13886 gaussian kernel low-pass filter on camera motion (default)
13887 @item avg
13888 averaging on transformations
13889 @end table
13890
13891 @item maxshift
13892 Set maximal number of pixels to translate frames. Default value is -1,
13893 meaning no limit.
13894
13895 @item maxangle
13896 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
13897 value is -1, meaning no limit.
13898
13899 @item crop
13900 Specify how to deal with borders that may be visible due to movement
13901 compensation.
13902
13903 Available values are:
13904 @table @samp
13905 @item keep
13906 keep image information from previous frame (default)
13907 @item black
13908 fill the border black
13909 @end table
13910
13911 @item invert
13912 Invert transforms if set to 1. Default value is 0.
13913
13914 @item relative
13915 Consider transforms as relative to previous frame if set to 1,
13916 absolute if set to 0. Default value is 0.
13917
13918 @item zoom
13919 Set percentage to zoom. A positive value will result in a zoom-in
13920 effect, a negative value in a zoom-out effect. Default value is 0 (no
13921 zoom).
13922
13923 @item optzoom
13924 Set optimal zooming to avoid borders.
13925
13926 Accepted values are:
13927 @table @samp
13928 @item 0
13929 disabled
13930 @item 1
13931 optimal static zoom value is determined (only very strong movements
13932 will lead to visible borders) (default)
13933 @item 2
13934 optimal adaptive zoom value is determined (no borders will be
13935 visible), see @option{zoomspeed}
13936 @end table
13937
13938 Note that the value given at zoom is added to the one calculated here.
13939
13940 @item zoomspeed
13941 Set percent to zoom maximally each frame (enabled when
13942 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
13943 0.25.
13944
13945 @item interpol
13946 Specify type of interpolation.
13947
13948 Available values are:
13949 @table @samp
13950 @item no
13951 no interpolation
13952 @item linear
13953 linear only horizontal
13954 @item bilinear
13955 linear in both directions (default)
13956 @item bicubic
13957 cubic in both directions (slow)
13958 @end table
13959
13960 @item tripod
13961 Enable virtual tripod mode if set to 1, which is equivalent to
13962 @code{relative=0:smoothing=0}. Default value is 0.
13963
13964 Use also @code{tripod} option of @ref{vidstabdetect}.
13965
13966 @item debug
13967 Increase log verbosity if set to 1. Also the detected global motions
13968 are written to the temporary file @file{global_motions.trf}. Default
13969 value is 0.
13970 @end table
13971
13972 @subsection Examples
13973
13974 @itemize
13975 @item
13976 Use @command{ffmpeg} for a typical stabilization with default values:
13977 @example
13978 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
13979 @end example
13980
13981 Note the use of the @ref{unsharp} filter which is always recommended.
13982
13983 @item
13984 Zoom in a bit more and load transform data from a given file:
13985 @example
13986 vidstabtransform=zoom=5:input="mytransforms.trf"
13987 @end example
13988
13989 @item
13990 Smoothen the video even more:
13991 @example
13992 vidstabtransform=smoothing=30
13993 @end example
13994 @end itemize
13995
13996 @section vflip
13997
13998 Flip the input video vertically.
13999
14000 For example, to vertically flip a video with @command{ffmpeg}:
14001 @example
14002 ffmpeg -i in.avi -vf "vflip" out.avi
14003 @end example
14004
14005 @anchor{vignette}
14006 @section vignette
14007
14008 Make or reverse a natural vignetting effect.
14009
14010 The filter accepts the following options:
14011
14012 @table @option
14013 @item angle, a
14014 Set lens angle expression as a number of radians.
14015
14016 The value is clipped in the @code{[0,PI/2]} range.
14017
14018 Default value: @code{"PI/5"}
14019
14020 @item x0
14021 @item y0
14022 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
14023 by default.
14024
14025 @item mode
14026 Set forward/backward mode.
14027
14028 Available modes are:
14029 @table @samp
14030 @item forward
14031 The larger the distance from the central point, the darker the image becomes.
14032
14033 @item backward
14034 The larger the distance from the central point, the brighter the image becomes.
14035 This can be used to reverse a vignette effect, though there is no automatic
14036 detection to extract the lens @option{angle} and other settings (yet). It can
14037 also be used to create a burning effect.
14038 @end table
14039
14040 Default value is @samp{forward}.
14041
14042 @item eval
14043 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
14044
14045 It accepts the following values:
14046 @table @samp
14047 @item init
14048 Evaluate expressions only once during the filter initialization.
14049
14050 @item frame
14051 Evaluate expressions for each incoming frame. This is way slower than the
14052 @samp{init} mode since it requires all the scalers to be re-computed, but it
14053 allows advanced dynamic expressions.
14054 @end table
14055
14056 Default value is @samp{init}.
14057
14058 @item dither
14059 Set dithering to reduce the circular banding effects. Default is @code{1}
14060 (enabled).
14061
14062 @item aspect
14063 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
14064 Setting this value to the SAR of the input will make a rectangular vignetting
14065 following the dimensions of the video.
14066
14067 Default is @code{1/1}.
14068 @end table
14069
14070 @subsection Expressions
14071
14072 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
14073 following parameters.
14074
14075 @table @option
14076 @item w
14077 @item h
14078 input width and height
14079
14080 @item n
14081 the number of input frame, starting from 0
14082
14083 @item pts
14084 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
14085 @var{TB} units, NAN if undefined
14086
14087 @item r
14088 frame rate of the input video, NAN if the input frame rate is unknown
14089
14090 @item t
14091 the PTS (Presentation TimeStamp) of the filtered video frame,
14092 expressed in seconds, NAN if undefined
14093
14094 @item tb
14095 time base of the input video
14096 @end table
14097
14098
14099 @subsection Examples
14100
14101 @itemize
14102 @item
14103 Apply simple strong vignetting effect:
14104 @example
14105 vignette=PI/4
14106 @end example
14107
14108 @item
14109 Make a flickering vignetting:
14110 @example
14111 vignette='PI/4+random(1)*PI/50':eval=frame
14112 @end example
14113
14114 @end itemize
14115
14116 @section vstack
14117 Stack input videos vertically.
14118
14119 All streams must be of same pixel format and of same width.
14120
14121 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
14122 to create same output.
14123
14124 The filter accept the following option:
14125
14126 @table @option
14127 @item inputs
14128 Set number of input streams. Default is 2.
14129
14130 @item shortest
14131 If set to 1, force the output to terminate when the shortest input
14132 terminates. Default value is 0.
14133 @end table
14134
14135 @section w3fdif
14136
14137 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
14138 Deinterlacing Filter").
14139
14140 Based on the process described by Martin Weston for BBC R&D, and
14141 implemented based on the de-interlace algorithm written by Jim
14142 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
14143 uses filter coefficients calculated by BBC R&D.
14144
14145 There are two sets of filter coefficients, so called "simple":
14146 and "complex". Which set of filter coefficients is used can
14147 be set by passing an optional parameter:
14148
14149 @table @option
14150 @item filter
14151 Set the interlacing filter coefficients. Accepts one of the following values:
14152
14153 @table @samp
14154 @item simple
14155 Simple filter coefficient set.
14156 @item complex
14157 More-complex filter coefficient set.
14158 @end table
14159 Default value is @samp{complex}.
14160
14161 @item deint
14162 Specify which frames to deinterlace. Accept one of the following values:
14163
14164 @table @samp
14165 @item all
14166 Deinterlace all frames,
14167 @item interlaced
14168 Only deinterlace frames marked as interlaced.
14169 @end table
14170
14171 Default value is @samp{all}.
14172 @end table
14173
14174 @section waveform
14175 Video waveform monitor.
14176
14177 The waveform monitor plots color component intensity. By default luminance
14178 only. Each column of the waveform corresponds to a column of pixels in the
14179 source video.
14180
14181 It accepts the following options:
14182
14183 @table @option
14184 @item mode, m
14185 Can be either @code{row}, or @code{column}. Default is @code{column}.
14186 In row mode, the graph on the left side represents color component value 0 and
14187 the right side represents value = 255. In column mode, the top side represents
14188 color component value = 0 and bottom side represents value = 255.
14189
14190 @item intensity, i
14191 Set intensity. Smaller values are useful to find out how many values of the same
14192 luminance are distributed across input rows/columns.
14193 Default value is @code{0.04}. Allowed range is [0, 1].
14194
14195 @item mirror, r
14196 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
14197 In mirrored mode, higher values will be represented on the left
14198 side for @code{row} mode and at the top for @code{column} mode. Default is
14199 @code{1} (mirrored).
14200
14201 @item display, d
14202 Set display mode.
14203 It accepts the following values:
14204 @table @samp
14205 @item overlay
14206 Presents information identical to that in the @code{parade}, except
14207 that the graphs representing color components are superimposed directly
14208 over one another.
14209
14210 This display mode makes it easier to spot relative differences or similarities
14211 in overlapping areas of the color components that are supposed to be identical,
14212 such as neutral whites, grays, or blacks.
14213
14214 @item stack
14215 Display separate graph for the color components side by side in
14216 @code{row} mode or one below the other in @code{column} mode.
14217
14218 @item parade
14219 Display separate graph for the color components side by side in
14220 @code{column} mode or one below the other in @code{row} mode.
14221
14222 Using this display mode makes it easy to spot color casts in the highlights
14223 and shadows of an image, by comparing the contours of the top and the bottom
14224 graphs of each waveform. Since whites, grays, and blacks are characterized
14225 by exactly equal amounts of red, green, and blue, neutral areas of the picture
14226 should display three waveforms of roughly equal width/height. If not, the
14227 correction is easy to perform by making level adjustments the three waveforms.
14228 @end table
14229 Default is @code{stack}.
14230
14231 @item components, c
14232 Set which color components to display. Default is 1, which means only luminance
14233 or red color component if input is in RGB colorspace. If is set for example to
14234 7 it will display all 3 (if) available color components.
14235
14236 @item envelope, e
14237 @table @samp
14238 @item none
14239 No envelope, this is default.
14240
14241 @item instant
14242 Instant envelope, minimum and maximum values presented in graph will be easily
14243 visible even with small @code{step} value.
14244
14245 @item peak
14246 Hold minimum and maximum values presented in graph across time. This way you
14247 can still spot out of range values without constantly looking at waveforms.
14248
14249 @item peak+instant
14250 Peak and instant envelope combined together.
14251 @end table
14252
14253 @item filter, f
14254 @table @samp
14255 @item lowpass
14256 No filtering, this is default.
14257
14258 @item flat
14259 Luma and chroma combined together.
14260
14261 @item aflat
14262 Similar as above, but shows difference between blue and red chroma.
14263
14264 @item chroma
14265 Displays only chroma.
14266
14267 @item color
14268 Displays actual color value on waveform.
14269
14270 @item acolor
14271 Similar as above, but with luma showing frequency of chroma values.
14272 @end table
14273
14274 @item graticule, g
14275 Set which graticule to display.
14276
14277 @table @samp
14278 @item none
14279 Do not display graticule.
14280
14281 @item green
14282 Display green graticule showing legal broadcast ranges.
14283 @end table
14284
14285 @item opacity, o
14286 Set graticule opacity.
14287
14288 @item flags, fl
14289 Set graticule flags.
14290
14291 @table @samp
14292 @item numbers
14293 Draw numbers above lines. By default enabled.
14294
14295 @item dots
14296 Draw dots instead of lines.
14297 @end table
14298
14299 @item scale, s
14300 Set scale used for displaying graticule.
14301
14302 @table @samp
14303 @item digital
14304 @item millivolts
14305 @item ire
14306 @end table
14307 Default is digital.
14308
14309 @item bgopacity, b
14310 Set background opacity.
14311 @end table
14312
14313 @section weave
14314
14315 The @code{weave} takes a field-based video input and join
14316 each two sequential fields into single frame, producing a new double
14317 height clip with half the frame rate and half the frame count.
14318
14319 It accepts the following option:
14320
14321 @table @option
14322 @item first_field
14323 Set first field. Available values are:
14324
14325 @table @samp
14326 @item top, t
14327 Set the frame as top-field-first.
14328
14329 @item bottom, b
14330 Set the frame as bottom-field-first.
14331 @end table
14332 @end table
14333
14334 @subsection Examples
14335
14336 @itemize
14337 @item
14338 Interlace video using @ref{select} and @ref{separatefields} filter:
14339 @example
14340 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
14341 @end example
14342 @end itemize
14343
14344 @section xbr
14345 Apply the xBR high-quality magnification filter which is designed for pixel
14346 art. It follows a set of edge-detection rules, see
14347 @url{http://www.libretro.com/forums/viewtopic.php?f=6&t=134}.
14348
14349 It accepts the following option:
14350
14351 @table @option
14352 @item n
14353 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
14354 @code{3xBR} and @code{4} for @code{4xBR}.
14355 Default is @code{3}.
14356 @end table
14357
14358 @anchor{yadif}
14359 @section yadif
14360
14361 Deinterlace the input video ("yadif" means "yet another deinterlacing
14362 filter").
14363
14364 It accepts the following parameters:
14365
14366
14367 @table @option
14368
14369 @item mode
14370 The interlacing mode to adopt. It accepts one of the following values:
14371
14372 @table @option
14373 @item 0, send_frame
14374 Output one frame for each frame.
14375 @item 1, send_field
14376 Output one frame for each field.
14377 @item 2, send_frame_nospatial
14378 Like @code{send_frame}, but it skips the spatial interlacing check.
14379 @item 3, send_field_nospatial
14380 Like @code{send_field}, but it skips the spatial interlacing check.
14381 @end table
14382
14383 The default value is @code{send_frame}.
14384
14385 @item parity
14386 The picture field parity assumed for the input interlaced video. It accepts one
14387 of the following values:
14388
14389 @table @option
14390 @item 0, tff
14391 Assume the top field is first.
14392 @item 1, bff
14393 Assume the bottom field is first.
14394 @item -1, auto
14395 Enable automatic detection of field parity.
14396 @end table
14397
14398 The default value is @code{auto}.
14399 If the interlacing is unknown or the decoder does not export this information,
14400 top field first will be assumed.
14401
14402 @item deint
14403 Specify which frames to deinterlace. Accept one of the following
14404 values:
14405
14406 @table @option
14407 @item 0, all
14408 Deinterlace all frames.
14409 @item 1, interlaced
14410 Only deinterlace frames marked as interlaced.
14411 @end table
14412
14413 The default value is @code{all}.
14414 @end table
14415
14416 @section zoompan
14417
14418 Apply Zoom & Pan effect.
14419
14420 This filter accepts the following options:
14421
14422 @table @option
14423 @item zoom, z
14424 Set the zoom expression. Default is 1.
14425
14426 @item x
14427 @item y
14428 Set the x and y expression. Default is 0.
14429
14430 @item d
14431 Set the duration expression in number of frames.
14432 This sets for how many number of frames effect will last for
14433 single input image.
14434
14435 @item s
14436 Set the output image size, default is 'hd720'.
14437
14438 @item fps
14439 Set the output frame rate, default is '25'.
14440 @end table
14441
14442 Each expression can contain the following constants:
14443
14444 @table @option
14445 @item in_w, iw
14446 Input width.
14447
14448 @item in_h, ih
14449 Input height.
14450
14451 @item out_w, ow
14452 Output width.
14453
14454 @item out_h, oh
14455 Output height.
14456
14457 @item in
14458 Input frame count.
14459
14460 @item on
14461 Output frame count.
14462
14463 @item x
14464 @item y
14465 Last calculated 'x' and 'y' position from 'x' and 'y' expression
14466 for current input frame.
14467
14468 @item px
14469 @item py
14470 'x' and 'y' of last output frame of previous input frame or 0 when there was
14471 not yet such frame (first input frame).
14472
14473 @item zoom
14474 Last calculated zoom from 'z' expression for current input frame.
14475
14476 @item pzoom
14477 Last calculated zoom of last output frame of previous input frame.
14478
14479 @item duration
14480 Number of output frames for current input frame. Calculated from 'd' expression
14481 for each input frame.
14482
14483 @item pduration
14484 number of output frames created for previous input frame
14485
14486 @item a
14487 Rational number: input width / input height
14488
14489 @item sar
14490 sample aspect ratio
14491
14492 @item dar
14493 display aspect ratio
14494
14495 @end table
14496
14497 @subsection Examples
14498
14499 @itemize
14500 @item
14501 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
14502 @example
14503 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
14504 @end example
14505
14506 @item
14507 Zoom-in up to 1.5 and pan always at center of picture:
14508 @example
14509 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
14510 @end example
14511
14512 @item
14513 Same as above but without pausing:
14514 @example
14515 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
14516 @end example
14517 @end itemize
14518
14519 @section zscale
14520 Scale (resize) the input video, using the z.lib library:
14521 https://github.com/sekrit-twc/zimg.
14522
14523 The zscale filter forces the output display aspect ratio to be the same
14524 as the input, by changing the output sample aspect ratio.
14525
14526 If the input image format is different from the format requested by
14527 the next filter, the zscale filter will convert the input to the
14528 requested format.
14529
14530 @subsection Options
14531 The filter accepts the following options.
14532
14533 @table @option
14534 @item width, w
14535 @item height, h
14536 Set the output video dimension expression. Default value is the input
14537 dimension.
14538
14539 If the @var{width} or @var{w} is 0, the input width is used for the output.
14540 If the @var{height} or @var{h} is 0, the input height is used for the output.
14541
14542 If one of the values is -1, the zscale filter will use a value that
14543 maintains the aspect ratio of the input image, calculated from the
14544 other specified dimension. If both of them are -1, the input size is
14545 used
14546
14547 If one of the values is -n with n > 1, the zscale filter will also use a value
14548 that maintains the aspect ratio of the input image, calculated from the other
14549 specified dimension. After that it will, however, make sure that the calculated
14550 dimension is divisible by n and adjust the value if necessary.
14551
14552 See below for the list of accepted constants for use in the dimension
14553 expression.
14554
14555 @item size, s
14556 Set the video size. For the syntax of this option, check the
14557 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14558
14559 @item dither, d
14560 Set the dither type.
14561
14562 Possible values are:
14563 @table @var
14564 @item none
14565 @item ordered
14566 @item random
14567 @item error_diffusion
14568 @end table
14569
14570 Default is none.
14571
14572 @item filter, f
14573 Set the resize filter type.
14574
14575 Possible values are:
14576 @table @var
14577 @item point
14578 @item bilinear
14579 @item bicubic
14580 @item spline16
14581 @item spline36
14582 @item lanczos
14583 @end table
14584
14585 Default is bilinear.
14586
14587 @item range, r
14588 Set the color range.
14589
14590 Possible values are:
14591 @table @var
14592 @item input
14593 @item limited
14594 @item full
14595 @end table
14596
14597 Default is same as input.
14598
14599 @item primaries, p
14600 Set the color primaries.
14601
14602 Possible values are:
14603 @table @var
14604 @item input
14605 @item 709
14606 @item unspecified
14607 @item 170m
14608 @item 240m
14609 @item 2020
14610 @end table
14611
14612 Default is same as input.
14613
14614 @item transfer, t
14615 Set the transfer characteristics.
14616
14617 Possible values are:
14618 @table @var
14619 @item input
14620 @item 709
14621 @item unspecified
14622 @item 601
14623 @item linear
14624 @item 2020_10
14625 @item 2020_12
14626 @end table
14627
14628 Default is same as input.
14629
14630 @item matrix, m
14631 Set the colorspace matrix.
14632
14633 Possible value are:
14634 @table @var
14635 @item input
14636 @item 709
14637 @item unspecified
14638 @item 470bg
14639 @item 170m
14640 @item 2020_ncl
14641 @item 2020_cl
14642 @end table
14643
14644 Default is same as input.
14645
14646 @item rangein, rin
14647 Set the input color range.
14648
14649 Possible values are:
14650 @table @var
14651 @item input
14652 @item limited
14653 @item full
14654 @end table
14655
14656 Default is same as input.
14657
14658 @item primariesin, pin
14659 Set the input color primaries.
14660
14661 Possible values are:
14662 @table @var
14663 @item input
14664 @item 709
14665 @item unspecified
14666 @item 170m
14667 @item 240m
14668 @item 2020
14669 @end table
14670
14671 Default is same as input.
14672
14673 @item transferin, tin
14674 Set the input transfer characteristics.
14675
14676 Possible values are:
14677 @table @var
14678 @item input
14679 @item 709
14680 @item unspecified
14681 @item 601
14682 @item linear
14683 @item 2020_10
14684 @item 2020_12
14685 @end table
14686
14687 Default is same as input.
14688
14689 @item matrixin, min
14690 Set the input colorspace matrix.
14691
14692 Possible value are:
14693 @table @var
14694 @item input
14695 @item 709
14696 @item unspecified
14697 @item 470bg
14698 @item 170m
14699 @item 2020_ncl
14700 @item 2020_cl
14701 @end table
14702
14703 @item chromal, c
14704 Set the output chroma location.
14705
14706 Possible values are:
14707 @table @var
14708 @item input
14709 @item left
14710 @item center
14711 @item topleft
14712 @item top
14713 @item bottomleft
14714 @item bottom
14715 @end table
14716
14717 @item chromalin, cin
14718 Set the input chroma location.
14719
14720 Possible values are:
14721 @table @var
14722 @item input
14723 @item left
14724 @item center
14725 @item topleft
14726 @item top
14727 @item bottomleft
14728 @item bottom
14729 @end table
14730 @end table
14731
14732 The values of the @option{w} and @option{h} options are expressions
14733 containing the following constants:
14734
14735 @table @var
14736 @item in_w
14737 @item in_h
14738 The input width and height
14739
14740 @item iw
14741 @item ih
14742 These are the same as @var{in_w} and @var{in_h}.
14743
14744 @item out_w
14745 @item out_h
14746 The output (scaled) width and height
14747
14748 @item ow
14749 @item oh
14750 These are the same as @var{out_w} and @var{out_h}
14751
14752 @item a
14753 The same as @var{iw} / @var{ih}
14754
14755 @item sar
14756 input sample aspect ratio
14757
14758 @item dar
14759 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
14760
14761 @item hsub
14762 @item vsub
14763 horizontal and vertical input chroma subsample values. For example for the
14764 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14765
14766 @item ohsub
14767 @item ovsub
14768 horizontal and vertical output chroma subsample values. For example for the
14769 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14770 @end table
14771
14772 @table @option
14773 @end table
14774
14775 @c man end VIDEO FILTERS
14776
14777 @chapter Video Sources
14778 @c man begin VIDEO SOURCES
14779
14780 Below is a description of the currently available video sources.
14781
14782 @section buffer
14783
14784 Buffer video frames, and make them available to the filter chain.
14785
14786 This source is mainly intended for a programmatic use, in particular
14787 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
14788
14789 It accepts the following parameters:
14790
14791 @table @option
14792
14793 @item video_size
14794 Specify the size (width and height) of the buffered video frames. For the
14795 syntax of this option, check the
14796 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14797
14798 @item width
14799 The input video width.
14800
14801 @item height
14802 The input video height.
14803
14804 @item pix_fmt
14805 A string representing the pixel format of the buffered video frames.
14806 It may be a number corresponding to a pixel format, or a pixel format
14807 name.
14808
14809 @item time_base
14810 Specify the timebase assumed by the timestamps of the buffered frames.
14811
14812 @item frame_rate
14813 Specify the frame rate expected for the video stream.
14814
14815 @item pixel_aspect, sar
14816 The sample (pixel) aspect ratio of the input video.
14817
14818 @item sws_param
14819 Specify the optional parameters to be used for the scale filter which
14820 is automatically inserted when an input change is detected in the
14821 input size or format.
14822
14823 @item hw_frames_ctx
14824 When using a hardware pixel format, this should be a reference to an
14825 AVHWFramesContext describing input frames.
14826 @end table
14827
14828 For example:
14829 @example
14830 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
14831 @end example
14832
14833 will instruct the source to accept video frames with size 320x240 and
14834 with format "yuv410p", assuming 1/24 as the timestamps timebase and
14835 square pixels (1:1 sample aspect ratio).
14836 Since the pixel format with name "yuv410p" corresponds to the number 6
14837 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
14838 this example corresponds to:
14839 @example
14840 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
14841 @end example
14842
14843 Alternatively, the options can be specified as a flat string, but this
14844 syntax is deprecated:
14845
14846 @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}]
14847
14848 @section cellauto
14849
14850 Create a pattern generated by an elementary cellular automaton.
14851
14852 The initial state of the cellular automaton can be defined through the
14853 @option{filename} and @option{pattern} options. If such options are
14854 not specified an initial state is created randomly.
14855
14856 At each new frame a new row in the video is filled with the result of
14857 the cellular automaton next generation. The behavior when the whole
14858 frame is filled is defined by the @option{scroll} option.
14859
14860 This source accepts the following options:
14861
14862 @table @option
14863 @item filename, f
14864 Read the initial cellular automaton state, i.e. the starting row, from
14865 the specified file.
14866 In the file, each non-whitespace character is considered an alive
14867 cell, a newline will terminate the row, and further characters in the
14868 file will be ignored.
14869
14870 @item pattern, p
14871 Read the initial cellular automaton state, i.e. the starting row, from
14872 the specified string.
14873
14874 Each non-whitespace character in the string is considered an alive
14875 cell, a newline will terminate the row, and further characters in the
14876 string will be ignored.
14877
14878 @item rate, r
14879 Set the video rate, that is the number of frames generated per second.
14880 Default is 25.
14881
14882 @item random_fill_ratio, ratio
14883 Set the random fill ratio for the initial cellular automaton row. It
14884 is a floating point number value ranging from 0 to 1, defaults to
14885 1/PHI.
14886
14887 This option is ignored when a file or a pattern is specified.
14888
14889 @item random_seed, seed
14890 Set the seed for filling randomly the initial row, must be an integer
14891 included between 0 and UINT32_MAX. If not specified, or if explicitly
14892 set to -1, the filter will try to use a good random seed on a best
14893 effort basis.
14894
14895 @item rule
14896 Set the cellular automaton rule, it is a number ranging from 0 to 255.
14897 Default value is 110.
14898
14899 @item size, s
14900 Set the size of the output video. For the syntax of this option, check the
14901 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14902
14903 If @option{filename} or @option{pattern} is specified, the size is set
14904 by default to the width of the specified initial state row, and the
14905 height is set to @var{width} * PHI.
14906
14907 If @option{size} is set, it must contain the width of the specified
14908 pattern string, and the specified pattern will be centered in the
14909 larger row.
14910
14911 If a filename or a pattern string is not specified, the size value
14912 defaults to "320x518" (used for a randomly generated initial state).
14913
14914 @item scroll
14915 If set to 1, scroll the output upward when all the rows in the output
14916 have been already filled. If set to 0, the new generated row will be
14917 written over the top row just after the bottom row is filled.
14918 Defaults to 1.
14919
14920 @item start_full, full
14921 If set to 1, completely fill the output with generated rows before
14922 outputting the first frame.
14923 This is the default behavior, for disabling set the value to 0.
14924
14925 @item stitch
14926 If set to 1, stitch the left and right row edges together.
14927 This is the default behavior, for disabling set the value to 0.
14928 @end table
14929
14930 @subsection Examples
14931
14932 @itemize
14933 @item
14934 Read the initial state from @file{pattern}, and specify an output of
14935 size 200x400.
14936 @example
14937 cellauto=f=pattern:s=200x400
14938 @end example
14939
14940 @item
14941 Generate a random initial row with a width of 200 cells, with a fill
14942 ratio of 2/3:
14943 @example
14944 cellauto=ratio=2/3:s=200x200
14945 @end example
14946
14947 @item
14948 Create a pattern generated by rule 18 starting by a single alive cell
14949 centered on an initial row with width 100:
14950 @example
14951 cellauto=p=@@:s=100x400:full=0:rule=18
14952 @end example
14953
14954 @item
14955 Specify a more elaborated initial pattern:
14956 @example
14957 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
14958 @end example
14959
14960 @end itemize
14961
14962 @anchor{coreimagesrc}
14963 @section coreimagesrc
14964 Video source generated on GPU using Apple's CoreImage API on OSX.
14965
14966 This video source is a specialized version of the @ref{coreimage} video filter.
14967 Use a core image generator at the beginning of the applied filterchain to
14968 generate the content.
14969
14970 The coreimagesrc video source accepts the following options:
14971 @table @option
14972 @item list_generators
14973 List all available generators along with all their respective options as well as
14974 possible minimum and maximum values along with the default values.
14975 @example
14976 list_generators=true
14977 @end example
14978
14979 @item size, s
14980 Specify the size of the sourced video. For the syntax of this option, check the
14981 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14982 The default value is @code{320x240}.
14983
14984 @item rate, r
14985 Specify the frame rate of the sourced video, as the number of frames
14986 generated per second. It has to be a string in the format
14987 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
14988 number or a valid video frame rate abbreviation. The default value is
14989 "25".
14990
14991 @item sar
14992 Set the sample aspect ratio of the sourced video.
14993
14994 @item duration, d
14995 Set the duration of the sourced video. See
14996 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
14997 for the accepted syntax.
14998
14999 If not specified, or the expressed duration is negative, the video is
15000 supposed to be generated forever.
15001 @end table
15002
15003 Additionally, all options of the @ref{coreimage} video filter are accepted.
15004 A complete filterchain can be used for further processing of the
15005 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
15006 and examples for details.
15007
15008 @subsection Examples
15009
15010 @itemize
15011
15012 @item
15013 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
15014 given as complete and escaped command-line for Apple's standard bash shell:
15015 @example
15016 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
15017 @end example
15018 This example is equivalent to the QRCode example of @ref{coreimage} without the
15019 need for a nullsrc video source.
15020 @end itemize
15021
15022
15023 @section mandelbrot
15024
15025 Generate a Mandelbrot set fractal, and progressively zoom towards the
15026 point specified with @var{start_x} and @var{start_y}.
15027
15028 This source accepts the following options:
15029
15030 @table @option
15031
15032 @item end_pts
15033 Set the terminal pts value. Default value is 400.
15034
15035 @item end_scale
15036 Set the terminal scale value.
15037 Must be a floating point value. Default value is 0.3.
15038
15039 @item inner
15040 Set the inner coloring mode, that is the algorithm used to draw the
15041 Mandelbrot fractal internal region.
15042
15043 It shall assume one of the following values:
15044 @table @option
15045 @item black
15046 Set black mode.
15047 @item convergence
15048 Show time until convergence.
15049 @item mincol
15050 Set color based on point closest to the origin of the iterations.
15051 @item period
15052 Set period mode.
15053 @end table
15054
15055 Default value is @var{mincol}.
15056
15057 @item bailout
15058 Set the bailout value. Default value is 10.0.
15059
15060 @item maxiter
15061 Set the maximum of iterations performed by the rendering
15062 algorithm. Default value is 7189.
15063
15064 @item outer
15065 Set outer coloring mode.
15066 It shall assume one of following values:
15067 @table @option
15068 @item iteration_count
15069 Set iteration cound mode.
15070 @item normalized_iteration_count
15071 set normalized iteration count mode.
15072 @end table
15073 Default value is @var{normalized_iteration_count}.
15074
15075 @item rate, r
15076 Set frame rate, expressed as number of frames per second. Default
15077 value is "25".
15078
15079 @item size, s
15080 Set frame size. For the syntax of this option, check the "Video
15081 size" section in the ffmpeg-utils manual. Default value is "640x480".
15082
15083 @item start_scale
15084 Set the initial scale value. Default value is 3.0.
15085
15086 @item start_x
15087 Set the initial x position. Must be a floating point value between
15088 -100 and 100. Default value is -0.743643887037158704752191506114774.
15089
15090 @item start_y
15091 Set the initial y position. Must be a floating point value between
15092 -100 and 100. Default value is -0.131825904205311970493132056385139.
15093 @end table
15094
15095 @section mptestsrc
15096
15097 Generate various test patterns, as generated by the MPlayer test filter.
15098
15099 The size of the generated video is fixed, and is 256x256.
15100 This source is useful in particular for testing encoding features.
15101
15102 This source accepts the following options:
15103
15104 @table @option
15105
15106 @item rate, r
15107 Specify the frame rate of the sourced video, as the number of frames
15108 generated per second. It has to be a string in the format
15109 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
15110 number or a valid video frame rate abbreviation. The default value is
15111 "25".
15112
15113 @item duration, d
15114 Set the duration of the sourced video. See
15115 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
15116 for the accepted syntax.
15117
15118 If not specified, or the expressed duration is negative, the video is
15119 supposed to be generated forever.
15120
15121 @item test, t
15122
15123 Set the number or the name of the test to perform. Supported tests are:
15124 @table @option
15125 @item dc_luma
15126 @item dc_chroma
15127 @item freq_luma
15128 @item freq_chroma
15129 @item amp_luma
15130 @item amp_chroma
15131 @item cbp
15132 @item mv
15133 @item ring1
15134 @item ring2
15135 @item all
15136
15137 @end table
15138
15139 Default value is "all", which will cycle through the list of all tests.
15140 @end table
15141
15142 Some examples:
15143 @example
15144 mptestsrc=t=dc_luma
15145 @end example
15146
15147 will generate a "dc_luma" test pattern.
15148
15149 @section frei0r_src
15150
15151 Provide a frei0r source.
15152
15153 To enable compilation of this filter you need to install the frei0r
15154 header and configure FFmpeg with @code{--enable-frei0r}.
15155
15156 This source accepts the following parameters:
15157
15158 @table @option
15159
15160 @item size
15161 The size of the video to generate. For the syntax of this option, check the
15162 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15163
15164 @item framerate
15165 The framerate of the generated video. It may be a string of the form
15166 @var{num}/@var{den} or a frame rate abbreviation.
15167
15168 @item filter_name
15169 The name to the frei0r source to load. For more information regarding frei0r and
15170 how to set the parameters, read the @ref{frei0r} section in the video filters
15171 documentation.
15172
15173 @item filter_params
15174 A '|'-separated list of parameters to pass to the frei0r source.
15175
15176 @end table
15177
15178 For example, to generate a frei0r partik0l source with size 200x200
15179 and frame rate 10 which is overlaid on the overlay filter main input:
15180 @example
15181 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
15182 @end example
15183
15184 @section life
15185
15186 Generate a life pattern.
15187
15188 This source is based on a generalization of John Conway's life game.
15189
15190 The sourced input represents a life grid, each pixel represents a cell
15191 which can be in one of two possible states, alive or dead. Every cell
15192 interacts with its eight neighbours, which are the cells that are
15193 horizontally, vertically, or diagonally adjacent.
15194
15195 At each interaction the grid evolves according to the adopted rule,
15196 which specifies the number of neighbor alive cells which will make a
15197 cell stay alive or born. The @option{rule} option allows one to specify
15198 the rule to adopt.
15199
15200 This source accepts the following options:
15201
15202 @table @option
15203 @item filename, f
15204 Set the file from which to read the initial grid state. In the file,
15205 each non-whitespace character is considered an alive cell, and newline
15206 is used to delimit the end of each row.
15207
15208 If this option is not specified, the initial grid is generated
15209 randomly.
15210
15211 @item rate, r
15212 Set the video rate, that is the number of frames generated per second.
15213 Default is 25.
15214
15215 @item random_fill_ratio, ratio
15216 Set the random fill ratio for the initial random grid. It is a
15217 floating point number value ranging from 0 to 1, defaults to 1/PHI.
15218 It is ignored when a file is specified.
15219
15220 @item random_seed, seed
15221 Set the seed for filling the initial random grid, must be an integer
15222 included between 0 and UINT32_MAX. If not specified, or if explicitly
15223 set to -1, the filter will try to use a good random seed on a best
15224 effort basis.
15225
15226 @item rule
15227 Set the life rule.
15228
15229 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
15230 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
15231 @var{NS} specifies the number of alive neighbor cells which make a
15232 live cell stay alive, and @var{NB} the number of alive neighbor cells
15233 which make a dead cell to become alive (i.e. to "born").
15234 "s" and "b" can be used in place of "S" and "B", respectively.
15235
15236 Alternatively a rule can be specified by an 18-bits integer. The 9
15237 high order bits are used to encode the next cell state if it is alive
15238 for each number of neighbor alive cells, the low order bits specify
15239 the rule for "borning" new cells. Higher order bits encode for an
15240 higher number of neighbor cells.
15241 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
15242 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
15243
15244 Default value is "S23/B3", which is the original Conway's game of life
15245 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
15246 cells, and will born a new cell if there are three alive cells around
15247 a dead cell.
15248
15249 @item size, s
15250 Set the size of the output video. For the syntax of this option, check the
15251 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15252
15253 If @option{filename} is specified, the size is set by default to the
15254 same size of the input file. If @option{size} is set, it must contain
15255 the size specified in the input file, and the initial grid defined in
15256 that file is centered in the larger resulting area.
15257
15258 If a filename is not specified, the size value defaults to "320x240"
15259 (used for a randomly generated initial grid).
15260
15261 @item stitch
15262 If set to 1, stitch the left and right grid edges together, and the
15263 top and bottom edges also. Defaults to 1.
15264
15265 @item mold
15266 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
15267 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
15268 value from 0 to 255.
15269
15270 @item life_color
15271 Set the color of living (or new born) cells.
15272
15273 @item death_color
15274 Set the color of dead cells. If @option{mold} is set, this is the first color
15275 used to represent a dead cell.
15276
15277 @item mold_color
15278 Set mold color, for definitely dead and moldy cells.
15279
15280 For the syntax of these 3 color options, check the "Color" section in the
15281 ffmpeg-utils manual.
15282 @end table
15283
15284 @subsection Examples
15285
15286 @itemize
15287 @item
15288 Read a grid from @file{pattern}, and center it on a grid of size
15289 300x300 pixels:
15290 @example
15291 life=f=pattern:s=300x300
15292 @end example
15293
15294 @item
15295 Generate a random grid of size 200x200, with a fill ratio of 2/3:
15296 @example
15297 life=ratio=2/3:s=200x200
15298 @end example
15299
15300 @item
15301 Specify a custom rule for evolving a randomly generated grid:
15302 @example
15303 life=rule=S14/B34
15304 @end example
15305
15306 @item
15307 Full example with slow death effect (mold) using @command{ffplay}:
15308 @example
15309 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
15310 @end example
15311 @end itemize
15312
15313 @anchor{allrgb}
15314 @anchor{allyuv}
15315 @anchor{color}
15316 @anchor{haldclutsrc}
15317 @anchor{nullsrc}
15318 @anchor{rgbtestsrc}
15319 @anchor{smptebars}
15320 @anchor{smptehdbars}
15321 @anchor{testsrc}
15322 @anchor{testsrc2}
15323 @anchor{yuvtestsrc}
15324 @section allrgb, allyuv, color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
15325
15326 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
15327
15328 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
15329
15330 The @code{color} source provides an uniformly colored input.
15331
15332 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
15333 @ref{haldclut} filter.
15334
15335 The @code{nullsrc} source returns unprocessed video frames. It is
15336 mainly useful to be employed in analysis / debugging tools, or as the
15337 source for filters which ignore the input data.
15338
15339 The @code{rgbtestsrc} source generates an RGB test pattern useful for
15340 detecting RGB vs BGR issues. You should see a red, green and blue
15341 stripe from top to bottom.
15342
15343 The @code{smptebars} source generates a color bars pattern, based on
15344 the SMPTE Engineering Guideline EG 1-1990.
15345
15346 The @code{smptehdbars} source generates a color bars pattern, based on
15347 the SMPTE RP 219-2002.
15348
15349 The @code{testsrc} source generates a test video pattern, showing a
15350 color pattern, a scrolling gradient and a timestamp. This is mainly
15351 intended for testing purposes.
15352
15353 The @code{testsrc2} source is similar to testsrc, but supports more
15354 pixel formats instead of just @code{rgb24}. This allows using it as an
15355 input for other tests without requiring a format conversion.
15356
15357 The @code{yuvtestsrc} source generates an YUV test pattern. You should
15358 see a y, cb and cr stripe from top to bottom.
15359
15360 The sources accept the following parameters:
15361
15362 @table @option
15363
15364 @item color, c
15365 Specify the color of the source, only available in the @code{color}
15366 source. For the syntax of this option, check the "Color" section in the
15367 ffmpeg-utils manual.
15368
15369 @item level
15370 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
15371 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
15372 pixels to be used as identity matrix for 3D lookup tables. Each component is
15373 coded on a @code{1/(N*N)} scale.
15374
15375 @item size, s
15376 Specify the size of the sourced video. For the syntax of this option, check the
15377 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15378 The default value is @code{320x240}.
15379
15380 This option is not available with the @code{haldclutsrc} filter.
15381
15382 @item rate, r
15383 Specify the frame rate of the sourced video, as the number of frames
15384 generated per second. It has to be a string in the format
15385 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
15386 number or a valid video frame rate abbreviation. The default value is
15387 "25".
15388
15389 @item sar
15390 Set the sample aspect ratio of the sourced video.
15391
15392 @item duration, d
15393 Set the duration of the sourced video. See
15394 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
15395 for the accepted syntax.
15396
15397 If not specified, or the expressed duration is negative, the video is
15398 supposed to be generated forever.
15399
15400 @item decimals, n
15401 Set the number of decimals to show in the timestamp, only available in the
15402 @code{testsrc} source.
15403
15404 The displayed timestamp value will correspond to the original
15405 timestamp value multiplied by the power of 10 of the specified
15406 value. Default value is 0.
15407 @end table
15408
15409 For example the following:
15410 @example
15411 testsrc=duration=5.3:size=qcif:rate=10
15412 @end example
15413
15414 will generate a video with a duration of 5.3 seconds, with size
15415 176x144 and a frame rate of 10 frames per second.
15416
15417 The following graph description will generate a red source
15418 with an opacity of 0.2, with size "qcif" and a frame rate of 10
15419 frames per second.
15420 @example
15421 color=c=red@@0.2:s=qcif:r=10
15422 @end example
15423
15424 If the input content is to be ignored, @code{nullsrc} can be used. The
15425 following command generates noise in the luminance plane by employing
15426 the @code{geq} filter:
15427 @example
15428 nullsrc=s=256x256, geq=random(1)*255:128:128
15429 @end example
15430
15431 @subsection Commands
15432
15433 The @code{color} source supports the following commands:
15434
15435 @table @option
15436 @item c, color
15437 Set the color of the created image. Accepts the same syntax of the
15438 corresponding @option{color} option.
15439 @end table
15440
15441 @c man end VIDEO SOURCES
15442
15443 @chapter Video Sinks
15444 @c man begin VIDEO SINKS
15445
15446 Below is a description of the currently available video sinks.
15447
15448 @section buffersink
15449
15450 Buffer video frames, and make them available to the end of the filter
15451 graph.
15452
15453 This sink is mainly intended for programmatic use, in particular
15454 through the interface defined in @file{libavfilter/buffersink.h}
15455 or the options system.
15456
15457 It accepts a pointer to an AVBufferSinkContext structure, which
15458 defines the incoming buffers' formats, to be passed as the opaque
15459 parameter to @code{avfilter_init_filter} for initialization.
15460
15461 @section nullsink
15462
15463 Null video sink: do absolutely nothing with the input video. It is
15464 mainly useful as a template and for use in analysis / debugging
15465 tools.
15466
15467 @c man end VIDEO SINKS
15468
15469 @chapter Multimedia Filters
15470 @c man begin MULTIMEDIA FILTERS
15471
15472 Below is a description of the currently available multimedia filters.
15473
15474 @section ahistogram
15475
15476 Convert input audio to a video output, displaying the volume histogram.
15477
15478 The filter accepts the following options:
15479
15480 @table @option
15481 @item dmode
15482 Specify how histogram is calculated.
15483
15484 It accepts the following values:
15485 @table @samp
15486 @item single
15487 Use single histogram for all channels.
15488 @item separate
15489 Use separate histogram for each channel.
15490 @end table
15491 Default is @code{single}.
15492
15493 @item rate, r
15494 Set frame rate, expressed as number of frames per second. Default
15495 value is "25".
15496
15497 @item size, s
15498 Specify the video size for the output. For the syntax of this option, check the
15499 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15500 Default value is @code{hd720}.
15501
15502 @item scale
15503 Set display scale.
15504
15505 It accepts the following values:
15506 @table @samp
15507 @item log
15508 logarithmic
15509 @item sqrt
15510 square root
15511 @item cbrt
15512 cubic root
15513 @item lin
15514 linear
15515 @item rlog
15516 reverse logarithmic
15517 @end table
15518 Default is @code{log}.
15519
15520 @item ascale
15521 Set amplitude scale.
15522
15523 It accepts the following values:
15524 @table @samp
15525 @item log
15526 logarithmic
15527 @item lin
15528 linear
15529 @end table
15530 Default is @code{log}.
15531
15532 @item acount
15533 Set how much frames to accumulate in histogram.
15534 Defauls is 1. Setting this to -1 accumulates all frames.
15535
15536 @item rheight
15537 Set histogram ratio of window height.
15538
15539 @item slide
15540 Set sonogram sliding.
15541
15542 It accepts the following values:
15543 @table @samp
15544 @item replace
15545 replace old rows with new ones.
15546 @item scroll
15547 scroll from top to bottom.
15548 @end table
15549 Default is @code{replace}.
15550 @end table
15551
15552 @section aphasemeter
15553
15554 Convert input audio to a video output, displaying the audio phase.
15555
15556 The filter accepts the following options:
15557
15558 @table @option
15559 @item rate, r
15560 Set the output frame rate. Default value is @code{25}.
15561
15562 @item size, s
15563 Set the video size for the output. For the syntax of this option, check the
15564 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15565 Default value is @code{800x400}.
15566
15567 @item rc
15568 @item gc
15569 @item bc
15570 Specify the red, green, blue contrast. Default values are @code{2},
15571 @code{7} and @code{1}.
15572 Allowed range is @code{[0, 255]}.
15573
15574 @item mpc
15575 Set color which will be used for drawing median phase. If color is
15576 @code{none} which is default, no median phase value will be drawn.
15577 @end table
15578
15579 The filter also exports the frame metadata @code{lavfi.aphasemeter.phase} which
15580 represents mean phase of current audio frame. Value is in range @code{[-1, 1]}.
15581 The @code{-1} means left and right channels are completely out of phase and
15582 @code{1} means channels are in phase.
15583
15584 @section avectorscope
15585
15586 Convert input audio to a video output, representing the audio vector
15587 scope.
15588
15589 The filter is used to measure the difference between channels of stereo
15590 audio stream. A monoaural signal, consisting of identical left and right
15591 signal, results in straight vertical line. Any stereo separation is visible
15592 as a deviation from this line, creating a Lissajous figure.
15593 If the straight (or deviation from it) but horizontal line appears this
15594 indicates that the left and right channels are out of phase.
15595
15596 The filter accepts the following options:
15597
15598 @table @option
15599 @item mode, m
15600 Set the vectorscope mode.
15601
15602 Available values are:
15603 @table @samp
15604 @item lissajous
15605 Lissajous rotated by 45 degrees.
15606
15607 @item lissajous_xy
15608 Same as above but not rotated.
15609
15610 @item polar
15611 Shape resembling half of circle.
15612 @end table
15613
15614 Default value is @samp{lissajous}.
15615
15616 @item size, s
15617 Set the video size for the output. For the syntax of this option, check the
15618 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15619 Default value is @code{400x400}.
15620
15621 @item rate, r
15622 Set the output frame rate. Default value is @code{25}.
15623
15624 @item rc
15625 @item gc
15626 @item bc
15627 @item ac
15628 Specify the red, green, blue and alpha contrast. Default values are @code{40},
15629 @code{160}, @code{80} and @code{255}.
15630 Allowed range is @code{[0, 255]}.
15631
15632 @item rf
15633 @item gf
15634 @item bf
15635 @item af
15636 Specify the red, green, blue and alpha fade. Default values are @code{15},
15637 @code{10}, @code{5} and @code{5}.
15638 Allowed range is @code{[0, 255]}.
15639
15640 @item zoom
15641 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[1, 10]}.
15642
15643 @item draw
15644 Set the vectorscope drawing mode.
15645
15646 Available values are:
15647 @table @samp
15648 @item dot
15649 Draw dot for each sample.
15650
15651 @item line
15652 Draw line between previous and current sample.
15653 @end table
15654
15655 Default value is @samp{dot}.
15656
15657 @item scale
15658 Specify amplitude scale of audio samples.
15659
15660 Available values are:
15661 @table @samp
15662 @item lin
15663 Linear.
15664
15665 @item sqrt
15666 Square root.
15667
15668 @item cbrt
15669 Cubic root.
15670
15671 @item log
15672 Logarithmic.
15673 @end table
15674
15675 @end table
15676
15677 @subsection Examples
15678
15679 @itemize
15680 @item
15681 Complete example using @command{ffplay}:
15682 @example
15683 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
15684              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
15685 @end example
15686 @end itemize
15687
15688 @section bench, abench
15689
15690 Benchmark part of a filtergraph.
15691
15692 The filter accepts the following options:
15693
15694 @table @option
15695 @item action
15696 Start or stop a timer.
15697
15698 Available values are:
15699 @table @samp
15700 @item start
15701 Get the current time, set it as frame metadata (using the key
15702 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
15703
15704 @item stop
15705 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
15706 the input frame metadata to get the time difference. Time difference, average,
15707 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
15708 @code{min}) are then printed. The timestamps are expressed in seconds.
15709 @end table
15710 @end table
15711
15712 @subsection Examples
15713
15714 @itemize
15715 @item
15716 Benchmark @ref{selectivecolor} filter:
15717 @example
15718 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
15719 @end example
15720 @end itemize
15721
15722 @section concat
15723
15724 Concatenate audio and video streams, joining them together one after the
15725 other.
15726
15727 The filter works on segments of synchronized video and audio streams. All
15728 segments must have the same number of streams of each type, and that will
15729 also be the number of streams at output.
15730
15731 The filter accepts the following options:
15732
15733 @table @option
15734
15735 @item n
15736 Set the number of segments. Default is 2.
15737
15738 @item v
15739 Set the number of output video streams, that is also the number of video
15740 streams in each segment. Default is 1.
15741
15742 @item a
15743 Set the number of output audio streams, that is also the number of audio
15744 streams in each segment. Default is 0.
15745
15746 @item unsafe
15747 Activate unsafe mode: do not fail if segments have a different format.
15748
15749 @end table
15750
15751 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
15752 @var{a} audio outputs.
15753
15754 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
15755 segment, in the same order as the outputs, then the inputs for the second
15756 segment, etc.
15757
15758 Related streams do not always have exactly the same duration, for various
15759 reasons including codec frame size or sloppy authoring. For that reason,
15760 related synchronized streams (e.g. a video and its audio track) should be
15761 concatenated at once. The concat filter will use the duration of the longest
15762 stream in each segment (except the last one), and if necessary pad shorter
15763 audio streams with silence.
15764
15765 For this filter to work correctly, all segments must start at timestamp 0.
15766
15767 All corresponding streams must have the same parameters in all segments; the
15768 filtering system will automatically select a common pixel format for video
15769 streams, and a common sample format, sample rate and channel layout for
15770 audio streams, but other settings, such as resolution, must be converted
15771 explicitly by the user.
15772
15773 Different frame rates are acceptable but will result in variable frame rate
15774 at output; be sure to configure the output file to handle it.
15775
15776 @subsection Examples
15777
15778 @itemize
15779 @item
15780 Concatenate an opening, an episode and an ending, all in bilingual version
15781 (video in stream 0, audio in streams 1 and 2):
15782 @example
15783 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
15784   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
15785    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
15786   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
15787 @end example
15788
15789 @item
15790 Concatenate two parts, handling audio and video separately, using the
15791 (a)movie sources, and adjusting the resolution:
15792 @example
15793 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
15794 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
15795 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
15796 @end example
15797 Note that a desync will happen at the stitch if the audio and video streams
15798 do not have exactly the same duration in the first file.
15799
15800 @end itemize
15801
15802 @section drawgraph, adrawgraph
15803
15804 Draw a graph using input video or audio metadata.
15805
15806 It accepts the following parameters:
15807
15808 @table @option
15809 @item m1
15810 Set 1st frame metadata key from which metadata values will be used to draw a graph.
15811
15812 @item fg1
15813 Set 1st foreground color expression.
15814
15815 @item m2
15816 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
15817
15818 @item fg2
15819 Set 2nd foreground color expression.
15820
15821 @item m3
15822 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
15823
15824 @item fg3
15825 Set 3rd foreground color expression.
15826
15827 @item m4
15828 Set 4th frame metadata key from which metadata values will be used to draw a graph.
15829
15830 @item fg4
15831 Set 4th foreground color expression.
15832
15833 @item min
15834 Set minimal value of metadata value.
15835
15836 @item max
15837 Set maximal value of metadata value.
15838
15839 @item bg
15840 Set graph background color. Default is white.
15841
15842 @item mode
15843 Set graph mode.
15844
15845 Available values for mode is:
15846 @table @samp
15847 @item bar
15848 @item dot
15849 @item line
15850 @end table
15851
15852 Default is @code{line}.
15853
15854 @item slide
15855 Set slide mode.
15856
15857 Available values for slide is:
15858 @table @samp
15859 @item frame
15860 Draw new frame when right border is reached.
15861
15862 @item replace
15863 Replace old columns with new ones.
15864
15865 @item scroll
15866 Scroll from right to left.
15867
15868 @item rscroll
15869 Scroll from left to right.
15870
15871 @item picture
15872 Draw single picture.
15873 @end table
15874
15875 Default is @code{frame}.
15876
15877 @item size
15878 Set size of graph video. For the syntax of this option, check the
15879 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15880 The default value is @code{900x256}.
15881
15882 The foreground color expressions can use the following variables:
15883 @table @option
15884 @item MIN
15885 Minimal value of metadata value.
15886
15887 @item MAX
15888 Maximal value of metadata value.
15889
15890 @item VAL
15891 Current metadata key value.
15892 @end table
15893
15894 The color is defined as 0xAABBGGRR.
15895 @end table
15896
15897 Example using metadata from @ref{signalstats} filter:
15898 @example
15899 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
15900 @end example
15901
15902 Example using metadata from @ref{ebur128} filter:
15903 @example
15904 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
15905 @end example
15906
15907 @anchor{ebur128}
15908 @section ebur128
15909
15910 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
15911 it unchanged. By default, it logs a message at a frequency of 10Hz with the
15912 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
15913 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
15914
15915 The filter also has a video output (see the @var{video} option) with a real
15916 time graph to observe the loudness evolution. The graphic contains the logged
15917 message mentioned above, so it is not printed anymore when this option is set,
15918 unless the verbose logging is set. The main graphing area contains the
15919 short-term loudness (3 seconds of analysis), and the gauge on the right is for
15920 the momentary loudness (400 milliseconds).
15921
15922 More information about the Loudness Recommendation EBU R128 on
15923 @url{http://tech.ebu.ch/loudness}.
15924
15925 The filter accepts the following options:
15926
15927 @table @option
15928
15929 @item video
15930 Activate the video output. The audio stream is passed unchanged whether this
15931 option is set or no. The video stream will be the first output stream if
15932 activated. Default is @code{0}.
15933
15934 @item size
15935 Set the video size. This option is for video only. For the syntax of this
15936 option, check the
15937 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15938 Default and minimum resolution is @code{640x480}.
15939
15940 @item meter
15941 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
15942 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
15943 other integer value between this range is allowed.
15944
15945 @item metadata
15946 Set metadata injection. If set to @code{1}, the audio input will be segmented
15947 into 100ms output frames, each of them containing various loudness information
15948 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
15949
15950 Default is @code{0}.
15951
15952 @item framelog
15953 Force the frame logging level.
15954
15955 Available values are:
15956 @table @samp
15957 @item info
15958 information logging level
15959 @item verbose
15960 verbose logging level
15961 @end table
15962
15963 By default, the logging level is set to @var{info}. If the @option{video} or
15964 the @option{metadata} options are set, it switches to @var{verbose}.
15965
15966 @item peak
15967 Set peak mode(s).
15968
15969 Available modes can be cumulated (the option is a @code{flag} type). Possible
15970 values are:
15971 @table @samp
15972 @item none
15973 Disable any peak mode (default).
15974 @item sample
15975 Enable sample-peak mode.
15976
15977 Simple peak mode looking for the higher sample value. It logs a message
15978 for sample-peak (identified by @code{SPK}).
15979 @item true
15980 Enable true-peak mode.
15981
15982 If enabled, the peak lookup is done on an over-sampled version of the input
15983 stream for better peak accuracy. It logs a message for true-peak.
15984 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
15985 This mode requires a build with @code{libswresample}.
15986 @end table
15987
15988 @item dualmono
15989 Treat mono input files as "dual mono". If a mono file is intended for playback
15990 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
15991 If set to @code{true}, this option will compensate for this effect.
15992 Multi-channel input files are not affected by this option.
15993
15994 @item panlaw
15995 Set a specific pan law to be used for the measurement of dual mono files.
15996 This parameter is optional, and has a default value of -3.01dB.
15997 @end table
15998
15999 @subsection Examples
16000
16001 @itemize
16002 @item
16003 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
16004 @example
16005 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
16006 @end example
16007
16008 @item
16009 Run an analysis with @command{ffmpeg}:
16010 @example
16011 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
16012 @end example
16013 @end itemize
16014
16015 @section interleave, ainterleave
16016
16017 Temporally interleave frames from several inputs.
16018
16019 @code{interleave} works with video inputs, @code{ainterleave} with audio.
16020
16021 These filters read frames from several inputs and send the oldest
16022 queued frame to the output.
16023
16024 Input streams must have well defined, monotonically increasing frame
16025 timestamp values.
16026
16027 In order to submit one frame to output, these filters need to enqueue
16028 at least one frame for each input, so they cannot work in case one
16029 input is not yet terminated and will not receive incoming frames.
16030
16031 For example consider the case when one input is a @code{select} filter
16032 which always drops input frames. The @code{interleave} filter will keep
16033 reading from that input, but it will never be able to send new frames
16034 to output until the input sends an end-of-stream signal.
16035
16036 Also, depending on inputs synchronization, the filters will drop
16037 frames in case one input receives more frames than the other ones, and
16038 the queue is already filled.
16039
16040 These filters accept the following options:
16041
16042 @table @option
16043 @item nb_inputs, n
16044 Set the number of different inputs, it is 2 by default.
16045 @end table
16046
16047 @subsection Examples
16048
16049 @itemize
16050 @item
16051 Interleave frames belonging to different streams using @command{ffmpeg}:
16052 @example
16053 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
16054 @end example
16055
16056 @item
16057 Add flickering blur effect:
16058 @example
16059 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
16060 @end example
16061 @end itemize
16062
16063 @section metadata, ametadata
16064
16065 Manipulate frame metadata.
16066
16067 This filter accepts the following options:
16068
16069 @table @option
16070 @item mode
16071 Set mode of operation of the filter.
16072
16073 Can be one of the following:
16074
16075 @table @samp
16076 @item select
16077 If both @code{value} and @code{key} is set, select frames
16078 which have such metadata. If only @code{key} is set, select
16079 every frame that has such key in metadata.
16080
16081 @item add
16082 Add new metadata @code{key} and @code{value}. If key is already available
16083 do nothing.
16084
16085 @item modify
16086 Modify value of already present key.
16087
16088 @item delete
16089 If @code{value} is set, delete only keys that have such value.
16090 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
16091 the frame.
16092
16093 @item print
16094 Print key and its value if metadata was found. If @code{key} is not set print all
16095 metadata values available in frame.
16096 @end table
16097
16098 @item key
16099 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
16100
16101 @item value
16102 Set metadata value which will be used. This option is mandatory for
16103 @code{modify} and @code{add} mode.
16104
16105 @item function
16106 Which function to use when comparing metadata value and @code{value}.
16107
16108 Can be one of following:
16109
16110 @table @samp
16111 @item same_str
16112 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
16113
16114 @item starts_with
16115 Values are interpreted as strings, returns true if metadata value starts with
16116 the @code{value} option string.
16117
16118 @item less
16119 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
16120
16121 @item equal
16122 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
16123
16124 @item greater
16125 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
16126
16127 @item expr
16128 Values are interpreted as floats, returns true if expression from option @code{expr}
16129 evaluates to true.
16130 @end table
16131
16132 @item expr
16133 Set expression which is used when @code{function} is set to @code{expr}.
16134 The expression is evaluated through the eval API and can contain the following
16135 constants:
16136
16137 @table @option
16138 @item VALUE1
16139 Float representation of @code{value} from metadata key.
16140
16141 @item VALUE2
16142 Float representation of @code{value} as supplied by user in @code{value} option.
16143
16144 @item file
16145 If specified in @code{print} mode, output is written to the named file. Instead of
16146 plain filename any writable url can be specified. Filename ``-'' is a shorthand
16147 for standard output. If @code{file} option is not set, output is written to the log
16148 with AV_LOG_INFO loglevel.
16149 @end table
16150
16151 @end table
16152
16153 @subsection Examples
16154
16155 @itemize
16156 @item
16157 Print all metadata values for frames with key @code{lavfi.singnalstats.YDIF} with values
16158 between 0 and 1.
16159 @example
16160 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
16161 @end example
16162 @item
16163 Print silencedetect output to file @file{metadata.txt}.
16164 @example
16165 silencedetect,ametadata=mode=print:file=metadata.txt
16166 @end example
16167 @item
16168 Direct all metadata to a pipe with file descriptor 4.
16169 @example
16170 metadata=mode=print:file='pipe\:4'
16171 @end example
16172 @end itemize
16173
16174 @section perms, aperms
16175
16176 Set read/write permissions for the output frames.
16177
16178 These filters are mainly aimed at developers to test direct path in the
16179 following filter in the filtergraph.
16180
16181 The filters accept the following options:
16182
16183 @table @option
16184 @item mode
16185 Select the permissions mode.
16186
16187 It accepts the following values:
16188 @table @samp
16189 @item none
16190 Do nothing. This is the default.
16191 @item ro
16192 Set all the output frames read-only.
16193 @item rw
16194 Set all the output frames directly writable.
16195 @item toggle
16196 Make the frame read-only if writable, and writable if read-only.
16197 @item random
16198 Set each output frame read-only or writable randomly.
16199 @end table
16200
16201 @item seed
16202 Set the seed for the @var{random} mode, must be an integer included between
16203 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
16204 @code{-1}, the filter will try to use a good random seed on a best effort
16205 basis.
16206 @end table
16207
16208 Note: in case of auto-inserted filter between the permission filter and the
16209 following one, the permission might not be received as expected in that
16210 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
16211 perms/aperms filter can avoid this problem.
16212
16213 @section realtime, arealtime
16214
16215 Slow down filtering to match real time approximatively.
16216
16217 These filters will pause the filtering for a variable amount of time to
16218 match the output rate with the input timestamps.
16219 They are similar to the @option{re} option to @code{ffmpeg}.
16220
16221 They accept the following options:
16222
16223 @table @option
16224 @item limit
16225 Time limit for the pauses. Any pause longer than that will be considered
16226 a timestamp discontinuity and reset the timer. Default is 2 seconds.
16227 @end table
16228
16229 @anchor{select}
16230 @section select, aselect
16231
16232 Select frames to pass in output.
16233
16234 This filter accepts the following options:
16235
16236 @table @option
16237
16238 @item expr, e
16239 Set expression, which is evaluated for each input frame.
16240
16241 If the expression is evaluated to zero, the frame is discarded.
16242
16243 If the evaluation result is negative or NaN, the frame is sent to the
16244 first output; otherwise it is sent to the output with index
16245 @code{ceil(val)-1}, assuming that the input index starts from 0.
16246
16247 For example a value of @code{1.2} corresponds to the output with index
16248 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
16249
16250 @item outputs, n
16251 Set the number of outputs. The output to which to send the selected
16252 frame is based on the result of the evaluation. Default value is 1.
16253 @end table
16254
16255 The expression can contain the following constants:
16256
16257 @table @option
16258 @item n
16259 The (sequential) number of the filtered frame, starting from 0.
16260
16261 @item selected_n
16262 The (sequential) number of the selected frame, starting from 0.
16263
16264 @item prev_selected_n
16265 The sequential number of the last selected frame. It's NAN if undefined.
16266
16267 @item TB
16268 The timebase of the input timestamps.
16269
16270 @item pts
16271 The PTS (Presentation TimeStamp) of the filtered video frame,
16272 expressed in @var{TB} units. It's NAN if undefined.
16273
16274 @item t
16275 The PTS of the filtered video frame,
16276 expressed in seconds. It's NAN if undefined.
16277
16278 @item prev_pts
16279 The PTS of the previously filtered video frame. It's NAN if undefined.
16280
16281 @item prev_selected_pts
16282 The PTS of the last previously filtered video frame. It's NAN if undefined.
16283
16284 @item prev_selected_t
16285 The PTS of the last previously selected video frame. It's NAN if undefined.
16286
16287 @item start_pts
16288 The PTS of the first video frame in the video. It's NAN if undefined.
16289
16290 @item start_t
16291 The time of the first video frame in the video. It's NAN if undefined.
16292
16293 @item pict_type @emph{(video only)}
16294 The type of the filtered frame. It can assume one of the following
16295 values:
16296 @table @option
16297 @item I
16298 @item P
16299 @item B
16300 @item S
16301 @item SI
16302 @item SP
16303 @item BI
16304 @end table
16305
16306 @item interlace_type @emph{(video only)}
16307 The frame interlace type. It can assume one of the following values:
16308 @table @option
16309 @item PROGRESSIVE
16310 The frame is progressive (not interlaced).
16311 @item TOPFIRST
16312 The frame is top-field-first.
16313 @item BOTTOMFIRST
16314 The frame is bottom-field-first.
16315 @end table
16316
16317 @item consumed_sample_n @emph{(audio only)}
16318 the number of selected samples before the current frame
16319
16320 @item samples_n @emph{(audio only)}
16321 the number of samples in the current frame
16322
16323 @item sample_rate @emph{(audio only)}
16324 the input sample rate
16325
16326 @item key
16327 This is 1 if the filtered frame is a key-frame, 0 otherwise.
16328
16329 @item pos
16330 the position in the file of the filtered frame, -1 if the information
16331 is not available (e.g. for synthetic video)
16332
16333 @item scene @emph{(video only)}
16334 value between 0 and 1 to indicate a new scene; a low value reflects a low
16335 probability for the current frame to introduce a new scene, while a higher
16336 value means the current frame is more likely to be one (see the example below)
16337
16338 @item concatdec_select
16339 The concat demuxer can select only part of a concat input file by setting an
16340 inpoint and an outpoint, but the output packets may not be entirely contained
16341 in the selected interval. By using this variable, it is possible to skip frames
16342 generated by the concat demuxer which are not exactly contained in the selected
16343 interval.
16344
16345 This works by comparing the frame pts against the @var{lavf.concat.start_time}
16346 and the @var{lavf.concat.duration} packet metadata values which are also
16347 present in the decoded frames.
16348
16349 The @var{concatdec_select} variable is -1 if the frame pts is at least
16350 start_time and either the duration metadata is missing or the frame pts is less
16351 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
16352 missing.
16353
16354 That basically means that an input frame is selected if its pts is within the
16355 interval set by the concat demuxer.
16356
16357 @end table
16358
16359 The default value of the select expression is "1".
16360
16361 @subsection Examples
16362
16363 @itemize
16364 @item
16365 Select all frames in input:
16366 @example
16367 select
16368 @end example
16369
16370 The example above is the same as:
16371 @example
16372 select=1
16373 @end example
16374
16375 @item
16376 Skip all frames:
16377 @example
16378 select=0
16379 @end example
16380
16381 @item
16382 Select only I-frames:
16383 @example
16384 select='eq(pict_type\,I)'
16385 @end example
16386
16387 @item
16388 Select one frame every 100:
16389 @example
16390 select='not(mod(n\,100))'
16391 @end example
16392
16393 @item
16394 Select only frames contained in the 10-20 time interval:
16395 @example
16396 select=between(t\,10\,20)
16397 @end example
16398
16399 @item
16400 Select only I-frames contained in the 10-20 time interval:
16401 @example
16402 select=between(t\,10\,20)*eq(pict_type\,I)
16403 @end example
16404
16405 @item
16406 Select frames with a minimum distance of 10 seconds:
16407 @example
16408 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
16409 @end example
16410
16411 @item
16412 Use aselect to select only audio frames with samples number > 100:
16413 @example
16414 aselect='gt(samples_n\,100)'
16415 @end example
16416
16417 @item
16418 Create a mosaic of the first scenes:
16419 @example
16420 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
16421 @end example
16422
16423 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
16424 choice.
16425
16426 @item
16427 Send even and odd frames to separate outputs, and compose them:
16428 @example
16429 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
16430 @end example
16431
16432 @item
16433 Select useful frames from an ffconcat file which is using inpoints and
16434 outpoints but where the source files are not intra frame only.
16435 @example
16436 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
16437 @end example
16438 @end itemize
16439
16440 @section sendcmd, asendcmd
16441
16442 Send commands to filters in the filtergraph.
16443
16444 These filters read commands to be sent to other filters in the
16445 filtergraph.
16446
16447 @code{sendcmd} must be inserted between two video filters,
16448 @code{asendcmd} must be inserted between two audio filters, but apart
16449 from that they act the same way.
16450
16451 The specification of commands can be provided in the filter arguments
16452 with the @var{commands} option, or in a file specified by the
16453 @var{filename} option.
16454
16455 These filters accept the following options:
16456 @table @option
16457 @item commands, c
16458 Set the commands to be read and sent to the other filters.
16459 @item filename, f
16460 Set the filename of the commands to be read and sent to the other
16461 filters.
16462 @end table
16463
16464 @subsection Commands syntax
16465
16466 A commands description consists of a sequence of interval
16467 specifications, comprising a list of commands to be executed when a
16468 particular event related to that interval occurs. The occurring event
16469 is typically the current frame time entering or leaving a given time
16470 interval.
16471
16472 An interval is specified by the following syntax:
16473 @example
16474 @var{START}[-@var{END}] @var{COMMANDS};
16475 @end example
16476
16477 The time interval is specified by the @var{START} and @var{END} times.
16478 @var{END} is optional and defaults to the maximum time.
16479
16480 The current frame time is considered within the specified interval if
16481 it is included in the interval [@var{START}, @var{END}), that is when
16482 the time is greater or equal to @var{START} and is lesser than
16483 @var{END}.
16484
16485 @var{COMMANDS} consists of a sequence of one or more command
16486 specifications, separated by ",", relating to that interval.  The
16487 syntax of a command specification is given by:
16488 @example
16489 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
16490 @end example
16491
16492 @var{FLAGS} is optional and specifies the type of events relating to
16493 the time interval which enable sending the specified command, and must
16494 be a non-null sequence of identifier flags separated by "+" or "|" and
16495 enclosed between "[" and "]".
16496
16497 The following flags are recognized:
16498 @table @option
16499 @item enter
16500 The command is sent when the current frame timestamp enters the
16501 specified interval. In other words, the command is sent when the
16502 previous frame timestamp was not in the given interval, and the
16503 current is.
16504
16505 @item leave
16506 The command is sent when the current frame timestamp leaves the
16507 specified interval. In other words, the command is sent when the
16508 previous frame timestamp was in the given interval, and the
16509 current is not.
16510 @end table
16511
16512 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
16513 assumed.
16514
16515 @var{TARGET} specifies the target of the command, usually the name of
16516 the filter class or a specific filter instance name.
16517
16518 @var{COMMAND} specifies the name of the command for the target filter.
16519
16520 @var{ARG} is optional and specifies the optional list of argument for
16521 the given @var{COMMAND}.
16522
16523 Between one interval specification and another, whitespaces, or
16524 sequences of characters starting with @code{#} until the end of line,
16525 are ignored and can be used to annotate comments.
16526
16527 A simplified BNF description of the commands specification syntax
16528 follows:
16529 @example
16530 @var{COMMAND_FLAG}  ::= "enter" | "leave"
16531 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
16532 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
16533 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
16534 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
16535 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
16536 @end example
16537
16538 @subsection Examples
16539
16540 @itemize
16541 @item
16542 Specify audio tempo change at second 4:
16543 @example
16544 asendcmd=c='4.0 atempo tempo 1.5',atempo
16545 @end example
16546
16547 @item
16548 Specify a list of drawtext and hue commands in a file.
16549 @example
16550 # show text in the interval 5-10
16551 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
16552          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
16553
16554 # desaturate the image in the interval 15-20
16555 15.0-20.0 [enter] hue s 0,
16556           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
16557           [leave] hue s 1,
16558           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
16559
16560 # apply an exponential saturation fade-out effect, starting from time 25
16561 25 [enter] hue s exp(25-t)
16562 @end example
16563
16564 A filtergraph allowing to read and process the above command list
16565 stored in a file @file{test.cmd}, can be specified with:
16566 @example
16567 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
16568 @end example
16569 @end itemize
16570
16571 @anchor{setpts}
16572 @section setpts, asetpts
16573
16574 Change the PTS (presentation timestamp) of the input frames.
16575
16576 @code{setpts} works on video frames, @code{asetpts} on audio frames.
16577
16578 This filter accepts the following options:
16579
16580 @table @option
16581
16582 @item expr
16583 The expression which is evaluated for each frame to construct its timestamp.
16584
16585 @end table
16586
16587 The expression is evaluated through the eval API and can contain the following
16588 constants:
16589
16590 @table @option
16591 @item FRAME_RATE
16592 frame rate, only defined for constant frame-rate video
16593
16594 @item PTS
16595 The presentation timestamp in input
16596
16597 @item N
16598 The count of the input frame for video or the number of consumed samples,
16599 not including the current frame for audio, starting from 0.
16600
16601 @item NB_CONSUMED_SAMPLES
16602 The number of consumed samples, not including the current frame (only
16603 audio)
16604
16605 @item NB_SAMPLES, S
16606 The number of samples in the current frame (only audio)
16607
16608 @item SAMPLE_RATE, SR
16609 The audio sample rate.
16610
16611 @item STARTPTS
16612 The PTS of the first frame.
16613
16614 @item STARTT
16615 the time in seconds of the first frame
16616
16617 @item INTERLACED
16618 State whether the current frame is interlaced.
16619
16620 @item T
16621 the time in seconds of the current frame
16622
16623 @item POS
16624 original position in the file of the frame, or undefined if undefined
16625 for the current frame
16626
16627 @item PREV_INPTS
16628 The previous input PTS.
16629
16630 @item PREV_INT
16631 previous input time in seconds
16632
16633 @item PREV_OUTPTS
16634 The previous output PTS.
16635
16636 @item PREV_OUTT
16637 previous output time in seconds
16638
16639 @item RTCTIME
16640 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
16641 instead.
16642
16643 @item RTCSTART
16644 The wallclock (RTC) time at the start of the movie in microseconds.
16645
16646 @item TB
16647 The timebase of the input timestamps.
16648
16649 @end table
16650
16651 @subsection Examples
16652
16653 @itemize
16654 @item
16655 Start counting PTS from zero
16656 @example
16657 setpts=PTS-STARTPTS
16658 @end example
16659
16660 @item
16661 Apply fast motion effect:
16662 @example
16663 setpts=0.5*PTS
16664 @end example
16665
16666 @item
16667 Apply slow motion effect:
16668 @example
16669 setpts=2.0*PTS
16670 @end example
16671
16672 @item
16673 Set fixed rate of 25 frames per second:
16674 @example
16675 setpts=N/(25*TB)
16676 @end example
16677
16678 @item
16679 Set fixed rate 25 fps with some jitter:
16680 @example
16681 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
16682 @end example
16683
16684 @item
16685 Apply an offset of 10 seconds to the input PTS:
16686 @example
16687 setpts=PTS+10/TB
16688 @end example
16689
16690 @item
16691 Generate timestamps from a "live source" and rebase onto the current timebase:
16692 @example
16693 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
16694 @end example
16695
16696 @item
16697 Generate timestamps by counting samples:
16698 @example
16699 asetpts=N/SR/TB
16700 @end example
16701
16702 @end itemize
16703
16704 @section settb, asettb
16705
16706 Set the timebase to use for the output frames timestamps.
16707 It is mainly useful for testing timebase configuration.
16708
16709 It accepts the following parameters:
16710
16711 @table @option
16712
16713 @item expr, tb
16714 The expression which is evaluated into the output timebase.
16715
16716 @end table
16717
16718 The value for @option{tb} is an arithmetic expression representing a
16719 rational. The expression can contain the constants "AVTB" (the default
16720 timebase), "intb" (the input timebase) and "sr" (the sample rate,
16721 audio only). Default value is "intb".
16722
16723 @subsection Examples
16724
16725 @itemize
16726 @item
16727 Set the timebase to 1/25:
16728 @example
16729 settb=expr=1/25
16730 @end example
16731
16732 @item
16733 Set the timebase to 1/10:
16734 @example
16735 settb=expr=0.1
16736 @end example
16737
16738 @item
16739 Set the timebase to 1001/1000:
16740 @example
16741 settb=1+0.001
16742 @end example
16743
16744 @item
16745 Set the timebase to 2*intb:
16746 @example
16747 settb=2*intb
16748 @end example
16749
16750 @item
16751 Set the default timebase value:
16752 @example
16753 settb=AVTB
16754 @end example
16755 @end itemize
16756
16757 @section showcqt
16758 Convert input audio to a video output representing frequency spectrum
16759 logarithmically using Brown-Puckette constant Q transform algorithm with
16760 direct frequency domain coefficient calculation (but the transform itself
16761 is not really constant Q, instead the Q factor is actually variable/clamped),
16762 with musical tone scale, from E0 to D#10.
16763
16764 The filter accepts the following options:
16765
16766 @table @option
16767 @item size, s
16768 Specify the video size for the output. It must be even. For the syntax of this option,
16769 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16770 Default value is @code{1920x1080}.
16771
16772 @item fps, rate, r
16773 Set the output frame rate. Default value is @code{25}.
16774
16775 @item bar_h
16776 Set the bargraph height. It must be even. Default value is @code{-1} which
16777 computes the bargraph height automatically.
16778
16779 @item axis_h
16780 Set the axis height. It must be even. Default value is @code{-1} which computes
16781 the axis height automatically.
16782
16783 @item sono_h
16784 Set the sonogram height. It must be even. Default value is @code{-1} which
16785 computes the sonogram height automatically.
16786
16787 @item fullhd
16788 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
16789 instead. Default value is @code{1}.
16790
16791 @item sono_v, volume
16792 Specify the sonogram volume expression. It can contain variables:
16793 @table @option
16794 @item bar_v
16795 the @var{bar_v} evaluated expression
16796 @item frequency, freq, f
16797 the frequency where it is evaluated
16798 @item timeclamp, tc
16799 the value of @var{timeclamp} option
16800 @end table
16801 and functions:
16802 @table @option
16803 @item a_weighting(f)
16804 A-weighting of equal loudness
16805 @item b_weighting(f)
16806 B-weighting of equal loudness
16807 @item c_weighting(f)
16808 C-weighting of equal loudness.
16809 @end table
16810 Default value is @code{16}.
16811
16812 @item bar_v, volume2
16813 Specify the bargraph volume expression. It can contain variables:
16814 @table @option
16815 @item sono_v
16816 the @var{sono_v} evaluated expression
16817 @item frequency, freq, f
16818 the frequency where it is evaluated
16819 @item timeclamp, tc
16820 the value of @var{timeclamp} option
16821 @end table
16822 and functions:
16823 @table @option
16824 @item a_weighting(f)
16825 A-weighting of equal loudness
16826 @item b_weighting(f)
16827 B-weighting of equal loudness
16828 @item c_weighting(f)
16829 C-weighting of equal loudness.
16830 @end table
16831 Default value is @code{sono_v}.
16832
16833 @item sono_g, gamma
16834 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
16835 higher gamma makes the spectrum having more range. Default value is @code{3}.
16836 Acceptable range is @code{[1, 7]}.
16837
16838 @item bar_g, gamma2
16839 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
16840 @code{[1, 7]}.
16841
16842 @item bar_t
16843 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
16844 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
16845
16846 @item timeclamp, tc
16847 Specify the transform timeclamp. At low frequency, there is trade-off between
16848 accuracy in time domain and frequency domain. If timeclamp is lower,
16849 event in time domain is represented more accurately (such as fast bass drum),
16850 otherwise event in frequency domain is represented more accurately
16851 (such as bass guitar). Acceptable range is @code{[0.1, 1]}. Default value is @code{0.17}.
16852
16853 @item basefreq
16854 Specify the transform base frequency. Default value is @code{20.01523126408007475},
16855 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
16856
16857 @item endfreq
16858 Specify the transform end frequency. Default value is @code{20495.59681441799654},
16859 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
16860
16861 @item coeffclamp
16862 This option is deprecated and ignored.
16863
16864 @item tlength
16865 Specify the transform length in time domain. Use this option to control accuracy
16866 trade-off between time domain and frequency domain at every frequency sample.
16867 It can contain variables:
16868 @table @option
16869 @item frequency, freq, f
16870 the frequency where it is evaluated
16871 @item timeclamp, tc
16872 the value of @var{timeclamp} option.
16873 @end table
16874 Default value is @code{384*tc/(384+tc*f)}.
16875
16876 @item count
16877 Specify the transform count for every video frame. Default value is @code{6}.
16878 Acceptable range is @code{[1, 30]}.
16879
16880 @item fcount
16881 Specify the transform count for every single pixel. Default value is @code{0},
16882 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
16883
16884 @item fontfile
16885 Specify font file for use with freetype to draw the axis. If not specified,
16886 use embedded font. Note that drawing with font file or embedded font is not
16887 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
16888 option instead.
16889
16890 @item font
16891 Specify fontconfig pattern. This has lower priority than @var{fontfile}.
16892 The : in the pattern may be replaced by | to avoid unnecessary escaping.
16893
16894 @item fontcolor
16895 Specify font color expression. This is arithmetic expression that should return
16896 integer value 0xRRGGBB. It can contain variables:
16897 @table @option
16898 @item frequency, freq, f
16899 the frequency where it is evaluated
16900 @item timeclamp, tc
16901 the value of @var{timeclamp} option
16902 @end table
16903 and functions:
16904 @table @option
16905 @item midi(f)
16906 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
16907 @item r(x), g(x), b(x)
16908 red, green, and blue value of intensity x.
16909 @end table
16910 Default value is @code{st(0, (midi(f)-59.5)/12);
16911 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
16912 r(1-ld(1)) + b(ld(1))}.
16913
16914 @item axisfile
16915 Specify image file to draw the axis. This option override @var{fontfile} and
16916 @var{fontcolor} option.
16917
16918 @item axis, text
16919 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
16920 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
16921 Default value is @code{1}.
16922
16923 @item csp
16924 Set colorspace. The accepted values are:
16925 @table @samp
16926 @item unspecified
16927 Unspecified (default)
16928
16929 @item bt709
16930 BT.709
16931
16932 @item fcc
16933 FCC
16934
16935 @item bt470bg
16936 BT.470BG or BT.601-6 625
16937
16938 @item smpte170m
16939 SMPTE-170M or BT.601-6 525
16940
16941 @item smpte240m
16942 SMPTE-240M
16943
16944 @item bt2020ncl
16945 BT.2020 with non-constant luminance
16946
16947 @end table
16948
16949 @item cscheme
16950 Set spectrogram color scheme. This is list of floating point values with format
16951 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
16952 The default is @code{1|0.5|0|0|0.5|1}.
16953
16954 @end table
16955
16956 @subsection Examples
16957
16958 @itemize
16959 @item
16960 Playing audio while showing the spectrum:
16961 @example
16962 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
16963 @end example
16964
16965 @item
16966 Same as above, but with frame rate 30 fps:
16967 @example
16968 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
16969 @end example
16970
16971 @item
16972 Playing at 1280x720:
16973 @example
16974 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
16975 @end example
16976
16977 @item
16978 Disable sonogram display:
16979 @example
16980 sono_h=0
16981 @end example
16982
16983 @item
16984 A1 and its harmonics: A1, A2, (near)E3, A3:
16985 @example
16986 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),
16987                  asplit[a][out1]; [a] showcqt [out0]'
16988 @end example
16989
16990 @item
16991 Same as above, but with more accuracy in frequency domain:
16992 @example
16993 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),
16994                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
16995 @end example
16996
16997 @item
16998 Custom volume:
16999 @example
17000 bar_v=10:sono_v=bar_v*a_weighting(f)
17001 @end example
17002
17003 @item
17004 Custom gamma, now spectrum is linear to the amplitude.
17005 @example
17006 bar_g=2:sono_g=2
17007 @end example
17008
17009 @item
17010 Custom tlength equation:
17011 @example
17012 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)))'
17013 @end example
17014
17015 @item
17016 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
17017 @example
17018 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
17019 @end example
17020
17021 @item
17022 Custom font using fontconfig:
17023 @example
17024 font='Courier New,Monospace,mono|bold'
17025 @end example
17026
17027 @item
17028 Custom frequency range with custom axis using image file:
17029 @example
17030 axisfile=myaxis.png:basefreq=40:endfreq=10000
17031 @end example
17032 @end itemize
17033
17034 @section showfreqs
17035
17036 Convert input audio to video output representing the audio power spectrum.
17037 Audio amplitude is on Y-axis while frequency is on X-axis.
17038
17039 The filter accepts the following options:
17040
17041 @table @option
17042 @item size, s
17043 Specify size of video. For the syntax of this option, check the
17044 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17045 Default is @code{1024x512}.
17046
17047 @item mode
17048 Set display mode.
17049 This set how each frequency bin will be represented.
17050
17051 It accepts the following values:
17052 @table @samp
17053 @item line
17054 @item bar
17055 @item dot
17056 @end table
17057 Default is @code{bar}.
17058
17059 @item ascale
17060 Set amplitude scale.
17061
17062 It accepts the following values:
17063 @table @samp
17064 @item lin
17065 Linear scale.
17066
17067 @item sqrt
17068 Square root scale.
17069
17070 @item cbrt
17071 Cubic root scale.
17072
17073 @item log
17074 Logarithmic scale.
17075 @end table
17076 Default is @code{log}.
17077
17078 @item fscale
17079 Set frequency scale.
17080
17081 It accepts the following values:
17082 @table @samp
17083 @item lin
17084 Linear scale.
17085
17086 @item log
17087 Logarithmic scale.
17088
17089 @item rlog
17090 Reverse logarithmic scale.
17091 @end table
17092 Default is @code{lin}.
17093
17094 @item win_size
17095 Set window size.
17096
17097 It accepts the following values:
17098 @table @samp
17099 @item w16
17100 @item w32
17101 @item w64
17102 @item w128
17103 @item w256
17104 @item w512
17105 @item w1024
17106 @item w2048
17107 @item w4096
17108 @item w8192
17109 @item w16384
17110 @item w32768
17111 @item w65536
17112 @end table
17113 Default is @code{w2048}
17114
17115 @item win_func
17116 Set windowing function.
17117
17118 It accepts the following values:
17119 @table @samp
17120 @item rect
17121 @item bartlett
17122 @item hanning
17123 @item hamming
17124 @item blackman
17125 @item welch
17126 @item flattop
17127 @item bharris
17128 @item bnuttall
17129 @item bhann
17130 @item sine
17131 @item nuttall
17132 @item lanczos
17133 @item gauss
17134 @item tukey
17135 @item dolph
17136 @item cauchy
17137 @item parzen
17138 @item poisson
17139 @end table
17140 Default is @code{hanning}.
17141
17142 @item overlap
17143 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
17144 which means optimal overlap for selected window function will be picked.
17145
17146 @item averaging
17147 Set time averaging. Setting this to 0 will display current maximal peaks.
17148 Default is @code{1}, which means time averaging is disabled.
17149
17150 @item colors
17151 Specify list of colors separated by space or by '|' which will be used to
17152 draw channel frequencies. Unrecognized or missing colors will be replaced
17153 by white color.
17154
17155 @item cmode
17156 Set channel display mode.
17157
17158 It accepts the following values:
17159 @table @samp
17160 @item combined
17161 @item separate
17162 @end table
17163 Default is @code{combined}.
17164
17165 @item minamp
17166 Set minimum amplitude used in @code{log} amplitude scaler.
17167
17168 @end table
17169
17170 @anchor{showspectrum}
17171 @section showspectrum
17172
17173 Convert input audio to a video output, representing the audio frequency
17174 spectrum.
17175
17176 The filter accepts the following options:
17177
17178 @table @option
17179 @item size, s
17180 Specify the video size for the output. For the syntax of this option, check the
17181 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17182 Default value is @code{640x512}.
17183
17184 @item slide
17185 Specify how the spectrum should slide along the window.
17186
17187 It accepts the following values:
17188 @table @samp
17189 @item replace
17190 the samples start again on the left when they reach the right
17191 @item scroll
17192 the samples scroll from right to left
17193 @item fullframe
17194 frames are only produced when the samples reach the right
17195 @item rscroll
17196 the samples scroll from left to right
17197 @end table
17198
17199 Default value is @code{replace}.
17200
17201 @item mode
17202 Specify display mode.
17203
17204 It accepts the following values:
17205 @table @samp
17206 @item combined
17207 all channels are displayed in the same row
17208 @item separate
17209 all channels are displayed in separate rows
17210 @end table
17211
17212 Default value is @samp{combined}.
17213
17214 @item color
17215 Specify display color mode.
17216
17217 It accepts the following values:
17218 @table @samp
17219 @item channel
17220 each channel is displayed in a separate color
17221 @item intensity
17222 each channel is displayed using the same color scheme
17223 @item rainbow
17224 each channel is displayed using the rainbow color scheme
17225 @item moreland
17226 each channel is displayed using the moreland color scheme
17227 @item nebulae
17228 each channel is displayed using the nebulae color scheme
17229 @item fire
17230 each channel is displayed using the fire color scheme
17231 @item fiery
17232 each channel is displayed using the fiery color scheme
17233 @item fruit
17234 each channel is displayed using the fruit color scheme
17235 @item cool
17236 each channel is displayed using the cool color scheme
17237 @end table
17238
17239 Default value is @samp{channel}.
17240
17241 @item scale
17242 Specify scale used for calculating intensity color values.
17243
17244 It accepts the following values:
17245 @table @samp
17246 @item lin
17247 linear
17248 @item sqrt
17249 square root, default
17250 @item cbrt
17251 cubic root
17252 @item log
17253 logarithmic
17254 @item 4thrt
17255 4th root
17256 @item 5thrt
17257 5th root
17258 @end table
17259
17260 Default value is @samp{sqrt}.
17261
17262 @item saturation
17263 Set saturation modifier for displayed colors. Negative values provide
17264 alternative color scheme. @code{0} is no saturation at all.
17265 Saturation must be in [-10.0, 10.0] range.
17266 Default value is @code{1}.
17267
17268 @item win_func
17269 Set window function.
17270
17271 It accepts the following values:
17272 @table @samp
17273 @item rect
17274 @item bartlett
17275 @item hann
17276 @item hanning
17277 @item hamming
17278 @item blackman
17279 @item welch
17280 @item flattop
17281 @item bharris
17282 @item bnuttall
17283 @item bhann
17284 @item sine
17285 @item nuttall
17286 @item lanczos
17287 @item gauss
17288 @item tukey
17289 @item dolph
17290 @item cauchy
17291 @item parzen
17292 @item poisson
17293 @end table
17294
17295 Default value is @code{hann}.
17296
17297 @item orientation
17298 Set orientation of time vs frequency axis. Can be @code{vertical} or
17299 @code{horizontal}. Default is @code{vertical}.
17300
17301 @item overlap
17302 Set ratio of overlap window. Default value is @code{0}.
17303 When value is @code{1} overlap is set to recommended size for specific
17304 window function currently used.
17305
17306 @item gain
17307 Set scale gain for calculating intensity color values.
17308 Default value is @code{1}.
17309
17310 @item data
17311 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
17312
17313 @item rotation
17314 Set color rotation, must be in [-1.0, 1.0] range.
17315 Default value is @code{0}.
17316 @end table
17317
17318 The usage is very similar to the showwaves filter; see the examples in that
17319 section.
17320
17321 @subsection Examples
17322
17323 @itemize
17324 @item
17325 Large window with logarithmic color scaling:
17326 @example
17327 showspectrum=s=1280x480:scale=log
17328 @end example
17329
17330 @item
17331 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
17332 @example
17333 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
17334              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
17335 @end example
17336 @end itemize
17337
17338 @section showspectrumpic
17339
17340 Convert input audio to a single video frame, representing the audio frequency
17341 spectrum.
17342
17343 The filter accepts the following options:
17344
17345 @table @option
17346 @item size, s
17347 Specify the video size for the output. For the syntax of this option, check the
17348 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17349 Default value is @code{4096x2048}.
17350
17351 @item mode
17352 Specify display mode.
17353
17354 It accepts the following values:
17355 @table @samp
17356 @item combined
17357 all channels are displayed in the same row
17358 @item separate
17359 all channels are displayed in separate rows
17360 @end table
17361 Default value is @samp{combined}.
17362
17363 @item color
17364 Specify display color mode.
17365
17366 It accepts the following values:
17367 @table @samp
17368 @item channel
17369 each channel is displayed in a separate color
17370 @item intensity
17371 each channel is displayed using the same color scheme
17372 @item rainbow
17373 each channel is displayed using the rainbow color scheme
17374 @item moreland
17375 each channel is displayed using the moreland color scheme
17376 @item nebulae
17377 each channel is displayed using the nebulae color scheme
17378 @item fire
17379 each channel is displayed using the fire color scheme
17380 @item fiery
17381 each channel is displayed using the fiery color scheme
17382 @item fruit
17383 each channel is displayed using the fruit color scheme
17384 @item cool
17385 each channel is displayed using the cool color scheme
17386 @end table
17387 Default value is @samp{intensity}.
17388
17389 @item scale
17390 Specify scale used for calculating intensity color values.
17391
17392 It accepts the following values:
17393 @table @samp
17394 @item lin
17395 linear
17396 @item sqrt
17397 square root, default
17398 @item cbrt
17399 cubic root
17400 @item log
17401 logarithmic
17402 @item 4thrt
17403 4th root
17404 @item 5thrt
17405 5th root
17406 @end table
17407 Default value is @samp{log}.
17408
17409 @item saturation
17410 Set saturation modifier for displayed colors. Negative values provide
17411 alternative color scheme. @code{0} is no saturation at all.
17412 Saturation must be in [-10.0, 10.0] range.
17413 Default value is @code{1}.
17414
17415 @item win_func
17416 Set window function.
17417
17418 It accepts the following values:
17419 @table @samp
17420 @item rect
17421 @item bartlett
17422 @item hann
17423 @item hanning
17424 @item hamming
17425 @item blackman
17426 @item welch
17427 @item flattop
17428 @item bharris
17429 @item bnuttall
17430 @item bhann
17431 @item sine
17432 @item nuttall
17433 @item lanczos
17434 @item gauss
17435 @item tukey
17436 @item dolph
17437 @item cauchy
17438 @item parzen
17439 @item poisson
17440 @end table
17441 Default value is @code{hann}.
17442
17443 @item orientation
17444 Set orientation of time vs frequency axis. Can be @code{vertical} or
17445 @code{horizontal}. Default is @code{vertical}.
17446
17447 @item gain
17448 Set scale gain for calculating intensity color values.
17449 Default value is @code{1}.
17450
17451 @item legend
17452 Draw time and frequency axes and legends. Default is enabled.
17453
17454 @item rotation
17455 Set color rotation, must be in [-1.0, 1.0] range.
17456 Default value is @code{0}.
17457 @end table
17458
17459 @subsection Examples
17460
17461 @itemize
17462 @item
17463 Extract an audio spectrogram of a whole audio track
17464 in a 1024x1024 picture using @command{ffmpeg}:
17465 @example
17466 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
17467 @end example
17468 @end itemize
17469
17470 @section showvolume
17471
17472 Convert input audio volume to a video output.
17473
17474 The filter accepts the following options:
17475
17476 @table @option
17477 @item rate, r
17478 Set video rate.
17479
17480 @item b
17481 Set border width, allowed range is [0, 5]. Default is 1.
17482
17483 @item w
17484 Set channel width, allowed range is [80, 8192]. Default is 400.
17485
17486 @item h
17487 Set channel height, allowed range is [1, 900]. Default is 20.
17488
17489 @item f
17490 Set fade, allowed range is [0.001, 1]. Default is 0.95.
17491
17492 @item c
17493 Set volume color expression.
17494
17495 The expression can use the following variables:
17496
17497 @table @option
17498 @item VOLUME
17499 Current max volume of channel in dB.
17500
17501 @item PEAK
17502 Current peak.
17503
17504 @item CHANNEL
17505 Current channel number, starting from 0.
17506 @end table
17507
17508 @item t
17509 If set, displays channel names. Default is enabled.
17510
17511 @item v
17512 If set, displays volume values. Default is enabled.
17513
17514 @item o
17515 Set orientation, can be @code{horizontal} or @code{vertical},
17516 default is @code{horizontal}.
17517
17518 @item s
17519 Set step size, allowed range s [0, 5]. Default is 0, which means
17520 step is disabled.
17521 @end table
17522
17523 @section showwaves
17524
17525 Convert input audio to a video output, representing the samples waves.
17526
17527 The filter accepts the following options:
17528
17529 @table @option
17530 @item size, s
17531 Specify the video size for the output. For the syntax of this option, check the
17532 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17533 Default value is @code{600x240}.
17534
17535 @item mode
17536 Set display mode.
17537
17538 Available values are:
17539 @table @samp
17540 @item point
17541 Draw a point for each sample.
17542
17543 @item line
17544 Draw a vertical line for each sample.
17545
17546 @item p2p
17547 Draw a point for each sample and a line between them.
17548
17549 @item cline
17550 Draw a centered vertical line for each sample.
17551 @end table
17552
17553 Default value is @code{point}.
17554
17555 @item n
17556 Set the number of samples which are printed on the same column. A
17557 larger value will decrease the frame rate. Must be a positive
17558 integer. This option can be set only if the value for @var{rate}
17559 is not explicitly specified.
17560
17561 @item rate, r
17562 Set the (approximate) output frame rate. This is done by setting the
17563 option @var{n}. Default value is "25".
17564
17565 @item split_channels
17566 Set if channels should be drawn separately or overlap. Default value is 0.
17567
17568 @item colors
17569 Set colors separated by '|' which are going to be used for drawing of each channel.
17570
17571 @item scale
17572 Set amplitude scale.
17573
17574 Available values are:
17575 @table @samp
17576 @item lin
17577 Linear.
17578
17579 @item log
17580 Logarithmic.
17581
17582 @item sqrt
17583 Square root.
17584
17585 @item cbrt
17586 Cubic root.
17587 @end table
17588
17589 Default is linear.
17590 @end table
17591
17592 @subsection Examples
17593
17594 @itemize
17595 @item
17596 Output the input file audio and the corresponding video representation
17597 at the same time:
17598 @example
17599 amovie=a.mp3,asplit[out0],showwaves[out1]
17600 @end example
17601
17602 @item
17603 Create a synthetic signal and show it with showwaves, forcing a
17604 frame rate of 30 frames per second:
17605 @example
17606 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
17607 @end example
17608 @end itemize
17609
17610 @section showwavespic
17611
17612 Convert input audio to a single video frame, representing the samples waves.
17613
17614 The filter accepts the following options:
17615
17616 @table @option
17617 @item size, s
17618 Specify the video size for the output. For the syntax of this option, check the
17619 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17620 Default value is @code{600x240}.
17621
17622 @item split_channels
17623 Set if channels should be drawn separately or overlap. Default value is 0.
17624
17625 @item colors
17626 Set colors separated by '|' which are going to be used for drawing of each channel.
17627
17628 @item scale
17629 Set amplitude scale. Can be linear @code{lin} or logarithmic @code{log}.
17630 Default is linear.
17631 @end table
17632
17633 @subsection Examples
17634
17635 @itemize
17636 @item
17637 Extract a channel split representation of the wave form of a whole audio track
17638 in a 1024x800 picture using @command{ffmpeg}:
17639 @example
17640 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
17641 @end example
17642 @end itemize
17643
17644 @section sidedata, asidedata
17645
17646 Delete frame side data, or select frames based on it.
17647
17648 This filter accepts the following options:
17649
17650 @table @option
17651 @item mode
17652 Set mode of operation of the filter.
17653
17654 Can be one of the following:
17655
17656 @table @samp
17657 @item select
17658 Select every frame with side data of @code{type}.
17659
17660 @item delete
17661 Delete side data of @code{type}. If @code{type} is not set, delete all side
17662 data in the frame.
17663
17664 @end table
17665
17666 @item type
17667 Set side data type used with all modes. Must be set for @code{select} mode. For
17668 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
17669 in @file{libavutil/frame.h}. For example, to choose
17670 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
17671
17672 @end table
17673
17674 @section spectrumsynth
17675
17676 Sythesize audio from 2 input video spectrums, first input stream represents
17677 magnitude across time and second represents phase across time.
17678 The filter will transform from frequency domain as displayed in videos back
17679 to time domain as presented in audio output.
17680
17681 This filter is primarily created for reversing processed @ref{showspectrum}
17682 filter outputs, but can synthesize sound from other spectrograms too.
17683 But in such case results are going to be poor if the phase data is not
17684 available, because in such cases phase data need to be recreated, usually
17685 its just recreated from random noise.
17686 For best results use gray only output (@code{channel} color mode in
17687 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
17688 @code{lin} scale for phase video. To produce phase, for 2nd video, use
17689 @code{data} option. Inputs videos should generally use @code{fullframe}
17690 slide mode as that saves resources needed for decoding video.
17691
17692 The filter accepts the following options:
17693
17694 @table @option
17695 @item sample_rate
17696 Specify sample rate of output audio, the sample rate of audio from which
17697 spectrum was generated may differ.
17698
17699 @item channels
17700 Set number of channels represented in input video spectrums.
17701
17702 @item scale
17703 Set scale which was used when generating magnitude input spectrum.
17704 Can be @code{lin} or @code{log}. Default is @code{log}.
17705
17706 @item slide
17707 Set slide which was used when generating inputs spectrums.
17708 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
17709 Default is @code{fullframe}.
17710
17711 @item win_func
17712 Set window function used for resynthesis.
17713
17714 @item overlap
17715 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
17716 which means optimal overlap for selected window function will be picked.
17717
17718 @item orientation
17719 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
17720 Default is @code{vertical}.
17721 @end table
17722
17723 @subsection Examples
17724
17725 @itemize
17726 @item
17727 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
17728 then resynthesize videos back to audio with spectrumsynth:
17729 @example
17730 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
17731 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
17732 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
17733 @end example
17734 @end itemize
17735
17736 @section split, asplit
17737
17738 Split input into several identical outputs.
17739
17740 @code{asplit} works with audio input, @code{split} with video.
17741
17742 The filter accepts a single parameter which specifies the number of outputs. If
17743 unspecified, it defaults to 2.
17744
17745 @subsection Examples
17746
17747 @itemize
17748 @item
17749 Create two separate outputs from the same input:
17750 @example
17751 [in] split [out0][out1]
17752 @end example
17753
17754 @item
17755 To create 3 or more outputs, you need to specify the number of
17756 outputs, like in:
17757 @example
17758 [in] asplit=3 [out0][out1][out2]
17759 @end example
17760
17761 @item
17762 Create two separate outputs from the same input, one cropped and
17763 one padded:
17764 @example
17765 [in] split [splitout1][splitout2];
17766 [splitout1] crop=100:100:0:0    [cropout];
17767 [splitout2] pad=200:200:100:100 [padout];
17768 @end example
17769
17770 @item
17771 Create 5 copies of the input audio with @command{ffmpeg}:
17772 @example
17773 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
17774 @end example
17775 @end itemize
17776
17777 @section zmq, azmq
17778
17779 Receive commands sent through a libzmq client, and forward them to
17780 filters in the filtergraph.
17781
17782 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
17783 must be inserted between two video filters, @code{azmq} between two
17784 audio filters.
17785
17786 To enable these filters you need to install the libzmq library and
17787 headers and configure FFmpeg with @code{--enable-libzmq}.
17788
17789 For more information about libzmq see:
17790 @url{http://www.zeromq.org/}
17791
17792 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
17793 receives messages sent through a network interface defined by the
17794 @option{bind_address} option.
17795
17796 The received message must be in the form:
17797 @example
17798 @var{TARGET} @var{COMMAND} [@var{ARG}]
17799 @end example
17800
17801 @var{TARGET} specifies the target of the command, usually the name of
17802 the filter class or a specific filter instance name.
17803
17804 @var{COMMAND} specifies the name of the command for the target filter.
17805
17806 @var{ARG} is optional and specifies the optional argument list for the
17807 given @var{COMMAND}.
17808
17809 Upon reception, the message is processed and the corresponding command
17810 is injected into the filtergraph. Depending on the result, the filter
17811 will send a reply to the client, adopting the format:
17812 @example
17813 @var{ERROR_CODE} @var{ERROR_REASON}
17814 @var{MESSAGE}
17815 @end example
17816
17817 @var{MESSAGE} is optional.
17818
17819 @subsection Examples
17820
17821 Look at @file{tools/zmqsend} for an example of a zmq client which can
17822 be used to send commands processed by these filters.
17823
17824 Consider the following filtergraph generated by @command{ffplay}
17825 @example
17826 ffplay -dumpgraph 1 -f lavfi "
17827 color=s=100x100:c=red  [l];
17828 color=s=100x100:c=blue [r];
17829 nullsrc=s=200x100, zmq [bg];
17830 [bg][l]   overlay      [bg+l];
17831 [bg+l][r] overlay=x=100 "
17832 @end example
17833
17834 To change the color of the left side of the video, the following
17835 command can be used:
17836 @example
17837 echo Parsed_color_0 c yellow | tools/zmqsend
17838 @end example
17839
17840 To change the right side:
17841 @example
17842 echo Parsed_color_1 c pink | tools/zmqsend
17843 @end example
17844
17845 @c man end MULTIMEDIA FILTERS
17846
17847 @chapter Multimedia Sources
17848 @c man begin MULTIMEDIA SOURCES
17849
17850 Below is a description of the currently available multimedia sources.
17851
17852 @section amovie
17853
17854 This is the same as @ref{movie} source, except it selects an audio
17855 stream by default.
17856
17857 @anchor{movie}
17858 @section movie
17859
17860 Read audio and/or video stream(s) from a movie container.
17861
17862 It accepts the following parameters:
17863
17864 @table @option
17865 @item filename
17866 The name of the resource to read (not necessarily a file; it can also be a
17867 device or a stream accessed through some protocol).
17868
17869 @item format_name, f
17870 Specifies the format assumed for the movie to read, and can be either
17871 the name of a container or an input device. If not specified, the
17872 format is guessed from @var{movie_name} or by probing.
17873
17874 @item seek_point, sp
17875 Specifies the seek point in seconds. The frames will be output
17876 starting from this seek point. The parameter is evaluated with
17877 @code{av_strtod}, so the numerical value may be suffixed by an IS
17878 postfix. The default value is "0".
17879
17880 @item streams, s
17881 Specifies the streams to read. Several streams can be specified,
17882 separated by "+". The source will then have as many outputs, in the
17883 same order. The syntax is explained in the ``Stream specifiers''
17884 section in the ffmpeg manual. Two special names, "dv" and "da" specify
17885 respectively the default (best suited) video and audio stream. Default
17886 is "dv", or "da" if the filter is called as "amovie".
17887
17888 @item stream_index, si
17889 Specifies the index of the video stream to read. If the value is -1,
17890 the most suitable video stream will be automatically selected. The default
17891 value is "-1". Deprecated. If the filter is called "amovie", it will select
17892 audio instead of video.
17893
17894 @item loop
17895 Specifies how many times to read the stream in sequence.
17896 If the value is less than 1, the stream will be read again and again.
17897 Default value is "1".
17898
17899 Note that when the movie is looped the source timestamps are not
17900 changed, so it will generate non monotonically increasing timestamps.
17901
17902 @item discontinuity
17903 Specifies the time difference between frames above which the point is
17904 considered a timestamp discontinuity which is removed by adjusting the later
17905 timestamps.
17906 @end table
17907
17908 It allows overlaying a second video on top of the main input of
17909 a filtergraph, as shown in this graph:
17910 @example
17911 input -----------> deltapts0 --> overlay --> output
17912                                     ^
17913                                     |
17914 movie --> scale--> deltapts1 -------+
17915 @end example
17916 @subsection Examples
17917
17918 @itemize
17919 @item
17920 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
17921 on top of the input labelled "in":
17922 @example
17923 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
17924 [in] setpts=PTS-STARTPTS [main];
17925 [main][over] overlay=16:16 [out]
17926 @end example
17927
17928 @item
17929 Read from a video4linux2 device, and overlay it on top of the input
17930 labelled "in":
17931 @example
17932 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
17933 [in] setpts=PTS-STARTPTS [main];
17934 [main][over] overlay=16:16 [out]
17935 @end example
17936
17937 @item
17938 Read the first video stream and the audio stream with id 0x81 from
17939 dvd.vob; the video is connected to the pad named "video" and the audio is
17940 connected to the pad named "audio":
17941 @example
17942 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
17943 @end example
17944 @end itemize
17945
17946 @subsection Commands
17947
17948 Both movie and amovie support the following commands:
17949 @table @option
17950 @item seek
17951 Perform seek using "av_seek_frame".
17952 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
17953 @itemize
17954 @item
17955 @var{stream_index}: If stream_index is -1, a default
17956 stream is selected, and @var{timestamp} is automatically converted
17957 from AV_TIME_BASE units to the stream specific time_base.
17958 @item
17959 @var{timestamp}: Timestamp in AVStream.time_base units
17960 or, if no stream is specified, in AV_TIME_BASE units.
17961 @item
17962 @var{flags}: Flags which select direction and seeking mode.
17963 @end itemize
17964
17965 @item get_duration
17966 Get movie duration in AV_TIME_BASE units.
17967
17968 @end table
17969
17970 @c man end MULTIMEDIA SOURCES