]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
Merge commit '83fef16b6a8dbbcbd80d159ba3ebe818dbbb2776'
[ffmpeg] / doc / filters.texi
1 @chapter Filtering Introduction
2 @c man begin FILTERING INTRODUCTION
3
4 Filtering in FFmpeg is enabled through the libavfilter library.
5
6 In libavfilter, a filter can have multiple inputs and multiple
7 outputs.
8 To illustrate the sorts of things that are possible, we consider the
9 following filtergraph.
10
11 @verbatim
12                 [main]
13 input --> split ---------------------> overlay --> output
14             |                             ^
15             |[tmp]                  [flip]|
16             +-----> crop --> vflip -------+
17 @end verbatim
18
19 This filtergraph splits the input stream in two streams, then sends one
20 stream through the crop filter and the vflip filter, before merging it
21 back with the other stream by overlaying it on top. You can use the
22 following command to achieve this:
23
24 @example
25 ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
26 @end example
27
28 The result will be that the top half of the video is mirrored
29 onto the bottom half of the output video.
30
31 Filters in the same linear chain are separated by commas, and distinct
32 linear chains of filters are separated by semicolons. In our example,
33 @var{crop,vflip} are in one linear chain, @var{split} and
34 @var{overlay} are separately in another. The points where the linear
35 chains join are labelled by names enclosed in square brackets. In the
36 example, the split filter generates two outputs that are associated to
37 the labels @var{[main]} and @var{[tmp]}.
38
39 The stream sent to the second output of @var{split}, labelled as
40 @var{[tmp]}, is processed through the @var{crop} filter, which crops
41 away the lower half part of the video, and then vertically flipped. The
42 @var{overlay} filter takes in input the first unchanged output of the
43 split filter (which was labelled as @var{[main]}), and overlay on its
44 lower half the output generated by the @var{crop,vflip} filterchain.
45
46 Some filters take in input a list of parameters: they are specified
47 after the filter name and an equal sign, and are separated from each other
48 by a colon.
49
50 There exist so-called @var{source filters} that do not have an
51 audio/video input, and @var{sink filters} that will not have audio/video
52 output.
53
54 @c man end FILTERING INTRODUCTION
55
56 @chapter graph2dot
57 @c man begin GRAPH2DOT
58
59 The @file{graph2dot} program included in the FFmpeg @file{tools}
60 directory can be used to parse a filtergraph description and issue a
61 corresponding textual representation in the dot language.
62
63 Invoke the command:
64 @example
65 graph2dot -h
66 @end example
67
68 to see how to use @file{graph2dot}.
69
70 You can then pass the dot description to the @file{dot} program (from
71 the graphviz suite of programs) and obtain a graphical representation
72 of the filtergraph.
73
74 For example the sequence of commands:
75 @example
76 echo @var{GRAPH_DESCRIPTION} | \
77 tools/graph2dot -o graph.tmp && \
78 dot -Tpng graph.tmp -o graph.png && \
79 display graph.png
80 @end example
81
82 can be used to create and display an image representing the graph
83 described by the @var{GRAPH_DESCRIPTION} string. Note that this string must be
84 a complete self-contained graph, with its inputs and outputs explicitly defined.
85 For example if your command line is of the form:
86 @example
87 ffmpeg -i infile -vf scale=640:360 outfile
88 @end example
89 your @var{GRAPH_DESCRIPTION} string will need to be of the form:
90 @example
91 nullsrc,scale=640:360,nullsink
92 @end example
93 you may also need to set the @var{nullsrc} parameters and add a @var{format}
94 filter in order to simulate a specific input file.
95
96 @c man end GRAPH2DOT
97
98 @chapter Filtergraph description
99 @c man begin FILTERGRAPH DESCRIPTION
100
101 A filtergraph is a directed graph of connected filters. It can contain
102 cycles, and there can be multiple links between a pair of
103 filters. Each link has one input pad on one side connecting it to one
104 filter from which it takes its input, and one output pad on the other
105 side connecting it to one filter accepting its output.
106
107 Each filter in a filtergraph is an instance of a filter class
108 registered in the application, which defines the features and the
109 number of input and output pads of the filter.
110
111 A filter with no input pads is called a "source", and a filter with no
112 output pads is called a "sink".
113
114 @anchor{Filtergraph syntax}
115 @section Filtergraph syntax
116
117 A filtergraph has a textual representation, which is recognized by the
118 @option{-filter}/@option{-vf}/@option{-af} and
119 @option{-filter_complex} options in @command{ffmpeg} and
120 @option{-vf}/@option{-af} in @command{ffplay}, and by the
121 @code{avfilter_graph_parse_ptr()} function defined in
122 @file{libavfilter/avfilter.h}.
123
124 A filterchain consists of a sequence of connected filters, each one
125 connected to the previous one in the sequence. A filterchain is
126 represented by a list of ","-separated filter descriptions.
127
128 A filtergraph consists of a sequence of filterchains. A sequence of
129 filterchains is represented by a list of ";"-separated filterchain
130 descriptions.
131
132 A filter is represented by a string of the form:
133 [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}@@@var{id}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
134
135 @var{filter_name} is the name of the filter class of which the
136 described filter is an instance of, and has to be the name of one of
137 the filter classes registered in the program optionally followed by "@@@var{id}".
138 The name of the filter class is optionally followed by a string
139 "=@var{arguments}".
140
141 @var{arguments} is a string which contains the parameters used to
142 initialize the filter instance. It may have one of two forms:
143 @itemize
144
145 @item
146 A ':'-separated list of @var{key=value} pairs.
147
148 @item
149 A ':'-separated list of @var{value}. In this case, the keys are assumed to be
150 the option names in the order they are declared. E.g. the @code{fade} filter
151 declares three options in this order -- @option{type}, @option{start_frame} and
152 @option{nb_frames}. Then the parameter list @var{in:0:30} means that the value
153 @var{in} is assigned to the option @option{type}, @var{0} to
154 @option{start_frame} and @var{30} to @option{nb_frames}.
155
156 @item
157 A ':'-separated list of mixed direct @var{value} and long @var{key=value}
158 pairs. The direct @var{value} must precede the @var{key=value} pairs, and
159 follow the same constraints order of the previous point. The following
160 @var{key=value} pairs can be set in any preferred order.
161
162 @end itemize
163
164 If the option value itself is a list of items (e.g. the @code{format} filter
165 takes a list of pixel formats), the items in the list are usually separated by
166 @samp{|}.
167
168 The list of arguments can be quoted using the character @samp{'} as initial
169 and ending mark, and the character @samp{\} for escaping the characters
170 within the quoted text; otherwise the argument string is considered
171 terminated when the next special character (belonging to the set
172 @samp{[]=;,}) is encountered.
173
174 The name and arguments of the filter are optionally preceded and
175 followed by a list of link labels.
176 A link label allows one to name a link and associate it to a filter output
177 or input pad. The preceding labels @var{in_link_1}
178 ... @var{in_link_N}, are associated to the filter input pads,
179 the following labels @var{out_link_1} ... @var{out_link_M}, are
180 associated to the output pads.
181
182 When two link labels with the same name are found in the
183 filtergraph, a link between the corresponding input and output pad is
184 created.
185
186 If an output pad is not labelled, it is linked by default to the first
187 unlabelled input pad of the next filter in the filterchain.
188 For example in the filterchain
189 @example
190 nullsrc, split[L1], [L2]overlay, nullsink
191 @end example
192 the split filter instance has two output pads, and the overlay filter
193 instance two input pads. The first output pad of split is labelled
194 "L1", the first input pad of overlay is labelled "L2", and the second
195 output pad of split is linked to the second input pad of overlay,
196 which are both unlabelled.
197
198 In a filter description, if the input label of the first filter is not
199 specified, "in" is assumed; if the output label of the last filter is not
200 specified, "out" is assumed.
201
202 In a complete filterchain all the unlabelled filter input and output
203 pads must be connected. A filtergraph is considered valid if all the
204 filter input and output pads of all the filterchains are connected.
205
206 Libavfilter will automatically insert @ref{scale} filters where format
207 conversion is required. It is possible to specify swscale flags
208 for those automatically inserted scalers by prepending
209 @code{sws_flags=@var{flags};}
210 to the filtergraph description.
211
212 Here is a BNF description of the filtergraph syntax:
213 @example
214 @var{NAME}             ::= sequence of alphanumeric characters and '_'
215 @var{FILTER_NAME}      ::= @var{NAME}["@@"@var{NAME}]
216 @var{LINKLABEL}        ::= "[" @var{NAME} "]"
217 @var{LINKLABELS}       ::= @var{LINKLABEL} [@var{LINKLABELS}]
218 @var{FILTER_ARGUMENTS} ::= sequence of chars (possibly quoted)
219 @var{FILTER}           ::= [@var{LINKLABELS}] @var{FILTER_NAME} ["=" @var{FILTER_ARGUMENTS}] [@var{LINKLABELS}]
220 @var{FILTERCHAIN}      ::= @var{FILTER} [,@var{FILTERCHAIN}]
221 @var{FILTERGRAPH}      ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
222 @end example
223
224 @section Notes on filtergraph escaping
225
226 Filtergraph description composition entails several levels of
227 escaping. See @ref{quoting_and_escaping,,the "Quoting and escaping"
228 section in the ffmpeg-utils(1) manual,ffmpeg-utils} for more
229 information about the employed escaping procedure.
230
231 A first level escaping affects the content of each filter option
232 value, which may contain the special character @code{:} used to
233 separate values, or one of the escaping characters @code{\'}.
234
235 A second level escaping affects the whole filter description, which
236 may contain the escaping characters @code{\'} or the special
237 characters @code{[],;} used by the filtergraph description.
238
239 Finally, when you specify a filtergraph on a shell commandline, you
240 need to perform a third level escaping for the shell special
241 characters contained within it.
242
243 For example, consider the following string to be embedded in
244 the @ref{drawtext} filter description @option{text} value:
245 @example
246 this is a 'string': may contain one, or more, special characters
247 @end example
248
249 This string contains the @code{'} special escaping character, and the
250 @code{:} special character, so it needs to be escaped in this way:
251 @example
252 text=this is a \'string\'\: may contain one, or more, special characters
253 @end example
254
255 A second level of escaping is required when embedding the filter
256 description in a filtergraph description, in order to escape all the
257 filtergraph special characters. Thus the example above becomes:
258 @example
259 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
260 @end example
261 (note that in addition to the @code{\'} escaping special characters,
262 also @code{,} needs to be escaped).
263
264 Finally an additional level of escaping is needed when writing the
265 filtergraph description in a shell command, which depends on the
266 escaping rules of the adopted shell. For example, assuming that
267 @code{\} is special and needs to be escaped with another @code{\}, the
268 previous string will finally result in:
269 @example
270 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
271 @end example
272
273 @chapter Timeline editing
274
275 Some filters support a generic @option{enable} option. For the filters
276 supporting timeline editing, this option can be set to an expression which is
277 evaluated before sending a frame to the filter. If the evaluation is non-zero,
278 the filter will be enabled, otherwise the frame will be sent unchanged to the
279 next filter in the filtergraph.
280
281 The expression accepts the following values:
282 @table @samp
283 @item t
284 timestamp expressed in seconds, NAN if the input timestamp is unknown
285
286 @item n
287 sequential number of the input frame, starting from 0
288
289 @item pos
290 the position in the file of the input frame, NAN if unknown
291
292 @item w
293 @item h
294 width and height of the input frame if video
295 @end table
296
297 Additionally, these filters support an @option{enable} command that can be used
298 to re-define the expression.
299
300 Like any other filtering option, the @option{enable} option follows the same
301 rules.
302
303 For example, to enable a blur filter (@ref{smartblur}) from 10 seconds to 3
304 minutes, and a @ref{curves} filter starting at 3 seconds:
305 @example
306 smartblur = enable='between(t,10,3*60)',
307 curves    = enable='gte(t,3)' : preset=cross_process
308 @end example
309
310 See @code{ffmpeg -filters} to view which filters have timeline support.
311
312 @c man end FILTERGRAPH DESCRIPTION
313
314 @anchor{framesync}
315 @chapter Options for filters with several inputs (framesync)
316 @c man begin OPTIONS FOR FILTERS WITH SEVERAL INPUTS
317
318 Some filters with several inputs support a common set of options.
319 These options can only be set by name, not with the short notation.
320
321 @table @option
322 @item eof_action
323 The action to take when EOF is encountered on the secondary input; it accepts
324 one of the following values:
325
326 @table @option
327 @item repeat
328 Repeat the last frame (the default).
329 @item endall
330 End both streams.
331 @item pass
332 Pass the main input through.
333 @end table
334
335 @item shortest
336 If set to 1, force the output to terminate when the shortest input
337 terminates. Default value is 0.
338
339 @item repeatlast
340 If set to 1, force the filter to extend the last frame of secondary streams
341 until the end of the primary stream. A value of 0 disables this behavior.
342 Default value is 1.
343 @end table
344
345 @c man end OPTIONS FOR FILTERS WITH SEVERAL INPUTS
346
347 @chapter Audio Filters
348 @c man begin AUDIO FILTERS
349
350 When you configure your FFmpeg build, you can disable any of the
351 existing filters using @code{--disable-filters}.
352 The configure output will show the audio filters included in your
353 build.
354
355 Below is a description of the currently available audio filters.
356
357 @section acompressor
358
359 A compressor is mainly used to reduce the dynamic range of a signal.
360 Especially modern music is mostly compressed at a high ratio to
361 improve the overall loudness. It's done to get the highest attention
362 of a listener, "fatten" the sound and bring more "power" to the track.
363 If a signal is compressed too much it may sound dull or "dead"
364 afterwards or it may start to "pump" (which could be a powerful effect
365 but can also destroy a track completely).
366 The right compression is the key to reach a professional sound and is
367 the high art of mixing and mastering. Because of its complex settings
368 it may take a long time to get the right feeling for this kind of effect.
369
370 Compression is done by detecting the volume above a chosen level
371 @code{threshold} and dividing it by the factor set with @code{ratio}.
372 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
373 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
374 the signal would cause distortion of the waveform the reduction can be
375 levelled over the time. This is done by setting "Attack" and "Release".
376 @code{attack} determines how long the signal has to rise above the threshold
377 before any reduction will occur and @code{release} sets the time the signal
378 has to fall below the threshold to reduce the reduction again. Shorter signals
379 than the chosen attack time will be left untouched.
380 The overall reduction of the signal can be made up afterwards with the
381 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
382 raising the makeup to this level results in a signal twice as loud than the
383 source. To gain a softer entry in the compression the @code{knee} flattens the
384 hard edge at the threshold in the range of the chosen decibels.
385
386 The filter accepts the following options:
387
388 @table @option
389 @item level_in
390 Set input gain. Default is 1. Range is between 0.015625 and 64.
391
392 @item threshold
393 If a signal of stream rises above this level it will affect the gain
394 reduction.
395 By default it is 0.125. Range is between 0.00097563 and 1.
396
397 @item ratio
398 Set a ratio by which the signal is reduced. 1:2 means that if the level
399 rose 4dB above the threshold, it will be only 2dB above after the reduction.
400 Default is 2. Range is between 1 and 20.
401
402 @item attack
403 Amount of milliseconds the signal has to rise above the threshold before gain
404 reduction starts. Default is 20. Range is between 0.01 and 2000.
405
406 @item release
407 Amount of milliseconds the signal has to fall below the threshold before
408 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
409
410 @item makeup
411 Set the amount by how much signal will be amplified after processing.
412 Default is 1. Range is from 1 to 64.
413
414 @item knee
415 Curve the sharp knee around the threshold to enter gain reduction more softly.
416 Default is 2.82843. Range is between 1 and 8.
417
418 @item link
419 Choose if the @code{average} level between all channels of input stream
420 or the louder(@code{maximum}) channel of input stream affects the
421 reduction. Default is @code{average}.
422
423 @item detection
424 Should the exact signal be taken in case of @code{peak} or an RMS one in case
425 of @code{rms}. Default is @code{rms} which is mostly smoother.
426
427 @item mix
428 How much to use compressed signal in output. Default is 1.
429 Range is between 0 and 1.
430 @end table
431
432 @section acontrast
433 Simple audio dynamic range commpression/expansion filter.
434
435 The filter accepts the following options:
436
437 @table @option
438 @item contrast
439 Set contrast. Default is 33. Allowed range is between 0 and 100.
440 @end table
441
442 @section acopy
443
444 Copy the input audio source unchanged to the output. This is mainly useful for
445 testing purposes.
446
447 @section acrossfade
448
449 Apply cross fade from one input audio stream to another input audio stream.
450 The cross fade is applied for specified duration near the end of first stream.
451
452 The filter accepts the following options:
453
454 @table @option
455 @item nb_samples, ns
456 Specify the number of samples for which the cross fade effect has to last.
457 At the end of the cross fade effect the first input audio will be completely
458 silent. Default is 44100.
459
460 @item duration, d
461 Specify the duration of the cross fade effect. See
462 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
463 for the accepted syntax.
464 By default the duration is determined by @var{nb_samples}.
465 If set this option is used instead of @var{nb_samples}.
466
467 @item overlap, o
468 Should first stream end overlap with second stream start. Default is enabled.
469
470 @item curve1
471 Set curve for cross fade transition for first stream.
472
473 @item curve2
474 Set curve for cross fade transition for second stream.
475
476 For description of available curve types see @ref{afade} filter description.
477 @end table
478
479 @subsection Examples
480
481 @itemize
482 @item
483 Cross fade from one input to another:
484 @example
485 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
486 @end example
487
488 @item
489 Cross fade from one input to another but without overlapping:
490 @example
491 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
492 @end example
493 @end itemize
494
495 @section acrusher
496
497 Reduce audio bit resolution.
498
499 This filter is bit crusher with enhanced functionality. A bit crusher
500 is used to audibly reduce number of bits an audio signal is sampled
501 with. This doesn't change the bit depth at all, it just produces the
502 effect. Material reduced in bit depth sounds more harsh and "digital".
503 This filter is able to even round to continuous values instead of discrete
504 bit depths.
505 Additionally it has a D/C offset which results in different crushing of
506 the lower and the upper half of the signal.
507 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
508
509 Another feature of this filter is the logarithmic mode.
510 This setting switches from linear distances between bits to logarithmic ones.
511 The result is a much more "natural" sounding crusher which doesn't gate low
512 signals for example. The human ear has a logarithmic perception, too
513 so this kind of crushing is much more pleasant.
514 Logarithmic crushing is also able to get anti-aliased.
515
516 The filter accepts the following options:
517
518 @table @option
519 @item level_in
520 Set level in.
521
522 @item level_out
523 Set level out.
524
525 @item bits
526 Set bit reduction.
527
528 @item mix
529 Set mixing amount.
530
531 @item mode
532 Can be linear: @code{lin} or logarithmic: @code{log}.
533
534 @item dc
535 Set DC.
536
537 @item aa
538 Set anti-aliasing.
539
540 @item samples
541 Set sample reduction.
542
543 @item lfo
544 Enable LFO. By default disabled.
545
546 @item lforange
547 Set LFO range.
548
549 @item lforate
550 Set LFO rate.
551 @end table
552
553 @section adelay
554
555 Delay one or more audio channels.
556
557 Samples in delayed channel are filled with silence.
558
559 The filter accepts the following option:
560
561 @table @option
562 @item delays
563 Set list of delays in milliseconds for each channel separated by '|'.
564 Unused delays will be silently ignored. If number of given delays is
565 smaller than number of channels all remaining channels will not be delayed.
566 If you want to delay exact number of samples, append 'S' to number.
567 @end table
568
569 @subsection Examples
570
571 @itemize
572 @item
573 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
574 the second channel (and any other channels that may be present) unchanged.
575 @example
576 adelay=1500|0|500
577 @end example
578
579 @item
580 Delay second channel by 500 samples, the third channel by 700 samples and leave
581 the first channel (and any other channels that may be present) unchanged.
582 @example
583 adelay=0|500S|700S
584 @end example
585 @end itemize
586
587 @section aecho
588
589 Apply echoing to the input audio.
590
591 Echoes are reflected sound and can occur naturally amongst mountains
592 (and sometimes large buildings) when talking or shouting; digital echo
593 effects emulate this behaviour and are often used to help fill out the
594 sound of a single instrument or vocal. The time difference between the
595 original signal and the reflection is the @code{delay}, and the
596 loudness of the reflected signal is the @code{decay}.
597 Multiple echoes can have different delays and decays.
598
599 A description of the accepted parameters follows.
600
601 @table @option
602 @item in_gain
603 Set input gain of reflected signal. Default is @code{0.6}.
604
605 @item out_gain
606 Set output gain of reflected signal. Default is @code{0.3}.
607
608 @item delays
609 Set list of time intervals in milliseconds between original signal and reflections
610 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
611 Default is @code{1000}.
612
613 @item decays
614 Set list of loudness of reflected signals separated by '|'.
615 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
616 Default is @code{0.5}.
617 @end table
618
619 @subsection Examples
620
621 @itemize
622 @item
623 Make it sound as if there are twice as many instruments as are actually playing:
624 @example
625 aecho=0.8:0.88:60:0.4
626 @end example
627
628 @item
629 If delay is very short, then it sound like a (metallic) robot playing music:
630 @example
631 aecho=0.8:0.88:6:0.4
632 @end example
633
634 @item
635 A longer delay will sound like an open air concert in the mountains:
636 @example
637 aecho=0.8:0.9:1000:0.3
638 @end example
639
640 @item
641 Same as above but with one more mountain:
642 @example
643 aecho=0.8:0.9:1000|1800:0.3|0.25
644 @end example
645 @end itemize
646
647 @section aemphasis
648 Audio emphasis filter creates or restores material directly taken from LPs or
649 emphased CDs with different filter curves. E.g. to store music on vinyl the
650 signal has to be altered by a filter first to even out the disadvantages of
651 this recording medium.
652 Once the material is played back the inverse filter has to be applied to
653 restore the distortion of the frequency response.
654
655 The filter accepts the following options:
656
657 @table @option
658 @item level_in
659 Set input gain.
660
661 @item level_out
662 Set output gain.
663
664 @item mode
665 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
666 use @code{production} mode. Default is @code{reproduction} mode.
667
668 @item type
669 Set filter type. Selects medium. Can be one of the following:
670
671 @table @option
672 @item col
673 select Columbia.
674 @item emi
675 select EMI.
676 @item bsi
677 select BSI (78RPM).
678 @item riaa
679 select RIAA.
680 @item cd
681 select Compact Disc (CD).
682 @item 50fm
683 select 50µs (FM).
684 @item 75fm
685 select 75µs (FM).
686 @item 50kf
687 select 50µs (FM-KF).
688 @item 75kf
689 select 75µs (FM-KF).
690 @end table
691 @end table
692
693 @section aeval
694
695 Modify an audio signal according to the specified expressions.
696
697 This filter accepts one or more expressions (one for each channel),
698 which are evaluated and used to modify a corresponding audio signal.
699
700 It accepts the following parameters:
701
702 @table @option
703 @item exprs
704 Set the '|'-separated expressions list for each separate channel. If
705 the number of input channels is greater than the number of
706 expressions, the last specified expression is used for the remaining
707 output channels.
708
709 @item channel_layout, c
710 Set output channel layout. If not specified, the channel layout is
711 specified by the number of expressions. If set to @samp{same}, it will
712 use by default the same input channel layout.
713 @end table
714
715 Each expression in @var{exprs} can contain the following constants and functions:
716
717 @table @option
718 @item ch
719 channel number of the current expression
720
721 @item n
722 number of the evaluated sample, starting from 0
723
724 @item s
725 sample rate
726
727 @item t
728 time of the evaluated sample expressed in seconds
729
730 @item nb_in_channels
731 @item nb_out_channels
732 input and output number of channels
733
734 @item val(CH)
735 the value of input channel with number @var{CH}
736 @end table
737
738 Note: this filter is slow. For faster processing you should use a
739 dedicated filter.
740
741 @subsection Examples
742
743 @itemize
744 @item
745 Half volume:
746 @example
747 aeval=val(ch)/2:c=same
748 @end example
749
750 @item
751 Invert phase of the second channel:
752 @example
753 aeval=val(0)|-val(1)
754 @end example
755 @end itemize
756
757 @anchor{afade}
758 @section afade
759
760 Apply fade-in/out effect to input audio.
761
762 A description of the accepted parameters follows.
763
764 @table @option
765 @item type, t
766 Specify the effect type, can be either @code{in} for fade-in, or
767 @code{out} for a fade-out effect. Default is @code{in}.
768
769 @item start_sample, ss
770 Specify the number of the start sample for starting to apply the fade
771 effect. Default is 0.
772
773 @item nb_samples, ns
774 Specify the number of samples for which the fade effect has to last. At
775 the end of the fade-in effect the output audio will have the same
776 volume as the input audio, at the end of the fade-out transition
777 the output audio will be silence. Default is 44100.
778
779 @item start_time, st
780 Specify the start time of the fade effect. Default is 0.
781 The value must be specified as a time duration; see
782 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
783 for the accepted syntax.
784 If set this option is used instead of @var{start_sample}.
785
786 @item duration, d
787 Specify the duration of the fade effect. See
788 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
789 for the accepted syntax.
790 At the end of the fade-in effect the output audio will have the same
791 volume as the input audio, at the end of the fade-out transition
792 the output audio will be silence.
793 By default the duration is determined by @var{nb_samples}.
794 If set this option is used instead of @var{nb_samples}.
795
796 @item curve
797 Set curve for fade transition.
798
799 It accepts the following values:
800 @table @option
801 @item tri
802 select triangular, linear slope (default)
803 @item qsin
804 select quarter of sine wave
805 @item hsin
806 select half of sine wave
807 @item esin
808 select exponential sine wave
809 @item log
810 select logarithmic
811 @item ipar
812 select inverted parabola
813 @item qua
814 select quadratic
815 @item cub
816 select cubic
817 @item squ
818 select square root
819 @item cbr
820 select cubic root
821 @item par
822 select parabola
823 @item exp
824 select exponential
825 @item iqsin
826 select inverted quarter of sine wave
827 @item ihsin
828 select inverted half of sine wave
829 @item dese
830 select double-exponential seat
831 @item desi
832 select double-exponential sigmoid
833 @end table
834 @end table
835
836 @subsection Examples
837
838 @itemize
839 @item
840 Fade in first 15 seconds of audio:
841 @example
842 afade=t=in:ss=0:d=15
843 @end example
844
845 @item
846 Fade out last 25 seconds of a 900 seconds audio:
847 @example
848 afade=t=out:st=875:d=25
849 @end example
850 @end itemize
851
852 @section afftfilt
853 Apply arbitrary expressions to samples in frequency domain.
854
855 @table @option
856 @item real
857 Set frequency domain real expression for each separate channel separated
858 by '|'. Default is "1".
859 If the number of input channels is greater than the number of
860 expressions, the last specified expression is used for the remaining
861 output channels.
862
863 @item imag
864 Set frequency domain imaginary expression for each separate channel
865 separated by '|'. If not set, @var{real} option is used.
866
867 Each expression in @var{real} and @var{imag} can contain the following
868 constants:
869
870 @table @option
871 @item sr
872 sample rate
873
874 @item b
875 current frequency bin number
876
877 @item nb
878 number of available bins
879
880 @item ch
881 channel number of the current expression
882
883 @item chs
884 number of channels
885
886 @item pts
887 current frame pts
888 @end table
889
890 @item win_size
891 Set window size.
892
893 It accepts the following values:
894 @table @samp
895 @item w16
896 @item w32
897 @item w64
898 @item w128
899 @item w256
900 @item w512
901 @item w1024
902 @item w2048
903 @item w4096
904 @item w8192
905 @item w16384
906 @item w32768
907 @item w65536
908 @end table
909 Default is @code{w4096}
910
911 @item win_func
912 Set window function. Default is @code{hann}.
913
914 @item overlap
915 Set window overlap. If set to 1, the recommended overlap for selected
916 window function will be picked. Default is @code{0.75}.
917 @end table
918
919 @subsection Examples
920
921 @itemize
922 @item
923 Leave almost only low frequencies in audio:
924 @example
925 afftfilt="1-clip((b/nb)*b,0,1)"
926 @end example
927 @end itemize
928
929 @anchor{afir}
930 @section afir
931
932 Apply an arbitrary Frequency Impulse Response filter.
933
934 This filter is designed for applying long FIR filters,
935 up to 30 seconds long.
936
937 It can be used as component for digital crossover filters,
938 room equalization, cross talk cancellation, wavefield synthesis,
939 auralization, ambiophonics and ambisonics.
940
941 This filter uses second stream as FIR coefficients.
942 If second stream holds single channel, it will be used
943 for all input channels in first stream, otherwise
944 number of channels in second stream must be same as
945 number of channels in first stream.
946
947 It accepts the following parameters:
948
949 @table @option
950 @item dry
951 Set dry gain. This sets input gain.
952
953 @item wet
954 Set wet gain. This sets final output gain.
955
956 @item length
957 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
958
959 @item again
960 Enable applying gain measured from power of IR.
961 @end table
962
963 @subsection Examples
964
965 @itemize
966 @item
967 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
968 @example
969 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
970 @end example
971 @end itemize
972
973 @anchor{aformat}
974 @section aformat
975
976 Set output format constraints for the input audio. The framework will
977 negotiate the most appropriate format to minimize conversions.
978
979 It accepts the following parameters:
980 @table @option
981
982 @item sample_fmts
983 A '|'-separated list of requested sample formats.
984
985 @item sample_rates
986 A '|'-separated list of requested sample rates.
987
988 @item channel_layouts
989 A '|'-separated list of requested channel layouts.
990
991 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
992 for the required syntax.
993 @end table
994
995 If a parameter is omitted, all values are allowed.
996
997 Force the output to either unsigned 8-bit or signed 16-bit stereo
998 @example
999 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1000 @end example
1001
1002 @section agate
1003
1004 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1005 processing reduces disturbing noise between useful signals.
1006
1007 Gating is done by detecting the volume below a chosen level @var{threshold}
1008 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1009 floor is set via @var{range}. Because an exact manipulation of the signal
1010 would cause distortion of the waveform the reduction can be levelled over
1011 time. This is done by setting @var{attack} and @var{release}.
1012
1013 @var{attack} determines how long the signal has to fall below the threshold
1014 before any reduction will occur and @var{release} sets the time the signal
1015 has to rise above the threshold to reduce the reduction again.
1016 Shorter signals than the chosen attack time will be left untouched.
1017
1018 @table @option
1019 @item level_in
1020 Set input level before filtering.
1021 Default is 1. Allowed range is from 0.015625 to 64.
1022
1023 @item range
1024 Set the level of gain reduction when the signal is below the threshold.
1025 Default is 0.06125. Allowed range is from 0 to 1.
1026
1027 @item threshold
1028 If a signal rises above this level the gain reduction is released.
1029 Default is 0.125. Allowed range is from 0 to 1.
1030
1031 @item ratio
1032 Set a ratio by which the signal is reduced.
1033 Default is 2. Allowed range is from 1 to 9000.
1034
1035 @item attack
1036 Amount of milliseconds the signal has to rise above the threshold before gain
1037 reduction stops.
1038 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1039
1040 @item release
1041 Amount of milliseconds the signal has to fall below the threshold before the
1042 reduction is increased again. Default is 250 milliseconds.
1043 Allowed range is from 0.01 to 9000.
1044
1045 @item makeup
1046 Set amount of amplification of signal after processing.
1047 Default is 1. Allowed range is from 1 to 64.
1048
1049 @item knee
1050 Curve the sharp knee around the threshold to enter gain reduction more softly.
1051 Default is 2.828427125. Allowed range is from 1 to 8.
1052
1053 @item detection
1054 Choose if exact signal should be taken for detection or an RMS like one.
1055 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1056
1057 @item link
1058 Choose if the average level between all channels or the louder channel affects
1059 the reduction.
1060 Default is @code{average}. Can be @code{average} or @code{maximum}.
1061 @end table
1062
1063 @section aiir
1064
1065 Apply an arbitrary Infinite Impulse Response filter.
1066
1067 It accepts the following parameters:
1068
1069 @table @option
1070 @item z
1071 Set numerator/zeros coefficients.
1072
1073 @item p
1074 Set denominator/poles coefficients.
1075
1076 @item k
1077 Set channels gains.
1078
1079 @item dry_gain
1080 Set input gain.
1081
1082 @item wet_gain
1083 Set output gain.
1084
1085 @item f
1086 Set coefficients format.
1087
1088 @table @samp
1089 @item tf
1090 transfer function
1091 @item zp
1092 Z-plane zeros/poles, cartesian (default)
1093 @item pr
1094 Z-plane zeros/poles, polar radians
1095 @item pd
1096 Z-plane zeros/poles, polar degrees
1097 @end table
1098
1099 @item r
1100 Set kind of processing.
1101 Can be @code{d} - direct or @code{s} - serial cascading. Defauls is @code{s}.
1102
1103 @item e
1104 Set filtering precision.
1105
1106 @table @samp
1107 @item dbl
1108 double-precision floating-point (default)
1109 @item flt
1110 single-precision floating-point
1111 @item i32
1112 32-bit integers
1113 @item i16
1114 16-bit integers
1115 @end table
1116
1117 @end table
1118
1119 Coefficients in @code{tf} format are separated by spaces and are in ascending
1120 order.
1121
1122 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1123 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1124 imaginary unit.
1125
1126 Different coefficients and gains can be provided for every channel, in such case
1127 use '|' to separate coefficients or gains. Last provided coefficients will be
1128 used for all remaining channels.
1129
1130 @subsection Examples
1131
1132 @itemize
1133 @item
1134 Apply 2 pole elliptic notch at arround 5000Hz for 48000 Hz sample rate:
1135 @example
1136 aiir=k=1:z=7.957584807809675810E-1 -2.575128568908332300 3.674839853930788710 -2.57512875289799137 7.957586296317130880E-1:p=1 -2.86950072432325953 3.63022088054647218 -2.28075678147272232 6.361362326477423500E-1:f=tf:r=d
1137 @end example
1138
1139 @item
1140 Same as above but in @code{zp} format:
1141 @example
1142 aiir=k=0.79575848078096756:z=0.80918701+0.58773007i 0.80918701-0.58773007i 0.80884700+0.58784055i 0.80884700-0.58784055i:p=0.63892345+0.59951235i 0.63892345-0.59951235i 0.79582691+0.44198673i 0.79582691-0.44198673i:f=zp:r=s
1143 @end example
1144 @end itemize
1145
1146 @section alimiter
1147
1148 The limiter prevents an input signal from rising over a desired threshold.
1149 This limiter uses lookahead technology to prevent your signal from distorting.
1150 It means that there is a small delay after the signal is processed. Keep in mind
1151 that the delay it produces is the attack time you set.
1152
1153 The filter accepts the following options:
1154
1155 @table @option
1156 @item level_in
1157 Set input gain. Default is 1.
1158
1159 @item level_out
1160 Set output gain. Default is 1.
1161
1162 @item limit
1163 Don't let signals above this level pass the limiter. Default is 1.
1164
1165 @item attack
1166 The limiter will reach its attenuation level in this amount of time in
1167 milliseconds. Default is 5 milliseconds.
1168
1169 @item release
1170 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1171 Default is 50 milliseconds.
1172
1173 @item asc
1174 When gain reduction is always needed ASC takes care of releasing to an
1175 average reduction level rather than reaching a reduction of 0 in the release
1176 time.
1177
1178 @item asc_level
1179 Select how much the release time is affected by ASC, 0 means nearly no changes
1180 in release time while 1 produces higher release times.
1181
1182 @item level
1183 Auto level output signal. Default is enabled.
1184 This normalizes audio back to 0dB if enabled.
1185 @end table
1186
1187 Depending on picked setting it is recommended to upsample input 2x or 4x times
1188 with @ref{aresample} before applying this filter.
1189
1190 @section allpass
1191
1192 Apply a two-pole all-pass filter with central frequency (in Hz)
1193 @var{frequency}, and filter-width @var{width}.
1194 An all-pass filter changes the audio's frequency to phase relationship
1195 without changing its frequency to amplitude relationship.
1196
1197 The filter accepts the following options:
1198
1199 @table @option
1200 @item frequency, f
1201 Set frequency in Hz.
1202
1203 @item width_type, t
1204 Set method to specify band-width of filter.
1205 @table @option
1206 @item h
1207 Hz
1208 @item q
1209 Q-Factor
1210 @item o
1211 octave
1212 @item s
1213 slope
1214 @item k
1215 kHz
1216 @end table
1217
1218 @item width, w
1219 Specify the band-width of a filter in width_type units.
1220
1221 @item channels, c
1222 Specify which channels to filter, by default all available are filtered.
1223 @end table
1224
1225 @subsection Commands
1226
1227 This filter supports the following commands:
1228 @table @option
1229 @item frequency, f
1230 Change allpass frequency.
1231 Syntax for the command is : "@var{frequency}"
1232
1233 @item width_type, t
1234 Change allpass width_type.
1235 Syntax for the command is : "@var{width_type}"
1236
1237 @item width, w
1238 Change allpass width.
1239 Syntax for the command is : "@var{width}"
1240 @end table
1241
1242 @section aloop
1243
1244 Loop audio samples.
1245
1246 The filter accepts the following options:
1247
1248 @table @option
1249 @item loop
1250 Set the number of loops. Setting this value to -1 will result in infinite loops.
1251 Default is 0.
1252
1253 @item size
1254 Set maximal number of samples. Default is 0.
1255
1256 @item start
1257 Set first sample of loop. Default is 0.
1258 @end table
1259
1260 @anchor{amerge}
1261 @section amerge
1262
1263 Merge two or more audio streams into a single multi-channel stream.
1264
1265 The filter accepts the following options:
1266
1267 @table @option
1268
1269 @item inputs
1270 Set the number of inputs. Default is 2.
1271
1272 @end table
1273
1274 If the channel layouts of the inputs are disjoint, and therefore compatible,
1275 the channel layout of the output will be set accordingly and the channels
1276 will be reordered as necessary. If the channel layouts of the inputs are not
1277 disjoint, the output will have all the channels of the first input then all
1278 the channels of the second input, in that order, and the channel layout of
1279 the output will be the default value corresponding to the total number of
1280 channels.
1281
1282 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1283 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1284 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1285 first input, b1 is the first channel of the second input).
1286
1287 On the other hand, if both input are in stereo, the output channels will be
1288 in the default order: a1, a2, b1, b2, and the channel layout will be
1289 arbitrarily set to 4.0, which may or may not be the expected value.
1290
1291 All inputs must have the same sample rate, and format.
1292
1293 If inputs do not have the same duration, the output will stop with the
1294 shortest.
1295
1296 @subsection Examples
1297
1298 @itemize
1299 @item
1300 Merge two mono files into a stereo stream:
1301 @example
1302 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1303 @end example
1304
1305 @item
1306 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1307 @example
1308 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
1309 @end example
1310 @end itemize
1311
1312 @section amix
1313
1314 Mixes multiple audio inputs into a single output.
1315
1316 Note that this filter only supports float samples (the @var{amerge}
1317 and @var{pan} audio filters support many formats). If the @var{amix}
1318 input has integer samples then @ref{aresample} will be automatically
1319 inserted to perform the conversion to float samples.
1320
1321 For example
1322 @example
1323 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1324 @end example
1325 will mix 3 input audio streams to a single output with the same duration as the
1326 first input and a dropout transition time of 3 seconds.
1327
1328 It accepts the following parameters:
1329 @table @option
1330
1331 @item inputs
1332 The number of inputs. If unspecified, it defaults to 2.
1333
1334 @item duration
1335 How to determine the end-of-stream.
1336 @table @option
1337
1338 @item longest
1339 The duration of the longest input. (default)
1340
1341 @item shortest
1342 The duration of the shortest input.
1343
1344 @item first
1345 The duration of the first input.
1346
1347 @end table
1348
1349 @item dropout_transition
1350 The transition time, in seconds, for volume renormalization when an input
1351 stream ends. The default value is 2 seconds.
1352
1353 @end table
1354
1355 @section anequalizer
1356
1357 High-order parametric multiband equalizer for each channel.
1358
1359 It accepts the following parameters:
1360 @table @option
1361 @item params
1362
1363 This option string is in format:
1364 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1365 Each equalizer band is separated by '|'.
1366
1367 @table @option
1368 @item chn
1369 Set channel number to which equalization will be applied.
1370 If input doesn't have that channel the entry is ignored.
1371
1372 @item f
1373 Set central frequency for band.
1374 If input doesn't have that frequency the entry is ignored.
1375
1376 @item w
1377 Set band width in hertz.
1378
1379 @item g
1380 Set band gain in dB.
1381
1382 @item t
1383 Set filter type for band, optional, can be:
1384
1385 @table @samp
1386 @item 0
1387 Butterworth, this is default.
1388
1389 @item 1
1390 Chebyshev type 1.
1391
1392 @item 2
1393 Chebyshev type 2.
1394 @end table
1395 @end table
1396
1397 @item curves
1398 With this option activated frequency response of anequalizer is displayed
1399 in video stream.
1400
1401 @item size
1402 Set video stream size. Only useful if curves option is activated.
1403
1404 @item mgain
1405 Set max gain that will be displayed. Only useful if curves option is activated.
1406 Setting this to a reasonable value makes it possible to display gain which is derived from
1407 neighbour bands which are too close to each other and thus produce higher gain
1408 when both are activated.
1409
1410 @item fscale
1411 Set frequency scale used to draw frequency response in video output.
1412 Can be linear or logarithmic. Default is logarithmic.
1413
1414 @item colors
1415 Set color for each channel curve which is going to be displayed in video stream.
1416 This is list of color names separated by space or by '|'.
1417 Unrecognised or missing colors will be replaced by white color.
1418 @end table
1419
1420 @subsection Examples
1421
1422 @itemize
1423 @item
1424 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1425 for first 2 channels using Chebyshev type 1 filter:
1426 @example
1427 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1428 @end example
1429 @end itemize
1430
1431 @subsection Commands
1432
1433 This filter supports the following commands:
1434 @table @option
1435 @item change
1436 Alter existing filter parameters.
1437 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1438
1439 @var{fN} is existing filter number, starting from 0, if no such filter is available
1440 error is returned.
1441 @var{freq} set new frequency parameter.
1442 @var{width} set new width parameter in herz.
1443 @var{gain} set new gain parameter in dB.
1444
1445 Full filter invocation with asendcmd may look like this:
1446 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1447 @end table
1448
1449 @section anull
1450
1451 Pass the audio source unchanged to the output.
1452
1453 @section apad
1454
1455 Pad the end of an audio stream with silence.
1456
1457 This can be used together with @command{ffmpeg} @option{-shortest} to
1458 extend audio streams to the same length as the video stream.
1459
1460 A description of the accepted options follows.
1461
1462 @table @option
1463 @item packet_size
1464 Set silence packet size. Default value is 4096.
1465
1466 @item pad_len
1467 Set the number of samples of silence to add to the end. After the
1468 value is reached, the stream is terminated. This option is mutually
1469 exclusive with @option{whole_len}.
1470
1471 @item whole_len
1472 Set the minimum total number of samples in the output audio stream. If
1473 the value is longer than the input audio length, silence is added to
1474 the end, until the value is reached. This option is mutually exclusive
1475 with @option{pad_len}.
1476 @end table
1477
1478 If neither the @option{pad_len} nor the @option{whole_len} option is
1479 set, the filter will add silence to the end of the input stream
1480 indefinitely.
1481
1482 @subsection Examples
1483
1484 @itemize
1485 @item
1486 Add 1024 samples of silence to the end of the input:
1487 @example
1488 apad=pad_len=1024
1489 @end example
1490
1491 @item
1492 Make sure the audio output will contain at least 10000 samples, pad
1493 the input with silence if required:
1494 @example
1495 apad=whole_len=10000
1496 @end example
1497
1498 @item
1499 Use @command{ffmpeg} to pad the audio input with silence, so that the
1500 video stream will always result the shortest and will be converted
1501 until the end in the output file when using the @option{shortest}
1502 option:
1503 @example
1504 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1505 @end example
1506 @end itemize
1507
1508 @section aphaser
1509 Add a phasing effect to the input audio.
1510
1511 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1512 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1513
1514 A description of the accepted parameters follows.
1515
1516 @table @option
1517 @item in_gain
1518 Set input gain. Default is 0.4.
1519
1520 @item out_gain
1521 Set output gain. Default is 0.74
1522
1523 @item delay
1524 Set delay in milliseconds. Default is 3.0.
1525
1526 @item decay
1527 Set decay. Default is 0.4.
1528
1529 @item speed
1530 Set modulation speed in Hz. Default is 0.5.
1531
1532 @item type
1533 Set modulation type. Default is triangular.
1534
1535 It accepts the following values:
1536 @table @samp
1537 @item triangular, t
1538 @item sinusoidal, s
1539 @end table
1540 @end table
1541
1542 @section apulsator
1543
1544 Audio pulsator is something between an autopanner and a tremolo.
1545 But it can produce funny stereo effects as well. Pulsator changes the volume
1546 of the left and right channel based on a LFO (low frequency oscillator) with
1547 different waveforms and shifted phases.
1548 This filter have the ability to define an offset between left and right
1549 channel. An offset of 0 means that both LFO shapes match each other.
1550 The left and right channel are altered equally - a conventional tremolo.
1551 An offset of 50% means that the shape of the right channel is exactly shifted
1552 in phase (or moved backwards about half of the frequency) - pulsator acts as
1553 an autopanner. At 1 both curves match again. Every setting in between moves the
1554 phase shift gapless between all stages and produces some "bypassing" sounds with
1555 sine and triangle waveforms. The more you set the offset near 1 (starting from
1556 the 0.5) the faster the signal passes from the left to the right speaker.
1557
1558 The filter accepts the following options:
1559
1560 @table @option
1561 @item level_in
1562 Set input gain. By default it is 1. Range is [0.015625 - 64].
1563
1564 @item level_out
1565 Set output gain. By default it is 1. Range is [0.015625 - 64].
1566
1567 @item mode
1568 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
1569 sawup or sawdown. Default is sine.
1570
1571 @item amount
1572 Set modulation. Define how much of original signal is affected by the LFO.
1573
1574 @item offset_l
1575 Set left channel offset. Default is 0. Allowed range is [0 - 1].
1576
1577 @item offset_r
1578 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
1579
1580 @item width
1581 Set pulse width. Default is 1. Allowed range is [0 - 2].
1582
1583 @item timing
1584 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
1585
1586 @item bpm
1587 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
1588 is set to bpm.
1589
1590 @item ms
1591 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
1592 is set to ms.
1593
1594 @item hz
1595 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
1596 if timing is set to hz.
1597 @end table
1598
1599 @anchor{aresample}
1600 @section aresample
1601
1602 Resample the input audio to the specified parameters, using the
1603 libswresample library. If none are specified then the filter will
1604 automatically convert between its input and output.
1605
1606 This filter is also able to stretch/squeeze the audio data to make it match
1607 the timestamps or to inject silence / cut out audio to make it match the
1608 timestamps, do a combination of both or do neither.
1609
1610 The filter accepts the syntax
1611 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
1612 expresses a sample rate and @var{resampler_options} is a list of
1613 @var{key}=@var{value} pairs, separated by ":". See the
1614 @ref{Resampler Options,,"Resampler Options" section in the
1615 ffmpeg-resampler(1) manual,ffmpeg-resampler}
1616 for the complete list of supported options.
1617
1618 @subsection Examples
1619
1620 @itemize
1621 @item
1622 Resample the input audio to 44100Hz:
1623 @example
1624 aresample=44100
1625 @end example
1626
1627 @item
1628 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
1629 samples per second compensation:
1630 @example
1631 aresample=async=1000
1632 @end example
1633 @end itemize
1634
1635 @section areverse
1636
1637 Reverse an audio clip.
1638
1639 Warning: This filter requires memory to buffer the entire clip, so trimming
1640 is suggested.
1641
1642 @subsection Examples
1643
1644 @itemize
1645 @item
1646 Take the first 5 seconds of a clip, and reverse it.
1647 @example
1648 atrim=end=5,areverse
1649 @end example
1650 @end itemize
1651
1652 @section asetnsamples
1653
1654 Set the number of samples per each output audio frame.
1655
1656 The last output packet may contain a different number of samples, as
1657 the filter will flush all the remaining samples when the input audio
1658 signals its end.
1659
1660 The filter accepts the following options:
1661
1662 @table @option
1663
1664 @item nb_out_samples, n
1665 Set the number of frames per each output audio frame. The number is
1666 intended as the number of samples @emph{per each channel}.
1667 Default value is 1024.
1668
1669 @item pad, p
1670 If set to 1, the filter will pad the last audio frame with zeroes, so
1671 that the last frame will contain the same number of samples as the
1672 previous ones. Default value is 1.
1673 @end table
1674
1675 For example, to set the number of per-frame samples to 1234 and
1676 disable padding for the last frame, use:
1677 @example
1678 asetnsamples=n=1234:p=0
1679 @end example
1680
1681 @section asetrate
1682
1683 Set the sample rate without altering the PCM data.
1684 This will result in a change of speed and pitch.
1685
1686 The filter accepts the following options:
1687
1688 @table @option
1689 @item sample_rate, r
1690 Set the output sample rate. Default is 44100 Hz.
1691 @end table
1692
1693 @section ashowinfo
1694
1695 Show a line containing various information for each input audio frame.
1696 The input audio is not modified.
1697
1698 The shown line contains a sequence of key/value pairs of the form
1699 @var{key}:@var{value}.
1700
1701 The following values are shown in the output:
1702
1703 @table @option
1704 @item n
1705 The (sequential) number of the input frame, starting from 0.
1706
1707 @item pts
1708 The presentation timestamp of the input frame, in time base units; the time base
1709 depends on the filter input pad, and is usually 1/@var{sample_rate}.
1710
1711 @item pts_time
1712 The presentation timestamp of the input frame in seconds.
1713
1714 @item pos
1715 position of the frame in the input stream, -1 if this information in
1716 unavailable and/or meaningless (for example in case of synthetic audio)
1717
1718 @item fmt
1719 The sample format.
1720
1721 @item chlayout
1722 The channel layout.
1723
1724 @item rate
1725 The sample rate for the audio frame.
1726
1727 @item nb_samples
1728 The number of samples (per channel) in the frame.
1729
1730 @item checksum
1731 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
1732 audio, the data is treated as if all the planes were concatenated.
1733
1734 @item plane_checksums
1735 A list of Adler-32 checksums for each data plane.
1736 @end table
1737
1738 @anchor{astats}
1739 @section astats
1740
1741 Display time domain statistical information about the audio channels.
1742 Statistics are calculated and displayed for each audio channel and,
1743 where applicable, an overall figure is also given.
1744
1745 It accepts the following option:
1746 @table @option
1747 @item length
1748 Short window length in seconds, used for peak and trough RMS measurement.
1749 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.1 - 10]}.
1750
1751 @item metadata
1752
1753 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
1754 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
1755 disabled.
1756
1757 Available keys for each channel are:
1758 DC_offset
1759 Min_level
1760 Max_level
1761 Min_difference
1762 Max_difference
1763 Mean_difference
1764 RMS_difference
1765 Peak_level
1766 RMS_peak
1767 RMS_trough
1768 Crest_factor
1769 Flat_factor
1770 Peak_count
1771 Bit_depth
1772 Dynamic_range
1773
1774 and for Overall:
1775 DC_offset
1776 Min_level
1777 Max_level
1778 Min_difference
1779 Max_difference
1780 Mean_difference
1781 RMS_difference
1782 Peak_level
1783 RMS_level
1784 RMS_peak
1785 RMS_trough
1786 Flat_factor
1787 Peak_count
1788 Bit_depth
1789 Number_of_samples
1790
1791 For example full key look like this @code{lavfi.astats.1.DC_offset} or
1792 this @code{lavfi.astats.Overall.Peak_count}.
1793
1794 For description what each key means read below.
1795
1796 @item reset
1797 Set number of frame after which stats are going to be recalculated.
1798 Default is disabled.
1799 @end table
1800
1801 A description of each shown parameter follows:
1802
1803 @table @option
1804 @item DC offset
1805 Mean amplitude displacement from zero.
1806
1807 @item Min level
1808 Minimal sample level.
1809
1810 @item Max level
1811 Maximal sample level.
1812
1813 @item Min difference
1814 Minimal difference between two consecutive samples.
1815
1816 @item Max difference
1817 Maximal difference between two consecutive samples.
1818
1819 @item Mean difference
1820 Mean difference between two consecutive samples.
1821 The average of each difference between two consecutive samples.
1822
1823 @item RMS difference
1824 Root Mean Square difference between two consecutive samples.
1825
1826 @item Peak level dB
1827 @item RMS level dB
1828 Standard peak and RMS level measured in dBFS.
1829
1830 @item RMS peak dB
1831 @item RMS trough dB
1832 Peak and trough values for RMS level measured over a short window.
1833
1834 @item Crest factor
1835 Standard ratio of peak to RMS level (note: not in dB).
1836
1837 @item Flat factor
1838 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
1839 (i.e. either @var{Min level} or @var{Max level}).
1840
1841 @item Peak count
1842 Number of occasions (not the number of samples) that the signal attained either
1843 @var{Min level} or @var{Max level}.
1844
1845 @item Bit depth
1846 Overall bit depth of audio. Number of bits used for each sample.
1847
1848 @item Dynamic range
1849 Measured dynamic range of audio in dB.
1850 @end table
1851
1852 @section atempo
1853
1854 Adjust audio tempo.
1855
1856 The filter accepts exactly one parameter, the audio tempo. If not
1857 specified then the filter will assume nominal 1.0 tempo. Tempo must
1858 be in the [0.5, 2.0] range.
1859
1860 @subsection Examples
1861
1862 @itemize
1863 @item
1864 Slow down audio to 80% tempo:
1865 @example
1866 atempo=0.8
1867 @end example
1868
1869 @item
1870 To speed up audio to 125% tempo:
1871 @example
1872 atempo=1.25
1873 @end example
1874 @end itemize
1875
1876 @section atrim
1877
1878 Trim the input so that the output contains one continuous subpart of the input.
1879
1880 It accepts the following parameters:
1881 @table @option
1882 @item start
1883 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
1884 sample with the timestamp @var{start} will be the first sample in the output.
1885
1886 @item end
1887 Specify time of the first audio sample that will be dropped, i.e. the
1888 audio sample immediately preceding the one with the timestamp @var{end} will be
1889 the last sample in the output.
1890
1891 @item start_pts
1892 Same as @var{start}, except this option sets the start timestamp in samples
1893 instead of seconds.
1894
1895 @item end_pts
1896 Same as @var{end}, except this option sets the end timestamp in samples instead
1897 of seconds.
1898
1899 @item duration
1900 The maximum duration of the output in seconds.
1901
1902 @item start_sample
1903 The number of the first sample that should be output.
1904
1905 @item end_sample
1906 The number of the first sample that should be dropped.
1907 @end table
1908
1909 @option{start}, @option{end}, and @option{duration} are expressed as time
1910 duration specifications; see
1911 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
1912
1913 Note that the first two sets of the start/end options and the @option{duration}
1914 option look at the frame timestamp, while the _sample options simply count the
1915 samples that pass through the filter. So start/end_pts and start/end_sample will
1916 give different results when the timestamps are wrong, inexact or do not start at
1917 zero. Also note that this filter does not modify the timestamps. If you wish
1918 to have the output timestamps start at zero, insert the asetpts filter after the
1919 atrim filter.
1920
1921 If multiple start or end options are set, this filter tries to be greedy and
1922 keep all samples that match at least one of the specified constraints. To keep
1923 only the part that matches all the constraints at once, chain multiple atrim
1924 filters.
1925
1926 The defaults are such that all the input is kept. So it is possible to set e.g.
1927 just the end values to keep everything before the specified time.
1928
1929 Examples:
1930 @itemize
1931 @item
1932 Drop everything except the second minute of input:
1933 @example
1934 ffmpeg -i INPUT -af atrim=60:120
1935 @end example
1936
1937 @item
1938 Keep only the first 1000 samples:
1939 @example
1940 ffmpeg -i INPUT -af atrim=end_sample=1000
1941 @end example
1942
1943 @end itemize
1944
1945 @section bandpass
1946
1947 Apply a two-pole Butterworth band-pass filter with central
1948 frequency @var{frequency}, and (3dB-point) band-width width.
1949 The @var{csg} option selects a constant skirt gain (peak gain = Q)
1950 instead of the default: constant 0dB peak gain.
1951 The filter roll off at 6dB per octave (20dB per decade).
1952
1953 The filter accepts the following options:
1954
1955 @table @option
1956 @item frequency, f
1957 Set the filter's central frequency. Default is @code{3000}.
1958
1959 @item csg
1960 Constant skirt gain if set to 1. Defaults to 0.
1961
1962 @item width_type, t
1963 Set method to specify band-width of filter.
1964 @table @option
1965 @item h
1966 Hz
1967 @item q
1968 Q-Factor
1969 @item o
1970 octave
1971 @item s
1972 slope
1973 @item k
1974 kHz
1975 @end table
1976
1977 @item width, w
1978 Specify the band-width of a filter in width_type units.
1979
1980 @item channels, c
1981 Specify which channels to filter, by default all available are filtered.
1982 @end table
1983
1984 @subsection Commands
1985
1986 This filter supports the following commands:
1987 @table @option
1988 @item frequency, f
1989 Change bandpass frequency.
1990 Syntax for the command is : "@var{frequency}"
1991
1992 @item width_type, t
1993 Change bandpass width_type.
1994 Syntax for the command is : "@var{width_type}"
1995
1996 @item width, w
1997 Change bandpass width.
1998 Syntax for the command is : "@var{width}"
1999 @end table
2000
2001 @section bandreject
2002
2003 Apply a two-pole Butterworth band-reject filter with central
2004 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2005 The filter roll off at 6dB per octave (20dB per decade).
2006
2007 The filter accepts the following options:
2008
2009 @table @option
2010 @item frequency, f
2011 Set the filter's central frequency. Default is @code{3000}.
2012
2013 @item width_type, t
2014 Set method to specify band-width of filter.
2015 @table @option
2016 @item h
2017 Hz
2018 @item q
2019 Q-Factor
2020 @item o
2021 octave
2022 @item s
2023 slope
2024 @item k
2025 kHz
2026 @end table
2027
2028 @item width, w
2029 Specify the band-width of a filter in width_type units.
2030
2031 @item channels, c
2032 Specify which channels to filter, by default all available are filtered.
2033 @end table
2034
2035 @subsection Commands
2036
2037 This filter supports the following commands:
2038 @table @option
2039 @item frequency, f
2040 Change bandreject frequency.
2041 Syntax for the command is : "@var{frequency}"
2042
2043 @item width_type, t
2044 Change bandreject width_type.
2045 Syntax for the command is : "@var{width_type}"
2046
2047 @item width, w
2048 Change bandreject width.
2049 Syntax for the command is : "@var{width}"
2050 @end table
2051
2052 @section bass
2053
2054 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2055 shelving filter with a response similar to that of a standard
2056 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2057
2058 The filter accepts the following options:
2059
2060 @table @option
2061 @item gain, g
2062 Give the gain at 0 Hz. Its useful range is about -20
2063 (for a large cut) to +20 (for a large boost).
2064 Beware of clipping when using a positive gain.
2065
2066 @item frequency, f
2067 Set the filter's central frequency and so can be used
2068 to extend or reduce the frequency range to be boosted or cut.
2069 The default value is @code{100} Hz.
2070
2071 @item width_type, t
2072 Set method to specify band-width of filter.
2073 @table @option
2074 @item h
2075 Hz
2076 @item q
2077 Q-Factor
2078 @item o
2079 octave
2080 @item s
2081 slope
2082 @item k
2083 kHz
2084 @end table
2085
2086 @item width, w
2087 Determine how steep is the filter's shelf transition.
2088
2089 @item channels, c
2090 Specify which channels to filter, by default all available are filtered.
2091 @end table
2092
2093 @subsection Commands
2094
2095 This filter supports the following commands:
2096 @table @option
2097 @item frequency, f
2098 Change bass frequency.
2099 Syntax for the command is : "@var{frequency}"
2100
2101 @item width_type, t
2102 Change bass width_type.
2103 Syntax for the command is : "@var{width_type}"
2104
2105 @item width, w
2106 Change bass width.
2107 Syntax for the command is : "@var{width}"
2108
2109 @item gain, g
2110 Change bass gain.
2111 Syntax for the command is : "@var{gain}"
2112 @end table
2113
2114 @section biquad
2115
2116 Apply a biquad IIR filter with the given coefficients.
2117 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2118 are the numerator and denominator coefficients respectively.
2119 and @var{channels}, @var{c} specify which channels to filter, by default all
2120 available are filtered.
2121
2122 @subsection Commands
2123
2124 This filter supports the following commands:
2125 @table @option
2126 @item a0
2127 @item a1
2128 @item a2
2129 @item b0
2130 @item b1
2131 @item b2
2132 Change biquad parameter.
2133 Syntax for the command is : "@var{value}"
2134 @end table
2135
2136 @section bs2b
2137 Bauer stereo to binaural transformation, which improves headphone listening of
2138 stereo audio records.
2139
2140 To enable compilation of this filter you need to configure FFmpeg with
2141 @code{--enable-libbs2b}.
2142
2143 It accepts the following parameters:
2144 @table @option
2145
2146 @item profile
2147 Pre-defined crossfeed level.
2148 @table @option
2149
2150 @item default
2151 Default level (fcut=700, feed=50).
2152
2153 @item cmoy
2154 Chu Moy circuit (fcut=700, feed=60).
2155
2156 @item jmeier
2157 Jan Meier circuit (fcut=650, feed=95).
2158
2159 @end table
2160
2161 @item fcut
2162 Cut frequency (in Hz).
2163
2164 @item feed
2165 Feed level (in Hz).
2166
2167 @end table
2168
2169 @section channelmap
2170
2171 Remap input channels to new locations.
2172
2173 It accepts the following parameters:
2174 @table @option
2175 @item map
2176 Map channels from input to output. The argument is a '|'-separated list of
2177 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2178 @var{in_channel} form. @var{in_channel} can be either the name of the input
2179 channel (e.g. FL for front left) or its index in the input channel layout.
2180 @var{out_channel} is the name of the output channel or its index in the output
2181 channel layout. If @var{out_channel} is not given then it is implicitly an
2182 index, starting with zero and increasing by one for each mapping.
2183
2184 @item channel_layout
2185 The channel layout of the output stream.
2186 @end table
2187
2188 If no mapping is present, the filter will implicitly map input channels to
2189 output channels, preserving indices.
2190
2191 For example, assuming a 5.1+downmix input MOV file,
2192 @example
2193 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2194 @end example
2195 will create an output WAV file tagged as stereo from the downmix channels of
2196 the input.
2197
2198 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2199 @example
2200 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2201 @end example
2202
2203 @section channelsplit
2204
2205 Split each channel from an input audio stream into a separate output stream.
2206
2207 It accepts the following parameters:
2208 @table @option
2209 @item channel_layout
2210 The channel layout of the input stream. The default is "stereo".
2211 @end table
2212
2213 For example, assuming a stereo input MP3 file,
2214 @example
2215 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2216 @end example
2217 will create an output Matroska file with two audio streams, one containing only
2218 the left channel and the other the right channel.
2219
2220 Split a 5.1 WAV file into per-channel files:
2221 @example
2222 ffmpeg -i in.wav -filter_complex
2223 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2224 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2225 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2226 side_right.wav
2227 @end example
2228
2229 @section chorus
2230 Add a chorus effect to the audio.
2231
2232 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2233
2234 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2235 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2236 The modulation depth defines the range the modulated delay is played before or after
2237 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2238 sound tuned around the original one, like in a chorus where some vocals are slightly
2239 off key.
2240
2241 It accepts the following parameters:
2242 @table @option
2243 @item in_gain
2244 Set input gain. Default is 0.4.
2245
2246 @item out_gain
2247 Set output gain. Default is 0.4.
2248
2249 @item delays
2250 Set delays. A typical delay is around 40ms to 60ms.
2251
2252 @item decays
2253 Set decays.
2254
2255 @item speeds
2256 Set speeds.
2257
2258 @item depths
2259 Set depths.
2260 @end table
2261
2262 @subsection Examples
2263
2264 @itemize
2265 @item
2266 A single delay:
2267 @example
2268 chorus=0.7:0.9:55:0.4:0.25:2
2269 @end example
2270
2271 @item
2272 Two delays:
2273 @example
2274 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2275 @end example
2276
2277 @item
2278 Fuller sounding chorus with three delays:
2279 @example
2280 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
2281 @end example
2282 @end itemize
2283
2284 @section compand
2285 Compress or expand the audio's dynamic range.
2286
2287 It accepts the following parameters:
2288
2289 @table @option
2290
2291 @item attacks
2292 @item decays
2293 A list of times in seconds for each channel over which the instantaneous level
2294 of the input signal is averaged to determine its volume. @var{attacks} refers to
2295 increase of volume and @var{decays} refers to decrease of volume. For most
2296 situations, the attack time (response to the audio getting louder) should be
2297 shorter than the decay time, because the human ear is more sensitive to sudden
2298 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2299 a typical value for decay is 0.8 seconds.
2300 If specified number of attacks & decays is lower than number of channels, the last
2301 set attack/decay will be used for all remaining channels.
2302
2303 @item points
2304 A list of points for the transfer function, specified in dB relative to the
2305 maximum possible signal amplitude. Each key points list must be defined using
2306 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2307 @code{x0/y0 x1/y1 x2/y2 ....}
2308
2309 The input values must be in strictly increasing order but the transfer function
2310 does not have to be monotonically rising. The point @code{0/0} is assumed but
2311 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2312 function are @code{-70/-70|-60/-20|1/0}.
2313
2314 @item soft-knee
2315 Set the curve radius in dB for all joints. It defaults to 0.01.
2316
2317 @item gain
2318 Set the additional gain in dB to be applied at all points on the transfer
2319 function. This allows for easy adjustment of the overall gain.
2320 It defaults to 0.
2321
2322 @item volume
2323 Set an initial volume, in dB, to be assumed for each channel when filtering
2324 starts. This permits the user to supply a nominal level initially, so that, for
2325 example, a very large gain is not applied to initial signal levels before the
2326 companding has begun to operate. A typical value for audio which is initially
2327 quiet is -90 dB. It defaults to 0.
2328
2329 @item delay
2330 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2331 delayed before being fed to the volume adjuster. Specifying a delay
2332 approximately equal to the attack/decay times allows the filter to effectively
2333 operate in predictive rather than reactive mode. It defaults to 0.
2334
2335 @end table
2336
2337 @subsection Examples
2338
2339 @itemize
2340 @item
2341 Make music with both quiet and loud passages suitable for listening to in a
2342 noisy environment:
2343 @example
2344 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2345 @end example
2346
2347 Another example for audio with whisper and explosion parts:
2348 @example
2349 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2350 @end example
2351
2352 @item
2353 A noise gate for when the noise is at a lower level than the signal:
2354 @example
2355 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2356 @end example
2357
2358 @item
2359 Here is another noise gate, this time for when the noise is at a higher level
2360 than the signal (making it, in some ways, similar to squelch):
2361 @example
2362 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
2363 @end example
2364
2365 @item
2366 2:1 compression starting at -6dB:
2367 @example
2368 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2369 @end example
2370
2371 @item
2372 2:1 compression starting at -9dB:
2373 @example
2374 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
2375 @end example
2376
2377 @item
2378 2:1 compression starting at -12dB:
2379 @example
2380 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
2381 @end example
2382
2383 @item
2384 2:1 compression starting at -18dB:
2385 @example
2386 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
2387 @end example
2388
2389 @item
2390 3:1 compression starting at -15dB:
2391 @example
2392 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
2393 @end example
2394
2395 @item
2396 Compressor/Gate:
2397 @example
2398 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
2399 @end example
2400
2401 @item
2402 Expander:
2403 @example
2404 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
2405 @end example
2406
2407 @item
2408 Hard limiter at -6dB:
2409 @example
2410 compand=attacks=0:points=-80/-80|-6/-6|20/-6
2411 @end example
2412
2413 @item
2414 Hard limiter at -12dB:
2415 @example
2416 compand=attacks=0:points=-80/-80|-12/-12|20/-12
2417 @end example
2418
2419 @item
2420 Hard noise gate at -35 dB:
2421 @example
2422 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
2423 @end example
2424
2425 @item
2426 Soft limiter:
2427 @example
2428 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
2429 @end example
2430 @end itemize
2431
2432 @section compensationdelay
2433
2434 Compensation Delay Line is a metric based delay to compensate differing
2435 positions of microphones or speakers.
2436
2437 For example, you have recorded guitar with two microphones placed in
2438 different location. Because the front of sound wave has fixed speed in
2439 normal conditions, the phasing of microphones can vary and depends on
2440 their location and interposition. The best sound mix can be achieved when
2441 these microphones are in phase (synchronized). Note that distance of
2442 ~30 cm between microphones makes one microphone to capture signal in
2443 antiphase to another microphone. That makes the final mix sounding moody.
2444 This filter helps to solve phasing problems by adding different delays
2445 to each microphone track and make them synchronized.
2446
2447 The best result can be reached when you take one track as base and
2448 synchronize other tracks one by one with it.
2449 Remember that synchronization/delay tolerance depends on sample rate, too.
2450 Higher sample rates will give more tolerance.
2451
2452 It accepts the following parameters:
2453
2454 @table @option
2455 @item mm
2456 Set millimeters distance. This is compensation distance for fine tuning.
2457 Default is 0.
2458
2459 @item cm
2460 Set cm distance. This is compensation distance for tightening distance setup.
2461 Default is 0.
2462
2463 @item m
2464 Set meters distance. This is compensation distance for hard distance setup.
2465 Default is 0.
2466
2467 @item dry
2468 Set dry amount. Amount of unprocessed (dry) signal.
2469 Default is 0.
2470
2471 @item wet
2472 Set wet amount. Amount of processed (wet) signal.
2473 Default is 1.
2474
2475 @item temp
2476 Set temperature degree in Celsius. This is the temperature of the environment.
2477 Default is 20.
2478 @end table
2479
2480 @section crossfeed
2481 Apply headphone crossfeed filter.
2482
2483 Crossfeed is the process of blending the left and right channels of stereo
2484 audio recording.
2485 It is mainly used to reduce extreme stereo separation of low frequencies.
2486
2487 The intent is to produce more speaker like sound to the listener.
2488
2489 The filter accepts the following options:
2490
2491 @table @option
2492 @item strength
2493 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
2494 This sets gain of low shelf filter for side part of stereo image.
2495 Default is -6dB. Max allowed is -30db when strength is set to 1.
2496
2497 @item range
2498 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
2499 This sets cut off frequency of low shelf filter. Default is cut off near
2500 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
2501
2502 @item level_in
2503 Set input gain. Default is 0.9.
2504
2505 @item level_out
2506 Set output gain. Default is 1.
2507 @end table
2508
2509 @section crystalizer
2510 Simple algorithm to expand audio dynamic range.
2511
2512 The filter accepts the following options:
2513
2514 @table @option
2515 @item i
2516 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
2517 (unchanged sound) to 10.0 (maximum effect).
2518
2519 @item c
2520 Enable clipping. By default is enabled.
2521 @end table
2522
2523 @section dcshift
2524 Apply a DC shift to the audio.
2525
2526 This can be useful to remove a DC offset (caused perhaps by a hardware problem
2527 in the recording chain) from the audio. The effect of a DC offset is reduced
2528 headroom and hence volume. The @ref{astats} filter can be used to determine if
2529 a signal has a DC offset.
2530
2531 @table @option
2532 @item shift
2533 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
2534 the audio.
2535
2536 @item limitergain
2537 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
2538 used to prevent clipping.
2539 @end table
2540
2541 @section drmeter
2542 Measure audio dynamic range.
2543
2544 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
2545 is found in transition material. And anything less that 8 have very poor dynamics
2546 and is very compressed.
2547
2548 The filter accepts the following options:
2549
2550 @table @option
2551 @item length
2552 Set window length in seconds used to split audio into segments of equal length.
2553 Default is 3 seconds.
2554 @end table
2555
2556 @section dynaudnorm
2557 Dynamic Audio Normalizer.
2558
2559 This filter applies a certain amount of gain to the input audio in order
2560 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
2561 contrast to more "simple" normalization algorithms, the Dynamic Audio
2562 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
2563 This allows for applying extra gain to the "quiet" sections of the audio
2564 while avoiding distortions or clipping the "loud" sections. In other words:
2565 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
2566 sections, in the sense that the volume of each section is brought to the
2567 same target level. Note, however, that the Dynamic Audio Normalizer achieves
2568 this goal *without* applying "dynamic range compressing". It will retain 100%
2569 of the dynamic range *within* each section of the audio file.
2570
2571 @table @option
2572 @item f
2573 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
2574 Default is 500 milliseconds.
2575 The Dynamic Audio Normalizer processes the input audio in small chunks,
2576 referred to as frames. This is required, because a peak magnitude has no
2577 meaning for just a single sample value. Instead, we need to determine the
2578 peak magnitude for a contiguous sequence of sample values. While a "standard"
2579 normalizer would simply use the peak magnitude of the complete file, the
2580 Dynamic Audio Normalizer determines the peak magnitude individually for each
2581 frame. The length of a frame is specified in milliseconds. By default, the
2582 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
2583 been found to give good results with most files.
2584 Note that the exact frame length, in number of samples, will be determined
2585 automatically, based on the sampling rate of the individual input audio file.
2586
2587 @item g
2588 Set the Gaussian filter window size. In range from 3 to 301, must be odd
2589 number. Default is 31.
2590 Probably the most important parameter of the Dynamic Audio Normalizer is the
2591 @code{window size} of the Gaussian smoothing filter. The filter's window size
2592 is specified in frames, centered around the current frame. For the sake of
2593 simplicity, this must be an odd number. Consequently, the default value of 31
2594 takes into account the current frame, as well as the 15 preceding frames and
2595 the 15 subsequent frames. Using a larger window results in a stronger
2596 smoothing effect and thus in less gain variation, i.e. slower gain
2597 adaptation. Conversely, using a smaller window results in a weaker smoothing
2598 effect and thus in more gain variation, i.e. faster gain adaptation.
2599 In other words, the more you increase this value, the more the Dynamic Audio
2600 Normalizer will behave like a "traditional" normalization filter. On the
2601 contrary, the more you decrease this value, the more the Dynamic Audio
2602 Normalizer will behave like a dynamic range compressor.
2603
2604 @item p
2605 Set the target peak value. This specifies the highest permissible magnitude
2606 level for the normalized audio input. This filter will try to approach the
2607 target peak magnitude as closely as possible, but at the same time it also
2608 makes sure that the normalized signal will never exceed the peak magnitude.
2609 A frame's maximum local gain factor is imposed directly by the target peak
2610 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
2611 It is not recommended to go above this value.
2612
2613 @item m
2614 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
2615 The Dynamic Audio Normalizer determines the maximum possible (local) gain
2616 factor for each input frame, i.e. the maximum gain factor that does not
2617 result in clipping or distortion. The maximum gain factor is determined by
2618 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
2619 additionally bounds the frame's maximum gain factor by a predetermined
2620 (global) maximum gain factor. This is done in order to avoid excessive gain
2621 factors in "silent" or almost silent frames. By default, the maximum gain
2622 factor is 10.0, For most inputs the default value should be sufficient and
2623 it usually is not recommended to increase this value. Though, for input
2624 with an extremely low overall volume level, it may be necessary to allow even
2625 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
2626 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
2627 Instead, a "sigmoid" threshold function will be applied. This way, the
2628 gain factors will smoothly approach the threshold value, but never exceed that
2629 value.
2630
2631 @item r
2632 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
2633 By default, the Dynamic Audio Normalizer performs "peak" normalization.
2634 This means that the maximum local gain factor for each frame is defined
2635 (only) by the frame's highest magnitude sample. This way, the samples can
2636 be amplified as much as possible without exceeding the maximum signal
2637 level, i.e. without clipping. Optionally, however, the Dynamic Audio
2638 Normalizer can also take into account the frame's root mean square,
2639 abbreviated RMS. In electrical engineering, the RMS is commonly used to
2640 determine the power of a time-varying signal. It is therefore considered
2641 that the RMS is a better approximation of the "perceived loudness" than
2642 just looking at the signal's peak magnitude. Consequently, by adjusting all
2643 frames to a constant RMS value, a uniform "perceived loudness" can be
2644 established. If a target RMS value has been specified, a frame's local gain
2645 factor is defined as the factor that would result in exactly that RMS value.
2646 Note, however, that the maximum local gain factor is still restricted by the
2647 frame's highest magnitude sample, in order to prevent clipping.
2648
2649 @item n
2650 Enable channels coupling. By default is enabled.
2651 By default, the Dynamic Audio Normalizer will amplify all channels by the same
2652 amount. This means the same gain factor will be applied to all channels, i.e.
2653 the maximum possible gain factor is determined by the "loudest" channel.
2654 However, in some recordings, it may happen that the volume of the different
2655 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
2656 In this case, this option can be used to disable the channel coupling. This way,
2657 the gain factor will be determined independently for each channel, depending
2658 only on the individual channel's highest magnitude sample. This allows for
2659 harmonizing the volume of the different channels.
2660
2661 @item c
2662 Enable DC bias correction. By default is disabled.
2663 An audio signal (in the time domain) is a sequence of sample values.
2664 In the Dynamic Audio Normalizer these sample values are represented in the
2665 -1.0 to 1.0 range, regardless of the original input format. Normally, the
2666 audio signal, or "waveform", should be centered around the zero point.
2667 That means if we calculate the mean value of all samples in a file, or in a
2668 single frame, then the result should be 0.0 or at least very close to that
2669 value. If, however, there is a significant deviation of the mean value from
2670 0.0, in either positive or negative direction, this is referred to as a
2671 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
2672 Audio Normalizer provides optional DC bias correction.
2673 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
2674 the mean value, or "DC correction" offset, of each input frame and subtract
2675 that value from all of the frame's sample values which ensures those samples
2676 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
2677 boundaries, the DC correction offset values will be interpolated smoothly
2678 between neighbouring frames.
2679
2680 @item b
2681 Enable alternative boundary mode. By default is disabled.
2682 The Dynamic Audio Normalizer takes into account a certain neighbourhood
2683 around each frame. This includes the preceding frames as well as the
2684 subsequent frames. However, for the "boundary" frames, located at the very
2685 beginning and at the very end of the audio file, not all neighbouring
2686 frames are available. In particular, for the first few frames in the audio
2687 file, the preceding frames are not known. And, similarly, for the last few
2688 frames in the audio file, the subsequent frames are not known. Thus, the
2689 question arises which gain factors should be assumed for the missing frames
2690 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
2691 to deal with this situation. The default boundary mode assumes a gain factor
2692 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
2693 "fade out" at the beginning and at the end of the input, respectively.
2694
2695 @item s
2696 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
2697 By default, the Dynamic Audio Normalizer does not apply "traditional"
2698 compression. This means that signal peaks will not be pruned and thus the
2699 full dynamic range will be retained within each local neighbourhood. However,
2700 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
2701 normalization algorithm with a more "traditional" compression.
2702 For this purpose, the Dynamic Audio Normalizer provides an optional compression
2703 (thresholding) function. If (and only if) the compression feature is enabled,
2704 all input frames will be processed by a soft knee thresholding function prior
2705 to the actual normalization process. Put simply, the thresholding function is
2706 going to prune all samples whose magnitude exceeds a certain threshold value.
2707 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
2708 value. Instead, the threshold value will be adjusted for each individual
2709 frame.
2710 In general, smaller parameters result in stronger compression, and vice versa.
2711 Values below 3.0 are not recommended, because audible distortion may appear.
2712 @end table
2713
2714 @section earwax
2715
2716 Make audio easier to listen to on headphones.
2717
2718 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
2719 so that when listened to on headphones the stereo image is moved from
2720 inside your head (standard for headphones) to outside and in front of
2721 the listener (standard for speakers).
2722
2723 Ported from SoX.
2724
2725 @section equalizer
2726
2727 Apply a two-pole peaking equalisation (EQ) filter. With this
2728 filter, the signal-level at and around a selected frequency can
2729 be increased or decreased, whilst (unlike bandpass and bandreject
2730 filters) that at all other frequencies is unchanged.
2731
2732 In order to produce complex equalisation curves, this filter can
2733 be given several times, each with a different central frequency.
2734
2735 The filter accepts the following options:
2736
2737 @table @option
2738 @item frequency, f
2739 Set the filter's central frequency in Hz.
2740
2741 @item width_type, t
2742 Set method to specify band-width of filter.
2743 @table @option
2744 @item h
2745 Hz
2746 @item q
2747 Q-Factor
2748 @item o
2749 octave
2750 @item s
2751 slope
2752 @item k
2753 kHz
2754 @end table
2755
2756 @item width, w
2757 Specify the band-width of a filter in width_type units.
2758
2759 @item gain, g
2760 Set the required gain or attenuation in dB.
2761 Beware of clipping when using a positive gain.
2762
2763 @item channels, c
2764 Specify which channels to filter, by default all available are filtered.
2765 @end table
2766
2767 @subsection Examples
2768 @itemize
2769 @item
2770 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
2771 @example
2772 equalizer=f=1000:t=h:width=200:g=-10
2773 @end example
2774
2775 @item
2776 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
2777 @example
2778 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
2779 @end example
2780 @end itemize
2781
2782 @subsection Commands
2783
2784 This filter supports the following commands:
2785 @table @option
2786 @item frequency, f
2787 Change equalizer frequency.
2788 Syntax for the command is : "@var{frequency}"
2789
2790 @item width_type, t
2791 Change equalizer width_type.
2792 Syntax for the command is : "@var{width_type}"
2793
2794 @item width, w
2795 Change equalizer width.
2796 Syntax for the command is : "@var{width}"
2797
2798 @item gain, g
2799 Change equalizer gain.
2800 Syntax for the command is : "@var{gain}"
2801 @end table
2802
2803 @section extrastereo
2804
2805 Linearly increases the difference between left and right channels which
2806 adds some sort of "live" effect to playback.
2807
2808 The filter accepts the following options:
2809
2810 @table @option
2811 @item m
2812 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
2813 (average of both channels), with 1.0 sound will be unchanged, with
2814 -1.0 left and right channels will be swapped.
2815
2816 @item c
2817 Enable clipping. By default is enabled.
2818 @end table
2819
2820 @section firequalizer
2821 Apply FIR Equalization using arbitrary frequency response.
2822
2823 The filter accepts the following option:
2824
2825 @table @option
2826 @item gain
2827 Set gain curve equation (in dB). The expression can contain variables:
2828 @table @option
2829 @item f
2830 the evaluated frequency
2831 @item sr
2832 sample rate
2833 @item ch
2834 channel number, set to 0 when multichannels evaluation is disabled
2835 @item chid
2836 channel id, see libavutil/channel_layout.h, set to the first channel id when
2837 multichannels evaluation is disabled
2838 @item chs
2839 number of channels
2840 @item chlayout
2841 channel_layout, see libavutil/channel_layout.h
2842
2843 @end table
2844 and functions:
2845 @table @option
2846 @item gain_interpolate(f)
2847 interpolate gain on frequency f based on gain_entry
2848 @item cubic_interpolate(f)
2849 same as gain_interpolate, but smoother
2850 @end table
2851 This option is also available as command. Default is @code{gain_interpolate(f)}.
2852
2853 @item gain_entry
2854 Set gain entry for gain_interpolate function. The expression can
2855 contain functions:
2856 @table @option
2857 @item entry(f, g)
2858 store gain entry at frequency f with value g
2859 @end table
2860 This option is also available as command.
2861
2862 @item delay
2863 Set filter delay in seconds. Higher value means more accurate.
2864 Default is @code{0.01}.
2865
2866 @item accuracy
2867 Set filter accuracy in Hz. Lower value means more accurate.
2868 Default is @code{5}.
2869
2870 @item wfunc
2871 Set window function. Acceptable values are:
2872 @table @option
2873 @item rectangular
2874 rectangular window, useful when gain curve is already smooth
2875 @item hann
2876 hann window (default)
2877 @item hamming
2878 hamming window
2879 @item blackman
2880 blackman window
2881 @item nuttall3
2882 3-terms continuous 1st derivative nuttall window
2883 @item mnuttall3
2884 minimum 3-terms discontinuous nuttall window
2885 @item nuttall
2886 4-terms continuous 1st derivative nuttall window
2887 @item bnuttall
2888 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
2889 @item bharris
2890 blackman-harris window
2891 @item tukey
2892 tukey window
2893 @end table
2894
2895 @item fixed
2896 If enabled, use fixed number of audio samples. This improves speed when
2897 filtering with large delay. Default is disabled.
2898
2899 @item multi
2900 Enable multichannels evaluation on gain. Default is disabled.
2901
2902 @item zero_phase
2903 Enable zero phase mode by subtracting timestamp to compensate delay.
2904 Default is disabled.
2905
2906 @item scale
2907 Set scale used by gain. Acceptable values are:
2908 @table @option
2909 @item linlin
2910 linear frequency, linear gain
2911 @item linlog
2912 linear frequency, logarithmic (in dB) gain (default)
2913 @item loglin
2914 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
2915 @item loglog
2916 logarithmic frequency, logarithmic gain
2917 @end table
2918
2919 @item dumpfile
2920 Set file for dumping, suitable for gnuplot.
2921
2922 @item dumpscale
2923 Set scale for dumpfile. Acceptable values are same with scale option.
2924 Default is linlog.
2925
2926 @item fft2
2927 Enable 2-channel convolution using complex FFT. This improves speed significantly.
2928 Default is disabled.
2929
2930 @item min_phase
2931 Enable minimum phase impulse response. Default is disabled.
2932 @end table
2933
2934 @subsection Examples
2935 @itemize
2936 @item
2937 lowpass at 1000 Hz:
2938 @example
2939 firequalizer=gain='if(lt(f,1000), 0, -INF)'
2940 @end example
2941 @item
2942 lowpass at 1000 Hz with gain_entry:
2943 @example
2944 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
2945 @end example
2946 @item
2947 custom equalization:
2948 @example
2949 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
2950 @end example
2951 @item
2952 higher delay with zero phase to compensate delay:
2953 @example
2954 firequalizer=delay=0.1:fixed=on:zero_phase=on
2955 @end example
2956 @item
2957 lowpass on left channel, highpass on right channel:
2958 @example
2959 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
2960 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
2961 @end example
2962 @end itemize
2963
2964 @section flanger
2965 Apply a flanging effect to the audio.
2966
2967 The filter accepts the following options:
2968
2969 @table @option
2970 @item delay
2971 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
2972
2973 @item depth
2974 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
2975
2976 @item regen
2977 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
2978 Default value is 0.
2979
2980 @item width
2981 Set percentage of delayed signal mixed with original. Range from 0 to 100.
2982 Default value is 71.
2983
2984 @item speed
2985 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
2986
2987 @item shape
2988 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
2989 Default value is @var{sinusoidal}.
2990
2991 @item phase
2992 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
2993 Default value is 25.
2994
2995 @item interp
2996 Set delay-line interpolation, @var{linear} or @var{quadratic}.
2997 Default is @var{linear}.
2998 @end table
2999
3000 @section haas
3001 Apply Haas effect to audio.
3002
3003 Note that this makes most sense to apply on mono signals.
3004 With this filter applied to mono signals it give some directionality and
3005 stretches its stereo image.
3006
3007 The filter accepts the following options:
3008
3009 @table @option
3010 @item level_in
3011 Set input level. By default is @var{1}, or 0dB
3012
3013 @item level_out
3014 Set output level. By default is @var{1}, or 0dB.
3015
3016 @item side_gain
3017 Set gain applied to side part of signal. By default is @var{1}.
3018
3019 @item middle_source
3020 Set kind of middle source. Can be one of the following:
3021
3022 @table @samp
3023 @item left
3024 Pick left channel.
3025
3026 @item right
3027 Pick right channel.
3028
3029 @item mid
3030 Pick middle part signal of stereo image.
3031
3032 @item side
3033 Pick side part signal of stereo image.
3034 @end table
3035
3036 @item middle_phase
3037 Change middle phase. By default is disabled.
3038
3039 @item left_delay
3040 Set left channel delay. By default is @var{2.05} milliseconds.
3041
3042 @item left_balance
3043 Set left channel balance. By default is @var{-1}.
3044
3045 @item left_gain
3046 Set left channel gain. By default is @var{1}.
3047
3048 @item left_phase
3049 Change left phase. By default is disabled.
3050
3051 @item right_delay
3052 Set right channel delay. By defaults is @var{2.12} milliseconds.
3053
3054 @item right_balance
3055 Set right channel balance. By default is @var{1}.
3056
3057 @item right_gain
3058 Set right channel gain. By default is @var{1}.
3059
3060 @item right_phase
3061 Change right phase. By default is enabled.
3062 @end table
3063
3064 @section hdcd
3065
3066 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3067 embedded HDCD codes is expanded into a 20-bit PCM stream.
3068
3069 The filter supports the Peak Extend and Low-level Gain Adjustment features
3070 of HDCD, and detects the Transient Filter flag.
3071
3072 @example
3073 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3074 @end example
3075
3076 When using the filter with wav, note the default encoding for wav is 16-bit,
3077 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3078 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3079 @example
3080 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3081 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3082 @end example
3083
3084 The filter accepts the following options:
3085
3086 @table @option
3087 @item disable_autoconvert
3088 Disable any automatic format conversion or resampling in the filter graph.
3089
3090 @item process_stereo
3091 Process the stereo channels together. If target_gain does not match between
3092 channels, consider it invalid and use the last valid target_gain.
3093
3094 @item cdt_ms
3095 Set the code detect timer period in ms.
3096
3097 @item force_pe
3098 Always extend peaks above -3dBFS even if PE isn't signaled.
3099
3100 @item analyze_mode
3101 Replace audio with a solid tone and adjust the amplitude to signal some
3102 specific aspect of the decoding process. The output file can be loaded in
3103 an audio editor alongside the original to aid analysis.
3104
3105 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3106
3107 Modes are:
3108 @table @samp
3109 @item 0, off
3110 Disabled
3111 @item 1, lle
3112 Gain adjustment level at each sample
3113 @item 2, pe
3114 Samples where peak extend occurs
3115 @item 3, cdt
3116 Samples where the code detect timer is active
3117 @item 4, tgm
3118 Samples where the target gain does not match between channels
3119 @end table
3120 @end table
3121
3122 @section headphone
3123
3124 Apply head-related transfer functions (HRTFs) to create virtual
3125 loudspeakers around the user for binaural listening via headphones.
3126 The HRIRs are provided via additional streams, for each channel
3127 one stereo input stream is needed.
3128
3129 The filter accepts the following options:
3130
3131 @table @option
3132 @item map
3133 Set mapping of input streams for convolution.
3134 The argument is a '|'-separated list of channel names in order as they
3135 are given as additional stream inputs for filter.
3136 This also specify number of input streams. Number of input streams
3137 must be not less than number of channels in first stream plus one.
3138
3139 @item gain
3140 Set gain applied to audio. Value is in dB. Default is 0.
3141
3142 @item type
3143 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3144 processing audio in time domain which is slow.
3145 @var{freq} is processing audio in frequency domain which is fast.
3146 Default is @var{freq}.
3147
3148 @item lfe
3149 Set custom gain for LFE channels. Value is in dB. Default is 0.
3150 @end table
3151
3152 @subsection Examples
3153
3154 @itemize
3155 @item
3156 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3157 each amovie filter use stereo file with IR coefficients as input.
3158 The files give coefficients for each position of virtual loudspeaker:
3159 @example
3160 ffmpeg -i input.wav -lavfi-complex "amovie=azi_270_ele_0_DFC.wav[sr],amovie=azi_90_ele_0_DFC.wav[sl],amovie=azi_225_ele_0_DFC.wav[br],amovie=azi_135_ele_0_DFC.wav[bl],amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe],amovie=azi_35_ele_0_DFC.wav[fl],amovie=azi_325_ele_0_DFC.wav[fr],[a:0][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
3161 output.wav
3162 @end example
3163 @end itemize
3164
3165 @section highpass
3166
3167 Apply a high-pass filter with 3dB point frequency.
3168 The filter can be either single-pole, or double-pole (the default).
3169 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3170
3171 The filter accepts the following options:
3172
3173 @table @option
3174 @item frequency, f
3175 Set frequency in Hz. Default is 3000.
3176
3177 @item poles, p
3178 Set number of poles. Default is 2.
3179
3180 @item width_type, t
3181 Set method to specify band-width of filter.
3182 @table @option
3183 @item h
3184 Hz
3185 @item q
3186 Q-Factor
3187 @item o
3188 octave
3189 @item s
3190 slope
3191 @item k
3192 kHz
3193 @end table
3194
3195 @item width, w
3196 Specify the band-width of a filter in width_type units.
3197 Applies only to double-pole filter.
3198 The default is 0.707q and gives a Butterworth response.
3199
3200 @item channels, c
3201 Specify which channels to filter, by default all available are filtered.
3202 @end table
3203
3204 @subsection Commands
3205
3206 This filter supports the following commands:
3207 @table @option
3208 @item frequency, f
3209 Change highpass frequency.
3210 Syntax for the command is : "@var{frequency}"
3211
3212 @item width_type, t
3213 Change highpass width_type.
3214 Syntax for the command is : "@var{width_type}"
3215
3216 @item width, w
3217 Change highpass width.
3218 Syntax for the command is : "@var{width}"
3219 @end table
3220
3221 @section join
3222
3223 Join multiple input streams into one multi-channel stream.
3224
3225 It accepts the following parameters:
3226 @table @option
3227
3228 @item inputs
3229 The number of input streams. It defaults to 2.
3230
3231 @item channel_layout
3232 The desired output channel layout. It defaults to stereo.
3233
3234 @item map
3235 Map channels from inputs to output. The argument is a '|'-separated list of
3236 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3237 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3238 can be either the name of the input channel (e.g. FL for front left) or its
3239 index in the specified input stream. @var{out_channel} is the name of the output
3240 channel.
3241 @end table
3242
3243 The filter will attempt to guess the mappings when they are not specified
3244 explicitly. It does so by first trying to find an unused matching input channel
3245 and if that fails it picks the first unused input channel.
3246
3247 Join 3 inputs (with properly set channel layouts):
3248 @example
3249 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3250 @end example
3251
3252 Build a 5.1 output from 6 single-channel streams:
3253 @example
3254 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3255 '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'
3256 out
3257 @end example
3258
3259 @section ladspa
3260
3261 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3262
3263 To enable compilation of this filter you need to configure FFmpeg with
3264 @code{--enable-ladspa}.
3265
3266 @table @option
3267 @item file, f
3268 Specifies the name of LADSPA plugin library to load. If the environment
3269 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3270 each one of the directories specified by the colon separated list in
3271 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3272 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3273 @file{/usr/lib/ladspa/}.
3274
3275 @item plugin, p
3276 Specifies the plugin within the library. Some libraries contain only
3277 one plugin, but others contain many of them. If this is not set filter
3278 will list all available plugins within the specified library.
3279
3280 @item controls, c
3281 Set the '|' separated list of controls which are zero or more floating point
3282 values that determine the behavior of the loaded plugin (for example delay,
3283 threshold or gain).
3284 Controls need to be defined using the following syntax:
3285 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3286 @var{valuei} is the value set on the @var{i}-th control.
3287 Alternatively they can be also defined using the following syntax:
3288 @var{value0}|@var{value1}|@var{value2}|..., where
3289 @var{valuei} is the value set on the @var{i}-th control.
3290 If @option{controls} is set to @code{help}, all available controls and
3291 their valid ranges are printed.
3292
3293 @item sample_rate, s
3294 Specify the sample rate, default to 44100. Only used if plugin have
3295 zero inputs.
3296
3297 @item nb_samples, n
3298 Set the number of samples per channel per each output frame, default
3299 is 1024. Only used if plugin have zero inputs.
3300
3301 @item duration, d
3302 Set the minimum duration of the sourced audio. See
3303 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3304 for the accepted syntax.
3305 Note that the resulting duration may be greater than the specified duration,
3306 as the generated audio is always cut at the end of a complete frame.
3307 If not specified, or the expressed duration is negative, the audio is
3308 supposed to be generated forever.
3309 Only used if plugin have zero inputs.
3310
3311 @end table
3312
3313 @subsection Examples
3314
3315 @itemize
3316 @item
3317 List all available plugins within amp (LADSPA example plugin) library:
3318 @example
3319 ladspa=file=amp
3320 @end example
3321
3322 @item
3323 List all available controls and their valid ranges for @code{vcf_notch}
3324 plugin from @code{VCF} library:
3325 @example
3326 ladspa=f=vcf:p=vcf_notch:c=help
3327 @end example
3328
3329 @item
3330 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
3331 plugin library:
3332 @example
3333 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
3334 @end example
3335
3336 @item
3337 Add reverberation to the audio using TAP-plugins
3338 (Tom's Audio Processing plugins):
3339 @example
3340 ladspa=file=tap_reverb:tap_reverb
3341 @end example
3342
3343 @item
3344 Generate white noise, with 0.2 amplitude:
3345 @example
3346 ladspa=file=cmt:noise_source_white:c=c0=.2
3347 @end example
3348
3349 @item
3350 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
3351 @code{C* Audio Plugin Suite} (CAPS) library:
3352 @example
3353 ladspa=file=caps:Click:c=c1=20'
3354 @end example
3355
3356 @item
3357 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
3358 @example
3359 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
3360 @end example
3361
3362 @item
3363 Increase volume by 20dB using fast lookahead limiter from Steve Harris
3364 @code{SWH Plugins} collection:
3365 @example
3366 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
3367 @end example
3368
3369 @item
3370 Attenuate low frequencies using Multiband EQ from Steve Harris
3371 @code{SWH Plugins} collection:
3372 @example
3373 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
3374 @end example
3375
3376 @item
3377 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
3378 (CAPS) library:
3379 @example
3380 ladspa=caps:Narrower
3381 @end example
3382
3383 @item
3384 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
3385 @example
3386 ladspa=caps:White:.2
3387 @end example
3388
3389 @item
3390 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
3391 @example
3392 ladspa=caps:Fractal:c=c1=1
3393 @end example
3394
3395 @item
3396 Dynamic volume normalization using @code{VLevel} plugin:
3397 @example
3398 ladspa=vlevel-ladspa:vlevel_mono
3399 @end example
3400 @end itemize
3401
3402 @subsection Commands
3403
3404 This filter supports the following commands:
3405 @table @option
3406 @item cN
3407 Modify the @var{N}-th control value.
3408
3409 If the specified value is not valid, it is ignored and prior one is kept.
3410 @end table
3411
3412 @section loudnorm
3413
3414 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
3415 Support for both single pass (livestreams, files) and double pass (files) modes.
3416 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
3417 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
3418 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
3419
3420 The filter accepts the following options:
3421
3422 @table @option
3423 @item I, i
3424 Set integrated loudness target.
3425 Range is -70.0 - -5.0. Default value is -24.0.
3426
3427 @item LRA, lra
3428 Set loudness range target.
3429 Range is 1.0 - 20.0. Default value is 7.0.
3430
3431 @item TP, tp
3432 Set maximum true peak.
3433 Range is -9.0 - +0.0. Default value is -2.0.
3434
3435 @item measured_I, measured_i
3436 Measured IL of input file.
3437 Range is -99.0 - +0.0.
3438
3439 @item measured_LRA, measured_lra
3440 Measured LRA of input file.
3441 Range is  0.0 - 99.0.
3442
3443 @item measured_TP, measured_tp
3444 Measured true peak of input file.
3445 Range is  -99.0 - +99.0.
3446
3447 @item measured_thresh
3448 Measured threshold of input file.
3449 Range is -99.0 - +0.0.
3450
3451 @item offset
3452 Set offset gain. Gain is applied before the true-peak limiter.
3453 Range is  -99.0 - +99.0. Default is +0.0.
3454
3455 @item linear
3456 Normalize linearly if possible.
3457 measured_I, measured_LRA, measured_TP, and measured_thresh must also
3458 to be specified in order to use this mode.
3459 Options are true or false. Default is true.
3460
3461 @item dual_mono
3462 Treat mono input files as "dual-mono". If a mono file is intended for playback
3463 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
3464 If set to @code{true}, this option will compensate for this effect.
3465 Multi-channel input files are not affected by this option.
3466 Options are true or false. Default is false.
3467
3468 @item print_format
3469 Set print format for stats. Options are summary, json, or none.
3470 Default value is none.
3471 @end table
3472
3473 @section lowpass
3474
3475 Apply a low-pass filter with 3dB point frequency.
3476 The filter can be either single-pole or double-pole (the default).
3477 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3478
3479 The filter accepts the following options:
3480
3481 @table @option
3482 @item frequency, f
3483 Set frequency in Hz. Default is 500.
3484
3485 @item poles, p
3486 Set number of poles. Default is 2.
3487
3488 @item width_type, t
3489 Set method to specify band-width of filter.
3490 @table @option
3491 @item h
3492 Hz
3493 @item q
3494 Q-Factor
3495 @item o
3496 octave
3497 @item s
3498 slope
3499 @item k
3500 kHz
3501 @end table
3502
3503 @item width, w
3504 Specify the band-width of a filter in width_type units.
3505 Applies only to double-pole filter.
3506 The default is 0.707q and gives a Butterworth response.
3507
3508 @item channels, c
3509 Specify which channels to filter, by default all available are filtered.
3510 @end table
3511
3512 @subsection Examples
3513 @itemize
3514 @item
3515 Lowpass only LFE channel, it LFE is not present it does nothing:
3516 @example
3517 lowpass=c=LFE
3518 @end example
3519 @end itemize
3520
3521 @subsection Commands
3522
3523 This filter supports the following commands:
3524 @table @option
3525 @item frequency, f
3526 Change lowpass frequency.
3527 Syntax for the command is : "@var{frequency}"
3528
3529 @item width_type, t
3530 Change lowpass width_type.
3531 Syntax for the command is : "@var{width_type}"
3532
3533 @item width, w
3534 Change lowpass width.
3535 Syntax for the command is : "@var{width}"
3536 @end table
3537
3538 @section lv2
3539
3540 Load a LV2 (LADSPA Version 2) plugin.
3541
3542 To enable compilation of this filter you need to configure FFmpeg with
3543 @code{--enable-lv2}.
3544
3545 @table @option
3546 @item plugin, p
3547 Specifies the plugin URI. You may need to escape ':'.
3548
3549 @item controls, c
3550 Set the '|' separated list of controls which are zero or more floating point
3551 values that determine the behavior of the loaded plugin (for example delay,
3552 threshold or gain).
3553 If @option{controls} is set to @code{help}, all available controls and
3554 their valid ranges are printed.
3555
3556 @item sample_rate, s
3557 Specify the sample rate, default to 44100. Only used if plugin have
3558 zero inputs.
3559
3560 @item nb_samples, n
3561 Set the number of samples per channel per each output frame, default
3562 is 1024. Only used if plugin have zero inputs.
3563
3564 @item duration, d
3565 Set the minimum duration of the sourced audio. See
3566 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3567 for the accepted syntax.
3568 Note that the resulting duration may be greater than the specified duration,
3569 as the generated audio is always cut at the end of a complete frame.
3570 If not specified, or the expressed duration is negative, the audio is
3571 supposed to be generated forever.
3572 Only used if plugin have zero inputs.
3573 @end table
3574
3575 @subsection Examples
3576
3577 @itemize
3578 @item
3579 Apply bass enhancer plugin from Calf:
3580 @example
3581 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
3582 @end example
3583
3584 @item
3585 Apply bass vinyl plugin from Calf:
3586 @example
3587 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
3588 @end example
3589
3590 @item
3591 Apply bit crusher plugin from ArtyFX:
3592 @example
3593 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
3594 @end example
3595 @end itemize
3596
3597 @section mcompand
3598 Multiband Compress or expand the audio's dynamic range.
3599
3600 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
3601 This is akin to the crossover of a loudspeaker, and results in flat frequency
3602 response when absent compander action.
3603
3604 It accepts the following parameters:
3605
3606 @table @option
3607 @item args
3608 This option syntax is:
3609 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
3610 For explanation of each item refer to compand filter documentation.
3611 @end table
3612
3613 @anchor{pan}
3614 @section pan
3615
3616 Mix channels with specific gain levels. The filter accepts the output
3617 channel layout followed by a set of channels definitions.
3618
3619 This filter is also designed to efficiently remap the channels of an audio
3620 stream.
3621
3622 The filter accepts parameters of the form:
3623 "@var{l}|@var{outdef}|@var{outdef}|..."
3624
3625 @table @option
3626 @item l
3627 output channel layout or number of channels
3628
3629 @item outdef
3630 output channel specification, of the form:
3631 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
3632
3633 @item out_name
3634 output channel to define, either a channel name (FL, FR, etc.) or a channel
3635 number (c0, c1, etc.)
3636
3637 @item gain
3638 multiplicative coefficient for the channel, 1 leaving the volume unchanged
3639
3640 @item in_name
3641 input channel to use, see out_name for details; it is not possible to mix
3642 named and numbered input channels
3643 @end table
3644
3645 If the `=' in a channel specification is replaced by `<', then the gains for
3646 that specification will be renormalized so that the total is 1, thus
3647 avoiding clipping noise.
3648
3649 @subsection Mixing examples
3650
3651 For example, if you want to down-mix from stereo to mono, but with a bigger
3652 factor for the left channel:
3653 @example
3654 pan=1c|c0=0.9*c0+0.1*c1
3655 @end example
3656
3657 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
3658 7-channels surround:
3659 @example
3660 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
3661 @end example
3662
3663 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
3664 that should be preferred (see "-ac" option) unless you have very specific
3665 needs.
3666
3667 @subsection Remapping examples
3668
3669 The channel remapping will be effective if, and only if:
3670
3671 @itemize
3672 @item gain coefficients are zeroes or ones,
3673 @item only one input per channel output,
3674 @end itemize
3675
3676 If all these conditions are satisfied, the filter will notify the user ("Pure
3677 channel mapping detected"), and use an optimized and lossless method to do the
3678 remapping.
3679
3680 For example, if you have a 5.1 source and want a stereo audio stream by
3681 dropping the extra channels:
3682 @example
3683 pan="stereo| c0=FL | c1=FR"
3684 @end example
3685
3686 Given the same source, you can also switch front left and front right channels
3687 and keep the input channel layout:
3688 @example
3689 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
3690 @end example
3691
3692 If the input is a stereo audio stream, you can mute the front left channel (and
3693 still keep the stereo channel layout) with:
3694 @example
3695 pan="stereo|c1=c1"
3696 @end example
3697
3698 Still with a stereo audio stream input, you can copy the right channel in both
3699 front left and right:
3700 @example
3701 pan="stereo| c0=FR | c1=FR"
3702 @end example
3703
3704 @section replaygain
3705
3706 ReplayGain scanner filter. This filter takes an audio stream as an input and
3707 outputs it unchanged.
3708 At end of filtering it displays @code{track_gain} and @code{track_peak}.
3709
3710 @section resample
3711
3712 Convert the audio sample format, sample rate and channel layout. It is
3713 not meant to be used directly.
3714
3715 @section rubberband
3716 Apply time-stretching and pitch-shifting with librubberband.
3717
3718 The filter accepts the following options:
3719
3720 @table @option
3721 @item tempo
3722 Set tempo scale factor.
3723
3724 @item pitch
3725 Set pitch scale factor.
3726
3727 @item transients
3728 Set transients detector.
3729 Possible values are:
3730 @table @var
3731 @item crisp
3732 @item mixed
3733 @item smooth
3734 @end table
3735
3736 @item detector
3737 Set detector.
3738 Possible values are:
3739 @table @var
3740 @item compound
3741 @item percussive
3742 @item soft
3743 @end table
3744
3745 @item phase
3746 Set phase.
3747 Possible values are:
3748 @table @var
3749 @item laminar
3750 @item independent
3751 @end table
3752
3753 @item window
3754 Set processing window size.
3755 Possible values are:
3756 @table @var
3757 @item standard
3758 @item short
3759 @item long
3760 @end table
3761
3762 @item smoothing
3763 Set smoothing.
3764 Possible values are:
3765 @table @var
3766 @item off
3767 @item on
3768 @end table
3769
3770 @item formant
3771 Enable formant preservation when shift pitching.
3772 Possible values are:
3773 @table @var
3774 @item shifted
3775 @item preserved
3776 @end table
3777
3778 @item pitchq
3779 Set pitch quality.
3780 Possible values are:
3781 @table @var
3782 @item quality
3783 @item speed
3784 @item consistency
3785 @end table
3786
3787 @item channels
3788 Set channels.
3789 Possible values are:
3790 @table @var
3791 @item apart
3792 @item together
3793 @end table
3794 @end table
3795
3796 @section sidechaincompress
3797
3798 This filter acts like normal compressor but has the ability to compress
3799 detected signal using second input signal.
3800 It needs two input streams and returns one output stream.
3801 First input stream will be processed depending on second stream signal.
3802 The filtered signal then can be filtered with other filters in later stages of
3803 processing. See @ref{pan} and @ref{amerge} filter.
3804
3805 The filter accepts the following options:
3806
3807 @table @option
3808 @item level_in
3809 Set input gain. Default is 1. Range is between 0.015625 and 64.
3810
3811 @item threshold
3812 If a signal of second stream raises above this level it will affect the gain
3813 reduction of first stream.
3814 By default is 0.125. Range is between 0.00097563 and 1.
3815
3816 @item ratio
3817 Set a ratio about which the signal is reduced. 1:2 means that if the level
3818 raised 4dB above the threshold, it will be only 2dB above after the reduction.
3819 Default is 2. Range is between 1 and 20.
3820
3821 @item attack
3822 Amount of milliseconds the signal has to rise above the threshold before gain
3823 reduction starts. Default is 20. Range is between 0.01 and 2000.
3824
3825 @item release
3826 Amount of milliseconds the signal has to fall below the threshold before
3827 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
3828
3829 @item makeup
3830 Set the amount by how much signal will be amplified after processing.
3831 Default is 1. Range is from 1 to 64.
3832
3833 @item knee
3834 Curve the sharp knee around the threshold to enter gain reduction more softly.
3835 Default is 2.82843. Range is between 1 and 8.
3836
3837 @item link
3838 Choose if the @code{average} level between all channels of side-chain stream
3839 or the louder(@code{maximum}) channel of side-chain stream affects the
3840 reduction. Default is @code{average}.
3841
3842 @item detection
3843 Should the exact signal be taken in case of @code{peak} or an RMS one in case
3844 of @code{rms}. Default is @code{rms} which is mainly smoother.
3845
3846 @item level_sc
3847 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
3848
3849 @item mix
3850 How much to use compressed signal in output. Default is 1.
3851 Range is between 0 and 1.
3852 @end table
3853
3854 @subsection Examples
3855
3856 @itemize
3857 @item
3858 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
3859 depending on the signal of 2nd input and later compressed signal to be
3860 merged with 2nd input:
3861 @example
3862 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
3863 @end example
3864 @end itemize
3865
3866 @section sidechaingate
3867
3868 A sidechain gate acts like a normal (wideband) gate but has the ability to
3869 filter the detected signal before sending it to the gain reduction stage.
3870 Normally a gate uses the full range signal to detect a level above the
3871 threshold.
3872 For example: If you cut all lower frequencies from your sidechain signal
3873 the gate will decrease the volume of your track only if not enough highs
3874 appear. With this technique you are able to reduce the resonation of a
3875 natural drum or remove "rumbling" of muted strokes from a heavily distorted
3876 guitar.
3877 It needs two input streams and returns one output stream.
3878 First input stream will be processed depending on second stream signal.
3879
3880 The filter accepts the following options:
3881
3882 @table @option
3883 @item level_in
3884 Set input level before filtering.
3885 Default is 1. Allowed range is from 0.015625 to 64.
3886
3887 @item range
3888 Set the level of gain reduction when the signal is below the threshold.
3889 Default is 0.06125. Allowed range is from 0 to 1.
3890
3891 @item threshold
3892 If a signal rises above this level the gain reduction is released.
3893 Default is 0.125. Allowed range is from 0 to 1.
3894
3895 @item ratio
3896 Set a ratio about which the signal is reduced.
3897 Default is 2. Allowed range is from 1 to 9000.
3898
3899 @item attack
3900 Amount of milliseconds the signal has to rise above the threshold before gain
3901 reduction stops.
3902 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
3903
3904 @item release
3905 Amount of milliseconds the signal has to fall below the threshold before the
3906 reduction is increased again. Default is 250 milliseconds.
3907 Allowed range is from 0.01 to 9000.
3908
3909 @item makeup
3910 Set amount of amplification of signal after processing.
3911 Default is 1. Allowed range is from 1 to 64.
3912
3913 @item knee
3914 Curve the sharp knee around the threshold to enter gain reduction more softly.
3915 Default is 2.828427125. Allowed range is from 1 to 8.
3916
3917 @item detection
3918 Choose if exact signal should be taken for detection or an RMS like one.
3919 Default is rms. Can be peak or rms.
3920
3921 @item link
3922 Choose if the average level between all channels or the louder channel affects
3923 the reduction.
3924 Default is average. Can be average or maximum.
3925
3926 @item level_sc
3927 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
3928 @end table
3929
3930 @section silencedetect
3931
3932 Detect silence in an audio stream.
3933
3934 This filter logs a message when it detects that the input audio volume is less
3935 or equal to a noise tolerance value for a duration greater or equal to the
3936 minimum detected noise duration.
3937
3938 The printed times and duration are expressed in seconds.
3939
3940 The filter accepts the following options:
3941
3942 @table @option
3943 @item duration, d
3944 Set silence duration until notification (default is 2 seconds).
3945
3946 @item noise, n
3947 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
3948 specified value) or amplitude ratio. Default is -60dB, or 0.001.
3949 @end table
3950
3951 @subsection Examples
3952
3953 @itemize
3954 @item
3955 Detect 5 seconds of silence with -50dB noise tolerance:
3956 @example
3957 silencedetect=n=-50dB:d=5
3958 @end example
3959
3960 @item
3961 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
3962 tolerance in @file{silence.mp3}:
3963 @example
3964 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
3965 @end example
3966 @end itemize
3967
3968 @section silenceremove
3969
3970 Remove silence from the beginning, middle or end of the audio.
3971
3972 The filter accepts the following options:
3973
3974 @table @option
3975 @item start_periods
3976 This value is used to indicate if audio should be trimmed at beginning of
3977 the audio. A value of zero indicates no silence should be trimmed from the
3978 beginning. When specifying a non-zero value, it trims audio up until it
3979 finds non-silence. Normally, when trimming silence from beginning of audio
3980 the @var{start_periods} will be @code{1} but it can be increased to higher
3981 values to trim all audio up to specific count of non-silence periods.
3982 Default value is @code{0}.
3983
3984 @item start_duration
3985 Specify the amount of time that non-silence must be detected before it stops
3986 trimming audio. By increasing the duration, bursts of noises can be treated
3987 as silence and trimmed off. Default value is @code{0}.
3988
3989 @item start_threshold
3990 This indicates what sample value should be treated as silence. For digital
3991 audio, a value of @code{0} may be fine but for audio recorded from analog,
3992 you may wish to increase the value to account for background noise.
3993 Can be specified in dB (in case "dB" is appended to the specified value)
3994 or amplitude ratio. Default value is @code{0}.
3995
3996 @item stop_periods
3997 Set the count for trimming silence from the end of audio.
3998 To remove silence from the middle of a file, specify a @var{stop_periods}
3999 that is negative. This value is then treated as a positive value and is
4000 used to indicate the effect should restart processing as specified by
4001 @var{start_periods}, making it suitable for removing periods of silence
4002 in the middle of the audio.
4003 Default value is @code{0}.
4004
4005 @item stop_duration
4006 Specify a duration of silence that must exist before audio is not copied any
4007 more. By specifying a higher duration, silence that is wanted can be left in
4008 the audio.
4009 Default value is @code{0}.
4010
4011 @item stop_threshold
4012 This is the same as @option{start_threshold} but for trimming silence from
4013 the end of audio.
4014 Can be specified in dB (in case "dB" is appended to the specified value)
4015 or amplitude ratio. Default value is @code{0}.
4016
4017 @item leave_silence
4018 This indicates that @var{stop_duration} length of audio should be left intact
4019 at the beginning of each period of silence.
4020 For example, if you want to remove long pauses between words but do not want
4021 to remove the pauses completely. Default value is @code{0}.
4022
4023 @item detection
4024 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4025 and works better with digital silence which is exactly 0.
4026 Default value is @code{rms}.
4027
4028 @item window
4029 Set ratio used to calculate size of window for detecting silence.
4030 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4031 @end table
4032
4033 @subsection Examples
4034
4035 @itemize
4036 @item
4037 The following example shows how this filter can be used to start a recording
4038 that does not contain the delay at the start which usually occurs between
4039 pressing the record button and the start of the performance:
4040 @example
4041 silenceremove=1:5:0.02
4042 @end example
4043
4044 @item
4045 Trim all silence encountered from beginning to end where there is more than 1
4046 second of silence in audio:
4047 @example
4048 silenceremove=0:0:0:-1:1:-90dB
4049 @end example
4050 @end itemize
4051
4052 @section sofalizer
4053
4054 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4055 loudspeakers around the user for binaural listening via headphones (audio
4056 formats up to 9 channels supported).
4057 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4058 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4059 Austrian Academy of Sciences.
4060
4061 To enable compilation of this filter you need to configure FFmpeg with
4062 @code{--enable-libmysofa}.
4063
4064 The filter accepts the following options:
4065
4066 @table @option
4067 @item sofa
4068 Set the SOFA file used for rendering.
4069
4070 @item gain
4071 Set gain applied to audio. Value is in dB. Default is 0.
4072
4073 @item rotation
4074 Set rotation of virtual loudspeakers in deg. Default is 0.
4075
4076 @item elevation
4077 Set elevation of virtual speakers in deg. Default is 0.
4078
4079 @item radius
4080 Set distance in meters between loudspeakers and the listener with near-field
4081 HRTFs. Default is 1.
4082
4083 @item type
4084 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4085 processing audio in time domain which is slow.
4086 @var{freq} is processing audio in frequency domain which is fast.
4087 Default is @var{freq}.
4088
4089 @item speakers
4090 Set custom positions of virtual loudspeakers. Syntax for this option is:
4091 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4092 Each virtual loudspeaker is described with short channel name following with
4093 azimuth and elevation in degrees.
4094 Each virtual loudspeaker description is separated by '|'.
4095 For example to override front left and front right channel positions use:
4096 'speakers=FL 45 15|FR 345 15'.
4097 Descriptions with unrecognised channel names are ignored.
4098
4099 @item lfegain
4100 Set custom gain for LFE channels. Value is in dB. Default is 0.
4101 @end table
4102
4103 @subsection Examples
4104
4105 @itemize
4106 @item
4107 Using ClubFritz6 sofa file:
4108 @example
4109 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4110 @end example
4111
4112 @item
4113 Using ClubFritz12 sofa file and bigger radius with small rotation:
4114 @example
4115 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4116 @end example
4117
4118 @item
4119 Similar as above but with custom speaker positions for front left, front right, back left and back right
4120 and also with custom gain:
4121 @example
4122 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4123 @end example
4124 @end itemize
4125
4126 @section stereotools
4127
4128 This filter has some handy utilities to manage stereo signals, for converting
4129 M/S stereo recordings to L/R signal while having control over the parameters
4130 or spreading the stereo image of master track.
4131
4132 The filter accepts the following options:
4133
4134 @table @option
4135 @item level_in
4136 Set input level before filtering for both channels. Defaults is 1.
4137 Allowed range is from 0.015625 to 64.
4138
4139 @item level_out
4140 Set output level after filtering for both channels. Defaults is 1.
4141 Allowed range is from 0.015625 to 64.
4142
4143 @item balance_in
4144 Set input balance between both channels. Default is 0.
4145 Allowed range is from -1 to 1.
4146
4147 @item balance_out
4148 Set output balance between both channels. Default is 0.
4149 Allowed range is from -1 to 1.
4150
4151 @item softclip
4152 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4153 clipping. Disabled by default.
4154
4155 @item mutel
4156 Mute the left channel. Disabled by default.
4157
4158 @item muter
4159 Mute the right channel. Disabled by default.
4160
4161 @item phasel
4162 Change the phase of the left channel. Disabled by default.
4163
4164 @item phaser
4165 Change the phase of the right channel. Disabled by default.
4166
4167 @item mode
4168 Set stereo mode. Available values are:
4169
4170 @table @samp
4171 @item lr>lr
4172 Left/Right to Left/Right, this is default.
4173
4174 @item lr>ms
4175 Left/Right to Mid/Side.
4176
4177 @item ms>lr
4178 Mid/Side to Left/Right.
4179
4180 @item lr>ll
4181 Left/Right to Left/Left.
4182
4183 @item lr>rr
4184 Left/Right to Right/Right.
4185
4186 @item lr>l+r
4187 Left/Right to Left + Right.
4188
4189 @item lr>rl
4190 Left/Right to Right/Left.
4191
4192 @item ms>ll
4193 Mid/Side to Left/Left.
4194
4195 @item ms>rr
4196 Mid/Side to Right/Right.
4197 @end table
4198
4199 @item slev
4200 Set level of side signal. Default is 1.
4201 Allowed range is from 0.015625 to 64.
4202
4203 @item sbal
4204 Set balance of side signal. Default is 0.
4205 Allowed range is from -1 to 1.
4206
4207 @item mlev
4208 Set level of the middle signal. Default is 1.
4209 Allowed range is from 0.015625 to 64.
4210
4211 @item mpan
4212 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
4213
4214 @item base
4215 Set stereo base between mono and inversed channels. Default is 0.
4216 Allowed range is from -1 to 1.
4217
4218 @item delay
4219 Set delay in milliseconds how much to delay left from right channel and
4220 vice versa. Default is 0. Allowed range is from -20 to 20.
4221
4222 @item sclevel
4223 Set S/C level. Default is 1. Allowed range is from 1 to 100.
4224
4225 @item phase
4226 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
4227
4228 @item bmode_in, bmode_out
4229 Set balance mode for balance_in/balance_out option.
4230
4231 Can be one of the following:
4232
4233 @table @samp
4234 @item balance
4235 Classic balance mode. Attenuate one channel at time.
4236 Gain is raised up to 1.
4237
4238 @item amplitude
4239 Similar as classic mode above but gain is raised up to 2.
4240
4241 @item power
4242 Equal power distribution, from -6dB to +6dB range.
4243 @end table
4244 @end table
4245
4246 @subsection Examples
4247
4248 @itemize
4249 @item
4250 Apply karaoke like effect:
4251 @example
4252 stereotools=mlev=0.015625
4253 @end example
4254
4255 @item
4256 Convert M/S signal to L/R:
4257 @example
4258 "stereotools=mode=ms>lr"
4259 @end example
4260 @end itemize
4261
4262 @section stereowiden
4263
4264 This filter enhance the stereo effect by suppressing signal common to both
4265 channels and by delaying the signal of left into right and vice versa,
4266 thereby widening the stereo effect.
4267
4268 The filter accepts the following options:
4269
4270 @table @option
4271 @item delay
4272 Time in milliseconds of the delay of left signal into right and vice versa.
4273 Default is 20 milliseconds.
4274
4275 @item feedback
4276 Amount of gain in delayed signal into right and vice versa. Gives a delay
4277 effect of left signal in right output and vice versa which gives widening
4278 effect. Default is 0.3.
4279
4280 @item crossfeed
4281 Cross feed of left into right with inverted phase. This helps in suppressing
4282 the mono. If the value is 1 it will cancel all the signal common to both
4283 channels. Default is 0.3.
4284
4285 @item drymix
4286 Set level of input signal of original channel. Default is 0.8.
4287 @end table
4288
4289 @section superequalizer
4290 Apply 18 band equalizer.
4291
4292 The filter accepts the following options:
4293 @table @option
4294 @item 1b
4295 Set 65Hz band gain.
4296 @item 2b
4297 Set 92Hz band gain.
4298 @item 3b
4299 Set 131Hz band gain.
4300 @item 4b
4301 Set 185Hz band gain.
4302 @item 5b
4303 Set 262Hz band gain.
4304 @item 6b
4305 Set 370Hz band gain.
4306 @item 7b
4307 Set 523Hz band gain.
4308 @item 8b
4309 Set 740Hz band gain.
4310 @item 9b
4311 Set 1047Hz band gain.
4312 @item 10b
4313 Set 1480Hz band gain.
4314 @item 11b
4315 Set 2093Hz band gain.
4316 @item 12b
4317 Set 2960Hz band gain.
4318 @item 13b
4319 Set 4186Hz band gain.
4320 @item 14b
4321 Set 5920Hz band gain.
4322 @item 15b
4323 Set 8372Hz band gain.
4324 @item 16b
4325 Set 11840Hz band gain.
4326 @item 17b
4327 Set 16744Hz band gain.
4328 @item 18b
4329 Set 20000Hz band gain.
4330 @end table
4331
4332 @section surround
4333 Apply audio surround upmix filter.
4334
4335 This filter allows to produce multichannel output from audio stream.
4336
4337 The filter accepts the following options:
4338
4339 @table @option
4340 @item chl_out
4341 Set output channel layout. By default, this is @var{5.1}.
4342
4343 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4344 for the required syntax.
4345
4346 @item chl_in
4347 Set input channel layout. By default, this is @var{stereo}.
4348
4349 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4350 for the required syntax.
4351
4352 @item level_in
4353 Set input volume level. By default, this is @var{1}.
4354
4355 @item level_out
4356 Set output volume level. By default, this is @var{1}.
4357
4358 @item lfe
4359 Enable LFE channel output if output channel layout has it. By default, this is enabled.
4360
4361 @item lfe_low
4362 Set LFE low cut off frequency. By default, this is @var{128} Hz.
4363
4364 @item lfe_high
4365 Set LFE high cut off frequency. By default, this is @var{256} Hz.
4366
4367 @item fc_in
4368 Set front center input volume. By default, this is @var{1}.
4369
4370 @item fc_out
4371 Set front center output volume. By default, this is @var{1}.
4372
4373 @item lfe_in
4374 Set LFE input volume. By default, this is @var{1}.
4375
4376 @item lfe_out
4377 Set LFE output volume. By default, this is @var{1}.
4378 @end table
4379
4380 @section treble
4381
4382 Boost or cut treble (upper) frequencies of the audio using a two-pole
4383 shelving filter with a response similar to that of a standard
4384 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
4385
4386 The filter accepts the following options:
4387
4388 @table @option
4389 @item gain, g
4390 Give the gain at whichever is the lower of ~22 kHz and the
4391 Nyquist frequency. Its useful range is about -20 (for a large cut)
4392 to +20 (for a large boost). Beware of clipping when using a positive gain.
4393
4394 @item frequency, f
4395 Set the filter's central frequency and so can be used
4396 to extend or reduce the frequency range to be boosted or cut.
4397 The default value is @code{3000} Hz.
4398
4399 @item width_type, t
4400 Set method to specify band-width of filter.
4401 @table @option
4402 @item h
4403 Hz
4404 @item q
4405 Q-Factor
4406 @item o
4407 octave
4408 @item s
4409 slope
4410 @item k
4411 kHz
4412 @end table
4413
4414 @item width, w
4415 Determine how steep is the filter's shelf transition.
4416
4417 @item channels, c
4418 Specify which channels to filter, by default all available are filtered.
4419 @end table
4420
4421 @subsection Commands
4422
4423 This filter supports the following commands:
4424 @table @option
4425 @item frequency, f
4426 Change treble frequency.
4427 Syntax for the command is : "@var{frequency}"
4428
4429 @item width_type, t
4430 Change treble width_type.
4431 Syntax for the command is : "@var{width_type}"
4432
4433 @item width, w
4434 Change treble width.
4435 Syntax for the command is : "@var{width}"
4436
4437 @item gain, g
4438 Change treble gain.
4439 Syntax for the command is : "@var{gain}"
4440 @end table
4441
4442 @section tremolo
4443
4444 Sinusoidal amplitude modulation.
4445
4446 The filter accepts the following options:
4447
4448 @table @option
4449 @item f
4450 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
4451 (20 Hz or lower) will result in a tremolo effect.
4452 This filter may also be used as a ring modulator by specifying
4453 a modulation frequency higher than 20 Hz.
4454 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4455
4456 @item d
4457 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4458 Default value is 0.5.
4459 @end table
4460
4461 @section vibrato
4462
4463 Sinusoidal phase modulation.
4464
4465 The filter accepts the following options:
4466
4467 @table @option
4468 @item f
4469 Modulation frequency in Hertz.
4470 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4471
4472 @item d
4473 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4474 Default value is 0.5.
4475 @end table
4476
4477 @section volume
4478
4479 Adjust the input audio volume.
4480
4481 It accepts the following parameters:
4482 @table @option
4483
4484 @item volume
4485 Set audio volume expression.
4486
4487 Output values are clipped to the maximum value.
4488
4489 The output audio volume is given by the relation:
4490 @example
4491 @var{output_volume} = @var{volume} * @var{input_volume}
4492 @end example
4493
4494 The default value for @var{volume} is "1.0".
4495
4496 @item precision
4497 This parameter represents the mathematical precision.
4498
4499 It determines which input sample formats will be allowed, which affects the
4500 precision of the volume scaling.
4501
4502 @table @option
4503 @item fixed
4504 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
4505 @item float
4506 32-bit floating-point; this limits input sample format to FLT. (default)
4507 @item double
4508 64-bit floating-point; this limits input sample format to DBL.
4509 @end table
4510
4511 @item replaygain
4512 Choose the behaviour on encountering ReplayGain side data in input frames.
4513
4514 @table @option
4515 @item drop
4516 Remove ReplayGain side data, ignoring its contents (the default).
4517
4518 @item ignore
4519 Ignore ReplayGain side data, but leave it in the frame.
4520
4521 @item track
4522 Prefer the track gain, if present.
4523
4524 @item album
4525 Prefer the album gain, if present.
4526 @end table
4527
4528 @item replaygain_preamp
4529 Pre-amplification gain in dB to apply to the selected replaygain gain.
4530
4531 Default value for @var{replaygain_preamp} is 0.0.
4532
4533 @item eval
4534 Set when the volume expression is evaluated.
4535
4536 It accepts the following values:
4537 @table @samp
4538 @item once
4539 only evaluate expression once during the filter initialization, or
4540 when the @samp{volume} command is sent
4541
4542 @item frame
4543 evaluate expression for each incoming frame
4544 @end table
4545
4546 Default value is @samp{once}.
4547 @end table
4548
4549 The volume expression can contain the following parameters.
4550
4551 @table @option
4552 @item n
4553 frame number (starting at zero)
4554 @item nb_channels
4555 number of channels
4556 @item nb_consumed_samples
4557 number of samples consumed by the filter
4558 @item nb_samples
4559 number of samples in the current frame
4560 @item pos
4561 original frame position in the file
4562 @item pts
4563 frame PTS
4564 @item sample_rate
4565 sample rate
4566 @item startpts
4567 PTS at start of stream
4568 @item startt
4569 time at start of stream
4570 @item t
4571 frame time
4572 @item tb
4573 timestamp timebase
4574 @item volume
4575 last set volume value
4576 @end table
4577
4578 Note that when @option{eval} is set to @samp{once} only the
4579 @var{sample_rate} and @var{tb} variables are available, all other
4580 variables will evaluate to NAN.
4581
4582 @subsection Commands
4583
4584 This filter supports the following commands:
4585 @table @option
4586 @item volume
4587 Modify the volume expression.
4588 The command accepts the same syntax of the corresponding option.
4589
4590 If the specified expression is not valid, it is kept at its current
4591 value.
4592 @item replaygain_noclip
4593 Prevent clipping by limiting the gain applied.
4594
4595 Default value for @var{replaygain_noclip} is 1.
4596
4597 @end table
4598
4599 @subsection Examples
4600
4601 @itemize
4602 @item
4603 Halve the input audio volume:
4604 @example
4605 volume=volume=0.5
4606 volume=volume=1/2
4607 volume=volume=-6.0206dB
4608 @end example
4609
4610 In all the above example the named key for @option{volume} can be
4611 omitted, for example like in:
4612 @example
4613 volume=0.5
4614 @end example
4615
4616 @item
4617 Increase input audio power by 6 decibels using fixed-point precision:
4618 @example
4619 volume=volume=6dB:precision=fixed
4620 @end example
4621
4622 @item
4623 Fade volume after time 10 with an annihilation period of 5 seconds:
4624 @example
4625 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
4626 @end example
4627 @end itemize
4628
4629 @section volumedetect
4630
4631 Detect the volume of the input video.
4632
4633 The filter has no parameters. The input is not modified. Statistics about
4634 the volume will be printed in the log when the input stream end is reached.
4635
4636 In particular it will show the mean volume (root mean square), maximum
4637 volume (on a per-sample basis), and the beginning of a histogram of the
4638 registered volume values (from the maximum value to a cumulated 1/1000 of
4639 the samples).
4640
4641 All volumes are in decibels relative to the maximum PCM value.
4642
4643 @subsection Examples
4644
4645 Here is an excerpt of the output:
4646 @example
4647 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
4648 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
4649 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
4650 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
4651 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
4652 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
4653 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
4654 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
4655 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
4656 @end example
4657
4658 It means that:
4659 @itemize
4660 @item
4661 The mean square energy is approximately -27 dB, or 10^-2.7.
4662 @item
4663 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
4664 @item
4665 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
4666 @end itemize
4667
4668 In other words, raising the volume by +4 dB does not cause any clipping,
4669 raising it by +5 dB causes clipping for 6 samples, etc.
4670
4671 @c man end AUDIO FILTERS
4672
4673 @chapter Audio Sources
4674 @c man begin AUDIO SOURCES
4675
4676 Below is a description of the currently available audio sources.
4677
4678 @section abuffer
4679
4680 Buffer audio frames, and make them available to the filter chain.
4681
4682 This source is mainly intended for a programmatic use, in particular
4683 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
4684
4685 It accepts the following parameters:
4686 @table @option
4687
4688 @item time_base
4689 The timebase which will be used for timestamps of submitted frames. It must be
4690 either a floating-point number or in @var{numerator}/@var{denominator} form.
4691
4692 @item sample_rate
4693 The sample rate of the incoming audio buffers.
4694
4695 @item sample_fmt
4696 The sample format of the incoming audio buffers.
4697 Either a sample format name or its corresponding integer representation from
4698 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
4699
4700 @item channel_layout
4701 The channel layout of the incoming audio buffers.
4702 Either a channel layout name from channel_layout_map in
4703 @file{libavutil/channel_layout.c} or its corresponding integer representation
4704 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
4705
4706 @item channels
4707 The number of channels of the incoming audio buffers.
4708 If both @var{channels} and @var{channel_layout} are specified, then they
4709 must be consistent.
4710
4711 @end table
4712
4713 @subsection Examples
4714
4715 @example
4716 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
4717 @end example
4718
4719 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
4720 Since the sample format with name "s16p" corresponds to the number
4721 6 and the "stereo" channel layout corresponds to the value 0x3, this is
4722 equivalent to:
4723 @example
4724 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
4725 @end example
4726
4727 @section aevalsrc
4728
4729 Generate an audio signal specified by an expression.
4730
4731 This source accepts in input one or more expressions (one for each
4732 channel), which are evaluated and used to generate a corresponding
4733 audio signal.
4734
4735 This source accepts the following options:
4736
4737 @table @option
4738 @item exprs
4739 Set the '|'-separated expressions list for each separate channel. In case the
4740 @option{channel_layout} option is not specified, the selected channel layout
4741 depends on the number of provided expressions. Otherwise the last
4742 specified expression is applied to the remaining output channels.
4743
4744 @item channel_layout, c
4745 Set the channel layout. The number of channels in the specified layout
4746 must be equal to the number of specified expressions.
4747
4748 @item duration, d
4749 Set the minimum duration of the sourced audio. See
4750 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4751 for the accepted syntax.
4752 Note that the resulting duration may be greater than the specified
4753 duration, as the generated audio is always cut at the end of a
4754 complete frame.
4755
4756 If not specified, or the expressed duration is negative, the audio is
4757 supposed to be generated forever.
4758
4759 @item nb_samples, n
4760 Set the number of samples per channel per each output frame,
4761 default to 1024.
4762
4763 @item sample_rate, s
4764 Specify the sample rate, default to 44100.
4765 @end table
4766
4767 Each expression in @var{exprs} can contain the following constants:
4768
4769 @table @option
4770 @item n
4771 number of the evaluated sample, starting from 0
4772
4773 @item t
4774 time of the evaluated sample expressed in seconds, starting from 0
4775
4776 @item s
4777 sample rate
4778
4779 @end table
4780
4781 @subsection Examples
4782
4783 @itemize
4784 @item
4785 Generate silence:
4786 @example
4787 aevalsrc=0
4788 @end example
4789
4790 @item
4791 Generate a sin signal with frequency of 440 Hz, set sample rate to
4792 8000 Hz:
4793 @example
4794 aevalsrc="sin(440*2*PI*t):s=8000"
4795 @end example
4796
4797 @item
4798 Generate a two channels signal, specify the channel layout (Front
4799 Center + Back Center) explicitly:
4800 @example
4801 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
4802 @end example
4803
4804 @item
4805 Generate white noise:
4806 @example
4807 aevalsrc="-2+random(0)"
4808 @end example
4809
4810 @item
4811 Generate an amplitude modulated signal:
4812 @example
4813 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
4814 @end example
4815
4816 @item
4817 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
4818 @example
4819 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
4820 @end example
4821
4822 @end itemize
4823
4824 @section anullsrc
4825
4826 The null audio source, return unprocessed audio frames. It is mainly useful
4827 as a template and to be employed in analysis / debugging tools, or as
4828 the source for filters which ignore the input data (for example the sox
4829 synth filter).
4830
4831 This source accepts the following options:
4832
4833 @table @option
4834
4835 @item channel_layout, cl
4836
4837 Specifies the channel layout, and can be either an integer or a string
4838 representing a channel layout. The default value of @var{channel_layout}
4839 is "stereo".
4840
4841 Check the channel_layout_map definition in
4842 @file{libavutil/channel_layout.c} for the mapping between strings and
4843 channel layout values.
4844
4845 @item sample_rate, r
4846 Specifies the sample rate, and defaults to 44100.
4847
4848 @item nb_samples, n
4849 Set the number of samples per requested frames.
4850
4851 @end table
4852
4853 @subsection Examples
4854
4855 @itemize
4856 @item
4857 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
4858 @example
4859 anullsrc=r=48000:cl=4
4860 @end example
4861
4862 @item
4863 Do the same operation with a more obvious syntax:
4864 @example
4865 anullsrc=r=48000:cl=mono
4866 @end example
4867 @end itemize
4868
4869 All the parameters need to be explicitly defined.
4870
4871 @section flite
4872
4873 Synthesize a voice utterance using the libflite library.
4874
4875 To enable compilation of this filter you need to configure FFmpeg with
4876 @code{--enable-libflite}.
4877
4878 Note that versions of the flite library prior to 2.0 are not thread-safe.
4879
4880 The filter accepts the following options:
4881
4882 @table @option
4883
4884 @item list_voices
4885 If set to 1, list the names of the available voices and exit
4886 immediately. Default value is 0.
4887
4888 @item nb_samples, n
4889 Set the maximum number of samples per frame. Default value is 512.
4890
4891 @item textfile
4892 Set the filename containing the text to speak.
4893
4894 @item text
4895 Set the text to speak.
4896
4897 @item voice, v
4898 Set the voice to use for the speech synthesis. Default value is
4899 @code{kal}. See also the @var{list_voices} option.
4900 @end table
4901
4902 @subsection Examples
4903
4904 @itemize
4905 @item
4906 Read from file @file{speech.txt}, and synthesize the text using the
4907 standard flite voice:
4908 @example
4909 flite=textfile=speech.txt
4910 @end example
4911
4912 @item
4913 Read the specified text selecting the @code{slt} voice:
4914 @example
4915 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
4916 @end example
4917
4918 @item
4919 Input text to ffmpeg:
4920 @example
4921 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
4922 @end example
4923
4924 @item
4925 Make @file{ffplay} speak the specified text, using @code{flite} and
4926 the @code{lavfi} device:
4927 @example
4928 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
4929 @end example
4930 @end itemize
4931
4932 For more information about libflite, check:
4933 @url{http://www.festvox.org/flite/}
4934
4935 @section anoisesrc
4936
4937 Generate a noise audio signal.
4938
4939 The filter accepts the following options:
4940
4941 @table @option
4942 @item sample_rate, r
4943 Specify the sample rate. Default value is 48000 Hz.
4944
4945 @item amplitude, a
4946 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
4947 is 1.0.
4948
4949 @item duration, d
4950 Specify the duration of the generated audio stream. Not specifying this option
4951 results in noise with an infinite length.
4952
4953 @item color, colour, c
4954 Specify the color of noise. Available noise colors are white, pink, brown,
4955 blue and violet. Default color is white.
4956
4957 @item seed, s
4958 Specify a value used to seed the PRNG.
4959
4960 @item nb_samples, n
4961 Set the number of samples per each output frame, default is 1024.
4962 @end table
4963
4964 @subsection Examples
4965
4966 @itemize
4967
4968 @item
4969 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
4970 @example
4971 anoisesrc=d=60:c=pink:r=44100:a=0.5
4972 @end example
4973 @end itemize
4974
4975 @section hilbert
4976
4977 Generate odd-tap Hilbert transform FIR coefficients.
4978
4979 The resulting stream can be used with @ref{afir} filter for phase-shifting
4980 the signal by 90 degrees.
4981
4982 This is used in many matrix coding schemes and for analytic signal generation.
4983 The process is often written as a multiplication by i (or j), the imaginary unit.
4984
4985 The filter accepts the following options:
4986
4987 @table @option
4988
4989 @item sample_rate, s
4990 Set sample rate, default is 44100.
4991
4992 @item taps, t
4993 Set length of FIR filter, default is 22051.
4994
4995 @item nb_samples, n
4996 Set number of samples per each frame.
4997
4998 @item win_func, w
4999 Set window function to be used when generating FIR coefficients.
5000 @end table
5001
5002 @section sine
5003
5004 Generate an audio signal made of a sine wave with amplitude 1/8.
5005
5006 The audio signal is bit-exact.
5007
5008 The filter accepts the following options:
5009
5010 @table @option
5011
5012 @item frequency, f
5013 Set the carrier frequency. Default is 440 Hz.
5014
5015 @item beep_factor, b
5016 Enable a periodic beep every second with frequency @var{beep_factor} times
5017 the carrier frequency. Default is 0, meaning the beep is disabled.
5018
5019 @item sample_rate, r
5020 Specify the sample rate, default is 44100.
5021
5022 @item duration, d
5023 Specify the duration of the generated audio stream.
5024
5025 @item samples_per_frame
5026 Set the number of samples per output frame.
5027
5028 The expression can contain the following constants:
5029
5030 @table @option
5031 @item n
5032 The (sequential) number of the output audio frame, starting from 0.
5033
5034 @item pts
5035 The PTS (Presentation TimeStamp) of the output audio frame,
5036 expressed in @var{TB} units.
5037
5038 @item t
5039 The PTS of the output audio frame, expressed in seconds.
5040
5041 @item TB
5042 The timebase of the output audio frames.
5043 @end table
5044
5045 Default is @code{1024}.
5046 @end table
5047
5048 @subsection Examples
5049
5050 @itemize
5051
5052 @item
5053 Generate a simple 440 Hz sine wave:
5054 @example
5055 sine
5056 @end example
5057
5058 @item
5059 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
5060 @example
5061 sine=220:4:d=5
5062 sine=f=220:b=4:d=5
5063 sine=frequency=220:beep_factor=4:duration=5
5064 @end example
5065
5066 @item
5067 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
5068 pattern:
5069 @example
5070 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
5071 @end example
5072 @end itemize
5073
5074 @c man end AUDIO SOURCES
5075
5076 @chapter Audio Sinks
5077 @c man begin AUDIO SINKS
5078
5079 Below is a description of the currently available audio sinks.
5080
5081 @section abuffersink
5082
5083 Buffer audio frames, and make them available to the end of filter chain.
5084
5085 This sink is mainly intended for programmatic use, in particular
5086 through the interface defined in @file{libavfilter/buffersink.h}
5087 or the options system.
5088
5089 It accepts a pointer to an AVABufferSinkContext structure, which
5090 defines the incoming buffers' formats, to be passed as the opaque
5091 parameter to @code{avfilter_init_filter} for initialization.
5092 @section anullsink
5093
5094 Null audio sink; do absolutely nothing with the input audio. It is
5095 mainly useful as a template and for use in analysis / debugging
5096 tools.
5097
5098 @c man end AUDIO SINKS
5099
5100 @chapter Video Filters
5101 @c man begin VIDEO FILTERS
5102
5103 When you configure your FFmpeg build, you can disable any of the
5104 existing filters using @code{--disable-filters}.
5105 The configure output will show the video filters included in your
5106 build.
5107
5108 Below is a description of the currently available video filters.
5109
5110 @section alphaextract
5111
5112 Extract the alpha component from the input as a grayscale video. This
5113 is especially useful with the @var{alphamerge} filter.
5114
5115 @section alphamerge
5116
5117 Add or replace the alpha component of the primary input with the
5118 grayscale value of a second input. This is intended for use with
5119 @var{alphaextract} to allow the transmission or storage of frame
5120 sequences that have alpha in a format that doesn't support an alpha
5121 channel.
5122
5123 For example, to reconstruct full frames from a normal YUV-encoded video
5124 and a separate video created with @var{alphaextract}, you might use:
5125 @example
5126 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
5127 @end example
5128
5129 Since this filter is designed for reconstruction, it operates on frame
5130 sequences without considering timestamps, and terminates when either
5131 input reaches end of stream. This will cause problems if your encoding
5132 pipeline drops frames. If you're trying to apply an image as an
5133 overlay to a video stream, consider the @var{overlay} filter instead.
5134
5135 @section ass
5136
5137 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
5138 and libavformat to work. On the other hand, it is limited to ASS (Advanced
5139 Substation Alpha) subtitles files.
5140
5141 This filter accepts the following option in addition to the common options from
5142 the @ref{subtitles} filter:
5143
5144 @table @option
5145 @item shaping
5146 Set the shaping engine
5147
5148 Available values are:
5149 @table @samp
5150 @item auto
5151 The default libass shaping engine, which is the best available.
5152 @item simple
5153 Fast, font-agnostic shaper that can do only substitutions
5154 @item complex
5155 Slower shaper using OpenType for substitutions and positioning
5156 @end table
5157
5158 The default is @code{auto}.
5159 @end table
5160
5161 @section atadenoise
5162 Apply an Adaptive Temporal Averaging Denoiser to the video input.
5163
5164 The filter accepts the following options:
5165
5166 @table @option
5167 @item 0a
5168 Set threshold A for 1st plane. Default is 0.02.
5169 Valid range is 0 to 0.3.
5170
5171 @item 0b
5172 Set threshold B for 1st plane. Default is 0.04.
5173 Valid range is 0 to 5.
5174
5175 @item 1a
5176 Set threshold A for 2nd plane. Default is 0.02.
5177 Valid range is 0 to 0.3.
5178
5179 @item 1b
5180 Set threshold B for 2nd plane. Default is 0.04.
5181 Valid range is 0 to 5.
5182
5183 @item 2a
5184 Set threshold A for 3rd plane. Default is 0.02.
5185 Valid range is 0 to 0.3.
5186
5187 @item 2b
5188 Set threshold B for 3rd plane. Default is 0.04.
5189 Valid range is 0 to 5.
5190
5191 Threshold A is designed to react on abrupt changes in the input signal and
5192 threshold B is designed to react on continuous changes in the input signal.
5193
5194 @item s
5195 Set number of frames filter will use for averaging. Default is 33. Must be odd
5196 number in range [5, 129].
5197
5198 @item p
5199 Set what planes of frame filter will use for averaging. Default is all.
5200 @end table
5201
5202 @section avgblur
5203
5204 Apply average blur filter.
5205
5206 The filter accepts the following options:
5207
5208 @table @option
5209 @item sizeX
5210 Set horizontal kernel size.
5211
5212 @item planes
5213 Set which planes to filter. By default all planes are filtered.
5214
5215 @item sizeY
5216 Set vertical kernel size, if zero it will be same as @code{sizeX}.
5217 Default is @code{0}.
5218 @end table
5219
5220 @section bbox
5221
5222 Compute the bounding box for the non-black pixels in the input frame
5223 luminance plane.
5224
5225 This filter computes the bounding box containing all the pixels with a
5226 luminance value greater than the minimum allowed value.
5227 The parameters describing the bounding box are printed on the filter
5228 log.
5229
5230 The filter accepts the following option:
5231
5232 @table @option
5233 @item min_val
5234 Set the minimal luminance value. Default is @code{16}.
5235 @end table
5236
5237 @section bitplanenoise
5238
5239 Show and measure bit plane noise.
5240
5241 The filter accepts the following options:
5242
5243 @table @option
5244 @item bitplane
5245 Set which plane to analyze. Default is @code{1}.
5246
5247 @item filter
5248 Filter out noisy pixels from @code{bitplane} set above.
5249 Default is disabled.
5250 @end table
5251
5252 @section blackdetect
5253
5254 Detect video intervals that are (almost) completely black. Can be
5255 useful to detect chapter transitions, commercials, or invalid
5256 recordings. Output lines contains the time for the start, end and
5257 duration of the detected black interval expressed in seconds.
5258
5259 In order to display the output lines, you need to set the loglevel at
5260 least to the AV_LOG_INFO value.
5261
5262 The filter accepts the following options:
5263
5264 @table @option
5265 @item black_min_duration, d
5266 Set the minimum detected black duration expressed in seconds. It must
5267 be a non-negative floating point number.
5268
5269 Default value is 2.0.
5270
5271 @item picture_black_ratio_th, pic_th
5272 Set the threshold for considering a picture "black".
5273 Express the minimum value for the ratio:
5274 @example
5275 @var{nb_black_pixels} / @var{nb_pixels}
5276 @end example
5277
5278 for which a picture is considered black.
5279 Default value is 0.98.
5280
5281 @item pixel_black_th, pix_th
5282 Set the threshold for considering a pixel "black".
5283
5284 The threshold expresses the maximum pixel luminance value for which a
5285 pixel is considered "black". The provided value is scaled according to
5286 the following equation:
5287 @example
5288 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
5289 @end example
5290
5291 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
5292 the input video format, the range is [0-255] for YUV full-range
5293 formats and [16-235] for YUV non full-range formats.
5294
5295 Default value is 0.10.
5296 @end table
5297
5298 The following example sets the maximum pixel threshold to the minimum
5299 value, and detects only black intervals of 2 or more seconds:
5300 @example
5301 blackdetect=d=2:pix_th=0.00
5302 @end example
5303
5304 @section blackframe
5305
5306 Detect frames that are (almost) completely black. Can be useful to
5307 detect chapter transitions or commercials. Output lines consist of
5308 the frame number of the detected frame, the percentage of blackness,
5309 the position in the file if known or -1 and the timestamp in seconds.
5310
5311 In order to display the output lines, you need to set the loglevel at
5312 least to the AV_LOG_INFO value.
5313
5314 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
5315 The value represents the percentage of pixels in the picture that
5316 are below the threshold value.
5317
5318 It accepts the following parameters:
5319
5320 @table @option
5321
5322 @item amount
5323 The percentage of the pixels that have to be below the threshold; it defaults to
5324 @code{98}.
5325
5326 @item threshold, thresh
5327 The threshold below which a pixel value is considered black; it defaults to
5328 @code{32}.
5329
5330 @end table
5331
5332 @section blend, tblend
5333
5334 Blend two video frames into each other.
5335
5336 The @code{blend} filter takes two input streams and outputs one
5337 stream, the first input is the "top" layer and second input is
5338 "bottom" layer.  By default, the output terminates when the longest input terminates.
5339
5340 The @code{tblend} (time blend) filter takes two consecutive frames
5341 from one single stream, and outputs the result obtained by blending
5342 the new frame on top of the old frame.
5343
5344 A description of the accepted options follows.
5345
5346 @table @option
5347 @item c0_mode
5348 @item c1_mode
5349 @item c2_mode
5350 @item c3_mode
5351 @item all_mode
5352 Set blend mode for specific pixel component or all pixel components in case
5353 of @var{all_mode}. Default value is @code{normal}.
5354
5355 Available values for component modes are:
5356 @table @samp
5357 @item addition
5358 @item grainmerge
5359 @item and
5360 @item average
5361 @item burn
5362 @item darken
5363 @item difference
5364 @item grainextract
5365 @item divide
5366 @item dodge
5367 @item freeze
5368 @item exclusion
5369 @item extremity
5370 @item glow
5371 @item hardlight
5372 @item hardmix
5373 @item heat
5374 @item lighten
5375 @item linearlight
5376 @item multiply
5377 @item multiply128
5378 @item negation
5379 @item normal
5380 @item or
5381 @item overlay
5382 @item phoenix
5383 @item pinlight
5384 @item reflect
5385 @item screen
5386 @item softlight
5387 @item subtract
5388 @item vividlight
5389 @item xor
5390 @end table
5391
5392 @item c0_opacity
5393 @item c1_opacity
5394 @item c2_opacity
5395 @item c3_opacity
5396 @item all_opacity
5397 Set blend opacity for specific pixel component or all pixel components in case
5398 of @var{all_opacity}. Only used in combination with pixel component blend modes.
5399
5400 @item c0_expr
5401 @item c1_expr
5402 @item c2_expr
5403 @item c3_expr
5404 @item all_expr
5405 Set blend expression for specific pixel component or all pixel components in case
5406 of @var{all_expr}. Note that related mode options will be ignored if those are set.
5407
5408 The expressions can use the following variables:
5409
5410 @table @option
5411 @item N
5412 The sequential number of the filtered frame, starting from @code{0}.
5413
5414 @item X
5415 @item Y
5416 the coordinates of the current sample
5417
5418 @item W
5419 @item H
5420 the width and height of currently filtered plane
5421
5422 @item SW
5423 @item SH
5424 Width and height scale depending on the currently filtered plane. It is the
5425 ratio between the corresponding luma plane number of pixels and the current
5426 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
5427 @code{0.5,0.5} for chroma planes.
5428
5429 @item T
5430 Time of the current frame, expressed in seconds.
5431
5432 @item TOP, A
5433 Value of pixel component at current location for first video frame (top layer).
5434
5435 @item BOTTOM, B
5436 Value of pixel component at current location for second video frame (bottom layer).
5437 @end table
5438 @end table
5439
5440 The @code{blend} filter also supports the @ref{framesync} options.
5441
5442 @subsection Examples
5443
5444 @itemize
5445 @item
5446 Apply transition from bottom layer to top layer in first 10 seconds:
5447 @example
5448 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
5449 @end example
5450
5451 @item
5452 Apply linear horizontal transition from top layer to bottom layer:
5453 @example
5454 blend=all_expr='A*(X/W)+B*(1-X/W)'
5455 @end example
5456
5457 @item
5458 Apply 1x1 checkerboard effect:
5459 @example
5460 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
5461 @end example
5462
5463 @item
5464 Apply uncover left effect:
5465 @example
5466 blend=all_expr='if(gte(N*SW+X,W),A,B)'
5467 @end example
5468
5469 @item
5470 Apply uncover down effect:
5471 @example
5472 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
5473 @end example
5474
5475 @item
5476 Apply uncover up-left effect:
5477 @example
5478 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
5479 @end example
5480
5481 @item
5482 Split diagonally video and shows top and bottom layer on each side:
5483 @example
5484 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
5485 @end example
5486
5487 @item
5488 Display differences between the current and the previous frame:
5489 @example
5490 tblend=all_mode=grainextract
5491 @end example
5492 @end itemize
5493
5494 @section boxblur
5495
5496 Apply a boxblur algorithm to the input video.
5497
5498 It accepts the following parameters:
5499
5500 @table @option
5501
5502 @item luma_radius, lr
5503 @item luma_power, lp
5504 @item chroma_radius, cr
5505 @item chroma_power, cp
5506 @item alpha_radius, ar
5507 @item alpha_power, ap
5508
5509 @end table
5510
5511 A description of the accepted options follows.
5512
5513 @table @option
5514 @item luma_radius, lr
5515 @item chroma_radius, cr
5516 @item alpha_radius, ar
5517 Set an expression for the box radius in pixels used for blurring the
5518 corresponding input plane.
5519
5520 The radius value must be a non-negative number, and must not be
5521 greater than the value of the expression @code{min(w,h)/2} for the
5522 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
5523 planes.
5524
5525 Default value for @option{luma_radius} is "2". If not specified,
5526 @option{chroma_radius} and @option{alpha_radius} default to the
5527 corresponding value set for @option{luma_radius}.
5528
5529 The expressions can contain the following constants:
5530 @table @option
5531 @item w
5532 @item h
5533 The input width and height in pixels.
5534
5535 @item cw
5536 @item ch
5537 The input chroma image width and height in pixels.
5538
5539 @item hsub
5540 @item vsub
5541 The horizontal and vertical chroma subsample values. For example, for the
5542 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
5543 @end table
5544
5545 @item luma_power, lp
5546 @item chroma_power, cp
5547 @item alpha_power, ap
5548 Specify how many times the boxblur filter is applied to the
5549 corresponding plane.
5550
5551 Default value for @option{luma_power} is 2. If not specified,
5552 @option{chroma_power} and @option{alpha_power} default to the
5553 corresponding value set for @option{luma_power}.
5554
5555 A value of 0 will disable the effect.
5556 @end table
5557
5558 @subsection Examples
5559
5560 @itemize
5561 @item
5562 Apply a boxblur filter with the luma, chroma, and alpha radii
5563 set to 2:
5564 @example
5565 boxblur=luma_radius=2:luma_power=1
5566 boxblur=2:1
5567 @end example
5568
5569 @item
5570 Set the luma radius to 2, and alpha and chroma radius to 0:
5571 @example
5572 boxblur=2:1:cr=0:ar=0
5573 @end example
5574
5575 @item
5576 Set the luma and chroma radii to a fraction of the video dimension:
5577 @example
5578 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
5579 @end example
5580 @end itemize
5581
5582 @section bwdif
5583
5584 Deinterlace the input video ("bwdif" stands for "Bob Weaver
5585 Deinterlacing Filter").
5586
5587 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
5588 interpolation algorithms.
5589 It accepts the following parameters:
5590
5591 @table @option
5592 @item mode
5593 The interlacing mode to adopt. It accepts one of the following values:
5594
5595 @table @option
5596 @item 0, send_frame
5597 Output one frame for each frame.
5598 @item 1, send_field
5599 Output one frame for each field.
5600 @end table
5601
5602 The default value is @code{send_field}.
5603
5604 @item parity
5605 The picture field parity assumed for the input interlaced video. It accepts one
5606 of the following values:
5607
5608 @table @option
5609 @item 0, tff
5610 Assume the top field is first.
5611 @item 1, bff
5612 Assume the bottom field is first.
5613 @item -1, auto
5614 Enable automatic detection of field parity.
5615 @end table
5616
5617 The default value is @code{auto}.
5618 If the interlacing is unknown or the decoder does not export this information,
5619 top field first will be assumed.
5620
5621 @item deint
5622 Specify which frames to deinterlace. Accept one of the following
5623 values:
5624
5625 @table @option
5626 @item 0, all
5627 Deinterlace all frames.
5628 @item 1, interlaced
5629 Only deinterlace frames marked as interlaced.
5630 @end table
5631
5632 The default value is @code{all}.
5633 @end table
5634
5635 @section chromakey
5636 YUV colorspace color/chroma keying.
5637
5638 The filter accepts the following options:
5639
5640 @table @option
5641 @item color
5642 The color which will be replaced with transparency.
5643
5644 @item similarity
5645 Similarity percentage with the key color.
5646
5647 0.01 matches only the exact key color, while 1.0 matches everything.
5648
5649 @item blend
5650 Blend percentage.
5651
5652 0.0 makes pixels either fully transparent, or not transparent at all.
5653
5654 Higher values result in semi-transparent pixels, with a higher transparency
5655 the more similar the pixels color is to the key color.
5656
5657 @item yuv
5658 Signals that the color passed is already in YUV instead of RGB.
5659
5660 Literal colors like "green" or "red" don't make sense with this enabled anymore.
5661 This can be used to pass exact YUV values as hexadecimal numbers.
5662 @end table
5663
5664 @subsection Examples
5665
5666 @itemize
5667 @item
5668 Make every green pixel in the input image transparent:
5669 @example
5670 ffmpeg -i input.png -vf chromakey=green out.png
5671 @end example
5672
5673 @item
5674 Overlay a greenscreen-video on top of a static black background.
5675 @example
5676 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
5677 @end example
5678 @end itemize
5679
5680 @section ciescope
5681
5682 Display CIE color diagram with pixels overlaid onto it.
5683
5684 The filter accepts the following options:
5685
5686 @table @option
5687 @item system
5688 Set color system.
5689
5690 @table @samp
5691 @item ntsc, 470m
5692 @item ebu, 470bg
5693 @item smpte
5694 @item 240m
5695 @item apple
5696 @item widergb
5697 @item cie1931
5698 @item rec709, hdtv
5699 @item uhdtv, rec2020
5700 @end table
5701
5702 @item cie
5703 Set CIE system.
5704
5705 @table @samp
5706 @item xyy
5707 @item ucs
5708 @item luv
5709 @end table
5710
5711 @item gamuts
5712 Set what gamuts to draw.
5713
5714 See @code{system} option for available values.
5715
5716 @item size, s
5717 Set ciescope size, by default set to 512.
5718
5719 @item intensity, i
5720 Set intensity used to map input pixel values to CIE diagram.
5721
5722 @item contrast
5723 Set contrast used to draw tongue colors that are out of active color system gamut.
5724
5725 @item corrgamma
5726 Correct gamma displayed on scope, by default enabled.
5727
5728 @item showwhite
5729 Show white point on CIE diagram, by default disabled.
5730
5731 @item gamma
5732 Set input gamma. Used only with XYZ input color space.
5733 @end table
5734
5735 @section codecview
5736
5737 Visualize information exported by some codecs.
5738
5739 Some codecs can export information through frames using side-data or other
5740 means. For example, some MPEG based codecs export motion vectors through the
5741 @var{export_mvs} flag in the codec @option{flags2} option.
5742
5743 The filter accepts the following option:
5744
5745 @table @option
5746 @item mv
5747 Set motion vectors to visualize.
5748
5749 Available flags for @var{mv} are:
5750
5751 @table @samp
5752 @item pf
5753 forward predicted MVs of P-frames
5754 @item bf
5755 forward predicted MVs of B-frames
5756 @item bb
5757 backward predicted MVs of B-frames
5758 @end table
5759
5760 @item qp
5761 Display quantization parameters using the chroma planes.
5762
5763 @item mv_type, mvt
5764 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
5765
5766 Available flags for @var{mv_type} are:
5767
5768 @table @samp
5769 @item fp
5770 forward predicted MVs
5771 @item bp
5772 backward predicted MVs
5773 @end table
5774
5775 @item frame_type, ft
5776 Set frame type to visualize motion vectors of.
5777
5778 Available flags for @var{frame_type} are:
5779
5780 @table @samp
5781 @item if
5782 intra-coded frames (I-frames)
5783 @item pf
5784 predicted frames (P-frames)
5785 @item bf
5786 bi-directionally predicted frames (B-frames)
5787 @end table
5788 @end table
5789
5790 @subsection Examples
5791
5792 @itemize
5793 @item
5794 Visualize forward predicted MVs of all frames using @command{ffplay}:
5795 @example
5796 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
5797 @end example
5798
5799 @item
5800 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
5801 @example
5802 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
5803 @end example
5804 @end itemize
5805
5806 @section colorbalance
5807 Modify intensity of primary colors (red, green and blue) of input frames.
5808
5809 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
5810 regions for the red-cyan, green-magenta or blue-yellow balance.
5811
5812 A positive adjustment value shifts the balance towards the primary color, a negative
5813 value towards the complementary color.
5814
5815 The filter accepts the following options:
5816
5817 @table @option
5818 @item rs
5819 @item gs
5820 @item bs
5821 Adjust red, green and blue shadows (darkest pixels).
5822
5823 @item rm
5824 @item gm
5825 @item bm
5826 Adjust red, green and blue midtones (medium pixels).
5827
5828 @item rh
5829 @item gh
5830 @item bh
5831 Adjust red, green and blue highlights (brightest pixels).
5832
5833 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
5834 @end table
5835
5836 @subsection Examples
5837
5838 @itemize
5839 @item
5840 Add red color cast to shadows:
5841 @example
5842 colorbalance=rs=.3
5843 @end example
5844 @end itemize
5845
5846 @section colorkey
5847 RGB colorspace color keying.
5848
5849 The filter accepts the following options:
5850
5851 @table @option
5852 @item color
5853 The color which will be replaced with transparency.
5854
5855 @item similarity
5856 Similarity percentage with the key color.
5857
5858 0.01 matches only the exact key color, while 1.0 matches everything.
5859
5860 @item blend
5861 Blend percentage.
5862
5863 0.0 makes pixels either fully transparent, or not transparent at all.
5864
5865 Higher values result in semi-transparent pixels, with a higher transparency
5866 the more similar the pixels color is to the key color.
5867 @end table
5868
5869 @subsection Examples
5870
5871 @itemize
5872 @item
5873 Make every green pixel in the input image transparent:
5874 @example
5875 ffmpeg -i input.png -vf colorkey=green out.png
5876 @end example
5877
5878 @item
5879 Overlay a greenscreen-video on top of a static background image.
5880 @example
5881 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
5882 @end example
5883 @end itemize
5884
5885 @section colorlevels
5886
5887 Adjust video input frames using levels.
5888
5889 The filter accepts the following options:
5890
5891 @table @option
5892 @item rimin
5893 @item gimin
5894 @item bimin
5895 @item aimin
5896 Adjust red, green, blue and alpha input black point.
5897 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
5898
5899 @item rimax
5900 @item gimax
5901 @item bimax
5902 @item aimax
5903 Adjust red, green, blue and alpha input white point.
5904 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
5905
5906 Input levels are used to lighten highlights (bright tones), darken shadows
5907 (dark tones), change the balance of bright and dark tones.
5908
5909 @item romin
5910 @item gomin
5911 @item bomin
5912 @item aomin
5913 Adjust red, green, blue and alpha output black point.
5914 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
5915
5916 @item romax
5917 @item gomax
5918 @item bomax
5919 @item aomax
5920 Adjust red, green, blue and alpha output white point.
5921 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
5922
5923 Output levels allows manual selection of a constrained output level range.
5924 @end table
5925
5926 @subsection Examples
5927
5928 @itemize
5929 @item
5930 Make video output darker:
5931 @example
5932 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
5933 @end example
5934
5935 @item
5936 Increase contrast:
5937 @example
5938 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
5939 @end example
5940
5941 @item
5942 Make video output lighter:
5943 @example
5944 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
5945 @end example
5946
5947 @item
5948 Increase brightness:
5949 @example
5950 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
5951 @end example
5952 @end itemize
5953
5954 @section colorchannelmixer
5955
5956 Adjust video input frames by re-mixing color channels.
5957
5958 This filter modifies a color channel by adding the values associated to
5959 the other channels of the same pixels. For example if the value to
5960 modify is red, the output value will be:
5961 @example
5962 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
5963 @end example
5964
5965 The filter accepts the following options:
5966
5967 @table @option
5968 @item rr
5969 @item rg
5970 @item rb
5971 @item ra
5972 Adjust contribution of input red, green, blue and alpha channels for output red channel.
5973 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
5974
5975 @item gr
5976 @item gg
5977 @item gb
5978 @item ga
5979 Adjust contribution of input red, green, blue and alpha channels for output green channel.
5980 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
5981
5982 @item br
5983 @item bg
5984 @item bb
5985 @item ba
5986 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
5987 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
5988
5989 @item ar
5990 @item ag
5991 @item ab
5992 @item aa
5993 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
5994 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
5995
5996 Allowed ranges for options are @code{[-2.0, 2.0]}.
5997 @end table
5998
5999 @subsection Examples
6000
6001 @itemize
6002 @item
6003 Convert source to grayscale:
6004 @example
6005 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
6006 @end example
6007 @item
6008 Simulate sepia tones:
6009 @example
6010 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
6011 @end example
6012 @end itemize
6013
6014 @section colormatrix
6015
6016 Convert color matrix.
6017
6018 The filter accepts the following options:
6019
6020 @table @option
6021 @item src
6022 @item dst
6023 Specify the source and destination color matrix. Both values must be
6024 specified.
6025
6026 The accepted values are:
6027 @table @samp
6028 @item bt709
6029 BT.709
6030
6031 @item fcc
6032 FCC
6033
6034 @item bt601
6035 BT.601
6036
6037 @item bt470
6038 BT.470
6039
6040 @item bt470bg
6041 BT.470BG
6042
6043 @item smpte170m
6044 SMPTE-170M
6045
6046 @item smpte240m
6047 SMPTE-240M
6048
6049 @item bt2020
6050 BT.2020
6051 @end table
6052 @end table
6053
6054 For example to convert from BT.601 to SMPTE-240M, use the command:
6055 @example
6056 colormatrix=bt601:smpte240m
6057 @end example
6058
6059 @section colorspace
6060
6061 Convert colorspace, transfer characteristics or color primaries.
6062 Input video needs to have an even size.
6063
6064 The filter accepts the following options:
6065
6066 @table @option
6067 @anchor{all}
6068 @item all
6069 Specify all color properties at once.
6070
6071 The accepted values are:
6072 @table @samp
6073 @item bt470m
6074 BT.470M
6075
6076 @item bt470bg
6077 BT.470BG
6078
6079 @item bt601-6-525
6080 BT.601-6 525
6081
6082 @item bt601-6-625
6083 BT.601-6 625
6084
6085 @item bt709
6086 BT.709
6087
6088 @item smpte170m
6089 SMPTE-170M
6090
6091 @item smpte240m
6092 SMPTE-240M
6093
6094 @item bt2020
6095 BT.2020
6096
6097 @end table
6098
6099 @anchor{space}
6100 @item space
6101 Specify output colorspace.
6102
6103 The accepted values are:
6104 @table @samp
6105 @item bt709
6106 BT.709
6107
6108 @item fcc
6109 FCC
6110
6111 @item bt470bg
6112 BT.470BG or BT.601-6 625
6113
6114 @item smpte170m
6115 SMPTE-170M or BT.601-6 525
6116
6117 @item smpte240m
6118 SMPTE-240M
6119
6120 @item ycgco
6121 YCgCo
6122
6123 @item bt2020ncl
6124 BT.2020 with non-constant luminance
6125
6126 @end table
6127
6128 @anchor{trc}
6129 @item trc
6130 Specify output transfer characteristics.
6131
6132 The accepted values are:
6133 @table @samp
6134 @item bt709
6135 BT.709
6136
6137 @item bt470m
6138 BT.470M
6139
6140 @item bt470bg
6141 BT.470BG
6142
6143 @item gamma22
6144 Constant gamma of 2.2
6145
6146 @item gamma28
6147 Constant gamma of 2.8
6148
6149 @item smpte170m
6150 SMPTE-170M, BT.601-6 625 or BT.601-6 525
6151
6152 @item smpte240m
6153 SMPTE-240M
6154
6155 @item srgb
6156 SRGB
6157
6158 @item iec61966-2-1
6159 iec61966-2-1
6160
6161 @item iec61966-2-4
6162 iec61966-2-4
6163
6164 @item xvycc
6165 xvycc
6166
6167 @item bt2020-10
6168 BT.2020 for 10-bits content
6169
6170 @item bt2020-12
6171 BT.2020 for 12-bits content
6172
6173 @end table
6174
6175 @anchor{primaries}
6176 @item primaries
6177 Specify output color primaries.
6178
6179 The accepted values are:
6180 @table @samp
6181 @item bt709
6182 BT.709
6183
6184 @item bt470m
6185 BT.470M
6186
6187 @item bt470bg
6188 BT.470BG or BT.601-6 625
6189
6190 @item smpte170m
6191 SMPTE-170M or BT.601-6 525
6192
6193 @item smpte240m
6194 SMPTE-240M
6195
6196 @item film
6197 film
6198
6199 @item smpte431
6200 SMPTE-431
6201
6202 @item smpte432
6203 SMPTE-432
6204
6205 @item bt2020
6206 BT.2020
6207
6208 @item jedec-p22
6209 JEDEC P22 phosphors
6210
6211 @end table
6212
6213 @anchor{range}
6214 @item range
6215 Specify output color range.
6216
6217 The accepted values are:
6218 @table @samp
6219 @item tv
6220 TV (restricted) range
6221
6222 @item mpeg
6223 MPEG (restricted) range
6224
6225 @item pc
6226 PC (full) range
6227
6228 @item jpeg
6229 JPEG (full) range
6230
6231 @end table
6232
6233 @item format
6234 Specify output color format.
6235
6236 The accepted values are:
6237 @table @samp
6238 @item yuv420p
6239 YUV 4:2:0 planar 8-bits
6240
6241 @item yuv420p10
6242 YUV 4:2:0 planar 10-bits
6243
6244 @item yuv420p12
6245 YUV 4:2:0 planar 12-bits
6246
6247 @item yuv422p
6248 YUV 4:2:2 planar 8-bits
6249
6250 @item yuv422p10
6251 YUV 4:2:2 planar 10-bits
6252
6253 @item yuv422p12
6254 YUV 4:2:2 planar 12-bits
6255
6256 @item yuv444p
6257 YUV 4:4:4 planar 8-bits
6258
6259 @item yuv444p10
6260 YUV 4:4:4 planar 10-bits
6261
6262 @item yuv444p12
6263 YUV 4:4:4 planar 12-bits
6264
6265 @end table
6266
6267 @item fast
6268 Do a fast conversion, which skips gamma/primary correction. This will take
6269 significantly less CPU, but will be mathematically incorrect. To get output
6270 compatible with that produced by the colormatrix filter, use fast=1.
6271
6272 @item dither
6273 Specify dithering mode.
6274
6275 The accepted values are:
6276 @table @samp
6277 @item none
6278 No dithering
6279
6280 @item fsb
6281 Floyd-Steinberg dithering
6282 @end table
6283
6284 @item wpadapt
6285 Whitepoint adaptation mode.
6286
6287 The accepted values are:
6288 @table @samp
6289 @item bradford
6290 Bradford whitepoint adaptation
6291
6292 @item vonkries
6293 von Kries whitepoint adaptation
6294
6295 @item identity
6296 identity whitepoint adaptation (i.e. no whitepoint adaptation)
6297 @end table
6298
6299 @item iall
6300 Override all input properties at once. Same accepted values as @ref{all}.
6301
6302 @item ispace
6303 Override input colorspace. Same accepted values as @ref{space}.
6304
6305 @item iprimaries
6306 Override input color primaries. Same accepted values as @ref{primaries}.
6307
6308 @item itrc
6309 Override input transfer characteristics. Same accepted values as @ref{trc}.
6310
6311 @item irange
6312 Override input color range. Same accepted values as @ref{range}.
6313
6314 @end table
6315
6316 The filter converts the transfer characteristics, color space and color
6317 primaries to the specified user values. The output value, if not specified,
6318 is set to a default value based on the "all" property. If that property is
6319 also not specified, the filter will log an error. The output color range and
6320 format default to the same value as the input color range and format. The
6321 input transfer characteristics, color space, color primaries and color range
6322 should be set on the input data. If any of these are missing, the filter will
6323 log an error and no conversion will take place.
6324
6325 For example to convert the input to SMPTE-240M, use the command:
6326 @example
6327 colorspace=smpte240m
6328 @end example
6329
6330 @section convolution
6331
6332 Apply convolution 3x3, 5x5 or 7x7 filter.
6333
6334 The filter accepts the following options:
6335
6336 @table @option
6337 @item 0m
6338 @item 1m
6339 @item 2m
6340 @item 3m
6341 Set matrix for each plane.
6342 Matrix is sequence of 9, 25 or 49 signed integers.
6343
6344 @item 0rdiv
6345 @item 1rdiv
6346 @item 2rdiv
6347 @item 3rdiv
6348 Set multiplier for calculated value for each plane.
6349
6350 @item 0bias
6351 @item 1bias
6352 @item 2bias
6353 @item 3bias
6354 Set bias for each plane. This value is added to the result of the multiplication.
6355 Useful for making the overall image brighter or darker. Default is 0.0.
6356 @end table
6357
6358 @subsection Examples
6359
6360 @itemize
6361 @item
6362 Apply sharpen:
6363 @example
6364 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"
6365 @end example
6366
6367 @item
6368 Apply blur:
6369 @example
6370 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"
6371 @end example
6372
6373 @item
6374 Apply edge enhance:
6375 @example
6376 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"
6377 @end example
6378
6379 @item
6380 Apply edge detect:
6381 @example
6382 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"
6383 @end example
6384
6385 @item
6386 Apply laplacian edge detector which includes diagonals:
6387 @example
6388 convolution="1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0"
6389 @end example
6390
6391 @item
6392 Apply emboss:
6393 @example
6394 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"
6395 @end example
6396 @end itemize
6397
6398 @section convolve
6399
6400 Apply 2D convolution of video stream in frequency domain using second stream
6401 as impulse.
6402
6403 The filter accepts the following options:
6404
6405 @table @option
6406 @item planes
6407 Set which planes to process.
6408
6409 @item impulse
6410 Set which impulse video frames will be processed, can be @var{first}
6411 or @var{all}. Default is @var{all}.
6412 @end table
6413
6414 The @code{convolve} filter also supports the @ref{framesync} options.
6415
6416 @section copy
6417
6418 Copy the input video source unchanged to the output. This is mainly useful for
6419 testing purposes.
6420
6421 @anchor{coreimage}
6422 @section coreimage
6423 Video filtering on GPU using Apple's CoreImage API on OSX.
6424
6425 Hardware acceleration is based on an OpenGL context. Usually, this means it is
6426 processed by video hardware. However, software-based OpenGL implementations
6427 exist which means there is no guarantee for hardware processing. It depends on
6428 the respective OSX.
6429
6430 There are many filters and image generators provided by Apple that come with a
6431 large variety of options. The filter has to be referenced by its name along
6432 with its options.
6433
6434 The coreimage filter accepts the following options:
6435 @table @option
6436 @item list_filters
6437 List all available filters and generators along with all their respective
6438 options as well as possible minimum and maximum values along with the default
6439 values.
6440 @example
6441 list_filters=true
6442 @end example
6443
6444 @item filter
6445 Specify all filters by their respective name and options.
6446 Use @var{list_filters} to determine all valid filter names and options.
6447 Numerical options are specified by a float value and are automatically clamped
6448 to their respective value range.  Vector and color options have to be specified
6449 by a list of space separated float values. Character escaping has to be done.
6450 A special option name @code{default} is available to use default options for a
6451 filter.
6452
6453 It is required to specify either @code{default} or at least one of the filter options.
6454 All omitted options are used with their default values.
6455 The syntax of the filter string is as follows:
6456 @example
6457 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
6458 @end example
6459
6460 @item output_rect
6461 Specify a rectangle where the output of the filter chain is copied into the
6462 input image. It is given by a list of space separated float values:
6463 @example
6464 output_rect=x\ y\ width\ height
6465 @end example
6466 If not given, the output rectangle equals the dimensions of the input image.
6467 The output rectangle is automatically cropped at the borders of the input
6468 image. Negative values are valid for each component.
6469 @example
6470 output_rect=25\ 25\ 100\ 100
6471 @end example
6472 @end table
6473
6474 Several filters can be chained for successive processing without GPU-HOST
6475 transfers allowing for fast processing of complex filter chains.
6476 Currently, only filters with zero (generators) or exactly one (filters) input
6477 image and one output image are supported. Also, transition filters are not yet
6478 usable as intended.
6479
6480 Some filters generate output images with additional padding depending on the
6481 respective filter kernel. The padding is automatically removed to ensure the
6482 filter output has the same size as the input image.
6483
6484 For image generators, the size of the output image is determined by the
6485 previous output image of the filter chain or the input image of the whole
6486 filterchain, respectively. The generators do not use the pixel information of
6487 this image to generate their output. However, the generated output is
6488 blended onto this image, resulting in partial or complete coverage of the
6489 output image.
6490
6491 The @ref{coreimagesrc} video source can be used for generating input images
6492 which are directly fed into the filter chain. By using it, providing input
6493 images by another video source or an input video is not required.
6494
6495 @subsection Examples
6496
6497 @itemize
6498
6499 @item
6500 List all filters available:
6501 @example
6502 coreimage=list_filters=true
6503 @end example
6504
6505 @item
6506 Use the CIBoxBlur filter with default options to blur an image:
6507 @example
6508 coreimage=filter=CIBoxBlur@@default
6509 @end example
6510
6511 @item
6512 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
6513 its center at 100x100 and a radius of 50 pixels:
6514 @example
6515 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
6516 @end example
6517
6518 @item
6519 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
6520 given as complete and escaped command-line for Apple's standard bash shell:
6521 @example
6522 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
6523 @end example
6524 @end itemize
6525
6526 @section crop
6527
6528 Crop the input video to given dimensions.
6529
6530 It accepts the following parameters:
6531
6532 @table @option
6533 @item w, out_w
6534 The width of the output video. It defaults to @code{iw}.
6535 This expression is evaluated only once during the filter
6536 configuration, or when the @samp{w} or @samp{out_w} command is sent.
6537
6538 @item h, out_h
6539 The height of the output video. It defaults to @code{ih}.
6540 This expression is evaluated only once during the filter
6541 configuration, or when the @samp{h} or @samp{out_h} command is sent.
6542
6543 @item x
6544 The horizontal position, in the input video, of the left edge of the output
6545 video. It defaults to @code{(in_w-out_w)/2}.
6546 This expression is evaluated per-frame.
6547
6548 @item y
6549 The vertical position, in the input video, of the top edge of the output video.
6550 It defaults to @code{(in_h-out_h)/2}.
6551 This expression is evaluated per-frame.
6552
6553 @item keep_aspect
6554 If set to 1 will force the output display aspect ratio
6555 to be the same of the input, by changing the output sample aspect
6556 ratio. It defaults to 0.
6557
6558 @item exact
6559 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
6560 width/height/x/y as specified and will not be rounded to nearest smaller value.
6561 It defaults to 0.
6562 @end table
6563
6564 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
6565 expressions containing the following constants:
6566
6567 @table @option
6568 @item x
6569 @item y
6570 The computed values for @var{x} and @var{y}. They are evaluated for
6571 each new frame.
6572
6573 @item in_w
6574 @item in_h
6575 The input width and height.
6576
6577 @item iw
6578 @item ih
6579 These are the same as @var{in_w} and @var{in_h}.
6580
6581 @item out_w
6582 @item out_h
6583 The output (cropped) width and height.
6584
6585 @item ow
6586 @item oh
6587 These are the same as @var{out_w} and @var{out_h}.
6588
6589 @item a
6590 same as @var{iw} / @var{ih}
6591
6592 @item sar
6593 input sample aspect ratio
6594
6595 @item dar
6596 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
6597
6598 @item hsub
6599 @item vsub
6600 horizontal and vertical chroma subsample values. For example for the
6601 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6602
6603 @item n
6604 The number of the input frame, starting from 0.
6605
6606 @item pos
6607 the position in the file of the input frame, NAN if unknown
6608
6609 @item t
6610 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
6611
6612 @end table
6613
6614 The expression for @var{out_w} may depend on the value of @var{out_h},
6615 and the expression for @var{out_h} may depend on @var{out_w}, but they
6616 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
6617 evaluated after @var{out_w} and @var{out_h}.
6618
6619 The @var{x} and @var{y} parameters specify the expressions for the
6620 position of the top-left corner of the output (non-cropped) area. They
6621 are evaluated for each frame. If the evaluated value is not valid, it
6622 is approximated to the nearest valid value.
6623
6624 The expression for @var{x} may depend on @var{y}, and the expression
6625 for @var{y} may depend on @var{x}.
6626
6627 @subsection Examples
6628
6629 @itemize
6630 @item
6631 Crop area with size 100x100 at position (12,34).
6632 @example
6633 crop=100:100:12:34
6634 @end example
6635
6636 Using named options, the example above becomes:
6637 @example
6638 crop=w=100:h=100:x=12:y=34
6639 @end example
6640
6641 @item
6642 Crop the central input area with size 100x100:
6643 @example
6644 crop=100:100
6645 @end example
6646
6647 @item
6648 Crop the central input area with size 2/3 of the input video:
6649 @example
6650 crop=2/3*in_w:2/3*in_h
6651 @end example
6652
6653 @item
6654 Crop the input video central square:
6655 @example
6656 crop=out_w=in_h
6657 crop=in_h
6658 @end example
6659
6660 @item
6661 Delimit the rectangle with the top-left corner placed at position
6662 100:100 and the right-bottom corner corresponding to the right-bottom
6663 corner of the input image.
6664 @example
6665 crop=in_w-100:in_h-100:100:100
6666 @end example
6667
6668 @item
6669 Crop 10 pixels from the left and right borders, and 20 pixels from
6670 the top and bottom borders
6671 @example
6672 crop=in_w-2*10:in_h-2*20
6673 @end example
6674
6675 @item
6676 Keep only the bottom right quarter of the input image:
6677 @example
6678 crop=in_w/2:in_h/2:in_w/2:in_h/2
6679 @end example
6680
6681 @item
6682 Crop height for getting Greek harmony:
6683 @example
6684 crop=in_w:1/PHI*in_w
6685 @end example
6686
6687 @item
6688 Apply trembling effect:
6689 @example
6690 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)
6691 @end example
6692
6693 @item
6694 Apply erratic camera effect depending on timestamp:
6695 @example
6696 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)"
6697 @end example
6698
6699 @item
6700 Set x depending on the value of y:
6701 @example
6702 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
6703 @end example
6704 @end itemize
6705
6706 @subsection Commands
6707
6708 This filter supports the following commands:
6709 @table @option
6710 @item w, out_w
6711 @item h, out_h
6712 @item x
6713 @item y
6714 Set width/height of the output video and the horizontal/vertical position
6715 in the input video.
6716 The command accepts the same syntax of the corresponding option.
6717
6718 If the specified expression is not valid, it is kept at its current
6719 value.
6720 @end table
6721
6722 @section cropdetect
6723
6724 Auto-detect the crop size.
6725
6726 It calculates the necessary cropping parameters and prints the
6727 recommended parameters via the logging system. The detected dimensions
6728 correspond to the non-black area of the input video.
6729
6730 It accepts the following parameters:
6731
6732 @table @option
6733
6734 @item limit
6735 Set higher black value threshold, which can be optionally specified
6736 from nothing (0) to everything (255 for 8-bit based formats). An intensity
6737 value greater to the set value is considered non-black. It defaults to 24.
6738 You can also specify a value between 0.0 and 1.0 which will be scaled depending
6739 on the bitdepth of the pixel format.
6740
6741 @item round
6742 The value which the width/height should be divisible by. It defaults to
6743 16. The offset is automatically adjusted to center the video. Use 2 to
6744 get only even dimensions (needed for 4:2:2 video). 16 is best when
6745 encoding to most video codecs.
6746
6747 @item reset_count, reset
6748 Set the counter that determines after how many frames cropdetect will
6749 reset the previously detected largest video area and start over to
6750 detect the current optimal crop area. Default value is 0.
6751
6752 This can be useful when channel logos distort the video area. 0
6753 indicates 'never reset', and returns the largest area encountered during
6754 playback.
6755 @end table
6756
6757 @anchor{curves}
6758 @section curves
6759
6760 Apply color adjustments using curves.
6761
6762 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
6763 component (red, green and blue) has its values defined by @var{N} key points
6764 tied from each other using a smooth curve. The x-axis represents the pixel
6765 values from the input frame, and the y-axis the new pixel values to be set for
6766 the output frame.
6767
6768 By default, a component curve is defined by the two points @var{(0;0)} and
6769 @var{(1;1)}. This creates a straight line where each original pixel value is
6770 "adjusted" to its own value, which means no change to the image.
6771
6772 The filter allows you to redefine these two points and add some more. A new
6773 curve (using a natural cubic spline interpolation) will be define to pass
6774 smoothly through all these new coordinates. The new defined points needs to be
6775 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
6776 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
6777 the vector spaces, the values will be clipped accordingly.
6778
6779 The filter accepts the following options:
6780
6781 @table @option
6782 @item preset
6783 Select one of the available color presets. This option can be used in addition
6784 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
6785 options takes priority on the preset values.
6786 Available presets are:
6787 @table @samp
6788 @item none
6789 @item color_negative
6790 @item cross_process
6791 @item darker
6792 @item increase_contrast
6793 @item lighter
6794 @item linear_contrast
6795 @item medium_contrast
6796 @item negative
6797 @item strong_contrast
6798 @item vintage
6799 @end table
6800 Default is @code{none}.
6801 @item master, m
6802 Set the master key points. These points will define a second pass mapping. It
6803 is sometimes called a "luminance" or "value" mapping. It can be used with
6804 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
6805 post-processing LUT.
6806 @item red, r
6807 Set the key points for the red component.
6808 @item green, g
6809 Set the key points for the green component.
6810 @item blue, b
6811 Set the key points for the blue component.
6812 @item all
6813 Set the key points for all components (not including master).
6814 Can be used in addition to the other key points component
6815 options. In this case, the unset component(s) will fallback on this
6816 @option{all} setting.
6817 @item psfile
6818 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
6819 @item plot
6820 Save Gnuplot script of the curves in specified file.
6821 @end table
6822
6823 To avoid some filtergraph syntax conflicts, each key points list need to be
6824 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
6825
6826 @subsection Examples
6827
6828 @itemize
6829 @item
6830 Increase slightly the middle level of blue:
6831 @example
6832 curves=blue='0/0 0.5/0.58 1/1'
6833 @end example
6834
6835 @item
6836 Vintage effect:
6837 @example
6838 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'
6839 @end example
6840 Here we obtain the following coordinates for each components:
6841 @table @var
6842 @item red
6843 @code{(0;0.11) (0.42;0.51) (1;0.95)}
6844 @item green
6845 @code{(0;0) (0.50;0.48) (1;1)}
6846 @item blue
6847 @code{(0;0.22) (0.49;0.44) (1;0.80)}
6848 @end table
6849
6850 @item
6851 The previous example can also be achieved with the associated built-in preset:
6852 @example
6853 curves=preset=vintage
6854 @end example
6855
6856 @item
6857 Or simply:
6858 @example
6859 curves=vintage
6860 @end example
6861
6862 @item
6863 Use a Photoshop preset and redefine the points of the green component:
6864 @example
6865 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
6866 @end example
6867
6868 @item
6869 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
6870 and @command{gnuplot}:
6871 @example
6872 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
6873 gnuplot -p /tmp/curves.plt
6874 @end example
6875 @end itemize
6876
6877 @section datascope
6878
6879 Video data analysis filter.
6880
6881 This filter shows hexadecimal pixel values of part of video.
6882
6883 The filter accepts the following options:
6884
6885 @table @option
6886 @item size, s
6887 Set output video size.
6888
6889 @item x
6890 Set x offset from where to pick pixels.
6891
6892 @item y
6893 Set y offset from where to pick pixels.
6894
6895 @item mode
6896 Set scope mode, can be one of the following:
6897 @table @samp
6898 @item mono
6899 Draw hexadecimal pixel values with white color on black background.
6900
6901 @item color
6902 Draw hexadecimal pixel values with input video pixel color on black
6903 background.
6904
6905 @item color2
6906 Draw hexadecimal pixel values on color background picked from input video,
6907 the text color is picked in such way so its always visible.
6908 @end table
6909
6910 @item axis
6911 Draw rows and columns numbers on left and top of video.
6912
6913 @item opacity
6914 Set background opacity.
6915 @end table
6916
6917 @section dctdnoiz
6918
6919 Denoise frames using 2D DCT (frequency domain filtering).
6920
6921 This filter is not designed for real time.
6922
6923 The filter accepts the following options:
6924
6925 @table @option
6926 @item sigma, s
6927 Set the noise sigma constant.
6928
6929 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
6930 coefficient (absolute value) below this threshold with be dropped.
6931
6932 If you need a more advanced filtering, see @option{expr}.
6933
6934 Default is @code{0}.
6935
6936 @item overlap
6937 Set number overlapping pixels for each block. Since the filter can be slow, you
6938 may want to reduce this value, at the cost of a less effective filter and the
6939 risk of various artefacts.
6940
6941 If the overlapping value doesn't permit processing the whole input width or
6942 height, a warning will be displayed and according borders won't be denoised.
6943
6944 Default value is @var{blocksize}-1, which is the best possible setting.
6945
6946 @item expr, e
6947 Set the coefficient factor expression.
6948
6949 For each coefficient of a DCT block, this expression will be evaluated as a
6950 multiplier value for the coefficient.
6951
6952 If this is option is set, the @option{sigma} option will be ignored.
6953
6954 The absolute value of the coefficient can be accessed through the @var{c}
6955 variable.
6956
6957 @item n
6958 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
6959 @var{blocksize}, which is the width and height of the processed blocks.
6960
6961 The default value is @var{3} (8x8) and can be raised to @var{4} for a
6962 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
6963 on the speed processing. Also, a larger block size does not necessarily means a
6964 better de-noising.
6965 @end table
6966
6967 @subsection Examples
6968
6969 Apply a denoise with a @option{sigma} of @code{4.5}:
6970 @example
6971 dctdnoiz=4.5
6972 @end example
6973
6974 The same operation can be achieved using the expression system:
6975 @example
6976 dctdnoiz=e='gte(c, 4.5*3)'
6977 @end example
6978
6979 Violent denoise using a block size of @code{16x16}:
6980 @example
6981 dctdnoiz=15:n=4
6982 @end example
6983
6984 @section deband
6985
6986 Remove banding artifacts from input video.
6987 It works by replacing banded pixels with average value of referenced pixels.
6988
6989 The filter accepts the following options:
6990
6991 @table @option
6992 @item 1thr
6993 @item 2thr
6994 @item 3thr
6995 @item 4thr
6996 Set banding detection threshold for each plane. Default is 0.02.
6997 Valid range is 0.00003 to 0.5.
6998 If difference between current pixel and reference pixel is less than threshold,
6999 it will be considered as banded.
7000
7001 @item range, r
7002 Banding detection range in pixels. Default is 16. If positive, random number
7003 in range 0 to set value will be used. If negative, exact absolute value
7004 will be used.
7005 The range defines square of four pixels around current pixel.
7006
7007 @item direction, d
7008 Set direction in radians from which four pixel will be compared. If positive,
7009 random direction from 0 to set direction will be picked. If negative, exact of
7010 absolute value will be picked. For example direction 0, -PI or -2*PI radians
7011 will pick only pixels on same row and -PI/2 will pick only pixels on same
7012 column.
7013
7014 @item blur, b
7015 If enabled, current pixel is compared with average value of all four
7016 surrounding pixels. The default is enabled. If disabled current pixel is
7017 compared with all four surrounding pixels. The pixel is considered banded
7018 if only all four differences with surrounding pixels are less than threshold.
7019
7020 @item coupling, c
7021 If enabled, current pixel is changed if and only if all pixel components are banded,
7022 e.g. banding detection threshold is triggered for all color components.
7023 The default is disabled.
7024 @end table
7025
7026 @anchor{decimate}
7027 @section decimate
7028
7029 Drop duplicated frames at regular intervals.
7030
7031 The filter accepts the following options:
7032
7033 @table @option
7034 @item cycle
7035 Set the number of frames from which one will be dropped. Setting this to
7036 @var{N} means one frame in every batch of @var{N} frames will be dropped.
7037 Default is @code{5}.
7038
7039 @item dupthresh
7040 Set the threshold for duplicate detection. If the difference metric for a frame
7041 is less than or equal to this value, then it is declared as duplicate. Default
7042 is @code{1.1}
7043
7044 @item scthresh
7045 Set scene change threshold. Default is @code{15}.
7046
7047 @item blockx
7048 @item blocky
7049 Set the size of the x and y-axis blocks used during metric calculations.
7050 Larger blocks give better noise suppression, but also give worse detection of
7051 small movements. Must be a power of two. Default is @code{32}.
7052
7053 @item ppsrc
7054 Mark main input as a pre-processed input and activate clean source input
7055 stream. This allows the input to be pre-processed with various filters to help
7056 the metrics calculation while keeping the frame selection lossless. When set to
7057 @code{1}, the first stream is for the pre-processed input, and the second
7058 stream is the clean source from where the kept frames are chosen. Default is
7059 @code{0}.
7060
7061 @item chroma
7062 Set whether or not chroma is considered in the metric calculations. Default is
7063 @code{1}.
7064 @end table
7065
7066 @section deconvolve
7067
7068 Apply 2D deconvolution of video stream in frequency domain using second stream
7069 as impulse.
7070
7071 The filter accepts the following options:
7072
7073 @table @option
7074 @item planes
7075 Set which planes to process.
7076
7077 @item impulse
7078 Set which impulse video frames will be processed, can be @var{first}
7079 or @var{all}. Default is @var{all}.
7080
7081 @item noise
7082 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
7083 and height are not same and not power of 2 or if stream prior to convolving
7084 had noise.
7085 @end table
7086
7087 The @code{deconvolve} filter also supports the @ref{framesync} options.
7088
7089 @section deflate
7090
7091 Apply deflate effect to the video.
7092
7093 This filter replaces the pixel by the local(3x3) average by taking into account
7094 only values lower than the pixel.
7095
7096 It accepts the following options:
7097
7098 @table @option
7099 @item threshold0
7100 @item threshold1
7101 @item threshold2
7102 @item threshold3
7103 Limit the maximum change for each plane, default is 65535.
7104 If 0, plane will remain unchanged.
7105 @end table
7106
7107 @section deflicker
7108
7109 Remove temporal frame luminance variations.
7110
7111 It accepts the following options:
7112
7113 @table @option
7114 @item size, s
7115 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
7116
7117 @item mode, m
7118 Set averaging mode to smooth temporal luminance variations.
7119
7120 Available values are:
7121 @table @samp
7122 @item am
7123 Arithmetic mean
7124
7125 @item gm
7126 Geometric mean
7127
7128 @item hm
7129 Harmonic mean
7130
7131 @item qm
7132 Quadratic mean
7133
7134 @item cm
7135 Cubic mean
7136
7137 @item pm
7138 Power mean
7139
7140 @item median
7141 Median
7142 @end table
7143
7144 @item bypass
7145 Do not actually modify frame. Useful when one only wants metadata.
7146 @end table
7147
7148 @section dejudder
7149
7150 Remove judder produced by partially interlaced telecined content.
7151
7152 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
7153 source was partially telecined content then the output of @code{pullup,dejudder}
7154 will have a variable frame rate. May change the recorded frame rate of the
7155 container. Aside from that change, this filter will not affect constant frame
7156 rate video.
7157
7158 The option available in this filter is:
7159 @table @option
7160
7161 @item cycle
7162 Specify the length of the window over which the judder repeats.
7163
7164 Accepts any integer greater than 1. Useful values are:
7165 @table @samp
7166
7167 @item 4
7168 If the original was telecined from 24 to 30 fps (Film to NTSC).
7169
7170 @item 5
7171 If the original was telecined from 25 to 30 fps (PAL to NTSC).
7172
7173 @item 20
7174 If a mixture of the two.
7175 @end table
7176
7177 The default is @samp{4}.
7178 @end table
7179
7180 @section delogo
7181
7182 Suppress a TV station logo by a simple interpolation of the surrounding
7183 pixels. Just set a rectangle covering the logo and watch it disappear
7184 (and sometimes something even uglier appear - your mileage may vary).
7185
7186 It accepts the following parameters:
7187 @table @option
7188
7189 @item x
7190 @item y
7191 Specify the top left corner coordinates of the logo. They must be
7192 specified.
7193
7194 @item w
7195 @item h
7196 Specify the width and height of the logo to clear. They must be
7197 specified.
7198
7199 @item band, t
7200 Specify the thickness of the fuzzy edge of the rectangle (added to
7201 @var{w} and @var{h}). The default value is 1. This option is
7202 deprecated, setting higher values should no longer be necessary and
7203 is not recommended.
7204
7205 @item show
7206 When set to 1, a green rectangle is drawn on the screen to simplify
7207 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
7208 The default value is 0.
7209
7210 The rectangle is drawn on the outermost pixels which will be (partly)
7211 replaced with interpolated values. The values of the next pixels
7212 immediately outside this rectangle in each direction will be used to
7213 compute the interpolated pixel values inside the rectangle.
7214
7215 @end table
7216
7217 @subsection Examples
7218
7219 @itemize
7220 @item
7221 Set a rectangle covering the area with top left corner coordinates 0,0
7222 and size 100x77, and a band of size 10:
7223 @example
7224 delogo=x=0:y=0:w=100:h=77:band=10
7225 @end example
7226
7227 @end itemize
7228
7229 @section deshake
7230
7231 Attempt to fix small changes in horizontal and/or vertical shift. This
7232 filter helps remove camera shake from hand-holding a camera, bumping a
7233 tripod, moving on a vehicle, etc.
7234
7235 The filter accepts the following options:
7236
7237 @table @option
7238
7239 @item x
7240 @item y
7241 @item w
7242 @item h
7243 Specify a rectangular area where to limit the search for motion
7244 vectors.
7245 If desired the search for motion vectors can be limited to a
7246 rectangular area of the frame defined by its top left corner, width
7247 and height. These parameters have the same meaning as the drawbox
7248 filter which can be used to visualise the position of the bounding
7249 box.
7250
7251 This is useful when simultaneous movement of subjects within the frame
7252 might be confused for camera motion by the motion vector search.
7253
7254 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
7255 then the full frame is used. This allows later options to be set
7256 without specifying the bounding box for the motion vector search.
7257
7258 Default - search the whole frame.
7259
7260 @item rx
7261 @item ry
7262 Specify the maximum extent of movement in x and y directions in the
7263 range 0-64 pixels. Default 16.
7264
7265 @item edge
7266 Specify how to generate pixels to fill blanks at the edge of the
7267 frame. Available values are:
7268 @table @samp
7269 @item blank, 0
7270 Fill zeroes at blank locations
7271 @item original, 1
7272 Original image at blank locations
7273 @item clamp, 2
7274 Extruded edge value at blank locations
7275 @item mirror, 3
7276 Mirrored edge at blank locations
7277 @end table
7278 Default value is @samp{mirror}.
7279
7280 @item blocksize
7281 Specify the blocksize to use for motion search. Range 4-128 pixels,
7282 default 8.
7283
7284 @item contrast
7285 Specify the contrast threshold for blocks. Only blocks with more than
7286 the specified contrast (difference between darkest and lightest
7287 pixels) will be considered. Range 1-255, default 125.
7288
7289 @item search
7290 Specify the search strategy. Available values are:
7291 @table @samp
7292 @item exhaustive, 0
7293 Set exhaustive search
7294 @item less, 1
7295 Set less exhaustive search.
7296 @end table
7297 Default value is @samp{exhaustive}.
7298
7299 @item filename
7300 If set then a detailed log of the motion search is written to the
7301 specified file.
7302
7303 @end table
7304
7305 @section despill
7306
7307 Remove unwanted contamination of foreground colors, caused by reflected color of
7308 greenscreen or bluescreen.
7309
7310 This filter accepts the following options:
7311
7312 @table @option
7313 @item type
7314 Set what type of despill to use.
7315
7316 @item mix
7317 Set how spillmap will be generated.
7318
7319 @item expand
7320 Set how much to get rid of still remaining spill.
7321
7322 @item red
7323 Controls amount of red in spill area.
7324
7325 @item green
7326 Controls amount of green in spill area.
7327 Should be -1 for greenscreen.
7328
7329 @item blue
7330 Controls amount of blue in spill area.
7331 Should be -1 for bluescreen.
7332
7333 @item brightness
7334 Controls brightness of spill area, preserving colors.
7335
7336 @item alpha
7337 Modify alpha from generated spillmap.
7338 @end table
7339
7340 @section detelecine
7341
7342 Apply an exact inverse of the telecine operation. It requires a predefined
7343 pattern specified using the pattern option which must be the same as that passed
7344 to the telecine filter.
7345
7346 This filter accepts the following options:
7347
7348 @table @option
7349 @item first_field
7350 @table @samp
7351 @item top, t
7352 top field first
7353 @item bottom, b
7354 bottom field first
7355 The default value is @code{top}.
7356 @end table
7357
7358 @item pattern
7359 A string of numbers representing the pulldown pattern you wish to apply.
7360 The default value is @code{23}.
7361
7362 @item start_frame
7363 A number representing position of the first frame with respect to the telecine
7364 pattern. This is to be used if the stream is cut. The default value is @code{0}.
7365 @end table
7366
7367 @section dilation
7368
7369 Apply dilation effect to the video.
7370
7371 This filter replaces the pixel by the local(3x3) maximum.
7372
7373 It accepts the following options:
7374
7375 @table @option
7376 @item threshold0
7377 @item threshold1
7378 @item threshold2
7379 @item threshold3
7380 Limit the maximum change for each plane, default is 65535.
7381 If 0, plane will remain unchanged.
7382
7383 @item coordinates
7384 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
7385 pixels are used.
7386
7387 Flags to local 3x3 coordinates maps like this:
7388
7389     1 2 3
7390     4   5
7391     6 7 8
7392 @end table
7393
7394 @section displace
7395
7396 Displace pixels as indicated by second and third input stream.
7397
7398 It takes three input streams and outputs one stream, the first input is the
7399 source, and second and third input are displacement maps.
7400
7401 The second input specifies how much to displace pixels along the
7402 x-axis, while the third input specifies how much to displace pixels
7403 along the y-axis.
7404 If one of displacement map streams terminates, last frame from that
7405 displacement map will be used.
7406
7407 Note that once generated, displacements maps can be reused over and over again.
7408
7409 A description of the accepted options follows.
7410
7411 @table @option
7412 @item edge
7413 Set displace behavior for pixels that are out of range.
7414
7415 Available values are:
7416 @table @samp
7417 @item blank
7418 Missing pixels are replaced by black pixels.
7419
7420 @item smear
7421 Adjacent pixels will spread out to replace missing pixels.
7422
7423 @item wrap
7424 Out of range pixels are wrapped so they point to pixels of other side.
7425
7426 @item mirror
7427 Out of range pixels will be replaced with mirrored pixels.
7428 @end table
7429 Default is @samp{smear}.
7430
7431 @end table
7432
7433 @subsection Examples
7434
7435 @itemize
7436 @item
7437 Add ripple effect to rgb input of video size hd720:
7438 @example
7439 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
7440 @end example
7441
7442 @item
7443 Add wave effect to rgb input of video size hd720:
7444 @example
7445 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
7446 @end example
7447 @end itemize
7448
7449 @section drawbox
7450
7451 Draw a colored box on the input image.
7452
7453 It accepts the following parameters:
7454
7455 @table @option
7456 @item x
7457 @item y
7458 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
7459
7460 @item width, w
7461 @item height, h
7462 The expressions which specify the width and height of the box; if 0 they are interpreted as
7463 the input width and height. It defaults to 0.
7464
7465 @item color, c
7466 Specify the color of the box to write. For the general syntax of this option,
7467 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
7468 value @code{invert} is used, the box edge color is the same as the
7469 video with inverted luma.
7470
7471 @item thickness, t
7472 The expression which sets the thickness of the box edge.
7473 A value of @code{fill} will create a filled box. Default value is @code{3}.
7474
7475 See below for the list of accepted constants.
7476
7477 @item replace
7478 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
7479 will overwrite the video's color and alpha pixels.
7480 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
7481 @end table
7482
7483 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
7484 following constants:
7485
7486 @table @option
7487 @item dar
7488 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
7489
7490 @item hsub
7491 @item vsub
7492 horizontal and vertical chroma subsample values. For example for the
7493 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7494
7495 @item in_h, ih
7496 @item in_w, iw
7497 The input width and height.
7498
7499 @item sar
7500 The input sample aspect ratio.
7501
7502 @item x
7503 @item y
7504 The x and y offset coordinates where the box is drawn.
7505
7506 @item w
7507 @item h
7508 The width and height of the drawn box.
7509
7510 @item t
7511 The thickness of the drawn box.
7512
7513 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
7514 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
7515
7516 @end table
7517
7518 @subsection Examples
7519
7520 @itemize
7521 @item
7522 Draw a black box around the edge of the input image:
7523 @example
7524 drawbox
7525 @end example
7526
7527 @item
7528 Draw a box with color red and an opacity of 50%:
7529 @example
7530 drawbox=10:20:200:60:red@@0.5
7531 @end example
7532
7533 The previous example can be specified as:
7534 @example
7535 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
7536 @end example
7537
7538 @item
7539 Fill the box with pink color:
7540 @example
7541 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
7542 @end example
7543
7544 @item
7545 Draw a 2-pixel red 2.40:1 mask:
7546 @example
7547 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
7548 @end example
7549 @end itemize
7550
7551 @section drawgrid
7552
7553 Draw a grid on the input image.
7554
7555 It accepts the following parameters:
7556
7557 @table @option
7558 @item x
7559 @item y
7560 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
7561
7562 @item width, w
7563 @item height, h
7564 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
7565 input width and height, respectively, minus @code{thickness}, so image gets
7566 framed. Default to 0.
7567
7568 @item color, c
7569 Specify the color of the grid. For the general syntax of this option,
7570 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
7571 value @code{invert} is used, the grid color is the same as the
7572 video with inverted luma.
7573
7574 @item thickness, t
7575 The expression which sets the thickness of the grid line. Default value is @code{1}.
7576
7577 See below for the list of accepted constants.
7578
7579 @item replace
7580 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
7581 will overwrite the video's color and alpha pixels.
7582 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
7583 @end table
7584
7585 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
7586 following constants:
7587
7588 @table @option
7589 @item dar
7590 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
7591
7592 @item hsub
7593 @item vsub
7594 horizontal and vertical chroma subsample values. For example for the
7595 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7596
7597 @item in_h, ih
7598 @item in_w, iw
7599 The input grid cell width and height.
7600
7601 @item sar
7602 The input sample aspect ratio.
7603
7604 @item x
7605 @item y
7606 The x and y coordinates of some point of grid intersection (meant to configure offset).
7607
7608 @item w
7609 @item h
7610 The width and height of the drawn cell.
7611
7612 @item t
7613 The thickness of the drawn cell.
7614
7615 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
7616 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
7617
7618 @end table
7619
7620 @subsection Examples
7621
7622 @itemize
7623 @item
7624 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
7625 @example
7626 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
7627 @end example
7628
7629 @item
7630 Draw a white 3x3 grid with an opacity of 50%:
7631 @example
7632 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
7633 @end example
7634 @end itemize
7635
7636 @anchor{drawtext}
7637 @section drawtext
7638
7639 Draw a text string or text from a specified file on top of a video, using the
7640 libfreetype library.
7641
7642 To enable compilation of this filter, you need to configure FFmpeg with
7643 @code{--enable-libfreetype}.
7644 To enable default font fallback and the @var{font} option you need to
7645 configure FFmpeg with @code{--enable-libfontconfig}.
7646 To enable the @var{text_shaping} option, you need to configure FFmpeg with
7647 @code{--enable-libfribidi}.
7648
7649 @subsection Syntax
7650
7651 It accepts the following parameters:
7652
7653 @table @option
7654
7655 @item box
7656 Used to draw a box around text using the background color.
7657 The value must be either 1 (enable) or 0 (disable).
7658 The default value of @var{box} is 0.
7659
7660 @item boxborderw
7661 Set the width of the border to be drawn around the box using @var{boxcolor}.
7662 The default value of @var{boxborderw} is 0.
7663
7664 @item boxcolor
7665 The color to be used for drawing box around text. For the syntax of this
7666 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
7667
7668 The default value of @var{boxcolor} is "white".
7669
7670 @item line_spacing
7671 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
7672 The default value of @var{line_spacing} is 0.
7673
7674 @item borderw
7675 Set the width of the border to be drawn around the text using @var{bordercolor}.
7676 The default value of @var{borderw} is 0.
7677
7678 @item bordercolor
7679 Set the color to be used for drawing border around text. For the syntax of this
7680 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
7681
7682 The default value of @var{bordercolor} is "black".
7683
7684 @item expansion
7685 Select how the @var{text} is expanded. Can be either @code{none},
7686 @code{strftime} (deprecated) or
7687 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
7688 below for details.
7689
7690 @item basetime
7691 Set a start time for the count. Value is in microseconds. Only applied
7692 in the deprecated strftime expansion mode. To emulate in normal expansion
7693 mode use the @code{pts} function, supplying the start time (in seconds)
7694 as the second argument.
7695
7696 @item fix_bounds
7697 If true, check and fix text coords to avoid clipping.
7698
7699 @item fontcolor
7700 The color to be used for drawing fonts. For the syntax of this option, check
7701 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
7702
7703 The default value of @var{fontcolor} is "black".
7704
7705 @item fontcolor_expr
7706 String which is expanded the same way as @var{text} to obtain dynamic
7707 @var{fontcolor} value. By default this option has empty value and is not
7708 processed. When this option is set, it overrides @var{fontcolor} option.
7709
7710 @item font
7711 The font family to be used for drawing text. By default Sans.
7712
7713 @item fontfile
7714 The font file to be used for drawing text. The path must be included.
7715 This parameter is mandatory if the fontconfig support is disabled.
7716
7717 @item alpha
7718 Draw the text applying alpha blending. The value can
7719 be a number between 0.0 and 1.0.
7720 The expression accepts the same variables @var{x, y} as well.
7721 The default value is 1.
7722 Please see @var{fontcolor_expr}.
7723
7724 @item fontsize
7725 The font size to be used for drawing text.
7726 The default value of @var{fontsize} is 16.
7727
7728 @item text_shaping
7729 If set to 1, attempt to shape the text (for example, reverse the order of
7730 right-to-left text and join Arabic characters) before drawing it.
7731 Otherwise, just draw the text exactly as given.
7732 By default 1 (if supported).
7733
7734 @item ft_load_flags
7735 The flags to be used for loading the fonts.
7736
7737 The flags map the corresponding flags supported by libfreetype, and are
7738 a combination of the following values:
7739 @table @var
7740 @item default
7741 @item no_scale
7742 @item no_hinting
7743 @item render
7744 @item no_bitmap
7745 @item vertical_layout
7746 @item force_autohint
7747 @item crop_bitmap
7748 @item pedantic
7749 @item ignore_global_advance_width
7750 @item no_recurse
7751 @item ignore_transform
7752 @item monochrome
7753 @item linear_design
7754 @item no_autohint
7755 @end table
7756
7757 Default value is "default".
7758
7759 For more information consult the documentation for the FT_LOAD_*
7760 libfreetype flags.
7761
7762 @item shadowcolor
7763 The color to be used for drawing a shadow behind the drawn text. For the
7764 syntax of this option, check the @ref{color syntax,,"Color" section in the
7765 ffmpeg-utils manual,ffmpeg-utils}.
7766
7767 The default value of @var{shadowcolor} is "black".
7768
7769 @item shadowx
7770 @item shadowy
7771 The x and y offsets for the text shadow position with respect to the
7772 position of the text. They can be either positive or negative
7773 values. The default value for both is "0".
7774
7775 @item start_number
7776 The starting frame number for the n/frame_num variable. The default value
7777 is "0".
7778
7779 @item tabsize
7780 The size in number of spaces to use for rendering the tab.
7781 Default value is 4.
7782
7783 @item timecode
7784 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
7785 format. It can be used with or without text parameter. @var{timecode_rate}
7786 option must be specified.
7787
7788 @item timecode_rate, rate, r
7789 Set the timecode frame rate (timecode only). Value will be rounded to nearest
7790 integer. Minimum value is "1".
7791 Drop-frame timecode is supported for frame rates 30 & 60.
7792
7793 @item tc24hmax
7794 If set to 1, the output of the timecode option will wrap around at 24 hours.
7795 Default is 0 (disabled).
7796
7797 @item text
7798 The text string to be drawn. The text must be a sequence of UTF-8
7799 encoded characters.
7800 This parameter is mandatory if no file is specified with the parameter
7801 @var{textfile}.
7802
7803 @item textfile
7804 A text file containing text to be drawn. The text must be a sequence
7805 of UTF-8 encoded characters.
7806
7807 This parameter is mandatory if no text string is specified with the
7808 parameter @var{text}.
7809
7810 If both @var{text} and @var{textfile} are specified, an error is thrown.
7811
7812 @item reload
7813 If set to 1, the @var{textfile} will be reloaded before each frame.
7814 Be sure to update it atomically, or it may be read partially, or even fail.
7815
7816 @item x
7817 @item y
7818 The expressions which specify the offsets where text will be drawn
7819 within the video frame. They are relative to the top/left border of the
7820 output image.
7821
7822 The default value of @var{x} and @var{y} is "0".
7823
7824 See below for the list of accepted constants and functions.
7825 @end table
7826
7827 The parameters for @var{x} and @var{y} are expressions containing the
7828 following constants and functions:
7829
7830 @table @option
7831 @item dar
7832 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
7833
7834 @item hsub
7835 @item vsub
7836 horizontal and vertical chroma subsample values. For example for the
7837 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7838
7839 @item line_h, lh
7840 the height of each text line
7841
7842 @item main_h, h, H
7843 the input height
7844
7845 @item main_w, w, W
7846 the input width
7847
7848 @item max_glyph_a, ascent
7849 the maximum distance from the baseline to the highest/upper grid
7850 coordinate used to place a glyph outline point, for all the rendered
7851 glyphs.
7852 It is a positive value, due to the grid's orientation with the Y axis
7853 upwards.
7854
7855 @item max_glyph_d, descent
7856 the maximum distance from the baseline to the lowest grid coordinate
7857 used to place a glyph outline point, for all the rendered glyphs.
7858 This is a negative value, due to the grid's orientation, with the Y axis
7859 upwards.
7860
7861 @item max_glyph_h
7862 maximum glyph height, that is the maximum height for all the glyphs
7863 contained in the rendered text, it is equivalent to @var{ascent} -
7864 @var{descent}.
7865
7866 @item max_glyph_w
7867 maximum glyph width, that is the maximum width for all the glyphs
7868 contained in the rendered text
7869
7870 @item n
7871 the number of input frame, starting from 0
7872
7873 @item rand(min, max)
7874 return a random number included between @var{min} and @var{max}
7875
7876 @item sar
7877 The input sample aspect ratio.
7878
7879 @item t
7880 timestamp expressed in seconds, NAN if the input timestamp is unknown
7881
7882 @item text_h, th
7883 the height of the rendered text
7884
7885 @item text_w, tw
7886 the width of the rendered text
7887
7888 @item x
7889 @item y
7890 the x and y offset coordinates where the text is drawn.
7891
7892 These parameters allow the @var{x} and @var{y} expressions to refer
7893 each other, so you can for example specify @code{y=x/dar}.
7894 @end table
7895
7896 @anchor{drawtext_expansion}
7897 @subsection Text expansion
7898
7899 If @option{expansion} is set to @code{strftime},
7900 the filter recognizes strftime() sequences in the provided text and
7901 expands them accordingly. Check the documentation of strftime(). This
7902 feature is deprecated.
7903
7904 If @option{expansion} is set to @code{none}, the text is printed verbatim.
7905
7906 If @option{expansion} is set to @code{normal} (which is the default),
7907 the following expansion mechanism is used.
7908
7909 The backslash character @samp{\}, followed by any character, always expands to
7910 the second character.
7911
7912 Sequences of the form @code{%@{...@}} are expanded. The text between the
7913 braces is a function name, possibly followed by arguments separated by ':'.
7914 If the arguments contain special characters or delimiters (':' or '@}'),
7915 they should be escaped.
7916
7917 Note that they probably must also be escaped as the value for the
7918 @option{text} option in the filter argument string and as the filter
7919 argument in the filtergraph description, and possibly also for the shell,
7920 that makes up to four levels of escaping; using a text file avoids these
7921 problems.
7922
7923 The following functions are available:
7924
7925 @table @command
7926
7927 @item expr, e
7928 The expression evaluation result.
7929
7930 It must take one argument specifying the expression to be evaluated,
7931 which accepts the same constants and functions as the @var{x} and
7932 @var{y} values. Note that not all constants should be used, for
7933 example the text size is not known when evaluating the expression, so
7934 the constants @var{text_w} and @var{text_h} will have an undefined
7935 value.
7936
7937 @item expr_int_format, eif
7938 Evaluate the expression's value and output as formatted integer.
7939
7940 The first argument is the expression to be evaluated, just as for the @var{expr} function.
7941 The second argument specifies the output format. Allowed values are @samp{x},
7942 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
7943 @code{printf} function.
7944 The third parameter is optional and sets the number of positions taken by the output.
7945 It can be used to add padding with zeros from the left.
7946
7947 @item gmtime
7948 The time at which the filter is running, expressed in UTC.
7949 It can accept an argument: a strftime() format string.
7950
7951 @item localtime
7952 The time at which the filter is running, expressed in the local time zone.
7953 It can accept an argument: a strftime() format string.
7954
7955 @item metadata
7956 Frame metadata. Takes one or two arguments.
7957
7958 The first argument is mandatory and specifies the metadata key.
7959
7960 The second argument is optional and specifies a default value, used when the
7961 metadata key is not found or empty.
7962
7963 @item n, frame_num
7964 The frame number, starting from 0.
7965
7966 @item pict_type
7967 A 1 character description of the current picture type.
7968
7969 @item pts
7970 The timestamp of the current frame.
7971 It can take up to three arguments.
7972
7973 The first argument is the format of the timestamp; it defaults to @code{flt}
7974 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
7975 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
7976 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
7977 @code{localtime} stands for the timestamp of the frame formatted as
7978 local time zone time.
7979
7980 The second argument is an offset added to the timestamp.
7981
7982 If the format is set to @code{localtime} or @code{gmtime},
7983 a third argument may be supplied: a strftime() format string.
7984 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
7985 @end table
7986
7987 @subsection Examples
7988
7989 @itemize
7990 @item
7991 Draw "Test Text" with font FreeSerif, using the default values for the
7992 optional parameters.
7993
7994 @example
7995 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
7996 @end example
7997
7998 @item
7999 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
8000 and y=50 (counting from the top-left corner of the screen), text is
8001 yellow with a red box around it. Both the text and the box have an
8002 opacity of 20%.
8003
8004 @example
8005 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
8006           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
8007 @end example
8008
8009 Note that the double quotes are not necessary if spaces are not used
8010 within the parameter list.
8011
8012 @item
8013 Show the text at the center of the video frame:
8014 @example
8015 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
8016 @end example
8017
8018 @item
8019 Show the text at a random position, switching to a new position every 30 seconds:
8020 @example
8021 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)"
8022 @end example
8023
8024 @item
8025 Show a text line sliding from right to left in the last row of the video
8026 frame. The file @file{LONG_LINE} is assumed to contain a single line
8027 with no newlines.
8028 @example
8029 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
8030 @end example
8031
8032 @item
8033 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
8034 @example
8035 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
8036 @end example
8037
8038 @item
8039 Draw a single green letter "g", at the center of the input video.
8040 The glyph baseline is placed at half screen height.
8041 @example
8042 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
8043 @end example
8044
8045 @item
8046 Show text for 1 second every 3 seconds:
8047 @example
8048 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
8049 @end example
8050
8051 @item
8052 Use fontconfig to set the font. Note that the colons need to be escaped.
8053 @example
8054 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
8055 @end example
8056
8057 @item
8058 Print the date of a real-time encoding (see strftime(3)):
8059 @example
8060 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
8061 @end example
8062
8063 @item
8064 Show text fading in and out (appearing/disappearing):
8065 @example
8066 #!/bin/sh
8067 DS=1.0 # display start
8068 DE=10.0 # display end
8069 FID=1.5 # fade in duration
8070 FOD=5 # fade out duration
8071 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 @}"
8072 @end example
8073
8074 @item
8075 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
8076 and the @option{fontsize} value are included in the @option{y} offset.
8077 @example
8078 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
8079 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
8080 @end example
8081
8082 @end itemize
8083
8084 For more information about libfreetype, check:
8085 @url{http://www.freetype.org/}.
8086
8087 For more information about fontconfig, check:
8088 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
8089
8090 For more information about libfribidi, check:
8091 @url{http://fribidi.org/}.
8092
8093 @section edgedetect
8094
8095 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
8096
8097 The filter accepts the following options:
8098
8099 @table @option
8100 @item low
8101 @item high
8102 Set low and high threshold values used by the Canny thresholding
8103 algorithm.
8104
8105 The high threshold selects the "strong" edge pixels, which are then
8106 connected through 8-connectivity with the "weak" edge pixels selected
8107 by the low threshold.
8108
8109 @var{low} and @var{high} threshold values must be chosen in the range
8110 [0,1], and @var{low} should be lesser or equal to @var{high}.
8111
8112 Default value for @var{low} is @code{20/255}, and default value for @var{high}
8113 is @code{50/255}.
8114
8115 @item mode
8116 Define the drawing mode.
8117
8118 @table @samp
8119 @item wires
8120 Draw white/gray wires on black background.
8121
8122 @item colormix
8123 Mix the colors to create a paint/cartoon effect.
8124 @end table
8125
8126 Default value is @var{wires}.
8127 @end table
8128
8129 @subsection Examples
8130
8131 @itemize
8132 @item
8133 Standard edge detection with custom values for the hysteresis thresholding:
8134 @example
8135 edgedetect=low=0.1:high=0.4
8136 @end example
8137
8138 @item
8139 Painting effect without thresholding:
8140 @example
8141 edgedetect=mode=colormix:high=0
8142 @end example
8143 @end itemize
8144
8145 @section eq
8146 Set brightness, contrast, saturation and approximate gamma adjustment.
8147
8148 The filter accepts the following options:
8149
8150 @table @option
8151 @item contrast
8152 Set the contrast expression. The value must be a float value in range
8153 @code{-2.0} to @code{2.0}. The default value is "1".
8154
8155 @item brightness
8156 Set the brightness expression. The value must be a float value in
8157 range @code{-1.0} to @code{1.0}. The default value is "0".
8158
8159 @item saturation
8160 Set the saturation expression. The value must be a float in
8161 range @code{0.0} to @code{3.0}. The default value is "1".
8162
8163 @item gamma
8164 Set the gamma expression. The value must be a float in range
8165 @code{0.1} to @code{10.0}.  The default value is "1".
8166
8167 @item gamma_r
8168 Set the gamma expression for red. The value must be a float in
8169 range @code{0.1} to @code{10.0}. The default value is "1".
8170
8171 @item gamma_g
8172 Set the gamma expression for green. The value must be a float in range
8173 @code{0.1} to @code{10.0}. The default value is "1".
8174
8175 @item gamma_b
8176 Set the gamma expression for blue. The value must be a float in range
8177 @code{0.1} to @code{10.0}. The default value is "1".
8178
8179 @item gamma_weight
8180 Set the gamma weight expression. It can be used to reduce the effect
8181 of a high gamma value on bright image areas, e.g. keep them from
8182 getting overamplified and just plain white. The value must be a float
8183 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
8184 gamma correction all the way down while @code{1.0} leaves it at its
8185 full strength. Default is "1".
8186
8187 @item eval
8188 Set when the expressions for brightness, contrast, saturation and
8189 gamma expressions are evaluated.
8190
8191 It accepts the following values:
8192 @table @samp
8193 @item init
8194 only evaluate expressions once during the filter initialization or
8195 when a command is processed
8196
8197 @item frame
8198 evaluate expressions for each incoming frame
8199 @end table
8200
8201 Default value is @samp{init}.
8202 @end table
8203
8204 The expressions accept the following parameters:
8205 @table @option
8206 @item n
8207 frame count of the input frame starting from 0
8208
8209 @item pos
8210 byte position of the corresponding packet in the input file, NAN if
8211 unspecified
8212
8213 @item r
8214 frame rate of the input video, NAN if the input frame rate is unknown
8215
8216 @item t
8217 timestamp expressed in seconds, NAN if the input timestamp is unknown
8218 @end table
8219
8220 @subsection Commands
8221 The filter supports the following commands:
8222
8223 @table @option
8224 @item contrast
8225 Set the contrast expression.
8226
8227 @item brightness
8228 Set the brightness expression.
8229
8230 @item saturation
8231 Set the saturation expression.
8232
8233 @item gamma
8234 Set the gamma expression.
8235
8236 @item gamma_r
8237 Set the gamma_r expression.
8238
8239 @item gamma_g
8240 Set gamma_g expression.
8241
8242 @item gamma_b
8243 Set gamma_b expression.
8244
8245 @item gamma_weight
8246 Set gamma_weight expression.
8247
8248 The command accepts the same syntax of the corresponding option.
8249
8250 If the specified expression is not valid, it is kept at its current
8251 value.
8252
8253 @end table
8254
8255 @section erosion
8256
8257 Apply erosion effect to the video.
8258
8259 This filter replaces the pixel by the local(3x3) minimum.
8260
8261 It accepts the following options:
8262
8263 @table @option
8264 @item threshold0
8265 @item threshold1
8266 @item threshold2
8267 @item threshold3
8268 Limit the maximum change for each plane, default is 65535.
8269 If 0, plane will remain unchanged.
8270
8271 @item coordinates
8272 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8273 pixels are used.
8274
8275 Flags to local 3x3 coordinates maps like this:
8276
8277     1 2 3
8278     4   5
8279     6 7 8
8280 @end table
8281
8282 @section extractplanes
8283
8284 Extract color channel components from input video stream into
8285 separate grayscale video streams.
8286
8287 The filter accepts the following option:
8288
8289 @table @option
8290 @item planes
8291 Set plane(s) to extract.
8292
8293 Available values for planes are:
8294 @table @samp
8295 @item y
8296 @item u
8297 @item v
8298 @item a
8299 @item r
8300 @item g
8301 @item b
8302 @end table
8303
8304 Choosing planes not available in the input will result in an error.
8305 That means you cannot select @code{r}, @code{g}, @code{b} planes
8306 with @code{y}, @code{u}, @code{v} planes at same time.
8307 @end table
8308
8309 @subsection Examples
8310
8311 @itemize
8312 @item
8313 Extract luma, u and v color channel component from input video frame
8314 into 3 grayscale outputs:
8315 @example
8316 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
8317 @end example
8318 @end itemize
8319
8320 @section elbg
8321
8322 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
8323
8324 For each input image, the filter will compute the optimal mapping from
8325 the input to the output given the codebook length, that is the number
8326 of distinct output colors.
8327
8328 This filter accepts the following options.
8329
8330 @table @option
8331 @item codebook_length, l
8332 Set codebook length. The value must be a positive integer, and
8333 represents the number of distinct output colors. Default value is 256.
8334
8335 @item nb_steps, n
8336 Set the maximum number of iterations to apply for computing the optimal
8337 mapping. The higher the value the better the result and the higher the
8338 computation time. Default value is 1.
8339
8340 @item seed, s
8341 Set a random seed, must be an integer included between 0 and
8342 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
8343 will try to use a good random seed on a best effort basis.
8344
8345 @item pal8
8346 Set pal8 output pixel format. This option does not work with codebook
8347 length greater than 256.
8348 @end table
8349
8350 @section entropy
8351
8352 Measure graylevel entropy in histogram of color channels of video frames.
8353
8354 It accepts the following parameters:
8355
8356 @table @option
8357 @item mode
8358 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
8359
8360 @var{diff} mode measures entropy of histogram delta values, absolute differences
8361 between neighbour histogram values.
8362 @end table
8363
8364 @section fade
8365
8366 Apply a fade-in/out effect to the input video.
8367
8368 It accepts the following parameters:
8369
8370 @table @option
8371 @item type, t
8372 The effect type can be either "in" for a fade-in, or "out" for a fade-out
8373 effect.
8374 Default is @code{in}.
8375
8376 @item start_frame, s
8377 Specify the number of the frame to start applying the fade
8378 effect at. Default is 0.
8379
8380 @item nb_frames, n
8381 The number of frames that the fade effect lasts. At the end of the
8382 fade-in effect, the output video will have the same intensity as the input video.
8383 At the end of the fade-out transition, the output video will be filled with the
8384 selected @option{color}.
8385 Default is 25.
8386
8387 @item alpha
8388 If set to 1, fade only alpha channel, if one exists on the input.
8389 Default value is 0.
8390
8391 @item start_time, st
8392 Specify the timestamp (in seconds) of the frame to start to apply the fade
8393 effect. If both start_frame and start_time are specified, the fade will start at
8394 whichever comes last.  Default is 0.
8395
8396 @item duration, d
8397 The number of seconds for which the fade effect has to last. At the end of the
8398 fade-in effect the output video will have the same intensity as the input video,
8399 at the end of the fade-out transition the output video will be filled with the
8400 selected @option{color}.
8401 If both duration and nb_frames are specified, duration is used. Default is 0
8402 (nb_frames is used by default).
8403
8404 @item color, c
8405 Specify the color of the fade. Default is "black".
8406 @end table
8407
8408 @subsection Examples
8409
8410 @itemize
8411 @item
8412 Fade in the first 30 frames of video:
8413 @example
8414 fade=in:0:30
8415 @end example
8416
8417 The command above is equivalent to:
8418 @example
8419 fade=t=in:s=0:n=30
8420 @end example
8421
8422 @item
8423 Fade out the last 45 frames of a 200-frame video:
8424 @example
8425 fade=out:155:45
8426 fade=type=out:start_frame=155:nb_frames=45
8427 @end example
8428
8429 @item
8430 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
8431 @example
8432 fade=in:0:25, fade=out:975:25
8433 @end example
8434
8435 @item
8436 Make the first 5 frames yellow, then fade in from frame 5-24:
8437 @example
8438 fade=in:5:20:color=yellow
8439 @end example
8440
8441 @item
8442 Fade in alpha over first 25 frames of video:
8443 @example
8444 fade=in:0:25:alpha=1
8445 @end example
8446
8447 @item
8448 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
8449 @example
8450 fade=t=in:st=5.5:d=0.5
8451 @end example
8452
8453 @end itemize
8454
8455 @section fftfilt
8456 Apply arbitrary expressions to samples in frequency domain
8457
8458 @table @option
8459 @item dc_Y
8460 Adjust the dc value (gain) of the luma plane of the image. The filter
8461 accepts an integer value in range @code{0} to @code{1000}. The default
8462 value is set to @code{0}.
8463
8464 @item dc_U
8465 Adjust the dc value (gain) of the 1st chroma plane of the image. The
8466 filter accepts an integer value in range @code{0} to @code{1000}. The
8467 default value is set to @code{0}.
8468
8469 @item dc_V
8470 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
8471 filter accepts an integer value in range @code{0} to @code{1000}. The
8472 default value is set to @code{0}.
8473
8474 @item weight_Y
8475 Set the frequency domain weight expression for the luma plane.
8476
8477 @item weight_U
8478 Set the frequency domain weight expression for the 1st chroma plane.
8479
8480 @item weight_V
8481 Set the frequency domain weight expression for the 2nd chroma plane.
8482
8483 @item eval
8484 Set when the expressions are evaluated.
8485
8486 It accepts the following values:
8487 @table @samp
8488 @item init
8489 Only evaluate expressions once during the filter initialization.
8490
8491 @item frame
8492 Evaluate expressions for each incoming frame.
8493 @end table
8494
8495 Default value is @samp{init}.
8496
8497 The filter accepts the following variables:
8498 @item X
8499 @item Y
8500 The coordinates of the current sample.
8501
8502 @item W
8503 @item H
8504 The width and height of the image.
8505
8506 @item N
8507 The number of input frame, starting from 0.
8508 @end table
8509
8510 @subsection Examples
8511
8512 @itemize
8513 @item
8514 High-pass:
8515 @example
8516 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
8517 @end example
8518
8519 @item
8520 Low-pass:
8521 @example
8522 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
8523 @end example
8524
8525 @item
8526 Sharpen:
8527 @example
8528 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
8529 @end example
8530
8531 @item
8532 Blur:
8533 @example
8534 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
8535 @end example
8536
8537 @end itemize
8538
8539 @section field
8540
8541 Extract a single field from an interlaced image using stride
8542 arithmetic to avoid wasting CPU time. The output frames are marked as
8543 non-interlaced.
8544
8545 The filter accepts the following options:
8546
8547 @table @option
8548 @item type
8549 Specify whether to extract the top (if the value is @code{0} or
8550 @code{top}) or the bottom field (if the value is @code{1} or
8551 @code{bottom}).
8552 @end table
8553
8554 @section fieldhint
8555
8556 Create new frames by copying the top and bottom fields from surrounding frames
8557 supplied as numbers by the hint file.
8558
8559 @table @option
8560 @item hint
8561 Set file containing hints: absolute/relative frame numbers.
8562
8563 There must be one line for each frame in a clip. Each line must contain two
8564 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
8565 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
8566 is current frame number for @code{absolute} mode or out of [-1, 1] range
8567 for @code{relative} mode. First number tells from which frame to pick up top
8568 field and second number tells from which frame to pick up bottom field.
8569
8570 If optionally followed by @code{+} output frame will be marked as interlaced,
8571 else if followed by @code{-} output frame will be marked as progressive, else
8572 it will be marked same as input frame.
8573 If line starts with @code{#} or @code{;} that line is skipped.
8574
8575 @item mode
8576 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
8577 @end table
8578
8579 Example of first several lines of @code{hint} file for @code{relative} mode:
8580 @example
8581 0,0 - # first frame
8582 1,0 - # second frame, use third's frame top field and second's frame bottom field
8583 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
8584 1,0 -
8585 0,0 -
8586 0,0 -
8587 1,0 -
8588 1,0 -
8589 1,0 -
8590 0,0 -
8591 0,0 -
8592 1,0 -
8593 1,0 -
8594 1,0 -
8595 0,0 -
8596 @end example
8597
8598 @section fieldmatch
8599
8600 Field matching filter for inverse telecine. It is meant to reconstruct the
8601 progressive frames from a telecined stream. The filter does not drop duplicated
8602 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
8603 followed by a decimation filter such as @ref{decimate} in the filtergraph.
8604
8605 The separation of the field matching and the decimation is notably motivated by
8606 the possibility of inserting a de-interlacing filter fallback between the two.
8607 If the source has mixed telecined and real interlaced content,
8608 @code{fieldmatch} will not be able to match fields for the interlaced parts.
8609 But these remaining combed frames will be marked as interlaced, and thus can be
8610 de-interlaced by a later filter such as @ref{yadif} before decimation.
8611
8612 In addition to the various configuration options, @code{fieldmatch} can take an
8613 optional second stream, activated through the @option{ppsrc} option. If
8614 enabled, the frames reconstruction will be based on the fields and frames from
8615 this second stream. This allows the first input to be pre-processed in order to
8616 help the various algorithms of the filter, while keeping the output lossless
8617 (assuming the fields are matched properly). Typically, a field-aware denoiser,
8618 or brightness/contrast adjustments can help.
8619
8620 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
8621 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
8622 which @code{fieldmatch} is based on. While the semantic and usage are very
8623 close, some behaviour and options names can differ.
8624
8625 The @ref{decimate} filter currently only works for constant frame rate input.
8626 If your input has mixed telecined (30fps) and progressive content with a lower
8627 framerate like 24fps use the following filterchain to produce the necessary cfr
8628 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
8629
8630 The filter accepts the following options:
8631
8632 @table @option
8633 @item order
8634 Specify the assumed field order of the input stream. Available values are:
8635
8636 @table @samp
8637 @item auto
8638 Auto detect parity (use FFmpeg's internal parity value).
8639 @item bff
8640 Assume bottom field first.
8641 @item tff
8642 Assume top field first.
8643 @end table
8644
8645 Note that it is sometimes recommended not to trust the parity announced by the
8646 stream.
8647
8648 Default value is @var{auto}.
8649
8650 @item mode
8651 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
8652 sense that it won't risk creating jerkiness due to duplicate frames when
8653 possible, but if there are bad edits or blended fields it will end up
8654 outputting combed frames when a good match might actually exist. On the other
8655 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
8656 but will almost always find a good frame if there is one. The other values are
8657 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
8658 jerkiness and creating duplicate frames versus finding good matches in sections
8659 with bad edits, orphaned fields, blended fields, etc.
8660
8661 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
8662
8663 Available values are:
8664
8665 @table @samp
8666 @item pc
8667 2-way matching (p/c)
8668 @item pc_n
8669 2-way matching, and trying 3rd match if still combed (p/c + n)
8670 @item pc_u
8671 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
8672 @item pc_n_ub
8673 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
8674 still combed (p/c + n + u/b)
8675 @item pcn
8676 3-way matching (p/c/n)
8677 @item pcn_ub
8678 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
8679 detected as combed (p/c/n + u/b)
8680 @end table
8681
8682 The parenthesis at the end indicate the matches that would be used for that
8683 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
8684 @var{top}).
8685
8686 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
8687 the slowest.
8688
8689 Default value is @var{pc_n}.
8690
8691 @item ppsrc
8692 Mark the main input stream as a pre-processed input, and enable the secondary
8693 input stream as the clean source to pick the fields from. See the filter
8694 introduction for more details. It is similar to the @option{clip2} feature from
8695 VFM/TFM.
8696
8697 Default value is @code{0} (disabled).
8698
8699 @item field
8700 Set the field to match from. It is recommended to set this to the same value as
8701 @option{order} unless you experience matching failures with that setting. In
8702 certain circumstances changing the field that is used to match from can have a
8703 large impact on matching performance. Available values are:
8704
8705 @table @samp
8706 @item auto
8707 Automatic (same value as @option{order}).
8708 @item bottom
8709 Match from the bottom field.
8710 @item top
8711 Match from the top field.
8712 @end table
8713
8714 Default value is @var{auto}.
8715
8716 @item mchroma
8717 Set whether or not chroma is included during the match comparisons. In most
8718 cases it is recommended to leave this enabled. You should set this to @code{0}
8719 only if your clip has bad chroma problems such as heavy rainbowing or other
8720 artifacts. Setting this to @code{0} could also be used to speed things up at
8721 the cost of some accuracy.
8722
8723 Default value is @code{1}.
8724
8725 @item y0
8726 @item y1
8727 These define an exclusion band which excludes the lines between @option{y0} and
8728 @option{y1} from being included in the field matching decision. An exclusion
8729 band can be used to ignore subtitles, a logo, or other things that may
8730 interfere with the matching. @option{y0} sets the starting scan line and
8731 @option{y1} sets the ending line; all lines in between @option{y0} and
8732 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
8733 @option{y0} and @option{y1} to the same value will disable the feature.
8734 @option{y0} and @option{y1} defaults to @code{0}.
8735
8736 @item scthresh
8737 Set the scene change detection threshold as a percentage of maximum change on
8738 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
8739 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
8740 @option{scthresh} is @code{[0.0, 100.0]}.
8741
8742 Default value is @code{12.0}.
8743
8744 @item combmatch
8745 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
8746 account the combed scores of matches when deciding what match to use as the
8747 final match. Available values are:
8748
8749 @table @samp
8750 @item none
8751 No final matching based on combed scores.
8752 @item sc
8753 Combed scores are only used when a scene change is detected.
8754 @item full
8755 Use combed scores all the time.
8756 @end table
8757
8758 Default is @var{sc}.
8759
8760 @item combdbg
8761 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
8762 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
8763 Available values are:
8764
8765 @table @samp
8766 @item none
8767 No forced calculation.
8768 @item pcn
8769 Force p/c/n calculations.
8770 @item pcnub
8771 Force p/c/n/u/b calculations.
8772 @end table
8773
8774 Default value is @var{none}.
8775
8776 @item cthresh
8777 This is the area combing threshold used for combed frame detection. This
8778 essentially controls how "strong" or "visible" combing must be to be detected.
8779 Larger values mean combing must be more visible and smaller values mean combing
8780 can be less visible or strong and still be detected. Valid settings are from
8781 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
8782 be detected as combed). This is basically a pixel difference value. A good
8783 range is @code{[8, 12]}.
8784
8785 Default value is @code{9}.
8786
8787 @item chroma
8788 Sets whether or not chroma is considered in the combed frame decision.  Only
8789 disable this if your source has chroma problems (rainbowing, etc.) that are
8790 causing problems for the combed frame detection with chroma enabled. Actually,
8791 using @option{chroma}=@var{0} is usually more reliable, except for the case
8792 where there is chroma only combing in the source.
8793
8794 Default value is @code{0}.
8795
8796 @item blockx
8797 @item blocky
8798 Respectively set the x-axis and y-axis size of the window used during combed
8799 frame detection. This has to do with the size of the area in which
8800 @option{combpel} pixels are required to be detected as combed for a frame to be
8801 declared combed. See the @option{combpel} parameter description for more info.
8802 Possible values are any number that is a power of 2 starting at 4 and going up
8803 to 512.
8804
8805 Default value is @code{16}.
8806
8807 @item combpel
8808 The number of combed pixels inside any of the @option{blocky} by
8809 @option{blockx} size blocks on the frame for the frame to be detected as
8810 combed. While @option{cthresh} controls how "visible" the combing must be, this
8811 setting controls "how much" combing there must be in any localized area (a
8812 window defined by the @option{blockx} and @option{blocky} settings) on the
8813 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
8814 which point no frames will ever be detected as combed). This setting is known
8815 as @option{MI} in TFM/VFM vocabulary.
8816
8817 Default value is @code{80}.
8818 @end table
8819
8820 @anchor{p/c/n/u/b meaning}
8821 @subsection p/c/n/u/b meaning
8822
8823 @subsubsection p/c/n
8824
8825 We assume the following telecined stream:
8826
8827 @example
8828 Top fields:     1 2 2 3 4
8829 Bottom fields:  1 2 3 4 4
8830 @end example
8831
8832 The numbers correspond to the progressive frame the fields relate to. Here, the
8833 first two frames are progressive, the 3rd and 4th are combed, and so on.
8834
8835 When @code{fieldmatch} is configured to run a matching from bottom
8836 (@option{field}=@var{bottom}) this is how this input stream get transformed:
8837
8838 @example
8839 Input stream:
8840                 T     1 2 2 3 4
8841                 B     1 2 3 4 4   <-- matching reference
8842
8843 Matches:              c c n n c
8844
8845 Output stream:
8846                 T     1 2 3 4 4
8847                 B     1 2 3 4 4
8848 @end example
8849
8850 As a result of the field matching, we can see that some frames get duplicated.
8851 To perform a complete inverse telecine, you need to rely on a decimation filter
8852 after this operation. See for instance the @ref{decimate} filter.
8853
8854 The same operation now matching from top fields (@option{field}=@var{top})
8855 looks like this:
8856
8857 @example
8858 Input stream:
8859                 T     1 2 2 3 4   <-- matching reference
8860                 B     1 2 3 4 4
8861
8862 Matches:              c c p p c
8863
8864 Output stream:
8865                 T     1 2 2 3 4
8866                 B     1 2 2 3 4
8867 @end example
8868
8869 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
8870 basically, they refer to the frame and field of the opposite parity:
8871
8872 @itemize
8873 @item @var{p} matches the field of the opposite parity in the previous frame
8874 @item @var{c} matches the field of the opposite parity in the current frame
8875 @item @var{n} matches the field of the opposite parity in the next frame
8876 @end itemize
8877
8878 @subsubsection u/b
8879
8880 The @var{u} and @var{b} matching are a bit special in the sense that they match
8881 from the opposite parity flag. In the following examples, we assume that we are
8882 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
8883 'x' is placed above and below each matched fields.
8884
8885 With bottom matching (@option{field}=@var{bottom}):
8886 @example
8887 Match:           c         p           n          b          u
8888
8889                  x       x               x        x          x
8890   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
8891   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
8892                  x         x           x        x              x
8893
8894 Output frames:
8895                  2          1          2          2          2
8896                  2          2          2          1          3
8897 @end example
8898
8899 With top matching (@option{field}=@var{top}):
8900 @example
8901 Match:           c         p           n          b          u
8902
8903                  x         x           x        x              x
8904   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
8905   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
8906                  x       x               x        x          x
8907
8908 Output frames:
8909                  2          2          2          1          2
8910                  2          1          3          2          2
8911 @end example
8912
8913 @subsection Examples
8914
8915 Simple IVTC of a top field first telecined stream:
8916 @example
8917 fieldmatch=order=tff:combmatch=none, decimate
8918 @end example
8919
8920 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
8921 @example
8922 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
8923 @end example
8924
8925 @section fieldorder
8926
8927 Transform the field order of the input video.
8928
8929 It accepts the following parameters:
8930
8931 @table @option
8932
8933 @item order
8934 The output field order. Valid values are @var{tff} for top field first or @var{bff}
8935 for bottom field first.
8936 @end table
8937
8938 The default value is @samp{tff}.
8939
8940 The transformation is done by shifting the picture content up or down
8941 by one line, and filling the remaining line with appropriate picture content.
8942 This method is consistent with most broadcast field order converters.
8943
8944 If the input video is not flagged as being interlaced, or it is already
8945 flagged as being of the required output field order, then this filter does
8946 not alter the incoming video.
8947
8948 It is very useful when converting to or from PAL DV material,
8949 which is bottom field first.
8950
8951 For example:
8952 @example
8953 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
8954 @end example
8955
8956 @section fifo, afifo
8957
8958 Buffer input images and send them when they are requested.
8959
8960 It is mainly useful when auto-inserted by the libavfilter
8961 framework.
8962
8963 It does not take parameters.
8964
8965 @section fillborders
8966
8967 Fill borders of the input video, without changing video stream dimensions.
8968 Sometimes video can have garbage at the four edges and you may not want to
8969 crop video input to keep size multiple of some number.
8970
8971 This filter accepts the following options:
8972
8973 @table @option
8974 @item left
8975 Number of pixels to fill from left border.
8976
8977 @item right
8978 Number of pixels to fill from right border.
8979
8980 @item top
8981 Number of pixels to fill from top border.
8982
8983 @item bottom
8984 Number of pixels to fill from bottom border.
8985
8986 @item mode
8987 Set fill mode.
8988
8989 It accepts the following values:
8990 @table @samp
8991 @item smear
8992 fill pixels using outermost pixels
8993
8994 @item mirror
8995 fill pixels using mirroring
8996
8997 @item fixed
8998 fill pixels with constant value
8999 @end table
9000
9001 Default is @var{smear}.
9002
9003 @item color
9004 Set color for pixels in fixed mode. Default is @var{black}.
9005 @end table
9006
9007 @section find_rect
9008
9009 Find a rectangular object
9010
9011 It accepts the following options:
9012
9013 @table @option
9014 @item object
9015 Filepath of the object image, needs to be in gray8.
9016
9017 @item threshold
9018 Detection threshold, default is 0.5.
9019
9020 @item mipmaps
9021 Number of mipmaps, default is 3.
9022
9023 @item xmin, ymin, xmax, ymax
9024 Specifies the rectangle in which to search.
9025 @end table
9026
9027 @subsection Examples
9028
9029 @itemize
9030 @item
9031 Generate a representative palette of a given video using @command{ffmpeg}:
9032 @example
9033 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9034 @end example
9035 @end itemize
9036
9037 @section cover_rect
9038
9039 Cover a rectangular object
9040
9041 It accepts the following options:
9042
9043 @table @option
9044 @item cover
9045 Filepath of the optional cover image, needs to be in yuv420.
9046
9047 @item mode
9048 Set covering mode.
9049
9050 It accepts the following values:
9051 @table @samp
9052 @item cover
9053 cover it by the supplied image
9054 @item blur
9055 cover it by interpolating the surrounding pixels
9056 @end table
9057
9058 Default value is @var{blur}.
9059 @end table
9060
9061 @subsection Examples
9062
9063 @itemize
9064 @item
9065 Generate a representative palette of a given video using @command{ffmpeg}:
9066 @example
9067 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9068 @end example
9069 @end itemize
9070
9071 @section floodfill
9072
9073 Flood area with values of same pixel components with another values.
9074
9075 It accepts the following options:
9076 @table @option
9077 @item x
9078 Set pixel x coordinate.
9079
9080 @item y
9081 Set pixel y coordinate.
9082
9083 @item s0
9084 Set source #0 component value.
9085
9086 @item s1
9087 Set source #1 component value.
9088
9089 @item s2
9090 Set source #2 component value.
9091
9092 @item s3
9093 Set source #3 component value.
9094
9095 @item d0
9096 Set destination #0 component value.
9097
9098 @item d1
9099 Set destination #1 component value.
9100
9101 @item d2
9102 Set destination #2 component value.
9103
9104 @item d3
9105 Set destination #3 component value.
9106 @end table
9107
9108 @anchor{format}
9109 @section format
9110
9111 Convert the input video to one of the specified pixel formats.
9112 Libavfilter will try to pick one that is suitable as input to
9113 the next filter.
9114
9115 It accepts the following parameters:
9116 @table @option
9117
9118 @item pix_fmts
9119 A '|'-separated list of pixel format names, such as
9120 "pix_fmts=yuv420p|monow|rgb24".
9121
9122 @end table
9123
9124 @subsection Examples
9125
9126 @itemize
9127 @item
9128 Convert the input video to the @var{yuv420p} format
9129 @example
9130 format=pix_fmts=yuv420p
9131 @end example
9132
9133 Convert the input video to any of the formats in the list
9134 @example
9135 format=pix_fmts=yuv420p|yuv444p|yuv410p
9136 @end example
9137 @end itemize
9138
9139 @anchor{fps}
9140 @section fps
9141
9142 Convert the video to specified constant frame rate by duplicating or dropping
9143 frames as necessary.
9144
9145 It accepts the following parameters:
9146 @table @option
9147
9148 @item fps
9149 The desired output frame rate. The default is @code{25}.
9150
9151 @item start_time
9152 Assume the first PTS should be the given value, in seconds. This allows for
9153 padding/trimming at the start of stream. By default, no assumption is made
9154 about the first frame's expected PTS, so no padding or trimming is done.
9155 For example, this could be set to 0 to pad the beginning with duplicates of
9156 the first frame if a video stream starts after the audio stream or to trim any
9157 frames with a negative PTS.
9158
9159 @item round
9160 Timestamp (PTS) rounding method.
9161
9162 Possible values are:
9163 @table @option
9164 @item zero
9165 round towards 0
9166 @item inf
9167 round away from 0
9168 @item down
9169 round towards -infinity
9170 @item up
9171 round towards +infinity
9172 @item near
9173 round to nearest
9174 @end table
9175 The default is @code{near}.
9176
9177 @item eof_action
9178 Action performed when reading the last frame.
9179
9180 Possible values are:
9181 @table @option
9182 @item round
9183 Use same timestamp rounding method as used for other frames.
9184 @item pass
9185 Pass through last frame if input duration has not been reached yet.
9186 @end table
9187 The default is @code{round}.
9188
9189 @end table
9190
9191 Alternatively, the options can be specified as a flat string:
9192 @var{fps}[:@var{start_time}[:@var{round}]].
9193
9194 See also the @ref{setpts} filter.
9195
9196 @subsection Examples
9197
9198 @itemize
9199 @item
9200 A typical usage in order to set the fps to 25:
9201 @example
9202 fps=fps=25
9203 @end example
9204
9205 @item
9206 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
9207 @example
9208 fps=fps=film:round=near
9209 @end example
9210 @end itemize
9211
9212 @section framepack
9213
9214 Pack two different video streams into a stereoscopic video, setting proper
9215 metadata on supported codecs. The two views should have the same size and
9216 framerate and processing will stop when the shorter video ends. Please note
9217 that you may conveniently adjust view properties with the @ref{scale} and
9218 @ref{fps} filters.
9219
9220 It accepts the following parameters:
9221 @table @option
9222
9223 @item format
9224 The desired packing format. Supported values are:
9225
9226 @table @option
9227
9228 @item sbs
9229 The views are next to each other (default).
9230
9231 @item tab
9232 The views are on top of each other.
9233
9234 @item lines
9235 The views are packed by line.
9236
9237 @item columns
9238 The views are packed by column.
9239
9240 @item frameseq
9241 The views are temporally interleaved.
9242
9243 @end table
9244
9245 @end table
9246
9247 Some examples:
9248
9249 @example
9250 # Convert left and right views into a frame-sequential video
9251 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
9252
9253 # Convert views into a side-by-side video with the same output resolution as the input
9254 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
9255 @end example
9256
9257 @section framerate
9258
9259 Change the frame rate by interpolating new video output frames from the source
9260 frames.
9261
9262 This filter is not designed to function correctly with interlaced media. If
9263 you wish to change the frame rate of interlaced media then you are required
9264 to deinterlace before this filter and re-interlace after this filter.
9265
9266 A description of the accepted options follows.
9267
9268 @table @option
9269 @item fps
9270 Specify the output frames per second. This option can also be specified
9271 as a value alone. The default is @code{50}.
9272
9273 @item interp_start
9274 Specify the start of a range where the output frame will be created as a
9275 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9276 the default is @code{15}.
9277
9278 @item interp_end
9279 Specify the end of a range where the output frame will be created as a
9280 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9281 the default is @code{240}.
9282
9283 @item scene
9284 Specify the level at which a scene change is detected as a value between
9285 0 and 100 to indicate a new scene; a low value reflects a low
9286 probability for the current frame to introduce a new scene, while a higher
9287 value means the current frame is more likely to be one.
9288 The default is @code{8.2}.
9289
9290 @item flags
9291 Specify flags influencing the filter process.
9292
9293 Available value for @var{flags} is:
9294
9295 @table @option
9296 @item scene_change_detect, scd
9297 Enable scene change detection using the value of the option @var{scene}.
9298 This flag is enabled by default.
9299 @end table
9300 @end table
9301
9302 @section framestep
9303
9304 Select one frame every N-th frame.
9305
9306 This filter accepts the following option:
9307 @table @option
9308 @item step
9309 Select frame after every @code{step} frames.
9310 Allowed values are positive integers higher than 0. Default value is @code{1}.
9311 @end table
9312
9313 @anchor{frei0r}
9314 @section frei0r
9315
9316 Apply a frei0r effect to the input video.
9317
9318 To enable the compilation of this filter, you need to install the frei0r
9319 header and configure FFmpeg with @code{--enable-frei0r}.
9320
9321 It accepts the following parameters:
9322
9323 @table @option
9324
9325 @item filter_name
9326 The name of the frei0r effect to load. If the environment variable
9327 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
9328 directories specified by the colon-separated list in @env{FREI0R_PATH}.
9329 Otherwise, the standard frei0r paths are searched, in this order:
9330 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
9331 @file{/usr/lib/frei0r-1/}.
9332
9333 @item filter_params
9334 A '|'-separated list of parameters to pass to the frei0r effect.
9335
9336 @end table
9337
9338 A frei0r effect parameter can be a boolean (its value is either
9339 "y" or "n"), a double, a color (specified as
9340 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
9341 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
9342 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
9343 a position (specified as @var{X}/@var{Y}, where
9344 @var{X} and @var{Y} are floating point numbers) and/or a string.
9345
9346 The number and types of parameters depend on the loaded effect. If an
9347 effect parameter is not specified, the default value is set.
9348
9349 @subsection Examples
9350
9351 @itemize
9352 @item
9353 Apply the distort0r effect, setting the first two double parameters:
9354 @example
9355 frei0r=filter_name=distort0r:filter_params=0.5|0.01
9356 @end example
9357
9358 @item
9359 Apply the colordistance effect, taking a color as the first parameter:
9360 @example
9361 frei0r=colordistance:0.2/0.3/0.4
9362 frei0r=colordistance:violet
9363 frei0r=colordistance:0x112233
9364 @end example
9365
9366 @item
9367 Apply the perspective effect, specifying the top left and top right image
9368 positions:
9369 @example
9370 frei0r=perspective:0.2/0.2|0.8/0.2
9371 @end example
9372 @end itemize
9373
9374 For more information, see
9375 @url{http://frei0r.dyne.org}
9376
9377 @section fspp
9378
9379 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
9380
9381 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
9382 processing filter, one of them is performed once per block, not per pixel.
9383 This allows for much higher speed.
9384
9385 The filter accepts the following options:
9386
9387 @table @option
9388 @item quality
9389 Set quality. This option defines the number of levels for averaging. It accepts
9390 an integer in the range 4-5. Default value is @code{4}.
9391
9392 @item qp
9393 Force a constant quantization parameter. It accepts an integer in range 0-63.
9394 If not set, the filter will use the QP from the video stream (if available).
9395
9396 @item strength
9397 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
9398 more details but also more artifacts, while higher values make the image smoother
9399 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
9400
9401 @item use_bframe_qp
9402 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
9403 option may cause flicker since the B-Frames have often larger QP. Default is
9404 @code{0} (not enabled).
9405
9406 @end table
9407
9408 @section gblur
9409
9410 Apply Gaussian blur filter.
9411
9412 The filter accepts the following options:
9413
9414 @table @option
9415 @item sigma
9416 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
9417
9418 @item steps
9419 Set number of steps for Gaussian approximation. Defauls is @code{1}.
9420
9421 @item planes
9422 Set which planes to filter. By default all planes are filtered.
9423
9424 @item sigmaV
9425 Set vertical sigma, if negative it will be same as @code{sigma}.
9426 Default is @code{-1}.
9427 @end table
9428
9429 @section geq
9430
9431 The filter accepts the following options:
9432
9433 @table @option
9434 @item lum_expr, lum
9435 Set the luminance expression.
9436 @item cb_expr, cb
9437 Set the chrominance blue expression.
9438 @item cr_expr, cr
9439 Set the chrominance red expression.
9440 @item alpha_expr, a
9441 Set the alpha expression.
9442 @item red_expr, r
9443 Set the red expression.
9444 @item green_expr, g
9445 Set the green expression.
9446 @item blue_expr, b
9447 Set the blue expression.
9448 @end table
9449
9450 The colorspace is selected according to the specified options. If one
9451 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
9452 options is specified, the filter will automatically select a YCbCr
9453 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
9454 @option{blue_expr} options is specified, it will select an RGB
9455 colorspace.
9456
9457 If one of the chrominance expression is not defined, it falls back on the other
9458 one. If no alpha expression is specified it will evaluate to opaque value.
9459 If none of chrominance expressions are specified, they will evaluate
9460 to the luminance expression.
9461
9462 The expressions can use the following variables and functions:
9463
9464 @table @option
9465 @item N
9466 The sequential number of the filtered frame, starting from @code{0}.
9467
9468 @item X
9469 @item Y
9470 The coordinates of the current sample.
9471
9472 @item W
9473 @item H
9474 The width and height of the image.
9475
9476 @item SW
9477 @item SH
9478 Width and height scale depending on the currently filtered plane. It is the
9479 ratio between the corresponding luma plane number of pixels and the current
9480 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
9481 @code{0.5,0.5} for chroma planes.
9482
9483 @item T
9484 Time of the current frame, expressed in seconds.
9485
9486 @item p(x, y)
9487 Return the value of the pixel at location (@var{x},@var{y}) of the current
9488 plane.
9489
9490 @item lum(x, y)
9491 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
9492 plane.
9493
9494 @item cb(x, y)
9495 Return the value of the pixel at location (@var{x},@var{y}) of the
9496 blue-difference chroma plane. Return 0 if there is no such plane.
9497
9498 @item cr(x, y)
9499 Return the value of the pixel at location (@var{x},@var{y}) of the
9500 red-difference chroma plane. Return 0 if there is no such plane.
9501
9502 @item r(x, y)
9503 @item g(x, y)
9504 @item b(x, y)
9505 Return the value of the pixel at location (@var{x},@var{y}) of the
9506 red/green/blue component. Return 0 if there is no such component.
9507
9508 @item alpha(x, y)
9509 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
9510 plane. Return 0 if there is no such plane.
9511 @end table
9512
9513 For functions, if @var{x} and @var{y} are outside the area, the value will be
9514 automatically clipped to the closer edge.
9515
9516 @subsection Examples
9517
9518 @itemize
9519 @item
9520 Flip the image horizontally:
9521 @example
9522 geq=p(W-X\,Y)
9523 @end example
9524
9525 @item
9526 Generate a bidimensional sine wave, with angle @code{PI/3} and a
9527 wavelength of 100 pixels:
9528 @example
9529 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
9530 @end example
9531
9532 @item
9533 Generate a fancy enigmatic moving light:
9534 @example
9535 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
9536 @end example
9537
9538 @item
9539 Generate a quick emboss effect:
9540 @example
9541 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
9542 @end example
9543
9544 @item
9545 Modify RGB components depending on pixel position:
9546 @example
9547 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
9548 @end example
9549
9550 @item
9551 Create a radial gradient that is the same size as the input (also see
9552 the @ref{vignette} filter):
9553 @example
9554 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
9555 @end example
9556 @end itemize
9557
9558 @section gradfun
9559
9560 Fix the banding artifacts that are sometimes introduced into nearly flat
9561 regions by truncation to 8-bit color depth.
9562 Interpolate the gradients that should go where the bands are, and
9563 dither them.
9564
9565 It is designed for playback only.  Do not use it prior to
9566 lossy compression, because compression tends to lose the dither and
9567 bring back the bands.
9568
9569 It accepts the following parameters:
9570
9571 @table @option
9572
9573 @item strength
9574 The maximum amount by which the filter will change any one pixel. This is also
9575 the threshold for detecting nearly flat regions. Acceptable values range from
9576 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
9577 valid range.
9578
9579 @item radius
9580 The neighborhood to fit the gradient to. A larger radius makes for smoother
9581 gradients, but also prevents the filter from modifying the pixels near detailed
9582 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
9583 values will be clipped to the valid range.
9584
9585 @end table
9586
9587 Alternatively, the options can be specified as a flat string:
9588 @var{strength}[:@var{radius}]
9589
9590 @subsection Examples
9591
9592 @itemize
9593 @item
9594 Apply the filter with a @code{3.5} strength and radius of @code{8}:
9595 @example
9596 gradfun=3.5:8
9597 @end example
9598
9599 @item
9600 Specify radius, omitting the strength (which will fall-back to the default
9601 value):
9602 @example
9603 gradfun=radius=8
9604 @end example
9605
9606 @end itemize
9607
9608 @anchor{haldclut}
9609 @section haldclut
9610
9611 Apply a Hald CLUT to a video stream.
9612
9613 First input is the video stream to process, and second one is the Hald CLUT.
9614 The Hald CLUT input can be a simple picture or a complete video stream.
9615
9616 The filter accepts the following options:
9617
9618 @table @option
9619 @item shortest
9620 Force termination when the shortest input terminates. Default is @code{0}.
9621 @item repeatlast
9622 Continue applying the last CLUT after the end of the stream. A value of
9623 @code{0} disable the filter after the last frame of the CLUT is reached.
9624 Default is @code{1}.
9625 @end table
9626
9627 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
9628 filters share the same internals).
9629
9630 More information about the Hald CLUT can be found on Eskil Steenberg's website
9631 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
9632
9633 @subsection Workflow examples
9634
9635 @subsubsection Hald CLUT video stream
9636
9637 Generate an identity Hald CLUT stream altered with various effects:
9638 @example
9639 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
9640 @end example
9641
9642 Note: make sure you use a lossless codec.
9643
9644 Then use it with @code{haldclut} to apply it on some random stream:
9645 @example
9646 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
9647 @end example
9648
9649 The Hald CLUT will be applied to the 10 first seconds (duration of
9650 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
9651 to the remaining frames of the @code{mandelbrot} stream.
9652
9653 @subsubsection Hald CLUT with preview
9654
9655 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
9656 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
9657 biggest possible square starting at the top left of the picture. The remaining
9658 padding pixels (bottom or right) will be ignored. This area can be used to add
9659 a preview of the Hald CLUT.
9660
9661 Typically, the following generated Hald CLUT will be supported by the
9662 @code{haldclut} filter:
9663
9664 @example
9665 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
9666    pad=iw+320 [padded_clut];
9667    smptebars=s=320x256, split [a][b];
9668    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
9669    [main][b] overlay=W-320" -frames:v 1 clut.png
9670 @end example
9671
9672 It contains the original and a preview of the effect of the CLUT: SMPTE color
9673 bars are displayed on the right-top, and below the same color bars processed by
9674 the color changes.
9675
9676 Then, the effect of this Hald CLUT can be visualized with:
9677 @example
9678 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
9679 @end example
9680
9681 @section hflip
9682
9683 Flip the input video horizontally.
9684
9685 For example, to horizontally flip the input video with @command{ffmpeg}:
9686 @example
9687 ffmpeg -i in.avi -vf "hflip" out.avi
9688 @end example
9689
9690 @section histeq
9691 This filter applies a global color histogram equalization on a
9692 per-frame basis.
9693
9694 It can be used to correct video that has a compressed range of pixel
9695 intensities.  The filter redistributes the pixel intensities to
9696 equalize their distribution across the intensity range. It may be
9697 viewed as an "automatically adjusting contrast filter". This filter is
9698 useful only for correcting degraded or poorly captured source
9699 video.
9700
9701 The filter accepts the following options:
9702
9703 @table @option
9704 @item strength
9705 Determine the amount of equalization to be applied.  As the strength
9706 is reduced, the distribution of pixel intensities more-and-more
9707 approaches that of the input frame. The value must be a float number
9708 in the range [0,1] and defaults to 0.200.
9709
9710 @item intensity
9711 Set the maximum intensity that can generated and scale the output
9712 values appropriately.  The strength should be set as desired and then
9713 the intensity can be limited if needed to avoid washing-out. The value
9714 must be a float number in the range [0,1] and defaults to 0.210.
9715
9716 @item antibanding
9717 Set the antibanding level. If enabled the filter will randomly vary
9718 the luminance of output pixels by a small amount to avoid banding of
9719 the histogram. Possible values are @code{none}, @code{weak} or
9720 @code{strong}. It defaults to @code{none}.
9721 @end table
9722
9723 @section histogram
9724
9725 Compute and draw a color distribution histogram for the input video.
9726
9727 The computed histogram is a representation of the color component
9728 distribution in an image.
9729
9730 Standard histogram displays the color components distribution in an image.
9731 Displays color graph for each color component. Shows distribution of
9732 the Y, U, V, A or R, G, B components, depending on input format, in the
9733 current frame. Below each graph a color component scale meter is shown.
9734
9735 The filter accepts the following options:
9736
9737 @table @option
9738 @item level_height
9739 Set height of level. Default value is @code{200}.
9740 Allowed range is [50, 2048].
9741
9742 @item scale_height
9743 Set height of color scale. Default value is @code{12}.
9744 Allowed range is [0, 40].
9745
9746 @item display_mode
9747 Set display mode.
9748 It accepts the following values:
9749 @table @samp
9750 @item stack
9751 Per color component graphs are placed below each other.
9752
9753 @item parade
9754 Per color component graphs are placed side by side.
9755
9756 @item overlay
9757 Presents information identical to that in the @code{parade}, except
9758 that the graphs representing color components are superimposed directly
9759 over one another.
9760 @end table
9761 Default is @code{stack}.
9762
9763 @item levels_mode
9764 Set mode. Can be either @code{linear}, or @code{logarithmic}.
9765 Default is @code{linear}.
9766
9767 @item components
9768 Set what color components to display.
9769 Default is @code{7}.
9770
9771 @item fgopacity
9772 Set foreground opacity. Default is @code{0.7}.
9773
9774 @item bgopacity
9775 Set background opacity. Default is @code{0.5}.
9776 @end table
9777
9778 @subsection Examples
9779
9780 @itemize
9781
9782 @item
9783 Calculate and draw histogram:
9784 @example
9785 ffplay -i input -vf histogram
9786 @end example
9787
9788 @end itemize
9789
9790 @anchor{hqdn3d}
9791 @section hqdn3d
9792
9793 This is a high precision/quality 3d denoise filter. It aims to reduce
9794 image noise, producing smooth images and making still images really
9795 still. It should enhance compressibility.
9796
9797 It accepts the following optional parameters:
9798
9799 @table @option
9800 @item luma_spatial
9801 A non-negative floating point number which specifies spatial luma strength.
9802 It defaults to 4.0.
9803
9804 @item chroma_spatial
9805 A non-negative floating point number which specifies spatial chroma strength.
9806 It defaults to 3.0*@var{luma_spatial}/4.0.
9807
9808 @item luma_tmp
9809 A floating point number which specifies luma temporal strength. It defaults to
9810 6.0*@var{luma_spatial}/4.0.
9811
9812 @item chroma_tmp
9813 A floating point number which specifies chroma temporal strength. It defaults to
9814 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
9815 @end table
9816
9817 @section hwdownload
9818
9819 Download hardware frames to system memory.
9820
9821 The input must be in hardware frames, and the output a non-hardware format.
9822 Not all formats will be supported on the output - it may be necessary to insert
9823 an additional @option{format} filter immediately following in the graph to get
9824 the output in a supported format.
9825
9826 @section hwmap
9827
9828 Map hardware frames to system memory or to another device.
9829
9830 This filter has several different modes of operation; which one is used depends
9831 on the input and output formats:
9832 @itemize
9833 @item
9834 Hardware frame input, normal frame output
9835
9836 Map the input frames to system memory and pass them to the output.  If the
9837 original hardware frame is later required (for example, after overlaying
9838 something else on part of it), the @option{hwmap} filter can be used again
9839 in the next mode to retrieve it.
9840 @item
9841 Normal frame input, hardware frame output
9842
9843 If the input is actually a software-mapped hardware frame, then unmap it -
9844 that is, return the original hardware frame.
9845
9846 Otherwise, a device must be provided.  Create new hardware surfaces on that
9847 device for the output, then map them back to the software format at the input
9848 and give those frames to the preceding filter.  This will then act like the
9849 @option{hwupload} filter, but may be able to avoid an additional copy when
9850 the input is already in a compatible format.
9851 @item
9852 Hardware frame input and output
9853
9854 A device must be supplied for the output, either directly or with the
9855 @option{derive_device} option.  The input and output devices must be of
9856 different types and compatible - the exact meaning of this is
9857 system-dependent, but typically it means that they must refer to the same
9858 underlying hardware context (for example, refer to the same graphics card).
9859
9860 If the input frames were originally created on the output device, then unmap
9861 to retrieve the original frames.
9862
9863 Otherwise, map the frames to the output device - create new hardware frames
9864 on the output corresponding to the frames on the input.
9865 @end itemize
9866
9867 The following additional parameters are accepted:
9868
9869 @table @option
9870 @item mode
9871 Set the frame mapping mode.  Some combination of:
9872 @table @var
9873 @item read
9874 The mapped frame should be readable.
9875 @item write
9876 The mapped frame should be writeable.
9877 @item overwrite
9878 The mapping will always overwrite the entire frame.
9879
9880 This may improve performance in some cases, as the original contents of the
9881 frame need not be loaded.
9882 @item direct
9883 The mapping must not involve any copying.
9884
9885 Indirect mappings to copies of frames are created in some cases where either
9886 direct mapping is not possible or it would have unexpected properties.
9887 Setting this flag ensures that the mapping is direct and will fail if that is
9888 not possible.
9889 @end table
9890 Defaults to @var{read+write} if not specified.
9891
9892 @item derive_device @var{type}
9893 Rather than using the device supplied at initialisation, instead derive a new
9894 device of type @var{type} from the device the input frames exist on.
9895
9896 @item reverse
9897 In a hardware to hardware mapping, map in reverse - create frames in the sink
9898 and map them back to the source.  This may be necessary in some cases where
9899 a mapping in one direction is required but only the opposite direction is
9900 supported by the devices being used.
9901
9902 This option is dangerous - it may break the preceding filter in undefined
9903 ways if there are any additional constraints on that filter's output.
9904 Do not use it without fully understanding the implications of its use.
9905 @end table
9906
9907 @section hwupload
9908
9909 Upload system memory frames to hardware surfaces.
9910
9911 The device to upload to must be supplied when the filter is initialised.  If
9912 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
9913 option.
9914
9915 @anchor{hwupload_cuda}
9916 @section hwupload_cuda
9917
9918 Upload system memory frames to a CUDA device.
9919
9920 It accepts the following optional parameters:
9921
9922 @table @option
9923 @item device
9924 The number of the CUDA device to use
9925 @end table
9926
9927 @section hqx
9928
9929 Apply a high-quality magnification filter designed for pixel art. This filter
9930 was originally created by Maxim Stepin.
9931
9932 It accepts the following option:
9933
9934 @table @option
9935 @item n
9936 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
9937 @code{hq3x} and @code{4} for @code{hq4x}.
9938 Default is @code{3}.
9939 @end table
9940
9941 @section hstack
9942 Stack input videos horizontally.
9943
9944 All streams must be of same pixel format and of same height.
9945
9946 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
9947 to create same output.
9948
9949 The filter accept the following option:
9950
9951 @table @option
9952 @item inputs
9953 Set number of input streams. Default is 2.
9954
9955 @item shortest
9956 If set to 1, force the output to terminate when the shortest input
9957 terminates. Default value is 0.
9958 @end table
9959
9960 @section hue
9961
9962 Modify the hue and/or the saturation of the input.
9963
9964 It accepts the following parameters:
9965
9966 @table @option
9967 @item h
9968 Specify the hue angle as a number of degrees. It accepts an expression,
9969 and defaults to "0".
9970
9971 @item s
9972 Specify the saturation in the [-10,10] range. It accepts an expression and
9973 defaults to "1".
9974
9975 @item H
9976 Specify the hue angle as a number of radians. It accepts an
9977 expression, and defaults to "0".
9978
9979 @item b
9980 Specify the brightness in the [-10,10] range. It accepts an expression and
9981 defaults to "0".
9982 @end table
9983
9984 @option{h} and @option{H} are mutually exclusive, and can't be
9985 specified at the same time.
9986
9987 The @option{b}, @option{h}, @option{H} and @option{s} option values are
9988 expressions containing the following constants:
9989
9990 @table @option
9991 @item n
9992 frame count of the input frame starting from 0
9993
9994 @item pts
9995 presentation timestamp of the input frame expressed in time base units
9996
9997 @item r
9998 frame rate of the input video, NAN if the input frame rate is unknown
9999
10000 @item t
10001 timestamp expressed in seconds, NAN if the input timestamp is unknown
10002
10003 @item tb
10004 time base of the input video
10005 @end table
10006
10007 @subsection Examples
10008
10009 @itemize
10010 @item
10011 Set the hue to 90 degrees and the saturation to 1.0:
10012 @example
10013 hue=h=90:s=1
10014 @end example
10015
10016 @item
10017 Same command but expressing the hue in radians:
10018 @example
10019 hue=H=PI/2:s=1
10020 @end example
10021
10022 @item
10023 Rotate hue and make the saturation swing between 0
10024 and 2 over a period of 1 second:
10025 @example
10026 hue="H=2*PI*t: s=sin(2*PI*t)+1"
10027 @end example
10028
10029 @item
10030 Apply a 3 seconds saturation fade-in effect starting at 0:
10031 @example
10032 hue="s=min(t/3\,1)"
10033 @end example
10034
10035 The general fade-in expression can be written as:
10036 @example
10037 hue="s=min(0\, max((t-START)/DURATION\, 1))"
10038 @end example
10039
10040 @item
10041 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
10042 @example
10043 hue="s=max(0\, min(1\, (8-t)/3))"
10044 @end example
10045
10046 The general fade-out expression can be written as:
10047 @example
10048 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
10049 @end example
10050
10051 @end itemize
10052
10053 @subsection Commands
10054
10055 This filter supports the following commands:
10056 @table @option
10057 @item b
10058 @item s
10059 @item h
10060 @item H
10061 Modify the hue and/or the saturation and/or brightness of the input video.
10062 The command accepts the same syntax of the corresponding option.
10063
10064 If the specified expression is not valid, it is kept at its current
10065 value.
10066 @end table
10067
10068 @section hysteresis
10069
10070 Grow first stream into second stream by connecting components.
10071 This makes it possible to build more robust edge masks.
10072
10073 This filter accepts the following options:
10074
10075 @table @option
10076 @item planes
10077 Set which planes will be processed as bitmap, unprocessed planes will be
10078 copied from first stream.
10079 By default value 0xf, all planes will be processed.
10080
10081 @item threshold
10082 Set threshold which is used in filtering. If pixel component value is higher than
10083 this value filter algorithm for connecting components is activated.
10084 By default value is 0.
10085 @end table
10086
10087 @section idet
10088
10089 Detect video interlacing type.
10090
10091 This filter tries to detect if the input frames are interlaced, progressive,
10092 top or bottom field first. It will also try to detect fields that are
10093 repeated between adjacent frames (a sign of telecine).
10094
10095 Single frame detection considers only immediately adjacent frames when classifying each frame.
10096 Multiple frame detection incorporates the classification history of previous frames.
10097
10098 The filter will log these metadata values:
10099
10100 @table @option
10101 @item single.current_frame
10102 Detected type of current frame using single-frame detection. One of:
10103 ``tff'' (top field first), ``bff'' (bottom field first),
10104 ``progressive'', or ``undetermined''
10105
10106 @item single.tff
10107 Cumulative number of frames detected as top field first using single-frame detection.
10108
10109 @item multiple.tff
10110 Cumulative number of frames detected as top field first using multiple-frame detection.
10111
10112 @item single.bff
10113 Cumulative number of frames detected as bottom field first using single-frame detection.
10114
10115 @item multiple.current_frame
10116 Detected type of current frame using multiple-frame detection. One of:
10117 ``tff'' (top field first), ``bff'' (bottom field first),
10118 ``progressive'', or ``undetermined''
10119
10120 @item multiple.bff
10121 Cumulative number of frames detected as bottom field first using multiple-frame detection.
10122
10123 @item single.progressive
10124 Cumulative number of frames detected as progressive using single-frame detection.
10125
10126 @item multiple.progressive
10127 Cumulative number of frames detected as progressive using multiple-frame detection.
10128
10129 @item single.undetermined
10130 Cumulative number of frames that could not be classified using single-frame detection.
10131
10132 @item multiple.undetermined
10133 Cumulative number of frames that could not be classified using multiple-frame detection.
10134
10135 @item repeated.current_frame
10136 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
10137
10138 @item repeated.neither
10139 Cumulative number of frames with no repeated field.
10140
10141 @item repeated.top
10142 Cumulative number of frames with the top field repeated from the previous frame's top field.
10143
10144 @item repeated.bottom
10145 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
10146 @end table
10147
10148 The filter accepts the following options:
10149
10150 @table @option
10151 @item intl_thres
10152 Set interlacing threshold.
10153 @item prog_thres
10154 Set progressive threshold.
10155 @item rep_thres
10156 Threshold for repeated field detection.
10157 @item half_life
10158 Number of frames after which a given frame's contribution to the
10159 statistics is halved (i.e., it contributes only 0.5 to its
10160 classification). The default of 0 means that all frames seen are given
10161 full weight of 1.0 forever.
10162 @item analyze_interlaced_flag
10163 When this is not 0 then idet will use the specified number of frames to determine
10164 if the interlaced flag is accurate, it will not count undetermined frames.
10165 If the flag is found to be accurate it will be used without any further
10166 computations, if it is found to be inaccurate it will be cleared without any
10167 further computations. This allows inserting the idet filter as a low computational
10168 method to clean up the interlaced flag
10169 @end table
10170
10171 @section il
10172
10173 Deinterleave or interleave fields.
10174
10175 This filter allows one to process interlaced images fields without
10176 deinterlacing them. Deinterleaving splits the input frame into 2
10177 fields (so called half pictures). Odd lines are moved to the top
10178 half of the output image, even lines to the bottom half.
10179 You can process (filter) them independently and then re-interleave them.
10180
10181 The filter accepts the following options:
10182
10183 @table @option
10184 @item luma_mode, l
10185 @item chroma_mode, c
10186 @item alpha_mode, a
10187 Available values for @var{luma_mode}, @var{chroma_mode} and
10188 @var{alpha_mode} are:
10189
10190 @table @samp
10191 @item none
10192 Do nothing.
10193
10194 @item deinterleave, d
10195 Deinterleave fields, placing one above the other.
10196
10197 @item interleave, i
10198 Interleave fields. Reverse the effect of deinterleaving.
10199 @end table
10200 Default value is @code{none}.
10201
10202 @item luma_swap, ls
10203 @item chroma_swap, cs
10204 @item alpha_swap, as
10205 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
10206 @end table
10207
10208 @section inflate
10209
10210 Apply inflate effect to the video.
10211
10212 This filter replaces the pixel by the local(3x3) average by taking into account
10213 only values higher than the pixel.
10214
10215 It accepts the following options:
10216
10217 @table @option
10218 @item threshold0
10219 @item threshold1
10220 @item threshold2
10221 @item threshold3
10222 Limit the maximum change for each plane, default is 65535.
10223 If 0, plane will remain unchanged.
10224 @end table
10225
10226 @section interlace
10227
10228 Simple interlacing filter from progressive contents. This interleaves upper (or
10229 lower) lines from odd frames with lower (or upper) lines from even frames,
10230 halving the frame rate and preserving image height.
10231
10232 @example
10233    Original        Original             New Frame
10234    Frame 'j'      Frame 'j+1'             (tff)
10235   ==========      ===========       ==================
10236     Line 0  -------------------->    Frame 'j' Line 0
10237     Line 1          Line 1  ---->   Frame 'j+1' Line 1
10238     Line 2 --------------------->    Frame 'j' Line 2
10239     Line 3          Line 3  ---->   Frame 'j+1' Line 3
10240      ...             ...                   ...
10241 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
10242 @end example
10243
10244 It accepts the following optional parameters:
10245
10246 @table @option
10247 @item scan
10248 This determines whether the interlaced frame is taken from the even
10249 (tff - default) or odd (bff) lines of the progressive frame.
10250
10251 @item lowpass
10252 Vertical lowpass filter to avoid twitter interlacing and
10253 reduce moire patterns.
10254
10255 @table @samp
10256 @item 0, off
10257 Disable vertical lowpass filter
10258
10259 @item 1, linear
10260 Enable linear filter (default)
10261
10262 @item 2, complex
10263 Enable complex filter. This will slightly less reduce twitter and moire
10264 but better retain detail and subjective sharpness impression.
10265
10266 @end table
10267 @end table
10268
10269 @section kerndeint
10270
10271 Deinterlace input video by applying Donald Graft's adaptive kernel
10272 deinterling. Work on interlaced parts of a video to produce
10273 progressive frames.
10274
10275 The description of the accepted parameters follows.
10276
10277 @table @option
10278 @item thresh
10279 Set the threshold which affects the filter's tolerance when
10280 determining if a pixel line must be processed. It must be an integer
10281 in the range [0,255] and defaults to 10. A value of 0 will result in
10282 applying the process on every pixels.
10283
10284 @item map
10285 Paint pixels exceeding the threshold value to white if set to 1.
10286 Default is 0.
10287
10288 @item order
10289 Set the fields order. Swap fields if set to 1, leave fields alone if
10290 0. Default is 0.
10291
10292 @item sharp
10293 Enable additional sharpening if set to 1. Default is 0.
10294
10295 @item twoway
10296 Enable twoway sharpening if set to 1. Default is 0.
10297 @end table
10298
10299 @subsection Examples
10300
10301 @itemize
10302 @item
10303 Apply default values:
10304 @example
10305 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
10306 @end example
10307
10308 @item
10309 Enable additional sharpening:
10310 @example
10311 kerndeint=sharp=1
10312 @end example
10313
10314 @item
10315 Paint processed pixels in white:
10316 @example
10317 kerndeint=map=1
10318 @end example
10319 @end itemize
10320
10321 @section lenscorrection
10322
10323 Correct radial lens distortion
10324
10325 This filter can be used to correct for radial distortion as can result from the use
10326 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
10327 one can use tools available for example as part of opencv or simply trial-and-error.
10328 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
10329 and extract the k1 and k2 coefficients from the resulting matrix.
10330
10331 Note that effectively the same filter is available in the open-source tools Krita and
10332 Digikam from the KDE project.
10333
10334 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
10335 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
10336 brightness distribution, so you may want to use both filters together in certain
10337 cases, though you will have to take care of ordering, i.e. whether vignetting should
10338 be applied before or after lens correction.
10339
10340 @subsection Options
10341
10342 The filter accepts the following options:
10343
10344 @table @option
10345 @item cx
10346 Relative x-coordinate of the focal point of the image, and thereby the center of the
10347 distortion. This value has a range [0,1] and is expressed as fractions of the image
10348 width.
10349 @item cy
10350 Relative y-coordinate of the focal point of the image, and thereby the center of the
10351 distortion. This value has a range [0,1] and is expressed as fractions of the image
10352 height.
10353 @item k1
10354 Coefficient of the quadratic correction term. 0.5 means no correction.
10355 @item k2
10356 Coefficient of the double quadratic correction term. 0.5 means no correction.
10357 @end table
10358
10359 The formula that generates the correction is:
10360
10361 @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)
10362
10363 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
10364 distances from the focal point in the source and target images, respectively.
10365
10366 @section libvmaf
10367
10368 Obtain the VMAF (Video Multi-Method Assessment Fusion)
10369 score between two input videos.
10370
10371 The obtained VMAF score is printed through the logging system.
10372
10373 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
10374 After installing the library it can be enabled using:
10375 @code{./configure --enable-libvmaf}.
10376 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
10377
10378 The filter has following options:
10379
10380 @table @option
10381 @item model_path
10382 Set the model path which is to be used for SVM.
10383 Default value: @code{"vmaf_v0.6.1.pkl"}
10384
10385 @item log_path
10386 Set the file path to be used to store logs.
10387
10388 @item log_fmt
10389 Set the format of the log file (xml or json).
10390
10391 @item enable_transform
10392 Enables transform for computing vmaf.
10393
10394 @item phone_model
10395 Invokes the phone model which will generate VMAF scores higher than in the
10396 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
10397
10398 @item psnr
10399 Enables computing psnr along with vmaf.
10400
10401 @item ssim
10402 Enables computing ssim along with vmaf.
10403
10404 @item ms_ssim
10405 Enables computing ms_ssim along with vmaf.
10406
10407 @item pool
10408 Set the pool method (mean, min or harmonic mean) to be used for computing vmaf.
10409 @end table
10410
10411 This filter also supports the @ref{framesync} options.
10412
10413 On the below examples the input file @file{main.mpg} being processed is
10414 compared with the reference file @file{ref.mpg}.
10415
10416 @example
10417 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
10418 @end example
10419
10420 Example with options:
10421 @example
10422 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:enable-transform=1" -f null -
10423 @end example
10424
10425 @section limiter
10426
10427 Limits the pixel components values to the specified range [min, max].
10428
10429 The filter accepts the following options:
10430
10431 @table @option
10432 @item min
10433 Lower bound. Defaults to the lowest allowed value for the input.
10434
10435 @item max
10436 Upper bound. Defaults to the highest allowed value for the input.
10437
10438 @item planes
10439 Specify which planes will be processed. Defaults to all available.
10440 @end table
10441
10442 @section loop
10443
10444 Loop video frames.
10445
10446 The filter accepts the following options:
10447
10448 @table @option
10449 @item loop
10450 Set the number of loops. Setting this value to -1 will result in infinite loops.
10451 Default is 0.
10452
10453 @item size
10454 Set maximal size in number of frames. Default is 0.
10455
10456 @item start
10457 Set first frame of loop. Default is 0.
10458 @end table
10459
10460 @anchor{lut3d}
10461 @section lut3d
10462
10463 Apply a 3D LUT to an input video.
10464
10465 The filter accepts the following options:
10466
10467 @table @option
10468 @item file
10469 Set the 3D LUT file name.
10470
10471 Currently supported formats:
10472 @table @samp
10473 @item 3dl
10474 AfterEffects
10475 @item cube
10476 Iridas
10477 @item dat
10478 DaVinci
10479 @item m3d
10480 Pandora
10481 @end table
10482 @item interp
10483 Select interpolation mode.
10484
10485 Available values are:
10486
10487 @table @samp
10488 @item nearest
10489 Use values from the nearest defined point.
10490 @item trilinear
10491 Interpolate values using the 8 points defining a cube.
10492 @item tetrahedral
10493 Interpolate values using a tetrahedron.
10494 @end table
10495 @end table
10496
10497 This filter also supports the @ref{framesync} options.
10498
10499 @section lumakey
10500
10501 Turn certain luma values into transparency.
10502
10503 The filter accepts the following options:
10504
10505 @table @option
10506 @item threshold
10507 Set the luma which will be used as base for transparency.
10508 Default value is @code{0}.
10509
10510 @item tolerance
10511 Set the range of luma values to be keyed out.
10512 Default value is @code{0}.
10513
10514 @item softness
10515 Set the range of softness. Default value is @code{0}.
10516 Use this to control gradual transition from zero to full transparency.
10517 @end table
10518
10519 @section lut, lutrgb, lutyuv
10520
10521 Compute a look-up table for binding each pixel component input value
10522 to an output value, and apply it to the input video.
10523
10524 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
10525 to an RGB input video.
10526
10527 These filters accept the following parameters:
10528 @table @option
10529 @item c0
10530 set first pixel component expression
10531 @item c1
10532 set second pixel component expression
10533 @item c2
10534 set third pixel component expression
10535 @item c3
10536 set fourth pixel component expression, corresponds to the alpha component
10537
10538 @item r
10539 set red component expression
10540 @item g
10541 set green component expression
10542 @item b
10543 set blue component expression
10544 @item a
10545 alpha component expression
10546
10547 @item y
10548 set Y/luminance component expression
10549 @item u
10550 set U/Cb component expression
10551 @item v
10552 set V/Cr component expression
10553 @end table
10554
10555 Each of them specifies the expression to use for computing the lookup table for
10556 the corresponding pixel component values.
10557
10558 The exact component associated to each of the @var{c*} options depends on the
10559 format in input.
10560
10561 The @var{lut} filter requires either YUV or RGB pixel formats in input,
10562 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
10563
10564 The expressions can contain the following constants and functions:
10565
10566 @table @option
10567 @item w
10568 @item h
10569 The input width and height.
10570
10571 @item val
10572 The input value for the pixel component.
10573
10574 @item clipval
10575 The input value, clipped to the @var{minval}-@var{maxval} range.
10576
10577 @item maxval
10578 The maximum value for the pixel component.
10579
10580 @item minval
10581 The minimum value for the pixel component.
10582
10583 @item negval
10584 The negated value for the pixel component value, clipped to the
10585 @var{minval}-@var{maxval} range; it corresponds to the expression
10586 "maxval-clipval+minval".
10587
10588 @item clip(val)
10589 The computed value in @var{val}, clipped to the
10590 @var{minval}-@var{maxval} range.
10591
10592 @item gammaval(gamma)
10593 The computed gamma correction value of the pixel component value,
10594 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
10595 expression
10596 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
10597
10598 @end table
10599
10600 All expressions default to "val".
10601
10602 @subsection Examples
10603
10604 @itemize
10605 @item
10606 Negate input video:
10607 @example
10608 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
10609 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
10610 @end example
10611
10612 The above is the same as:
10613 @example
10614 lutrgb="r=negval:g=negval:b=negval"
10615 lutyuv="y=negval:u=negval:v=negval"
10616 @end example
10617
10618 @item
10619 Negate luminance:
10620 @example
10621 lutyuv=y=negval
10622 @end example
10623
10624 @item
10625 Remove chroma components, turning the video into a graytone image:
10626 @example
10627 lutyuv="u=128:v=128"
10628 @end example
10629
10630 @item
10631 Apply a luma burning effect:
10632 @example
10633 lutyuv="y=2*val"
10634 @end example
10635
10636 @item
10637 Remove green and blue components:
10638 @example
10639 lutrgb="g=0:b=0"
10640 @end example
10641
10642 @item
10643 Set a constant alpha channel value on input:
10644 @example
10645 format=rgba,lutrgb=a="maxval-minval/2"
10646 @end example
10647
10648 @item
10649 Correct luminance gamma by a factor of 0.5:
10650 @example
10651 lutyuv=y=gammaval(0.5)
10652 @end example
10653
10654 @item
10655 Discard least significant bits of luma:
10656 @example
10657 lutyuv=y='bitand(val, 128+64+32)'
10658 @end example
10659
10660 @item
10661 Technicolor like effect:
10662 @example
10663 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
10664 @end example
10665 @end itemize
10666
10667 @section lut2, tlut2
10668
10669 The @code{lut2} filter takes two input streams and outputs one
10670 stream.
10671
10672 The @code{tlut2} (time lut2) filter takes two consecutive frames
10673 from one single stream.
10674
10675 This filter accepts the following parameters:
10676 @table @option
10677 @item c0
10678 set first pixel component expression
10679 @item c1
10680 set second pixel component expression
10681 @item c2
10682 set third pixel component expression
10683 @item c3
10684 set fourth pixel component expression, corresponds to the alpha component
10685 @end table
10686
10687 Each of them specifies the expression to use for computing the lookup table for
10688 the corresponding pixel component values.
10689
10690 The exact component associated to each of the @var{c*} options depends on the
10691 format in inputs.
10692
10693 The expressions can contain the following constants:
10694
10695 @table @option
10696 @item w
10697 @item h
10698 The input width and height.
10699
10700 @item x
10701 The first input value for the pixel component.
10702
10703 @item y
10704 The second input value for the pixel component.
10705
10706 @item bdx
10707 The first input video bit depth.
10708
10709 @item bdy
10710 The second input video bit depth.
10711 @end table
10712
10713 All expressions default to "x".
10714
10715 @subsection Examples
10716
10717 @itemize
10718 @item
10719 Highlight differences between two RGB video streams:
10720 @example
10721 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)'
10722 @end example
10723
10724 @item
10725 Highlight differences between two YUV video streams:
10726 @example
10727 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)'
10728 @end example
10729
10730 @item
10731 Show max difference between two video streams:
10732 @example
10733 lut2='if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1)))'
10734 @end example
10735 @end itemize
10736
10737 @section maskedclamp
10738
10739 Clamp the first input stream with the second input and third input stream.
10740
10741 Returns the value of first stream to be between second input
10742 stream - @code{undershoot} and third input stream + @code{overshoot}.
10743
10744 This filter accepts the following options:
10745 @table @option
10746 @item undershoot
10747 Default value is @code{0}.
10748
10749 @item overshoot
10750 Default value is @code{0}.
10751
10752 @item planes
10753 Set which planes will be processed as bitmap, unprocessed planes will be
10754 copied from first stream.
10755 By default value 0xf, all planes will be processed.
10756 @end table
10757
10758 @section maskedmerge
10759
10760 Merge the first input stream with the second input stream using per pixel
10761 weights in the third input stream.
10762
10763 A value of 0 in the third stream pixel component means that pixel component
10764 from first stream is returned unchanged, while maximum value (eg. 255 for
10765 8-bit videos) means that pixel component from second stream is returned
10766 unchanged. Intermediate values define the amount of merging between both
10767 input stream's pixel components.
10768
10769 This filter accepts the following options:
10770 @table @option
10771 @item planes
10772 Set which planes will be processed as bitmap, unprocessed planes will be
10773 copied from first stream.
10774 By default value 0xf, all planes will be processed.
10775 @end table
10776
10777 @section mcdeint
10778
10779 Apply motion-compensation deinterlacing.
10780
10781 It needs one field per frame as input and must thus be used together
10782 with yadif=1/3 or equivalent.
10783
10784 This filter accepts the following options:
10785 @table @option
10786 @item mode
10787 Set the deinterlacing mode.
10788
10789 It accepts one of the following values:
10790 @table @samp
10791 @item fast
10792 @item medium
10793 @item slow
10794 use iterative motion estimation
10795 @item extra_slow
10796 like @samp{slow}, but use multiple reference frames.
10797 @end table
10798 Default value is @samp{fast}.
10799
10800 @item parity
10801 Set the picture field parity assumed for the input video. It must be
10802 one of the following values:
10803
10804 @table @samp
10805 @item 0, tff
10806 assume top field first
10807 @item 1, bff
10808 assume bottom field first
10809 @end table
10810
10811 Default value is @samp{bff}.
10812
10813 @item qp
10814 Set per-block quantization parameter (QP) used by the internal
10815 encoder.
10816
10817 Higher values should result in a smoother motion vector field but less
10818 optimal individual vectors. Default value is 1.
10819 @end table
10820
10821 @section mergeplanes
10822
10823 Merge color channel components from several video streams.
10824
10825 The filter accepts up to 4 input streams, and merge selected input
10826 planes to the output video.
10827
10828 This filter accepts the following options:
10829 @table @option
10830 @item mapping
10831 Set input to output plane mapping. Default is @code{0}.
10832
10833 The mappings is specified as a bitmap. It should be specified as a
10834 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
10835 mapping for the first plane of the output stream. 'A' sets the number of
10836 the input stream to use (from 0 to 3), and 'a' the plane number of the
10837 corresponding input to use (from 0 to 3). The rest of the mappings is
10838 similar, 'Bb' describes the mapping for the output stream second
10839 plane, 'Cc' describes the mapping for the output stream third plane and
10840 'Dd' describes the mapping for the output stream fourth plane.
10841
10842 @item format
10843 Set output pixel format. Default is @code{yuva444p}.
10844 @end table
10845
10846 @subsection Examples
10847
10848 @itemize
10849 @item
10850 Merge three gray video streams of same width and height into single video stream:
10851 @example
10852 [a0][a1][a2]mergeplanes=0x001020:yuv444p
10853 @end example
10854
10855 @item
10856 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
10857 @example
10858 [a0][a1]mergeplanes=0x00010210:yuva444p
10859 @end example
10860
10861 @item
10862 Swap Y and A plane in yuva444p stream:
10863 @example
10864 format=yuva444p,mergeplanes=0x03010200:yuva444p
10865 @end example
10866
10867 @item
10868 Swap U and V plane in yuv420p stream:
10869 @example
10870 format=yuv420p,mergeplanes=0x000201:yuv420p
10871 @end example
10872
10873 @item
10874 Cast a rgb24 clip to yuv444p:
10875 @example
10876 format=rgb24,mergeplanes=0x000102:yuv444p
10877 @end example
10878 @end itemize
10879
10880 @section mestimate
10881
10882 Estimate and export motion vectors using block matching algorithms.
10883 Motion vectors are stored in frame side data to be used by other filters.
10884
10885 This filter accepts the following options:
10886 @table @option
10887 @item method
10888 Specify the motion estimation method. Accepts one of the following values:
10889
10890 @table @samp
10891 @item esa
10892 Exhaustive search algorithm.
10893 @item tss
10894 Three step search algorithm.
10895 @item tdls
10896 Two dimensional logarithmic search algorithm.
10897 @item ntss
10898 New three step search algorithm.
10899 @item fss
10900 Four step search algorithm.
10901 @item ds
10902 Diamond search algorithm.
10903 @item hexbs
10904 Hexagon-based search algorithm.
10905 @item epzs
10906 Enhanced predictive zonal search algorithm.
10907 @item umh
10908 Uneven multi-hexagon search algorithm.
10909 @end table
10910 Default value is @samp{esa}.
10911
10912 @item mb_size
10913 Macroblock size. Default @code{16}.
10914
10915 @item search_param
10916 Search parameter. Default @code{7}.
10917 @end table
10918
10919 @section midequalizer
10920
10921 Apply Midway Image Equalization effect using two video streams.
10922
10923 Midway Image Equalization adjusts a pair of images to have the same
10924 histogram, while maintaining their dynamics as much as possible. It's
10925 useful for e.g. matching exposures from a pair of stereo cameras.
10926
10927 This filter has two inputs and one output, which must be of same pixel format, but
10928 may be of different sizes. The output of filter is first input adjusted with
10929 midway histogram of both inputs.
10930
10931 This filter accepts the following option:
10932
10933 @table @option
10934 @item planes
10935 Set which planes to process. Default is @code{15}, which is all available planes.
10936 @end table
10937
10938 @section minterpolate
10939
10940 Convert the video to specified frame rate using motion interpolation.
10941
10942 This filter accepts the following options:
10943 @table @option
10944 @item fps
10945 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}.
10946
10947 @item mi_mode
10948 Motion interpolation mode. Following values are accepted:
10949 @table @samp
10950 @item dup
10951 Duplicate previous or next frame for interpolating new ones.
10952 @item blend
10953 Blend source frames. Interpolated frame is mean of previous and next frames.
10954 @item mci
10955 Motion compensated interpolation. Following options are effective when this mode is selected:
10956
10957 @table @samp
10958 @item mc_mode
10959 Motion compensation mode. Following values are accepted:
10960 @table @samp
10961 @item obmc
10962 Overlapped block motion compensation.
10963 @item aobmc
10964 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
10965 @end table
10966 Default mode is @samp{obmc}.
10967
10968 @item me_mode
10969 Motion estimation mode. Following values are accepted:
10970 @table @samp
10971 @item bidir
10972 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
10973 @item bilat
10974 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
10975 @end table
10976 Default mode is @samp{bilat}.
10977
10978 @item me
10979 The algorithm to be used for motion estimation. Following values are accepted:
10980 @table @samp
10981 @item esa
10982 Exhaustive search algorithm.
10983 @item tss
10984 Three step search algorithm.
10985 @item tdls
10986 Two dimensional logarithmic search algorithm.
10987 @item ntss
10988 New three step search algorithm.
10989 @item fss
10990 Four step search algorithm.
10991 @item ds
10992 Diamond search algorithm.
10993 @item hexbs
10994 Hexagon-based search algorithm.
10995 @item epzs
10996 Enhanced predictive zonal search algorithm.
10997 @item umh
10998 Uneven multi-hexagon search algorithm.
10999 @end table
11000 Default algorithm is @samp{epzs}.
11001
11002 @item mb_size
11003 Macroblock size. Default @code{16}.
11004
11005 @item search_param
11006 Motion estimation search parameter. Default @code{32}.
11007
11008 @item vsbmc
11009 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).
11010 @end table
11011 @end table
11012
11013 @item scd
11014 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:
11015 @table @samp
11016 @item none
11017 Disable scene change detection.
11018 @item fdiff
11019 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
11020 @end table
11021 Default method is @samp{fdiff}.
11022
11023 @item scd_threshold
11024 Scene change detection threshold. Default is @code{5.0}.
11025 @end table
11026
11027 @section mix
11028
11029 Mix several video input streams into one video stream.
11030
11031 A description of the accepted options follows.
11032
11033 @table @option
11034 @item nb_inputs
11035 The number of inputs. If unspecified, it defaults to 2.
11036
11037 @item weights
11038 Specify weight of each input video stream as sequence.
11039 Each weight is separated by space.
11040
11041 @item duration
11042 Specify how end of stream is determined.
11043 @table @samp
11044 @item longest
11045 The duration of the longest input. (default)
11046
11047 @item shortest
11048 The duration of the shortest input.
11049
11050 @item first
11051 The duration of the first input.
11052 @end table
11053 @end table
11054
11055 @section mpdecimate
11056
11057 Drop frames that do not differ greatly from the previous frame in
11058 order to reduce frame rate.
11059
11060 The main use of this filter is for very-low-bitrate encoding
11061 (e.g. streaming over dialup modem), but it could in theory be used for
11062 fixing movies that were inverse-telecined incorrectly.
11063
11064 A description of the accepted options follows.
11065
11066 @table @option
11067 @item max
11068 Set the maximum number of consecutive frames which can be dropped (if
11069 positive), or the minimum interval between dropped frames (if
11070 negative). If the value is 0, the frame is dropped disregarding the
11071 number of previous sequentially dropped frames.
11072
11073 Default value is 0.
11074
11075 @item hi
11076 @item lo
11077 @item frac
11078 Set the dropping threshold values.
11079
11080 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
11081 represent actual pixel value differences, so a threshold of 64
11082 corresponds to 1 unit of difference for each pixel, or the same spread
11083 out differently over the block.
11084
11085 A frame is a candidate for dropping if no 8x8 blocks differ by more
11086 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
11087 meaning the whole image) differ by more than a threshold of @option{lo}.
11088
11089 Default value for @option{hi} is 64*12, default value for @option{lo} is
11090 64*5, and default value for @option{frac} is 0.33.
11091 @end table
11092
11093
11094 @section negate
11095
11096 Negate input video.
11097
11098 It accepts an integer in input; if non-zero it negates the
11099 alpha component (if available). The default value in input is 0.
11100
11101 @section nlmeans
11102
11103 Denoise frames using Non-Local Means algorithm.
11104
11105 Each pixel is adjusted by looking for other pixels with similar contexts. This
11106 context similarity is defined by comparing their surrounding patches of size
11107 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
11108 around the pixel.
11109
11110 Note that the research area defines centers for patches, which means some
11111 patches will be made of pixels outside that research area.
11112
11113 The filter accepts the following options.
11114
11115 @table @option
11116 @item s
11117 Set denoising strength.
11118
11119 @item p
11120 Set patch size.
11121
11122 @item pc
11123 Same as @option{p} but for chroma planes.
11124
11125 The default value is @var{0} and means automatic.
11126
11127 @item r
11128 Set research size.
11129
11130 @item rc
11131 Same as @option{r} but for chroma planes.
11132
11133 The default value is @var{0} and means automatic.
11134 @end table
11135
11136 @section nnedi
11137
11138 Deinterlace video using neural network edge directed interpolation.
11139
11140 This filter accepts the following options:
11141
11142 @table @option
11143 @item weights
11144 Mandatory option, without binary file filter can not work.
11145 Currently file can be found here:
11146 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
11147
11148 @item deint
11149 Set which frames to deinterlace, by default it is @code{all}.
11150 Can be @code{all} or @code{interlaced}.
11151
11152 @item field
11153 Set mode of operation.
11154
11155 Can be one of the following:
11156
11157 @table @samp
11158 @item af
11159 Use frame flags, both fields.
11160 @item a
11161 Use frame flags, single field.
11162 @item t
11163 Use top field only.
11164 @item b
11165 Use bottom field only.
11166 @item tf
11167 Use both fields, top first.
11168 @item bf
11169 Use both fields, bottom first.
11170 @end table
11171
11172 @item planes
11173 Set which planes to process, by default filter process all frames.
11174
11175 @item nsize
11176 Set size of local neighborhood around each pixel, used by the predictor neural
11177 network.
11178
11179 Can be one of the following:
11180
11181 @table @samp
11182 @item s8x6
11183 @item s16x6
11184 @item s32x6
11185 @item s48x6
11186 @item s8x4
11187 @item s16x4
11188 @item s32x4
11189 @end table
11190
11191 @item nns
11192 Set the number of neurons in predictor neural network.
11193 Can be one of the following:
11194
11195 @table @samp
11196 @item n16
11197 @item n32
11198 @item n64
11199 @item n128
11200 @item n256
11201 @end table
11202
11203 @item qual
11204 Controls the number of different neural network predictions that are blended
11205 together to compute the final output value. Can be @code{fast}, default or
11206 @code{slow}.
11207
11208 @item etype
11209 Set which set of weights to use in the predictor.
11210 Can be one of the following:
11211
11212 @table @samp
11213 @item a
11214 weights trained to minimize absolute error
11215 @item s
11216 weights trained to minimize squared error
11217 @end table
11218
11219 @item pscrn
11220 Controls whether or not the prescreener neural network is used to decide
11221 which pixels should be processed by the predictor neural network and which
11222 can be handled by simple cubic interpolation.
11223 The prescreener is trained to know whether cubic interpolation will be
11224 sufficient for a pixel or whether it should be predicted by the predictor nn.
11225 The computational complexity of the prescreener nn is much less than that of
11226 the predictor nn. Since most pixels can be handled by cubic interpolation,
11227 using the prescreener generally results in much faster processing.
11228 The prescreener is pretty accurate, so the difference between using it and not
11229 using it is almost always unnoticeable.
11230
11231 Can be one of the following:
11232
11233 @table @samp
11234 @item none
11235 @item original
11236 @item new
11237 @end table
11238
11239 Default is @code{new}.
11240
11241 @item fapprox
11242 Set various debugging flags.
11243 @end table
11244
11245 @section noformat
11246
11247 Force libavfilter not to use any of the specified pixel formats for the
11248 input to the next filter.
11249
11250 It accepts the following parameters:
11251 @table @option
11252
11253 @item pix_fmts
11254 A '|'-separated list of pixel format names, such as
11255 pix_fmts=yuv420p|monow|rgb24".
11256
11257 @end table
11258
11259 @subsection Examples
11260
11261 @itemize
11262 @item
11263 Force libavfilter to use a format different from @var{yuv420p} for the
11264 input to the vflip filter:
11265 @example
11266 noformat=pix_fmts=yuv420p,vflip
11267 @end example
11268
11269 @item
11270 Convert the input video to any of the formats not contained in the list:
11271 @example
11272 noformat=yuv420p|yuv444p|yuv410p
11273 @end example
11274 @end itemize
11275
11276 @section noise
11277
11278 Add noise on video input frame.
11279
11280 The filter accepts the following options:
11281
11282 @table @option
11283 @item all_seed
11284 @item c0_seed
11285 @item c1_seed
11286 @item c2_seed
11287 @item c3_seed
11288 Set noise seed for specific pixel component or all pixel components in case
11289 of @var{all_seed}. Default value is @code{123457}.
11290
11291 @item all_strength, alls
11292 @item c0_strength, c0s
11293 @item c1_strength, c1s
11294 @item c2_strength, c2s
11295 @item c3_strength, c3s
11296 Set noise strength for specific pixel component or all pixel components in case
11297 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
11298
11299 @item all_flags, allf
11300 @item c0_flags, c0f
11301 @item c1_flags, c1f
11302 @item c2_flags, c2f
11303 @item c3_flags, c3f
11304 Set pixel component flags or set flags for all components if @var{all_flags}.
11305 Available values for component flags are:
11306 @table @samp
11307 @item a
11308 averaged temporal noise (smoother)
11309 @item p
11310 mix random noise with a (semi)regular pattern
11311 @item t
11312 temporal noise (noise pattern changes between frames)
11313 @item u
11314 uniform noise (gaussian otherwise)
11315 @end table
11316 @end table
11317
11318 @subsection Examples
11319
11320 Add temporal and uniform noise to input video:
11321 @example
11322 noise=alls=20:allf=t+u
11323 @end example
11324
11325 @section normalize
11326
11327 Normalize RGB video (aka histogram stretching, contrast stretching).
11328 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
11329
11330 For each channel of each frame, the filter computes the input range and maps
11331 it linearly to the user-specified output range. The output range defaults
11332 to the full dynamic range from pure black to pure white.
11333
11334 Temporal smoothing can be used on the input range to reduce flickering (rapid
11335 changes in brightness) caused when small dark or bright objects enter or leave
11336 the scene. This is similar to the auto-exposure (automatic gain control) on a
11337 video camera, and, like a video camera, it may cause a period of over- or
11338 under-exposure of the video.
11339
11340 The R,G,B channels can be normalized independently, which may cause some
11341 color shifting, or linked together as a single channel, which prevents
11342 color shifting. Linked normalization preserves hue. Independent normalization
11343 does not, so it can be used to remove some color casts. Independent and linked
11344 normalization can be combined in any ratio.
11345
11346 The normalize filter accepts the following options:
11347
11348 @table @option
11349 @item blackpt
11350 @item whitept
11351 Colors which define the output range. The minimum input value is mapped to
11352 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
11353 The defaults are black and white respectively. Specifying white for
11354 @var{blackpt} and black for @var{whitept} will give color-inverted,
11355 normalized video. Shades of grey can be used to reduce the dynamic range
11356 (contrast). Specifying saturated colors here can create some interesting
11357 effects.
11358
11359 @item smoothing
11360 The number of previous frames to use for temporal smoothing. The input range
11361 of each channel is smoothed using a rolling average over the current frame
11362 and the @var{smoothing} previous frames. The default is 0 (no temporal
11363 smoothing).
11364
11365 @item independence
11366 Controls the ratio of independent (color shifting) channel normalization to
11367 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
11368 independent. Defaults to 1.0 (fully independent).
11369
11370 @item strength
11371 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
11372 expensive no-op. Defaults to 1.0 (full strength).
11373
11374 @end table
11375
11376 @subsection Examples
11377
11378 Stretch video contrast to use the full dynamic range, with no temporal
11379 smoothing; may flicker depending on the source content:
11380 @example
11381 normalize=blackpt=black:whitept=white:smoothing=0
11382 @end example
11383
11384 As above, but with 50 frames of temporal smoothing; flicker should be
11385 reduced, depending on the source content:
11386 @example
11387 normalize=blackpt=black:whitept=white:smoothing=50
11388 @end example
11389
11390 As above, but with hue-preserving linked channel normalization:
11391 @example
11392 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
11393 @end example
11394
11395 As above, but with half strength:
11396 @example
11397 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
11398 @end example
11399
11400 Map the darkest input color to red, the brightest input color to cyan:
11401 @example
11402 normalize=blackpt=red:whitept=cyan
11403 @end example
11404
11405 @section null
11406
11407 Pass the video source unchanged to the output.
11408
11409 @section ocr
11410 Optical Character Recognition
11411
11412 This filter uses Tesseract for optical character recognition.
11413
11414 It accepts the following options:
11415
11416 @table @option
11417 @item datapath
11418 Set datapath to tesseract data. Default is to use whatever was
11419 set at installation.
11420
11421 @item language
11422 Set language, default is "eng".
11423
11424 @item whitelist
11425 Set character whitelist.
11426
11427 @item blacklist
11428 Set character blacklist.
11429 @end table
11430
11431 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
11432
11433 @section ocv
11434
11435 Apply a video transform using libopencv.
11436
11437 To enable this filter, install the libopencv library and headers and
11438 configure FFmpeg with @code{--enable-libopencv}.
11439
11440 It accepts the following parameters:
11441
11442 @table @option
11443
11444 @item filter_name
11445 The name of the libopencv filter to apply.
11446
11447 @item filter_params
11448 The parameters to pass to the libopencv filter. If not specified, the default
11449 values are assumed.
11450
11451 @end table
11452
11453 Refer to the official libopencv documentation for more precise
11454 information:
11455 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
11456
11457 Several libopencv filters are supported; see the following subsections.
11458
11459 @anchor{dilate}
11460 @subsection dilate
11461
11462 Dilate an image by using a specific structuring element.
11463 It corresponds to the libopencv function @code{cvDilate}.
11464
11465 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
11466
11467 @var{struct_el} represents a structuring element, and has the syntax:
11468 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
11469
11470 @var{cols} and @var{rows} represent the number of columns and rows of
11471 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
11472 point, and @var{shape} the shape for the structuring element. @var{shape}
11473 must be "rect", "cross", "ellipse", or "custom".
11474
11475 If the value for @var{shape} is "custom", it must be followed by a
11476 string of the form "=@var{filename}". The file with name
11477 @var{filename} is assumed to represent a binary image, with each
11478 printable character corresponding to a bright pixel. When a custom
11479 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
11480 or columns and rows of the read file are assumed instead.
11481
11482 The default value for @var{struct_el} is "3x3+0x0/rect".
11483
11484 @var{nb_iterations} specifies the number of times the transform is
11485 applied to the image, and defaults to 1.
11486
11487 Some examples:
11488 @example
11489 # Use the default values
11490 ocv=dilate
11491
11492 # Dilate using a structuring element with a 5x5 cross, iterating two times
11493 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
11494
11495 # Read the shape from the file diamond.shape, iterating two times.
11496 # The file diamond.shape may contain a pattern of characters like this
11497 #   *
11498 #  ***
11499 # *****
11500 #  ***
11501 #   *
11502 # The specified columns and rows are ignored
11503 # but the anchor point coordinates are not
11504 ocv=dilate:0x0+2x2/custom=diamond.shape|2
11505 @end example
11506
11507 @subsection erode
11508
11509 Erode an image by using a specific structuring element.
11510 It corresponds to the libopencv function @code{cvErode}.
11511
11512 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
11513 with the same syntax and semantics as the @ref{dilate} filter.
11514
11515 @subsection smooth
11516
11517 Smooth the input video.
11518
11519 The filter takes the following parameters:
11520 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
11521
11522 @var{type} is the type of smooth filter to apply, and must be one of
11523 the following values: "blur", "blur_no_scale", "median", "gaussian",
11524 or "bilateral". The default value is "gaussian".
11525
11526 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
11527 depend on the smooth type. @var{param1} and
11528 @var{param2} accept integer positive values or 0. @var{param3} and
11529 @var{param4} accept floating point values.
11530
11531 The default value for @var{param1} is 3. The default value for the
11532 other parameters is 0.
11533
11534 These parameters correspond to the parameters assigned to the
11535 libopencv function @code{cvSmooth}.
11536
11537 @section oscilloscope
11538
11539 2D Video Oscilloscope.
11540
11541 Useful to measure spatial impulse, step responses, chroma delays, etc.
11542
11543 It accepts the following parameters:
11544
11545 @table @option
11546 @item x
11547 Set scope center x position.
11548
11549 @item y
11550 Set scope center y position.
11551
11552 @item s
11553 Set scope size, relative to frame diagonal.
11554
11555 @item t
11556 Set scope tilt/rotation.
11557
11558 @item o
11559 Set trace opacity.
11560
11561 @item tx
11562 Set trace center x position.
11563
11564 @item ty
11565 Set trace center y position.
11566
11567 @item tw
11568 Set trace width, relative to width of frame.
11569
11570 @item th
11571 Set trace height, relative to height of frame.
11572
11573 @item c
11574 Set which components to trace. By default it traces first three components.
11575
11576 @item g
11577 Draw trace grid. By default is enabled.
11578
11579 @item st
11580 Draw some statistics. By default is enabled.
11581
11582 @item sc
11583 Draw scope. By default is enabled.
11584 @end table
11585
11586 @subsection Examples
11587
11588 @itemize
11589 @item
11590 Inspect full first row of video frame.
11591 @example
11592 oscilloscope=x=0.5:y=0:s=1
11593 @end example
11594
11595 @item
11596 Inspect full last row of video frame.
11597 @example
11598 oscilloscope=x=0.5:y=1:s=1
11599 @end example
11600
11601 @item
11602 Inspect full 5th line of video frame of height 1080.
11603 @example
11604 oscilloscope=x=0.5:y=5/1080:s=1
11605 @end example
11606
11607 @item
11608 Inspect full last column of video frame.
11609 @example
11610 oscilloscope=x=1:y=0.5:s=1:t=1
11611 @end example
11612
11613 @end itemize
11614
11615 @anchor{overlay}
11616 @section overlay
11617
11618 Overlay one video on top of another.
11619
11620 It takes two inputs and has one output. The first input is the "main"
11621 video on which the second input is overlaid.
11622
11623 It accepts the following parameters:
11624
11625 A description of the accepted options follows.
11626
11627 @table @option
11628 @item x
11629 @item y
11630 Set the expression for the x and y coordinates of the overlaid video
11631 on the main video. Default value is "0" for both expressions. In case
11632 the expression is invalid, it is set to a huge value (meaning that the
11633 overlay will not be displayed within the output visible area).
11634
11635 @item eof_action
11636 See @ref{framesync}.
11637
11638 @item eval
11639 Set when the expressions for @option{x}, and @option{y} are evaluated.
11640
11641 It accepts the following values:
11642 @table @samp
11643 @item init
11644 only evaluate expressions once during the filter initialization or
11645 when a command is processed
11646
11647 @item frame
11648 evaluate expressions for each incoming frame
11649 @end table
11650
11651 Default value is @samp{frame}.
11652
11653 @item shortest
11654 See @ref{framesync}.
11655
11656 @item format
11657 Set the format for the output video.
11658
11659 It accepts the following values:
11660 @table @samp
11661 @item yuv420
11662 force YUV420 output
11663
11664 @item yuv422
11665 force YUV422 output
11666
11667 @item yuv444
11668 force YUV444 output
11669
11670 @item rgb
11671 force packed RGB output
11672
11673 @item gbrp
11674 force planar RGB output
11675
11676 @item auto
11677 automatically pick format
11678 @end table
11679
11680 Default value is @samp{yuv420}.
11681
11682 @item repeatlast
11683 See @ref{framesync}.
11684
11685 @item alpha
11686 Set format of alpha of the overlaid video, it can be @var{straight} or
11687 @var{premultiplied}. Default is @var{straight}.
11688 @end table
11689
11690 The @option{x}, and @option{y} expressions can contain the following
11691 parameters.
11692
11693 @table @option
11694 @item main_w, W
11695 @item main_h, H
11696 The main input width and height.
11697
11698 @item overlay_w, w
11699 @item overlay_h, h
11700 The overlay input width and height.
11701
11702 @item x
11703 @item y
11704 The computed values for @var{x} and @var{y}. They are evaluated for
11705 each new frame.
11706
11707 @item hsub
11708 @item vsub
11709 horizontal and vertical chroma subsample values of the output
11710 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
11711 @var{vsub} is 1.
11712
11713 @item n
11714 the number of input frame, starting from 0
11715
11716 @item pos
11717 the position in the file of the input frame, NAN if unknown
11718
11719 @item t
11720 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
11721
11722 @end table
11723
11724 This filter also supports the @ref{framesync} options.
11725
11726 Note that the @var{n}, @var{pos}, @var{t} variables are available only
11727 when evaluation is done @emph{per frame}, and will evaluate to NAN
11728 when @option{eval} is set to @samp{init}.
11729
11730 Be aware that frames are taken from each input video in timestamp
11731 order, hence, if their initial timestamps differ, it is a good idea
11732 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
11733 have them begin in the same zero timestamp, as the example for
11734 the @var{movie} filter does.
11735
11736 You can chain together more overlays but you should test the
11737 efficiency of such approach.
11738
11739 @subsection Commands
11740
11741 This filter supports the following commands:
11742 @table @option
11743 @item x
11744 @item y
11745 Modify the x and y of the overlay input.
11746 The command accepts the same syntax of the corresponding option.
11747
11748 If the specified expression is not valid, it is kept at its current
11749 value.
11750 @end table
11751
11752 @subsection Examples
11753
11754 @itemize
11755 @item
11756 Draw the overlay at 10 pixels from the bottom right corner of the main
11757 video:
11758 @example
11759 overlay=main_w-overlay_w-10:main_h-overlay_h-10
11760 @end example
11761
11762 Using named options the example above becomes:
11763 @example
11764 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
11765 @end example
11766
11767 @item
11768 Insert a transparent PNG logo in the bottom left corner of the input,
11769 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
11770 @example
11771 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
11772 @end example
11773
11774 @item
11775 Insert 2 different transparent PNG logos (second logo on bottom
11776 right corner) using the @command{ffmpeg} tool:
11777 @example
11778 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
11779 @end example
11780
11781 @item
11782 Add a transparent color layer on top of the main video; @code{WxH}
11783 must specify the size of the main input to the overlay filter:
11784 @example
11785 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
11786 @end example
11787
11788 @item
11789 Play an original video and a filtered version (here with the deshake
11790 filter) side by side using the @command{ffplay} tool:
11791 @example
11792 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
11793 @end example
11794
11795 The above command is the same as:
11796 @example
11797 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
11798 @end example
11799
11800 @item
11801 Make a sliding overlay appearing from the left to the right top part of the
11802 screen starting since time 2:
11803 @example
11804 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
11805 @end example
11806
11807 @item
11808 Compose output by putting two input videos side to side:
11809 @example
11810 ffmpeg -i left.avi -i right.avi -filter_complex "
11811 nullsrc=size=200x100 [background];
11812 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
11813 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
11814 [background][left]       overlay=shortest=1       [background+left];
11815 [background+left][right] overlay=shortest=1:x=100 [left+right]
11816 "
11817 @end example
11818
11819 @item
11820 Mask 10-20 seconds of a video by applying the delogo filter to a section
11821 @example
11822 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
11823 -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]'
11824 masked.avi
11825 @end example
11826
11827 @item
11828 Chain several overlays in cascade:
11829 @example
11830 nullsrc=s=200x200 [bg];
11831 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
11832 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
11833 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
11834 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
11835 [in3] null,       [mid2] overlay=100:100 [out0]
11836 @end example
11837
11838 @end itemize
11839
11840 @section owdenoise
11841
11842 Apply Overcomplete Wavelet denoiser.
11843
11844 The filter accepts the following options:
11845
11846 @table @option
11847 @item depth
11848 Set depth.
11849
11850 Larger depth values will denoise lower frequency components more, but
11851 slow down filtering.
11852
11853 Must be an int in the range 8-16, default is @code{8}.
11854
11855 @item luma_strength, ls
11856 Set luma strength.
11857
11858 Must be a double value in the range 0-1000, default is @code{1.0}.
11859
11860 @item chroma_strength, cs
11861 Set chroma strength.
11862
11863 Must be a double value in the range 0-1000, default is @code{1.0}.
11864 @end table
11865
11866 @anchor{pad}
11867 @section pad
11868
11869 Add paddings to the input image, and place the original input at the
11870 provided @var{x}, @var{y} coordinates.
11871
11872 It accepts the following parameters:
11873
11874 @table @option
11875 @item width, w
11876 @item height, h
11877 Specify an expression for the size of the output image with the
11878 paddings added. If the value for @var{width} or @var{height} is 0, the
11879 corresponding input size is used for the output.
11880
11881 The @var{width} expression can reference the value set by the
11882 @var{height} expression, and vice versa.
11883
11884 The default value of @var{width} and @var{height} is 0.
11885
11886 @item x
11887 @item y
11888 Specify the offsets to place the input image at within the padded area,
11889 with respect to the top/left border of the output image.
11890
11891 The @var{x} expression can reference the value set by the @var{y}
11892 expression, and vice versa.
11893
11894 The default value of @var{x} and @var{y} is 0.
11895
11896 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
11897 so the input image is centered on the padded area.
11898
11899 @item color
11900 Specify the color of the padded area. For the syntax of this option,
11901 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
11902 manual,ffmpeg-utils}.
11903
11904 The default value of @var{color} is "black".
11905
11906 @item eval
11907 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
11908
11909 It accepts the following values:
11910
11911 @table @samp
11912 @item init
11913 Only evaluate expressions once during the filter initialization or when
11914 a command is processed.
11915
11916 @item frame
11917 Evaluate expressions for each incoming frame.
11918
11919 @end table
11920
11921 Default value is @samp{init}.
11922
11923 @item aspect
11924 Pad to aspect instead to a resolution.
11925
11926 @end table
11927
11928 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
11929 options are expressions containing the following constants:
11930
11931 @table @option
11932 @item in_w
11933 @item in_h
11934 The input video width and height.
11935
11936 @item iw
11937 @item ih
11938 These are the same as @var{in_w} and @var{in_h}.
11939
11940 @item out_w
11941 @item out_h
11942 The output width and height (the size of the padded area), as
11943 specified by the @var{width} and @var{height} expressions.
11944
11945 @item ow
11946 @item oh
11947 These are the same as @var{out_w} and @var{out_h}.
11948
11949 @item x
11950 @item y
11951 The x and y offsets as specified by the @var{x} and @var{y}
11952 expressions, or NAN if not yet specified.
11953
11954 @item a
11955 same as @var{iw} / @var{ih}
11956
11957 @item sar
11958 input sample aspect ratio
11959
11960 @item dar
11961 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
11962
11963 @item hsub
11964 @item vsub
11965 The horizontal and vertical chroma subsample values. For example for the
11966 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
11967 @end table
11968
11969 @subsection Examples
11970
11971 @itemize
11972 @item
11973 Add paddings with the color "violet" to the input video. The output video
11974 size is 640x480, and the top-left corner of the input video is placed at
11975 column 0, row 40
11976 @example
11977 pad=640:480:0:40:violet
11978 @end example
11979
11980 The example above is equivalent to the following command:
11981 @example
11982 pad=width=640:height=480:x=0:y=40:color=violet
11983 @end example
11984
11985 @item
11986 Pad the input to get an output with dimensions increased by 3/2,
11987 and put the input video at the center of the padded area:
11988 @example
11989 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
11990 @end example
11991
11992 @item
11993 Pad the input to get a squared output with size equal to the maximum
11994 value between the input width and height, and put the input video at
11995 the center of the padded area:
11996 @example
11997 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
11998 @end example
11999
12000 @item
12001 Pad the input to get a final w/h ratio of 16:9:
12002 @example
12003 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
12004 @end example
12005
12006 @item
12007 In case of anamorphic video, in order to set the output display aspect
12008 correctly, it is necessary to use @var{sar} in the expression,
12009 according to the relation:
12010 @example
12011 (ih * X / ih) * sar = output_dar
12012 X = output_dar / sar
12013 @end example
12014
12015 Thus the previous example needs to be modified to:
12016 @example
12017 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
12018 @end example
12019
12020 @item
12021 Double the output size and put the input video in the bottom-right
12022 corner of the output padded area:
12023 @example
12024 pad="2*iw:2*ih:ow-iw:oh-ih"
12025 @end example
12026 @end itemize
12027
12028 @anchor{palettegen}
12029 @section palettegen
12030
12031 Generate one palette for a whole video stream.
12032
12033 It accepts the following options:
12034
12035 @table @option
12036 @item max_colors
12037 Set the maximum number of colors to quantize in the palette.
12038 Note: the palette will still contain 256 colors; the unused palette entries
12039 will be black.
12040
12041 @item reserve_transparent
12042 Create a palette of 255 colors maximum and reserve the last one for
12043 transparency. Reserving the transparency color is useful for GIF optimization.
12044 If not set, the maximum of colors in the palette will be 256. You probably want
12045 to disable this option for a standalone image.
12046 Set by default.
12047
12048 @item transparency_color
12049 Set the color that will be used as background for transparency.
12050
12051 @item stats_mode
12052 Set statistics mode.
12053
12054 It accepts the following values:
12055 @table @samp
12056 @item full
12057 Compute full frame histograms.
12058 @item diff
12059 Compute histograms only for the part that differs from previous frame. This
12060 might be relevant to give more importance to the moving part of your input if
12061 the background is static.
12062 @item single
12063 Compute new histogram for each frame.
12064 @end table
12065
12066 Default value is @var{full}.
12067 @end table
12068
12069 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
12070 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
12071 color quantization of the palette. This information is also visible at
12072 @var{info} logging level.
12073
12074 @subsection Examples
12075
12076 @itemize
12077 @item
12078 Generate a representative palette of a given video using @command{ffmpeg}:
12079 @example
12080 ffmpeg -i input.mkv -vf palettegen palette.png
12081 @end example
12082 @end itemize
12083
12084 @section paletteuse
12085
12086 Use a palette to downsample an input video stream.
12087
12088 The filter takes two inputs: one video stream and a palette. The palette must
12089 be a 256 pixels image.
12090
12091 It accepts the following options:
12092
12093 @table @option
12094 @item dither
12095 Select dithering mode. Available algorithms are:
12096 @table @samp
12097 @item bayer
12098 Ordered 8x8 bayer dithering (deterministic)
12099 @item heckbert
12100 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
12101 Note: this dithering is sometimes considered "wrong" and is included as a
12102 reference.
12103 @item floyd_steinberg
12104 Floyd and Steingberg dithering (error diffusion)
12105 @item sierra2
12106 Frankie Sierra dithering v2 (error diffusion)
12107 @item sierra2_4a
12108 Frankie Sierra dithering v2 "Lite" (error diffusion)
12109 @end table
12110
12111 Default is @var{sierra2_4a}.
12112
12113 @item bayer_scale
12114 When @var{bayer} dithering is selected, this option defines the scale of the
12115 pattern (how much the crosshatch pattern is visible). A low value means more
12116 visible pattern for less banding, and higher value means less visible pattern
12117 at the cost of more banding.
12118
12119 The option must be an integer value in the range [0,5]. Default is @var{2}.
12120
12121 @item diff_mode
12122 If set, define the zone to process
12123
12124 @table @samp
12125 @item rectangle
12126 Only the changing rectangle will be reprocessed. This is similar to GIF
12127 cropping/offsetting compression mechanism. This option can be useful for speed
12128 if only a part of the image is changing, and has use cases such as limiting the
12129 scope of the error diffusal @option{dither} to the rectangle that bounds the
12130 moving scene (it leads to more deterministic output if the scene doesn't change
12131 much, and as a result less moving noise and better GIF compression).
12132 @end table
12133
12134 Default is @var{none}.
12135
12136 @item new
12137 Take new palette for each output frame.
12138
12139 @item alpha_threshold
12140 Sets the alpha threshold for transparency. Alpha values above this threshold
12141 will be treated as completely opaque, and values below this threshold will be
12142 treated as completely transparent.
12143
12144 The option must be an integer value in the range [0,255]. Default is @var{128}.
12145 @end table
12146
12147 @subsection Examples
12148
12149 @itemize
12150 @item
12151 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
12152 using @command{ffmpeg}:
12153 @example
12154 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
12155 @end example
12156 @end itemize
12157
12158 @section perspective
12159
12160 Correct perspective of video not recorded perpendicular to the screen.
12161
12162 A description of the accepted parameters follows.
12163
12164 @table @option
12165 @item x0
12166 @item y0
12167 @item x1
12168 @item y1
12169 @item x2
12170 @item y2
12171 @item x3
12172 @item y3
12173 Set coordinates expression for top left, top right, bottom left and bottom right corners.
12174 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
12175 If the @code{sense} option is set to @code{source}, then the specified points will be sent
12176 to the corners of the destination. If the @code{sense} option is set to @code{destination},
12177 then the corners of the source will be sent to the specified coordinates.
12178
12179 The expressions can use the following variables:
12180
12181 @table @option
12182 @item W
12183 @item H
12184 the width and height of video frame.
12185 @item in
12186 Input frame count.
12187 @item on
12188 Output frame count.
12189 @end table
12190
12191 @item interpolation
12192 Set interpolation for perspective correction.
12193
12194 It accepts the following values:
12195 @table @samp
12196 @item linear
12197 @item cubic
12198 @end table
12199
12200 Default value is @samp{linear}.
12201
12202 @item sense
12203 Set interpretation of coordinate options.
12204
12205 It accepts the following values:
12206 @table @samp
12207 @item 0, source
12208
12209 Send point in the source specified by the given coordinates to
12210 the corners of the destination.
12211
12212 @item 1, destination
12213
12214 Send the corners of the source to the point in the destination specified
12215 by the given coordinates.
12216
12217 Default value is @samp{source}.
12218 @end table
12219
12220 @item eval
12221 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
12222
12223 It accepts the following values:
12224 @table @samp
12225 @item init
12226 only evaluate expressions once during the filter initialization or
12227 when a command is processed
12228
12229 @item frame
12230 evaluate expressions for each incoming frame
12231 @end table
12232
12233 Default value is @samp{init}.
12234 @end table
12235
12236 @section phase
12237
12238 Delay interlaced video by one field time so that the field order changes.
12239
12240 The intended use is to fix PAL movies that have been captured with the
12241 opposite field order to the film-to-video transfer.
12242
12243 A description of the accepted parameters follows.
12244
12245 @table @option
12246 @item mode
12247 Set phase mode.
12248
12249 It accepts the following values:
12250 @table @samp
12251 @item t
12252 Capture field order top-first, transfer bottom-first.
12253 Filter will delay the bottom field.
12254
12255 @item b
12256 Capture field order bottom-first, transfer top-first.
12257 Filter will delay the top field.
12258
12259 @item p
12260 Capture and transfer with the same field order. This mode only exists
12261 for the documentation of the other options to refer to, but if you
12262 actually select it, the filter will faithfully do nothing.
12263
12264 @item a
12265 Capture field order determined automatically by field flags, transfer
12266 opposite.
12267 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
12268 basis using field flags. If no field information is available,
12269 then this works just like @samp{u}.
12270
12271 @item u
12272 Capture unknown or varying, transfer opposite.
12273 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
12274 analyzing the images and selecting the alternative that produces best
12275 match between the fields.
12276
12277 @item T
12278 Capture top-first, transfer unknown or varying.
12279 Filter selects among @samp{t} and @samp{p} using image analysis.
12280
12281 @item B
12282 Capture bottom-first, transfer unknown or varying.
12283 Filter selects among @samp{b} and @samp{p} using image analysis.
12284
12285 @item A
12286 Capture determined by field flags, transfer unknown or varying.
12287 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
12288 image analysis. If no field information is available, then this works just
12289 like @samp{U}. This is the default mode.
12290
12291 @item U
12292 Both capture and transfer unknown or varying.
12293 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
12294 @end table
12295 @end table
12296
12297 @section pixdesctest
12298
12299 Pixel format descriptor test filter, mainly useful for internal
12300 testing. The output video should be equal to the input video.
12301
12302 For example:
12303 @example
12304 format=monow, pixdesctest
12305 @end example
12306
12307 can be used to test the monowhite pixel format descriptor definition.
12308
12309 @section pixscope
12310
12311 Display sample values of color channels. Mainly useful for checking color
12312 and levels. Minimum supported resolution is 640x480.
12313
12314 The filters accept the following options:
12315
12316 @table @option
12317 @item x
12318 Set scope X position, relative offset on X axis.
12319
12320 @item y
12321 Set scope Y position, relative offset on Y axis.
12322
12323 @item w
12324 Set scope width.
12325
12326 @item h
12327 Set scope height.
12328
12329 @item o
12330 Set window opacity. This window also holds statistics about pixel area.
12331
12332 @item wx
12333 Set window X position, relative offset on X axis.
12334
12335 @item wy
12336 Set window Y position, relative offset on Y axis.
12337 @end table
12338
12339 @section pp
12340
12341 Enable the specified chain of postprocessing subfilters using libpostproc. This
12342 library should be automatically selected with a GPL build (@code{--enable-gpl}).
12343 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
12344 Each subfilter and some options have a short and a long name that can be used
12345 interchangeably, i.e. dr/dering are the same.
12346
12347 The filters accept the following options:
12348
12349 @table @option
12350 @item subfilters
12351 Set postprocessing subfilters string.
12352 @end table
12353
12354 All subfilters share common options to determine their scope:
12355
12356 @table @option
12357 @item a/autoq
12358 Honor the quality commands for this subfilter.
12359
12360 @item c/chrom
12361 Do chrominance filtering, too (default).
12362
12363 @item y/nochrom
12364 Do luminance filtering only (no chrominance).
12365
12366 @item n/noluma
12367 Do chrominance filtering only (no luminance).
12368 @end table
12369
12370 These options can be appended after the subfilter name, separated by a '|'.
12371
12372 Available subfilters are:
12373
12374 @table @option
12375 @item hb/hdeblock[|difference[|flatness]]
12376 Horizontal deblocking filter
12377 @table @option
12378 @item difference
12379 Difference factor where higher values mean more deblocking (default: @code{32}).
12380 @item flatness
12381 Flatness threshold where lower values mean more deblocking (default: @code{39}).
12382 @end table
12383
12384 @item vb/vdeblock[|difference[|flatness]]
12385 Vertical deblocking filter
12386 @table @option
12387 @item difference
12388 Difference factor where higher values mean more deblocking (default: @code{32}).
12389 @item flatness
12390 Flatness threshold where lower values mean more deblocking (default: @code{39}).
12391 @end table
12392
12393 @item ha/hadeblock[|difference[|flatness]]
12394 Accurate horizontal deblocking filter
12395 @table @option
12396 @item difference
12397 Difference factor where higher values mean more deblocking (default: @code{32}).
12398 @item flatness
12399 Flatness threshold where lower values mean more deblocking (default: @code{39}).
12400 @end table
12401
12402 @item va/vadeblock[|difference[|flatness]]
12403 Accurate vertical deblocking filter
12404 @table @option
12405 @item difference
12406 Difference factor where higher values mean more deblocking (default: @code{32}).
12407 @item flatness
12408 Flatness threshold where lower values mean more deblocking (default: @code{39}).
12409 @end table
12410 @end table
12411
12412 The horizontal and vertical deblocking filters share the difference and
12413 flatness values so you cannot set different horizontal and vertical
12414 thresholds.
12415
12416 @table @option
12417 @item h1/x1hdeblock
12418 Experimental horizontal deblocking filter
12419
12420 @item v1/x1vdeblock
12421 Experimental vertical deblocking filter
12422
12423 @item dr/dering
12424 Deringing filter
12425
12426 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
12427 @table @option
12428 @item threshold1
12429 larger -> stronger filtering
12430 @item threshold2
12431 larger -> stronger filtering
12432 @item threshold3
12433 larger -> stronger filtering
12434 @end table
12435
12436 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
12437 @table @option
12438 @item f/fullyrange
12439 Stretch luminance to @code{0-255}.
12440 @end table
12441
12442 @item lb/linblenddeint
12443 Linear blend deinterlacing filter that deinterlaces the given block by
12444 filtering all lines with a @code{(1 2 1)} filter.
12445
12446 @item li/linipoldeint
12447 Linear interpolating deinterlacing filter that deinterlaces the given block by
12448 linearly interpolating every second line.
12449
12450 @item ci/cubicipoldeint
12451 Cubic interpolating deinterlacing filter deinterlaces the given block by
12452 cubically interpolating every second line.
12453
12454 @item md/mediandeint
12455 Median deinterlacing filter that deinterlaces the given block by applying a
12456 median filter to every second line.
12457
12458 @item fd/ffmpegdeint
12459 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
12460 second line with a @code{(-1 4 2 4 -1)} filter.
12461
12462 @item l5/lowpass5
12463 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
12464 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
12465
12466 @item fq/forceQuant[|quantizer]
12467 Overrides the quantizer table from the input with the constant quantizer you
12468 specify.
12469 @table @option
12470 @item quantizer
12471 Quantizer to use
12472 @end table
12473
12474 @item de/default
12475 Default pp filter combination (@code{hb|a,vb|a,dr|a})
12476
12477 @item fa/fast
12478 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
12479
12480 @item ac
12481 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
12482 @end table
12483
12484 @subsection Examples
12485
12486 @itemize
12487 @item
12488 Apply horizontal and vertical deblocking, deringing and automatic
12489 brightness/contrast:
12490 @example
12491 pp=hb/vb/dr/al
12492 @end example
12493
12494 @item
12495 Apply default filters without brightness/contrast correction:
12496 @example
12497 pp=de/-al
12498 @end example
12499
12500 @item
12501 Apply default filters and temporal denoiser:
12502 @example
12503 pp=default/tmpnoise|1|2|3
12504 @end example
12505
12506 @item
12507 Apply deblocking on luminance only, and switch vertical deblocking on or off
12508 automatically depending on available CPU time:
12509 @example
12510 pp=hb|y/vb|a
12511 @end example
12512 @end itemize
12513
12514 @section pp7
12515 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
12516 similar to spp = 6 with 7 point DCT, where only the center sample is
12517 used after IDCT.
12518
12519 The filter accepts the following options:
12520
12521 @table @option
12522 @item qp
12523 Force a constant quantization parameter. It accepts an integer in range
12524 0 to 63. If not set, the filter will use the QP from the video stream
12525 (if available).
12526
12527 @item mode
12528 Set thresholding mode. Available modes are:
12529
12530 @table @samp
12531 @item hard
12532 Set hard thresholding.
12533 @item soft
12534 Set soft thresholding (better de-ringing effect, but likely blurrier).
12535 @item medium
12536 Set medium thresholding (good results, default).
12537 @end table
12538 @end table
12539
12540 @section premultiply
12541 Apply alpha premultiply effect to input video stream using first plane
12542 of second stream as alpha.
12543
12544 Both streams must have same dimensions and same pixel format.
12545
12546 The filter accepts the following option:
12547
12548 @table @option
12549 @item planes
12550 Set which planes will be processed, unprocessed planes will be copied.
12551 By default value 0xf, all planes will be processed.
12552
12553 @item inplace
12554 Do not require 2nd input for processing, instead use alpha plane from input stream.
12555 @end table
12556
12557 @section prewitt
12558 Apply prewitt operator to input video stream.
12559
12560 The filter accepts the following option:
12561
12562 @table @option
12563 @item planes
12564 Set which planes will be processed, unprocessed planes will be copied.
12565 By default value 0xf, all planes will be processed.
12566
12567 @item scale
12568 Set value which will be multiplied with filtered result.
12569
12570 @item delta
12571 Set value which will be added to filtered result.
12572 @end table
12573
12574 @anchor{program_opencl}
12575 @section program_opencl
12576
12577 Filter video using an OpenCL program.
12578
12579 @table @option
12580
12581 @item source
12582 OpenCL program source file.
12583
12584 @item kernel
12585 Kernel name in program.
12586
12587 @item inputs
12588 Number of inputs to the filter.  Defaults to 1.
12589
12590 @item size, s
12591 Size of output frames.  Defaults to the same as the first input.
12592
12593 @end table
12594
12595 The program source file must contain a kernel function with the given name,
12596 which will be run once for each plane of the output.  Each run on a plane
12597 gets enqueued as a separate 2D global NDRange with one work-item for each
12598 pixel to be generated.  The global ID offset for each work-item is therefore
12599 the coordinates of a pixel in the destination image.
12600
12601 The kernel function needs to take the following arguments:
12602 @itemize
12603 @item
12604 Destination image, @var{__write_only image2d_t}.
12605
12606 This image will become the output; the kernel should write all of it.
12607 @item
12608 Frame index, @var{unsigned int}.
12609
12610 This is a counter starting from zero and increasing by one for each frame.
12611 @item
12612 Source images, @var{__read_only image2d_t}.
12613
12614 These are the most recent images on each input.  The kernel may read from
12615 them to generate the output, but they can't be written to.
12616 @end itemize
12617
12618 Example programs:
12619
12620 @itemize
12621 @item
12622 Copy the input to the output (output must be the same size as the input).
12623 @verbatim
12624 __kernel void copy(__write_only image2d_t destination,
12625                    unsigned int index,
12626                    __read_only  image2d_t source)
12627 {
12628     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
12629
12630     int2 location = (int2)(get_global_id(0), get_global_id(1));
12631
12632     float4 value = read_imagef(source, sampler, location);
12633
12634     write_imagef(destination, location, value);
12635 }
12636 @end verbatim
12637
12638 @item
12639 Apply a simple transformation, rotating the input by an amount increasing
12640 with the index counter.  Pixel values are linearly interpolated by the
12641 sampler, and the output need not have the same dimensions as the input.
12642 @verbatim
12643 __kernel void rotate_image(__write_only image2d_t dst,
12644                            unsigned int index,
12645                            __read_only  image2d_t src)
12646 {
12647     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
12648                                CLK_FILTER_LINEAR);
12649
12650     float angle = (float)index / 100.0f;
12651
12652     float2 dst_dim = convert_float2(get_image_dim(dst));
12653     float2 src_dim = convert_float2(get_image_dim(src));
12654
12655     float2 dst_cen = dst_dim / 2.0f;
12656     float2 src_cen = src_dim / 2.0f;
12657
12658     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
12659
12660     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
12661     float2 src_pos = {
12662         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
12663         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
12664     };
12665     src_pos = src_pos * src_dim / dst_dim;
12666
12667     float2 src_loc = src_pos + src_cen;
12668
12669     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
12670         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
12671         write_imagef(dst, dst_loc, 0.5f);
12672     else
12673         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
12674 }
12675 @end verbatim
12676
12677 @item
12678 Blend two inputs together, with the amount of each input used varying
12679 with the index counter.
12680 @verbatim
12681 __kernel void blend_images(__write_only image2d_t dst,
12682                            unsigned int index,
12683                            __read_only  image2d_t src1,
12684                            __read_only  image2d_t src2)
12685 {
12686     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
12687                                CLK_FILTER_LINEAR);
12688
12689     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
12690
12691     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
12692     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
12693     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
12694
12695     float4 val1 = read_imagef(src1, sampler, src1_loc);
12696     float4 val2 = read_imagef(src2, sampler, src2_loc);
12697
12698     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
12699 }
12700 @end verbatim
12701
12702 @end itemize
12703
12704 @section pseudocolor
12705
12706 Alter frame colors in video with pseudocolors.
12707
12708 This filter accept the following options:
12709
12710 @table @option
12711 @item c0
12712 set pixel first component expression
12713
12714 @item c1
12715 set pixel second component expression
12716
12717 @item c2
12718 set pixel third component expression
12719
12720 @item c3
12721 set pixel fourth component expression, corresponds to the alpha component
12722
12723 @item i
12724 set component to use as base for altering colors
12725 @end table
12726
12727 Each of them specifies the expression to use for computing the lookup table for
12728 the corresponding pixel component values.
12729
12730 The expressions can contain the following constants and functions:
12731
12732 @table @option
12733 @item w
12734 @item h
12735 The input width and height.
12736
12737 @item val
12738 The input value for the pixel component.
12739
12740 @item ymin, umin, vmin, amin
12741 The minimum allowed component value.
12742
12743 @item ymax, umax, vmax, amax
12744 The maximum allowed component value.
12745 @end table
12746
12747 All expressions default to "val".
12748
12749 @subsection Examples
12750
12751 @itemize
12752 @item
12753 Change too high luma values to gradient:
12754 @example
12755 pseudocolor="'if(between(val,ymax,amax),lerp(ymin,ymax,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(umax,umin,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(vmin,vmax,(val-ymax)/(amax-ymax)),-1):-1'"
12756 @end example
12757 @end itemize
12758
12759 @section psnr
12760
12761 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
12762 Ratio) between two input videos.
12763
12764 This filter takes in input two input videos, the first input is
12765 considered the "main" source and is passed unchanged to the
12766 output. The second input is used as a "reference" video for computing
12767 the PSNR.
12768
12769 Both video inputs must have the same resolution and pixel format for
12770 this filter to work correctly. Also it assumes that both inputs
12771 have the same number of frames, which are compared one by one.
12772
12773 The obtained average PSNR is printed through the logging system.
12774
12775 The filter stores the accumulated MSE (mean squared error) of each
12776 frame, and at the end of the processing it is averaged across all frames
12777 equally, and the following formula is applied to obtain the PSNR:
12778
12779 @example
12780 PSNR = 10*log10(MAX^2/MSE)
12781 @end example
12782
12783 Where MAX is the average of the maximum values of each component of the
12784 image.
12785
12786 The description of the accepted parameters follows.
12787
12788 @table @option
12789 @item stats_file, f
12790 If specified the filter will use the named file to save the PSNR of
12791 each individual frame. When filename equals "-" the data is sent to
12792 standard output.
12793
12794 @item stats_version
12795 Specifies which version of the stats file format to use. Details of
12796 each format are written below.
12797 Default value is 1.
12798
12799 @item stats_add_max
12800 Determines whether the max value is output to the stats log.
12801 Default value is 0.
12802 Requires stats_version >= 2. If this is set and stats_version < 2,
12803 the filter will return an error.
12804 @end table
12805
12806 This filter also supports the @ref{framesync} options.
12807
12808 The file printed if @var{stats_file} is selected, contains a sequence of
12809 key/value pairs of the form @var{key}:@var{value} for each compared
12810 couple of frames.
12811
12812 If a @var{stats_version} greater than 1 is specified, a header line precedes
12813 the list of per-frame-pair stats, with key value pairs following the frame
12814 format with the following parameters:
12815
12816 @table @option
12817 @item psnr_log_version
12818 The version of the log file format. Will match @var{stats_version}.
12819
12820 @item fields
12821 A comma separated list of the per-frame-pair parameters included in
12822 the log.
12823 @end table
12824
12825 A description of each shown per-frame-pair parameter follows:
12826
12827 @table @option
12828 @item n
12829 sequential number of the input frame, starting from 1
12830
12831 @item mse_avg
12832 Mean Square Error pixel-by-pixel average difference of the compared
12833 frames, averaged over all the image components.
12834
12835 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
12836 Mean Square Error pixel-by-pixel average difference of the compared
12837 frames for the component specified by the suffix.
12838
12839 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
12840 Peak Signal to Noise ratio of the compared frames for the component
12841 specified by the suffix.
12842
12843 @item max_avg, max_y, max_u, max_v
12844 Maximum allowed value for each channel, and average over all
12845 channels.
12846 @end table
12847
12848 For example:
12849 @example
12850 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
12851 [main][ref] psnr="stats_file=stats.log" [out]
12852 @end example
12853
12854 On this example the input file being processed is compared with the
12855 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
12856 is stored in @file{stats.log}.
12857
12858 @anchor{pullup}
12859 @section pullup
12860
12861 Pulldown reversal (inverse telecine) filter, capable of handling mixed
12862 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
12863 content.
12864
12865 The pullup filter is designed to take advantage of future context in making
12866 its decisions. This filter is stateless in the sense that it does not lock
12867 onto a pattern to follow, but it instead looks forward to the following
12868 fields in order to identify matches and rebuild progressive frames.
12869
12870 To produce content with an even framerate, insert the fps filter after
12871 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
12872 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
12873
12874 The filter accepts the following options:
12875
12876 @table @option
12877 @item jl
12878 @item jr
12879 @item jt
12880 @item jb
12881 These options set the amount of "junk" to ignore at the left, right, top, and
12882 bottom of the image, respectively. Left and right are in units of 8 pixels,
12883 while top and bottom are in units of 2 lines.
12884 The default is 8 pixels on each side.
12885
12886 @item sb
12887 Set the strict breaks. Setting this option to 1 will reduce the chances of
12888 filter generating an occasional mismatched frame, but it may also cause an
12889 excessive number of frames to be dropped during high motion sequences.
12890 Conversely, setting it to -1 will make filter match fields more easily.
12891 This may help processing of video where there is slight blurring between
12892 the fields, but may also cause there to be interlaced frames in the output.
12893 Default value is @code{0}.
12894
12895 @item mp
12896 Set the metric plane to use. It accepts the following values:
12897 @table @samp
12898 @item l
12899 Use luma plane.
12900
12901 @item u
12902 Use chroma blue plane.
12903
12904 @item v
12905 Use chroma red plane.
12906 @end table
12907
12908 This option may be set to use chroma plane instead of the default luma plane
12909 for doing filter's computations. This may improve accuracy on very clean
12910 source material, but more likely will decrease accuracy, especially if there
12911 is chroma noise (rainbow effect) or any grayscale video.
12912 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
12913 load and make pullup usable in realtime on slow machines.
12914 @end table
12915
12916 For best results (without duplicated frames in the output file) it is
12917 necessary to change the output frame rate. For example, to inverse
12918 telecine NTSC input:
12919 @example
12920 ffmpeg -i input -vf pullup -r 24000/1001 ...
12921 @end example
12922
12923 @section qp
12924
12925 Change video quantization parameters (QP).
12926
12927 The filter accepts the following option:
12928
12929 @table @option
12930 @item qp
12931 Set expression for quantization parameter.
12932 @end table
12933
12934 The expression is evaluated through the eval API and can contain, among others,
12935 the following constants:
12936
12937 @table @var
12938 @item known
12939 1 if index is not 129, 0 otherwise.
12940
12941 @item qp
12942 Sequential index starting from -129 to 128.
12943 @end table
12944
12945 @subsection Examples
12946
12947 @itemize
12948 @item
12949 Some equation like:
12950 @example
12951 qp=2+2*sin(PI*qp)
12952 @end example
12953 @end itemize
12954
12955 @section random
12956
12957 Flush video frames from internal cache of frames into a random order.
12958 No frame is discarded.
12959 Inspired by @ref{frei0r} nervous filter.
12960
12961 @table @option
12962 @item frames
12963 Set size in number of frames of internal cache, in range from @code{2} to
12964 @code{512}. Default is @code{30}.
12965
12966 @item seed
12967 Set seed for random number generator, must be an integer included between
12968 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
12969 less than @code{0}, the filter will try to use a good random seed on a
12970 best effort basis.
12971 @end table
12972
12973 @section readeia608
12974
12975 Read closed captioning (EIA-608) information from the top lines of a video frame.
12976
12977 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
12978 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
12979 with EIA-608 data (starting from 0). A description of each metadata value follows:
12980
12981 @table @option
12982 @item lavfi.readeia608.X.cc
12983 The two bytes stored as EIA-608 data (printed in hexadecimal).
12984
12985 @item lavfi.readeia608.X.line
12986 The number of the line on which the EIA-608 data was identified and read.
12987 @end table
12988
12989 This filter accepts the following options:
12990
12991 @table @option
12992 @item scan_min
12993 Set the line to start scanning for EIA-608 data. Default is @code{0}.
12994
12995 @item scan_max
12996 Set the line to end scanning for EIA-608 data. Default is @code{29}.
12997
12998 @item mac
12999 Set minimal acceptable amplitude change for sync codes detection.
13000 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
13001
13002 @item spw
13003 Set the ratio of width reserved for sync code detection.
13004 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
13005
13006 @item mhd
13007 Set the max peaks height difference for sync code detection.
13008 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
13009
13010 @item mpd
13011 Set max peaks period difference for sync code detection.
13012 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
13013
13014 @item msd
13015 Set the first two max start code bits differences.
13016 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
13017
13018 @item bhd
13019 Set the minimum ratio of bits height compared to 3rd start code bit.
13020 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
13021
13022 @item th_w
13023 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
13024
13025 @item th_b
13026 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
13027
13028 @item chp
13029 Enable checking the parity bit. In the event of a parity error, the filter will output
13030 @code{0x00} for that character. Default is false.
13031 @end table
13032
13033 @subsection Examples
13034
13035 @itemize
13036 @item
13037 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
13038 @example
13039 ffprobe -f lavfi -i movie=captioned_video.mov,readeia608 -show_entries frame=pkt_pts_time:frame_tags=lavfi.readeia608.0.cc,lavfi.readeia608.1.cc -of csv
13040 @end example
13041 @end itemize
13042
13043 @section readvitc
13044
13045 Read vertical interval timecode (VITC) information from the top lines of a
13046 video frame.
13047
13048 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
13049 timecode value, if a valid timecode has been detected. Further metadata key
13050 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
13051 timecode data has been found or not.
13052
13053 This filter accepts the following options:
13054
13055 @table @option
13056 @item scan_max
13057 Set the maximum number of lines to scan for VITC data. If the value is set to
13058 @code{-1} the full video frame is scanned. Default is @code{45}.
13059
13060 @item thr_b
13061 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
13062 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
13063
13064 @item thr_w
13065 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
13066 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
13067 @end table
13068
13069 @subsection Examples
13070
13071 @itemize
13072 @item
13073 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
13074 draw @code{--:--:--:--} as a placeholder:
13075 @example
13076 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
13077 @end example
13078 @end itemize
13079
13080 @section remap
13081
13082 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
13083
13084 Destination pixel at position (X, Y) will be picked from source (x, y) position
13085 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
13086 value for pixel will be used for destination pixel.
13087
13088 Xmap and Ymap input video streams must be of same dimensions. Output video stream
13089 will have Xmap/Ymap video stream dimensions.
13090 Xmap and Ymap input video streams are 16bit depth, single channel.
13091
13092 @section removegrain
13093
13094 The removegrain filter is a spatial denoiser for progressive video.
13095
13096 @table @option
13097 @item m0
13098 Set mode for the first plane.
13099
13100 @item m1
13101 Set mode for the second plane.
13102
13103 @item m2
13104 Set mode for the third plane.
13105
13106 @item m3
13107 Set mode for the fourth plane.
13108 @end table
13109
13110 Range of mode is from 0 to 24. Description of each mode follows:
13111
13112 @table @var
13113 @item 0
13114 Leave input plane unchanged. Default.
13115
13116 @item 1
13117 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
13118
13119 @item 2
13120 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
13121
13122 @item 3
13123 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
13124
13125 @item 4
13126 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
13127 This is equivalent to a median filter.
13128
13129 @item 5
13130 Line-sensitive clipping giving the minimal change.
13131
13132 @item 6
13133 Line-sensitive clipping, intermediate.
13134
13135 @item 7
13136 Line-sensitive clipping, intermediate.
13137
13138 @item 8
13139 Line-sensitive clipping, intermediate.
13140
13141 @item 9
13142 Line-sensitive clipping on a line where the neighbours pixels are the closest.
13143
13144 @item 10
13145 Replaces the target pixel with the closest neighbour.
13146
13147 @item 11
13148 [1 2 1] horizontal and vertical kernel blur.
13149
13150 @item 12
13151 Same as mode 11.
13152
13153 @item 13
13154 Bob mode, interpolates top field from the line where the neighbours
13155 pixels are the closest.
13156
13157 @item 14
13158 Bob mode, interpolates bottom field from the line where the neighbours
13159 pixels are the closest.
13160
13161 @item 15
13162 Bob mode, interpolates top field. Same as 13 but with a more complicated
13163 interpolation formula.
13164
13165 @item 16
13166 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
13167 interpolation formula.
13168
13169 @item 17
13170 Clips the pixel with the minimum and maximum of respectively the maximum and
13171 minimum of each pair of opposite neighbour pixels.
13172
13173 @item 18
13174 Line-sensitive clipping using opposite neighbours whose greatest distance from
13175 the current pixel is minimal.
13176
13177 @item 19
13178 Replaces the pixel with the average of its 8 neighbours.
13179
13180 @item 20
13181 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
13182
13183 @item 21
13184 Clips pixels using the averages of opposite neighbour.
13185
13186 @item 22
13187 Same as mode 21 but simpler and faster.
13188
13189 @item 23
13190 Small edge and halo removal, but reputed useless.
13191
13192 @item 24
13193 Similar as 23.
13194 @end table
13195
13196 @section removelogo
13197
13198 Suppress a TV station logo, using an image file to determine which
13199 pixels comprise the logo. It works by filling in the pixels that
13200 comprise the logo with neighboring pixels.
13201
13202 The filter accepts the following options:
13203
13204 @table @option
13205 @item filename, f
13206 Set the filter bitmap file, which can be any image format supported by
13207 libavformat. The width and height of the image file must match those of the
13208 video stream being processed.
13209 @end table
13210
13211 Pixels in the provided bitmap image with a value of zero are not
13212 considered part of the logo, non-zero pixels are considered part of
13213 the logo. If you use white (255) for the logo and black (0) for the
13214 rest, you will be safe. For making the filter bitmap, it is
13215 recommended to take a screen capture of a black frame with the logo
13216 visible, and then using a threshold filter followed by the erode
13217 filter once or twice.
13218
13219 If needed, little splotches can be fixed manually. Remember that if
13220 logo pixels are not covered, the filter quality will be much
13221 reduced. Marking too many pixels as part of the logo does not hurt as
13222 much, but it will increase the amount of blurring needed to cover over
13223 the image and will destroy more information than necessary, and extra
13224 pixels will slow things down on a large logo.
13225
13226 @section repeatfields
13227
13228 This filter uses the repeat_field flag from the Video ES headers and hard repeats
13229 fields based on its value.
13230
13231 @section reverse
13232
13233 Reverse a video clip.
13234
13235 Warning: This filter requires memory to buffer the entire clip, so trimming
13236 is suggested.
13237
13238 @subsection Examples
13239
13240 @itemize
13241 @item
13242 Take the first 5 seconds of a clip, and reverse it.
13243 @example
13244 trim=end=5,reverse
13245 @end example
13246 @end itemize
13247
13248 @section roberts
13249 Apply roberts cross operator to input video stream.
13250
13251 The filter accepts the following option:
13252
13253 @table @option
13254 @item planes
13255 Set which planes will be processed, unprocessed planes will be copied.
13256 By default value 0xf, all planes will be processed.
13257
13258 @item scale
13259 Set value which will be multiplied with filtered result.
13260
13261 @item delta
13262 Set value which will be added to filtered result.
13263 @end table
13264
13265 @section rotate
13266
13267 Rotate video by an arbitrary angle expressed in radians.
13268
13269 The filter accepts the following options:
13270
13271 A description of the optional parameters follows.
13272 @table @option
13273 @item angle, a
13274 Set an expression for the angle by which to rotate the input video
13275 clockwise, expressed as a number of radians. A negative value will
13276 result in a counter-clockwise rotation. By default it is set to "0".
13277
13278 This expression is evaluated for each frame.
13279
13280 @item out_w, ow
13281 Set the output width expression, default value is "iw".
13282 This expression is evaluated just once during configuration.
13283
13284 @item out_h, oh
13285 Set the output height expression, default value is "ih".
13286 This expression is evaluated just once during configuration.
13287
13288 @item bilinear
13289 Enable bilinear interpolation if set to 1, a value of 0 disables
13290 it. Default value is 1.
13291
13292 @item fillcolor, c
13293 Set the color used to fill the output area not covered by the rotated
13294 image. For the general syntax of this option, check the
13295 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
13296 If the special value "none" is selected then no
13297 background is printed (useful for example if the background is never shown).
13298
13299 Default value is "black".
13300 @end table
13301
13302 The expressions for the angle and the output size can contain the
13303 following constants and functions:
13304
13305 @table @option
13306 @item n
13307 sequential number of the input frame, starting from 0. It is always NAN
13308 before the first frame is filtered.
13309
13310 @item t
13311 time in seconds of the input frame, it is set to 0 when the filter is
13312 configured. It is always NAN before the first frame is filtered.
13313
13314 @item hsub
13315 @item vsub
13316 horizontal and vertical chroma subsample values. For example for the
13317 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13318
13319 @item in_w, iw
13320 @item in_h, ih
13321 the input video width and height
13322
13323 @item out_w, ow
13324 @item out_h, oh
13325 the output width and height, that is the size of the padded area as
13326 specified by the @var{width} and @var{height} expressions
13327
13328 @item rotw(a)
13329 @item roth(a)
13330 the minimal width/height required for completely containing the input
13331 video rotated by @var{a} radians.
13332
13333 These are only available when computing the @option{out_w} and
13334 @option{out_h} expressions.
13335 @end table
13336
13337 @subsection Examples
13338
13339 @itemize
13340 @item
13341 Rotate the input by PI/6 radians clockwise:
13342 @example
13343 rotate=PI/6
13344 @end example
13345
13346 @item
13347 Rotate the input by PI/6 radians counter-clockwise:
13348 @example
13349 rotate=-PI/6
13350 @end example
13351
13352 @item
13353 Rotate the input by 45 degrees clockwise:
13354 @example
13355 rotate=45*PI/180
13356 @end example
13357
13358 @item
13359 Apply a constant rotation with period T, starting from an angle of PI/3:
13360 @example
13361 rotate=PI/3+2*PI*t/T
13362 @end example
13363
13364 @item
13365 Make the input video rotation oscillating with a period of T
13366 seconds and an amplitude of A radians:
13367 @example
13368 rotate=A*sin(2*PI/T*t)
13369 @end example
13370
13371 @item
13372 Rotate the video, output size is chosen so that the whole rotating
13373 input video is always completely contained in the output:
13374 @example
13375 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
13376 @end example
13377
13378 @item
13379 Rotate the video, reduce the output size so that no background is ever
13380 shown:
13381 @example
13382 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
13383 @end example
13384 @end itemize
13385
13386 @subsection Commands
13387
13388 The filter supports the following commands:
13389
13390 @table @option
13391 @item a, angle
13392 Set the angle expression.
13393 The command accepts the same syntax of the corresponding option.
13394
13395 If the specified expression is not valid, it is kept at its current
13396 value.
13397 @end table
13398
13399 @section sab
13400
13401 Apply Shape Adaptive Blur.
13402
13403 The filter accepts the following options:
13404
13405 @table @option
13406 @item luma_radius, lr
13407 Set luma blur filter strength, must be a value in range 0.1-4.0, default
13408 value is 1.0. A greater value will result in a more blurred image, and
13409 in slower processing.
13410
13411 @item luma_pre_filter_radius, lpfr
13412 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
13413 value is 1.0.
13414
13415 @item luma_strength, ls
13416 Set luma maximum difference between pixels to still be considered, must
13417 be a value in the 0.1-100.0 range, default value is 1.0.
13418
13419 @item chroma_radius, cr
13420 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
13421 greater value will result in a more blurred image, and in slower
13422 processing.
13423
13424 @item chroma_pre_filter_radius, cpfr
13425 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
13426
13427 @item chroma_strength, cs
13428 Set chroma maximum difference between pixels to still be considered,
13429 must be a value in the -0.9-100.0 range.
13430 @end table
13431
13432 Each chroma option value, if not explicitly specified, is set to the
13433 corresponding luma option value.
13434
13435 @anchor{scale}
13436 @section scale
13437
13438 Scale (resize) the input video, using the libswscale library.
13439
13440 The scale filter forces the output display aspect ratio to be the same
13441 of the input, by changing the output sample aspect ratio.
13442
13443 If the input image format is different from the format requested by
13444 the next filter, the scale filter will convert the input to the
13445 requested format.
13446
13447 @subsection Options
13448 The filter accepts the following options, or any of the options
13449 supported by the libswscale scaler.
13450
13451 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
13452 the complete list of scaler options.
13453
13454 @table @option
13455 @item width, w
13456 @item height, h
13457 Set the output video dimension expression. Default value is the input
13458 dimension.
13459
13460 If the @var{width} or @var{w} value is 0, the input width is used for
13461 the output. If the @var{height} or @var{h} value is 0, the input height
13462 is used for the output.
13463
13464 If one and only one of the values is -n with n >= 1, the scale filter
13465 will use a value that maintains the aspect ratio of the input image,
13466 calculated from the other specified dimension. After that it will,
13467 however, make sure that the calculated dimension is divisible by n and
13468 adjust the value if necessary.
13469
13470 If both values are -n with n >= 1, the behavior will be identical to
13471 both values being set to 0 as previously detailed.
13472
13473 See below for the list of accepted constants for use in the dimension
13474 expression.
13475
13476 @item eval
13477 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
13478
13479 @table @samp
13480 @item init
13481 Only evaluate expressions once during the filter initialization or when a command is processed.
13482
13483 @item frame
13484 Evaluate expressions for each incoming frame.
13485
13486 @end table
13487
13488 Default value is @samp{init}.
13489
13490
13491 @item interl
13492 Set the interlacing mode. It accepts the following values:
13493
13494 @table @samp
13495 @item 1
13496 Force interlaced aware scaling.
13497
13498 @item 0
13499 Do not apply interlaced scaling.
13500
13501 @item -1
13502 Select interlaced aware scaling depending on whether the source frames
13503 are flagged as interlaced or not.
13504 @end table
13505
13506 Default value is @samp{0}.
13507
13508 @item flags
13509 Set libswscale scaling flags. See
13510 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
13511 complete list of values. If not explicitly specified the filter applies
13512 the default flags.
13513
13514
13515 @item param0, param1
13516 Set libswscale input parameters for scaling algorithms that need them. See
13517 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
13518 complete documentation. If not explicitly specified the filter applies
13519 empty parameters.
13520
13521
13522
13523 @item size, s
13524 Set the video size. For the syntax of this option, check the
13525 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
13526
13527 @item in_color_matrix
13528 @item out_color_matrix
13529 Set in/output YCbCr color space type.
13530
13531 This allows the autodetected value to be overridden as well as allows forcing
13532 a specific value used for the output and encoder.
13533
13534 If not specified, the color space type depends on the pixel format.
13535
13536 Possible values:
13537
13538 @table @samp
13539 @item auto
13540 Choose automatically.
13541
13542 @item bt709
13543 Format conforming to International Telecommunication Union (ITU)
13544 Recommendation BT.709.
13545
13546 @item fcc
13547 Set color space conforming to the United States Federal Communications
13548 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
13549
13550 @item bt601
13551 Set color space conforming to:
13552
13553 @itemize
13554 @item
13555 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
13556
13557 @item
13558 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
13559
13560 @item
13561 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
13562
13563 @end itemize
13564
13565 @item smpte240m
13566 Set color space conforming to SMPTE ST 240:1999.
13567 @end table
13568
13569 @item in_range
13570 @item out_range
13571 Set in/output YCbCr sample range.
13572
13573 This allows the autodetected value to be overridden as well as allows forcing
13574 a specific value used for the output and encoder. If not specified, the
13575 range depends on the pixel format. Possible values:
13576
13577 @table @samp
13578 @item auto/unknown
13579 Choose automatically.
13580
13581 @item jpeg/full/pc
13582 Set full range (0-255 in case of 8-bit luma).
13583
13584 @item mpeg/limited/tv
13585 Set "MPEG" range (16-235 in case of 8-bit luma).
13586 @end table
13587
13588 @item force_original_aspect_ratio
13589 Enable decreasing or increasing output video width or height if necessary to
13590 keep the original aspect ratio. Possible values:
13591
13592 @table @samp
13593 @item disable
13594 Scale the video as specified and disable this feature.
13595
13596 @item decrease
13597 The output video dimensions will automatically be decreased if needed.
13598
13599 @item increase
13600 The output video dimensions will automatically be increased if needed.
13601
13602 @end table
13603
13604 One useful instance of this option is that when you know a specific device's
13605 maximum allowed resolution, you can use this to limit the output video to
13606 that, while retaining the aspect ratio. For example, device A allows
13607 1280x720 playback, and your video is 1920x800. Using this option (set it to
13608 decrease) and specifying 1280x720 to the command line makes the output
13609 1280x533.
13610
13611 Please note that this is a different thing than specifying -1 for @option{w}
13612 or @option{h}, you still need to specify the output resolution for this option
13613 to work.
13614
13615 @end table
13616
13617 The values of the @option{w} and @option{h} options are expressions
13618 containing the following constants:
13619
13620 @table @var
13621 @item in_w
13622 @item in_h
13623 The input width and height
13624
13625 @item iw
13626 @item ih
13627 These are the same as @var{in_w} and @var{in_h}.
13628
13629 @item out_w
13630 @item out_h
13631 The output (scaled) width and height
13632
13633 @item ow
13634 @item oh
13635 These are the same as @var{out_w} and @var{out_h}
13636
13637 @item a
13638 The same as @var{iw} / @var{ih}
13639
13640 @item sar
13641 input sample aspect ratio
13642
13643 @item dar
13644 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
13645
13646 @item hsub
13647 @item vsub
13648 horizontal and vertical input chroma subsample values. For example for the
13649 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13650
13651 @item ohsub
13652 @item ovsub
13653 horizontal and vertical output chroma subsample values. For example for the
13654 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13655 @end table
13656
13657 @subsection Examples
13658
13659 @itemize
13660 @item
13661 Scale the input video to a size of 200x100
13662 @example
13663 scale=w=200:h=100
13664 @end example
13665
13666 This is equivalent to:
13667 @example
13668 scale=200:100
13669 @end example
13670
13671 or:
13672 @example
13673 scale=200x100
13674 @end example
13675
13676 @item
13677 Specify a size abbreviation for the output size:
13678 @example
13679 scale=qcif
13680 @end example
13681
13682 which can also be written as:
13683 @example
13684 scale=size=qcif
13685 @end example
13686
13687 @item
13688 Scale the input to 2x:
13689 @example
13690 scale=w=2*iw:h=2*ih
13691 @end example
13692
13693 @item
13694 The above is the same as:
13695 @example
13696 scale=2*in_w:2*in_h
13697 @end example
13698
13699 @item
13700 Scale the input to 2x with forced interlaced scaling:
13701 @example
13702 scale=2*iw:2*ih:interl=1
13703 @end example
13704
13705 @item
13706 Scale the input to half size:
13707 @example
13708 scale=w=iw/2:h=ih/2
13709 @end example
13710
13711 @item
13712 Increase the width, and set the height to the same size:
13713 @example
13714 scale=3/2*iw:ow
13715 @end example
13716
13717 @item
13718 Seek Greek harmony:
13719 @example
13720 scale=iw:1/PHI*iw
13721 scale=ih*PHI:ih
13722 @end example
13723
13724 @item
13725 Increase the height, and set the width to 3/2 of the height:
13726 @example
13727 scale=w=3/2*oh:h=3/5*ih
13728 @end example
13729
13730 @item
13731 Increase the size, making the size a multiple of the chroma
13732 subsample values:
13733 @example
13734 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
13735 @end example
13736
13737 @item
13738 Increase the width to a maximum of 500 pixels,
13739 keeping the same aspect ratio as the input:
13740 @example
13741 scale=w='min(500\, iw*3/2):h=-1'
13742 @end example
13743
13744 @item
13745 Make pixels square by combining scale and setsar:
13746 @example
13747 scale='trunc(ih*dar):ih',setsar=1/1
13748 @end example
13749
13750 @item
13751 Make pixels square by combining scale and setsar,
13752 making sure the resulting resolution is even (required by some codecs):
13753 @example
13754 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
13755 @end example
13756 @end itemize
13757
13758 @subsection Commands
13759
13760 This filter supports the following commands:
13761 @table @option
13762 @item width, w
13763 @item height, h
13764 Set the output video dimension expression.
13765 The command accepts the same syntax of the corresponding option.
13766
13767 If the specified expression is not valid, it is kept at its current
13768 value.
13769 @end table
13770
13771 @section scale_npp
13772
13773 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
13774 format conversion on CUDA video frames. Setting the output width and height
13775 works in the same way as for the @var{scale} filter.
13776
13777 The following additional options are accepted:
13778 @table @option
13779 @item format
13780 The pixel format of the output CUDA frames. If set to the string "same" (the
13781 default), the input format will be kept. Note that automatic format negotiation
13782 and conversion is not yet supported for hardware frames
13783
13784 @item interp_algo
13785 The interpolation algorithm used for resizing. One of the following:
13786 @table @option
13787 @item nn
13788 Nearest neighbour.
13789
13790 @item linear
13791 @item cubic
13792 @item cubic2p_bspline
13793 2-parameter cubic (B=1, C=0)
13794
13795 @item cubic2p_catmullrom
13796 2-parameter cubic (B=0, C=1/2)
13797
13798 @item cubic2p_b05c03
13799 2-parameter cubic (B=1/2, C=3/10)
13800
13801 @item super
13802 Supersampling
13803
13804 @item lanczos
13805 @end table
13806
13807 @end table
13808
13809 @section scale2ref
13810
13811 Scale (resize) the input video, based on a reference video.
13812
13813 See the scale filter for available options, scale2ref supports the same but
13814 uses the reference video instead of the main input as basis. scale2ref also
13815 supports the following additional constants for the @option{w} and
13816 @option{h} options:
13817
13818 @table @var
13819 @item main_w
13820 @item main_h
13821 The main input video's width and height
13822
13823 @item main_a
13824 The same as @var{main_w} / @var{main_h}
13825
13826 @item main_sar
13827 The main input video's sample aspect ratio
13828
13829 @item main_dar, mdar
13830 The main input video's display aspect ratio. Calculated from
13831 @code{(main_w / main_h) * main_sar}.
13832
13833 @item main_hsub
13834 @item main_vsub
13835 The main input video's horizontal and vertical chroma subsample values.
13836 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
13837 is 1.
13838 @end table
13839
13840 @subsection Examples
13841
13842 @itemize
13843 @item
13844 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
13845 @example
13846 'scale2ref[b][a];[a][b]overlay'
13847 @end example
13848 @end itemize
13849
13850 @anchor{selectivecolor}
13851 @section selectivecolor
13852
13853 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
13854 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
13855 by the "purity" of the color (that is, how saturated it already is).
13856
13857 This filter is similar to the Adobe Photoshop Selective Color tool.
13858
13859 The filter accepts the following options:
13860
13861 @table @option
13862 @item correction_method
13863 Select color correction method.
13864
13865 Available values are:
13866 @table @samp
13867 @item absolute
13868 Specified adjustments are applied "as-is" (added/subtracted to original pixel
13869 component value).
13870 @item relative
13871 Specified adjustments are relative to the original component value.
13872 @end table
13873 Default is @code{absolute}.
13874 @item reds
13875 Adjustments for red pixels (pixels where the red component is the maximum)
13876 @item yellows
13877 Adjustments for yellow pixels (pixels where the blue component is the minimum)
13878 @item greens
13879 Adjustments for green pixels (pixels where the green component is the maximum)
13880 @item cyans
13881 Adjustments for cyan pixels (pixels where the red component is the minimum)
13882 @item blues
13883 Adjustments for blue pixels (pixels where the blue component is the maximum)
13884 @item magentas
13885 Adjustments for magenta pixels (pixels where the green component is the minimum)
13886 @item whites
13887 Adjustments for white pixels (pixels where all components are greater than 128)
13888 @item neutrals
13889 Adjustments for all pixels except pure black and pure white
13890 @item blacks
13891 Adjustments for black pixels (pixels where all components are lesser than 128)
13892 @item psfile
13893 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
13894 @end table
13895
13896 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
13897 4 space separated floating point adjustment values in the [-1,1] range,
13898 respectively to adjust the amount of cyan, magenta, yellow and black for the
13899 pixels of its range.
13900
13901 @subsection Examples
13902
13903 @itemize
13904 @item
13905 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
13906 increase magenta by 27% in blue areas:
13907 @example
13908 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
13909 @end example
13910
13911 @item
13912 Use a Photoshop selective color preset:
13913 @example
13914 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
13915 @end example
13916 @end itemize
13917
13918 @anchor{separatefields}
13919 @section separatefields
13920
13921 The @code{separatefields} takes a frame-based video input and splits
13922 each frame into its components fields, producing a new half height clip
13923 with twice the frame rate and twice the frame count.
13924
13925 This filter use field-dominance information in frame to decide which
13926 of each pair of fields to place first in the output.
13927 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
13928
13929 @section setdar, setsar
13930
13931 The @code{setdar} filter sets the Display Aspect Ratio for the filter
13932 output video.
13933
13934 This is done by changing the specified Sample (aka Pixel) Aspect
13935 Ratio, according to the following equation:
13936 @example
13937 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
13938 @end example
13939
13940 Keep in mind that the @code{setdar} filter does not modify the pixel
13941 dimensions of the video frame. Also, the display aspect ratio set by
13942 this filter may be changed by later filters in the filterchain,
13943 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
13944 applied.
13945
13946 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
13947 the filter output video.
13948
13949 Note that as a consequence of the application of this filter, the
13950 output display aspect ratio will change according to the equation
13951 above.
13952
13953 Keep in mind that the sample aspect ratio set by the @code{setsar}
13954 filter may be changed by later filters in the filterchain, e.g. if
13955 another "setsar" or a "setdar" filter is applied.
13956
13957 It accepts the following parameters:
13958
13959 @table @option
13960 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
13961 Set the aspect ratio used by the filter.
13962
13963 The parameter can be a floating point number string, an expression, or
13964 a string of the form @var{num}:@var{den}, where @var{num} and
13965 @var{den} are the numerator and denominator of the aspect ratio. If
13966 the parameter is not specified, it is assumed the value "0".
13967 In case the form "@var{num}:@var{den}" is used, the @code{:} character
13968 should be escaped.
13969
13970 @item max
13971 Set the maximum integer value to use for expressing numerator and
13972 denominator when reducing the expressed aspect ratio to a rational.
13973 Default value is @code{100}.
13974
13975 @end table
13976
13977 The parameter @var{sar} is an expression containing
13978 the following constants:
13979
13980 @table @option
13981 @item E, PI, PHI
13982 These are approximated values for the mathematical constants e
13983 (Euler's number), pi (Greek pi), and phi (the golden ratio).
13984
13985 @item w, h
13986 The input width and height.
13987
13988 @item a
13989 These are the same as @var{w} / @var{h}.
13990
13991 @item sar
13992 The input sample aspect ratio.
13993
13994 @item dar
13995 The input display aspect ratio. It is the same as
13996 (@var{w} / @var{h}) * @var{sar}.
13997
13998 @item hsub, vsub
13999 Horizontal and vertical chroma subsample values. For example, for the
14000 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14001 @end table
14002
14003 @subsection Examples
14004
14005 @itemize
14006
14007 @item
14008 To change the display aspect ratio to 16:9, specify one of the following:
14009 @example
14010 setdar=dar=1.77777
14011 setdar=dar=16/9
14012 @end example
14013
14014 @item
14015 To change the sample aspect ratio to 10:11, specify:
14016 @example
14017 setsar=sar=10/11
14018 @end example
14019
14020 @item
14021 To set a display aspect ratio of 16:9, and specify a maximum integer value of
14022 1000 in the aspect ratio reduction, use the command:
14023 @example
14024 setdar=ratio=16/9:max=1000
14025 @end example
14026
14027 @end itemize
14028
14029 @anchor{setfield}
14030 @section setfield
14031
14032 Force field for the output video frame.
14033
14034 The @code{setfield} filter marks the interlace type field for the
14035 output frames. It does not change the input frame, but only sets the
14036 corresponding property, which affects how the frame is treated by
14037 following filters (e.g. @code{fieldorder} or @code{yadif}).
14038
14039 The filter accepts the following options:
14040
14041 @table @option
14042
14043 @item mode
14044 Available values are:
14045
14046 @table @samp
14047 @item auto
14048 Keep the same field property.
14049
14050 @item bff
14051 Mark the frame as bottom-field-first.
14052
14053 @item tff
14054 Mark the frame as top-field-first.
14055
14056 @item prog
14057 Mark the frame as progressive.
14058 @end table
14059 @end table
14060
14061 @section showinfo
14062
14063 Show a line containing various information for each input video frame.
14064 The input video is not modified.
14065
14066 The shown line contains a sequence of key/value pairs of the form
14067 @var{key}:@var{value}.
14068
14069 The following values are shown in the output:
14070
14071 @table @option
14072 @item n
14073 The (sequential) number of the input frame, starting from 0.
14074
14075 @item pts
14076 The Presentation TimeStamp of the input frame, expressed as a number of
14077 time base units. The time base unit depends on the filter input pad.
14078
14079 @item pts_time
14080 The Presentation TimeStamp of the input frame, expressed as a number of
14081 seconds.
14082
14083 @item pos
14084 The position of the frame in the input stream, or -1 if this information is
14085 unavailable and/or meaningless (for example in case of synthetic video).
14086
14087 @item fmt
14088 The pixel format name.
14089
14090 @item sar
14091 The sample aspect ratio of the input frame, expressed in the form
14092 @var{num}/@var{den}.
14093
14094 @item s
14095 The size of the input frame. For the syntax of this option, check the
14096 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14097
14098 @item i
14099 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
14100 for bottom field first).
14101
14102 @item iskey
14103 This is 1 if the frame is a key frame, 0 otherwise.
14104
14105 @item type
14106 The picture type of the input frame ("I" for an I-frame, "P" for a
14107 P-frame, "B" for a B-frame, or "?" for an unknown type).
14108 Also refer to the documentation of the @code{AVPictureType} enum and of
14109 the @code{av_get_picture_type_char} function defined in
14110 @file{libavutil/avutil.h}.
14111
14112 @item checksum
14113 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
14114
14115 @item plane_checksum
14116 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
14117 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
14118 @end table
14119
14120 @section showpalette
14121
14122 Displays the 256 colors palette of each frame. This filter is only relevant for
14123 @var{pal8} pixel format frames.
14124
14125 It accepts the following option:
14126
14127 @table @option
14128 @item s
14129 Set the size of the box used to represent one palette color entry. Default is
14130 @code{30} (for a @code{30x30} pixel box).
14131 @end table
14132
14133 @section shuffleframes
14134
14135 Reorder and/or duplicate and/or drop video frames.
14136
14137 It accepts the following parameters:
14138
14139 @table @option
14140 @item mapping
14141 Set the destination indexes of input frames.
14142 This is space or '|' separated list of indexes that maps input frames to output
14143 frames. Number of indexes also sets maximal value that each index may have.
14144 '-1' index have special meaning and that is to drop frame.
14145 @end table
14146
14147 The first frame has the index 0. The default is to keep the input unchanged.
14148
14149 @subsection Examples
14150
14151 @itemize
14152 @item
14153 Swap second and third frame of every three frames of the input:
14154 @example
14155 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
14156 @end example
14157
14158 @item
14159 Swap 10th and 1st frame of every ten frames of the input:
14160 @example
14161 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
14162 @end example
14163 @end itemize
14164
14165 @section shuffleplanes
14166
14167 Reorder and/or duplicate video planes.
14168
14169 It accepts the following parameters:
14170
14171 @table @option
14172
14173 @item map0
14174 The index of the input plane to be used as the first output plane.
14175
14176 @item map1
14177 The index of the input plane to be used as the second output plane.
14178
14179 @item map2
14180 The index of the input plane to be used as the third output plane.
14181
14182 @item map3
14183 The index of the input plane to be used as the fourth output plane.
14184
14185 @end table
14186
14187 The first plane has the index 0. The default is to keep the input unchanged.
14188
14189 @subsection Examples
14190
14191 @itemize
14192 @item
14193 Swap the second and third planes of the input:
14194 @example
14195 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
14196 @end example
14197 @end itemize
14198
14199 @anchor{signalstats}
14200 @section signalstats
14201 Evaluate various visual metrics that assist in determining issues associated
14202 with the digitization of analog video media.
14203
14204 By default the filter will log these metadata values:
14205
14206 @table @option
14207 @item YMIN
14208 Display the minimal Y value contained within the input frame. Expressed in
14209 range of [0-255].
14210
14211 @item YLOW
14212 Display the Y value at the 10% percentile within the input frame. Expressed in
14213 range of [0-255].
14214
14215 @item YAVG
14216 Display the average Y value within the input frame. Expressed in range of
14217 [0-255].
14218
14219 @item YHIGH
14220 Display the Y value at the 90% percentile within the input frame. Expressed in
14221 range of [0-255].
14222
14223 @item YMAX
14224 Display the maximum Y value contained within the input frame. Expressed in
14225 range of [0-255].
14226
14227 @item UMIN
14228 Display the minimal U value contained within the input frame. Expressed in
14229 range of [0-255].
14230
14231 @item ULOW
14232 Display the U value at the 10% percentile within the input frame. Expressed in
14233 range of [0-255].
14234
14235 @item UAVG
14236 Display the average U value within the input frame. Expressed in range of
14237 [0-255].
14238
14239 @item UHIGH
14240 Display the U value at the 90% percentile within the input frame. Expressed in
14241 range of [0-255].
14242
14243 @item UMAX
14244 Display the maximum U value contained within the input frame. Expressed in
14245 range of [0-255].
14246
14247 @item VMIN
14248 Display the minimal V value contained within the input frame. Expressed in
14249 range of [0-255].
14250
14251 @item VLOW
14252 Display the V value at the 10% percentile within the input frame. Expressed in
14253 range of [0-255].
14254
14255 @item VAVG
14256 Display the average V value within the input frame. Expressed in range of
14257 [0-255].
14258
14259 @item VHIGH
14260 Display the V value at the 90% percentile within the input frame. Expressed in
14261 range of [0-255].
14262
14263 @item VMAX
14264 Display the maximum V value contained within the input frame. Expressed in
14265 range of [0-255].
14266
14267 @item SATMIN
14268 Display the minimal saturation value contained within the input frame.
14269 Expressed in range of [0-~181.02].
14270
14271 @item SATLOW
14272 Display the saturation value at the 10% percentile within the input frame.
14273 Expressed in range of [0-~181.02].
14274
14275 @item SATAVG
14276 Display the average saturation value within the input frame. Expressed in range
14277 of [0-~181.02].
14278
14279 @item SATHIGH
14280 Display the saturation value at the 90% percentile within the input frame.
14281 Expressed in range of [0-~181.02].
14282
14283 @item SATMAX
14284 Display the maximum saturation value contained within the input frame.
14285 Expressed in range of [0-~181.02].
14286
14287 @item HUEMED
14288 Display the median value for hue within the input frame. Expressed in range of
14289 [0-360].
14290
14291 @item HUEAVG
14292 Display the average value for hue within the input frame. Expressed in range of
14293 [0-360].
14294
14295 @item YDIF
14296 Display the average of sample value difference between all values of the Y
14297 plane in the current frame and corresponding values of the previous input frame.
14298 Expressed in range of [0-255].
14299
14300 @item UDIF
14301 Display the average of sample value difference between all values of the U
14302 plane in the current frame and corresponding values of the previous input frame.
14303 Expressed in range of [0-255].
14304
14305 @item VDIF
14306 Display the average of sample value difference between all values of the V
14307 plane in the current frame and corresponding values of the previous input frame.
14308 Expressed in range of [0-255].
14309
14310 @item YBITDEPTH
14311 Display bit depth of Y plane in current frame.
14312 Expressed in range of [0-16].
14313
14314 @item UBITDEPTH
14315 Display bit depth of U plane in current frame.
14316 Expressed in range of [0-16].
14317
14318 @item VBITDEPTH
14319 Display bit depth of V plane in current frame.
14320 Expressed in range of [0-16].
14321 @end table
14322
14323 The filter accepts the following options:
14324
14325 @table @option
14326 @item stat
14327 @item out
14328
14329 @option{stat} specify an additional form of image analysis.
14330 @option{out} output video with the specified type of pixel highlighted.
14331
14332 Both options accept the following values:
14333
14334 @table @samp
14335 @item tout
14336 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
14337 unlike the neighboring pixels of the same field. Examples of temporal outliers
14338 include the results of video dropouts, head clogs, or tape tracking issues.
14339
14340 @item vrep
14341 Identify @var{vertical line repetition}. Vertical line repetition includes
14342 similar rows of pixels within a frame. In born-digital video vertical line
14343 repetition is common, but this pattern is uncommon in video digitized from an
14344 analog source. When it occurs in video that results from the digitization of an
14345 analog source it can indicate concealment from a dropout compensator.
14346
14347 @item brng
14348 Identify pixels that fall outside of legal broadcast range.
14349 @end table
14350
14351 @item color, c
14352 Set the highlight color for the @option{out} option. The default color is
14353 yellow.
14354 @end table
14355
14356 @subsection Examples
14357
14358 @itemize
14359 @item
14360 Output data of various video metrics:
14361 @example
14362 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
14363 @end example
14364
14365 @item
14366 Output specific data about the minimum and maximum values of the Y plane per frame:
14367 @example
14368 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
14369 @end example
14370
14371 @item
14372 Playback video while highlighting pixels that are outside of broadcast range in red.
14373 @example
14374 ffplay example.mov -vf signalstats="out=brng:color=red"
14375 @end example
14376
14377 @item
14378 Playback video with signalstats metadata drawn over the frame.
14379 @example
14380 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
14381 @end example
14382
14383 The contents of signalstat_drawtext.txt used in the command are:
14384 @example
14385 time %@{pts:hms@}
14386 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
14387 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
14388 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
14389 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
14390
14391 @end example
14392 @end itemize
14393
14394 @anchor{signature}
14395 @section signature
14396
14397 Calculates the MPEG-7 Video Signature. The filter can handle more than one
14398 input. In this case the matching between the inputs can be calculated additionally.
14399 The filter always passes through the first input. The signature of each stream can
14400 be written into a file.
14401
14402 It accepts the following options:
14403
14404 @table @option
14405 @item detectmode
14406 Enable or disable the matching process.
14407
14408 Available values are:
14409
14410 @table @samp
14411 @item off
14412 Disable the calculation of a matching (default).
14413 @item full
14414 Calculate the matching for the whole video and output whether the whole video
14415 matches or only parts.
14416 @item fast
14417 Calculate only until a matching is found or the video ends. Should be faster in
14418 some cases.
14419 @end table
14420
14421 @item nb_inputs
14422 Set the number of inputs. The option value must be a non negative integer.
14423 Default value is 1.
14424
14425 @item filename
14426 Set the path to which the output is written. If there is more than one input,
14427 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
14428 integer), that will be replaced with the input number. If no filename is
14429 specified, no output will be written. This is the default.
14430
14431 @item format
14432 Choose the output format.
14433
14434 Available values are:
14435
14436 @table @samp
14437 @item binary
14438 Use the specified binary representation (default).
14439 @item xml
14440 Use the specified xml representation.
14441 @end table
14442
14443 @item th_d
14444 Set threshold to detect one word as similar. The option value must be an integer
14445 greater than zero. The default value is 9000.
14446
14447 @item th_dc
14448 Set threshold to detect all words as similar. The option value must be an integer
14449 greater than zero. The default value is 60000.
14450
14451 @item th_xh
14452 Set threshold to detect frames as similar. The option value must be an integer
14453 greater than zero. The default value is 116.
14454
14455 @item th_di
14456 Set the minimum length of a sequence in frames to recognize it as matching
14457 sequence. The option value must be a non negative integer value.
14458 The default value is 0.
14459
14460 @item th_it
14461 Set the minimum relation, that matching frames to all frames must have.
14462 The option value must be a double value between 0 and 1. The default value is 0.5.
14463 @end table
14464
14465 @subsection Examples
14466
14467 @itemize
14468 @item
14469 To calculate the signature of an input video and store it in signature.bin:
14470 @example
14471 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
14472 @end example
14473
14474 @item
14475 To detect whether two videos match and store the signatures in XML format in
14476 signature0.xml and signature1.xml:
14477 @example
14478 ffmpeg -i input1.mkv -i input2.mkv -filter_complex "[0:v][1:v] signature=nb_inputs=2:detectmode=full:format=xml:filename=signature%d.xml" -map :v -f null -
14479 @end example
14480
14481 @end itemize
14482
14483 @anchor{smartblur}
14484 @section smartblur
14485
14486 Blur the input video without impacting the outlines.
14487
14488 It accepts the following options:
14489
14490 @table @option
14491 @item luma_radius, lr
14492 Set the luma radius. The option value must be a float number in
14493 the range [0.1,5.0] that specifies the variance of the gaussian filter
14494 used to blur the image (slower if larger). Default value is 1.0.
14495
14496 @item luma_strength, ls
14497 Set the luma strength. The option value must be a float number
14498 in the range [-1.0,1.0] that configures the blurring. A value included
14499 in [0.0,1.0] will blur the image whereas a value included in
14500 [-1.0,0.0] will sharpen the image. Default value is 1.0.
14501
14502 @item luma_threshold, lt
14503 Set the luma threshold used as a coefficient to determine
14504 whether a pixel should be blurred or not. The option value must be an
14505 integer in the range [-30,30]. A value of 0 will filter all the image,
14506 a value included in [0,30] will filter flat areas and a value included
14507 in [-30,0] will filter edges. Default value is 0.
14508
14509 @item chroma_radius, cr
14510 Set the chroma radius. The option value must be a float number in
14511 the range [0.1,5.0] that specifies the variance of the gaussian filter
14512 used to blur the image (slower if larger). Default value is @option{luma_radius}.
14513
14514 @item chroma_strength, cs
14515 Set the chroma strength. The option value must be a float number
14516 in the range [-1.0,1.0] that configures the blurring. A value included
14517 in [0.0,1.0] will blur the image whereas a value included in
14518 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
14519
14520 @item chroma_threshold, ct
14521 Set the chroma threshold used as a coefficient to determine
14522 whether a pixel should be blurred or not. The option value must be an
14523 integer in the range [-30,30]. A value of 0 will filter all the image,
14524 a value included in [0,30] will filter flat areas and a value included
14525 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
14526 @end table
14527
14528 If a chroma option is not explicitly set, the corresponding luma value
14529 is set.
14530
14531 @section ssim
14532
14533 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
14534
14535 This filter takes in input two input videos, the first input is
14536 considered the "main" source and is passed unchanged to the
14537 output. The second input is used as a "reference" video for computing
14538 the SSIM.
14539
14540 Both video inputs must have the same resolution and pixel format for
14541 this filter to work correctly. Also it assumes that both inputs
14542 have the same number of frames, which are compared one by one.
14543
14544 The filter stores the calculated SSIM of each frame.
14545
14546 The description of the accepted parameters follows.
14547
14548 @table @option
14549 @item stats_file, f
14550 If specified the filter will use the named file to save the SSIM of
14551 each individual frame. When filename equals "-" the data is sent to
14552 standard output.
14553 @end table
14554
14555 The file printed if @var{stats_file} is selected, contains a sequence of
14556 key/value pairs of the form @var{key}:@var{value} for each compared
14557 couple of frames.
14558
14559 A description of each shown parameter follows:
14560
14561 @table @option
14562 @item n
14563 sequential number of the input frame, starting from 1
14564
14565 @item Y, U, V, R, G, B
14566 SSIM of the compared frames for the component specified by the suffix.
14567
14568 @item All
14569 SSIM of the compared frames for the whole frame.
14570
14571 @item dB
14572 Same as above but in dB representation.
14573 @end table
14574
14575 This filter also supports the @ref{framesync} options.
14576
14577 For example:
14578 @example
14579 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
14580 [main][ref] ssim="stats_file=stats.log" [out]
14581 @end example
14582
14583 On this example the input file being processed is compared with the
14584 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
14585 is stored in @file{stats.log}.
14586
14587 Another example with both psnr and ssim at same time:
14588 @example
14589 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
14590 @end example
14591
14592 @section stereo3d
14593
14594 Convert between different stereoscopic image formats.
14595
14596 The filters accept the following options:
14597
14598 @table @option
14599 @item in
14600 Set stereoscopic image format of input.
14601
14602 Available values for input image formats are:
14603 @table @samp
14604 @item sbsl
14605 side by side parallel (left eye left, right eye right)
14606
14607 @item sbsr
14608 side by side crosseye (right eye left, left eye right)
14609
14610 @item sbs2l
14611 side by side parallel with half width resolution
14612 (left eye left, right eye right)
14613
14614 @item sbs2r
14615 side by side crosseye with half width resolution
14616 (right eye left, left eye right)
14617
14618 @item abl
14619 above-below (left eye above, right eye below)
14620
14621 @item abr
14622 above-below (right eye above, left eye below)
14623
14624 @item ab2l
14625 above-below with half height resolution
14626 (left eye above, right eye below)
14627
14628 @item ab2r
14629 above-below with half height resolution
14630 (right eye above, left eye below)
14631
14632 @item al
14633 alternating frames (left eye first, right eye second)
14634
14635 @item ar
14636 alternating frames (right eye first, left eye second)
14637
14638 @item irl
14639 interleaved rows (left eye has top row, right eye starts on next row)
14640
14641 @item irr
14642 interleaved rows (right eye has top row, left eye starts on next row)
14643
14644 @item icl
14645 interleaved columns, left eye first
14646
14647 @item icr
14648 interleaved columns, right eye first
14649
14650 Default value is @samp{sbsl}.
14651 @end table
14652
14653 @item out
14654 Set stereoscopic image format of output.
14655
14656 @table @samp
14657 @item sbsl
14658 side by side parallel (left eye left, right eye right)
14659
14660 @item sbsr
14661 side by side crosseye (right eye left, left eye right)
14662
14663 @item sbs2l
14664 side by side parallel with half width resolution
14665 (left eye left, right eye right)
14666
14667 @item sbs2r
14668 side by side crosseye with half width resolution
14669 (right eye left, left eye right)
14670
14671 @item abl
14672 above-below (left eye above, right eye below)
14673
14674 @item abr
14675 above-below (right eye above, left eye below)
14676
14677 @item ab2l
14678 above-below with half height resolution
14679 (left eye above, right eye below)
14680
14681 @item ab2r
14682 above-below with half height resolution
14683 (right eye above, left eye below)
14684
14685 @item al
14686 alternating frames (left eye first, right eye second)
14687
14688 @item ar
14689 alternating frames (right eye first, left eye second)
14690
14691 @item irl
14692 interleaved rows (left eye has top row, right eye starts on next row)
14693
14694 @item irr
14695 interleaved rows (right eye has top row, left eye starts on next row)
14696
14697 @item arbg
14698 anaglyph red/blue gray
14699 (red filter on left eye, blue filter on right eye)
14700
14701 @item argg
14702 anaglyph red/green gray
14703 (red filter on left eye, green filter on right eye)
14704
14705 @item arcg
14706 anaglyph red/cyan gray
14707 (red filter on left eye, cyan filter on right eye)
14708
14709 @item arch
14710 anaglyph red/cyan half colored
14711 (red filter on left eye, cyan filter on right eye)
14712
14713 @item arcc
14714 anaglyph red/cyan color
14715 (red filter on left eye, cyan filter on right eye)
14716
14717 @item arcd
14718 anaglyph red/cyan color optimized with the least squares projection of dubois
14719 (red filter on left eye, cyan filter on right eye)
14720
14721 @item agmg
14722 anaglyph green/magenta gray
14723 (green filter on left eye, magenta filter on right eye)
14724
14725 @item agmh
14726 anaglyph green/magenta half colored
14727 (green filter on left eye, magenta filter on right eye)
14728
14729 @item agmc
14730 anaglyph green/magenta colored
14731 (green filter on left eye, magenta filter on right eye)
14732
14733 @item agmd
14734 anaglyph green/magenta color optimized with the least squares projection of dubois
14735 (green filter on left eye, magenta filter on right eye)
14736
14737 @item aybg
14738 anaglyph yellow/blue gray
14739 (yellow filter on left eye, blue filter on right eye)
14740
14741 @item aybh
14742 anaglyph yellow/blue half colored
14743 (yellow filter on left eye, blue filter on right eye)
14744
14745 @item aybc
14746 anaglyph yellow/blue colored
14747 (yellow filter on left eye, blue filter on right eye)
14748
14749 @item aybd
14750 anaglyph yellow/blue color optimized with the least squares projection of dubois
14751 (yellow filter on left eye, blue filter on right eye)
14752
14753 @item ml
14754 mono output (left eye only)
14755
14756 @item mr
14757 mono output (right eye only)
14758
14759 @item chl
14760 checkerboard, left eye first
14761
14762 @item chr
14763 checkerboard, right eye first
14764
14765 @item icl
14766 interleaved columns, left eye first
14767
14768 @item icr
14769 interleaved columns, right eye first
14770
14771 @item hdmi
14772 HDMI frame pack
14773 @end table
14774
14775 Default value is @samp{arcd}.
14776 @end table
14777
14778 @subsection Examples
14779
14780 @itemize
14781 @item
14782 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
14783 @example
14784 stereo3d=sbsl:aybd
14785 @end example
14786
14787 @item
14788 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
14789 @example
14790 stereo3d=abl:sbsr
14791 @end example
14792 @end itemize
14793
14794 @section streamselect, astreamselect
14795 Select video or audio streams.
14796
14797 The filter accepts the following options:
14798
14799 @table @option
14800 @item inputs
14801 Set number of inputs. Default is 2.
14802
14803 @item map
14804 Set input indexes to remap to outputs.
14805 @end table
14806
14807 @subsection Commands
14808
14809 The @code{streamselect} and @code{astreamselect} filter supports the following
14810 commands:
14811
14812 @table @option
14813 @item map
14814 Set input indexes to remap to outputs.
14815 @end table
14816
14817 @subsection Examples
14818
14819 @itemize
14820 @item
14821 Select first 5 seconds 1st stream and rest of time 2nd stream:
14822 @example
14823 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
14824 @end example
14825
14826 @item
14827 Same as above, but for audio:
14828 @example
14829 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
14830 @end example
14831 @end itemize
14832
14833 @section sobel
14834 Apply sobel operator to input video stream.
14835
14836 The filter accepts the following option:
14837
14838 @table @option
14839 @item planes
14840 Set which planes will be processed, unprocessed planes will be copied.
14841 By default value 0xf, all planes will be processed.
14842
14843 @item scale
14844 Set value which will be multiplied with filtered result.
14845
14846 @item delta
14847 Set value which will be added to filtered result.
14848 @end table
14849
14850 @anchor{spp}
14851 @section spp
14852
14853 Apply a simple postprocessing filter that compresses and decompresses the image
14854 at several (or - in the case of @option{quality} level @code{6} - all) shifts
14855 and average the results.
14856
14857 The filter accepts the following options:
14858
14859 @table @option
14860 @item quality
14861 Set quality. This option defines the number of levels for averaging. It accepts
14862 an integer in the range 0-6. If set to @code{0}, the filter will have no
14863 effect. A value of @code{6} means the higher quality. For each increment of
14864 that value the speed drops by a factor of approximately 2.  Default value is
14865 @code{3}.
14866
14867 @item qp
14868 Force a constant quantization parameter. If not set, the filter will use the QP
14869 from the video stream (if available).
14870
14871 @item mode
14872 Set thresholding mode. Available modes are:
14873
14874 @table @samp
14875 @item hard
14876 Set hard thresholding (default).
14877 @item soft
14878 Set soft thresholding (better de-ringing effect, but likely blurrier).
14879 @end table
14880
14881 @item use_bframe_qp
14882 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
14883 option may cause flicker since the B-Frames have often larger QP. Default is
14884 @code{0} (not enabled).
14885 @end table
14886
14887 @anchor{subtitles}
14888 @section subtitles
14889
14890 Draw subtitles on top of input video using the libass library.
14891
14892 To enable compilation of this filter you need to configure FFmpeg with
14893 @code{--enable-libass}. This filter also requires a build with libavcodec and
14894 libavformat to convert the passed subtitles file to ASS (Advanced Substation
14895 Alpha) subtitles format.
14896
14897 The filter accepts the following options:
14898
14899 @table @option
14900 @item filename, f
14901 Set the filename of the subtitle file to read. It must be specified.
14902
14903 @item original_size
14904 Specify the size of the original video, the video for which the ASS file
14905 was composed. For the syntax of this option, check the
14906 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14907 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
14908 correctly scale the fonts if the aspect ratio has been changed.
14909
14910 @item fontsdir
14911 Set a directory path containing fonts that can be used by the filter.
14912 These fonts will be used in addition to whatever the font provider uses.
14913
14914 @item alpha
14915 Process alpha channel, by default alpha channel is untouched.
14916
14917 @item charenc
14918 Set subtitles input character encoding. @code{subtitles} filter only. Only
14919 useful if not UTF-8.
14920
14921 @item stream_index, si
14922 Set subtitles stream index. @code{subtitles} filter only.
14923
14924 @item force_style
14925 Override default style or script info parameters of the subtitles. It accepts a
14926 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
14927 @end table
14928
14929 If the first key is not specified, it is assumed that the first value
14930 specifies the @option{filename}.
14931
14932 For example, to render the file @file{sub.srt} on top of the input
14933 video, use the command:
14934 @example
14935 subtitles=sub.srt
14936 @end example
14937
14938 which is equivalent to:
14939 @example
14940 subtitles=filename=sub.srt
14941 @end example
14942
14943 To render the default subtitles stream from file @file{video.mkv}, use:
14944 @example
14945 subtitles=video.mkv
14946 @end example
14947
14948 To render the second subtitles stream from that file, use:
14949 @example
14950 subtitles=video.mkv:si=1
14951 @end example
14952
14953 To make the subtitles stream from @file{sub.srt} appear in transparent green
14954 @code{DejaVu Serif}, use:
14955 @example
14956 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HAA00FF00'
14957 @end example
14958
14959 @section super2xsai
14960
14961 Scale the input by 2x and smooth using the Super2xSaI (Scale and
14962 Interpolate) pixel art scaling algorithm.
14963
14964 Useful for enlarging pixel art images without reducing sharpness.
14965
14966 @section swaprect
14967
14968 Swap two rectangular objects in video.
14969
14970 This filter accepts the following options:
14971
14972 @table @option
14973 @item w
14974 Set object width.
14975
14976 @item h
14977 Set object height.
14978
14979 @item x1
14980 Set 1st rect x coordinate.
14981
14982 @item y1
14983 Set 1st rect y coordinate.
14984
14985 @item x2
14986 Set 2nd rect x coordinate.
14987
14988 @item y2
14989 Set 2nd rect y coordinate.
14990
14991 All expressions are evaluated once for each frame.
14992 @end table
14993
14994 The all options are expressions containing the following constants:
14995
14996 @table @option
14997 @item w
14998 @item h
14999 The input width and height.
15000
15001 @item a
15002 same as @var{w} / @var{h}
15003
15004 @item sar
15005 input sample aspect ratio
15006
15007 @item dar
15008 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
15009
15010 @item n
15011 The number of the input frame, starting from 0.
15012
15013 @item t
15014 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
15015
15016 @item pos
15017 the position in the file of the input frame, NAN if unknown
15018 @end table
15019
15020 @section swapuv
15021 Swap U & V plane.
15022
15023 @section telecine
15024
15025 Apply telecine process to the video.
15026
15027 This filter accepts the following options:
15028
15029 @table @option
15030 @item first_field
15031 @table @samp
15032 @item top, t
15033 top field first
15034 @item bottom, b
15035 bottom field first
15036 The default value is @code{top}.
15037 @end table
15038
15039 @item pattern
15040 A string of numbers representing the pulldown pattern you wish to apply.
15041 The default value is @code{23}.
15042 @end table
15043
15044 @example
15045 Some typical patterns:
15046
15047 NTSC output (30i):
15048 27.5p: 32222
15049 24p: 23 (classic)
15050 24p: 2332 (preferred)
15051 20p: 33
15052 18p: 334
15053 16p: 3444
15054
15055 PAL output (25i):
15056 27.5p: 12222
15057 24p: 222222222223 ("Euro pulldown")
15058 16.67p: 33
15059 16p: 33333334
15060 @end example
15061
15062 @section threshold
15063
15064 Apply threshold effect to video stream.
15065
15066 This filter needs four video streams to perform thresholding.
15067 First stream is stream we are filtering.
15068 Second stream is holding threshold values, third stream is holding min values,
15069 and last, fourth stream is holding max values.
15070
15071 The filter accepts the following option:
15072
15073 @table @option
15074 @item planes
15075 Set which planes will be processed, unprocessed planes will be copied.
15076 By default value 0xf, all planes will be processed.
15077 @end table
15078
15079 For example if first stream pixel's component value is less then threshold value
15080 of pixel component from 2nd threshold stream, third stream value will picked,
15081 otherwise fourth stream pixel component value will be picked.
15082
15083 Using color source filter one can perform various types of thresholding:
15084
15085 @subsection Examples
15086
15087 @itemize
15088 @item
15089 Binary threshold, using gray color as threshold:
15090 @example
15091 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
15092 @end example
15093
15094 @item
15095 Inverted binary threshold, using gray color as threshold:
15096 @example
15097 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
15098 @end example
15099
15100 @item
15101 Truncate binary threshold, using gray color as threshold:
15102 @example
15103 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
15104 @end example
15105
15106 @item
15107 Threshold to zero, using gray color as threshold:
15108 @example
15109 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
15110 @end example
15111
15112 @item
15113 Inverted threshold to zero, using gray color as threshold:
15114 @example
15115 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
15116 @end example
15117 @end itemize
15118
15119 @section thumbnail
15120 Select the most representative frame in a given sequence of consecutive frames.
15121
15122 The filter accepts the following options:
15123
15124 @table @option
15125 @item n
15126 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
15127 will pick one of them, and then handle the next batch of @var{n} frames until
15128 the end. Default is @code{100}.
15129 @end table
15130
15131 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
15132 value will result in a higher memory usage, so a high value is not recommended.
15133
15134 @subsection Examples
15135
15136 @itemize
15137 @item
15138 Extract one picture each 50 frames:
15139 @example
15140 thumbnail=50
15141 @end example
15142
15143 @item
15144 Complete example of a thumbnail creation with @command{ffmpeg}:
15145 @example
15146 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
15147 @end example
15148 @end itemize
15149
15150 @section tile
15151
15152 Tile several successive frames together.
15153
15154 The filter accepts the following options:
15155
15156 @table @option
15157
15158 @item layout
15159 Set the grid size (i.e. the number of lines and columns). For the syntax of
15160 this option, check the
15161 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15162
15163 @item nb_frames
15164 Set the maximum number of frames to render in the given area. It must be less
15165 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
15166 the area will be used.
15167
15168 @item margin
15169 Set the outer border margin in pixels.
15170
15171 @item padding
15172 Set the inner border thickness (i.e. the number of pixels between frames). For
15173 more advanced padding options (such as having different values for the edges),
15174 refer to the pad video filter.
15175
15176 @item color
15177 Specify the color of the unused area. For the syntax of this option, check the
15178 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
15179 The default value of @var{color} is "black".
15180
15181 @item overlap
15182 Set the number of frames to overlap when tiling several successive frames together.
15183 The value must be between @code{0} and @var{nb_frames - 1}.
15184
15185 @item init_padding
15186 Set the number of frames to initially be empty before displaying first output frame.
15187 This controls how soon will one get first output frame.
15188 The value must be between @code{0} and @var{nb_frames - 1}.
15189 @end table
15190
15191 @subsection Examples
15192
15193 @itemize
15194 @item
15195 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
15196 @example
15197 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
15198 @end example
15199 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
15200 duplicating each output frame to accommodate the originally detected frame
15201 rate.
15202
15203 @item
15204 Display @code{5} pictures in an area of @code{3x2} frames,
15205 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
15206 mixed flat and named options:
15207 @example
15208 tile=3x2:nb_frames=5:padding=7:margin=2
15209 @end example
15210 @end itemize
15211
15212 @section tinterlace
15213
15214 Perform various types of temporal field interlacing.
15215
15216 Frames are counted starting from 1, so the first input frame is
15217 considered odd.
15218
15219 The filter accepts the following options:
15220
15221 @table @option
15222
15223 @item mode
15224 Specify the mode of the interlacing. This option can also be specified
15225 as a value alone. See below for a list of values for this option.
15226
15227 Available values are:
15228
15229 @table @samp
15230 @item merge, 0
15231 Move odd frames into the upper field, even into the lower field,
15232 generating a double height frame at half frame rate.
15233 @example
15234  ------> time
15235 Input:
15236 Frame 1         Frame 2         Frame 3         Frame 4
15237
15238 11111           22222           33333           44444
15239 11111           22222           33333           44444
15240 11111           22222           33333           44444
15241 11111           22222           33333           44444
15242
15243 Output:
15244 11111                           33333
15245 22222                           44444
15246 11111                           33333
15247 22222                           44444
15248 11111                           33333
15249 22222                           44444
15250 11111                           33333
15251 22222                           44444
15252 @end example
15253
15254 @item drop_even, 1
15255 Only output odd frames, even frames are dropped, generating a frame with
15256 unchanged height at half frame rate.
15257
15258 @example
15259  ------> time
15260 Input:
15261 Frame 1         Frame 2         Frame 3         Frame 4
15262
15263 11111           22222           33333           44444
15264 11111           22222           33333           44444
15265 11111           22222           33333           44444
15266 11111           22222           33333           44444
15267
15268 Output:
15269 11111                           33333
15270 11111                           33333
15271 11111                           33333
15272 11111                           33333
15273 @end example
15274
15275 @item drop_odd, 2
15276 Only output even frames, odd frames are dropped, generating a frame with
15277 unchanged height at half frame rate.
15278
15279 @example
15280  ------> time
15281 Input:
15282 Frame 1         Frame 2         Frame 3         Frame 4
15283
15284 11111           22222           33333           44444
15285 11111           22222           33333           44444
15286 11111           22222           33333           44444
15287 11111           22222           33333           44444
15288
15289 Output:
15290                 22222                           44444
15291                 22222                           44444
15292                 22222                           44444
15293                 22222                           44444
15294 @end example
15295
15296 @item pad, 3
15297 Expand each frame to full height, but pad alternate lines with black,
15298 generating a frame with double height at the same input frame rate.
15299
15300 @example
15301  ------> time
15302 Input:
15303 Frame 1         Frame 2         Frame 3         Frame 4
15304
15305 11111           22222           33333           44444
15306 11111           22222           33333           44444
15307 11111           22222           33333           44444
15308 11111           22222           33333           44444
15309
15310 Output:
15311 11111           .....           33333           .....
15312 .....           22222           .....           44444
15313 11111           .....           33333           .....
15314 .....           22222           .....           44444
15315 11111           .....           33333           .....
15316 .....           22222           .....           44444
15317 11111           .....           33333           .....
15318 .....           22222           .....           44444
15319 @end example
15320
15321
15322 @item interleave_top, 4
15323 Interleave the upper field from odd frames with the lower field from
15324 even frames, generating a frame with unchanged height at half frame rate.
15325
15326 @example
15327  ------> time
15328 Input:
15329 Frame 1         Frame 2         Frame 3         Frame 4
15330
15331 11111<-         22222           33333<-         44444
15332 11111           22222<-         33333           44444<-
15333 11111<-         22222           33333<-         44444
15334 11111           22222<-         33333           44444<-
15335
15336 Output:
15337 11111                           33333
15338 22222                           44444
15339 11111                           33333
15340 22222                           44444
15341 @end example
15342
15343
15344 @item interleave_bottom, 5
15345 Interleave the lower field from odd frames with the upper field from
15346 even frames, generating a frame with unchanged height at half frame rate.
15347
15348 @example
15349  ------> time
15350 Input:
15351 Frame 1         Frame 2         Frame 3         Frame 4
15352
15353 11111           22222<-         33333           44444<-
15354 11111<-         22222           33333<-         44444
15355 11111           22222<-         33333           44444<-
15356 11111<-         22222           33333<-         44444
15357
15358 Output:
15359 22222                           44444
15360 11111                           33333
15361 22222                           44444
15362 11111                           33333
15363 @end example
15364
15365
15366 @item interlacex2, 6
15367 Double frame rate with unchanged height. Frames are inserted each
15368 containing the second temporal field from the previous input frame and
15369 the first temporal field from the next input frame. This mode relies on
15370 the top_field_first flag. Useful for interlaced video displays with no
15371 field synchronisation.
15372
15373 @example
15374  ------> time
15375 Input:
15376 Frame 1         Frame 2         Frame 3         Frame 4
15377
15378 11111           22222           33333           44444
15379  11111           22222           33333           44444
15380 11111           22222           33333           44444
15381  11111           22222           33333           44444
15382
15383 Output:
15384 11111   22222   22222   33333   33333   44444   44444
15385  11111   11111   22222   22222   33333   33333   44444
15386 11111   22222   22222   33333   33333   44444   44444
15387  11111   11111   22222   22222   33333   33333   44444
15388 @end example
15389
15390
15391 @item mergex2, 7
15392 Move odd frames into the upper field, even into the lower field,
15393 generating a double height frame at same frame rate.
15394
15395 @example
15396  ------> time
15397 Input:
15398 Frame 1         Frame 2         Frame 3         Frame 4
15399
15400 11111           22222           33333           44444
15401 11111           22222           33333           44444
15402 11111           22222           33333           44444
15403 11111           22222           33333           44444
15404
15405 Output:
15406 11111           33333           33333           55555
15407 22222           22222           44444           44444
15408 11111           33333           33333           55555
15409 22222           22222           44444           44444
15410 11111           33333           33333           55555
15411 22222           22222           44444           44444
15412 11111           33333           33333           55555
15413 22222           22222           44444           44444
15414 @end example
15415
15416 @end table
15417
15418 Numeric values are deprecated but are accepted for backward
15419 compatibility reasons.
15420
15421 Default mode is @code{merge}.
15422
15423 @item flags
15424 Specify flags influencing the filter process.
15425
15426 Available value for @var{flags} is:
15427
15428 @table @option
15429 @item low_pass_filter, vlfp
15430 Enable linear vertical low-pass filtering in the filter.
15431 Vertical low-pass filtering is required when creating an interlaced
15432 destination from a progressive source which contains high-frequency
15433 vertical detail. Filtering will reduce interlace 'twitter' and Moire
15434 patterning.
15435
15436 @item complex_filter, cvlfp
15437 Enable complex vertical low-pass filtering.
15438 This will slightly less reduce interlace 'twitter' and Moire
15439 patterning but better retain detail and subjective sharpness impression.
15440
15441 @end table
15442
15443 Vertical low-pass filtering can only be enabled for @option{mode}
15444 @var{interleave_top} and @var{interleave_bottom}.
15445
15446 @end table
15447
15448 @section tonemap
15449 Tone map colors from different dynamic ranges.
15450
15451 This filter expects data in single precision floating point, as it needs to
15452 operate on (and can output) out-of-range values. Another filter, such as
15453 @ref{zscale}, is needed to convert the resulting frame to a usable format.
15454
15455 The tonemapping algorithms implemented only work on linear light, so input
15456 data should be linearized beforehand (and possibly correctly tagged).
15457
15458 @example
15459 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
15460 @end example
15461
15462 @subsection Options
15463 The filter accepts the following options.
15464
15465 @table @option
15466 @item tonemap
15467 Set the tone map algorithm to use.
15468
15469 Possible values are:
15470 @table @var
15471 @item none
15472 Do not apply any tone map, only desaturate overbright pixels.
15473
15474 @item clip
15475 Hard-clip any out-of-range values. Use it for perfect color accuracy for
15476 in-range values, while distorting out-of-range values.
15477
15478 @item linear
15479 Stretch the entire reference gamut to a linear multiple of the display.
15480
15481 @item gamma
15482 Fit a logarithmic transfer between the tone curves.
15483
15484 @item reinhard
15485 Preserve overall image brightness with a simple curve, using nonlinear
15486 contrast, which results in flattening details and degrading color accuracy.
15487
15488 @item hable
15489 Preserve both dark and bright details better than @var{reinhard}, at the cost
15490 of slightly darkening everything. Use it when detail preservation is more
15491 important than color and brightness accuracy.
15492
15493 @item mobius
15494 Smoothly map out-of-range values, while retaining contrast and colors for
15495 in-range material as much as possible. Use it when color accuracy is more
15496 important than detail preservation.
15497 @end table
15498
15499 Default is none.
15500
15501 @item param
15502 Tune the tone mapping algorithm.
15503
15504 This affects the following algorithms:
15505 @table @var
15506 @item none
15507 Ignored.
15508
15509 @item linear
15510 Specifies the scale factor to use while stretching.
15511 Default to 1.0.
15512
15513 @item gamma
15514 Specifies the exponent of the function.
15515 Default to 1.8.
15516
15517 @item clip
15518 Specify an extra linear coefficient to multiply into the signal before clipping.
15519 Default to 1.0.
15520
15521 @item reinhard
15522 Specify the local contrast coefficient at the display peak.
15523 Default to 0.5, which means that in-gamut values will be about half as bright
15524 as when clipping.
15525
15526 @item hable
15527 Ignored.
15528
15529 @item mobius
15530 Specify the transition point from linear to mobius transform. Every value
15531 below this point is guaranteed to be mapped 1:1. The higher the value, the
15532 more accurate the result will be, at the cost of losing bright details.
15533 Default to 0.3, which due to the steep initial slope still preserves in-range
15534 colors fairly accurately.
15535 @end table
15536
15537 @item desat
15538 Apply desaturation for highlights that exceed this level of brightness. The
15539 higher the parameter, the more color information will be preserved. This
15540 setting helps prevent unnaturally blown-out colors for super-highlights, by
15541 (smoothly) turning into white instead. This makes images feel more natural,
15542 at the cost of reducing information about out-of-range colors.
15543
15544 The default of 2.0 is somewhat conservative and will mostly just apply to
15545 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
15546
15547 This option works only if the input frame has a supported color tag.
15548
15549 @item peak
15550 Override signal/nominal/reference peak with this value. Useful when the
15551 embedded peak information in display metadata is not reliable or when tone
15552 mapping from a lower range to a higher range.
15553 @end table
15554
15555 @section transpose
15556
15557 Transpose rows with columns in the input video and optionally flip it.
15558
15559 It accepts the following parameters:
15560
15561 @table @option
15562
15563 @item dir
15564 Specify the transposition direction.
15565
15566 Can assume the following values:
15567 @table @samp
15568 @item 0, 4, cclock_flip
15569 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
15570 @example
15571 L.R     L.l
15572 . . ->  . .
15573 l.r     R.r
15574 @end example
15575
15576 @item 1, 5, clock
15577 Rotate by 90 degrees clockwise, that is:
15578 @example
15579 L.R     l.L
15580 . . ->  . .
15581 l.r     r.R
15582 @end example
15583
15584 @item 2, 6, cclock
15585 Rotate by 90 degrees counterclockwise, that is:
15586 @example
15587 L.R     R.r
15588 . . ->  . .
15589 l.r     L.l
15590 @end example
15591
15592 @item 3, 7, clock_flip
15593 Rotate by 90 degrees clockwise and vertically flip, that is:
15594 @example
15595 L.R     r.R
15596 . . ->  . .
15597 l.r     l.L
15598 @end example
15599 @end table
15600
15601 For values between 4-7, the transposition is only done if the input
15602 video geometry is portrait and not landscape. These values are
15603 deprecated, the @code{passthrough} option should be used instead.
15604
15605 Numerical values are deprecated, and should be dropped in favor of
15606 symbolic constants.
15607
15608 @item passthrough
15609 Do not apply the transposition if the input geometry matches the one
15610 specified by the specified value. It accepts the following values:
15611 @table @samp
15612 @item none
15613 Always apply transposition.
15614 @item portrait
15615 Preserve portrait geometry (when @var{height} >= @var{width}).
15616 @item landscape
15617 Preserve landscape geometry (when @var{width} >= @var{height}).
15618 @end table
15619
15620 Default value is @code{none}.
15621 @end table
15622
15623 For example to rotate by 90 degrees clockwise and preserve portrait
15624 layout:
15625 @example
15626 transpose=dir=1:passthrough=portrait
15627 @end example
15628
15629 The command above can also be specified as:
15630 @example
15631 transpose=1:portrait
15632 @end example
15633
15634 @section trim
15635 Trim the input so that the output contains one continuous subpart of the input.
15636
15637 It accepts the following parameters:
15638 @table @option
15639 @item start
15640 Specify the time of the start of the kept section, i.e. the frame with the
15641 timestamp @var{start} will be the first frame in the output.
15642
15643 @item end
15644 Specify the time of the first frame that will be dropped, i.e. the frame
15645 immediately preceding the one with the timestamp @var{end} will be the last
15646 frame in the output.
15647
15648 @item start_pts
15649 This is the same as @var{start}, except this option sets the start timestamp
15650 in timebase units instead of seconds.
15651
15652 @item end_pts
15653 This is the same as @var{end}, except this option sets the end timestamp
15654 in timebase units instead of seconds.
15655
15656 @item duration
15657 The maximum duration of the output in seconds.
15658
15659 @item start_frame
15660 The number of the first frame that should be passed to the output.
15661
15662 @item end_frame
15663 The number of the first frame that should be dropped.
15664 @end table
15665
15666 @option{start}, @option{end}, and @option{duration} are expressed as time
15667 duration specifications; see
15668 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
15669 for the accepted syntax.
15670
15671 Note that the first two sets of the start/end options and the @option{duration}
15672 option look at the frame timestamp, while the _frame variants simply count the
15673 frames that pass through the filter. Also note that this filter does not modify
15674 the timestamps. If you wish for the output timestamps to start at zero, insert a
15675 setpts filter after the trim filter.
15676
15677 If multiple start or end options are set, this filter tries to be greedy and
15678 keep all the frames that match at least one of the specified constraints. To keep
15679 only the part that matches all the constraints at once, chain multiple trim
15680 filters.
15681
15682 The defaults are such that all the input is kept. So it is possible to set e.g.
15683 just the end values to keep everything before the specified time.
15684
15685 Examples:
15686 @itemize
15687 @item
15688 Drop everything except the second minute of input:
15689 @example
15690 ffmpeg -i INPUT -vf trim=60:120
15691 @end example
15692
15693 @item
15694 Keep only the first second:
15695 @example
15696 ffmpeg -i INPUT -vf trim=duration=1
15697 @end example
15698
15699 @end itemize
15700
15701 @section unpremultiply
15702 Apply alpha unpremultiply effect to input video stream using first plane
15703 of second stream as alpha.
15704
15705 Both streams must have same dimensions and same pixel format.
15706
15707 The filter accepts the following option:
15708
15709 @table @option
15710 @item planes
15711 Set which planes will be processed, unprocessed planes will be copied.
15712 By default value 0xf, all planes will be processed.
15713
15714 If the format has 1 or 2 components, then luma is bit 0.
15715 If the format has 3 or 4 components:
15716 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
15717 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
15718 If present, the alpha channel is always the last bit.
15719
15720 @item inplace
15721 Do not require 2nd input for processing, instead use alpha plane from input stream.
15722 @end table
15723
15724 @anchor{unsharp}
15725 @section unsharp
15726
15727 Sharpen or blur the input video.
15728
15729 It accepts the following parameters:
15730
15731 @table @option
15732 @item luma_msize_x, lx
15733 Set the luma matrix horizontal size. It must be an odd integer between
15734 3 and 23. The default value is 5.
15735
15736 @item luma_msize_y, ly
15737 Set the luma matrix vertical size. It must be an odd integer between 3
15738 and 23. The default value is 5.
15739
15740 @item luma_amount, la
15741 Set the luma effect strength. It must be a floating point number, reasonable
15742 values lay between -1.5 and 1.5.
15743
15744 Negative values will blur the input video, while positive values will
15745 sharpen it, a value of zero will disable the effect.
15746
15747 Default value is 1.0.
15748
15749 @item chroma_msize_x, cx
15750 Set the chroma matrix horizontal size. It must be an odd integer
15751 between 3 and 23. The default value is 5.
15752
15753 @item chroma_msize_y, cy
15754 Set the chroma matrix vertical size. It must be an odd integer
15755 between 3 and 23. The default value is 5.
15756
15757 @item chroma_amount, ca
15758 Set the chroma effect strength. It must be a floating point number, reasonable
15759 values lay between -1.5 and 1.5.
15760
15761 Negative values will blur the input video, while positive values will
15762 sharpen it, a value of zero will disable the effect.
15763
15764 Default value is 0.0.
15765
15766 @end table
15767
15768 All parameters are optional and default to the equivalent of the
15769 string '5:5:1.0:5:5:0.0'.
15770
15771 @subsection Examples
15772
15773 @itemize
15774 @item
15775 Apply strong luma sharpen effect:
15776 @example
15777 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
15778 @end example
15779
15780 @item
15781 Apply a strong blur of both luma and chroma parameters:
15782 @example
15783 unsharp=7:7:-2:7:7:-2
15784 @end example
15785 @end itemize
15786
15787 @section uspp
15788
15789 Apply ultra slow/simple postprocessing filter that compresses and decompresses
15790 the image at several (or - in the case of @option{quality} level @code{8} - all)
15791 shifts and average the results.
15792
15793 The way this differs from the behavior of spp is that uspp actually encodes &
15794 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
15795 DCT similar to MJPEG.
15796
15797 The filter accepts the following options:
15798
15799 @table @option
15800 @item quality
15801 Set quality. This option defines the number of levels for averaging. It accepts
15802 an integer in the range 0-8. If set to @code{0}, the filter will have no
15803 effect. A value of @code{8} means the higher quality. For each increment of
15804 that value the speed drops by a factor of approximately 2.  Default value is
15805 @code{3}.
15806
15807 @item qp
15808 Force a constant quantization parameter. If not set, the filter will use the QP
15809 from the video stream (if available).
15810 @end table
15811
15812 @section vaguedenoiser
15813
15814 Apply a wavelet based denoiser.
15815
15816 It transforms each frame from the video input into the wavelet domain,
15817 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
15818 the obtained coefficients. It does an inverse wavelet transform after.
15819 Due to wavelet properties, it should give a nice smoothed result, and
15820 reduced noise, without blurring picture features.
15821
15822 This filter accepts the following options:
15823
15824 @table @option
15825 @item threshold
15826 The filtering strength. The higher, the more filtered the video will be.
15827 Hard thresholding can use a higher threshold than soft thresholding
15828 before the video looks overfiltered. Default value is 2.
15829
15830 @item method
15831 The filtering method the filter will use.
15832
15833 It accepts the following values:
15834 @table @samp
15835 @item hard
15836 All values under the threshold will be zeroed.
15837
15838 @item soft
15839 All values under the threshold will be zeroed. All values above will be
15840 reduced by the threshold.
15841
15842 @item garrote
15843 Scales or nullifies coefficients - intermediary between (more) soft and
15844 (less) hard thresholding.
15845 @end table
15846
15847 Default is garrote.
15848
15849 @item nsteps
15850 Number of times, the wavelet will decompose the picture. Picture can't
15851 be decomposed beyond a particular point (typically, 8 for a 640x480
15852 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
15853
15854 @item percent
15855 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
15856
15857 @item planes
15858 A list of the planes to process. By default all planes are processed.
15859 @end table
15860
15861 @section vectorscope
15862
15863 Display 2 color component values in the two dimensional graph (which is called
15864 a vectorscope).
15865
15866 This filter accepts the following options:
15867
15868 @table @option
15869 @item mode, m
15870 Set vectorscope mode.
15871
15872 It accepts the following values:
15873 @table @samp
15874 @item gray
15875 Gray values are displayed on graph, higher brightness means more pixels have
15876 same component color value on location in graph. This is the default mode.
15877
15878 @item color
15879 Gray values are displayed on graph. Surrounding pixels values which are not
15880 present in video frame are drawn in gradient of 2 color components which are
15881 set by option @code{x} and @code{y}. The 3rd color component is static.
15882
15883 @item color2
15884 Actual color components values present in video frame are displayed on graph.
15885
15886 @item color3
15887 Similar as color2 but higher frequency of same values @code{x} and @code{y}
15888 on graph increases value of another color component, which is luminance by
15889 default values of @code{x} and @code{y}.
15890
15891 @item color4
15892 Actual colors present in video frame are displayed on graph. If two different
15893 colors map to same position on graph then color with higher value of component
15894 not present in graph is picked.
15895
15896 @item color5
15897 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
15898 component picked from radial gradient.
15899 @end table
15900
15901 @item x
15902 Set which color component will be represented on X-axis. Default is @code{1}.
15903
15904 @item y
15905 Set which color component will be represented on Y-axis. Default is @code{2}.
15906
15907 @item intensity, i
15908 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
15909 of color component which represents frequency of (X, Y) location in graph.
15910
15911 @item envelope, e
15912 @table @samp
15913 @item none
15914 No envelope, this is default.
15915
15916 @item instant
15917 Instant envelope, even darkest single pixel will be clearly highlighted.
15918
15919 @item peak
15920 Hold maximum and minimum values presented in graph over time. This way you
15921 can still spot out of range values without constantly looking at vectorscope.
15922
15923 @item peak+instant
15924 Peak and instant envelope combined together.
15925 @end table
15926
15927 @item graticule, g
15928 Set what kind of graticule to draw.
15929 @table @samp
15930 @item none
15931 @item green
15932 @item color
15933 @end table
15934
15935 @item opacity, o
15936 Set graticule opacity.
15937
15938 @item flags, f
15939 Set graticule flags.
15940
15941 @table @samp
15942 @item white
15943 Draw graticule for white point.
15944
15945 @item black
15946 Draw graticule for black point.
15947
15948 @item name
15949 Draw color points short names.
15950 @end table
15951
15952 @item bgopacity, b
15953 Set background opacity.
15954
15955 @item lthreshold, l
15956 Set low threshold for color component not represented on X or Y axis.
15957 Values lower than this value will be ignored. Default is 0.
15958 Note this value is multiplied with actual max possible value one pixel component
15959 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
15960 is 0.1 * 255 = 25.
15961
15962 @item hthreshold, h
15963 Set high threshold for color component not represented on X or Y axis.
15964 Values higher than this value will be ignored. Default is 1.
15965 Note this value is multiplied with actual max possible value one pixel component
15966 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
15967 is 0.9 * 255 = 230.
15968
15969 @item colorspace, c
15970 Set what kind of colorspace to use when drawing graticule.
15971 @table @samp
15972 @item auto
15973 @item 601
15974 @item 709
15975 @end table
15976 Default is auto.
15977 @end table
15978
15979 @anchor{vidstabdetect}
15980 @section vidstabdetect
15981
15982 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
15983 @ref{vidstabtransform} for pass 2.
15984
15985 This filter generates a file with relative translation and rotation
15986 transform information about subsequent frames, which is then used by
15987 the @ref{vidstabtransform} filter.
15988
15989 To enable compilation of this filter you need to configure FFmpeg with
15990 @code{--enable-libvidstab}.
15991
15992 This filter accepts the following options:
15993
15994 @table @option
15995 @item result
15996 Set the path to the file used to write the transforms information.
15997 Default value is @file{transforms.trf}.
15998
15999 @item shakiness
16000 Set how shaky the video is and how quick the camera is. It accepts an
16001 integer in the range 1-10, a value of 1 means little shakiness, a
16002 value of 10 means strong shakiness. Default value is 5.
16003
16004 @item accuracy
16005 Set the accuracy of the detection process. It must be a value in the
16006 range 1-15. A value of 1 means low accuracy, a value of 15 means high
16007 accuracy. Default value is 15.
16008
16009 @item stepsize
16010 Set stepsize of the search process. The region around minimum is
16011 scanned with 1 pixel resolution. Default value is 6.
16012
16013 @item mincontrast
16014 Set minimum contrast. Below this value a local measurement field is
16015 discarded. Must be a floating point value in the range 0-1. Default
16016 value is 0.3.
16017
16018 @item tripod
16019 Set reference frame number for tripod mode.
16020
16021 If enabled, the motion of the frames is compared to a reference frame
16022 in the filtered stream, identified by the specified number. The idea
16023 is to compensate all movements in a more-or-less static scene and keep
16024 the camera view absolutely still.
16025
16026 If set to 0, it is disabled. The frames are counted starting from 1.
16027
16028 @item show
16029 Show fields and transforms in the resulting frames. It accepts an
16030 integer in the range 0-2. Default value is 0, which disables any
16031 visualization.
16032 @end table
16033
16034 @subsection Examples
16035
16036 @itemize
16037 @item
16038 Use default values:
16039 @example
16040 vidstabdetect
16041 @end example
16042
16043 @item
16044 Analyze strongly shaky movie and put the results in file
16045 @file{mytransforms.trf}:
16046 @example
16047 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
16048 @end example
16049
16050 @item
16051 Visualize the result of internal transformations in the resulting
16052 video:
16053 @example
16054 vidstabdetect=show=1
16055 @end example
16056
16057 @item
16058 Analyze a video with medium shakiness using @command{ffmpeg}:
16059 @example
16060 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
16061 @end example
16062 @end itemize
16063
16064 @anchor{vidstabtransform}
16065 @section vidstabtransform
16066
16067 Video stabilization/deshaking: pass 2 of 2,
16068 see @ref{vidstabdetect} for pass 1.
16069
16070 Read a file with transform information for each frame and
16071 apply/compensate them. Together with the @ref{vidstabdetect}
16072 filter this can be used to deshake videos. See also
16073 @url{http://public.hronopik.de/vid.stab}. It is important to also use
16074 the @ref{unsharp} filter, see below.
16075
16076 To enable compilation of this filter you need to configure FFmpeg with
16077 @code{--enable-libvidstab}.
16078
16079 @subsection Options
16080
16081 @table @option
16082 @item input
16083 Set path to the file used to read the transforms. Default value is
16084 @file{transforms.trf}.
16085
16086 @item smoothing
16087 Set the number of frames (value*2 + 1) used for lowpass filtering the
16088 camera movements. Default value is 10.
16089
16090 For example a number of 10 means that 21 frames are used (10 in the
16091 past and 10 in the future) to smoothen the motion in the video. A
16092 larger value leads to a smoother video, but limits the acceleration of
16093 the camera (pan/tilt movements). 0 is a special case where a static
16094 camera is simulated.
16095
16096 @item optalgo
16097 Set the camera path optimization algorithm.
16098
16099 Accepted values are:
16100 @table @samp
16101 @item gauss
16102 gaussian kernel low-pass filter on camera motion (default)
16103 @item avg
16104 averaging on transformations
16105 @end table
16106
16107 @item maxshift
16108 Set maximal number of pixels to translate frames. Default value is -1,
16109 meaning no limit.
16110
16111 @item maxangle
16112 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
16113 value is -1, meaning no limit.
16114
16115 @item crop
16116 Specify how to deal with borders that may be visible due to movement
16117 compensation.
16118
16119 Available values are:
16120 @table @samp
16121 @item keep
16122 keep image information from previous frame (default)
16123 @item black
16124 fill the border black
16125 @end table
16126
16127 @item invert
16128 Invert transforms if set to 1. Default value is 0.
16129
16130 @item relative
16131 Consider transforms as relative to previous frame if set to 1,
16132 absolute if set to 0. Default value is 0.
16133
16134 @item zoom
16135 Set percentage to zoom. A positive value will result in a zoom-in
16136 effect, a negative value in a zoom-out effect. Default value is 0 (no
16137 zoom).
16138
16139 @item optzoom
16140 Set optimal zooming to avoid borders.
16141
16142 Accepted values are:
16143 @table @samp
16144 @item 0
16145 disabled
16146 @item 1
16147 optimal static zoom value is determined (only very strong movements
16148 will lead to visible borders) (default)
16149 @item 2
16150 optimal adaptive zoom value is determined (no borders will be
16151 visible), see @option{zoomspeed}
16152 @end table
16153
16154 Note that the value given at zoom is added to the one calculated here.
16155
16156 @item zoomspeed
16157 Set percent to zoom maximally each frame (enabled when
16158 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
16159 0.25.
16160
16161 @item interpol
16162 Specify type of interpolation.
16163
16164 Available values are:
16165 @table @samp
16166 @item no
16167 no interpolation
16168 @item linear
16169 linear only horizontal
16170 @item bilinear
16171 linear in both directions (default)
16172 @item bicubic
16173 cubic in both directions (slow)
16174 @end table
16175
16176 @item tripod
16177 Enable virtual tripod mode if set to 1, which is equivalent to
16178 @code{relative=0:smoothing=0}. Default value is 0.
16179
16180 Use also @code{tripod} option of @ref{vidstabdetect}.
16181
16182 @item debug
16183 Increase log verbosity if set to 1. Also the detected global motions
16184 are written to the temporary file @file{global_motions.trf}. Default
16185 value is 0.
16186 @end table
16187
16188 @subsection Examples
16189
16190 @itemize
16191 @item
16192 Use @command{ffmpeg} for a typical stabilization with default values:
16193 @example
16194 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
16195 @end example
16196
16197 Note the use of the @ref{unsharp} filter which is always recommended.
16198
16199 @item
16200 Zoom in a bit more and load transform data from a given file:
16201 @example
16202 vidstabtransform=zoom=5:input="mytransforms.trf"
16203 @end example
16204
16205 @item
16206 Smoothen the video even more:
16207 @example
16208 vidstabtransform=smoothing=30
16209 @end example
16210 @end itemize
16211
16212 @section vflip
16213
16214 Flip the input video vertically.
16215
16216 For example, to vertically flip a video with @command{ffmpeg}:
16217 @example
16218 ffmpeg -i in.avi -vf "vflip" out.avi
16219 @end example
16220
16221 @anchor{vignette}
16222 @section vignette
16223
16224 Make or reverse a natural vignetting effect.
16225
16226 The filter accepts the following options:
16227
16228 @table @option
16229 @item angle, a
16230 Set lens angle expression as a number of radians.
16231
16232 The value is clipped in the @code{[0,PI/2]} range.
16233
16234 Default value: @code{"PI/5"}
16235
16236 @item x0
16237 @item y0
16238 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
16239 by default.
16240
16241 @item mode
16242 Set forward/backward mode.
16243
16244 Available modes are:
16245 @table @samp
16246 @item forward
16247 The larger the distance from the central point, the darker the image becomes.
16248
16249 @item backward
16250 The larger the distance from the central point, the brighter the image becomes.
16251 This can be used to reverse a vignette effect, though there is no automatic
16252 detection to extract the lens @option{angle} and other settings (yet). It can
16253 also be used to create a burning effect.
16254 @end table
16255
16256 Default value is @samp{forward}.
16257
16258 @item eval
16259 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
16260
16261 It accepts the following values:
16262 @table @samp
16263 @item init
16264 Evaluate expressions only once during the filter initialization.
16265
16266 @item frame
16267 Evaluate expressions for each incoming frame. This is way slower than the
16268 @samp{init} mode since it requires all the scalers to be re-computed, but it
16269 allows advanced dynamic expressions.
16270 @end table
16271
16272 Default value is @samp{init}.
16273
16274 @item dither
16275 Set dithering to reduce the circular banding effects. Default is @code{1}
16276 (enabled).
16277
16278 @item aspect
16279 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
16280 Setting this value to the SAR of the input will make a rectangular vignetting
16281 following the dimensions of the video.
16282
16283 Default is @code{1/1}.
16284 @end table
16285
16286 @subsection Expressions
16287
16288 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
16289 following parameters.
16290
16291 @table @option
16292 @item w
16293 @item h
16294 input width and height
16295
16296 @item n
16297 the number of input frame, starting from 0
16298
16299 @item pts
16300 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
16301 @var{TB} units, NAN if undefined
16302
16303 @item r
16304 frame rate of the input video, NAN if the input frame rate is unknown
16305
16306 @item t
16307 the PTS (Presentation TimeStamp) of the filtered video frame,
16308 expressed in seconds, NAN if undefined
16309
16310 @item tb
16311 time base of the input video
16312 @end table
16313
16314
16315 @subsection Examples
16316
16317 @itemize
16318 @item
16319 Apply simple strong vignetting effect:
16320 @example
16321 vignette=PI/4
16322 @end example
16323
16324 @item
16325 Make a flickering vignetting:
16326 @example
16327 vignette='PI/4+random(1)*PI/50':eval=frame
16328 @end example
16329
16330 @end itemize
16331
16332 @section vmafmotion
16333
16334 Obtain the average vmaf motion score of a video.
16335 It is one of the component filters of VMAF.
16336
16337 The obtained average motion score is printed through the logging system.
16338
16339 In the below example the input file @file{ref.mpg} is being processed and score
16340 is computed.
16341
16342 @example
16343 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
16344 @end example
16345
16346 @section vstack
16347 Stack input videos vertically.
16348
16349 All streams must be of same pixel format and of same width.
16350
16351 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
16352 to create same output.
16353
16354 The filter accept the following option:
16355
16356 @table @option
16357 @item inputs
16358 Set number of input streams. Default is 2.
16359
16360 @item shortest
16361 If set to 1, force the output to terminate when the shortest input
16362 terminates. Default value is 0.
16363 @end table
16364
16365 @section w3fdif
16366
16367 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
16368 Deinterlacing Filter").
16369
16370 Based on the process described by Martin Weston for BBC R&D, and
16371 implemented based on the de-interlace algorithm written by Jim
16372 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
16373 uses filter coefficients calculated by BBC R&D.
16374
16375 There are two sets of filter coefficients, so called "simple":
16376 and "complex". Which set of filter coefficients is used can
16377 be set by passing an optional parameter:
16378
16379 @table @option
16380 @item filter
16381 Set the interlacing filter coefficients. Accepts one of the following values:
16382
16383 @table @samp
16384 @item simple
16385 Simple filter coefficient set.
16386 @item complex
16387 More-complex filter coefficient set.
16388 @end table
16389 Default value is @samp{complex}.
16390
16391 @item deint
16392 Specify which frames to deinterlace. Accept one of the following values:
16393
16394 @table @samp
16395 @item all
16396 Deinterlace all frames,
16397 @item interlaced
16398 Only deinterlace frames marked as interlaced.
16399 @end table
16400
16401 Default value is @samp{all}.
16402 @end table
16403
16404 @section waveform
16405 Video waveform monitor.
16406
16407 The waveform monitor plots color component intensity. By default luminance
16408 only. Each column of the waveform corresponds to a column of pixels in the
16409 source video.
16410
16411 It accepts the following options:
16412
16413 @table @option
16414 @item mode, m
16415 Can be either @code{row}, or @code{column}. Default is @code{column}.
16416 In row mode, the graph on the left side represents color component value 0 and
16417 the right side represents value = 255. In column mode, the top side represents
16418 color component value = 0 and bottom side represents value = 255.
16419
16420 @item intensity, i
16421 Set intensity. Smaller values are useful to find out how many values of the same
16422 luminance are distributed across input rows/columns.
16423 Default value is @code{0.04}. Allowed range is [0, 1].
16424
16425 @item mirror, r
16426 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
16427 In mirrored mode, higher values will be represented on the left
16428 side for @code{row} mode and at the top for @code{column} mode. Default is
16429 @code{1} (mirrored).
16430
16431 @item display, d
16432 Set display mode.
16433 It accepts the following values:
16434 @table @samp
16435 @item overlay
16436 Presents information identical to that in the @code{parade}, except
16437 that the graphs representing color components are superimposed directly
16438 over one another.
16439
16440 This display mode makes it easier to spot relative differences or similarities
16441 in overlapping areas of the color components that are supposed to be identical,
16442 such as neutral whites, grays, or blacks.
16443
16444 @item stack
16445 Display separate graph for the color components side by side in
16446 @code{row} mode or one below the other in @code{column} mode.
16447
16448 @item parade
16449 Display separate graph for the color components side by side in
16450 @code{column} mode or one below the other in @code{row} mode.
16451
16452 Using this display mode makes it easy to spot color casts in the highlights
16453 and shadows of an image, by comparing the contours of the top and the bottom
16454 graphs of each waveform. Since whites, grays, and blacks are characterized
16455 by exactly equal amounts of red, green, and blue, neutral areas of the picture
16456 should display three waveforms of roughly equal width/height. If not, the
16457 correction is easy to perform by making level adjustments the three waveforms.
16458 @end table
16459 Default is @code{stack}.
16460
16461 @item components, c
16462 Set which color components to display. Default is 1, which means only luminance
16463 or red color component if input is in RGB colorspace. If is set for example to
16464 7 it will display all 3 (if) available color components.
16465
16466 @item envelope, e
16467 @table @samp
16468 @item none
16469 No envelope, this is default.
16470
16471 @item instant
16472 Instant envelope, minimum and maximum values presented in graph will be easily
16473 visible even with small @code{step} value.
16474
16475 @item peak
16476 Hold minimum and maximum values presented in graph across time. This way you
16477 can still spot out of range values without constantly looking at waveforms.
16478
16479 @item peak+instant
16480 Peak and instant envelope combined together.
16481 @end table
16482
16483 @item filter, f
16484 @table @samp
16485 @item lowpass
16486 No filtering, this is default.
16487
16488 @item flat
16489 Luma and chroma combined together.
16490
16491 @item aflat
16492 Similar as above, but shows difference between blue and red chroma.
16493
16494 @item chroma
16495 Displays only chroma.
16496
16497 @item color
16498 Displays actual color value on waveform.
16499
16500 @item acolor
16501 Similar as above, but with luma showing frequency of chroma values.
16502 @end table
16503
16504 @item graticule, g
16505 Set which graticule to display.
16506
16507 @table @samp
16508 @item none
16509 Do not display graticule.
16510
16511 @item green
16512 Display green graticule showing legal broadcast ranges.
16513 @end table
16514
16515 @item opacity, o
16516 Set graticule opacity.
16517
16518 @item flags, fl
16519 Set graticule flags.
16520
16521 @table @samp
16522 @item numbers
16523 Draw numbers above lines. By default enabled.
16524
16525 @item dots
16526 Draw dots instead of lines.
16527 @end table
16528
16529 @item scale, s
16530 Set scale used for displaying graticule.
16531
16532 @table @samp
16533 @item digital
16534 @item millivolts
16535 @item ire
16536 @end table
16537 Default is digital.
16538
16539 @item bgopacity, b
16540 Set background opacity.
16541 @end table
16542
16543 @section weave, doubleweave
16544
16545 The @code{weave} takes a field-based video input and join
16546 each two sequential fields into single frame, producing a new double
16547 height clip with half the frame rate and half the frame count.
16548
16549 The @code{doubleweave} works same as @code{weave} but without
16550 halving frame rate and frame count.
16551
16552 It accepts the following option:
16553
16554 @table @option
16555 @item first_field
16556 Set first field. Available values are:
16557
16558 @table @samp
16559 @item top, t
16560 Set the frame as top-field-first.
16561
16562 @item bottom, b
16563 Set the frame as bottom-field-first.
16564 @end table
16565 @end table
16566
16567 @subsection Examples
16568
16569 @itemize
16570 @item
16571 Interlace video using @ref{select} and @ref{separatefields} filter:
16572 @example
16573 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
16574 @end example
16575 @end itemize
16576
16577 @section xbr
16578 Apply the xBR high-quality magnification filter which is designed for pixel
16579 art. It follows a set of edge-detection rules, see
16580 @url{http://www.libretro.com/forums/viewtopic.php?f=6&t=134}.
16581
16582 It accepts the following option:
16583
16584 @table @option
16585 @item n
16586 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
16587 @code{3xBR} and @code{4} for @code{4xBR}.
16588 Default is @code{3}.
16589 @end table
16590
16591 @anchor{yadif}
16592 @section yadif
16593
16594 Deinterlace the input video ("yadif" means "yet another deinterlacing
16595 filter").
16596
16597 It accepts the following parameters:
16598
16599
16600 @table @option
16601
16602 @item mode
16603 The interlacing mode to adopt. It accepts one of the following values:
16604
16605 @table @option
16606 @item 0, send_frame
16607 Output one frame for each frame.
16608 @item 1, send_field
16609 Output one frame for each field.
16610 @item 2, send_frame_nospatial
16611 Like @code{send_frame}, but it skips the spatial interlacing check.
16612 @item 3, send_field_nospatial
16613 Like @code{send_field}, but it skips the spatial interlacing check.
16614 @end table
16615
16616 The default value is @code{send_frame}.
16617
16618 @item parity
16619 The picture field parity assumed for the input interlaced video. It accepts one
16620 of the following values:
16621
16622 @table @option
16623 @item 0, tff
16624 Assume the top field is first.
16625 @item 1, bff
16626 Assume the bottom field is first.
16627 @item -1, auto
16628 Enable automatic detection of field parity.
16629 @end table
16630
16631 The default value is @code{auto}.
16632 If the interlacing is unknown or the decoder does not export this information,
16633 top field first will be assumed.
16634
16635 @item deint
16636 Specify which frames to deinterlace. Accept one of the following
16637 values:
16638
16639 @table @option
16640 @item 0, all
16641 Deinterlace all frames.
16642 @item 1, interlaced
16643 Only deinterlace frames marked as interlaced.
16644 @end table
16645
16646 The default value is @code{all}.
16647 @end table
16648
16649 @section zoompan
16650
16651 Apply Zoom & Pan effect.
16652
16653 This filter accepts the following options:
16654
16655 @table @option
16656 @item zoom, z
16657 Set the zoom expression. Default is 1.
16658
16659 @item x
16660 @item y
16661 Set the x and y expression. Default is 0.
16662
16663 @item d
16664 Set the duration expression in number of frames.
16665 This sets for how many number of frames effect will last for
16666 single input image.
16667
16668 @item s
16669 Set the output image size, default is 'hd720'.
16670
16671 @item fps
16672 Set the output frame rate, default is '25'.
16673 @end table
16674
16675 Each expression can contain the following constants:
16676
16677 @table @option
16678 @item in_w, iw
16679 Input width.
16680
16681 @item in_h, ih
16682 Input height.
16683
16684 @item out_w, ow
16685 Output width.
16686
16687 @item out_h, oh
16688 Output height.
16689
16690 @item in
16691 Input frame count.
16692
16693 @item on
16694 Output frame count.
16695
16696 @item x
16697 @item y
16698 Last calculated 'x' and 'y' position from 'x' and 'y' expression
16699 for current input frame.
16700
16701 @item px
16702 @item py
16703 'x' and 'y' of last output frame of previous input frame or 0 when there was
16704 not yet such frame (first input frame).
16705
16706 @item zoom
16707 Last calculated zoom from 'z' expression for current input frame.
16708
16709 @item pzoom
16710 Last calculated zoom of last output frame of previous input frame.
16711
16712 @item duration
16713 Number of output frames for current input frame. Calculated from 'd' expression
16714 for each input frame.
16715
16716 @item pduration
16717 number of output frames created for previous input frame
16718
16719 @item a
16720 Rational number: input width / input height
16721
16722 @item sar
16723 sample aspect ratio
16724
16725 @item dar
16726 display aspect ratio
16727
16728 @end table
16729
16730 @subsection Examples
16731
16732 @itemize
16733 @item
16734 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
16735 @example
16736 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
16737 @end example
16738
16739 @item
16740 Zoom-in up to 1.5 and pan always at center of picture:
16741 @example
16742 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
16743 @end example
16744
16745 @item
16746 Same as above but without pausing:
16747 @example
16748 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
16749 @end example
16750 @end itemize
16751
16752 @anchor{zscale}
16753 @section zscale
16754 Scale (resize) the input video, using the z.lib library:
16755 https://github.com/sekrit-twc/zimg.
16756
16757 The zscale filter forces the output display aspect ratio to be the same
16758 as the input, by changing the output sample aspect ratio.
16759
16760 If the input image format is different from the format requested by
16761 the next filter, the zscale filter will convert the input to the
16762 requested format.
16763
16764 @subsection Options
16765 The filter accepts the following options.
16766
16767 @table @option
16768 @item width, w
16769 @item height, h
16770 Set the output video dimension expression. Default value is the input
16771 dimension.
16772
16773 If the @var{width} or @var{w} value is 0, the input width is used for
16774 the output. If the @var{height} or @var{h} value is 0, the input height
16775 is used for the output.
16776
16777 If one and only one of the values is -n with n >= 1, the zscale filter
16778 will use a value that maintains the aspect ratio of the input image,
16779 calculated from the other specified dimension. After that it will,
16780 however, make sure that the calculated dimension is divisible by n and
16781 adjust the value if necessary.
16782
16783 If both values are -n with n >= 1, the behavior will be identical to
16784 both values being set to 0 as previously detailed.
16785
16786 See below for the list of accepted constants for use in the dimension
16787 expression.
16788
16789 @item size, s
16790 Set the video size. For the syntax of this option, check the
16791 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16792
16793 @item dither, d
16794 Set the dither type.
16795
16796 Possible values are:
16797 @table @var
16798 @item none
16799 @item ordered
16800 @item random
16801 @item error_diffusion
16802 @end table
16803
16804 Default is none.
16805
16806 @item filter, f
16807 Set the resize filter type.
16808
16809 Possible values are:
16810 @table @var
16811 @item point
16812 @item bilinear
16813 @item bicubic
16814 @item spline16
16815 @item spline36
16816 @item lanczos
16817 @end table
16818
16819 Default is bilinear.
16820
16821 @item range, r
16822 Set the color range.
16823
16824 Possible values are:
16825 @table @var
16826 @item input
16827 @item limited
16828 @item full
16829 @end table
16830
16831 Default is same as input.
16832
16833 @item primaries, p
16834 Set the color primaries.
16835
16836 Possible values are:
16837 @table @var
16838 @item input
16839 @item 709
16840 @item unspecified
16841 @item 170m
16842 @item 240m
16843 @item 2020
16844 @end table
16845
16846 Default is same as input.
16847
16848 @item transfer, t
16849 Set the transfer characteristics.
16850
16851 Possible values are:
16852 @table @var
16853 @item input
16854 @item 709
16855 @item unspecified
16856 @item 601
16857 @item linear
16858 @item 2020_10
16859 @item 2020_12
16860 @item smpte2084
16861 @item iec61966-2-1
16862 @item arib-std-b67
16863 @end table
16864
16865 Default is same as input.
16866
16867 @item matrix, m
16868 Set the colorspace matrix.
16869
16870 Possible value are:
16871 @table @var
16872 @item input
16873 @item 709
16874 @item unspecified
16875 @item 470bg
16876 @item 170m
16877 @item 2020_ncl
16878 @item 2020_cl
16879 @end table
16880
16881 Default is same as input.
16882
16883 @item rangein, rin
16884 Set the input color range.
16885
16886 Possible values are:
16887 @table @var
16888 @item input
16889 @item limited
16890 @item full
16891 @end table
16892
16893 Default is same as input.
16894
16895 @item primariesin, pin
16896 Set the input color primaries.
16897
16898 Possible values are:
16899 @table @var
16900 @item input
16901 @item 709
16902 @item unspecified
16903 @item 170m
16904 @item 240m
16905 @item 2020
16906 @end table
16907
16908 Default is same as input.
16909
16910 @item transferin, tin
16911 Set the input transfer characteristics.
16912
16913 Possible values are:
16914 @table @var
16915 @item input
16916 @item 709
16917 @item unspecified
16918 @item 601
16919 @item linear
16920 @item 2020_10
16921 @item 2020_12
16922 @end table
16923
16924 Default is same as input.
16925
16926 @item matrixin, min
16927 Set the input colorspace matrix.
16928
16929 Possible value are:
16930 @table @var
16931 @item input
16932 @item 709
16933 @item unspecified
16934 @item 470bg
16935 @item 170m
16936 @item 2020_ncl
16937 @item 2020_cl
16938 @end table
16939
16940 @item chromal, c
16941 Set the output chroma location.
16942
16943 Possible values are:
16944 @table @var
16945 @item input
16946 @item left
16947 @item center
16948 @item topleft
16949 @item top
16950 @item bottomleft
16951 @item bottom
16952 @end table
16953
16954 @item chromalin, cin
16955 Set the input chroma location.
16956
16957 Possible values are:
16958 @table @var
16959 @item input
16960 @item left
16961 @item center
16962 @item topleft
16963 @item top
16964 @item bottomleft
16965 @item bottom
16966 @end table
16967
16968 @item npl
16969 Set the nominal peak luminance.
16970 @end table
16971
16972 The values of the @option{w} and @option{h} options are expressions
16973 containing the following constants:
16974
16975 @table @var
16976 @item in_w
16977 @item in_h
16978 The input width and height
16979
16980 @item iw
16981 @item ih
16982 These are the same as @var{in_w} and @var{in_h}.
16983
16984 @item out_w
16985 @item out_h
16986 The output (scaled) width and height
16987
16988 @item ow
16989 @item oh
16990 These are the same as @var{out_w} and @var{out_h}
16991
16992 @item a
16993 The same as @var{iw} / @var{ih}
16994
16995 @item sar
16996 input sample aspect ratio
16997
16998 @item dar
16999 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
17000
17001 @item hsub
17002 @item vsub
17003 horizontal and vertical input chroma subsample values. For example for the
17004 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17005
17006 @item ohsub
17007 @item ovsub
17008 horizontal and vertical output chroma subsample values. For example for the
17009 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17010 @end table
17011
17012 @table @option
17013 @end table
17014
17015 @c man end VIDEO FILTERS
17016
17017 @chapter Video Sources
17018 @c man begin VIDEO SOURCES
17019
17020 Below is a description of the currently available video sources.
17021
17022 @section buffer
17023
17024 Buffer video frames, and make them available to the filter chain.
17025
17026 This source is mainly intended for a programmatic use, in particular
17027 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
17028
17029 It accepts the following parameters:
17030
17031 @table @option
17032
17033 @item video_size
17034 Specify the size (width and height) of the buffered video frames. For the
17035 syntax of this option, check the
17036 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17037
17038 @item width
17039 The input video width.
17040
17041 @item height
17042 The input video height.
17043
17044 @item pix_fmt
17045 A string representing the pixel format of the buffered video frames.
17046 It may be a number corresponding to a pixel format, or a pixel format
17047 name.
17048
17049 @item time_base
17050 Specify the timebase assumed by the timestamps of the buffered frames.
17051
17052 @item frame_rate
17053 Specify the frame rate expected for the video stream.
17054
17055 @item pixel_aspect, sar
17056 The sample (pixel) aspect ratio of the input video.
17057
17058 @item sws_param
17059 Specify the optional parameters to be used for the scale filter which
17060 is automatically inserted when an input change is detected in the
17061 input size or format.
17062
17063 @item hw_frames_ctx
17064 When using a hardware pixel format, this should be a reference to an
17065 AVHWFramesContext describing input frames.
17066 @end table
17067
17068 For example:
17069 @example
17070 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
17071 @end example
17072
17073 will instruct the source to accept video frames with size 320x240 and
17074 with format "yuv410p", assuming 1/24 as the timestamps timebase and
17075 square pixels (1:1 sample aspect ratio).
17076 Since the pixel format with name "yuv410p" corresponds to the number 6
17077 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
17078 this example corresponds to:
17079 @example
17080 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
17081 @end example
17082
17083 Alternatively, the options can be specified as a flat string, but this
17084 syntax is deprecated:
17085
17086 @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}]
17087
17088 @section cellauto
17089
17090 Create a pattern generated by an elementary cellular automaton.
17091
17092 The initial state of the cellular automaton can be defined through the
17093 @option{filename} and @option{pattern} options. If such options are
17094 not specified an initial state is created randomly.
17095
17096 At each new frame a new row in the video is filled with the result of
17097 the cellular automaton next generation. The behavior when the whole
17098 frame is filled is defined by the @option{scroll} option.
17099
17100 This source accepts the following options:
17101
17102 @table @option
17103 @item filename, f
17104 Read the initial cellular automaton state, i.e. the starting row, from
17105 the specified file.
17106 In the file, each non-whitespace character is considered an alive
17107 cell, a newline will terminate the row, and further characters in the
17108 file will be ignored.
17109
17110 @item pattern, p
17111 Read the initial cellular automaton state, i.e. the starting row, from
17112 the specified string.
17113
17114 Each non-whitespace character in the string is considered an alive
17115 cell, a newline will terminate the row, and further characters in the
17116 string will be ignored.
17117
17118 @item rate, r
17119 Set the video rate, that is the number of frames generated per second.
17120 Default is 25.
17121
17122 @item random_fill_ratio, ratio
17123 Set the random fill ratio for the initial cellular automaton row. It
17124 is a floating point number value ranging from 0 to 1, defaults to
17125 1/PHI.
17126
17127 This option is ignored when a file or a pattern is specified.
17128
17129 @item random_seed, seed
17130 Set the seed for filling randomly the initial row, must be an integer
17131 included between 0 and UINT32_MAX. If not specified, or if explicitly
17132 set to -1, the filter will try to use a good random seed on a best
17133 effort basis.
17134
17135 @item rule
17136 Set the cellular automaton rule, it is a number ranging from 0 to 255.
17137 Default value is 110.
17138
17139 @item size, s
17140 Set the size of the output video. For the syntax of this option, check the
17141 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17142
17143 If @option{filename} or @option{pattern} is specified, the size is set
17144 by default to the width of the specified initial state row, and the
17145 height is set to @var{width} * PHI.
17146
17147 If @option{size} is set, it must contain the width of the specified
17148 pattern string, and the specified pattern will be centered in the
17149 larger row.
17150
17151 If a filename or a pattern string is not specified, the size value
17152 defaults to "320x518" (used for a randomly generated initial state).
17153
17154 @item scroll
17155 If set to 1, scroll the output upward when all the rows in the output
17156 have been already filled. If set to 0, the new generated row will be
17157 written over the top row just after the bottom row is filled.
17158 Defaults to 1.
17159
17160 @item start_full, full
17161 If set to 1, completely fill the output with generated rows before
17162 outputting the first frame.
17163 This is the default behavior, for disabling set the value to 0.
17164
17165 @item stitch
17166 If set to 1, stitch the left and right row edges together.
17167 This is the default behavior, for disabling set the value to 0.
17168 @end table
17169
17170 @subsection Examples
17171
17172 @itemize
17173 @item
17174 Read the initial state from @file{pattern}, and specify an output of
17175 size 200x400.
17176 @example
17177 cellauto=f=pattern:s=200x400
17178 @end example
17179
17180 @item
17181 Generate a random initial row with a width of 200 cells, with a fill
17182 ratio of 2/3:
17183 @example
17184 cellauto=ratio=2/3:s=200x200
17185 @end example
17186
17187 @item
17188 Create a pattern generated by rule 18 starting by a single alive cell
17189 centered on an initial row with width 100:
17190 @example
17191 cellauto=p=@@:s=100x400:full=0:rule=18
17192 @end example
17193
17194 @item
17195 Specify a more elaborated initial pattern:
17196 @example
17197 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
17198 @end example
17199
17200 @end itemize
17201
17202 @anchor{coreimagesrc}
17203 @section coreimagesrc
17204 Video source generated on GPU using Apple's CoreImage API on OSX.
17205
17206 This video source is a specialized version of the @ref{coreimage} video filter.
17207 Use a core image generator at the beginning of the applied filterchain to
17208 generate the content.
17209
17210 The coreimagesrc video source accepts the following options:
17211 @table @option
17212 @item list_generators
17213 List all available generators along with all their respective options as well as
17214 possible minimum and maximum values along with the default values.
17215 @example
17216 list_generators=true
17217 @end example
17218
17219 @item size, s
17220 Specify the size of the sourced video. For the syntax of this option, check the
17221 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17222 The default value is @code{320x240}.
17223
17224 @item rate, r
17225 Specify the frame rate of the sourced video, as the number of frames
17226 generated per second. It has to be a string in the format
17227 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
17228 number or a valid video frame rate abbreviation. The default value is
17229 "25".
17230
17231 @item sar
17232 Set the sample aspect ratio of the sourced video.
17233
17234 @item duration, d
17235 Set the duration of the sourced video. See
17236 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17237 for the accepted syntax.
17238
17239 If not specified, or the expressed duration is negative, the video is
17240 supposed to be generated forever.
17241 @end table
17242
17243 Additionally, all options of the @ref{coreimage} video filter are accepted.
17244 A complete filterchain can be used for further processing of the
17245 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
17246 and examples for details.
17247
17248 @subsection Examples
17249
17250 @itemize
17251
17252 @item
17253 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
17254 given as complete and escaped command-line for Apple's standard bash shell:
17255 @example
17256 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
17257 @end example
17258 This example is equivalent to the QRCode example of @ref{coreimage} without the
17259 need for a nullsrc video source.
17260 @end itemize
17261
17262
17263 @section mandelbrot
17264
17265 Generate a Mandelbrot set fractal, and progressively zoom towards the
17266 point specified with @var{start_x} and @var{start_y}.
17267
17268 This source accepts the following options:
17269
17270 @table @option
17271
17272 @item end_pts
17273 Set the terminal pts value. Default value is 400.
17274
17275 @item end_scale
17276 Set the terminal scale value.
17277 Must be a floating point value. Default value is 0.3.
17278
17279 @item inner
17280 Set the inner coloring mode, that is the algorithm used to draw the
17281 Mandelbrot fractal internal region.
17282
17283 It shall assume one of the following values:
17284 @table @option
17285 @item black
17286 Set black mode.
17287 @item convergence
17288 Show time until convergence.
17289 @item mincol
17290 Set color based on point closest to the origin of the iterations.
17291 @item period
17292 Set period mode.
17293 @end table
17294
17295 Default value is @var{mincol}.
17296
17297 @item bailout
17298 Set the bailout value. Default value is 10.0.
17299
17300 @item maxiter
17301 Set the maximum of iterations performed by the rendering
17302 algorithm. Default value is 7189.
17303
17304 @item outer
17305 Set outer coloring mode.
17306 It shall assume one of following values:
17307 @table @option
17308 @item iteration_count
17309 Set iteration cound mode.
17310 @item normalized_iteration_count
17311 set normalized iteration count mode.
17312 @end table
17313 Default value is @var{normalized_iteration_count}.
17314
17315 @item rate, r
17316 Set frame rate, expressed as number of frames per second. Default
17317 value is "25".
17318
17319 @item size, s
17320 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
17321 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
17322
17323 @item start_scale
17324 Set the initial scale value. Default value is 3.0.
17325
17326 @item start_x
17327 Set the initial x position. Must be a floating point value between
17328 -100 and 100. Default value is -0.743643887037158704752191506114774.
17329
17330 @item start_y
17331 Set the initial y position. Must be a floating point value between
17332 -100 and 100. Default value is -0.131825904205311970493132056385139.
17333 @end table
17334
17335 @section mptestsrc
17336
17337 Generate various test patterns, as generated by the MPlayer test filter.
17338
17339 The size of the generated video is fixed, and is 256x256.
17340 This source is useful in particular for testing encoding features.
17341
17342 This source accepts the following options:
17343
17344 @table @option
17345
17346 @item rate, r
17347 Specify the frame rate of the sourced video, as the number of frames
17348 generated per second. It has to be a string in the format
17349 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
17350 number or a valid video frame rate abbreviation. The default value is
17351 "25".
17352
17353 @item duration, d
17354 Set the duration of the sourced video. See
17355 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17356 for the accepted syntax.
17357
17358 If not specified, or the expressed duration is negative, the video is
17359 supposed to be generated forever.
17360
17361 @item test, t
17362
17363 Set the number or the name of the test to perform. Supported tests are:
17364 @table @option
17365 @item dc_luma
17366 @item dc_chroma
17367 @item freq_luma
17368 @item freq_chroma
17369 @item amp_luma
17370 @item amp_chroma
17371 @item cbp
17372 @item mv
17373 @item ring1
17374 @item ring2
17375 @item all
17376
17377 @end table
17378
17379 Default value is "all", which will cycle through the list of all tests.
17380 @end table
17381
17382 Some examples:
17383 @example
17384 mptestsrc=t=dc_luma
17385 @end example
17386
17387 will generate a "dc_luma" test pattern.
17388
17389 @section frei0r_src
17390
17391 Provide a frei0r source.
17392
17393 To enable compilation of this filter you need to install the frei0r
17394 header and configure FFmpeg with @code{--enable-frei0r}.
17395
17396 This source accepts the following parameters:
17397
17398 @table @option
17399
17400 @item size
17401 The size of the video to generate. For the syntax of this option, check the
17402 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17403
17404 @item framerate
17405 The framerate of the generated video. It may be a string of the form
17406 @var{num}/@var{den} or a frame rate abbreviation.
17407
17408 @item filter_name
17409 The name to the frei0r source to load. For more information regarding frei0r and
17410 how to set the parameters, read the @ref{frei0r} section in the video filters
17411 documentation.
17412
17413 @item filter_params
17414 A '|'-separated list of parameters to pass to the frei0r source.
17415
17416 @end table
17417
17418 For example, to generate a frei0r partik0l source with size 200x200
17419 and frame rate 10 which is overlaid on the overlay filter main input:
17420 @example
17421 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
17422 @end example
17423
17424 @section life
17425
17426 Generate a life pattern.
17427
17428 This source is based on a generalization of John Conway's life game.
17429
17430 The sourced input represents a life grid, each pixel represents a cell
17431 which can be in one of two possible states, alive or dead. Every cell
17432 interacts with its eight neighbours, which are the cells that are
17433 horizontally, vertically, or diagonally adjacent.
17434
17435 At each interaction the grid evolves according to the adopted rule,
17436 which specifies the number of neighbor alive cells which will make a
17437 cell stay alive or born. The @option{rule} option allows one to specify
17438 the rule to adopt.
17439
17440 This source accepts the following options:
17441
17442 @table @option
17443 @item filename, f
17444 Set the file from which to read the initial grid state. In the file,
17445 each non-whitespace character is considered an alive cell, and newline
17446 is used to delimit the end of each row.
17447
17448 If this option is not specified, the initial grid is generated
17449 randomly.
17450
17451 @item rate, r
17452 Set the video rate, that is the number of frames generated per second.
17453 Default is 25.
17454
17455 @item random_fill_ratio, ratio
17456 Set the random fill ratio for the initial random grid. It is a
17457 floating point number value ranging from 0 to 1, defaults to 1/PHI.
17458 It is ignored when a file is specified.
17459
17460 @item random_seed, seed
17461 Set the seed for filling the initial random grid, must be an integer
17462 included between 0 and UINT32_MAX. If not specified, or if explicitly
17463 set to -1, the filter will try to use a good random seed on a best
17464 effort basis.
17465
17466 @item rule
17467 Set the life rule.
17468
17469 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
17470 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
17471 @var{NS} specifies the number of alive neighbor cells which make a
17472 live cell stay alive, and @var{NB} the number of alive neighbor cells
17473 which make a dead cell to become alive (i.e. to "born").
17474 "s" and "b" can be used in place of "S" and "B", respectively.
17475
17476 Alternatively a rule can be specified by an 18-bits integer. The 9
17477 high order bits are used to encode the next cell state if it is alive
17478 for each number of neighbor alive cells, the low order bits specify
17479 the rule for "borning" new cells. Higher order bits encode for an
17480 higher number of neighbor cells.
17481 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
17482 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
17483
17484 Default value is "S23/B3", which is the original Conway's game of life
17485 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
17486 cells, and will born a new cell if there are three alive cells around
17487 a dead cell.
17488
17489 @item size, s
17490 Set the size of the output video. For the syntax of this option, check the
17491 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17492
17493 If @option{filename} is specified, the size is set by default to the
17494 same size of the input file. If @option{size} is set, it must contain
17495 the size specified in the input file, and the initial grid defined in
17496 that file is centered in the larger resulting area.
17497
17498 If a filename is not specified, the size value defaults to "320x240"
17499 (used for a randomly generated initial grid).
17500
17501 @item stitch
17502 If set to 1, stitch the left and right grid edges together, and the
17503 top and bottom edges also. Defaults to 1.
17504
17505 @item mold
17506 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
17507 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
17508 value from 0 to 255.
17509
17510 @item life_color
17511 Set the color of living (or new born) cells.
17512
17513 @item death_color
17514 Set the color of dead cells. If @option{mold} is set, this is the first color
17515 used to represent a dead cell.
17516
17517 @item mold_color
17518 Set mold color, for definitely dead and moldy cells.
17519
17520 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
17521 ffmpeg-utils manual,ffmpeg-utils}.
17522 @end table
17523
17524 @subsection Examples
17525
17526 @itemize
17527 @item
17528 Read a grid from @file{pattern}, and center it on a grid of size
17529 300x300 pixels:
17530 @example
17531 life=f=pattern:s=300x300
17532 @end example
17533
17534 @item
17535 Generate a random grid of size 200x200, with a fill ratio of 2/3:
17536 @example
17537 life=ratio=2/3:s=200x200
17538 @end example
17539
17540 @item
17541 Specify a custom rule for evolving a randomly generated grid:
17542 @example
17543 life=rule=S14/B34
17544 @end example
17545
17546 @item
17547 Full example with slow death effect (mold) using @command{ffplay}:
17548 @example
17549 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
17550 @end example
17551 @end itemize
17552
17553 @anchor{allrgb}
17554 @anchor{allyuv}
17555 @anchor{color}
17556 @anchor{haldclutsrc}
17557 @anchor{nullsrc}
17558 @anchor{rgbtestsrc}
17559 @anchor{smptebars}
17560 @anchor{smptehdbars}
17561 @anchor{testsrc}
17562 @anchor{testsrc2}
17563 @anchor{yuvtestsrc}
17564 @section allrgb, allyuv, color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
17565
17566 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
17567
17568 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
17569
17570 The @code{color} source provides an uniformly colored input.
17571
17572 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
17573 @ref{haldclut} filter.
17574
17575 The @code{nullsrc} source returns unprocessed video frames. It is
17576 mainly useful to be employed in analysis / debugging tools, or as the
17577 source for filters which ignore the input data.
17578
17579 The @code{rgbtestsrc} source generates an RGB test pattern useful for
17580 detecting RGB vs BGR issues. You should see a red, green and blue
17581 stripe from top to bottom.
17582
17583 The @code{smptebars} source generates a color bars pattern, based on
17584 the SMPTE Engineering Guideline EG 1-1990.
17585
17586 The @code{smptehdbars} source generates a color bars pattern, based on
17587 the SMPTE RP 219-2002.
17588
17589 The @code{testsrc} source generates a test video pattern, showing a
17590 color pattern, a scrolling gradient and a timestamp. This is mainly
17591 intended for testing purposes.
17592
17593 The @code{testsrc2} source is similar to testsrc, but supports more
17594 pixel formats instead of just @code{rgb24}. This allows using it as an
17595 input for other tests without requiring a format conversion.
17596
17597 The @code{yuvtestsrc} source generates an YUV test pattern. You should
17598 see a y, cb and cr stripe from top to bottom.
17599
17600 The sources accept the following parameters:
17601
17602 @table @option
17603
17604 @item level
17605 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
17606 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
17607 pixels to be used as identity matrix for 3D lookup tables. Each component is
17608 coded on a @code{1/(N*N)} scale.
17609
17610 @item color, c
17611 Specify the color of the source, only available in the @code{color}
17612 source. For the syntax of this option, check the
17613 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
17614
17615 @item size, s
17616 Specify the size of the sourced video. For the syntax of this option, check the
17617 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17618 The default value is @code{320x240}.
17619
17620 This option is not available with the @code{allrgb}, @code{allyuv}, and
17621 @code{haldclutsrc} filters.
17622
17623 @item rate, r
17624 Specify the frame rate of the sourced video, as the number of frames
17625 generated per second. It has to be a string in the format
17626 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
17627 number or a valid video frame rate abbreviation. The default value is
17628 "25".
17629
17630 @item duration, d
17631 Set the duration of the sourced video. See
17632 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17633 for the accepted syntax.
17634
17635 If not specified, or the expressed duration is negative, the video is
17636 supposed to be generated forever.
17637
17638 @item sar
17639 Set the sample aspect ratio of the sourced video.
17640
17641 @item alpha
17642 Specify the alpha (opacity) of the background, only available in the
17643 @code{testsrc2} source. The value must be between 0 (fully transparent) and
17644 255 (fully opaque, the default).
17645
17646 @item decimals, n
17647 Set the number of decimals to show in the timestamp, only available in the
17648 @code{testsrc} source.
17649
17650 The displayed timestamp value will correspond to the original
17651 timestamp value multiplied by the power of 10 of the specified
17652 value. Default value is 0.
17653 @end table
17654
17655 @subsection Examples
17656
17657 @itemize
17658 @item
17659 Generate a video with a duration of 5.3 seconds, with size
17660 176x144 and a frame rate of 10 frames per second:
17661 @example
17662 testsrc=duration=5.3:size=qcif:rate=10
17663 @end example
17664
17665 @item
17666 The following graph description will generate a red source
17667 with an opacity of 0.2, with size "qcif" and a frame rate of 10
17668 frames per second:
17669 @example
17670 color=c=red@@0.2:s=qcif:r=10
17671 @end example
17672
17673 @item
17674 If the input content is to be ignored, @code{nullsrc} can be used. The
17675 following command generates noise in the luminance plane by employing
17676 the @code{geq} filter:
17677 @example
17678 nullsrc=s=256x256, geq=random(1)*255:128:128
17679 @end example
17680 @end itemize
17681
17682 @subsection Commands
17683
17684 The @code{color} source supports the following commands:
17685
17686 @table @option
17687 @item c, color
17688 Set the color of the created image. Accepts the same syntax of the
17689 corresponding @option{color} option.
17690 @end table
17691
17692 @section openclsrc
17693
17694 Generate video using an OpenCL program.
17695
17696 @table @option
17697
17698 @item source
17699 OpenCL program source file.
17700
17701 @item kernel
17702 Kernel name in program.
17703
17704 @item size, s
17705 Size of frames to generate.  This must be set.
17706
17707 @item format
17708 Pixel format to use for the generated frames.  This must be set.
17709
17710 @item rate, r
17711 Number of frames generated every second.  Default value is '25'.
17712
17713 @end table
17714
17715 For details of how the program loading works, see the @ref{program_opencl}
17716 filter.
17717
17718 Example programs:
17719
17720 @itemize
17721 @item
17722 Generate a colour ramp by setting pixel values from the position of the pixel
17723 in the output image.  (Note that this will work with all pixel formats, but
17724 the generated output will not be the same.)
17725 @verbatim
17726 __kernel void ramp(__write_only image2d_t dst,
17727                    unsigned int index)
17728 {
17729     int2 loc = (int2)(get_global_id(0), get_global_id(1));
17730
17731     float4 val;
17732     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
17733
17734     write_imagef(dst, loc, val);
17735 }
17736 @end verbatim
17737
17738 @item
17739 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
17740 @verbatim
17741 __kernel void sierpinski_carpet(__write_only image2d_t dst,
17742                                 unsigned int index)
17743 {
17744     int2 loc = (int2)(get_global_id(0), get_global_id(1));
17745
17746     float4 value = 0.0f;
17747     int x = loc.x + index;
17748     int y = loc.y + index;
17749     while (x > 0 || y > 0) {
17750         if (x % 3 == 1 && y % 3 == 1) {
17751             value = 1.0f;
17752             break;
17753         }
17754         x /= 3;
17755         y /= 3;
17756     }
17757
17758     write_imagef(dst, loc, value);
17759 }
17760 @end verbatim
17761
17762 @end itemize
17763
17764 @c man end VIDEO SOURCES
17765
17766 @chapter Video Sinks
17767 @c man begin VIDEO SINKS
17768
17769 Below is a description of the currently available video sinks.
17770
17771 @section buffersink
17772
17773 Buffer video frames, and make them available to the end of the filter
17774 graph.
17775
17776 This sink is mainly intended for programmatic use, in particular
17777 through the interface defined in @file{libavfilter/buffersink.h}
17778 or the options system.
17779
17780 It accepts a pointer to an AVBufferSinkContext structure, which
17781 defines the incoming buffers' formats, to be passed as the opaque
17782 parameter to @code{avfilter_init_filter} for initialization.
17783
17784 @section nullsink
17785
17786 Null video sink: do absolutely nothing with the input video. It is
17787 mainly useful as a template and for use in analysis / debugging
17788 tools.
17789
17790 @c man end VIDEO SINKS
17791
17792 @chapter Multimedia Filters
17793 @c man begin MULTIMEDIA FILTERS
17794
17795 Below is a description of the currently available multimedia filters.
17796
17797 @section abitscope
17798
17799 Convert input audio to a video output, displaying the audio bit scope.
17800
17801 The filter accepts the following options:
17802
17803 @table @option
17804 @item rate, r
17805 Set frame rate, expressed as number of frames per second. Default
17806 value is "25".
17807
17808 @item size, s
17809 Specify the video size for the output. For the syntax of this option, check the
17810 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17811 Default value is @code{1024x256}.
17812
17813 @item colors
17814 Specify list of colors separated by space or by '|' which will be used to
17815 draw channels. Unrecognized or missing colors will be replaced
17816 by white color.
17817 @end table
17818
17819 @section ahistogram
17820
17821 Convert input audio to a video output, displaying the volume histogram.
17822
17823 The filter accepts the following options:
17824
17825 @table @option
17826 @item dmode
17827 Specify how histogram is calculated.
17828
17829 It accepts the following values:
17830 @table @samp
17831 @item single
17832 Use single histogram for all channels.
17833 @item separate
17834 Use separate histogram for each channel.
17835 @end table
17836 Default is @code{single}.
17837
17838 @item rate, r
17839 Set frame rate, expressed as number of frames per second. Default
17840 value is "25".
17841
17842 @item size, s
17843 Specify the video size for the output. For the syntax of this option, check the
17844 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17845 Default value is @code{hd720}.
17846
17847 @item scale
17848 Set display scale.
17849
17850 It accepts the following values:
17851 @table @samp
17852 @item log
17853 logarithmic
17854 @item sqrt
17855 square root
17856 @item cbrt
17857 cubic root
17858 @item lin
17859 linear
17860 @item rlog
17861 reverse logarithmic
17862 @end table
17863 Default is @code{log}.
17864
17865 @item ascale
17866 Set amplitude scale.
17867
17868 It accepts the following values:
17869 @table @samp
17870 @item log
17871 logarithmic
17872 @item lin
17873 linear
17874 @end table
17875 Default is @code{log}.
17876
17877 @item acount
17878 Set how much frames to accumulate in histogram.
17879 Defauls is 1. Setting this to -1 accumulates all frames.
17880
17881 @item rheight
17882 Set histogram ratio of window height.
17883
17884 @item slide
17885 Set sonogram sliding.
17886
17887 It accepts the following values:
17888 @table @samp
17889 @item replace
17890 replace old rows with new ones.
17891 @item scroll
17892 scroll from top to bottom.
17893 @end table
17894 Default is @code{replace}.
17895 @end table
17896
17897 @section aphasemeter
17898
17899 Convert input audio to a video output, displaying the audio phase.
17900
17901 The filter accepts the following options:
17902
17903 @table @option
17904 @item rate, r
17905 Set the output frame rate. Default value is @code{25}.
17906
17907 @item size, s
17908 Set the video size for the output. For the syntax of this option, check the
17909 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17910 Default value is @code{800x400}.
17911
17912 @item rc
17913 @item gc
17914 @item bc
17915 Specify the red, green, blue contrast. Default values are @code{2},
17916 @code{7} and @code{1}.
17917 Allowed range is @code{[0, 255]}.
17918
17919 @item mpc
17920 Set color which will be used for drawing median phase. If color is
17921 @code{none} which is default, no median phase value will be drawn.
17922
17923 @item video
17924 Enable video output. Default is enabled.
17925 @end table
17926
17927 The filter also exports the frame metadata @code{lavfi.aphasemeter.phase} which
17928 represents mean phase of current audio frame. Value is in range @code{[-1, 1]}.
17929 The @code{-1} means left and right channels are completely out of phase and
17930 @code{1} means channels are in phase.
17931
17932 @section avectorscope
17933
17934 Convert input audio to a video output, representing the audio vector
17935 scope.
17936
17937 The filter is used to measure the difference between channels of stereo
17938 audio stream. A monoaural signal, consisting of identical left and right
17939 signal, results in straight vertical line. Any stereo separation is visible
17940 as a deviation from this line, creating a Lissajous figure.
17941 If the straight (or deviation from it) but horizontal line appears this
17942 indicates that the left and right channels are out of phase.
17943
17944 The filter accepts the following options:
17945
17946 @table @option
17947 @item mode, m
17948 Set the vectorscope mode.
17949
17950 Available values are:
17951 @table @samp
17952 @item lissajous
17953 Lissajous rotated by 45 degrees.
17954
17955 @item lissajous_xy
17956 Same as above but not rotated.
17957
17958 @item polar
17959 Shape resembling half of circle.
17960 @end table
17961
17962 Default value is @samp{lissajous}.
17963
17964 @item size, s
17965 Set the video size for the output. For the syntax of this option, check the
17966 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17967 Default value is @code{400x400}.
17968
17969 @item rate, r
17970 Set the output frame rate. Default value is @code{25}.
17971
17972 @item rc
17973 @item gc
17974 @item bc
17975 @item ac
17976 Specify the red, green, blue and alpha contrast. Default values are @code{40},
17977 @code{160}, @code{80} and @code{255}.
17978 Allowed range is @code{[0, 255]}.
17979
17980 @item rf
17981 @item gf
17982 @item bf
17983 @item af
17984 Specify the red, green, blue and alpha fade. Default values are @code{15},
17985 @code{10}, @code{5} and @code{5}.
17986 Allowed range is @code{[0, 255]}.
17987
17988 @item zoom
17989 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
17990 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
17991
17992 @item draw
17993 Set the vectorscope drawing mode.
17994
17995 Available values are:
17996 @table @samp
17997 @item dot
17998 Draw dot for each sample.
17999
18000 @item line
18001 Draw line between previous and current sample.
18002 @end table
18003
18004 Default value is @samp{dot}.
18005
18006 @item scale
18007 Specify amplitude scale of audio samples.
18008
18009 Available values are:
18010 @table @samp
18011 @item lin
18012 Linear.
18013
18014 @item sqrt
18015 Square root.
18016
18017 @item cbrt
18018 Cubic root.
18019
18020 @item log
18021 Logarithmic.
18022 @end table
18023
18024 @item swap
18025 Swap left channel axis with right channel axis.
18026
18027 @item mirror
18028 Mirror axis.
18029
18030 @table @samp
18031 @item none
18032 No mirror.
18033
18034 @item x
18035 Mirror only x axis.
18036
18037 @item y
18038 Mirror only y axis.
18039
18040 @item xy
18041 Mirror both axis.
18042 @end table
18043
18044 @end table
18045
18046 @subsection Examples
18047
18048 @itemize
18049 @item
18050 Complete example using @command{ffplay}:
18051 @example
18052 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
18053              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
18054 @end example
18055 @end itemize
18056
18057 @section bench, abench
18058
18059 Benchmark part of a filtergraph.
18060
18061 The filter accepts the following options:
18062
18063 @table @option
18064 @item action
18065 Start or stop a timer.
18066
18067 Available values are:
18068 @table @samp
18069 @item start
18070 Get the current time, set it as frame metadata (using the key
18071 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
18072
18073 @item stop
18074 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
18075 the input frame metadata to get the time difference. Time difference, average,
18076 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
18077 @code{min}) are then printed. The timestamps are expressed in seconds.
18078 @end table
18079 @end table
18080
18081 @subsection Examples
18082
18083 @itemize
18084 @item
18085 Benchmark @ref{selectivecolor} filter:
18086 @example
18087 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
18088 @end example
18089 @end itemize
18090
18091 @section concat
18092
18093 Concatenate audio and video streams, joining them together one after the
18094 other.
18095
18096 The filter works on segments of synchronized video and audio streams. All
18097 segments must have the same number of streams of each type, and that will
18098 also be the number of streams at output.
18099
18100 The filter accepts the following options:
18101
18102 @table @option
18103
18104 @item n
18105 Set the number of segments. Default is 2.
18106
18107 @item v
18108 Set the number of output video streams, that is also the number of video
18109 streams in each segment. Default is 1.
18110
18111 @item a
18112 Set the number of output audio streams, that is also the number of audio
18113 streams in each segment. Default is 0.
18114
18115 @item unsafe
18116 Activate unsafe mode: do not fail if segments have a different format.
18117
18118 @end table
18119
18120 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
18121 @var{a} audio outputs.
18122
18123 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
18124 segment, in the same order as the outputs, then the inputs for the second
18125 segment, etc.
18126
18127 Related streams do not always have exactly the same duration, for various
18128 reasons including codec frame size or sloppy authoring. For that reason,
18129 related synchronized streams (e.g. a video and its audio track) should be
18130 concatenated at once. The concat filter will use the duration of the longest
18131 stream in each segment (except the last one), and if necessary pad shorter
18132 audio streams with silence.
18133
18134 For this filter to work correctly, all segments must start at timestamp 0.
18135
18136 All corresponding streams must have the same parameters in all segments; the
18137 filtering system will automatically select a common pixel format for video
18138 streams, and a common sample format, sample rate and channel layout for
18139 audio streams, but other settings, such as resolution, must be converted
18140 explicitly by the user.
18141
18142 Different frame rates are acceptable but will result in variable frame rate
18143 at output; be sure to configure the output file to handle it.
18144
18145 @subsection Examples
18146
18147 @itemize
18148 @item
18149 Concatenate an opening, an episode and an ending, all in bilingual version
18150 (video in stream 0, audio in streams 1 and 2):
18151 @example
18152 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
18153   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
18154    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
18155   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
18156 @end example
18157
18158 @item
18159 Concatenate two parts, handling audio and video separately, using the
18160 (a)movie sources, and adjusting the resolution:
18161 @example
18162 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
18163 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
18164 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
18165 @end example
18166 Note that a desync will happen at the stitch if the audio and video streams
18167 do not have exactly the same duration in the first file.
18168
18169 @end itemize
18170
18171 @subsection Commands
18172
18173 This filter supports the following commands:
18174 @table @option
18175 @item next
18176 Close the current segment and step to the next one
18177 @end table
18178
18179 @section drawgraph, adrawgraph
18180
18181 Draw a graph using input video or audio metadata.
18182
18183 It accepts the following parameters:
18184
18185 @table @option
18186 @item m1
18187 Set 1st frame metadata key from which metadata values will be used to draw a graph.
18188
18189 @item fg1
18190 Set 1st foreground color expression.
18191
18192 @item m2
18193 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
18194
18195 @item fg2
18196 Set 2nd foreground color expression.
18197
18198 @item m3
18199 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
18200
18201 @item fg3
18202 Set 3rd foreground color expression.
18203
18204 @item m4
18205 Set 4th frame metadata key from which metadata values will be used to draw a graph.
18206
18207 @item fg4
18208 Set 4th foreground color expression.
18209
18210 @item min
18211 Set minimal value of metadata value.
18212
18213 @item max
18214 Set maximal value of metadata value.
18215
18216 @item bg
18217 Set graph background color. Default is white.
18218
18219 @item mode
18220 Set graph mode.
18221
18222 Available values for mode is:
18223 @table @samp
18224 @item bar
18225 @item dot
18226 @item line
18227 @end table
18228
18229 Default is @code{line}.
18230
18231 @item slide
18232 Set slide mode.
18233
18234 Available values for slide is:
18235 @table @samp
18236 @item frame
18237 Draw new frame when right border is reached.
18238
18239 @item replace
18240 Replace old columns with new ones.
18241
18242 @item scroll
18243 Scroll from right to left.
18244
18245 @item rscroll
18246 Scroll from left to right.
18247
18248 @item picture
18249 Draw single picture.
18250 @end table
18251
18252 Default is @code{frame}.
18253
18254 @item size
18255 Set size of graph video. For the syntax of this option, check the
18256 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18257 The default value is @code{900x256}.
18258
18259 The foreground color expressions can use the following variables:
18260 @table @option
18261 @item MIN
18262 Minimal value of metadata value.
18263
18264 @item MAX
18265 Maximal value of metadata value.
18266
18267 @item VAL
18268 Current metadata key value.
18269 @end table
18270
18271 The color is defined as 0xAABBGGRR.
18272 @end table
18273
18274 Example using metadata from @ref{signalstats} filter:
18275 @example
18276 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
18277 @end example
18278
18279 Example using metadata from @ref{ebur128} filter:
18280 @example
18281 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
18282 @end example
18283
18284 @anchor{ebur128}
18285 @section ebur128
18286
18287 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
18288 it unchanged. By default, it logs a message at a frequency of 10Hz with the
18289 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
18290 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
18291
18292 The filter also has a video output (see the @var{video} option) with a real
18293 time graph to observe the loudness evolution. The graphic contains the logged
18294 message mentioned above, so it is not printed anymore when this option is set,
18295 unless the verbose logging is set. The main graphing area contains the
18296 short-term loudness (3 seconds of analysis), and the gauge on the right is for
18297 the momentary loudness (400 milliseconds).
18298
18299 More information about the Loudness Recommendation EBU R128 on
18300 @url{http://tech.ebu.ch/loudness}.
18301
18302 The filter accepts the following options:
18303
18304 @table @option
18305
18306 @item video
18307 Activate the video output. The audio stream is passed unchanged whether this
18308 option is set or no. The video stream will be the first output stream if
18309 activated. Default is @code{0}.
18310
18311 @item size
18312 Set the video size. This option is for video only. For the syntax of this
18313 option, check the
18314 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18315 Default and minimum resolution is @code{640x480}.
18316
18317 @item meter
18318 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
18319 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
18320 other integer value between this range is allowed.
18321
18322 @item metadata
18323 Set metadata injection. If set to @code{1}, the audio input will be segmented
18324 into 100ms output frames, each of them containing various loudness information
18325 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
18326
18327 Default is @code{0}.
18328
18329 @item framelog
18330 Force the frame logging level.
18331
18332 Available values are:
18333 @table @samp
18334 @item info
18335 information logging level
18336 @item verbose
18337 verbose logging level
18338 @end table
18339
18340 By default, the logging level is set to @var{info}. If the @option{video} or
18341 the @option{metadata} options are set, it switches to @var{verbose}.
18342
18343 @item peak
18344 Set peak mode(s).
18345
18346 Available modes can be cumulated (the option is a @code{flag} type). Possible
18347 values are:
18348 @table @samp
18349 @item none
18350 Disable any peak mode (default).
18351 @item sample
18352 Enable sample-peak mode.
18353
18354 Simple peak mode looking for the higher sample value. It logs a message
18355 for sample-peak (identified by @code{SPK}).
18356 @item true
18357 Enable true-peak mode.
18358
18359 If enabled, the peak lookup is done on an over-sampled version of the input
18360 stream for better peak accuracy. It logs a message for true-peak.
18361 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
18362 This mode requires a build with @code{libswresample}.
18363 @end table
18364
18365 @item dualmono
18366 Treat mono input files as "dual mono". If a mono file is intended for playback
18367 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
18368 If set to @code{true}, this option will compensate for this effect.
18369 Multi-channel input files are not affected by this option.
18370
18371 @item panlaw
18372 Set a specific pan law to be used for the measurement of dual mono files.
18373 This parameter is optional, and has a default value of -3.01dB.
18374 @end table
18375
18376 @subsection Examples
18377
18378 @itemize
18379 @item
18380 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
18381 @example
18382 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
18383 @end example
18384
18385 @item
18386 Run an analysis with @command{ffmpeg}:
18387 @example
18388 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
18389 @end example
18390 @end itemize
18391
18392 @section interleave, ainterleave
18393
18394 Temporally interleave frames from several inputs.
18395
18396 @code{interleave} works with video inputs, @code{ainterleave} with audio.
18397
18398 These filters read frames from several inputs and send the oldest
18399 queued frame to the output.
18400
18401 Input streams must have well defined, monotonically increasing frame
18402 timestamp values.
18403
18404 In order to submit one frame to output, these filters need to enqueue
18405 at least one frame for each input, so they cannot work in case one
18406 input is not yet terminated and will not receive incoming frames.
18407
18408 For example consider the case when one input is a @code{select} filter
18409 which always drops input frames. The @code{interleave} filter will keep
18410 reading from that input, but it will never be able to send new frames
18411 to output until the input sends an end-of-stream signal.
18412
18413 Also, depending on inputs synchronization, the filters will drop
18414 frames in case one input receives more frames than the other ones, and
18415 the queue is already filled.
18416
18417 These filters accept the following options:
18418
18419 @table @option
18420 @item nb_inputs, n
18421 Set the number of different inputs, it is 2 by default.
18422 @end table
18423
18424 @subsection Examples
18425
18426 @itemize
18427 @item
18428 Interleave frames belonging to different streams using @command{ffmpeg}:
18429 @example
18430 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
18431 @end example
18432
18433 @item
18434 Add flickering blur effect:
18435 @example
18436 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
18437 @end example
18438 @end itemize
18439
18440 @section metadata, ametadata
18441
18442 Manipulate frame metadata.
18443
18444 This filter accepts the following options:
18445
18446 @table @option
18447 @item mode
18448 Set mode of operation of the filter.
18449
18450 Can be one of the following:
18451
18452 @table @samp
18453 @item select
18454 If both @code{value} and @code{key} is set, select frames
18455 which have such metadata. If only @code{key} is set, select
18456 every frame that has such key in metadata.
18457
18458 @item add
18459 Add new metadata @code{key} and @code{value}. If key is already available
18460 do nothing.
18461
18462 @item modify
18463 Modify value of already present key.
18464
18465 @item delete
18466 If @code{value} is set, delete only keys that have such value.
18467 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
18468 the frame.
18469
18470 @item print
18471 Print key and its value if metadata was found. If @code{key} is not set print all
18472 metadata values available in frame.
18473 @end table
18474
18475 @item key
18476 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
18477
18478 @item value
18479 Set metadata value which will be used. This option is mandatory for
18480 @code{modify} and @code{add} mode.
18481
18482 @item function
18483 Which function to use when comparing metadata value and @code{value}.
18484
18485 Can be one of following:
18486
18487 @table @samp
18488 @item same_str
18489 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
18490
18491 @item starts_with
18492 Values are interpreted as strings, returns true if metadata value starts with
18493 the @code{value} option string.
18494
18495 @item less
18496 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
18497
18498 @item equal
18499 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
18500
18501 @item greater
18502 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
18503
18504 @item expr
18505 Values are interpreted as floats, returns true if expression from option @code{expr}
18506 evaluates to true.
18507 @end table
18508
18509 @item expr
18510 Set expression which is used when @code{function} is set to @code{expr}.
18511 The expression is evaluated through the eval API and can contain the following
18512 constants:
18513
18514 @table @option
18515 @item VALUE1
18516 Float representation of @code{value} from metadata key.
18517
18518 @item VALUE2
18519 Float representation of @code{value} as supplied by user in @code{value} option.
18520 @end table
18521
18522 @item file
18523 If specified in @code{print} mode, output is written to the named file. Instead of
18524 plain filename any writable url can be specified. Filename ``-'' is a shorthand
18525 for standard output. If @code{file} option is not set, output is written to the log
18526 with AV_LOG_INFO loglevel.
18527
18528 @end table
18529
18530 @subsection Examples
18531
18532 @itemize
18533 @item
18534 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
18535 between 0 and 1.
18536 @example
18537 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
18538 @end example
18539 @item
18540 Print silencedetect output to file @file{metadata.txt}.
18541 @example
18542 silencedetect,ametadata=mode=print:file=metadata.txt
18543 @end example
18544 @item
18545 Direct all metadata to a pipe with file descriptor 4.
18546 @example
18547 metadata=mode=print:file='pipe\:4'
18548 @end example
18549 @end itemize
18550
18551 @section perms, aperms
18552
18553 Set read/write permissions for the output frames.
18554
18555 These filters are mainly aimed at developers to test direct path in the
18556 following filter in the filtergraph.
18557
18558 The filters accept the following options:
18559
18560 @table @option
18561 @item mode
18562 Select the permissions mode.
18563
18564 It accepts the following values:
18565 @table @samp
18566 @item none
18567 Do nothing. This is the default.
18568 @item ro
18569 Set all the output frames read-only.
18570 @item rw
18571 Set all the output frames directly writable.
18572 @item toggle
18573 Make the frame read-only if writable, and writable if read-only.
18574 @item random
18575 Set each output frame read-only or writable randomly.
18576 @end table
18577
18578 @item seed
18579 Set the seed for the @var{random} mode, must be an integer included between
18580 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
18581 @code{-1}, the filter will try to use a good random seed on a best effort
18582 basis.
18583 @end table
18584
18585 Note: in case of auto-inserted filter between the permission filter and the
18586 following one, the permission might not be received as expected in that
18587 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
18588 perms/aperms filter can avoid this problem.
18589
18590 @section realtime, arealtime
18591
18592 Slow down filtering to match real time approximately.
18593
18594 These filters will pause the filtering for a variable amount of time to
18595 match the output rate with the input timestamps.
18596 They are similar to the @option{re} option to @code{ffmpeg}.
18597
18598 They accept the following options:
18599
18600 @table @option
18601 @item limit
18602 Time limit for the pauses. Any pause longer than that will be considered
18603 a timestamp discontinuity and reset the timer. Default is 2 seconds.
18604 @end table
18605
18606 @anchor{select}
18607 @section select, aselect
18608
18609 Select frames to pass in output.
18610
18611 This filter accepts the following options:
18612
18613 @table @option
18614
18615 @item expr, e
18616 Set expression, which is evaluated for each input frame.
18617
18618 If the expression is evaluated to zero, the frame is discarded.
18619
18620 If the evaluation result is negative or NaN, the frame is sent to the
18621 first output; otherwise it is sent to the output with index
18622 @code{ceil(val)-1}, assuming that the input index starts from 0.
18623
18624 For example a value of @code{1.2} corresponds to the output with index
18625 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
18626
18627 @item outputs, n
18628 Set the number of outputs. The output to which to send the selected
18629 frame is based on the result of the evaluation. Default value is 1.
18630 @end table
18631
18632 The expression can contain the following constants:
18633
18634 @table @option
18635 @item n
18636 The (sequential) number of the filtered frame, starting from 0.
18637
18638 @item selected_n
18639 The (sequential) number of the selected frame, starting from 0.
18640
18641 @item prev_selected_n
18642 The sequential number of the last selected frame. It's NAN if undefined.
18643
18644 @item TB
18645 The timebase of the input timestamps.
18646
18647 @item pts
18648 The PTS (Presentation TimeStamp) of the filtered video frame,
18649 expressed in @var{TB} units. It's NAN if undefined.
18650
18651 @item t
18652 The PTS of the filtered video frame,
18653 expressed in seconds. It's NAN if undefined.
18654
18655 @item prev_pts
18656 The PTS of the previously filtered video frame. It's NAN if undefined.
18657
18658 @item prev_selected_pts
18659 The PTS of the last previously filtered video frame. It's NAN if undefined.
18660
18661 @item prev_selected_t
18662 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
18663
18664 @item start_pts
18665 The PTS of the first video frame in the video. It's NAN if undefined.
18666
18667 @item start_t
18668 The time of the first video frame in the video. It's NAN if undefined.
18669
18670 @item pict_type @emph{(video only)}
18671 The type of the filtered frame. It can assume one of the following
18672 values:
18673 @table @option
18674 @item I
18675 @item P
18676 @item B
18677 @item S
18678 @item SI
18679 @item SP
18680 @item BI
18681 @end table
18682
18683 @item interlace_type @emph{(video only)}
18684 The frame interlace type. It can assume one of the following values:
18685 @table @option
18686 @item PROGRESSIVE
18687 The frame is progressive (not interlaced).
18688 @item TOPFIRST
18689 The frame is top-field-first.
18690 @item BOTTOMFIRST
18691 The frame is bottom-field-first.
18692 @end table
18693
18694 @item consumed_sample_n @emph{(audio only)}
18695 the number of selected samples before the current frame
18696
18697 @item samples_n @emph{(audio only)}
18698 the number of samples in the current frame
18699
18700 @item sample_rate @emph{(audio only)}
18701 the input sample rate
18702
18703 @item key
18704 This is 1 if the filtered frame is a key-frame, 0 otherwise.
18705
18706 @item pos
18707 the position in the file of the filtered frame, -1 if the information
18708 is not available (e.g. for synthetic video)
18709
18710 @item scene @emph{(video only)}
18711 value between 0 and 1 to indicate a new scene; a low value reflects a low
18712 probability for the current frame to introduce a new scene, while a higher
18713 value means the current frame is more likely to be one (see the example below)
18714
18715 @item concatdec_select
18716 The concat demuxer can select only part of a concat input file by setting an
18717 inpoint and an outpoint, but the output packets may not be entirely contained
18718 in the selected interval. By using this variable, it is possible to skip frames
18719 generated by the concat demuxer which are not exactly contained in the selected
18720 interval.
18721
18722 This works by comparing the frame pts against the @var{lavf.concat.start_time}
18723 and the @var{lavf.concat.duration} packet metadata values which are also
18724 present in the decoded frames.
18725
18726 The @var{concatdec_select} variable is -1 if the frame pts is at least
18727 start_time and either the duration metadata is missing or the frame pts is less
18728 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
18729 missing.
18730
18731 That basically means that an input frame is selected if its pts is within the
18732 interval set by the concat demuxer.
18733
18734 @end table
18735
18736 The default value of the select expression is "1".
18737
18738 @subsection Examples
18739
18740 @itemize
18741 @item
18742 Select all frames in input:
18743 @example
18744 select
18745 @end example
18746
18747 The example above is the same as:
18748 @example
18749 select=1
18750 @end example
18751
18752 @item
18753 Skip all frames:
18754 @example
18755 select=0
18756 @end example
18757
18758 @item
18759 Select only I-frames:
18760 @example
18761 select='eq(pict_type\,I)'
18762 @end example
18763
18764 @item
18765 Select one frame every 100:
18766 @example
18767 select='not(mod(n\,100))'
18768 @end example
18769
18770 @item
18771 Select only frames contained in the 10-20 time interval:
18772 @example
18773 select=between(t\,10\,20)
18774 @end example
18775
18776 @item
18777 Select only I-frames contained in the 10-20 time interval:
18778 @example
18779 select=between(t\,10\,20)*eq(pict_type\,I)
18780 @end example
18781
18782 @item
18783 Select frames with a minimum distance of 10 seconds:
18784 @example
18785 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
18786 @end example
18787
18788 @item
18789 Use aselect to select only audio frames with samples number > 100:
18790 @example
18791 aselect='gt(samples_n\,100)'
18792 @end example
18793
18794 @item
18795 Create a mosaic of the first scenes:
18796 @example
18797 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
18798 @end example
18799
18800 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
18801 choice.
18802
18803 @item
18804 Send even and odd frames to separate outputs, and compose them:
18805 @example
18806 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
18807 @end example
18808
18809 @item
18810 Select useful frames from an ffconcat file which is using inpoints and
18811 outpoints but where the source files are not intra frame only.
18812 @example
18813 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
18814 @end example
18815 @end itemize
18816
18817 @section sendcmd, asendcmd
18818
18819 Send commands to filters in the filtergraph.
18820
18821 These filters read commands to be sent to other filters in the
18822 filtergraph.
18823
18824 @code{sendcmd} must be inserted between two video filters,
18825 @code{asendcmd} must be inserted between two audio filters, but apart
18826 from that they act the same way.
18827
18828 The specification of commands can be provided in the filter arguments
18829 with the @var{commands} option, or in a file specified by the
18830 @var{filename} option.
18831
18832 These filters accept the following options:
18833 @table @option
18834 @item commands, c
18835 Set the commands to be read and sent to the other filters.
18836 @item filename, f
18837 Set the filename of the commands to be read and sent to the other
18838 filters.
18839 @end table
18840
18841 @subsection Commands syntax
18842
18843 A commands description consists of a sequence of interval
18844 specifications, comprising a list of commands to be executed when a
18845 particular event related to that interval occurs. The occurring event
18846 is typically the current frame time entering or leaving a given time
18847 interval.
18848
18849 An interval is specified by the following syntax:
18850 @example
18851 @var{START}[-@var{END}] @var{COMMANDS};
18852 @end example
18853
18854 The time interval is specified by the @var{START} and @var{END} times.
18855 @var{END} is optional and defaults to the maximum time.
18856
18857 The current frame time is considered within the specified interval if
18858 it is included in the interval [@var{START}, @var{END}), that is when
18859 the time is greater or equal to @var{START} and is lesser than
18860 @var{END}.
18861
18862 @var{COMMANDS} consists of a sequence of one or more command
18863 specifications, separated by ",", relating to that interval.  The
18864 syntax of a command specification is given by:
18865 @example
18866 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
18867 @end example
18868
18869 @var{FLAGS} is optional and specifies the type of events relating to
18870 the time interval which enable sending the specified command, and must
18871 be a non-null sequence of identifier flags separated by "+" or "|" and
18872 enclosed between "[" and "]".
18873
18874 The following flags are recognized:
18875 @table @option
18876 @item enter
18877 The command is sent when the current frame timestamp enters the
18878 specified interval. In other words, the command is sent when the
18879 previous frame timestamp was not in the given interval, and the
18880 current is.
18881
18882 @item leave
18883 The command is sent when the current frame timestamp leaves the
18884 specified interval. In other words, the command is sent when the
18885 previous frame timestamp was in the given interval, and the
18886 current is not.
18887 @end table
18888
18889 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
18890 assumed.
18891
18892 @var{TARGET} specifies the target of the command, usually the name of
18893 the filter class or a specific filter instance name.
18894
18895 @var{COMMAND} specifies the name of the command for the target filter.
18896
18897 @var{ARG} is optional and specifies the optional list of argument for
18898 the given @var{COMMAND}.
18899
18900 Between one interval specification and another, whitespaces, or
18901 sequences of characters starting with @code{#} until the end of line,
18902 are ignored and can be used to annotate comments.
18903
18904 A simplified BNF description of the commands specification syntax
18905 follows:
18906 @example
18907 @var{COMMAND_FLAG}  ::= "enter" | "leave"
18908 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
18909 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
18910 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
18911 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
18912 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
18913 @end example
18914
18915 @subsection Examples
18916
18917 @itemize
18918 @item
18919 Specify audio tempo change at second 4:
18920 @example
18921 asendcmd=c='4.0 atempo tempo 1.5',atempo
18922 @end example
18923
18924 @item
18925 Target a specific filter instance:
18926 @example
18927 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
18928 @end example
18929
18930 @item
18931 Specify a list of drawtext and hue commands in a file.
18932 @example
18933 # show text in the interval 5-10
18934 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
18935          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
18936
18937 # desaturate the image in the interval 15-20
18938 15.0-20.0 [enter] hue s 0,
18939           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
18940           [leave] hue s 1,
18941           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
18942
18943 # apply an exponential saturation fade-out effect, starting from time 25
18944 25 [enter] hue s exp(25-t)
18945 @end example
18946
18947 A filtergraph allowing to read and process the above command list
18948 stored in a file @file{test.cmd}, can be specified with:
18949 @example
18950 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
18951 @end example
18952 @end itemize
18953
18954 @anchor{setpts}
18955 @section setpts, asetpts
18956
18957 Change the PTS (presentation timestamp) of the input frames.
18958
18959 @code{setpts} works on video frames, @code{asetpts} on audio frames.
18960
18961 This filter accepts the following options:
18962
18963 @table @option
18964
18965 @item expr
18966 The expression which is evaluated for each frame to construct its timestamp.
18967
18968 @end table
18969
18970 The expression is evaluated through the eval API and can contain the following
18971 constants:
18972
18973 @table @option
18974 @item FRAME_RATE
18975 frame rate, only defined for constant frame-rate video
18976
18977 @item PTS
18978 The presentation timestamp in input
18979
18980 @item N
18981 The count of the input frame for video or the number of consumed samples,
18982 not including the current frame for audio, starting from 0.
18983
18984 @item NB_CONSUMED_SAMPLES
18985 The number of consumed samples, not including the current frame (only
18986 audio)
18987
18988 @item NB_SAMPLES, S
18989 The number of samples in the current frame (only audio)
18990
18991 @item SAMPLE_RATE, SR
18992 The audio sample rate.
18993
18994 @item STARTPTS
18995 The PTS of the first frame.
18996
18997 @item STARTT
18998 the time in seconds of the first frame
18999
19000 @item INTERLACED
19001 State whether the current frame is interlaced.
19002
19003 @item T
19004 the time in seconds of the current frame
19005
19006 @item POS
19007 original position in the file of the frame, or undefined if undefined
19008 for the current frame
19009
19010 @item PREV_INPTS
19011 The previous input PTS.
19012
19013 @item PREV_INT
19014 previous input time in seconds
19015
19016 @item PREV_OUTPTS
19017 The previous output PTS.
19018
19019 @item PREV_OUTT
19020 previous output time in seconds
19021
19022 @item RTCTIME
19023 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
19024 instead.
19025
19026 @item RTCSTART
19027 The wallclock (RTC) time at the start of the movie in microseconds.
19028
19029 @item TB
19030 The timebase of the input timestamps.
19031
19032 @end table
19033
19034 @subsection Examples
19035
19036 @itemize
19037 @item
19038 Start counting PTS from zero
19039 @example
19040 setpts=PTS-STARTPTS
19041 @end example
19042
19043 @item
19044 Apply fast motion effect:
19045 @example
19046 setpts=0.5*PTS
19047 @end example
19048
19049 @item
19050 Apply slow motion effect:
19051 @example
19052 setpts=2.0*PTS
19053 @end example
19054
19055 @item
19056 Set fixed rate of 25 frames per second:
19057 @example
19058 setpts=N/(25*TB)
19059 @end example
19060
19061 @item
19062 Set fixed rate 25 fps with some jitter:
19063 @example
19064 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
19065 @end example
19066
19067 @item
19068 Apply an offset of 10 seconds to the input PTS:
19069 @example
19070 setpts=PTS+10/TB
19071 @end example
19072
19073 @item
19074 Generate timestamps from a "live source" and rebase onto the current timebase:
19075 @example
19076 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
19077 @end example
19078
19079 @item
19080 Generate timestamps by counting samples:
19081 @example
19082 asetpts=N/SR/TB
19083 @end example
19084
19085 @end itemize
19086
19087 @section setrange
19088
19089 Force color range for the output video frame.
19090
19091 The @code{setrange} filter marks the color range property for the
19092 output frames. It does not change the input frame, but only sets the
19093 corresponding property, which affects how the frame is treated by
19094 following filters.
19095
19096 The filter accepts the following options:
19097
19098 @table @option
19099
19100 @item range
19101 Available values are:
19102
19103 @table @samp
19104 @item auto
19105 Keep the same color range property.
19106
19107 @item unspecified, unknown
19108 Set the color range as unspecified.
19109
19110 @item limited, tv, mpeg
19111 Set the color range as limited.
19112
19113 @item full, pc, jpeg
19114 Set the color range as full.
19115 @end table
19116 @end table
19117
19118 @section settb, asettb
19119
19120 Set the timebase to use for the output frames timestamps.
19121 It is mainly useful for testing timebase configuration.
19122
19123 It accepts the following parameters:
19124
19125 @table @option
19126
19127 @item expr, tb
19128 The expression which is evaluated into the output timebase.
19129
19130 @end table
19131
19132 The value for @option{tb} is an arithmetic expression representing a
19133 rational. The expression can contain the constants "AVTB" (the default
19134 timebase), "intb" (the input timebase) and "sr" (the sample rate,
19135 audio only). Default value is "intb".
19136
19137 @subsection Examples
19138
19139 @itemize
19140 @item
19141 Set the timebase to 1/25:
19142 @example
19143 settb=expr=1/25
19144 @end example
19145
19146 @item
19147 Set the timebase to 1/10:
19148 @example
19149 settb=expr=0.1
19150 @end example
19151
19152 @item
19153 Set the timebase to 1001/1000:
19154 @example
19155 settb=1+0.001
19156 @end example
19157
19158 @item
19159 Set the timebase to 2*intb:
19160 @example
19161 settb=2*intb
19162 @end example
19163
19164 @item
19165 Set the default timebase value:
19166 @example
19167 settb=AVTB
19168 @end example
19169 @end itemize
19170
19171 @section showcqt
19172 Convert input audio to a video output representing frequency spectrum
19173 logarithmically using Brown-Puckette constant Q transform algorithm with
19174 direct frequency domain coefficient calculation (but the transform itself
19175 is not really constant Q, instead the Q factor is actually variable/clamped),
19176 with musical tone scale, from E0 to D#10.
19177
19178 The filter accepts the following options:
19179
19180 @table @option
19181 @item size, s
19182 Specify the video size for the output. It must be even. For the syntax of this option,
19183 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19184 Default value is @code{1920x1080}.
19185
19186 @item fps, rate, r
19187 Set the output frame rate. Default value is @code{25}.
19188
19189 @item bar_h
19190 Set the bargraph height. It must be even. Default value is @code{-1} which
19191 computes the bargraph height automatically.
19192
19193 @item axis_h
19194 Set the axis height. It must be even. Default value is @code{-1} which computes
19195 the axis height automatically.
19196
19197 @item sono_h
19198 Set the sonogram height. It must be even. Default value is @code{-1} which
19199 computes the sonogram height automatically.
19200
19201 @item fullhd
19202 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
19203 instead. Default value is @code{1}.
19204
19205 @item sono_v, volume
19206 Specify the sonogram volume expression. It can contain variables:
19207 @table @option
19208 @item bar_v
19209 the @var{bar_v} evaluated expression
19210 @item frequency, freq, f
19211 the frequency where it is evaluated
19212 @item timeclamp, tc
19213 the value of @var{timeclamp} option
19214 @end table
19215 and functions:
19216 @table @option
19217 @item a_weighting(f)
19218 A-weighting of equal loudness
19219 @item b_weighting(f)
19220 B-weighting of equal loudness
19221 @item c_weighting(f)
19222 C-weighting of equal loudness.
19223 @end table
19224 Default value is @code{16}.
19225
19226 @item bar_v, volume2
19227 Specify the bargraph volume expression. It can contain variables:
19228 @table @option
19229 @item sono_v
19230 the @var{sono_v} evaluated expression
19231 @item frequency, freq, f
19232 the frequency where it is evaluated
19233 @item timeclamp, tc
19234 the value of @var{timeclamp} option
19235 @end table
19236 and functions:
19237 @table @option
19238 @item a_weighting(f)
19239 A-weighting of equal loudness
19240 @item b_weighting(f)
19241 B-weighting of equal loudness
19242 @item c_weighting(f)
19243 C-weighting of equal loudness.
19244 @end table
19245 Default value is @code{sono_v}.
19246
19247 @item sono_g, gamma
19248 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
19249 higher gamma makes the spectrum having more range. Default value is @code{3}.
19250 Acceptable range is @code{[1, 7]}.
19251
19252 @item bar_g, gamma2
19253 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
19254 @code{[1, 7]}.
19255
19256 @item bar_t
19257 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
19258 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
19259
19260 @item timeclamp, tc
19261 Specify the transform timeclamp. At low frequency, there is trade-off between
19262 accuracy in time domain and frequency domain. If timeclamp is lower,
19263 event in time domain is represented more accurately (such as fast bass drum),
19264 otherwise event in frequency domain is represented more accurately
19265 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
19266
19267 @item attack
19268 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
19269 limits future samples by applying asymmetric windowing in time domain, useful
19270 when low latency is required. Accepted range is @code{[0, 1]}.
19271
19272 @item basefreq
19273 Specify the transform base frequency. Default value is @code{20.01523126408007475},
19274 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
19275
19276 @item endfreq
19277 Specify the transform end frequency. Default value is @code{20495.59681441799654},
19278 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
19279
19280 @item coeffclamp
19281 This option is deprecated and ignored.
19282
19283 @item tlength
19284 Specify the transform length in time domain. Use this option to control accuracy
19285 trade-off between time domain and frequency domain at every frequency sample.
19286 It can contain variables:
19287 @table @option
19288 @item frequency, freq, f
19289 the frequency where it is evaluated
19290 @item timeclamp, tc
19291 the value of @var{timeclamp} option.
19292 @end table
19293 Default value is @code{384*tc/(384+tc*f)}.
19294
19295 @item count
19296 Specify the transform count for every video frame. Default value is @code{6}.
19297 Acceptable range is @code{[1, 30]}.
19298
19299 @item fcount
19300 Specify the transform count for every single pixel. Default value is @code{0},
19301 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
19302
19303 @item fontfile
19304 Specify font file for use with freetype to draw the axis. If not specified,
19305 use embedded font. Note that drawing with font file or embedded font is not
19306 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
19307 option instead.
19308
19309 @item font
19310 Specify fontconfig pattern. This has lower priority than @var{fontfile}.
19311 The : in the pattern may be replaced by | to avoid unnecessary escaping.
19312
19313 @item fontcolor
19314 Specify font color expression. This is arithmetic expression that should return
19315 integer value 0xRRGGBB. It can contain variables:
19316 @table @option
19317 @item frequency, freq, f
19318 the frequency where it is evaluated
19319 @item timeclamp, tc
19320 the value of @var{timeclamp} option
19321 @end table
19322 and functions:
19323 @table @option
19324 @item midi(f)
19325 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
19326 @item r(x), g(x), b(x)
19327 red, green, and blue value of intensity x.
19328 @end table
19329 Default value is @code{st(0, (midi(f)-59.5)/12);
19330 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
19331 r(1-ld(1)) + b(ld(1))}.
19332
19333 @item axisfile
19334 Specify image file to draw the axis. This option override @var{fontfile} and
19335 @var{fontcolor} option.
19336
19337 @item axis, text
19338 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
19339 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
19340 Default value is @code{1}.
19341
19342 @item csp
19343 Set colorspace. The accepted values are:
19344 @table @samp
19345 @item unspecified
19346 Unspecified (default)
19347
19348 @item bt709
19349 BT.709
19350
19351 @item fcc
19352 FCC
19353
19354 @item bt470bg
19355 BT.470BG or BT.601-6 625
19356
19357 @item smpte170m
19358 SMPTE-170M or BT.601-6 525
19359
19360 @item smpte240m
19361 SMPTE-240M
19362
19363 @item bt2020ncl
19364 BT.2020 with non-constant luminance
19365
19366 @end table
19367
19368 @item cscheme
19369 Set spectrogram color scheme. This is list of floating point values with format
19370 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
19371 The default is @code{1|0.5|0|0|0.5|1}.
19372
19373 @end table
19374
19375 @subsection Examples
19376
19377 @itemize
19378 @item
19379 Playing audio while showing the spectrum:
19380 @example
19381 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
19382 @end example
19383
19384 @item
19385 Same as above, but with frame rate 30 fps:
19386 @example
19387 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
19388 @end example
19389
19390 @item
19391 Playing at 1280x720:
19392 @example
19393 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
19394 @end example
19395
19396 @item
19397 Disable sonogram display:
19398 @example
19399 sono_h=0
19400 @end example
19401
19402 @item
19403 A1 and its harmonics: A1, A2, (near)E3, A3:
19404 @example
19405 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),
19406                  asplit[a][out1]; [a] showcqt [out0]'
19407 @end example
19408
19409 @item
19410 Same as above, but with more accuracy in frequency domain:
19411 @example
19412 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),
19413                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
19414 @end example
19415
19416 @item
19417 Custom volume:
19418 @example
19419 bar_v=10:sono_v=bar_v*a_weighting(f)
19420 @end example
19421
19422 @item
19423 Custom gamma, now spectrum is linear to the amplitude.
19424 @example
19425 bar_g=2:sono_g=2
19426 @end example
19427
19428 @item
19429 Custom tlength equation:
19430 @example
19431 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)))'
19432 @end example
19433
19434 @item
19435 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
19436 @example
19437 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
19438 @end example
19439
19440 @item
19441 Custom font using fontconfig:
19442 @example
19443 font='Courier New,Monospace,mono|bold'
19444 @end example
19445
19446 @item
19447 Custom frequency range with custom axis using image file:
19448 @example
19449 axisfile=myaxis.png:basefreq=40:endfreq=10000
19450 @end example
19451 @end itemize
19452
19453 @section showfreqs
19454
19455 Convert input audio to video output representing the audio power spectrum.
19456 Audio amplitude is on Y-axis while frequency is on X-axis.
19457
19458 The filter accepts the following options:
19459
19460 @table @option
19461 @item size, s
19462 Specify size of video. For the syntax of this option, check the
19463 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19464 Default is @code{1024x512}.
19465
19466 @item mode
19467 Set display mode.
19468 This set how each frequency bin will be represented.
19469
19470 It accepts the following values:
19471 @table @samp
19472 @item line
19473 @item bar
19474 @item dot
19475 @end table
19476 Default is @code{bar}.
19477
19478 @item ascale
19479 Set amplitude scale.
19480
19481 It accepts the following values:
19482 @table @samp
19483 @item lin
19484 Linear scale.
19485
19486 @item sqrt
19487 Square root scale.
19488
19489 @item cbrt
19490 Cubic root scale.
19491
19492 @item log
19493 Logarithmic scale.
19494 @end table
19495 Default is @code{log}.
19496
19497 @item fscale
19498 Set frequency scale.
19499
19500 It accepts the following values:
19501 @table @samp
19502 @item lin
19503 Linear scale.
19504
19505 @item log
19506 Logarithmic scale.
19507
19508 @item rlog
19509 Reverse logarithmic scale.
19510 @end table
19511 Default is @code{lin}.
19512
19513 @item win_size
19514 Set window size.
19515
19516 It accepts the following values:
19517 @table @samp
19518 @item w16
19519 @item w32
19520 @item w64
19521 @item w128
19522 @item w256
19523 @item w512
19524 @item w1024
19525 @item w2048
19526 @item w4096
19527 @item w8192
19528 @item w16384
19529 @item w32768
19530 @item w65536
19531 @end table
19532 Default is @code{w2048}
19533
19534 @item win_func
19535 Set windowing function.
19536
19537 It accepts the following values:
19538 @table @samp
19539 @item rect
19540 @item bartlett
19541 @item hanning
19542 @item hamming
19543 @item blackman
19544 @item welch
19545 @item flattop
19546 @item bharris
19547 @item bnuttall
19548 @item bhann
19549 @item sine
19550 @item nuttall
19551 @item lanczos
19552 @item gauss
19553 @item tukey
19554 @item dolph
19555 @item cauchy
19556 @item parzen
19557 @item poisson
19558 @end table
19559 Default is @code{hanning}.
19560
19561 @item overlap
19562 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
19563 which means optimal overlap for selected window function will be picked.
19564
19565 @item averaging
19566 Set time averaging. Setting this to 0 will display current maximal peaks.
19567 Default is @code{1}, which means time averaging is disabled.
19568
19569 @item colors
19570 Specify list of colors separated by space or by '|' which will be used to
19571 draw channel frequencies. Unrecognized or missing colors will be replaced
19572 by white color.
19573
19574 @item cmode
19575 Set channel display mode.
19576
19577 It accepts the following values:
19578 @table @samp
19579 @item combined
19580 @item separate
19581 @end table
19582 Default is @code{combined}.
19583
19584 @item minamp
19585 Set minimum amplitude used in @code{log} amplitude scaler.
19586
19587 @end table
19588
19589 @anchor{showspectrum}
19590 @section showspectrum
19591
19592 Convert input audio to a video output, representing the audio frequency
19593 spectrum.
19594
19595 The filter accepts the following options:
19596
19597 @table @option
19598 @item size, s
19599 Specify the video size for the output. For the syntax of this option, check the
19600 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19601 Default value is @code{640x512}.
19602
19603 @item slide
19604 Specify how the spectrum should slide along the window.
19605
19606 It accepts the following values:
19607 @table @samp
19608 @item replace
19609 the samples start again on the left when they reach the right
19610 @item scroll
19611 the samples scroll from right to left
19612 @item fullframe
19613 frames are only produced when the samples reach the right
19614 @item rscroll
19615 the samples scroll from left to right
19616 @end table
19617
19618 Default value is @code{replace}.
19619
19620 @item mode
19621 Specify display mode.
19622
19623 It accepts the following values:
19624 @table @samp
19625 @item combined
19626 all channels are displayed in the same row
19627 @item separate
19628 all channels are displayed in separate rows
19629 @end table
19630
19631 Default value is @samp{combined}.
19632
19633 @item color
19634 Specify display color mode.
19635
19636 It accepts the following values:
19637 @table @samp
19638 @item channel
19639 each channel is displayed in a separate color
19640 @item intensity
19641 each channel is displayed using the same color scheme
19642 @item rainbow
19643 each channel is displayed using the rainbow color scheme
19644 @item moreland
19645 each channel is displayed using the moreland color scheme
19646 @item nebulae
19647 each channel is displayed using the nebulae color scheme
19648 @item fire
19649 each channel is displayed using the fire color scheme
19650 @item fiery
19651 each channel is displayed using the fiery color scheme
19652 @item fruit
19653 each channel is displayed using the fruit color scheme
19654 @item cool
19655 each channel is displayed using the cool color scheme
19656 @end table
19657
19658 Default value is @samp{channel}.
19659
19660 @item scale
19661 Specify scale used for calculating intensity color values.
19662
19663 It accepts the following values:
19664 @table @samp
19665 @item lin
19666 linear
19667 @item sqrt
19668 square root, default
19669 @item cbrt
19670 cubic root
19671 @item log
19672 logarithmic
19673 @item 4thrt
19674 4th root
19675 @item 5thrt
19676 5th root
19677 @end table
19678
19679 Default value is @samp{sqrt}.
19680
19681 @item saturation
19682 Set saturation modifier for displayed colors. Negative values provide
19683 alternative color scheme. @code{0} is no saturation at all.
19684 Saturation must be in [-10.0, 10.0] range.
19685 Default value is @code{1}.
19686
19687 @item win_func
19688 Set window function.
19689
19690 It accepts the following values:
19691 @table @samp
19692 @item rect
19693 @item bartlett
19694 @item hann
19695 @item hanning
19696 @item hamming
19697 @item blackman
19698 @item welch
19699 @item flattop
19700 @item bharris
19701 @item bnuttall
19702 @item bhann
19703 @item sine
19704 @item nuttall
19705 @item lanczos
19706 @item gauss
19707 @item tukey
19708 @item dolph
19709 @item cauchy
19710 @item parzen
19711 @item poisson
19712 @end table
19713
19714 Default value is @code{hann}.
19715
19716 @item orientation
19717 Set orientation of time vs frequency axis. Can be @code{vertical} or
19718 @code{horizontal}. Default is @code{vertical}.
19719
19720 @item overlap
19721 Set ratio of overlap window. Default value is @code{0}.
19722 When value is @code{1} overlap is set to recommended size for specific
19723 window function currently used.
19724
19725 @item gain
19726 Set scale gain for calculating intensity color values.
19727 Default value is @code{1}.
19728
19729 @item data
19730 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
19731
19732 @item rotation
19733 Set color rotation, must be in [-1.0, 1.0] range.
19734 Default value is @code{0}.
19735 @end table
19736
19737 The usage is very similar to the showwaves filter; see the examples in that
19738 section.
19739
19740 @subsection Examples
19741
19742 @itemize
19743 @item
19744 Large window with logarithmic color scaling:
19745 @example
19746 showspectrum=s=1280x480:scale=log
19747 @end example
19748
19749 @item
19750 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
19751 @example
19752 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
19753              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
19754 @end example
19755 @end itemize
19756
19757 @section showspectrumpic
19758
19759 Convert input audio to a single video frame, representing the audio frequency
19760 spectrum.
19761
19762 The filter accepts the following options:
19763
19764 @table @option
19765 @item size, s
19766 Specify the video size for the output. For the syntax of this option, check the
19767 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19768 Default value is @code{4096x2048}.
19769
19770 @item mode
19771 Specify display mode.
19772
19773 It accepts the following values:
19774 @table @samp
19775 @item combined
19776 all channels are displayed in the same row
19777 @item separate
19778 all channels are displayed in separate rows
19779 @end table
19780 Default value is @samp{combined}.
19781
19782 @item color
19783 Specify display color mode.
19784
19785 It accepts the following values:
19786 @table @samp
19787 @item channel
19788 each channel is displayed in a separate color
19789 @item intensity
19790 each channel is displayed using the same color scheme
19791 @item rainbow
19792 each channel is displayed using the rainbow color scheme
19793 @item moreland
19794 each channel is displayed using the moreland color scheme
19795 @item nebulae
19796 each channel is displayed using the nebulae color scheme
19797 @item fire
19798 each channel is displayed using the fire color scheme
19799 @item fiery
19800 each channel is displayed using the fiery color scheme
19801 @item fruit
19802 each channel is displayed using the fruit color scheme
19803 @item cool
19804 each channel is displayed using the cool color scheme
19805 @end table
19806 Default value is @samp{intensity}.
19807
19808 @item scale
19809 Specify scale used for calculating intensity color values.
19810
19811 It accepts the following values:
19812 @table @samp
19813 @item lin
19814 linear
19815 @item sqrt
19816 square root, default
19817 @item cbrt
19818 cubic root
19819 @item log
19820 logarithmic
19821 @item 4thrt
19822 4th root
19823 @item 5thrt
19824 5th root
19825 @end table
19826 Default value is @samp{log}.
19827
19828 @item saturation
19829 Set saturation modifier for displayed colors. Negative values provide
19830 alternative color scheme. @code{0} is no saturation at all.
19831 Saturation must be in [-10.0, 10.0] range.
19832 Default value is @code{1}.
19833
19834 @item win_func
19835 Set window function.
19836
19837 It accepts the following values:
19838 @table @samp
19839 @item rect
19840 @item bartlett
19841 @item hann
19842 @item hanning
19843 @item hamming
19844 @item blackman
19845 @item welch
19846 @item flattop
19847 @item bharris
19848 @item bnuttall
19849 @item bhann
19850 @item sine
19851 @item nuttall
19852 @item lanczos
19853 @item gauss
19854 @item tukey
19855 @item dolph
19856 @item cauchy
19857 @item parzen
19858 @item poisson
19859 @end table
19860 Default value is @code{hann}.
19861
19862 @item orientation
19863 Set orientation of time vs frequency axis. Can be @code{vertical} or
19864 @code{horizontal}. Default is @code{vertical}.
19865
19866 @item gain
19867 Set scale gain for calculating intensity color values.
19868 Default value is @code{1}.
19869
19870 @item legend
19871 Draw time and frequency axes and legends. Default is enabled.
19872
19873 @item rotation
19874 Set color rotation, must be in [-1.0, 1.0] range.
19875 Default value is @code{0}.
19876 @end table
19877
19878 @subsection Examples
19879
19880 @itemize
19881 @item
19882 Extract an audio spectrogram of a whole audio track
19883 in a 1024x1024 picture using @command{ffmpeg}:
19884 @example
19885 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
19886 @end example
19887 @end itemize
19888
19889 @section showvolume
19890
19891 Convert input audio volume to a video output.
19892
19893 The filter accepts the following options:
19894
19895 @table @option
19896 @item rate, r
19897 Set video rate.
19898
19899 @item b
19900 Set border width, allowed range is [0, 5]. Default is 1.
19901
19902 @item w
19903 Set channel width, allowed range is [80, 8192]. Default is 400.
19904
19905 @item h
19906 Set channel height, allowed range is [1, 900]. Default is 20.
19907
19908 @item f
19909 Set fade, allowed range is [0.001, 1]. Default is 0.95.
19910
19911 @item c
19912 Set volume color expression.
19913
19914 The expression can use the following variables:
19915
19916 @table @option
19917 @item VOLUME
19918 Current max volume of channel in dB.
19919
19920 @item PEAK
19921 Current peak.
19922
19923 @item CHANNEL
19924 Current channel number, starting from 0.
19925 @end table
19926
19927 @item t
19928 If set, displays channel names. Default is enabled.
19929
19930 @item v
19931 If set, displays volume values. Default is enabled.
19932
19933 @item o
19934 Set orientation, can be @code{horizontal} or @code{vertical},
19935 default is @code{horizontal}.
19936
19937 @item s
19938 Set step size, allowed range s [0, 5]. Default is 0, which means
19939 step is disabled.
19940 @end table
19941
19942 @section showwaves
19943
19944 Convert input audio to a video output, representing the samples waves.
19945
19946 The filter accepts the following options:
19947
19948 @table @option
19949 @item size, s
19950 Specify the video size for the output. For the syntax of this option, check the
19951 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19952 Default value is @code{600x240}.
19953
19954 @item mode
19955 Set display mode.
19956
19957 Available values are:
19958 @table @samp
19959 @item point
19960 Draw a point for each sample.
19961
19962 @item line
19963 Draw a vertical line for each sample.
19964
19965 @item p2p
19966 Draw a point for each sample and a line between them.
19967
19968 @item cline
19969 Draw a centered vertical line for each sample.
19970 @end table
19971
19972 Default value is @code{point}.
19973
19974 @item n
19975 Set the number of samples which are printed on the same column. A
19976 larger value will decrease the frame rate. Must be a positive
19977 integer. This option can be set only if the value for @var{rate}
19978 is not explicitly specified.
19979
19980 @item rate, r
19981 Set the (approximate) output frame rate. This is done by setting the
19982 option @var{n}. Default value is "25".
19983
19984 @item split_channels
19985 Set if channels should be drawn separately or overlap. Default value is 0.
19986
19987 @item colors
19988 Set colors separated by '|' which are going to be used for drawing of each channel.
19989
19990 @item scale
19991 Set amplitude scale.
19992
19993 Available values are:
19994 @table @samp
19995 @item lin
19996 Linear.
19997
19998 @item log
19999 Logarithmic.
20000
20001 @item sqrt
20002 Square root.
20003
20004 @item cbrt
20005 Cubic root.
20006 @end table
20007
20008 Default is linear.
20009 @end table
20010
20011 @subsection Examples
20012
20013 @itemize
20014 @item
20015 Output the input file audio and the corresponding video representation
20016 at the same time:
20017 @example
20018 amovie=a.mp3,asplit[out0],showwaves[out1]
20019 @end example
20020
20021 @item
20022 Create a synthetic signal and show it with showwaves, forcing a
20023 frame rate of 30 frames per second:
20024 @example
20025 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
20026 @end example
20027 @end itemize
20028
20029 @section showwavespic
20030
20031 Convert input audio to a single video frame, representing the samples waves.
20032
20033 The filter accepts the following options:
20034
20035 @table @option
20036 @item size, s
20037 Specify the video size for the output. For the syntax of this option, check the
20038 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20039 Default value is @code{600x240}.
20040
20041 @item split_channels
20042 Set if channels should be drawn separately or overlap. Default value is 0.
20043
20044 @item colors
20045 Set colors separated by '|' which are going to be used for drawing of each channel.
20046
20047 @item scale
20048 Set amplitude scale.
20049
20050 Available values are:
20051 @table @samp
20052 @item lin
20053 Linear.
20054
20055 @item log
20056 Logarithmic.
20057
20058 @item sqrt
20059 Square root.
20060
20061 @item cbrt
20062 Cubic root.
20063 @end table
20064
20065 Default is linear.
20066 @end table
20067
20068 @subsection Examples
20069
20070 @itemize
20071 @item
20072 Extract a channel split representation of the wave form of a whole audio track
20073 in a 1024x800 picture using @command{ffmpeg}:
20074 @example
20075 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
20076 @end example
20077 @end itemize
20078
20079 @section sidedata, asidedata
20080
20081 Delete frame side data, or select frames based on it.
20082
20083 This filter accepts the following options:
20084
20085 @table @option
20086 @item mode
20087 Set mode of operation of the filter.
20088
20089 Can be one of the following:
20090
20091 @table @samp
20092 @item select
20093 Select every frame with side data of @code{type}.
20094
20095 @item delete
20096 Delete side data of @code{type}. If @code{type} is not set, delete all side
20097 data in the frame.
20098
20099 @end table
20100
20101 @item type
20102 Set side data type used with all modes. Must be set for @code{select} mode. For
20103 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
20104 in @file{libavutil/frame.h}. For example, to choose
20105 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
20106
20107 @end table
20108
20109 @section spectrumsynth
20110
20111 Sythesize audio from 2 input video spectrums, first input stream represents
20112 magnitude across time and second represents phase across time.
20113 The filter will transform from frequency domain as displayed in videos back
20114 to time domain as presented in audio output.
20115
20116 This filter is primarily created for reversing processed @ref{showspectrum}
20117 filter outputs, but can synthesize sound from other spectrograms too.
20118 But in such case results are going to be poor if the phase data is not
20119 available, because in such cases phase data need to be recreated, usually
20120 its just recreated from random noise.
20121 For best results use gray only output (@code{channel} color mode in
20122 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
20123 @code{lin} scale for phase video. To produce phase, for 2nd video, use
20124 @code{data} option. Inputs videos should generally use @code{fullframe}
20125 slide mode as that saves resources needed for decoding video.
20126
20127 The filter accepts the following options:
20128
20129 @table @option
20130 @item sample_rate
20131 Specify sample rate of output audio, the sample rate of audio from which
20132 spectrum was generated may differ.
20133
20134 @item channels
20135 Set number of channels represented in input video spectrums.
20136
20137 @item scale
20138 Set scale which was used when generating magnitude input spectrum.
20139 Can be @code{lin} or @code{log}. Default is @code{log}.
20140
20141 @item slide
20142 Set slide which was used when generating inputs spectrums.
20143 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
20144 Default is @code{fullframe}.
20145
20146 @item win_func
20147 Set window function used for resynthesis.
20148
20149 @item overlap
20150 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
20151 which means optimal overlap for selected window function will be picked.
20152
20153 @item orientation
20154 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
20155 Default is @code{vertical}.
20156 @end table
20157
20158 @subsection Examples
20159
20160 @itemize
20161 @item
20162 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
20163 then resynthesize videos back to audio with spectrumsynth:
20164 @example
20165 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
20166 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
20167 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
20168 @end example
20169 @end itemize
20170
20171 @section split, asplit
20172
20173 Split input into several identical outputs.
20174
20175 @code{asplit} works with audio input, @code{split} with video.
20176
20177 The filter accepts a single parameter which specifies the number of outputs. If
20178 unspecified, it defaults to 2.
20179
20180 @subsection Examples
20181
20182 @itemize
20183 @item
20184 Create two separate outputs from the same input:
20185 @example
20186 [in] split [out0][out1]
20187 @end example
20188
20189 @item
20190 To create 3 or more outputs, you need to specify the number of
20191 outputs, like in:
20192 @example
20193 [in] asplit=3 [out0][out1][out2]
20194 @end example
20195
20196 @item
20197 Create two separate outputs from the same input, one cropped and
20198 one padded:
20199 @example
20200 [in] split [splitout1][splitout2];
20201 [splitout1] crop=100:100:0:0    [cropout];
20202 [splitout2] pad=200:200:100:100 [padout];
20203 @end example
20204
20205 @item
20206 Create 5 copies of the input audio with @command{ffmpeg}:
20207 @example
20208 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
20209 @end example
20210 @end itemize
20211
20212 @section zmq, azmq
20213
20214 Receive commands sent through a libzmq client, and forward them to
20215 filters in the filtergraph.
20216
20217 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
20218 must be inserted between two video filters, @code{azmq} between two
20219 audio filters.
20220
20221 To enable these filters you need to install the libzmq library and
20222 headers and configure FFmpeg with @code{--enable-libzmq}.
20223
20224 For more information about libzmq see:
20225 @url{http://www.zeromq.org/}
20226
20227 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
20228 receives messages sent through a network interface defined by the
20229 @option{bind_address} option.
20230
20231 The received message must be in the form:
20232 @example
20233 @var{TARGET} @var{COMMAND} [@var{ARG}]
20234 @end example
20235
20236 @var{TARGET} specifies the target of the command, usually the name of
20237 the filter class or a specific filter instance name.
20238
20239 @var{COMMAND} specifies the name of the command for the target filter.
20240
20241 @var{ARG} is optional and specifies the optional argument list for the
20242 given @var{COMMAND}.
20243
20244 Upon reception, the message is processed and the corresponding command
20245 is injected into the filtergraph. Depending on the result, the filter
20246 will send a reply to the client, adopting the format:
20247 @example
20248 @var{ERROR_CODE} @var{ERROR_REASON}
20249 @var{MESSAGE}
20250 @end example
20251
20252 @var{MESSAGE} is optional.
20253
20254 @subsection Examples
20255
20256 Look at @file{tools/zmqsend} for an example of a zmq client which can
20257 be used to send commands processed by these filters.
20258
20259 Consider the following filtergraph generated by @command{ffplay}
20260 @example
20261 ffplay -dumpgraph 1 -f lavfi "
20262 color=s=100x100:c=red  [l];
20263 color=s=100x100:c=blue [r];
20264 nullsrc=s=200x100, zmq [bg];
20265 [bg][l]   overlay      [bg+l];
20266 [bg+l][r] overlay=x=100 "
20267 @end example
20268
20269 To change the color of the left side of the video, the following
20270 command can be used:
20271 @example
20272 echo Parsed_color_0 c yellow | tools/zmqsend
20273 @end example
20274
20275 To change the right side:
20276 @example
20277 echo Parsed_color_1 c pink | tools/zmqsend
20278 @end example
20279
20280 @c man end MULTIMEDIA FILTERS
20281
20282 @chapter Multimedia Sources
20283 @c man begin MULTIMEDIA SOURCES
20284
20285 Below is a description of the currently available multimedia sources.
20286
20287 @section amovie
20288
20289 This is the same as @ref{movie} source, except it selects an audio
20290 stream by default.
20291
20292 @anchor{movie}
20293 @section movie
20294
20295 Read audio and/or video stream(s) from a movie container.
20296
20297 It accepts the following parameters:
20298
20299 @table @option
20300 @item filename
20301 The name of the resource to read (not necessarily a file; it can also be a
20302 device or a stream accessed through some protocol).
20303
20304 @item format_name, f
20305 Specifies the format assumed for the movie to read, and can be either
20306 the name of a container or an input device. If not specified, the
20307 format is guessed from @var{movie_name} or by probing.
20308
20309 @item seek_point, sp
20310 Specifies the seek point in seconds. The frames will be output
20311 starting from this seek point. The parameter is evaluated with
20312 @code{av_strtod}, so the numerical value may be suffixed by an IS
20313 postfix. The default value is "0".
20314
20315 @item streams, s
20316 Specifies the streams to read. Several streams can be specified,
20317 separated by "+". The source will then have as many outputs, in the
20318 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
20319 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
20320 respectively the default (best suited) video and audio stream. Default
20321 is "dv", or "da" if the filter is called as "amovie".
20322
20323 @item stream_index, si
20324 Specifies the index of the video stream to read. If the value is -1,
20325 the most suitable video stream will be automatically selected. The default
20326 value is "-1". Deprecated. If the filter is called "amovie", it will select
20327 audio instead of video.
20328
20329 @item loop
20330 Specifies how many times to read the stream in sequence.
20331 If the value is 0, the stream will be looped infinitely.
20332 Default value is "1".
20333
20334 Note that when the movie is looped the source timestamps are not
20335 changed, so it will generate non monotonically increasing timestamps.
20336
20337 @item discontinuity
20338 Specifies the time difference between frames above which the point is
20339 considered a timestamp discontinuity which is removed by adjusting the later
20340 timestamps.
20341 @end table
20342
20343 It allows overlaying a second video on top of the main input of
20344 a filtergraph, as shown in this graph:
20345 @example
20346 input -----------> deltapts0 --> overlay --> output
20347                                     ^
20348                                     |
20349 movie --> scale--> deltapts1 -------+
20350 @end example
20351 @subsection Examples
20352
20353 @itemize
20354 @item
20355 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
20356 on top of the input labelled "in":
20357 @example
20358 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
20359 [in] setpts=PTS-STARTPTS [main];
20360 [main][over] overlay=16:16 [out]
20361 @end example
20362
20363 @item
20364 Read from a video4linux2 device, and overlay it on top of the input
20365 labelled "in":
20366 @example
20367 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
20368 [in] setpts=PTS-STARTPTS [main];
20369 [main][over] overlay=16:16 [out]
20370 @end example
20371
20372 @item
20373 Read the first video stream and the audio stream with id 0x81 from
20374 dvd.vob; the video is connected to the pad named "video" and the audio is
20375 connected to the pad named "audio":
20376 @example
20377 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
20378 @end example
20379 @end itemize
20380
20381 @subsection Commands
20382
20383 Both movie and amovie support the following commands:
20384 @table @option
20385 @item seek
20386 Perform seek using "av_seek_frame".
20387 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
20388 @itemize
20389 @item
20390 @var{stream_index}: If stream_index is -1, a default
20391 stream is selected, and @var{timestamp} is automatically converted
20392 from AV_TIME_BASE units to the stream specific time_base.
20393 @item
20394 @var{timestamp}: Timestamp in AVStream.time_base units
20395 or, if no stream is specified, in AV_TIME_BASE units.
20396 @item
20397 @var{flags}: Flags which select direction and seeking mode.
20398 @end itemize
20399
20400 @item get_duration
20401 Get movie duration in AV_TIME_BASE units.
20402
20403 @end table
20404
20405 @c man end MULTIMEDIA SOURCES